89 破れない暗号
「……気に入らないわ! どーして王国は降伏してこないわけ⁉」
リヴィゼは髪を掻きむしりながら、どんどんと足踏みをする。
この一か月の間、王国に対する弱体化工作は順調に進んでいた。
急速に冷え込む王国経済に対し、急成長を遂げるゲティアから潤沢な資源を供給される魔族軍。
その差は歴然で、魔族軍は王都を包囲し、エンデ東部にある主港の海上封鎖にまで成功していた。
「まだ降伏する段階じゃない、という判断なんじゃないですか。現状は魔族軍が圧倒的に優勢なのは言うまでも無いですが……このまま強行突破を仕掛けるとなると、こちらも相応に苦戦するでしょうし」
「そんなこと言ったって、このまま引きこもってても死を待つだけじゃない! だからあいつらは時間稼ぎをして、何かを待ってると思うのよね」
「……待ってる?」
俺の言葉にリヴィゼはソファから少し腰を浮かせると、口元に手を組んで。
「どーも最近、エンデ東の主港によく小さな船が拿捕されるのよ。真夜中に、海上封鎖の目をすり抜けるようにして、出ていこうとする船が」
「国外逃亡的なやつですか? よくそんな、大胆なことを……」
「エンデの人間族どもが逃亡したとして、どこに行けるってのよ。奴らの目的はそんなんじゃなくて、他国へ文書を送り届けること」
……そうか。
ゲティアに住んでいると、他の国は全て単一種族だってことをすぐに忘れる。
目の前には魔族の王女がいるし、その隣には人間族のシャノンさんが座ってるし、すぐそこで獣人のニーアさんがお茶を注いでるし。
「でも……王国も思い切った手を打つんですね。他国への文書とか、鹵獲されたら狙いもバレるじゃないですか」
「……こいつが破れない暗号を作っちゃったからでしょうが。あの暗号が向こうも使うようになってから、情報の優位性は完全に崩れちゃってんのよ」
リヴィゼはニーアさんの方を睨みながら、お茶の注がれたカップをすする。
シャノンさんと繋いだ手を使えず、不便そうにしながら。
「そのせいで王国は捨て身で数を打って来てんのよ。そのうちのどれかが海上封鎖を突破すれば良い、って考えで。ウチの兵士は夜行性の奴も多いから、なるべく監視の目は途切れさせないようにしてるつもりだけど……限界があるのよね」
「……その文書は、見せていただけるのですか」
と聞いたのは、俺ではない。
話を聞きながらお茶を注いでいたニーアさんだ。
「あぁ? まぁ……船にあるわよ。王国が馬鹿みたいに数打つもんだから、本当にたんまりね。でも何に使うわけ?」
リヴィゼがニーアを見上げながら首をかしげると。
「解読でございます」
「……はぁ?」
予想外の返答に、魔族の王女様は固まる。
「か、解読方法が分かったっての⁉」
「えぇ……はい。方法自体は、とっくに」
「じゃ、じゃあ、何で隠してたのよ! そんな情報、今世界中の人たちが欲しがってるのに……!」
リヴィゼが弾かれたように立ち上がる。
隣で手を繋いでうずくまっていたシャノンさんの手が、クマの人形みたいにぷらんと持ち上がった。
「なにぶん長い文書で無いと効力を発揮致しませんので。オーブ通信では短文ばかりが交わされる故、効力を発揮する場面が無く……」
「ご、ごちゃごちゃ言ってないで早く! 行くわよ! こら、シャノンも! 落ち込んでる場合じゃないわ!」
名前を呼ばれたシャノンさんはゆっくりと顔を上げ……
そして、興奮した様子の王女様に、ずるずると引きずられていくことになった。
――――――――――――
「単語を鍵にしたこの新たな暗号は、確かに頻度分析が使えません。前は、『ZZZZ』を例に見せたと思いますが……」
そうだそうだ。鍵が『SLOW』のときは18個ずらし、11個ずらし、14個ずらし、22個ずらしを繰り返して適用する……みたいな暗号だったな。
これでスクランブルをかければ、文字の出る頻度を数えたところで意味がない。
だから最強の暗号、だったはずなんだけど。
「ひとつ、この暗号には弱点がございます。鍵の文字数が特定できてしまったとき、実質的にそれは複数のシフト暗号に分解できてしまう、という点です」
俺もリヴィゼも、ついでにシャノンさんも、皆首をかしげる。
シフト暗号というのは……すべての文字を決まった文字だけずらす暗号だったと思うが。
「……どういう事よ」
「はい。例えば、鍵が三文字で、abcだった場合を考えます。そして暗号化する文は……I love youだったとしましょう」
言いながらニーアさんは紙にそう書きこんでいく。
「文章の一文字目はaによって一個ずらし、二文字目はbによって二個ずらし、三文字目はcなので三個。次はまたaによって一個ずらし、その次はbと……」
「はーん。だんだんわかって来たわ。n文字目は全部一個ずらし、n+1文字目は全部二個ずらし、n+2個目は全部三個ずらし……なってる訳ね」
「……本当ですね。それぞれを独立に抜き出して考えればこれはただのシフト暗号ですから……頻度分析でもなんでも使えるわけですか」
……今の説明に、さっきのI love youは必要だったか?
「ふぅん。だからさっき、長い文じゃなきゃいけないって言ってたのね。文章を鍵の単語の長さで割る分割する必要があるから……頻度分析をするには、従来の数倍の長さじゃないと精度が安定しないと」
納得した様子のリヴィゼに、ニーアさんは頷く。
そういう意味ではまだ強い暗号だが、ある程度の長さがあれば解読は出来てしまう、という訳か。
「それは分かったけど、これって鍵の文字数が分かってる前提でしょ?」
指先で紙を叩きながら、リヴィゼはニーアを見上げる。
確かにそうだった。なんかもうクリアしてしまった気でいたけど。
「それは……鍵の長さをしらみつぶしに当てはめるしかございません」
「……はあ? 当てはめてどーすんのよ。それが正しい長さってのは、どうやって分かるわけ?」
「一度分割したのちに頻度分析をかけ、その分布がランダムか、普遍分布に沿っているかを確認するのです」
「……なるほど。正しい文字数であれば、分割した全ての文章が分布にしたがうと……」
俺は合点がいったが、リヴィゼは渋い顔をしている。
「それって……鍵の長さを変えるたびに、分布を集計し直さなきゃいけないってことでしょ? それこそ鍵が四文字とかならいいけど、もっと長かったら凄い時間かかるんじゃないの?」
「はい、実用上はその通りです。分割した後に、それが普遍分布に従っているかどうかの判断もなかなか曖昧なのですが……しかし、時間をかければいつか解くことが出来る、という事は示せたかと……」
と、二人の会話をよこでぼーっと眺めていたシャノンさんが、急に身を乗り出し。
「これ」
と、目の前に広げられた暗号文を指さす。
「このQWPって文字列、こことここに二回出て来るけど。これって関係ないの」
「えっと……関係ないと思いますよ。この暗号は、同じ文字でも違う意味を持ってしまう点が解読を難しくしているので」
「これと、これも」
言いながらシャノンさんは暗号文の上に指を走らせる。
「あと、これとこれも」
「……か、関係ないですよね? ニーアさん?」
次々と同じ文字の塊を指し示すシャノンさんに、俺は少し不安になる。
「この現象自体は私も気づいておりました。例えば、文章にはandやthe、ingなどの頻出する文字列というのがあります。この文章はかなりの長文ですので、鍵のかかる位置が偶然同じになる、ということもまれにあるのです」
「そうですか……なるほど。ならその文字列は、そういう頻出する文字の可能性があるってことですか?」
「……はい。それもヒントの一部として、解読をする事はございます。が、あくまでも一助として――」
「七文字だと思う」
急に口を開いたかと思えば。
三人が驚いてシャノンさんを見つめると。
「鍵は、七文字だと思う」
「……どーゆーことよ。そんなぱっと見で鍵の長さが分かったっての?」
リヴィゼが眉を潜めるが、シャノンさんは暗号文に指を滑らす。
ニーアさんは首を傾げつつも、その指先をじっと見つめている。
「さっきみつけた、同じ文字列のペア。その間隔をかぞえたら、49、119、84だった」
「それがどうしたってのよ」
「ぜんぶ、七の倍数」
確かにそう、だけど……
でも、だから何なんだ?
「……はあ? そんな偶然で鍵の長さが分かったとか言ったわけ? おまえねぇ、話の邪魔をするなら黙って……」
「さっきめいどさんは、これらの文字列は「偶然鍵のかかる位置が同じになったもの」だっていった。てことは、二つの同じ文字列の間は、鍵の長さの丁度整数倍になってるはず」
今度こそ、リヴィゼは黙り込む。
山勘なんかを言っている訳じゃない、という事が分かって来たらしい。
「まず、鍵を『abcdefg』とする。同じに見える文字列は、鍵の同じ位置、例として『efg』の部分で暗号化されてるとする。そうすると……」
言いながらシャノンさんは『|efg abcdefg abcdefg abcd |efg』と紙に書く。
「最初のeから最後のeまでは、ぜったいに七の倍数になる、でしょ」
「そういう事でしたか。それで文字列のペアの間の文字数を数え……それらの最大公約数が七だったから、鍵の長さは七だ……と」
「あ、あんた……これをいま、思いついたわけ……⁉」
頻出する文字の塊というのは、文法上存在する。
それが、鍵の同じ部分で暗号化されるのも、長い文章なら別に珍しくない。
つまり、その間の文字数を数えて、最大公約数を取れば……鍵の長さを特定できる……ってわけか。
ドン引いているリヴィゼとは対称に、ニーアさんは珍しく目を見開いて。
「……美しい。暗号解読に携わって来たなかで、これほど美しい解法は見た事がありません」
「……そう?」
あまりピンと来ていないシャノンさんだが、リヴィゼの方は解法の美しさなどどうでもいいようで。
「そ、そんなことよりよ! これなら圧倒的に手間も必要な通信の長さも少なくて済むわけでしょ⁉ あいつらが安全だと思い込んでる通信を、覗き放題になるじゃない!」
「そうなりますよね。リアルタイムの通信が一方的に傍受できるようになれば、これは物凄いアドバンテージです」
「こ、この情報、なんとしてでも漏らさないようにしなさい! これまでの暗号技術はぜーんぶ、王国に漏れてるんだからね⁉」
「しかし……暗号解読は人手が要りますゆえ、誰にも情報を伝えずに単独で行うというのは……」
ニーアさんの苦言に俺は小さく手を上げて。
「その……鍵の長さを特定する工程を秘密にして、周りのチームにはその長さを元に解読して貰えば良いんじゃないですか? そうすれば工程のかかる作業を人にまわせるじゃないですか」
「確かにそれならば……。承知いたしました、そう致します」
頷くニーアさんに、何故かリヴィゼはさらに閃いたように目を見開く。
「こ、これだわ……そうよ、そうよ!」
「……どうしたんですか」
俺が尋ねるとリヴィゼは目を瞑り、にやりと暗号文を見下ろした。
「……言えないわ。でも、これで王都は落ちたも同然ね」




