[블록 암호화] KWP 알고리즘
KWP 알고리즘은 KW의 단점을 보완한 알고리즘 모드입니다.
이름에서 알 수 있듯 KW에 Padding 기능을 추가한 알고리즘입니다.
RFC-5649에 기능이 서술되어 있고, KW와 동일하게SP 800-38F를 활용하여 테스트할 수 있습니다.
1. KWP 알고리즘이란?
| 특징 | 설명 |
|---|---|
| 암호 알고리즘 | AES |
| 지원 키 길이 | 128, 192, 256 비트 (ECB와 동일) |
| 패딩 | 8바이트 배수로 패딩 |
2. 동작 원리
KW와 기능적으로 동일하지만, 데이터에 패딩을 추가하는 점과 AIV(Alternative Initial Value)를 사용하는 점이 다릅니다.
2-1. AIV (Alternative Initial Value)
KWP는 KW의 Default IV 대신에 AIV를 사용합니다.
AIV는 Default IV와 동일하게 8바이트 입니다.
AIV = 0xA6 || 0x59 || 0x59 || 0xA6 || MIL
AIV는 고정된 헤더(0xA6, 0x59, 0x59, 0xA6) 4바이트와 MIL 4바이트로 구성됩니다.
여기서 MIL은 입력 데이터의 길이를 4바이트로 변환한 값입니다. (C언어의 uint32_t)
따라서 4바이트로 표현 가능한 2^32-1까지의 입력을 처리할 수 있습니다.
2-2. Padding
암호화 할 데이터가 8바이트의 배수가 되도록 0으로 채웁니다.
이러한 기능으로 입력 데이터의 길이는 최소 1바이트 부터 처리가 가능합니다.
- 입력이 이미 8바이트의 배수일 경우 패딩을 하지 않습니다. (따라서 패딩의 길이는 0~7)
2-4. 특례
입력 길이가 8바이트를 초과하는 경우 6 * N 번 반복을 통해 암호화 하는 것에 반해,
8바이트 이하의 데이터를 암호화 하는 경우 한 번의 암호화만 진행합니다.
- RFC-5649의 Process에 설명되어 있습니다.
4.1 Extended Key Wrapping Process
C[0] | C[1] = ENC(K, A | P[1]).
4.2 Extended Key Unwrapping Process
A | P[1] = DEC(K, C[0] | C[1]).
3. 장점과 단점
KW의 단점인 길이 제약을 해결할 수 있기 때문에 EC, RSA와 같은 키를 암호화할 수 있습니다.
다만 구현 난이도가 KW에 비해 약간 높다는 점이 단점일 수 있습니다.