패딩의 정의
- 암복화 알고리즘 경우 input 데이터의 길이는 block size의 배수가 되어야 한다.
- 하지만, 데이터의 길이가 block size의 배수가 아닌 경우 마지막 블록에 값을 추가해 block size의 배수로 맞춘다.
- 이때, 추가 되는 행위 또는 값을 padding 이라고 한다.
패딩의 종류
- PKCS5: 8바이트 블록 사이즈에 맞추어져 패딩이 들어갑니다. 그리고 그 값으로 몇 바이트를 패딩으로 채웠는지 적혀 있습니다.
- AA 07 07 07 07 07 07 07 [1 바이트 데이터 + 7 바이트 패딩]
- AA BB CC DD 04 04 04 04 [4 바이트 데이터 + 4 바이트 패딩]
- 08 08 08 08 08 08 08 08 [0 바이트 데이터 + 8 바이트 패딩]
- PKCS5의 경우 무조건 패딩을 추가하도록 되어있습니다. 그래서 데이터 사이즈가 8배수라 패딩이 필요없는 경우에도 패딩은 추가 됩니다.
- PKCS7: 암복호화 알고리즘의 block size가 16 바이트로 늘어나면서 8 바이트 이상 패딩 지원이 필요하게 되었습니다.
- 예) 16바이트 블록 사이즈 패딩을 지원
- AA BB CC DD EE FF GG HH 08 08 08 08 08 08 08 08 [8 바이트 데이터 + 8 바이트 패딩]
- PKCS5가 8바이트 고정 길이 패딩이였다면 PKCS7는 1 ~ 255 바이트 가변 길이 패딩이 가능합니다.
- 예) 16바이트 블록 사이즈 패딩을 지원
'보안' 카테고리의 다른 글
aws ec2, s 사용 배포 - 개발 일지 7 (0) | 2024.06.11 |
---|---|
[openssl] AES 암호화 / 복호화 (C++ 사용) (0) | 2019.11.18 |