패딩(Padding)
- 암호화에서 사용되는 기술 중 하나로 평문을 암호화하기 전에 일정한 규칙에 따라 데이터의 길이를 조정하는 과정
- 주로 블록 암호화에서 사용되며 평문의 길이가 블록 크기의 배수가 아니어서 블록 크기의 배수가 되도록 평문의 길이를 늘려야 할 때 사용
- 패딩을 통해 암호의 안전성이 더욱 강화됨
- 대칭 암호화에서는 PKCS5Padding, 비대칭 암호화에서는 OAEPPadding이 보안성이 가장 높아 주로 사용됨
PKCS5Padding, PKCS7Padding
- 패딩할 크기의 바이트를 모든 패딩의 바이트로 설정하여 패딩을 진행
- 가장 널리 사용되는 패딩 방식
- PKCS5Padding과 PKCS7Padding은 기본적으로 동일한 것으로 간주됨
PKCS1Padding
- RSA 알고리즘과 함께 사용되며 데이터의 첫 번째 바이트가 0x00이고 두 번째 바이트가 0x02인 패딩을 적용함
- 이후에는 랜덤하게 생성된 값으로 패딩을 진행하며 패딩의 길이는 RSA의 블록 크기보다 작아야 함
SSL3Padding
- 패딩하는 데이터를 마지막 바이트 이전에 모두 0으로 패딩을 진행
- 마지막 바이트는 패딩할 바이트의 개수를 의미
- ISO10126Padding과 비슷하나 고정된 값으로 패딩이 진행되기 때문에 보안성이 더 취약함
ISO10126Padding
- 패딩하는 데이터를 랜덤하게 생성한 값으로 패딩을 진행
- 마지막 바이트는 패딩한 바이트의 길이를 의미
- 안전한 해싱을 제공하지 않아 보안 수준이 낮은 편
OAEPPadding
- RSA 알고리즘과 함께 사용되며 ISO10126Padding과 같이 패딩하는 데이터를 랜덤하게 생성한 값으로 패딩을 진행
- ISO10126Padding 보다 보안성이 높은 해싱으로 패딩을 진행
'Java > 암호화' 카테고리의 다른 글
| 블록 암호화 기법 종류 (0) | 2024.03.18 |
|---|---|
| 암호화 알고리즘 종류 (0) | 2024.03.18 |
| javax.crypto.Cipher (0) | 2024.03.18 |
| Jasypt (application.properties 암호화) (0) | 2024.02.28 |
댓글