Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

IDEA 암호화 알고리즘의 작동 원리 완벽 정리


IDEA(International Data Encryption Algorithm)는 대표적인 블록 암호(block cipher)로, 64비트 평문을 128비트 키를 사용해 암호화합니다. DES처럼 가역적(reversible) 알고리즘이므로 동일한 알고리즘으로 암호화와 복호화를 모두 수행할 수 있습니다. IDEA가 안전하게 동작하려면 확산(diffusion)과 혼돈(confusion)이라는 두 가지 요소가 모두 적용되어야 합니다.

1991년 라이(Xuejia Lai)와 메시(James Massey)가 설계한 IDEA는 PGP 등에서 실제로 활용된 알고리즘으로, 모듈러 덧셈, 모듈러 곱셈, 배타적 논리합(XOR)을 조합해 강력한 혼돈과 확산 효과를 얻습니다.

전체 구조: 8개 라운드와 출력 변환

64비트 평문은 먼저 16비트씩 네 개의 블록(P1~P4)으로 나뉘어 첫 번째 라운드에 입력됩니다. 전체 알고리즘은 8개의 라운드로 구성되며, 128비트 키로부터 각 라운드마다 16비트 크기의 서브키(sub-key) 여섯 개가 생성됩니다.

첫 번째 라운드에서는 K1~K6, 두 번째 라운드에서는 K7~K12가 사용되는 방식으로 진행되며, 마지막에는 출력 변환(output transformation) 단계가 수행됩니다. 이 단계에서는 네 개의 서브키(K49~K52)가 추가로 필요합니다.

최종 출력은 출력 변환 단계에서 만들어진 결과이며, C1~C4 블록을 연결해 최종 암호문을 완성합니다.

라운드 내부 연산

IDEA에는 총 8개의 라운드가 있으며, 각 라운드는 네 개의 데이터 블록에 대해 일련의 연산을 수행하고 여섯 개의 키를 사용합니다. 주의할 점은 각 라운드의 덧셈(*)과 곱셈(*)이 일반적인 사칙연산이 아니라는 것입니다. 덧셈은 216, 즉 65,536을 법으로 하는 모듈러 덧셈이고, 곱셈은 216+1, 즉 65,537을 법으로 하는 모듈러 곱셈입니다.

라운드별 서브키 생성 과정

  • 1라운드: 키의 비트 위치 1~96을 사용하고, 97~128비트는 사용하지 않은 채 2라운드로 넘깁니다.

  • 2라운드: 먼저 97~128비트를 사용한 뒤 25비트 순환 좌측 시프트(circular left shift)를 수행하여 새로운 26~89비트를 사용합니다. 90~128비트와 1~25비트는 사용되지 않습니다.

  • 3라운드: 앞서 사용되지 않은 90~128비트와 1~25비트를 먼저 사용하고, 25비트 순환 좌측 시프트 후 51~82비트를 사용합니다. 83~128비트와 1~50비트는 사용되지 않습니다.

  • 4라운드: 83~128비트와 1~50비트를 사용합니다.

  • 5라운드: 25비트 순환 좌측 시프트가 발생하며, 76~128비트와 1~43비트를 사용합니다. 44~75비트는 사용되지 않습니다.

  • 6라운드: 5라운드에서 사용되지 않은 비트를 먼저 사용한 뒤 25비트 순환 좌측 시프트가 일어나, 이후 37~100비트가 사용되지 않는 상태가 됩니다.

  • 7라운드: 6라운드의 미사용 비트인 37~100비트를 먼저 사용하고, 25비트 순환 좌측 시프트 후 126~128비트와 1~29비트를 사용합니다. 30~125비트는 사용되지 않습니다.

  • 8라운드: 7라운드의 미사용 비트인 30~125비트를 사용하며, 이로써 키가 모두 소진됩니다.

출력 변환(Output Transformation)

출력 변환은 딱 한 번 수행되는 연산으로, 8번째 라운드가 끝난 직후 진행됩니다. 이때 64비트 값은 네 개의 하위 블록(R1~R4)으로 나뉘고, 네 개의 서브키가 사용됩니다.

IDEA 복호화

복호화 절차는 암호화 과정과 동일합니다. 다만 서브키의 생성과 설계에 일부 차이가 있으며, 복호화에 사용되는 서브키는 암호화 서브키의 역(inverse) 관계에 있다는 점이 특징입니다.