카이사르 암호

Senior9324 (토론 | 기여)님의 2015년 11월 1일 (일) 15:37 판

틀:넘겨주기 있음

개요

암호의 한 종류로, 문자를 순서대로 나열했을 때 여러 단계 다음의 문자로 치환하여 암호화하는 방법이다. 영어 알파벳의 경우, 만약 A를 B로 바꿀 경우, B는 C, ... , Z는 A로 바꾼다. 말로는 복잡해 보이지만 실제 암호화에 쓰는 표를 보면 한방에 구조와 사용법을 이해할 수 있다.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

위의 표는 간단히 만든 카이사르 암호화 도구로 암호화 시에는 윗줄에서 글자를 찾아서 아랫줄의 글자로 바꾸고, 복호화 시에는 반대로 하면 된다. 눈치챈 사람도 있겠지만, 밑줄은 알파벳을 옆으로 한칸씩 밀어서 적은 것에 불과하다. 물론 굳이 저럴 필요는 없고 밑줄의 알파벳 배치를 마구 적어도 된다.

알파벳의 경우, [math]\displaystyle{ Z_{26} }[/math]의 한 원소라고 생각할 수 있다. 키가 [math]\displaystyle{ k \in Z_{26} }[/math]일 때, 암호화

[math]\displaystyle{ E(x) = x+k }[/math]

이고 복호화

[math]\displaystyle{ D(x) = x-k }[/math]

라고 생각할 수 있다.

해독

암호문이 많다면 어렵지 않게 해독할 수 있다. 각 문자에 따라 빈도수가 다르기 때문이다. 뭔가 백:오리같다. 알파벳의 경우 E가 많이 사용되는 탓에 빈도수가 높은 알파벳이 E일 확률이 높다. 알파벳은 26가지밖에 안되는데 다 해보면 되지는 의미가 없는 행동인게, 모든 알파벳에 대해 E일 가능성을 시험해 보는 건 그야말로 노가다다. 게다가 한참 풀어나가지 않으면 그 알파벳이 E인지를 파악할 수 없는 경우도 생기므로 작업 효율에 있어서 도움이 안된다.

NK MJ MFI FSDYMNSL HTSKNIJSYNFQ YT XFD, MJ BWTYJ NY NS HNUMJW, YMFY NX, GD XT HMFSLNSL YMJ TWIJW TK YMJ QJYYJWX TK YMJ FQUMFGJY, YMFY STY F BTWI HTZQI GJ RFIJ TZY. NK FSDTSJ BNXMJX YT IJHNUMJW YMJXJ, FSI LJY FY YMJNW RJFSNSL, MJ RZXY XZGXYNYZYJ YMJ KTZWYM QJYYJW TK YMJ FQUMFGJY, SFRJQD I, KTW F, FSI XT BNYM YMJ TYMJWX.

라는 암호문이 있다고 하자. 빈도수를 표로 나타내면

B 4 D 5 F 20 G 5 H 5
I 10 J 33 K 8 L 5 M 24
N 16 Q 7 R 4 S 15 T 18
U 4 W 12 X 12 Y 35 Z 6

여기서 빈도수가 높은 알파벳은 JY[1]이다. 알파벳 E가 이 둘 중 하나로 바뀌었다고 추측할 수 있다.

  • 만약 E가 J로 바뀌었다면, Y는 T가 된다.
  • 만약 E가 Y로 바뀌었다면, J는 D가 된다.

그런데, D는 그렇게 많이 사용되는 알파벳이 아니다. 그러니 E는 J로 바뀌었음을 추측할 수 있다. E는 다섯번재 알파벳, J는 열번째 알파벳이다. 키는 5가 된다. 바꿔보면

IF HE HAD ANYTHING CONFIDENTIAL TO SAY, HE WROTE IT IN CIPHER, THAT IS, BY SO CHANGING THE ORDER OF THE LETTERS OF THE ALPHABET, THAT NOT A WORD COULD BE MADE OUT. IF ANYONE WISHES TO DECIPHER THESE, AND GET AT THEIR MEANING, HE MUST SUBSTITUTE THE FOURTH LETTER OF THE ALPHABET, NAMELY D, FOR A, AND SO WITH THE OTHERS.

가 됨을 알 수 있다. [2]

변종

여러줄을 사용하는 변종

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

※ 이 표는 편의상 2줄만 기재했다.

첫번째 변종은 위에서 처럼 매번 서로 다른 알파뱃 목록을 대응시키는 것이다. 첫글자는 위 아랫줄이 모두 알파벳 순서대로 써진 표를 사용해서 암호화 하고, 다음 글자를 암호화 할때는 밑줄을 옆으로 한칸씩 밀어서 표를 재구성한 뒤 사용한다. 예를 들어서 위의 3줄짜리 구성에서 첫 글자로 EE가 나왔다면, DC로 암호화된다.

집에서 이 변종을 자작할때는 각 줄을 규칙성있게 만드는 게 좋다. 안그랬다가는 암호/복호에 필요한 엄청난 크기의 표를 통째로 전달해야한다. 하나의 정해진 행을 만들고, 매번 옆으로 한칸씩 밀어나가는 게 외우기 편하다. 작업을 편하게 하려면 26등분된 원판을 사용해 안쪽판이 회전할 수 있게 만들거나, 적당한 굵기의 원통에 종이를 감은 뒤 이걸 26등분 하고, 둘로 분할해 링 두개가 회전할 수 있게 만들어서 '어디서 시작할지'만 정하면 된다. 참고로 매일 '어디서 시작할지'를 바꿔 나가면 해독자를 한번 더 물먹일 수 있다.근데 진짜 노출되면 안되는 거라면 PGP써라

별거 아닌것 같지만 '임의로 알파벳이 배치된 암호/복호화표 여러개를 사용한다'라는 발상은 이후 제퍼슨 디스크에 그대로 적용된다. 발명자는 바로 그 토마스 제퍼슨. 제퍼슨 디스크는 알파벳 배치 순서가 서로 다른 복수의 원판과 이를 꽂는 통으로 만들어진 단순한 장치로 위 변종에서 줄의 순서를 임의로 정할 수 있는 물건인 셈인데, 사용법은 아래와 같다.

암호화
  1. 정해진 순서에 맞춰 바퀴를 설치한다.
  2. 바퀴를 돌려서 내가 상대에게 보내고 싶은 문장을 만든다.
  3. 이 상태에서 정해진 위치 혹은 아무 줄이나 하나 골라서 상대에게 전달한다.
복호화
  1. 정해진 순서에 맞춰 바퀴를 설치한다.
  2. 전달받은 엉망진창 문장이 나오도록 바퀴를 돌린다.
  3. 이 상태에서 만들어진 문장들을 찬찬히 살펴보면 한줄이 원래 문장이 되어 있다.

별거 아닌 물건 같지만 제2차 세계 대전에서도 부분적으로 써먹었다고 한다.(...)

여러개를 하나에 배정하는 변종

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
#

두번째 변종은 기호까지 동원해서 자주 나오는 알파벳에 여러개의 알파벳/기호를 배치하는 것으로 역시 빈도 분석을 어렵게 할 수 있다. 단점이라면 순수하게 알파벳으로만 만든 카이사르 암호화 장치와는 달리 기호가 들어가므로 외우기 힘들다. 적어두자니 털리겠고, 외우자니 골아프고 이래저래 난감한 구조라는 게 문제.

참고로 위의 표는 어디까지나 예시이므로 더 나은걸 만들어서 쓰자. 저렇게 했다가는 해독자가 '특수문자가 죄다 E아냐?'라고 생각하는 순간 깔끔하게 털린다.

각주