셜록 홈즈 시리즈 중에서는 춤추는 인형 암호가 나옵니다. 대강 이런 이미지인데요.
얼핏 보기만 해도 머리가 아프고 무슨 내용인지 해석 못하겠는, 아니 그 전에 이것이 암호인지조차 인지하지 못할 수 있습니다. 하지만 이것을 오늘 알게 되면 여러분은 일반인 수준에서 만들 법한 비밀 암호를 쉽게 해독할 수 있습니다.
1. 암호란...
암호가 무엇인지 간단히 말하자면 "너와 나만의 약속"입니다. 너와 나만이 알 수 있고 다른 사람은 이해하지 못하게 하는 것이죠. 그렇기에 쉽게 해석하지 못하게 만들어야 하지만, 그 안에는 명백한 규칙이 있어야 합니다. 아무런 규칙도 없이 암호를 만들면 다른 사람 뿐 아니라 '너'도 이해하지 못하고, 잘못하면 '나'도 이해하지 못하게 될 수 있으니까요. 즉 다른 사람도 해독할 수 있는 암호도 안 좋은 암호이지만, '너'와 '나'도 이해하지 못하는 암호도 안 좋은 암호입니다.
2. 암호 종류
사실 암호는 전쟁 때문에 나타나게 되었습니다. 그 역사도 매우 긴 편이죠. 그에 따라 종류도 다양합니다. 종이를 막대에 감아서 암호를 해독하는 스키테일 암호, 알파벳(혹은 한글 자모도 되겠군요) 상에서 글자를 몇 칸씩 밀어서 읽으면 해독되는 카이사르 암호부터, 현대에 이르어서는 RSA, DSA, 양자암호 등등....
하지만 오늘은 단일 치환 암호로 보도록 하겠습니다!
3. 단일 치환 암호와 그 해독
단일 치환 암호는 카이사르 암호의 상위 버전 입니다. 기존의 알파벳 각각을 다른 것으로 일대일 대응시킨 것이죠. 위의 춤추는 인형 암호가 바로 그 예입니다. 예를 들어 철수가 아래의 문장을 만들었다고 합시다. 밀회를 하려는 모양이군요?
Let's meet at five o'clock in front of the convenience store. (다섯 시에 편의점 앞에서 만나자)
철수는 이것을 영희 모르게 민지에게 보내야 합니다. 그래서 다음과 같이 글자를 옮겼습니다.
Aiy'k ziiy ly hrvi w'bawbs ex huwxy wh yfi bwxvixeixbi kywui.
이 쪽지를 우연히 본 영희는 이것을 해독하고자 합니다. 이러한 단일 치환 암호를 해독하는 가장 흔한 방법이 바로 빈도수 분석입니다. 우리가 평소에 한글을 쓸 떄 ㅋ,ㅌ,ㅊ,ㅍ보다는 ㄱ,ㄴ,ㄷ,ㄹ 등을 훨씬 많이 쓰는 것처럼 각 나라의 문자는 모든 단어가 동일하게 쓰이지 않고 빈도수의 차이가 존재합니다. 대표적으로 영어에서의 알파벳 빈도는 다음 표와 같습니다.
보시면 알겠지만, e,t,a,o,i를 따라 영어 빈도수가 나타나고 있으며 사실상 j,q,x,z의 경우 거의 쓰이지 않음을 알 수 있습니다. 특히 한글과 달리 영어는 모음이 5개뿐인지라 자음에 비해 대체적으로 빈도수가 높은 편입니다.
영희의 입장에서 다시 돌아와 봅시다. 영어 알파벳의 빈도를 거의 알고 있는 영희는 각 알파벳의 빈도를 구합니다. 다만 모든 문장에서 해당 빈도수가 들어맞으라는 보장은 없기에 대략적으로만 눈에 띄게 차이나는 것만 먼저 토대를 정해줍니다.
Aiy'k ziiy ly hevi w'bawbs ex huwxy wh yfi bwxvixeixbi kywui.
a : 2
i : 9 -> e
y : 6 -> t
k : 2
z : 1
l : 1
h : 1
e : 3
v : 2
w : 4
b : 4
s : 1
u : 2
x : 3
먼저 대체하겠습니다.
Aet'k zeet lt heve w'bawbs ex huwxt wh tfe bwxvexeexbe ktwue.
꽤나 많은 문자를 대체하였으나 아직은 부족합니다. 그 다음으로 볼 것은 기타 부호입니다.
영어에서 '(apostrophe)는 꽤나 많이 사용하는 문자입니다. 이것은 보통 축약형 혹은 소유격에서 주로 쓰입니다. 본 문장에서 ?et'?에 다음이 들어가려면
(사람/사물)'s
(사람/사물)과 Be동사의 축약형 ->인칭 대명사 중 ?et는 없으니 사람/사물 이름일 것이고 이것도 's가 오겠네요.
(사람/사물)과 조동사의 축약형 -> 한 글자의 축약형은 d(would, had)가 있겠네요.
Let's? 가 될까요?
정도가 있겠네요. 그러나 k=d라면 마지막의 kywui가 dt??e가 될 것입니다. 이 문장이 영어라는 추측하에서 시작되었으니, dt??e 역시 영어라고 가정하고 보면... 글쎄요? 수학이라던지, 약어가 아닌 이상 찾기 어려워 보이는군요. 잠재적으로 k=s라고 가정을 하죠.
Aet's zeet lt heve w'bawbs ex huwxt wh tfe bwxvexeexbe stwue.
그 다음으로 눈에 띄는 것은 w'bawbs입니다. ' 만큼 눈에 띄는 단어입니다. 일상적으로 사용할 만한 단어 중에서 ?'?????의 구조를 가진 것을 떠올려봅시다. 혹시 o'clock말고 다른 것을 떠올린 사람 계신가요? 마침 단어도 잘 맞으니 일단 대입해 봅시다.
Aet's zeet lt heve o'clock ex huoxt oh tfe coxvexeexce stoue.
또 o'clock 앞에는 숫자가 와야 하므로 1부터 12까지 중 e로 끝나는 4글자 숫자를 찾으면 five, nine이며 이중 네 알파벳이 모두 다른 five가 정답임을 알 수 있습니다.
Aet's zeet lt five o'clock ix fuoxt of tfe coxvexiexce stoue.
(사실 이정도쯤 하면 Grammerly에 대입하니 거의 옳게 수정해 주더군요)
이제 대략적으로 문자가 드러났으니 지금부터는 보통 단어를 일일이 대조하거나 문장 분석을 합니다.
단어 대조야 이런 것입니다. co?ve?ie?ce에서 ?는 전부 같은 알파벳입니다. 남은 알파벳을 일일이 맞추어 보면 아마 convenience(편의)가 나올 것입니다. 한편 convenience sto?e에서 sto?e의 후보 군은 stove, store, stone 등등이 있습니다. 그중에서 convenience와 문장 흐름상 맞는 단어는 store일 것입니다. (convenience store : 편의점)
Aet's zeet lt five o'clock in front of tfe convenience store.
(사실 암호 해독은 노가다의 학문입니다. 억지 맞추기라고 생각하실 수 있으시겠지만 이것이 정상적인 방법입니다.)
그 다음으로는 문법 분석을 해봅시다.
또한 알파벳 2글자로 이루어진 단어의 거의 대부분은 인칭대명사(we, he, it)과 be동사(am, is), 전치사가 이루고 있습니다.
?t같은 경우 five o'clock 앞에 있으므로 at이 와야 할 것이므로 l=a일 것입니다. 또한 in front of와 convenience store 사이에 올 t?e는 정관사 the로 유추할 수 있을 것입니다. 이제 남은건 맨 앞의 ?et's ?eet 입니다.
Aet's zeet at five o'clock in front of the convenience store.
해당 문장을 해석하면 "????? 다섯 시에 편의점 앞에서 ??????"입니다. 이러한 상황에서 가능한 경우의 수는 크게 2가지 입니다.
Let's 동사
(사람이름 / 사물)'s (형용사)
결과론적으로 해당 상황에서 "(누군가/무언가)가 5시에 편의점 앞에서 (형용사)했다"보다는 "5시에 편의점 앞에서 (동사)하자"가 문맥상 적절해 보이므로 동사를 물색해보면 "Let's meet at five o'clock in front of the convenience store"이 답이 될 것입니다.
다음에 다른 암호를 가지고 만나도록 할게요.