2007년 08월 24일
기본적인 한글 암호의 해독법
관련글: 알파벳 대체 암호의 해독 - from. 코드북
영문 알파벳의 간단한 대체 암호의 경우 빈도수 조사라는든지 등의 해독 방법이 알려져 있습니다만, 한글로 된 암호에 대해서는 마땅히 해독 방법이 잘 알려져 있지 않습니다. 그래서 저의 짧은 지식으로나마 단순한 형태의 한글 암호를 해독하는 방법에 대해 기술하고자 합니다.
우선 다음과 같은 암호문을 입수했다고 합시다.
우선 띄어쓰기를 잘 살펴봅니다. 이렇게 띄어쓰기가 잘 되어 있으면 암호를 해독하기가 한결 수월해집니다. 한글의 특성상, 글자의 처음 부분은 무조건 자음입니다. 그리고 자음 다음에 나오는 글자는 당연히 모음입니다. 그래서 우선 해야할 일은, 어떤 글자가 자음이고 어떤 글자가 모음이냐를 분류해 내는 겁니다.
우선 여기서 확인할 수 있는 자음에 해당하는 글자들은 다음과 같습니다.
여기서는 알파벳 하나가 한글의 한 글자성분과 1:1로 대응하고 있다고 가정했는데, 그 이유는 한글의 기본 자음이 모두 14개. 그리고 기본 모음이 10개. 다 합해도 24개입니다. 알파벳은 모두 26글자니까, 알파벳 만으로도 충분히 커버할 수 있는 범위죠. 게다가 암호문을 보면, 알파벳이 한 단어에서 거의 중복없이 쓰이고 있습니다. 그렇기에 알파벳 하나가 한개의 자·모음과 1:1로 대응하고 있다고 봐도 무리가 없을 겁니다.
자, 그런데 암호문에서 보면, 몇몇 글자가 한 단어 내에서 연속해서 쓰이고 있는 있는 것을 볼 수 있습니다.
하지만 이 암호문에서 단어의 첫머리에 나왔던 Q와 D, E는 확실히 자음이라는 것을 확인 했으므로, 이것이 연속해서 두번 쓰여졌다는 것, 게다가 단어의 첫머리에서 중복되어서 쓰여졌다는 것은, 이 글자가 "ㄱ, ㄷ, ㅂ, ㅅ, ㅈ" 중 하나일 가능성이 매우 높다는 뜻이 됩니다.
자, 이번에는 모음으로 추정되는 글자들을 찾아봅시다.
단어의 처음에 나오는 글자가 자음이라면, 바로 그 다음에 나오는 글자는 모음이 될 겁니다.
자.. 이제부터는 찍어 맞추기에 달려있습니다. 이때 도움이 되는 것은 역시 영문 암호의 해독과 마찬가지로, 일반적인 한글 문장에서의 자음과 모음의 출현 빈도를 파악하고 있는 것입니다.
이때 도움이 될만한 자료는 다름 아니라 "한글 세벌식 자판"입니다.
왜냐면 세벌식 자판에서 기본자리에 있는 글자는 실제 한글 문장에서 가장 빈번하게 쓰이는 것을 배치시켰기 때문입니다. 세벌식 자판을 봤을때, 받침으로는 'ㄴ'과 'ㅇ'이 많이 쓰이고, 모음은 'ㅏ'와 'ㅣ', 초성으로는 'ㅇ', 'ㄱ','ㅈ', 'ㅂ' 순입니다.
그럼 주어진 암호문에서 가장 출현 빈도가 높은 글자를 조사해 봅시다.
[자음으로 추정되는 글자들의 출현 빈도수]
V: 4개, T: 8개, D: 17개, A: 8개, G: 5개, E: 9개, C: 3개, S: 21개, Q: 4개
[모음으로 추정되는 글자들의 출현 빈도수]
U: 4개, K: 25개, N: 3개, P: 3개, M: 8개, H: 9개, J: 1개, L: 17개
자음 중에서 특출나게 많이 쓰인 글자는 S와 D입니다. 그런데 S는 단어의 중간 부분에서 대단히 많은 빈도로 출현했습니다. 반면 D는 단어의 첫머리에도 제법 많이 나오는 것을 확인할 수 있습니다. 따라서 S는 종성(받침자)로 많이 쓰이는 'ㄴ'으로 짐작할 수 있고, D는 초성에서도 많이 쓰이고 받침자로도 제법 쓰이는 'ㅇ'으로 가정해 볼 수 있습니다.
모음 중에 가장 많이 쓰인 글자는 K이고, 그 다음이 L입니다. 이걸 각각 'ㅏ'와 'ㅣ'로 가정해 볼 수 있겠습니다.
문장들이 전부 "RRㅏ." 혹은 "Eㅏ."로 종결되는 것을 볼 수 있습니다. RR은 된소리 글자로 짐작되므로, '까', '따', '빠', '싸', '짜' 들 중 하나이겠지만, 문장의 끝에 오기에 적당한 글자는 역시 "까."가 되겠죠. 그렇다면 R은 'ㄱ'으로 볼 수 있습니다. "Eㅏ."는 "다" 정도로 볼 수 있을 듯 싶군요.
"Vㅕㅇ안GㅏTㅣㅂ니까."는 "평안하십니까." 로 대체해서 암호문에 다시 적용시켜 보겠습니다.
"아CㅣA인사가" 라는 부분은 "아침인사가" 로 고쳐볼 수 있을 것 같습니다.
그런데 사실... 여기까지 오면서 키보드를 유심히 관찰한 분이라면 아시겠지만...
이 암호문은 다름 아니라, 영문 모드 상태에서 한글 자판을 보고 그대로 영문을 타자해서 만든 겁니다. 눈치가 빠른 분이라면 처음에 자음과 모음의 후보들을 골라 냈을 때, 이 규칙을 깨달을 수도 있겠지요.
그럼 마저 해독을 마쳐보겠습니다.
영문 알파벳의 간단한 대체 암호의 경우 빈도수 조사라는든지 등의 해독 방법이 알려져 있습니다만, 한글로 된 암호에 대해서는 마땅히 해독 방법이 잘 알려져 있지 않습니다. 그래서 저의 짧은 지식으로나마 단순한 형태의 한글 암호를 해독하는 방법에 대해 기술하고자 합니다.
우선 다음과 같은 암호문을 입수했다고 합시다.
VUDDKSGKTLQSLRRK. VUDDKSGKTLQSLRRK.이 암호는 당연히 한글 문장을 암호화 했습니다. 그리고 한글 이외의 기호나 숫자는 암호화되어 있지 않다고 합니다. 자, 그럼 이 암호를 하나씩 차근 차근 풀어나가 보기로 합니다.
TKDZHOGKS DKCLADLSTKRK AKFRRH VNFMS GKSMFDP APDKFLCLSEK.
AKFLDKSLADML EEMFDP AHDLS THSUEMFDL DHSMFEH CJSTKRKXDL TNSWLSGKS ALTHFMF EELRH SHVEKFKS ANSDMF QQKWUSKRKSEK.
우선 띄어쓰기를 잘 살펴봅니다. 이렇게 띄어쓰기가 잘 되어 있으면 암호를 해독하기가 한결 수월해집니다. 한글의 특성상, 글자의 처음 부분은 무조건 자음입니다. 그리고 자음 다음에 나오는 글자는 당연히 모음입니다. 그래서 우선 해야할 일은, 어떤 글자가 자음이고 어떤 글자가 모음이냐를 분류해 내는 겁니다.
우선 여기서 확인할 수 있는 자음에 해당하는 글자들은 다음과 같습니다.
VUDDKSGKTLQSLRRK. VUDDKSGKTLQSLRRK.자음으로 추정되는 글자: V, T, D, A, G, E, C, S, Q
TKDZHOGKS DKCLADLSTKRK AKFRRH VNFMS GKSMFDP APDKFLCLSEK.
AKFLDKSLADML EEMFDP AHDLS THSUEMFDL DHSMFEH CJSTKRKXDL TNSWLSGKS ALTHFMF EELRH SHVEKFKS ANSDMF QQKWUSKRKSEK.
여기서는 알파벳 하나가 한글의 한 글자성분과 1:1로 대응하고 있다고 가정했는데, 그 이유는 한글의 기본 자음이 모두 14개. 그리고 기본 모음이 10개. 다 합해도 24개입니다. 알파벳은 모두 26글자니까, 알파벳 만으로도 충분히 커버할 수 있는 범위죠. 게다가 암호문을 보면, 알파벳이 한 단어에서 거의 중복없이 쓰이고 있습니다. 그렇기에 알파벳 하나가 한개의 자·모음과 1:1로 대응하고 있다고 봐도 무리가 없을 겁니다.
자, 그런데 암호문에서 보면, 몇몇 글자가 한 단어 내에서 연속해서 쓰이고 있는 있는 것을 볼 수 있습니다.
VUDDKSGKTLQSLRRK. VUDDKSGKTLQSLRRK.이렇게 한 글자가 연속해서 쓰였을 경우, 된소리 글자(ㄲ, ㄸ,ㅃ,ㅆ,ㅉ)일 가능성이 높습니다. 만일 된소리 글자에 대해서까지 별도의 암호를 할당했다면, 알파벳의 26글자 가지고는 택도 없습니다. 다만 주의할 것은, 우연히 종성(받침자)와 다음 글자의 초성이 같은 자음일 경우가 있기 때문에, 이 가정이 100% 다 맞는 것은 아니라는 겁니다.
TKDZHOGKS DKCLADLSTKRK AKFRRH VNFMS GKSMFDP APDKFLCLSEK.
AKFLDKSLADML EEMFDP AHDLS THSUEMFDL DHSMFEH CJSTKRKXDL TNSWLSGKS ALTHFMF EELRH SHVEKFKS ANSDMF QQKWUSKRKSEK.
하지만 이 암호문에서 단어의 첫머리에 나왔던 Q와 D, E는 확실히 자음이라는 것을 확인 했으므로, 이것이 연속해서 두번 쓰여졌다는 것, 게다가 단어의 첫머리에서 중복되어서 쓰여졌다는 것은, 이 글자가 "ㄱ, ㄷ, ㅂ, ㅅ, ㅈ" 중 하나일 가능성이 매우 높다는 뜻이 됩니다.
자, 이번에는 모음으로 추정되는 글자들을 찾아봅시다.
단어의 처음에 나오는 글자가 자음이라면, 바로 그 다음에 나오는 글자는 모음이 될 겁니다.
VUDDKSGKTLQSLRRK. VUDDKSGKTLQSLRRK.모음으로 추정되는 글자: U, K, N, P, M, H, J, L
TKDZHOGKS DKCLADLSTKRK AKFRRH VNFMS GKSMFDP APDKFLCLSEK.
AKFLDKSLADML EEMFDP AHDLS THSUEMFDL DHSMFEH CJSTKRKXDL TNSWLSGKS ALTHFMF EELRH SHVEKFKS ANSDMF QQKWUSKRKSEK.
자.. 이제부터는 찍어 맞추기에 달려있습니다. 이때 도움이 되는 것은 역시 영문 암호의 해독과 마찬가지로, 일반적인 한글 문장에서의 자음과 모음의 출현 빈도를 파악하고 있는 것입니다.
이때 도움이 될만한 자료는 다름 아니라 "한글 세벌식 자판"입니다.

그럼 주어진 암호문에서 가장 출현 빈도가 높은 글자를 조사해 봅시다.
[자음으로 추정되는 글자들의 출현 빈도수]
V: 4개, T: 8개, D: 17개, A: 8개, G: 5개, E: 9개, C: 3개, S: 21개, Q: 4개
[모음으로 추정되는 글자들의 출현 빈도수]
U: 4개, K: 25개, N: 3개, P: 3개, M: 8개, H: 9개, J: 1개, L: 17개
자음 중에서 특출나게 많이 쓰인 글자는 S와 D입니다. 그런데 S는 단어의 중간 부분에서 대단히 많은 빈도로 출현했습니다. 반면 D는 단어의 첫머리에도 제법 많이 나오는 것을 확인할 수 있습니다. 따라서 S는 종성(받침자)로 많이 쓰이는 'ㄴ'으로 짐작할 수 있고, D는 초성에서도 많이 쓰이고 받침자로도 제법 쓰이는 'ㅇ'으로 가정해 볼 수 있습니다.
모음 중에 가장 많이 쓰인 글자는 K이고, 그 다음이 L입니다. 이걸 각각 'ㅏ'와 'ㅣ'로 가정해 볼 수 있겠습니다.
VUㅇㅇㅏㄴGㅏTㅣQㄴㅣRRㅏ. VUㅇㅇㅏㄴGㅏTㅣQㄴㅣRRㅏ.그럼, 이제 몇몇개의 글자가 눈에 들어오기 시작합니다. 이번에는 문장의 끝부분에 집중해 봅시다.
TㅏㅇZHOGㅏㄴ ㅇㅏCㅣAㅇㅣㄴTㅏRㅏ AㅏFRRH VNFMㄴ GㅏㄴMFㅇP APㅇㅏFㅣCㅣㄴEㅏ.
AㅏFㅣㅇㅏㄴㅣAㅇMㅣ EEMFㅇP AHㅇㅣㄴ THㄴUEMFㅇㅣ ㅇHㄴMFEH CJㄴTㅏRㅏXㅇㅣ TNㄴWㅣㄴGㅏㄴ AㅣTHFMF EEㅣRH ㄴHVEㅏFㅏㄴ ANㄴㅇMF QQㅏWUㄴㅏRㅏㄴEㅏ.
문장들이 전부 "RRㅏ." 혹은 "Eㅏ."로 종결되는 것을 볼 수 있습니다. RR은 된소리 글자로 짐작되므로, '까', '따', '빠', '싸', '짜' 들 중 하나이겠지만, 문장의 끝에 오기에 적당한 글자는 역시 "까."가 되겠죠. 그렇다면 R은 'ㄱ'으로 볼 수 있습니다. "Eㅏ."는 "다" 정도로 볼 수 있을 듯 싶군요.
VUㅇ안GㅏTㅣQ니까. VUㅇ안GㅏTㅣQ니까.이렇게 단편적으로 드러난 부분을 바탕으로, 이제부터는 그럴싸한 단어들을 추론해 가면서 맞춰나갑니다. 우선, 맨 마지막의 "QQㅏWU나간다." 부분을 봤을 때, 자음인 Q가 단어의 첫부분에 두번 쓰여져있습니다. 된소리 글자로서 첫머리에 나오기에 적당 하면서 "****나간다" 에 적당한 것은 무엇일지 생각해 보면... "빠져나간다" 정도로 추측할 수 있겠습니다. 그럼 우선은 'Q=ㅂ, W=ㅈ, U=ㅕ' 라는 가정을 적용시켜 봅시다.
TㅏㅇZHOGㅏㄴ 아CㅣAㅇㅣㄴTㅏ가 AㅏFㄱㄱH VNFMㄴ GㅏㄴMFㅇP APㅇㅏFㅣCㅣㄴ다.
AㅏFㅣ아니AㅇMㅣ ㄷㄷMFㅇP AH인 THㄴUㄷMF이 ㅇHㄴMFㄷH CJㄴTㅏ가X이 TNㄴWㅣㄴGㅏㄴ AㅣTHFMF 띠ㄱH ㄴHV다Fㅏㄴ ANㄴㅇMF QQㅏWU나간다.
Vㅕㅇ안GㅏTㅣㅂ니까. Vㅕㅇ안GㅏTㅣㅂ니까.그럼 이번엔 첫부분의 "Vㅕㅇ안GㅏTㅣㅂ니까."에 주목해 봅시다. 여기에 어울리게 들어갈 만한 문장을 생각해 보죠. 이제부터는 어휘력하고도의 싸움이 되겠습니다만(...) 보통의 몇번의 삽질을 거쳐야 할 테지만, 저야 이미 답을 알고 있으니 바로 찝어내도록 하겠습니다(...)
TㅏㅇZHOGㅏㄴ 아CㅣAㅇㅣㄴTㅏ가 AㅏFㄱㄱH VNFMㄴ GㅏㄴMFㅇP APㅇㅏFㅣCㅣㄴ다.
AㅏFㅣ아니AㅇMㅣ ㄷㄷMFㅇP AH인 TH녀ㄷMF이 ㅇHㄴMFㄷH CJㄴTㅏ가X이 TNㄴㅈㅣㄴGㅏㄴ AㅣTHFMF 띠ㄱH ㄴHV다Fㅏㄴ ANㄴㅇMF 빠져나간다.
"Vㅕㅇ안GㅏTㅣㅂ니까."는 "평안하십니까." 로 대체해서 암호문에 다시 적용시켜 보겠습니다.
평안하십니까. 평안하십니까."평안하십니까." 라는 인사에서 눈치채신 분도 계실 테지만, 이 문장은 "마리아님이 보고계셔" 라는 작품과 관계가 있습니다. 이런 정보를 알고 있다면 해독은 더 쉬워지겠죠.
상ZHO한 아CㅣA인사가 AㅏFㄱㄱH ㅍNFMㄴ 하ㄴMFㅇP AP아FㅣCㅣㄴ다.
AㅏFㅣ아니AㅇMㅣ ㄷㄷMFㅇP AH인 ㅅH녀ㄷMF이 ㅇHㄴMFㄷH CJㄴ사가X이 ㅅNㄴ진한 AㅣㅅHFMF 띠ㄱH ㄴHㅍ다Fㅏㄴ ANㄴㅇMF 빠져나간다.
"아CㅣA인사가" 라는 부분은 "아침인사가" 로 고쳐볼 수 있을 것 같습니다.
평안하십니까. 평안하십니까."마Fㅣ아님"은 "마리아님"으로 고쳐보죠...
상ZHO한 아침인사가 마FㄱㄱH ㅍNFMㄴ 하ㄴMFㅇP ㅁP아Fㅣ친다.
마Fㅣ아님ㅇMㅣ ㄷㄷMFㅇP ㅁH인 ㅅH녀ㄷMF이 ㅇHㄴMFㄷH ㅊJㄴ사가X이 ㅅNㄴ진한 미ㅅHFMF 띠ㄱH ㄴHㅍ다Fㅏㄴ ㅁNㄴㅇMF 빠져나간다.
평안하십니까. 평안하십니까."ㅁP아리친다."에서는 "메아리친다."를 연상할 수 있겠고, "ㅁNㄴㅇMㄹ 빠져나간다."에서 단어 끝에 붙은'ㅇMㄹ'은 '을'이라는 조사로 생각해 볼 수 있겠죠. "상ZHO한"은 "상쾌한" 으로 해석할 수 있겠습니다.
상ZHO한 아침인사가 맑ㄱH ㅍNㄹMㄴ 하ㄴMㄹㅇP ㅁP아리친다.
마리아님ㅇMㅣ ㄷㄷMㄹㅇP ㅁH인 ㅅH녀ㄷMㄹ이 ㅇHㄴMㄹㄷH ㅊJㄴ사가X이 ㅅNㄴ진한 미ㅅHㄹMㄹ 띠ㄱH ㄴHㅍ다ㄹㅏㄴ ㅁNㄴㅇMㄹ 빠져나간다.
평안하십니까. 평안하십니까.이제 거의 해독이 끝나가는군요.
상쾌한 아침인사가 맑고 ㅍN른 하늘에 메아리친다.
마리아님의 뜰에 모인 소녀들이 오늘도 ㅊJㄴ사가X이 ㅅNㄴ진한 미소를 띠고 높다란 ㅁNㄴ을 빠져나간다.
그런데 사실... 여기까지 오면서 키보드를 유심히 관찰한 분이라면 아시겠지만...
이 암호문은 다름 아니라, 영문 모드 상태에서 한글 자판을 보고 그대로 영문을 타자해서 만든 겁니다. 눈치가 빠른 분이라면 처음에 자음과 모음의 후보들을 골라 냈을 때, 이 규칙을 깨달을 수도 있겠지요.
그럼 마저 해독을 마쳐보겠습니다.
평안하십니까. 평안하십니까.결론적으로 한글을 암호화한 문장을 해독하는데 있어서의 핵심사항은, 한글 문장의 특성을 파악하는 것과, 자·모음의 출현 빈도를 참고해서, 부분적으로 드러난 단어들을 추론해 나가는 것입니다.
상쾌한 아침인사가 맑고 푸른 하늘에 메아리친다.
마리아님의 뜰에 모인 소녀들이 오늘도 천사같이 순진한 미소를 띠고 높다란 문을 빠져나간다.
# by | 2007/08/24 01:29 | Know-out | 트랙백 | 덧글(7)




☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
그 책에서는 영어 코드나 암호만 다뤘는데.. 한글이라니 정말 색다르네요 ^^