테크매니아
고전암호시스템 본문
환자 암호 - 단순환자와 다중 환자 암호
단순 환자 암호
환자 암호 : 평문 문자를 다른 문자로 바꿔 암호화 하는 방법이다. ABCDE......XYZ에 다른 문자로 대응시킨다.
예를 들어 A는 Z로 ?C는 M으로... 그런데 임의로 정하면 복잡하니ABCDEFGHIJKLMNOPQRSTUVWXYZSECURITYABDFGHIJKLMNOPQVWXZ 로 키워드를 주는 방법을 쓴다. 여기서 키워드가 비밀키가 된다.이러한 환자암호는 전수조사로 깰 때 26! 시도를 해야 깨어질 수 있다.
시저 암호(shift 암호) : 특정 알파벳을 k번째 문자와 바꿔 암호화 하는 방법이다. 여기서 shifting 가능한 k의 개수는26개 이다.Ek(m) = (m+k) mod 26환자암호의 단점은 전수조사량이 많지만 특정 문자의 출현 빈도수를 가지고 추측이 가능하다는 단점이 있다.모음인 aeiou는 상대적으로 빈도수가 많은데 비해 z나 q는 그렇지 않으니 말이다.
다중 환자 암호
다중 환자 암호는 주기를 둠으로써 환자암호의 문자 출현 빈도 약점을 막으려고 설계되었다.주기마다 다르게 암호화 하여 문자 출현 빈도를 감춘다.vigenere 암호Fi(m)=( m + ki) mod 26시저 암호에 주기를 더한 것으로?k = {1, 2, 3, 4} 라면 주기 4마다 1칸, 2칸, 3칸, 4칸 씩 shifting 하여 시저 암호를 적용 시키게 된다.그러나 여전히 주기 마다 문자 출현 빈도 분석을 수행하면 암호를 깰 수 있다.Kasiski 암호분석만일 암호문에서 두 개 이상의 특정 문자열이 특정 주기 D마다 반복된다고 한다면, 이는 우연의 일치라고 보긴 힘드므로주기가 D의 약수일 가능성을 의미한다.
예를 들어 k = 1, 2, 3 일 때THI ?SIS ?FOR ?HIS ?SONUJL TKV GQU IKV TQQKV가 6번만에 재등장하고 있다. 이는 동일한 철자가 주기를 맞아 똑같이 반복되어 나온 것으로 추측 가능하며 6번만에 등장함은, 주기가 6의 약수일 가능성이 많다는 것이다. Hill 암호선형변환으로 암호화를 한다.주기가 d = 2이면, 평문은 2개의 블록으로 쪼개져 암호화 된다.?c1 = (k11m1 + k12m2)c2?=(k21m1 + k22m2)C = KM mod nn은 암호화 할 문자 갯수로 알파벳 기준으로는 26이다.선형변환에서 복호화는 K이 가역행렬이라는 전제하에 K-1를 구하여 할 수 있다.역행렬을 통해 복호화 함으로, 기지평문공격에 의해 키를 쉽게 도출 가능하다.
전치 암호
Nihilist cipher: 전치 암호는 길이가 d인 블럭으로 나눈 다음, 문자의 배열을 바꾼다. 키가 되는 재배열 순서가 3,2,1 이라면 길이가 3인 블럭으로 평문을 나누고 순서를 재배열 한다.
Hello World! -> hel low orl d! -> leh wol lro !d
주기 d를 임의로 잡고, 가능한 순열을 모두 해봄으로써 분석한다.