たった一つの鍵
「ふむ、なるほど。これがその奇妙な暗号ってわけだね」
午前中の新歓プログラムが終了してから、真奈美らは一度教室に戻り来也に事情を説明した。解読の手掛かりとなる鍵を見つけるにはパソコンを使うのが手っ取り早いだろうという結論に達したからだ。
「最初は古典的な解き方でいけると思ったの。ほら、アルファベットを前後に数文字ずつずらすってやつ」
「典型的なシーザー暗号だね。かの有名なユリウス・カエサルも使っていたという。とすると、復号には“何文字”ずらしたかという数字が鍵になるわけだけど、暗号文の中にヒントは書かれてなかったのかい?」
「うん、多分……。だから一から順番に試してみたんだけど、その、途中で面倒くさくなっちゃって……」
「あはは。まあ、アルファベットは二十六文字だから、暗号化の鍵も0~25の二十六通りしかないけれど、全部自力でやろうと思ったらかなり時間はかかるだろうね。了解。こっちのパソコンで試してみるよ」
来也はつい先月出たばかりの最新型ノートパソコンを立ち上げる。起動やページ表示速度に優れ、プリインストールされているソフトのラインナップもけっこう豪華であるらしい。来也はそれらを自己流にカスタマイズし、すでに最適な環境を作り上げていた。すなわちそれは、“セキュリティ殺し”に特化した仕様に他ならない。
来也は無線マウスを操り、デスクトップに並んだショートカットの一つをダブルクリックした。中央に出現したウインドウを無数の記号が流れた後、編集画面のようなものが表示された。
和英訳のサイトに似ているな、というのが真奈美の第一印象だった。ページの左右にテキストボックスがあり、左側には<暗号文>、右側には<平文>と書かれている。恐らく、解読したい暗号文を打ち込んだ後、中央に設置されたボタンをクリックすれば自動的に平文に直してくれるのだろう。
しかし一口に暗号と言っても、その種類は実に様々だ。解読するためにはどの暗号アルゴリズムを使用するのか指定する必要がある。そのための拡張機能が画面上部のツールバーというわけだ。
「これは俺と先輩が共同で開発したやつでね。現代の暗号技術を崩すのにもっとも有効なアプリだよ。暗号化でよく使われる排他的論理和(XOR)や余り(mod)などの関数も一纏めにしてあるから、暗号を作る側としても活用できるけどね。ま、詳しい説明はひとまず置いとくとして、まずはその暗号文を打ち込んでみようか」
<暗号文>
HBNMZWQAGWQJBNL! KBAWZXWFXQXHQJPX!
CTKFBNQKBAVBJNAL?
JUKBAYXHBEXWEXEYXZBUBAZHGAY,
CXWZXCWJQJNMUBZKBAJNQTXQTZXXQCBHGWLL.
「んで、シーザー暗号を選んだ後、鍵となる数字を入力する、っと。そうだな、まずは1を入れてみようか」
「アルファベットを1文字ずつずらすってことだね!」
「その通り。じゃあ、実行してみるよ」
<種類:シーザー暗号> <鍵:1>
<平文>
ICONAXRBHXRKCOM! LCBXAYXGYRYIRKQY!
DULGCORLCBWCKOBM?
KVLCBZYICFYXFYFZYACVCBAIHBZ,
DYXAYDXKRKONVCALCBKORUYRUAYYRDCIHXMM.
「うーん、やっぱり意味不明よね……。ほかの数字も頼める?」
「お安いご用さ」
来也は鍵の値を2~25まで変えて試してみたが、やはり意味の通る文章は発見できなかった。
「ってことは、これはシーザー暗号じゃないということよね。なら換字式かしら?」
「換字式ってなに? 真奈美ちゃん」
「簡単に言えば、平文のアルファベットを別の文字に変換する暗号のことよ。よく知られている方法としてはキーボードに対応させたやつじゃないかしら。ほら、「A」なら「ち」と言うふうに」
「あ、それならあたしも知ってる! よく推理小説とかで見かけるもん」
希も手を叩いて頷く。
「うん。俺も単一換字暗号だと思うよ。希ちゃんの話によれば、この暗号を作った連中は俺たちが解けるかどうか試している感じだったらしいね。なら、時間さえあれば誰でも解けるようなシーザー暗号はまず選ばないだろう。その点、単一換字暗号は違う」
来也は指を一本のばす。
「まず、アルファベットに限って言えば、シーザー暗号の鍵の総数は26だ。この二十六通りすべてを順番に試していく方法を“ブルート・フォース・アタック”(全数探索、総当たり法、しらみつぶし法)と言うんだけど、これは鍵空間(すべての鍵の集合)が大きければ大きいほど解読が困難になるんだ。そこで問題。単一換字暗号の鍵の総数がいくつになるか想像できるかい?」
急に話を振られ、真奈美は慌てて頭の中に計算式を広げる。
「ええと……まず平文で使われるアルファベットaには、A~Zまでのいずれかが対応するから二十六通り。次のbに対しては、aの暗号化に用いた文字を除いた二十五文字のどれかが対応するはず。そうやって考えていくと総数は……」
26×25×24×…×3×2×1=403291461126605635584000000
「えっ!? そんなに多いの!?」
予想外の桁数に希は目を丸くする。
「そう。仮に1秒間に10億個のスピードで調べたとしても、すべての鍵を調べるのに120億年以上の時間がかかってしまうんだ。佐倉さんが言ったように、なにか“これだ!”という当たりをつけて挑まないとね」
さて、と来也は席を横にずらし、二人にキーボードの配置が見えるようにした。
「じゃあ、本当にキーボードに対応させた換字暗号なのか、いっちょ確かめてみますか」
<種類:単一換字暗号> <換字表:キーボード>
<平文>
くこみもつてたちきてたまこみり! のこちてつさてはさたさくたませさ!
そかのはこみたのこちひこまみちり?
まなのこちんさくこいさていさいんさつこなこちつくきちん、
そさてつさそてまたまみもなこつのこちまみたかさたかつささたそこくきてりり。
「うーん、やっぱり意味不明ね……。キーボードに対応させるという考えは間違っていたか……」
ま、確かにこれも安易な解き方であることは否めないけど、とポジティブに考え、真奈美はすぐさま発想を切り替える。がむしゃらに試すやり方はスマートではない。過去に見た暗号の中でこれと同じ種類のものはなかったか。あるいは解読方法で参考になりそうなものはないか、記憶の隅々まで洗い直してみる。
「……ん? そういえば……」
昔、なにかの本で読んだことがある。
単一換字暗号の攻略法。膨大な鍵空間の中から正解を探し出すその方法を。あれは確か……。
「そうか! 『黄金虫』よ!」
真奈美は思わず大声で叫ぶ。その顔は100W電球のように輝いているが、残る二人はぽかんとしている。
「なに、『黄金虫』って?」
来也の分も含めて希が訊く。
「えっと、エドガー・アラン・ポーという作家は知ってるでしょ? 彼の書いた作品の中に『黄金虫』という短編があるんだけど、そこで用いられているのがこの換字式暗号なの。暗号を用いた推理小説の草分けとも言われている有名な作品だから、希ちゃんも是非読んでみるといいわ」
「ああ、そう言われれば、俺も先輩からちょこっと聞いたことがあるかも。もっとも知名度で言えば、コナン・ドイルの『踊る人形』のほうが上かもしれないけどね」
ま、いずれにせよ、と来也は姿勢を正しながら続けた。
「両者とも“頻度分析”で解読するという点では同じだ。すなわち、この暗号文に使われている文字、あるいは文字列の出現頻度から調べていくのが第一歩だな」
来也は再びパソコンに向き直り、ツールバーのアイコンの中から頻度分析をクリックする。
「こいつをアルファベット毎に設定して……っと。よし、できた!」
エンターキーを叩く小気味よい音と同時に、結果が画面に表示された。
<種類:単一換字暗号> <頻度分析:アルファベット>
<分析結果>
X, B……13個
Q……9個
W, A……8個
Z, J……7個
N……6個
H, K……5個
C, L……4個
Y, U, T, G, E……3個
F, M……2個
V, P……1個
「さて、ここからどうするか分かるかい、佐倉さん」
「うん。英語の一般的な文章の場合、アルファベットで最も出現頻度が高いのはeよね。なら、XかBをeと仮定して取りかかるのが正道でしょう。そうね、まずはX=eとして変換してみましょうか」
<種類:単一換字暗号> <換字表:X=e>
<平文>
HBNMZWQAGWQJBNL! KBAWZeWFeQeHQJPe!
CTKFBNQKBAVBJNAL?
JUKBAYeHBEeWEeEYeZBUBAZHGAY,
CeWZeCWJQJNMUBZKBAJNQTeQTZeeQCBHGWLL.
「次に解読しやすそうなのは……QTeQTZeeかしら。これを単語に区切るとしたら、QTe QTZeeでしょう。そして3連接文字の中で最も出現頻度が高いのはtheだから、QTe=theと仮定すると、Q=t, T=hとなるわね。その直後のQTZeeはthZeeとなるから、知ってる単語で確率の高そうなのはthreeって所かしら。つまり、Z=rってことよね」
「うん、それが正解だろう。じゃあ、条件を追加してもう一発変換っと」
<換字表:X=e, Q=t, T=h, Z=r>
<平文>
HBNMrWtAGWtJBNL! KBAWreWFeteHtJPe!
ChKFBNtKBAVBJNAL?
JUKBAYeHBEeWEeEYerBUBArHGAY,
CeWreCWJtJNMUBrKBAJNthethreetCBHGWLL.
「所々に、reという英語らしい連接文字が見られるし、第二ステップはこれで良さそうだね。えっと、次は……」
「あ、あたし分かった! ほら、文の最初のほう、しかも二単語目あたりにWerって文字列が二回登場してるでしょ。これはareじゃないかな」
「なるほど。希ちゃんの説が正しいとすると、CeWreはCe areとなるから、S+Vの構文を考えると、Ce=We、すなわち、C=wが正しそうね。これでもう一回変換してみましょう」
<換字表:X=e, Q=t, T=h, Z=r, W=a, C=w>
<平文>
HBNMratAGatJBNL! KBAareaFeteHtJPe!
whKFBNtKBAVBJNAL?
JUKBAYeHBEeaEeEYerBUBArHGAY,
wearewaJtJNMUBrKBAJNthethreetwBHGaLL.
「ふむ。最後の文に注目すると、we are waJtJNM……となってるよね。これは”be動詞+~ing”の現在進行形を表しているんじゃないかな。WaJtJNM=waitingと解釈すれば、すっきり筋が通ると思う」
「あれ? でもそれだとN=nとなって暗号化してないってことにならない?」
「いや、そうでもないよ、希ちゃん。換字表を完全にランダムに決めているのであれば、同じ文字に変換されることも珍しくない。むしろ、同じ文字に変換されないような換字表を作ると、暗号としては弱くなっちゃうんだよ。解読者はA=aに変換されないことを知っているわけだから、鍵空間が小さくなっちゃうんだ」
「あ、そっか。奥が深いんだね」
「ま、それでも膨大な数であることには変わらないんだけどね。さて、じゃあ、新たにJ=i, N=n, M=gとして解読してみますか」
<換字表:X=e, Q=t, T=h, Z=r, W=a, C=w, J=i, N=n, M=g>
<平文>
HBngratAGatiBnL! KBAareaFeteHtiPe!
whKFBntKBAVBinAL?
iUKBAYeHBEeaEeEYerBUBArHGAY,
wearewaitingUBrKBAinthethreetwBHGaLL.
「見た感じ、最後の文に関してはほぼ解読が済んでるね。ここから攻めてみますか」
「そうね。単語に区切って見やすくするなら、we are waiting UBr KBA in the three twBHGaLL.って所かしら。”wait for~”で“~を待つ”という意味だから、U=f, B=oと仮定しましょう。すると直後のKBAはKoAとなって、これはきっとyouね。あなた方を待っています、というふうに訳せる」
「じゃあ、その後が場所を示しているんだね! in the three-two HGaLLだから、考えられるのは“3年2組の教室で”じゃないかな」
「だんだん新歓チラシっぽくなってきたね。ええと、今のをまとめると、K=y, A=u, H=c, G=l, L=sだ。こいつらを考慮して変換すると――」
<換字表:X=e, Q=t, T=h, Z=r, W=a, C=w, J=i, N=n, M=g, U=f, B=o, K=y, A=u, H=c, G=l,L=s>
<平文>
congratulations! youareaFetectiPe!
whyFontyouVoinus?
IfyouYecoEeaEeEYerofourcluY,
wearewaitingforyouinthethreetwoclass.
「単語に区切って見やすくしようか」
Congratulations! You are a FetectiPe!
Why Font you Voin us?
If you YecoEeaEeEYer of our cluY,
we are waiting for you in the three-two class.
「さあ、ラストスパートだ。まず二行目はWhy don’t you~の構文が使われているに違いない。とすると、F=dだ」
「その後のVoinはきっとjoinだね! だから、V=jっと」
「F=dなら、二文目のラストはdetectiPeになるから、これはdetective=探偵って意味ね!」
「問題は三行目。中間はどう区切ればいいのかまだ分からないけど、ラストのcluYはclub=部活で決まりだ」
「じゃあ、Y=bを代入すると、becoEeaEeEberになるから、これはきっとbecome a memberね。つまり、E=mで決まり!っと」
「――ってことは……」
「うん、解読終了。これが正しい平文さ」
<平文>
Congratulations! You are a detective!
Why don’t you join us?
If you become a member of our club,
we are waiting for you in the three-two class.
おめでとう! 君は探偵だ!
僕らと楽しまないかい?
もし君が入部希望者ならば、3年2組の教室で待っているよ。
「やったー! 解けたー!」
希はぴょんぴょん飛び跳ねて、全身で喜びを表す。真奈美は即座にビデオカメラを取り出し、その様子を撮影し始めた。来也は真奈美を視界から追い出し、ほっと一息。
「ふぅー。なにはともあれ、今回は俺たち黒猫部の勝利かな。まだやるべきことが残っているけど」
「そうね。じゃあ、今日の放課後に会いに行ってみましょうか。これを作った謎の二人組に」