FPE(형태 보존 암호화)는 암호문의 형태와 평문의 형태를 유지하는 암호화 운영 모드입니다. 신용카드 번호처럼 길이나 형식이 일정한 데이터를 암호화했을 때도 길이나 형식이 일정하기를 바란다면 FPE가 유용합니다.
형태를 유지해서 얻을 수 있는 유용성이 있음에도 FPE는 아직 많이 사용하지 않습니다. 안전성을 의심하기 때문입니다. 예를 들어 16자리 신용카드 번호를 FPE로 암호화하면 결과물도 16자리 십진수가 됩니다. 흔히 사용하는 128비트 AES 알고리즘으로 암호화했을 때 결과물과 비교하면 훨씬 불안해 보입니다.1
| 16자리 신용카드 번호의 암호문 비교 예 |
16자리 신용카드 번호 |
FPE 암호문 |
AES 암호문 |
3214 4353 3532 3253 |
9456 1238 7623 9012 |
6d5c3eo22e5a6f7be663b9e69bcea443 |
7432 6474 5356 2357 |
7123 8829 3128 00236 |
a7bd772fabd574bac462273afb906e9a |
8563 7424 4355 7537 |
4128 4328 2811 8239 |
932c6dbf69255cf13edcdb72233acea3 |
9537 4057 2474 8753 |
6813 5635 8382 1962 |
ec331f5dd1c5f40e28ea541caec913f6 |
1 FPE 암호문의 크기는 128비트 AES 암호문의 크기보다 훨씬 작습니다. 1016 < (1616 = 264) < 2128