IDEA란 무엇인가?
IDEA(International Data Encryption Algorithm, 국제 데이터 암호화 알고리즘)는 제임스 매시(James Massey)와 라이쉐자(Xuejia Lai)가 개발한 블록 암호 방식으로, 1991년에 처음 공개되었습니다. IDEA는 128비트 길이의 키를 사용하며 64비트 단위의 데이터 블록을 처리합니다.
IDEA의 주요 특징
IDEA는 비트 단위 배타적 논리합(XOR), 덧셈, 곱셈 모듈로 연산에 기반한 여덟 개의 동일한 변환 과정으로 구성됩니다. 대칭키 암호 방식에 속하지만 일부 약한 키(weak key)가 존재하는 것으로 알려져 있고, 구조가 복잡한 편이라 DES만큼 널리 보급되지는 못했습니다.
다른 블록 암호 알고리즘과 달리 IDEA는 스위스 기업 애스컴(Ascom)이 관리했던 알고리즘입니다. 다만 비영리 목적의 무료 사용을 허용했기 때문에, 당시 유명했던 메시지 암호화 프로그램인 PGP에 채택되면서 블록 암호로서 널리 알려지게 되었습니다.
IDEA의 라운드 구조
IDEA는 총 8개의 라운드로 구성됩니다. 각 라운드는 4개의 데이터 블록에 대해 6개의 키를 사용하여 일련의 연산을 수행합니다. 첫 번째 라운드에서는 K1부터 K6까지, 두 번째 라운드에서는 K7부터 K12까지의 키가 사용되는 방식입니다. 마지막에는 출력 변환(output transformation) 단계가 수행되며, 이 단계에는 4개의 서브키(K49~K52)가 필요합니다.
최종 출력은 출력 변환 단계에서 생성된 값이며, C1부터 C4까지의 블록이 연결되어 최종 결과를 형성합니다. 각 라운드는 다음과 같은 14단계로 이루어집니다.
IDEA 한 라운드의 세부 단계
| 1단계 : P1과 K1을 곱셈(Multiply *)합니다. |
| 2단계 : P2와 K2를 덧셈(Add *)합니다. |
| 3단계 : P3와 K3를 덧셈(Add *)합니다. |
| 4단계 : P4와 K4를 곱셈(Multiply *)합니다. |
| 5단계 : 1단계와 3단계의 결과를 XOR합니다. |
| 6단계 : 2단계와 4단계의 결과를 XOR합니다. |
| 7단계 : 5단계의 결과에 K5를 곱셈(Multiply *)합니다. |
| 8단계 : 6단계와 7단계의 결과를 덧셈(Add *)합니다. |
| 9단계 : 8단계의 결과에 K6를 곱셈(Multiply *)합니다. |
| 10단계 : 7단계와 9단계의 결과를 덧셈(Add *)합니다. |
| 11단계 : 1단계와 9단계의 결과를 XOR합니다. |
| 12단계 : 3단계와 9단계의 결과를 XOR합니다. |
| 13단계 : 2단계와 10단계의 결과를 XOR합니다. |
| 14단계 : 4단계와 10단계의 결과를 XOR합니다. |
여기서 사용되는 Add*(덧셈*)와 Multiply*(곱셈*)는 일반적인 산술 연산이 아닙니다. Add*는 216, 즉 65,536을 법으로 하는 덧셈이며, Multiply*는 216+1, 즉 65,537을 법으로 하는 곱셈을 의미합니다.
출력 변환(Output Transformation)
출력 변환은 단 한 번만 수행되는 연산으로, 8번째 라운드가 끝난 직후에 진행됩니다. 이때 64비트 값은 R1부터 R4까지의 4개 하위 블록으로 나뉘며, 4개의 서브키가 사용됩니다.
복호화(Decryption)
복호화는 암호화와 동일한 방식으로 수행되지만, 라운드 키의 적용 순서가 반대가 되고 홀수 라운드의 서브키는 역원(inverse)으로 대체됩니다. 예를 들어 암호화에서 K1~K4가 사용된 위치에는 각각 K49~K52의 역원이 대응되며, 각 그룹의 K5와 K6는 복호화 시 K47과 K48로 대체됩니다.
맺음말
IDEA는 PGP(Pretty Good Privacy) 등 실제 암호화 소프트웨어에 채택된 바 있는 검증된 알고리즘입니다. 관련 특허가 만료된 지금은 상업적 목적으로도 자유롭게 사용할 수 있으며, 현재는 AES가 표준으로 자리 잡았지만 IDEA는 블록 암호의 동작 원리를 학습하기에 좋은 고전적인 사례로 평가받습니다.