【ゴールデンウィークに伴うサポートおよび商品出荷に関するお知らせ】

解読の手引 ~The CODE~

筆者:GREENER
Steam プロフィール

今回ご紹介するのはゲームではない。幾つかのゲームで使えるかもしれない知識である。

コナン・ドイル作、言わずと知れたシャーロック・ホームズの「踊る人形」。またその元ネタであると言われるエドガー・アラン・ポー作「黄金虫」。この二作の短編小説はどちらも暗号を主題にしており、作中において解読に至るその思考の筋道が詳述されている。ならばそれをそっくり真似して謎解きゲーに挑めないだろうか、というのが今回のテーマだ。ミステリ万歳。筆者のピンク色の脳細胞(※至って普通の意)も糖分を寄越せと歓喜の大ブーイングである。ドサクサに紛れてなに言ってるんだろうコイツ。

なお、この記事で紹介するのは答えではなく解き方ではあるのだが、その性質上例題として取り上げるゲームのネタバレが避けられない。一見単なる模様に見えるというケースでは、それが暗号であると示唆することが既にネタバレである。

なのでこの時点でタイトルを挙げるのも少々憚られるのだが、しないよりマシなのでお断りしておく。FEZ並びにEnvironmental Station Alphaを今後自力で完全クリアしたいと思っている人はこの時点で読むのを止めること。

ちなみに「踊る人形」と「黄金虫」のネタバレについては、どちらも著作権が失効するほどの古典であるためご容赦願いたい。

さて、一口に暗号と言っても種々あるが、ここで取り上げるのはごくシンプルなもの。平文(※)の文をそれぞれ違う文字ないし記号に置きえただけの、その名もズバリ換字暗号だ。正確には平文の文字と暗号文のそれが一対一で対応している単一換字式暗号という奴である。そうでない場合に関しては素人の手には負えないのでこの際すっぱり忘れることにする。

※暗号化される前の元の文章

ともかく、この手の暗号は存在を意識しつつゲームをするとしばしば目に留まる。いたずらに幾つもタイトルを挙げてネタバレ被害を増やす愚は避けるが、例えばFEZのこれがそうだ。

The CODE

復号(※)済の答えを求めることは容易いが、これもパズルだと捉え、名探偵を気取って謎解きに挑むのも一興だろう。ペルシャ製の室内履きにシガレットチョコを仕舞い、ハッカパイプを咥えれば準備万端だ。そんなわけで小説からの引用を交えつつ、その方法をご紹介したい。

※暗号化の対義語 なぜか復号化とは言わない模様

The CODE

サンプルはドット絵メトロヴァニアゲー、Environmental Station Alphaのこれ。どう見ても左詰めの横書きで、メッセージ窓に表示するくらいだから意味を持つ文章であることを隠してもいない。FEZのと比べて読む順番にも迷わないし、単語と単語の間にスペースまであって大変解りやすい。THISISAPENと詰めて書かれるとそれだけで難易度が上がるのだ。

ではまず大原則から抑えて置こう。

いまの場合では――秘密文書の場合では実際すべてそうだが――第一の問題は暗号の国語が何語かということなんだ。なぜなら、解釈の原則は、ことに簡単な暗号となると、ある特定の国語の特質によるのであるし、またそれによって変りもするんだからね。《黄金虫より抜粋》

お手本の二作はいずれも英語の場合の話なので、この際だから英語以外の可能性もバッサリなかったことにする。手法自体は応用が効くようだが、筆者のスペックが足りないのである。

僕の最初にとるべき手段は、いちばん多く出ている字と、いちばん少ししか出ていない字とを、つきとめることだった。《黄金虫より抜粋》

ご存じの通り、Eというのは英語のアルファベットで最もよく使われ、その頻度は、どんな短文にもたくさん見つかるほどです。《踊る人形より抜粋》

最初はとにかく記号毎に使用頻度を数えればいいのだ。わりと体力勝負な気もするが、考えてみればホームズ先生は曲がった鉄の火掻き棒を素手でまっすぐにできる怪力の持ち主だった。

The CODE

というわけでさっくり数えてみた。明らかに飛び抜けて多い記号がある。

さて、英語でもっともしばしば出てくる字はeだ。それから a o i d h n r s t u y c f g l m w b k p q x z という順序になっている。しかしeは非常に多いので、どんな長さの文章でも、一つの文章にeがいちばんたくさん出ていないということは、めったにないのだ。《黄金虫より抜粋》

しかしここからが本当に難しいところです。英語の語順では、Eのあとに決まってこれが来るというものがない。ある印刷用紙一枚の文章でとった平均順位も、短い文の中では逆転するかもしれない。およそのことを言えば、T、A、O、I、N、S、H、R、D、Lというのが出やすい順だ。だが、T、A、O、Iなどはたいへん拮抗している。《踊る人形より抜粋》

若干意見が分かれているが、AOIDHNRST辺りまでが上位グループという認識でいいだろう。

The CODE

いちばん多い記号は8だから、まずそれを普通のアルファベットのeと仮定して始めることにしよう。この推定を証拠だててみるために、8が二つ続いているかどうかを見ようじゃないか。――なぜかというと、英語ではeが二つつづくことがかなりの頻度であるからだ、――たとえば、‘meet’ ‘fleet’ ‘speed’ ‘seen’ ‘been’ ‘agree’などのようにね。《黄金虫より抜粋》

ホームズ先生の場合は文章が短すぎて、*E*E*という単語を取り敢えずneverと仮定して進めていたが、サンプルではどうだろう。

The CODE

ふむ、一箇所だけ連なっている箇所が見つかる。

そこで、8をeと仮定してみよう。さて、英語のすべての語のなかで、いちばんありふれた語は、‘the’だ。だから、最後が8になっていて、同じ配置の順序になっている三つの記号が、たびたび出ていないかどうかを見よう。そんなふうに並んだ、そういう文字がたびたび出ていたら、それはたぶん、‘the’という語をあらわすものだろう。《黄金虫より抜粋》

「踊る人形」では人形が持つ旗が単語の区切りだったが、「黄金虫」ではどこまでが一単語なのか判らないためtheを取っ掛かりにしている。サンプルでは三文字の単語を探せばいいのだから楽なものだ。

The CODE

theらしき単語の登場回数もさることながら、TとHに当たるであろう記号の使用回数も多い。もうこの三文字は確信を持って置き換えてしまおう。

The CODE

でこうなる。ここから先は文章に依存するので臨機応変に行こう。

The CODE

まずは文字数の少ない単語から攻めてみる。
最上段、Tで始まる二文字なんてTVの様な略語を除けばtoでいいだろう。Oの使用頻度からみても蓋然性は高い。すると二段目のもO*と知れる。orの線も捨てがたいが、そうすると三段目以降の文頭で*Rという二文字が連発されることになってしまうのでonとしておく。

The CODE

三段目以降のはそれっぽく見えるという理由でinとしておいた。O・N・Iがいずれも見たまんま過ぎて不安になるが、矛盾したらその時はその時だ。

The CODE

一段目の五文字の単語、ここまで埋まっていたら何も考えずにenterにしていいだろう。すると二段目のもうひとつのO*はorでもonでも無くなったので、ofとしておく。

The CODE

六段目のはrootもroofもありえなくなったので、roomに決まる。この調子でどんどん行こう。

The CODE

さて上位グループの記号がまだ二つ残っているが、都合よくそれを両方使う三文字の単語と、M**という単語が二箇所ずつ見つかる。上位グループの残りはA・D・Sだけである。前者はandにしておけば間違いなさそうだ。すると後者はMA*となるので、madはもう成立しないしmayにでもしておこう。

The CODE

これで半分以上の文字を決めたが、特に不整合は見つからない。

The CODE

次に手を付けやすいのはこの辺か。二段目*Eはまだ使っていない文字からしてbeかな。一段目四段目は全て同じ文字を入れて単語を成立させる。となるとそこそこ頻度も高いしSだろう。

The CODE

最下段はON*Yまでわかっているのだからonlyでいい。すると五段目もTEM*LEまで決まるのでまあtempleだろう。うむうむ。

The CODE

二段目のFO*NDはfoundで、六段目はforgottenだろう。一二段目のは色んな文字で単語が成立しそうだが、最下段からCと知れる。

The CODE

ここまで来てしまえば勝ったも同然である。残りを埋めたらあとは機械翻訳にぶん投げるだけだ。答え合わせは実際にゲームで指示に従ってみればいいのだ。

ちなみに最初以外はもっと適当でも何とかなる。本稿着手前に試しに一度やってみた時は、THEの三文字を埋めたあと一行目の*T○●□ ○●□を勘だけでいきなりstand andにしてみたりしたがちゃんと解けた。

この手法は頻度分析と言い、何世紀も前から存在するらしいがその実効性はご覧の通り。ゲームではこの後露骨なヒントというか、何文字かは対訳表が手に入ってしまうのだが、そんなものなくても解読はできるのだ。Eとtheの見当をつけることさえ覚えれば、あなたも今日から暗号解読者と書いてルビは《コードブレイカー》だ。この無駄にかっこいい響きの肩書を手に入れてみてはいかがだろうか。知識はいくらあっても荷物にはならないのだから。

PROスチーマーのSteamグループが出来ました!よろしければ参加をお願いします!