当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題の表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

POLYALPHABETIC SUBSTITUTION PUZZLE 03【Cypher編】

暗号文

LAFLUIWOYWPADUFHSNBVSWVNDZQDUF
RBPLUYQPLWLPHZRLUEDUBSYMIPRDIJ
HTYQUCUZYLKFRSKHZBUHULUEKPQFOY
LYSSAMWOCWHZOLGDTDDPPOFDDTGOPY
UDGWOYOSDRYKVVDVLAULRZYGWPLJZY
QKYPTWVLJIAFHHSWOMUVDDAPLMJLUE
PVLRNPDWFXWMQAFHZSEQCFAGQDFLJF
LHLDSWCLMQLFXUBULBDUBVPVWFQHWY
UHRHJGSOCUZZXAGFVLILQVAFDARKPQ
LZCQAGULJBUCZAMPL

ヒント

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

DUF LUE
Try to find rotations which result in very few low frequency letters such as K, Q, X, J or Z.

訳すると以下のようになります。

DUF LUE
K、Q、X、J、Zといった出現頻度の低い文字がほとんど現れなくなるような回転を探してみてください。

解答への道

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

1:暗号文を眺める

・単語の区切りがない。

・暗号文メッセージが長い。

多換字式暗号なので、そのまま頻度分析はできません。やるなら、鍵長を推測・特定してから、グループ分けしてからなら、頻度分析できます。

・解読すべき暗号文キーワードは"PVLRNRDWF"

2:繰り返しの3連字を探す

dCodeで繰り返し文字列を探します。

最初は4連字を探しましたが、2回以上のものがありませんでした[1]本当は5連字が望ましいですが、4連字さえも見つかりませんでした。『暗号技術のすべて』P.77

次に3連字を探します。

左側の結果から2以上のものを探します。

7つ("LUE"、"WOY"、"DUF"、"DUB"、"KPQ"、"AFH"、"CUZ")の3連字が見つかりました。

ヒントの1行目には"DUF"と"LUE"が示されていました。

そこで、この2つに注目することにします。

[1]"DUF"間の文字間隔を調べる

LAFLUIWOYWPADUFHSNBVSWVNDZQDUFRBPLUYQPLWLPHZRLUEDUBSYMIPRDIJHTYQUCUZYLKFRSKHZBUHULUEKPQFOYLYSSAMWOCWHZOLGDTDDPPOFDDTGOPYUDGWOYOSDRYKVVDVLAULRZYGWPLJZYQKYPTWVLJIAFHHSWOMUVDDAPLMJLUEPVLRNPDWFXWMQAFHZSEQCFAGQDFLJFLHLDSWCLMQLFXUBULBDUBVPVWFQHWYUHRHJGSOCUZZXAGFVLILQVAFDARKPQLZCQAGULJBUCZAMPL
            ---            ---

「1番目の"DUF"」と「2番目の"DUF"」の文字間隔=15文字

⇒約数=1, 3, 5, 15

[2]"LUE"間の文字間隔を調べる

LAFLUIWOYWPADUFHSNBVSWVNDZQDUFRBPLUYQPLWLPHZRLUEDUBSYMIPRDIJHTYQUCUZYLKFRSKHZBUHULUEKPQFOYLYSSAMWOCWHZOLGDTDDPPOFDDTGOPYUDGWOYOSDRYKVVDVLAULRZYGWPLJZYQKYPTWVLJIAFHHSWOMUVDDAPLMJLUEPVLRNPDWFXWMQAFHZSEQCFAGQDFLJFLHLDSWCLMQLFXUBULBDUBVPVWFQHWYUHRHJGSOCUZZXAGFVLILQVAFDARKPQLZCQAGULJBUCZAMPL
                                             ---                                 ---                                                                                             ---

・「1番目の"LUE"」と「2番目の"LUE"」の文字間隔=36文字[2]'l’のインデックスの差分を取ると計算できます。"LUE"間の文字数をカウントして33と判断しないようにしてください。

⇒約数=1, 2, 3, 4, 6, 9, 12, 18, 36

・「2番目の"LUE"」と「3番目の"LUE"」の文字間隔=96文字

⇒約数=1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 96

共通する因数は、1, 2, 3, 4, 6, 12

the ←平文
??? ←鍵
LUE ←暗号文

したがって、[1][2]の共通因数を取ると、3になります。

よって、鍵長は3と推測できます。

4:暗号文メッセージを3グループに分割して、頻度分析する

暗号文メッセージに1~3のインデックスを割り当てます。

LAFLUIWOYWPADUFHSNBVSWVNDZQDUFRBPLUYQPLWLPHZRLUEDUBSYMIPRDIJ
123123123123123123123123123123123123123123123123123123123123

HTYQUCUZYLKFRSKHZBUHULUEKPQFOYLYSSAMWOCWHZOLGDTDDPPOFDDTGOPY
123123123123123123123123123123123123123123123123123123123123

UDGWOYOSDRYKVVDVLAULRZYGWPLJZYQKYPTWVLJIAFHHSWOMUVDDAPLMJLUE
123123123123123123123123123123123123123123123123123123123123

PVLRNPDWFXWMQAFHZSEQCFAGQDFLJFLHLDSWCLMQLFXUBULBDUBVPVWFQHWY
123123123123123123123123123123123123123123123123123123123123

UHRHJGSOCUZZXAGFVLILQVAFDARKPQLZCQAGULJBUCZAMPL
12312312312312312312312312312312312312312312312

インデックス1、インデックス2、インデックス3のグループに分けます。それぞれのグループをグループ1、グループ

2、グループ3と呼ぶことにします

グループ1 LLWWDHBWDDRLQWHLDSIDHQULRHULKFLSWWODDODOUWORVVUZWJQPVIHWUDLLPRDXQHEFQLLDCQXUDVWHUHSUXFIVDKLQUBZP
グループ2 AUOPUSVVZUBUPLZUUYPITUZKSZHUPOYAOHLTPFTPDOSYVLLYPZKTLAHOVAMUVNWWAZQADJHSLLULUPFWHJOZAVLAAPZALUAL
グループ3 FIYAFNSNQFPYLPREBMRJYCYFKBUEQYSMCZGDPDGYGYDKDARGLYYWJFSMDPJELPFMFSCGFFLWMFBBBVQYRGCZGLQFRQCGJCM

それぞれのグループで頻度分析します。

dCodeを使いました。

[1]グループ1を頻度分析した結果

[2]グループ2を頻度分析した結果

[3]グループ3を頻度分析した結果

[1]~[3]の結果とビジュネル表より、次を主張できます。

・グループ1の頻度分析の結果より、平文文字’e’に対応する暗号文文字の候補は、’D’、’L’、’W’⇒それぞれの鍵文字の候補は’Y’、’G’、’R’

・グループ2の頻度分析の結果より、平文文字’e’に対応する暗号文文字の候補は、’U’、’A’、’L’⇒それぞれの鍵文字の候補は’P’、’V’、’G’

・グループ3の頻度分析の結果より、平文文字’e’に対応する暗号文文字の候補は、’F’、’Y’、’G’⇒それぞれの鍵文字の候補は’A’、’T’、’B’

まだ手がかりが少ないし、このままでは誤った方向に進む可能性があります。

これについては、いったん保留しておきましょう。

5:"the"から鍵キーワードを特定する

“LUE"、"WOY"、"DUF"、"DUB"、"KPQ"、"AFH"、"CUZ"の3連字は複数回現れていることは前述しました。

複数回現れるということは、このうちのどれかが"the"に復号される可能性が高いといえます。

[1]"LUE"が"the"に対応すると仮定した場合⇒ここでの鍵は"CMZ"⇒"LUE"の前に45文字(3の倍数)ある⇒鍵キーワードは"CMZ"

[2]"WOY"が"the"に対応すると仮定した場合⇒ここでの鍵は"CGY"⇒(1番目の)"WOY"の前に6文字ある⇒鍵キーワードは"CGY"

[3]"DUF"が"the"に対応すると仮定した場合⇒ここでの鍵は"JMA"⇒"DUF"の前に12文字ある⇒鍵キーワードは"JMA"

[4]"DUB"が"the"に対応すると仮定した場合⇒ここでの鍵は"JMW"⇒"DUB"の前に48文字ある⇒鍵キーワードは"JMW"

[5]"KPQ"が"the"に対応すると仮定した場合⇒ここでの鍵は"QHL"⇒"KPQ"の前に84文字ある⇒鍵キーワードは"QHL"

[6]"AFH"が"the"に対応すると仮定した場合⇒ここでの鍵は"GXC"⇒"AFH"の前に160文字ある⇒3で割ると1余る⇒鍵キーワードは"CGX"

[7]"CUZ"が"the"に対応すると仮定した場合⇒ここでの鍵は"IMV"⇒"CUZ"の前に65文字ある⇒3で割ると2余る⇒鍵キーワードは"UZC"

英単語らしい鍵があれば、それが正しい鍵の可能性が高いといえましたが、すべてランダムな3文字でした。

こうなった場合は、実際に得られた鍵単語で復号して、英文らしいものを探します。

dCodeのビジュネル暗号の暗号化ツールを活用します。

ただし、デフォルト設定だと、Cypherで与えられたビジュネル表と違っています。

Cypherのビジュネル表は最初の行が"BC…ZA"です。一方、dCodeのデフォルトのビジュネル表は最初の行が"AB…Z"です。

これを調整するには、2つの方法があります。

①ツールに与える鍵を+1する。例えば、鍵キーワードが"ABC"なら、ツールには"BCD"を指定する。

②設定のアルファベットの並びを調整する。デフォルトでは"ABCDEFGHIJKLMNOPQRSTUVWXYZ"になっているが、"ZABCDEFGHIJKLMNOPQRSTUVWXY"にする。

今回は後者を選択します。

[1]鍵キーワード:"CMZ"
INFIHITBYTCAAHFEFNYISTINAMQAHFOOPIHYNCLTYPEMRIHEAHBPLMFCRAVJEGYNHCRMYIXFOFKEMBRUUIHEHCQCBYILSPNMTBCTUZLYGAGDACPLSDAGGLCYRQGTBYLFDOLKSIDSYARYRWLGTCLGMYNXYMGWSYJFNFEUSTBMRIDANPIZJIHEMILOAPAJFUJMNNFEMSBDCCNGNQFIWFIULAFWZYMNYFUHBRYBAHBSCVTSQEJYRUREWGPBCRMZUNGCILFYQSNFANRHCQIMCNNGRYJYHCWNMMY

[2]鍵キーワード:"CGY"
ITGINJTHZTIBANGELOYOTTOOASRANGOUQINZNIMTEQESSINFANCPRNFISABKEMZNNDRSZIDGOLLESCRAVINFHIRCHZIRTPTNTHDTAALEHAMEAIQLYEAMHLIZRWHTHZLLEORLSOESEBRESWRHTIMGSZNDZMMXSEKFTGEATTHNROEATQIFKINFMOMOGQAPGUPNNTGESTBJDCTHNWGICGIAMALXZENNEGUNCRECANCSIWTYREPZRASECHPHDRSAUTHCOMFERSTGATSHIRISDNTHREKYNDWTNME

[3]鍵キーワード:"JMA"
BNEBHHMBXMCZTHEXFMRIRMIMTMPTHEHOOBHXGCKMYOXMQBHDTHAILLYCQTVIXGXGHBKMXBXEHFJXMAKUTBHDACPVBXBLRINLMBBMUYEYFTGCTCOESCTGFECXKQFMBXEFCHLJLICLYZKYQPLFMCKZMXGXXFGVLYIYNEXURMBLKICTNOBZIBHDFIKHAOTJENJLGNEXMRUDBVNFGQEBWEBUKTFVSYLGYENHAKYATHALCUMSPXJXKUQXWFIBBKMYNNFVIKYYPLNETNQACPBMBGNFKYIRHBPNLFY

[4]鍵キーワード:"JMW"
BNIBHLMBBMCDTHIXFQRIVMIQTMTTHIHOSBHBGCOMYSXMUBHHTHEILPYCUTVMXGBGHFKMBBXIHFNXMEKUXBHHACTVBBBLVINPMBFMUCEYJTGGTCSESGTGJECBKQJMBBEFGHLNLIGLYDKYUPLJMCOZMBGXBFGZLYMYNIXUVMBPKIGTNSBZMBHHFIOHASTJINJPGNIXMVUDFVNJGQIBWIBUOTFZSYPGYINHEKYETHELCYMSTXJBKUUXWJIBFKMCNNJVIOYYTLNITNUACTBMFGNJKYMRHFPNPFY

[5]鍵キーワード:"QHL"
USTUMWFGMFHOMMTQKBKNGFNBMREMMTATDUMMZHZFDDQRFUMSMMPBQARHFMAXQLMZMQDRMUCTAKYQRPDZIUMSTHEOGMUQGBSAFGQFZNXDUMLRMHDXXRMLUXHMDVUFGMXKRAQYENREDODDFIQUFHZSRMZCMYLKEDXRSTQZGFGADNRMSDUEXUMSYNZAFDMOTGOAZSTQRGNIQOSUZVTUBTUZZMKKLDAZDTGMPDDPMMPEHJFXEQOMDZFQBUBGQDRNGSUONZRDEESTMSFTHEURQZSUDDXKMQISAYD

[6]鍵キーワード:"CGX"
ITHINKTHATICANHELPYOUTOPASSANHOURINANINTERESTINGANDPROFITABLEMANNERSAIDHOLMESDRAWINGHISCHAIRUPTOTHETABLEIAMFAIRLYFAMILIARWITHALLFORMSOFSECRETWRITINGSANDAMMYSELFTHEAUTHOROFATRIFLINGMONOGRAPHUPONTHESUBJECTINWHICHIANALYZEONEHUNDREDANDSIXTYSEPARATECIPHERSBUTICONFESSTHATTHISISENTIRELYNEWTOME

[7]鍵キーワード:"UZC"
QACQUFBOVBPXIUCMSKGVPBVKIZNIUCWBMQUVVPIBLMMZOQUBIUYXYJNPOIIGMTVVUZZZVQKCWSHMZYZHRQUBPPNKOVQYPXAJBOZBHWTLDITAIPMTFAITDTPVZDDBOVTSAWYHAVAALXZLOEYDBPIOZVVKVUTTALGNACMHPBOJZVAIAMQMGQUBUVIWNMIWCCWJVACMZPJQZKADVDCQJCQHIISTHLJVLCCUYZLYIUYAPSBFNMWVZHOMJDXOZZZWCADKVINLNAACIAOPPNQZZVADZLGGUZEAJUL

[6]の以外は、英文らしさはありません。

ゆえに鍵キーワードが"CGX"に確定しました。

復号結果が見やすいように適当に場所に空白と改行を入れると、次のようになります。

I THINK THAT I CAN HELP YOU TO PASS AN HOUR IN AN INTERESTING AND PROFITABLE MANNER SAID
HOLMES DRAWING HIS CHAIR UP TO THE TABLE
I AM FAIRLY FAMILIAR WITH ALL FORMS OF SECRET WRITINGS AND AM MYSELF THE AUTHOR
OF A TRIFLING MONOGRAPH UPON THE SUBJECT IN WHICH I ANALYZE ONE HUNDRED AND SIXTY SEPARATE
CIPHERS BUT I CONFESS THAT THIS IS ENTIRELY NEW TO ME

6:解読すべきキーワードを特定する

“PVLRNRDWF"は"MONOGRAPH"に解読されています。

これが正解のキーワードになります。

解答

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

↓↓下にスクロール↓↓

MONOGRAPH

暗号文の背景

アーサー・コナン・ドイル著『踊る人形 – シャーロック・ホームズの帰還』("The Adventure of the Dancing Men – The Return of Sherlock Holmes")からの2ヶ所抜粋して、つなげたたものが平文メッセージになっています。

“I think that I can help you to pass an hour in an interesting and profitable manner,” said Holmes, drawing his chair up to the table
I am fairly familiar with all forms of secret writings, and am myself the author of a trifling monograph upon the subject, in which I analyze one hundred and sixty separate ciphers, but I confess that this is entirely new to me

ツールで解読する【別解】

1:暗号文の改行を取り除きます。

LAFLUIWOYWPADUFHSNBVSWVNDZQDUFRBPLUYQPLWLPHZRLUEDUBSYMIPRDIJHTYQUCUZYLKFRSKHZBUHULUEKPQFOYLYSSAMWOCWHZOLGDTDDPPOFDDTGOPYUDGWOYOSDRYKVVDVLAULRZYGWPLJZYQKYPTWVLJIAFHHSWOMUVDDAPLMJLUEPVLRNPDWFXWMQAFHZSEQCFAGQDFLJFLHLDSWCLMQLFXUBULBDUBVPVWFQHWYUHRHJGSOCUZZXAGFVLILQVAFDARKPQLZCQAGULJBUCZAMPL

2:今回の暗号文は空白がないので少々骨を折りそうです。

とはいえ、暗号文はそこそこ長いので、頻度分析が有効そうです。

まずはRepeatSeq Analyzerで繰り返し文字列を探索します。

ヒントの1行目にあった"DUF LUE"は、繰り返し文字列を示していたようです。つまり、この繰り返し文字列"DUF"と"LUE"に注目すればよさそうです。それぞれが暗号文のどこに現れるのかをハイライトで示すと以下のようになります。

繰り返し文字列間隔公約数(①除外)
“DUF"153, 5, 15
“LUE"362, 3, 4, 6, 9, 12, 18, 36
“LUE"1322, 3, 4, 6, 11, 12, 22, 33, 44, 66, 132

これらの共通約数は、3のみです。

このことから、鍵長は3と推測(ほぼ確信)できます。

他の繰り返し文字列を含めても、長さ3は8回登場しており最大値であるため、鍵長の候補としてもっとも有力です。

3:Modular Text Dividerで暗号文を3列分割します。

LLWWDHBWDDRLQWHLDSIDHQULRHULKFLSWWODDODOUWORVVUZWJQPVIHWUDLLPRDXQHEFQLLDCQXUDVWHUHSUXFIVDKLQUBZP ←Column 1(96文字)
AUOPUSVVZUBUPLZUUYPITUZKSZHUPOYAOHLTPFTPDOSYVLLYPZKTLAHOVAMUVNWWAZQADJHSLLULUPFWHJOZAVLAAPZALUAL ←Column 2(96文字)
FIYAFNSNQFPYLPREBMRJYCYFKBUEQYSMCZGDPDGYGYDKDARGLYYWJFSMDPJELPFMFSCGFFLWMFBBBVQYRGCZGLQFRQCGJCM ←Column 3(95文字)

3分割後のテキストを頻度分析した結果は以下のとおりです。

4:通常はColumn 1~3に対して、頻度分析して、鍵や平文文字を特定します。

しかし、今回のヒントでは「K、Q、X、J、Zといった出現頻度の低い文字がほとんど現れなくなるような回転を探してみてください」とありました。そこで、この戦法を使って解読を進めてみましょう。

まずはColumn 1に着手します。

Column 1のテキストをベースにして、各文字全体を1つずつシフトしていき、得られた26パターンのテキストを頻度分析して、低頻度文字に着目するわけです。

シフトnシフト後のテキスト文字の出現回数フィルタリング結果
(a) 1文字でも5回以上ならNG[3]テキストの文字数は96文字。5文字のうち一番出やすい’K’でも期待値は96×0.00772≈0.74回程度。そこから考えると、1文字だけが4 … Continue reading
(b) 回数の合計が小さければOK
0LLWWDHBWDDRLQWHLDSIDHQULRHULKFLSWWODDODOUWORVVUZWJQPVIHWUDLLPRDXQHEFQLLDCQXUDVWHUHSUXFIVDKLQUBZPK=2、Q=7、X=3、J=1、Z=2(a)でNG
1MMXXEICXEESMRXIMETJEIRVMSIVMLGMTXXPEEPEPVXPSWWVAXKRQWJIXVEMMQSEYRIFGRMMEDRYVEWXIVITVYGJWELMRVCAQK=1、Q=3、X=10、J=3、Z=0(a)でNG
2NNYYFJDYFFTNSYJNFUKFJSWNTJWNMHNUYYQFFQFQWYQTXXWBYLSRXKJYWFNNRTFZSJGHSNNFESZWFXYJWJUWZHKXFMNSWDBRK=3、Q=4、X=5、J=8、Z=3(a)でNG
3OOZZGKEZGGUOTZKOGVLGKTXOUKXONIOVZZRGGRGRXZRUYYXCZMTSYLKZXGOOSUGATKHITOOGFTAXGYZKXKVXAILYGNOTXECSK=8、Q=0、X=9、J=0、Z=10(a)でNG
4PPAAHLFAHHVPUALPHWMHLUYPVLYPOJPWAASHHSHSYASVZZYDANUTZMLAYHPPTVHBULIJUPPHGUBYHZALYLWYBJMZHOPUYFDTK=0、Q=0、X=0、J=3、Z=5(a)でNG
5QQBBIMGBIIWQVBMQIXNIMVZQWMZQPKQXBBTIITITZBTWAAZEBOVUANMBZIQQUWICVMJKVQQIHVCZIABMZMXZCKNAIPQVZGEUK=3、Q=12、X=3、J=1、Z=9(a)でNG
6RRCCJNHCJJXRWCNRJYOJNWARXNARQLRYCCUJJUJUACUXBBAFCPWVBONCAJRRVXJDWNKLWRRJIWDAJBCNANYADLOBJQRWAHFVK=1、Q=2、X=4、J=13、Z=0(a)でNG
7SSDDKOIDKKYSXDOSKZPKOXBSYOBSRMSZDDVKKVKVBDVYCCBGDQXWCPODBKSSWYKEXOLMXSSKJXEBKCDOBOZBEMPCKRSXBIGWK=13、Q=1、X=7、J=1、Z=3(a)でNG
8TTEELPJELLZTYEPTLAQLPYCTZPCTSNTAEEWLLWLWCEWZDDCHERYXDQPECLTTXZLFYPMNYTTLKYFCLDEPCPACFNQDLSTYCJHXK=1、Q=3、X=3、J=2、Z=4(a)はOK
(b)はscore=13で高すぎるのでNG
9UUFFMQKFMMAUZFQUMBRMQZDUAQDUTOUBFFXMMXMXDFXAEEDIFSZYERQFDMUUYAMGZQNOZUUMLZGDMEFQDQBDGOREMTUZDKIYK=2、Q=8、X=4、J=0、Z=7(a)でNG
10VVGGNRLGNNBVAGRVNCSNRAEVBREVUPVCGGYNNYNYEGYBFFEJGTAZFSRGENVVZBNHAROPAVVNMAHENFGRERCEHPSFNUVAELJZK=0、Q=0、X=0、J=2、Z=3(a)はOK
(b)はscore=5
11WWHHOSMHOOCWBHSWODTOSBFWCSFWVQWDHHZOOZOZFHZCGGFKHUBAGTSHFOWWACOIBSPQBWWONBIFOGHSFSDFIQTGOVWBFMKAK=2、Q=3、X=0、J=0、Z=4(a)はOK
(b)はscore=9で高すぎるのでNG
12XXIIPTNIPPDXCITXPEUPTCGXDTGXWRXEIIAPPAPAGIADHHGLIVCBHUTIGPXXBDPJCTQRCXXPOCJGPHITGTEGJRUHPWXCGNLBK=0、Q=1、X=12、J=3、Z=0(a)でNG
13YYJJQUOJQQEYDJUYQFVQUDHYEUHYXSYFJJBQQBQBHJBEIIHMJWDCIVUJHQYYCEQKDURSDYYQPDKHQIJUHUFHKSVIQXYDHOMCK=3、Q=13、X=2、J=10、Z=0(a)でNG
14ZZKKRVPKRRFZEKVZRGWRVEIZFVIZYTZGKKCRRCRCIKCFJJINKXEDJWVKIRZZDFRLEVSTEZZRQELIRJKVIVGILTWJRYZEIPNDK=10、Q=1、X=1、J=5、Z=12(a)でNG
15AALLSWQLSSGAFLWASHXSWFJAGWJAZUAHLLDSSDSDJLDGKKJOLYFEKXWLJSAAEGSMFWTUFAASRFMJSKLWJWHJMUXKSZAFJQOEK=5、Q=2、X=3、J=9、Z=2(a)でNG
16BBMMTXRMTTHBGMXBTIYTXGKBHXKBAVBIMMETTETEKMEHLLKPMZGFLYXMKTBBFHTNGXUVGBBTSGNKTLMXKXIKNVYLTABGKRPFK=9、Q=0、X=8、J=0、Z=1(a)でNG
17CCNNUYSNUUICHNYCUJZUYHLCIYLCBWCJNNFUUFUFLNFIMMLQNAHGMZYNLUCCGIUOHYVWHCCUTHOLUMNYLYJLOWZMUBCHLSQGK=0、Q=2、X=0、J=3、Z=3(a)はOK
(b)はscore=5
18DDOOVZTOVVJDIOZDVKAVZIMDJZMDCXDKOOGVVGVGMOGJNNMROBIHNAZOMVDDHJVPIZWXIDDVUIPMVNOZMZKMPXANVCDIMTRHK=3、Q=0、X=3、J=4、Z=8(a)でNG
19EEPPWAUPWWKEJPAEWLBWAJNEKANEDYELPPHWWHWHNPHKOONSPCJIOBAPNWEEIKWQJAXYJEEWVJQNWOPANALNQYBOWDEJNUSIK=4、Q=3、X=1、J=7、Z=0(a)でNG
20FFQQXBVQXXLFKQBFXMCXBKOFLBOFEZFMQQIXXIXIOQILPPOTQDKJPCBQOXFFJLXRKBYZKFFXWKROXPQBOBMORZCPXEFKOVTJK=7、Q=10、X=13、J=3、Z=3(a)でNG
21GGRRYCWRYYMGLRCGYNDYCLPGMCPGFAGNRRJYYJYJPRJMQQPURELKQDCRPYGGKMYSLCZALGGYXLSPYQRCPCNPSADQYFGLPWUKK=3、Q=5、X=1、J=4、Z=1(a)でNG
22HHSSZDXSZZNHMSDHZOEZDMQHNDQHGBHOSSKZZKZKQSKNRRQVSFMLREDSQZHHLNZTMDABMHHZYMTQZRSDQDOQTBERZGHMQXVLK=4、Q=9、X=2、J=0、Z=13(a)でNG
23IITTAEYTAAOINTEIAPFAENRIOERIHCIPTTLAALALRTLOSSRWTGNMSFETRAIIMOAUNEBCNIIAZNURASTEREPRUCFSAHINRYWMK=0、Q=0、X=0、J=0、Z=1(a)はOK
(b)はscore=1で全体でもっとも可能性が高い!
24JJUUBFZUBBPJOUFJBQGBFOSJPFSJIDJQUUMBBMBMSUMPTTSXUHONTGFUSBJJNPBVOFCDOJJBAOVSBTUFSFQSVDGTBIJOSZXNK=0、Q=3、X=2、J=12、Z=2(a)でNG
25KKVVCGAVCCQKPVGKCRHCGPTKQGTKJEKRVVNCCNCNTVNQUUTYVIPOUHGVTCKKOQCWPGDEPKKCBPWTCUVGTGRTWEHUCJKPTAYOK=12、Q=4、X=0、J=2、Z=0(a)でNG

なお、シフト処理にはCaesar Cipher Wheel Toolを利用しました。

以上より、Column 1のテキストの平文は、シフト23の文字列である可能性が高いです。

IITTAEYTAAOINTEIAPFAENRIOERIHCIPTTLAALALRTLOSSRWTGNMSFETRAIIMOAUNEBCNIIAZNURASTEREPRUCFSAHINRYWM ←平文
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ←鍵文字(分割後なので、すべて同一文字)
----
LLWWDHBWDDRLQWHLDSIDHQULRHULKFLSWWODDODOUWORVVUZWJQPVIHWUDLLPRDXQHEFQLLDCQXUDVWHUHSUXFIVDKLQUBZP ←暗号文

Vigenere Cipher Toolの「タブラレクタ研究」タブにある、鍵文字機能を活用します(ヴィジュネル表は「A=1」を利用)。

1文字だけに注目すれば十分ですので、以下のように計算します。

鍵文字=findKey(平文文字’I’, 暗号文文字’L’)=findKey(12, 9)=12-9=3→’C’

よって、鍵キーワードの1文字目は’C’と推測できました。

5:ステップ4と同様の手法を、Column 2とColumn 3のテキストにも適用して鍵文字を推測していきます。

LLWWDHBWDDRLQWHLDSIDHQULRHULKFLSWWODDODOUWORVVUZWJQPVIHWUDLLPRDXQHEFQLLDCQXUDVWHUHSUXFIVDKLQUBZP ←Column 1(96文字)
AUOPUSVVZUBUPLZUUYPITUZKSZHUPOYAOHLTPFTPDOSYVLLYPZKTLAHOVAMUVNWWAZQADJHSLLULUPFWHJOZAVLAAPZALUAL ←Column 2(96文字)
FIYAFNSNQFPYLPREBMRJYCYFKBUEQYSMCZGDPDGYGYDKDARGLYYWJFSMDPJELPFMFSCGFFLWMFBBBVQYRGCZGLQFRQCGJCM ←Column 3(95文字)

手動でやるのは大変だったことを実感しましたので、Alphabet Shift Spectrumというツールを用意しました。

[1]Column 2の場合

TNHINLOOSNUNIESNNRIBMNSDLSANIHRTHAEMIYMIWHLROEERISDMETAHOTFNOGPPTSJTWCALEENENIYPACHSTOETTISTENTE ←平文(シフト19のテキスト)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ←鍵文字(分割後なので、すべて同一文字)
----
AUOPUSVVZUBUPLZUUYPITUZKSZHUPOYAOHLTPFTPDOSYVLLYPZKTLAHOVAMUVNWWAZQADJHSLLULUPFWHJOZAVLAAPZALUAL ←暗号文

Vigenere Cipher Toolの「タブラレクタ研究」タブで、鍵文字を計算します。

鍵文字=findKey(平文文字’T’, 暗号文文字’A’)=findKey(20, 1)=1-20=-19=-19+26=7→’G’

よって、鍵キーワードの2文字目は’G’と推測できました。

[2]Column 3の場合

HKACHPUPSHRANRTGDOTLAEAHMDWGSAUOEBIFRFIAIAFMFCTINAAYLHUOFRLGNRHOHUEIHHNYOHDDDXSATIEBINSHTSEILEO ←平文(シフト2のテキスト)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ←鍵文字(分割後なので、すべて同一文字)
----
FIYAFNSNQFPYLPREBMRJYCYFKBUEQYSMCZGDPDGYGYDKDARGLYYWJFSMDPJELPFMFSCGFFLWMFBBBVQYRGCZGLQFRQCGJCM ←暗号文

Vigenere Cipher Toolの「タブラレクタ研究」タブで、鍵文字を計算します。

鍵文字=findKey(平文文字’H’, 暗号文文字’F’)=findKey(8, 6)=6-8=-2=-2+26=24→’X’

よって、鍵キーワードの3文字目は’X’と推測できました。

よって、鍵キーワードは"CGX"と特定できました。

6:鍵キーワードを特定したので、後は暗号文を復号するのみです。

Vigenere Cipher Toolで復号すると以下のようになります。

復号結果は以下のとおりです。

ITHINKTHATICANHELPYOUTOPASSANHOURINANINTERESTINGANDPROFITABLEMANNERSAIDHOLMESDRAWINGHISCHAIRUPTOTHETABLEIAMFAIRLYFAMILIARWITHALLFORMSOFSECRETWRITINGSANDAMMYSELFTHEAUTHOROFATRIFLINGMONOGRAPHUPONTHESUBJECTINWHICHIANALYZEONEHUNDREDANDSIXTYSEPARATECIPHERSBUTICONFESSTHATTHISISENTIRELYNEWTOME

全体を復号できましたが、ここから正解キーワードを抽出しなければなりません。

正解キーワードは"PVLRNPDWF"の部分に隠れています。

LAFLUIWOYWPADUFHSNBVSWVNDZQDUF
CGXCGXCGXCGXCGXCGXCGXCGXCGXCGX
...
PVLRNPDWFXWMQAFHZSEQCFAGQDFLJF
---------
CGXCGXCGXCGXCGXCGXCGXCGXCGXCGX
...
LZCQAGULJBUCZAMPL
CGXCGXCGXCGXCGXCG

対応する鍵は"CGXCGXCGX"です。

局所的にツールで復号してしまいましょう。

正解キーワードである文字列"MONOGRAPH"を得られました。

解読手法をより知りたい方へ

参考図書

カシスキー検査については何度か取り上げています。

『暗号技術のすべて』P.75-

『Pythonでいかにして暗号を破るか』P.379-

文字の間隔(スペーシング)の数え方を知りたい方にもどうぞ。

おわりに

以上で多換字式暗号ステージ(ルーム 04)はすべてクリアしました。

References

References
1 本当は5連字が望ましいですが、4連字さえも見つかりませんでした。『暗号技術のすべて』P.77
2 'l’のインデックスの差分を取ると計算できます。"LUE"間の文字数をカウントして33と判断しないようにしてください。
3 テキストの文字数は96文字。5文字のうち一番出やすい’K’でも期待値は96×0.00772≈0.74回程度。そこから考えると、1文字だけが4 回以上出るのはかなりまれ

Cypher古典暗号Cypher

Posted by ipusiron