2000년 전후해서 회사일과도 관계가 되고 해서 암호학에 심취해 있던 적이 있었다. 아래 문제는 2000년 겨울 쯤에 대학 동아리 졸업자들 모임 게시판에 올렸던 암호 문제인데, 지금 생각해도 재밌었던 기억이라 여기 다시 올려본다.
--------------------
2000년 11월 7일 화요일 오전 4시 23분
나는 늘 본업으로 하는 일 외에 심심할 때마다 들여다 볼 만한 pet project를 하나씩 키우는 습관이 있는데, 요즘엔 1990년에 발간된 미군의 암호해독에 관한 Field Manual (No.34-40-2)을 공부해보고 있다. 물론 현재는 군사기밀에서 해제되어 있는 문서다.
실전이 최고의 교본이라는 생각에 따라 인터넷을 돌아다니면서 암호해석학에 관한 내용을 가르치는 외국 대학들의 강의 사이트들을 뒤지다가 스웨덴 어딘가에서 아래의 암호문을 해독해보라는 숙제를 발견했다. 물론 답은 주어지지 않았다. 암호화 방식은 unknown이다. 즉 알아서 하라는 것이다. 사실 실제 전쟁이 나서 만약 내가 우연히 적의 암호문을 해석하는 입장이 된다면 아무도 무슨 방식으로 암호화됐는지 알려줄 수 없을 것이기 때문에 아주 실전적인 문제라고 생각되었다. 물론 난이도는 실전적이지 않지만.
일단 이 숙제가 그 과목의 초기에 나오는 문제들 중의 하나인 것으로 보아 그리 난이도가 높아보이지는 않는다. 암호문 전체가 영대문자로만 된 것으로 보아 문자단위의 암호화 방식을 쓴 것으로 보인다. Simple substitution의 일종으로 보이는데, frequency 분석을 해보니 monoalphabetic은 아닌 것 같다. Polyalphabetic으로 보고 Index of Coincidence를 계산해 key length를 추측하고, Mutual Index of Coincidence를 이용해 Vigenere 해독방식으로 풀어보려 하니 답이 잘 안나온다. 그래서 지금은 homophone의 일종인가 생각중인데 요 며칠 몸이 아파서 진행을 못했다.
장황하게 쓴 이유는 혼자 풀어보려니 뭔가 짜릿한 맛도 덜하고 해서 내가 저녁 거하게 산다는 상품을 걸고 나를 포함해 누가 가장 먼저 답을 내는가 시합해 보면 어떨까 해서다. 가끔 암호에 관련된 글이 나오면 관심을 갖는 분들이 제법 있는 것 같아서. 답을 풀어낸 사람은 여기 게시판에 알려주시길.
자, 그럼 문제 나갑니다.
BFQUZPTSYQIARNBTRAMIKZBFXJORSTQSYZICDKQRQOMMXDTJXV
QBUCHABJYIGMZTBHAJMVPLHDRNIXUEWHWEVMVUXPHATRXOJRHR
EIVIYLUGGBTWMMZAXJJRHEADIMDGBZWHGNQWGZLMVDGCVHQETI
SFPBUHPIVTNHADTBJOMHPALAEDKXQRFOYZTAXAURGGTSEBOEEG
DFADYUYRKSBKMBJPJFDYIIOZHHGVDCETHMHMJRBLMCTEXUCWZQ
YBBMURELJMUUNVBCLJTHWKIAYWCSXZWYJPUBJMBKLAEFDGDJZK
GLTQAVFMZPJOIEQTDTSIQEIFDBMUHUXEIZJRKUEASWGWAMKAJN
WCVAJMEDWLGHTBFEEZBTPBJWQXJMFAXYJPJHVGZHNDFBISBMXR
UPXPADJNHVEVZDEVYBIWAKBWPPKRYBGFHFMJVWGHWPYRHAJDEO
WZMBTFBJSXSIOWAGBOUHYNBLIDLZGMAHMBLDEMEQLACHZQXOMI
SEEYJCQVWIGLBLICQTIZFXEWRBFMGJGGKBAOZJYCGMQTMPJXLB
OCAHTEKADGYBWPDMXHRYJOLFHRDZBQZXKAQUMWBMMJBAIJAGKL
JZEELDBGMGIBBKGPQVZAEBQFGFHDIWOWTXZARAYFTAMIERLCIK
RDEACIBLBHDMYHJZJQSDFMJIIRITOJBMWHRHYGEYJHGCJJWJAA
SXOHZAZHGEBWMAIZQGXRKHRDIFEZQJTCVEXGXPBNIEKBJZQDDQ
GNBLXSUOCDVLEWMRZQFDSGIFIYWNOVTUBRKPTVGUJGAVPNKFWZ
VGNSVMZFZWLAUDAYBYQNIXCWZMJEGIQWNYMONJUJBZHBKJGUUJ
IAUMMQXVFJMVWNECIBKCWGVJMGVZKLPMWRSQTGJJMDJBELAKME
ETPRHJMQRGAQALPAGJKIWKXGQJNWAKEDWATLBIQGEDSFZEXMNE
MLBXIHUDJVTNLZZFYIMXVEUOBHGXHPRFTKXJHVAIDEEAIEDPFW
BIPRMGAOTUMREPCAYXBWDEWGMXJAGNXGFEXGEWCAWLXZZJVQVL
MMSNXAMEWAFFDWWGXERMBLGILBSVGPMVTOIIFKYHXFNEIJMXUP
PZOCBFAVWDESYBTCNEQKJWHPSGMCLNIJTIDIHCAIDEYRFUBCUV
VCAFRZKNOUPWGHALMWJZJSICWMMJRDIHWKYUVSNAIDBXIHMVFG
THODUHCWQXBGBEMOXXEHXNGOXHLCAPHIATMORATBFJXJCNBMJG
BVIPGHPYWYBPYUHSLPURMUJYVOKTCRYJXOAKQVLABWSJDFAUQP
WPEJOJIZNQOQZSTWXYJDYVPZWLCIBXQGFEYDKMMOMTMYHHDEAW
RSZTIPLZMHXVTEXYECEKOGUXGLYXZWVMCTIZMIJDEMJKPEWXCA
ZHWWFQBVJLHDMGUPLGSRWIUFWKADDMWTXPTEYGMKBZMNWDOAQI
MRBNPHLPJSEFTJYRAEHTOIMJCEAJQTTUBWXRJAPWDBEWDWYHWG
NHQHFPXCUDXOTEVGSREYJFZCDIEUAUPOMTVFVRQNFFZKALLOUN
PDLUJAYRBQWRPZJSSHYNYBCATRPAXKUNAJBKACLGCABGXOUWTD
LSXJUCHONJWDOAQWPJBVUAMLFRTEXNWGJUQHAXHUTJJSBMYTMX
MAPRWNGUAGAFQJYJYFEOIPJXXUVAXBNWRDWHSFMAYZGASTMHIA
SNMWFVODIDEIYJVNHMBSEFFJWRJZBESDIELPIJWOCIICDYTASD
UYPKIVVTCQYAXHRHVBJMWQEOWGNJMAIBGLCJPVLMIWJVAMUAXQ
XHMTSABKIHMQROMTFZXWXGJRBENGQCEDXXBHAPYRJHXMUBFTHV
YDYHCJBBZVAOBRPHTMSLMMXKNPIFEIVHMOFLZGVHTULFTDBKPZ
UOELPLLBQMBWYUBEGAAMJCINWFSSAXURRMWDJYIPTUAGQRQAJH
WJYNFKNPQOXAGMTVBBYFODMDSOUJUOBAVTJLMMPRKOAIWCWFHI
풀이는 다음 포스팅에...