빈도 분석 공격 (Frequency Analysis Attack)
빈도 분석 공격은 암호문 내에서 특정 문자나 문자의 조합(쌍, 삼중 문자 등)이 나타나는 빈도를 계산하고, 이를 알려진 평문 언어의 통계적 빈도와 비교하여 암호의 키를 찾아내는 공격 기법입니다.
이는 치환 암호(Substitution Cipher)를 해독하는 데 가장 효과적인 고전적인 방법입니다.
1. 작동 원리
대부분의 언어는 문자들이 고르게 사용되지 않고, 특정 문자가 다른 문자보다 훨씬 자주 사용되는 통계적 패턴을 가집니다.
① 한국어의 통계 (자음/모음)
- 자주 쓰이는 모음: 'ㅏ', 'ㅓ', 'ㅗ'
- 자주 쓰이는 자음: 'ㅇ', 'ㄴ', 'ㄹ'
② 영어의 통계 (알파벳)
- 가장 빈번한 글자: E, T, A, O, I, N, S, H, R
- 가장 드문 글자: Q, J, Z, X
2. 공격 단계
- 암호문 빈도 계산: 주어진 암호문에서 각 알파벳이 몇 번 나왔는지, 또는 전체에서 몇 퍼센트를 차지하는지 계산합니다.
- 비교 및 매칭:
- 암호문에서 가장 자주 나온 문자(예:
X)를 영어에서 가장 자주 나오는 문자(예:E)와 일대일로 대응시킵니다. - 암호문에서 두 번째, 세 번째로 자주 나온 문자를 차례로 대응시킵니다.
- 암호문에서 가장 자주 나온 문자(예:
- 패턴 확인: 대응 관계를 바탕으로 암호문 일부를 평문으로 복원해보고, 단어의 패턴(예: 'THE', 'AND' 등)을 찾아내어 정확도를 높입니다.
3. 취약한 암호와 방어
① 취약한 암호
- 단일 문자 치환 암호 (Monoalphabetic Ciphers): 시저 암호, 일반적인 치환 암호.
- 이유: 한 문자가 항상 같은 문자로 치환되므로, 평문의 통계적 빈도가 암호문에 그대로 반영됩니다.
② 방어 (현대 암호학)
- 다중 문자 치환 암호 (Polyalphabetic Ciphers): 비즈네르 암호 등.
- 이유: 평문의 같은 문자('E')라도 암호문에서는 다른 문자('X', 'Y', 'Z')로 치환되므로, 빈도 분석을 통해 얻는 통계가 무의미해집니다.
- 현대 블록 암호 (AES 등): 문자와 통계 정보를 완전히 뒤섞어 버려 빈도 분석을 원천적으로 차단합니다.