アメリカの連続殺人犯「ゾディアック」が1969年にメディアに送りつけた暗号文が2020年12月,51年ぶりに解読された.犯罪者の暗号というのはいろいろあるが,Z340として知られるこの暗号文は未解読暗号として有名だったので今回の解読はニュースとしてあちこちで取り上げられている.
1968〜1969年に米国カリフォルニア州で少なくとも5名が殺された「ゾディアック事件」は,現在もまだ未解決事件として捜査中である.「ゾディアック」を名乗る犯人は警察やマスコミに多くの犯行声明文を送りつけたが,その中には暗号文が4つあった.それらは暗号文の長さ(文字数)からZ408,Z340,Z13,Z32と呼ばれているが,1970年になって届けられたZ13とZ32は短すぎるため純粋に暗号学的な解読は難しい(Z13は"My name is"に続く13文字(記号)で,犯人の名前が隠されていると思われるのだが).
1969年7月31日に3分割してマスコミ3社に送られた暗号文Z408はハーデン夫妻(Donald and Bettye Harden)によって1週間ほどで解読された.夫妻は犯人が自己顕示欲が強いことから最初の文字はI(私)だと考え,Iの次に同じ記号が2つ続く部分(第3部の1行め)がKILL(殺す)だと仮定して解読に成功した.犯人も同じ記号の連続が解読の糸口を与えることは知っていたらしく,冒頭などに現われるKILLの2つのLには異なる記号を使っていたのだが,一か所での油断が解読の手がかりとなった.
暗号はホモフォニック暗号(同音換字暗号)というもので,基本的にはアルファベットの各文字を記号で置き換える換字暗号なのだが,解読を難しくするために同じ文字に複数の記号(同音字)が割り当てられている.解読されたメッセージは,犯人の素性を示すものではなく,I LIKE KILLING PEOPLE BECAUSE IT IS SO MUCH FUN ...(人を殺すのが好きだ.面白くてたまらない)で始まる,殺人の動機を語るものだった.
参考:
"DONALD & BETTYE HARDEN BREAKING THE ZODIAC CIPHER"
"Annotated solution to the 408 cipher, based on the Harden worksheets" (archive)
1969年11月8日にサンフランシスコ・クロニクル紙に送られたZ340は解読されず,長年にわたって世界中の暗号研究家により議論が続けられてきた(ほんの一例として,ニック・ぺリング氏のブログ).ゾディアック暗号を専門に扱うウェブサイトもたくさんある(一例として、解読を発表したオランチャク氏自身のページ).
YouTubeの動画で解読を発表したのは米国のデーヴィッド・オランチャク(David Oranchak)氏.オーストラリアのサム・ブレーク(Sam Blake)氏,ベルギーのヤール・ファンエイケ(Jarl Van Eycke)氏との共同作業により解読を達成した.最初の糸口を発見したのが2020年12月3日.12月5日には解読を完了し,結果をFBIに送ったという.解読を発表する動画の公開は12月11日だ.
有名な未解読暗号となると,不確かな解読が発表されては疑問符がつくことがよくあるが,今回は本物のようだ.FBI(米連邦捜査局)もアマチュア暗号解読家により解読されたとの声明を出し,解読を認知した.
Z340の暗号は換字表ではZ408の暗号とよく似ているのだが,Z408があまりに早く解読されたためか,犯人は文字の配列順を入れ替える(転置)というひねりを加えてきた.そのため換字表を使って英字に戻しただけでは,次のような意味不明の文字列が出てきてしまう.
(暗号化は9行+9行+2行の3つのブロックに分けて行なわれている.)
ここから平文を取り出すには,左上のIから始めて斜めに読み進んでいく.ただし,普通に次の行の次の列に行くのではなく,次の行の2つ右の列に進む.つまり,右向きの桂馬のような動きで進んでいくことになる.ブロックの最下行に達したら,1行目の2列目から同じように右下に読み進めていく.最下行に達する前に右端に達したら左端に折り返す.このようにすると,最初のブロックからはI HOPE YOU ARE HAVING LOTS OFF AN IN TRYING TO CATCH ME…という文が現われる.
2つめのブロックも基本的には同様だが,右上のLIFE ISという部分は,斜めの読み進みパターンから除外される.また,6行目の大半は(おそらく暗号化の際のミスにより)1文字分左にずれているので、これを補正してやる必要がある.
3つめのブロックは2行しかないので,桂馬飛び転置は行なわれていない.その代わり,一部の単語が逆順に綴られている.
このように解読プロセスを再現してみると,解読が正しいことを確信できる.間違った解読というのはご都合主義の仮定に仮定を重ねて無理やり意味のあるメッセージを引き出そうとする.今回の場合,「桂馬飛び」というちょっと変わったパターンを使ってはいるが,そのパターンに沿って読み進むとほぼ意味の通る平文を取り出すことができる.若干パターンから外れる部分があるにしても,偶然でこのようになることはありえない.全体として正しい解読だと思っていいだろう.
半世紀にもわたって解読されなかった暗号をどのようにして破ったのだろうか.今回の解読は何か月にも及ぶコンピューター処理と,コンピューターがはじき出す膨大な候補の中から正解の断片を見逃さなかった解読者の洞察力のたまものだ.
解読の過程は解読者による動画でわかりやすく解説されおり,その内容は日本語でもgigazineなどで紹介されているが,ここでも簡単に解説しておく.
まず,Z408のような同音換字暗号であれば,今ではコンピューターによって解読するアルゴリズムが開発されている(ヒルクライミング,遺伝的アルゴリズム,シミュレーテッドアニーリング).
単純な換字暗号の場合,記号と文字の対応を適当に決めて(これは本当にでたらめでいい)解読してみて,出てきた結果の「もっともらしさ」のスコアを算出する.次に,対応を少し変更して解読を行なってスコアが改善されたかどうかを見る.改善されていれば,今行なった変更を維持し,そうでなければ変更を破棄して同じことを続けていく.このようにしてスコアを改善していくことにより,今のパソコンの計算能力をもってすれば一瞬で解読できる.「もっともらしさ」のスコアをどう計算するかが一つの鍵になるが,たとえば子音・母音がほどよく交互に現れているかどうかを指標として使うことができる.(もう少し専門的には,2字連接や3字連接の統計が,既知の言語の統計と一致する度合いを指標とする.)同じ文字を表わす記号が複数ある同音換字暗号の場合であっても基本は同じである.後述のa-z-decryptは,ゾディアック暗号のために作成されたそのようなプログラムだ.
長年解読を阻んできたZ340は,単純な同音換字暗号ではなく転置その他の操作を行なっていることが考えられた.そこでまず操作のパターンを突き止めることにした.ブレークが65万ものパターンをオランチャクに送り,オランチャクがそれをファンエイケの作ったa-z-decryptという解読プログラムにかけていった.何の収穫もないまま何か月もたった2020年12月3日,オランチャクは一つの解読結果に着目した.
もちろんちゃんとした英文にはなっていない.オランチャクも,長年にわたる研究で無数に目にしてきた不成功事例と同様のものとして無視するところだった.だがこのテキストにはtrying to catch meとか,gas chamberなど,ゾディアックが言及しそうなフレーズが現われている.そこでこの転置パターンを詳しく調べることにした.
この転置パターンは,「暗号文を9行+9行+2行に分割し,桂馬飛び転置を行なう」というものだった.(そのようなパターンを含む65万ものパターンをよく考えたものだと思う.解読者の動画(1:06付近)にはvertical_2splitなどと書いた画面が映るから,縦横を変えたり,分割数を変えたりしていろいろ試したのだろう.また,「3分割」という発想はZ408の例に倣ったものと思われる.)
この「桂馬飛び」(次の行の2文字先に進む)は,19文字ごとに読み進むことに対応する.ゾディアック暗号に取り組む人々の間では,しばらく前から19文字の周期性があるらしいことが話題になっていたというから,転置パターン生成においてはそのことも考慮に入れたのかもしれない.
桂馬飛び転置を正しいと仮定して,暗号文の記号を並べ替えれば,転置のない普通の同音換字暗号になる.ところがそうしてできた暗号文をa-z-decryptに入れて解読を試みてもうまくいかなかった.HOPE YOU ARE TRYING TO CATCH MEとかGAS CHAMBERといった,有望と思われたフレーズも出てこなくなった.
そこで,a-z-decryptのクリブ機能というのを使うことにした.クリブというのは,暗号文に現われるとわかっている語句をいう.クリブ機能は,わかっている部分の解読を指定して,それを出発点として残りの記号を解読するというものだ.すると一発でもっともらしい解読文が現われた.
オランチャクはこのThat wasn't me on the TV show.(テレビ番組に出ていたのは俺じゃない)というのを見て飛び上がったという.関連テレビ番組の放送中に犯人を名乗る人物から電話がかかってきたことがあったという史実と符合する.その後のI am not afraid of the gas chamber.(俺はガス室なんてこわくない)は,その人物が電話で言った「(死刑になって)ガス室に行きたくない」との発言に結びつく.正しい方向に進んでいることはもう間違いなかった.
暗号文では63通りの記号が使われているが,それらはみなこの最初のブロックに現われており,これで全部の記号の読みが判明したことになる.
その結果を2番目のブロックにあてはめ,同じように桂馬飛びで読み進めると,because,have,slave,where,e[v]eryone,para[d]iceなどの単語ばかりでなく,he has nothing when they reachなどの意味のある長いフレーズも現われ,基本的には正しいと思われるのだが,もう一工夫必要なことも明らかだった.
一方,3番目のブロックは2行しかなく,WILL,EASY,DEATHという単語が浮かび上がった.その他は英語らしくなかったが,ECIDARAPがPARADICEを逆向きに綴ったものであることに気がついた(正しいスペルはparadiseだが,犯人はこの綴りを他の手紙で使っている).これがヒントになって,他の部分も単語を右から左に読めば解読できた.
問題は2番目のブロックだ.暗号文にミスがあることはよくあるので,この可能性を調べた.
すると,綴りのミスが暗号文の(第2ブロックの)6行目に集中していることがわかった.SLAVERはSLAVESのはずであり,ENSUGHはENOUGH,OOWはNOW,FOVはFORのはず.ところが正しい文字はみなすぐ左隣にあった.オランチャクがこのことをファンエイケに伝えると,ファンエイケは(最初の3文字(7:41)または2文字(8:01)を除いて)その行を右に1つずらせば多くのスペルミスが修正されることに気づいた.ファンエイケはさらに,右上のLIFE ISという部分を桂馬飛びの読み進みパターンから外せばもっときれいな解読文が得られることも発見した.
若干のスペルミスを修正すると,暗号文は次のように解読された.
(第2ブロックで桂馬飛びパターンから外れているLIFE ISを第2ブロックの末尾に置いたのはファンエイケの考えだが,LIFE IS DEATHの部分は切り離して考えたほうがいいような気がする.下記の私訳はその解釈による.(追記:同じことは解読発表の翌日にはすでに指摘されており,LIFE ISを省いた解読文を採用するサイトも多数あった.さらに追記:下記の続きの動画(19:00付近)によれば同様の指摘は何百もあったそうで,オランチャク氏はこの部分はやはり"LIFE IS DEATH"として切り離すのが自然ではないかと述べている.))
2021年1月29日,オランチャク氏は動画の続編を公開した.
まずゾディアック暗号解読に対する世界中からの反響としてアメリカのみならずヨーロッパ,中国,インドなどからのニュース報道を集めているのが興味深い.(残念ながら日本のテレビの報道はない.今「ゾディアック暗号」で検索したところ,熊本日日新聞社,神奈川新聞,京都新聞,静岡新聞などの地方紙が上位30位にかろうじてはいっているものの,全国紙やテレビニュースはヒットしなかった.なお,本ページが(たまに検索した限りでは)初めて(公開直後を除く)10位にはいった(一瞬だけ).)
内容面でも追加的な考察がされている.まず,オランチャク氏によるブレークスルーよりも前の2020年5月の時点で,ファンエイケ氏がほぼ正しい転置パターンを試していたことが判明した(22:00付近).ただ,そのときはAZdecryptの設定の関係で高いスコアにならず,着目されなかったのだという.
また,動画のサブタイトルにも関わる,犯人があのような複雑な転置を実際にどのように行なったかについて,仮説が提唱されている(10:30くらいから).オランチャク氏は9行17列のます目に縦に平文を書いたあと,長方形のます目全体を対角線で2つの三角形の部分に分け,各行の左右を入れ替えれば桂馬飛びの転置を再現できるという.具体的には,2行目は最初の2文字を右端に移し,3行目は最初の4文字を右端に移し,などとすることに相当する.もちろん犯人が実際にどういうプロセスを使ったかは知るべくもないのだが,一つの仮説としては興味深い.ただ,私などは9行17列のます目に斜め方向に文字を埋めていっただけと思ってしまうのだが.
オランチャク氏はさらに続編の動画も企画しているという.