백엔드

PKCS#5 패딩과 PKCS#7 패딩의 특징과 차이점

작은소행성 2024. 7. 18. 09:38

대칭키 블록 알고리즘

대칭키 블록 알고리즘에서 데이터는 고정된 크기의 블록 단위로 암호화 된다. 

AES나 DES 같은 알고리즘은 128비트 블록 크기를 사용해야 한다. 

암호화/복호화 시 입력 데이터는 정해진 블록 크기만큼 잘라서 처리해야 하는데

블록 크기의 배수가 아닐 경우 데이터의 크기를 배수로 맞추기 위해서 패딩을 사용한다. 

 

패딩(Padding)

암호화할 때 데이터 값이 암호 블럭 사이즈의 배수와 맞지 않으면 배수에 맞춰 빈공간을 채워주는데 

빈공간을 채워주는 방법을 패딩이라고 한다.  

 

PKCS#5 패딩

PKCS#5 는 8바이트 크기에 맞추기 위해 필요한 만큼의 바이트를 패딩 값으로 채우는 방식이다. 

 

블록 크기를 맞추기 위해

8바이트보다 적은 1바이트가 부족하다면 나머지 7바이트를 패딩 값으로 채운다. 

AB 라는 2바이트 데이터가 있을 때 6바이트를 채우기 위해 07 값을 6번 붙여서 8바이트로 만든다. 

여기서 07은 패딩 값이다. (아래 예시는 7바이트 부족을 의미함) 

AB 07 07 07 07 07 07 07

 

 

PKCS#5 는 부족한 바이트에 따라 아래와 같이 패딩이 붙는다. 

부족한 바이트가 1이면 01

2이면 02

01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
06 06 06 06 06 06
07 07 07 07 07 07 07
08 08 08 08 08 08 08 08

 

 

PKCS#7

PKCS#7 도 패딩할 숫자만큼 패딩 값을 채워서 붙이는건 똑같다. 

PKCS#7 에서는 최대 255바이트까지 패딩을 추가할 수 있다. 

예를들어, 블록 크기가 8바이트이고 데이터가 6바이트 부족할 경우 02 가 두번 추가된다. 

01 01
02 02 02
03 03 03 03 03

 

 

차이점

PKCS#5 는 8바이트 고정 길이의 패딩 방식을 사용하고

PKCS#7 는 1~255 바이트까지 가변 길이의 패딩을 지원한다. 

 

반응형