DES(데이터 암호화 표준)란?
DES는 64비트 평문 블록을 입력받아 64비트 암호문을 출력하는 강력한 암호화 표준입니다. 즉, 각 비트가 0 또는 1일 수 있는 264가지 가능한 배열 사이의 치환(permutation)을 수행하는 방식으로 작동합니다.
DES는 총 16개의 라운드(round)로 구성되어 있으며, 동일한 연산 기법을 평문 블록에 16회 반복 적용합니다. 라운드 수가 이보다 줄어들면 차분 암호분석(differential cryptanalysis)에 취약해질 수 있습니다.
DES에서 64비트 평문 블록은 먼저 키와 무관한 초기 치환(initial permutation)을 거칩니다. 그리고 알고리즘이 종료될 때 이 치환의 역변환이 수행되어 최종 암호문이 생성됩니다.
키 길이는 56비트입니다. 키는 일반적으로 64비트 숫자로 표기되지만, 매 8번째 비트는 패리티 검사(parity check) 용도로 사용되며 실제로 DES 알고리즘에 키가 로드될 때는 제거됩니다.
DES의 기본 구성 단위는 평문과 키에 기반하여 한 번 수행되는 일련의 연산이며, 이를 '라운드'라고 부릅니다. DES의 보안에 영향을 미치는 핵심 요소는 다음과 같습니다.
1. 약한 키(Weak Keys)
초기 키가 각 라운드마다 서브키(subkey)로 변환되는 방식의 특성상, 특정 초기 키들은 '약한 키'로 분류됩니다. 초기 키 값은 두 개의 절반으로 나뉘며, 각 절반은 서로 독립적으로 변환됩니다.
만약 각 절반의 모든 비트가 0 또는 1로만 이루어져 있다면, 해당 키는 알고리즘의 모든 라운드에서 동일한 서브키를 생성하게 됩니다. 이러한 상황은 키가 전부 1이거나 전부 0이거나, 한쪽 절반은 전부 1이고 다른 쪽 절반은 전부 0인 경우에 발생할 수 있습니다. 이로 인해 DES의 보안성이 크게 저하됩니다.
2. 대수적 구조(Algebraic Structure)
DES의 암호화 연산은 군(group)을 형성할 수 있습니다. 이 경우 키 k1으로 평문 블록들을 암호화한 뒤 키 k2로 다시 암호화하는 것이, 키 k3 하나로 암호화하는 것과 동일한 결과가 될 수 있습니다.
더 심각한 것은, DES가 중간자(meet-in-the-middle) 방식의 기지평문공격(known-plaintext attack)에 노출될 경우 불과 228단계 만에 공격이 가능해진다는 점입니다. 만약 DES가 닫혀 있다(closed)면 임의의 k1과 k2에 대해 다음을 만족하는 k3가 존재하게 됩니다.
Ek2(Ek1(P)) = Ek3(P)
3. 키 길이(Key Length)
시간-공간 트레이드오프(time-space tradeoff)를 활용하면 키 탐색 과정을 상당히 가속화할 수 있습니다. 예컨대 가능한 모든 키로 하나의 평문 블록을 암호화한 결과 256가지를 미리 계산하여 저장해 둔 다음, 알려지지 않은 키를 해독할 때 암호 스트림에 데이터 블록을 삽입하고 그 결과 암호문을 복원함으로써 해당 키를 찾아낼 수 있습니다.
4. 라운드 수(Number of Rounds)
라운드 수가 16으로 유지되는 이유는, 라운드 수를 줄인 경우 강력한 공격에 취약해졌기 때문입니다. 실제로 3~4라운드만 사용된 DES는 손쉽게 해독되었으며, 16라운드 미만의 DES는 무차별 대입 공격(brute-force attack)보다 기지평문공격으로 더 효율적으로 해독될 수 있음이 입증되었습니다.