エニグマ暗号の解読

 

チューリング・ボンベによるエニグマ解読の詳しい方法

 

ご注意  

この解読法の文章や図面の全部または一部をコピーすることを禁じます。このサイトの所在を明記して引用すること、またはURLリンクを貼ることは自由です。

なお、パワーポイント・スライド版には不正確な部分があるので非公開としました。

 

 

エニグマ暗号機と暗号通信

 

エニグマ暗号はドイツの軍事暗号の一つで、文字の間に対称性のある「換字暗号」の一種である。換字とは任意の二文字が交換されることで、たとえば文字AとN、文字YとHは相互に交換される。文字の対応関係が固定されていて、ある程度の文章の量があれば、文字の出現頻度を統計的に分析することで解読できる。たとえば英語ではeが最も出現頻度が多く、次に多いのはaやtだから、暗号文中で出現頻度の大きい文字に、これらを当てはめてみるのが最初になされることである。頻度以外にも、単語中の出現位置や他の文字との多重相関をとり、元の文の意味を推定するなど、まるでクロスワードパズルを解くように、元の文章を復元していく。しかし、エニグマ暗号では、一文字毎に文字の交換関係が変わり、単純な頻度分析では解読できない。

ドイツ軍はエニグマ暗号をどのように使っていたのか?暗号化はエニグマ暗号機という頑丈なタイプライターのような機械で行った。エニグマ暗号特有の対称性により、同じ機械で暗号文をタイプすれば、平文に戻る。

 

 

エニグマ暗号機の動作

図3−3 エニグマ暗号機の内部結線

 

まず、電流は、図3−3のように電源から、キーボード、ステッカーボードの十本のコード(ステッカー結線と呼ぼう)、3つの文字変換ローターを通過し、反射板で折り返し、再び三つのローターとステッカー結線を通過し、ランプを点灯して、電源へ戻る。 

ローターは図3−4のようなもので、両面には電流を通す接点があり、両面の接点間を、規則的ではない結線でつないでいる。

 

エニグマ暗号機のローター

図3−4  エニグマ暗号機のローター

 

この両面の接点間の対応は、各ローターに固有で、一対一の文字置換になっている。ローターには、円周上に二十六の文字が表示されているリングがある。リングは可動で、どこかの位置(リング座標)で固定する。ローターには爪があり、一回転する間に隣のローターに力を伝え、それを一文字だけ回転させる。いわば歯車計算器の桁上げ機構のようなものである。この爪による桁上げが起こる位置は、最初にリングを固定した位置で決まる。同様の桁上げメカニズムにより、左端のローターは中央のローターが一回転するまでに、一文字分回転する。エニグマ暗号機には三つの内部スロットがある。ローターは全部で五つあり(後に八つになった)、そのうちの三つを選び、内部スロットに挿入する。ステッカー結線は十本あり、二十六文字のうちの二十文字(各二文字十組)を選んで結線する。しがたって、エニグマ暗号機の設定の総組み合わせは、150のあとに0が18個並ぶぐらいの巨大な数になる(5つのローターから3つを選ぶのは60通り、各ローターの初期文字位置を選ぶのは26の3乗=17576通り、26文字から20文字を選び、それを十本のコードで結線するのは、約 150掛ける10の12乗通りある。したがって、総組み合わせは約1・58掛ける10の20乗通りになる)。

もちろん真正面から、全数探索することは不可能だ。つまりこれを全部試してみて、典型的なドイツ語の文字頻度分布が出てくるかどうか調べてみるというような計算は、今のスーパーコンピュータでも少々無理である。ドイツ軍は、エニグマ暗号は絶対に破られないと信じていた。

 

エニグマ暗号機によって、送り手は平文を暗号化し、受け手に送信する。暗号文を受信した受け手は、同様にエニグマ暗号機によって復号化し平文をえる。その具体的な手順を次に詳しく述べよう。

 

(a) ローター設定 送り手は五つあるローターから、暗号表でその日に指定された三つのローターを取り出す。

(b) リング設定 ローター外周のリングをすべらせて、同じくその日に指定されたローターの文字と電気接点間の対応をとる。これにより桁上げのタイミングが決まる。

(c) スロット挿入 三つのローターを、その日に指定されたエニグママシンの挿入位置(左・中央・右)に差し込む。

(d) ステッカー結線 十本のコードによって、その日に指定されたステッカーボードの二十六文字中二十文字を結線する。

 

以上の(a)〜(d)の指定は、日鍵(key of the day)と呼ばれる、特定の日に設定すべき鍵である。日鍵は暗号表にして司令部より一ヶ月分を配布される。当然、通信する相手(ドイツ軍)も同じ暗号表を持っている。(a)〜(d)によってローターを挿入し、ステッカー結線を終えると、暗号化の準備が整う。

 

(1)インディケーター設定 送り手は、ローターを回転させ、ランダムに選んだ初期回転位置にセットする。たとえばJCMという文字が窓から見える位置までローターを回転させる。このJCMをインディケーター設定という。

(2)インディケーター この状態でランダムに選んだ三つの文字(BGZとしよう)を二回タイプする(無線通信はノイズに弱いから、同じ文字を二回くり返す)。たとえばBGZBGZと。これはインディケーターと呼ばれる。この二つ、インディケーター設定とインディケーターは、今の通信だけに有効で、メッセージ鍵(message key)と呼ばれる。BGZBGZは暗号化されてTNUFDQになる。

(3)ローターをインディケーター設定BGZに合わせ、本番のテキストをタイプする。ランプを読みとり暗号化文を記録する。

(4)無線で、まず、コールサイン、時刻、文字数を送り、エニグ暗号機の型コードを送る。次にインディケーター設定JCMを送る。ここまでは暗号化されていない平文である。

(5)次に暗号化されたインディケーターTNUFDQを送る。

(6)そして暗号化された本文を送る。

 

つまり、電文は、

インディケーター設定JCM(平文)

インディケーターTNUFDQ(暗号文)

本文(暗号文)

という順に送信される。

 

受け手(ドイツ軍)は、あらかじめ暗号表を見て、その日の日鍵に合わせて、エニグマ暗号機を設定し、電文の到着を待っている。そして、送られてきたインディケーター設定JCMにローターを合わせる。次に送られてきたインディケーターTNUFDQをタイプする。するとBGZBGZという復号されたメッセージ設定が現れるので、ローターをBGZに合わせ、いよいよ暗号化された本文をタイプすると、最終的な平文がえられる。

 

イギリス側もこの同じ電文を傍受するが、日鍵(a)〜(d)が不明なので、まず日鍵を解読する必要がある。

 

なお、エニグマ暗号機には初期の商業的な利用の時代のもの、軍用の暗号になっても陸海空軍によって異なるいくつかの種類がある。また年とともに、日鍵の決め方の複雑さ、ローターの数とスロットの数、スッテカー結線の本数などが増えている。手順(a)〜(d)と(1)〜(6)は、イギリスがブレッチレイ・パークで解読に取り組んだ一九四○年以後の代表的なもので、最初からこの手順に固定していたわけではない。

 

 

ポーランドによるエニグマ暗号の解読

 

一九三○年代の初期にエニグマ暗号の解読に取り組み、先駆的な成果をあげたのは、ポーランドであった。その事情は、サイモン・シン『暗号解読』に詳しい。ポーランドは、エニグマ暗号機の構造、説明書や暗号化の手順と通信方法を、フランス経由で入手していた。

一九三八年以前のドイツ軍は、前記(1)のインディケーター設定を採用していなかった。またローターは三枚しかなく、ステッカー結線も六本しかなかった。したがって、ローターの挿入方法の六通りと、インディケーター(ローターの初期回転位置)の組み合わせ26の3乗=17576との積、すなわち105456通りがすべての日鍵の組み合わせになる。

ドイツ軍はその日の日鍵に従ってステッカー結線をし、ローターを挿入する。そして、任意に選んだインディケーターを二度タイプする。その次に本文をタイプする。この暗号化されたインディケーターと本文を無線で送信する。

無線を傍受したポーランド側が、日鍵の解読に成功しても、それはその日だけに有効な鍵である。次の日には日鍵は変わってしまうので、与えられた時間は限られている。

エニグマ暗号の解読にあたったのは、ポーランドのレイェフスキーらの数学者たちだった。彼らは、ローターのインディケーター設定を二回タイプするという特殊な通信方法に目をつけた。つまり1番目の文字と四番目の文字は平文では同じ文字だが、ローターが回転しているので文字変換が違っているだけである。同じように二番目の文字と五番目の文字、三番目の文字と六番目の文字は、平文では各々同じ文字がエニグマ暗号に変換された結果である。

いま一番目と四番目の文字に注目する。暗号文の一番目と四番目の位置の平文の文字はわからないが、それを暗号化した文字はわかっている。この一番目と四番目の文字の間の関係を、多くの電文から集めると、図3―5のようになったとしよう。

ボンベの文字対応

図3―5 エニグマ暗号文に現れる文字の対応表。

上段の文字が電文の一番目に現れるとき、下段の文字が四番目に現れる。

 

 

たとえば、Eという文字が一番目に出てくると、四番目ではXという文字になっている。そのXが一番目に出てくると四番目ではOという文字が出現する。そのOはMになり、MはHになり、HはEになって元に戻る。つまりE→X→O→M→H→Eという五リンクの長さのループを構成している(バウアーはサイクルと呼んでいるが、元の文字へ戻るのでここではループと呼ぶ)。Iから出発するとI→S→K→U→Q→Iという五リンクの長さのループを、Aから出発するループは十五リンクの長さのループを、Vから出発するループは一リンクつまりV→Vという不動点になっている。そしてこの四つのループで二十六文字すべてを尽くしている。

ポーランドの数学者たちの重要な発見は、こういうループの数とその長さは、ローターによる変換に固有のものであり、ステッカー結線によって影響を受けないということであった。ステッカー結線では二つの文字が入れ替わるだけで、ループの構成(分割数と長さ)は変わらない。たとえば、ステッカーボードのXとKをコードで接続すると、XとKという文字が入れ替わり、E→K→O→M→H→EとI→S→X→U→Q→Iになるだけでループの数とその長さには変化がない。

日鍵のすべての組み合わせについて、このループの構成を調べ上げ、それを表にする。そして、ある日の暗号文を集めて、最初の六文字からループを抽出し、この表を逆引きすれば、日鍵が発見できる。

もちろん事はそれほど簡単ではない。六文字のうちには必要なループが含まれていない可能性が多い。ローター設定がわかっても、ステッカー結線で文字が入れ替わっているから、すぐには平文が読みとれるわけではない。最終的な解読には、本物のエニグマ暗号機により実際に試してみて、ドイツ語として自然かどうかを調べる試行錯誤が必要なのである。しかし、エニグマ解読の本質的な問題はこのループの分析で乗り越えられた。

ポーランドは一九三○年代で、エニグマ暗号の解読に成功し、ドイツ軍の行動をほぼ探知していた。しかし、一九三八年十二月以後、ローターの数とステッカー結線の本数が増え、エニグマ暗号の解読にはさらに作業量を要するようになった。彼らは一の長さのループを自動的に発見するリレー式の電気回路(Bomba)を作って新しい暗号方式に対抗したが、ドイツのポーランド侵攻が迫ってきた一九三九年夏、すべてのノウハウをフランスとイギリスに譲り渡して、ポーランドの活動は終わった。

 

チューリング・ボンベ

 

エニグマ暗号解読の活動は、イギリスのブレッチレイ・パークにおけるチューリングらに移る。ポーランドの先駆的な仕事をチューリングはどのように発展させたのか?

解読には、平文の一部分(単語でもいい)が推定できるといい。これはクリブ(crib)と呼ばれた。虎の巻とかカンニングという意味である。暗号文中によく現れる常用句、たとえば「ビスカヤ湾の天気予報」、「師団長閣下」、「特に異常なし」などがそれである。

最初、チューリングはクリブを重視したアプローチをとろうと思っていた。彼はポーランドの努力を知って、機械化と数理的考察をさらに進めることにした。そして開発した機械が「チューリング・ボンベ(Bombe)」である(ポーランドの解読マシンBombaと区別するために、ここではBombeをボンベと呼んでおく)。そこには、チューリングらによってなされた重要な技術革新があった。

まず、図3―6のようにスクランブラーという三枚のローターの機能をシミュレートする回転ドラムを考案した。

スクランブラー

図3―6 エニグマのローターとチューリング・ボンベのスクランブラーの関係

 

エニグマ暗号機では三つのローターを串刺しにして電流が反射板に向かって流れ、反射されたあと三つのローターの中を戻ってくる。その三つのローターと反射板の中を流れる電流の向きが一方向になるように、出入り口が二つあるスクランブラーに置き換えた。スクランブラーは機能的には三つのローターと同じ働きをするが、エニグマ暗号機のローターに備わっていた桁上げ機構がない。

なお、数種類のローターの中の結線は、諜報活動などによってほぼ判明している。また、日鍵のリング設定は、仮にZZZとしておく。解読された鍵は、この初期位置から相対的に解釈しなおされる。

ポーランドのBombaでは、電流の経路は一本の電線であったが、チューリングは、それを二十六本の並行ケーブルとした。これにより二十六文字を同時並列にスキャンすることが可能となった。

ボンベにおける最も独創的な発明はフィードバック結線で、これについては後の章で議論する。

 

解読の手順

 

チューリング・ボンベは、スクランブラーを多数、横方向(文字列の方向)へ並べ、各スクランブラーの入出力にある二十六文字の端子を多芯ケーブルで自由に接続できるようにしたものである。

並んでいるスクランブラーは全部同じ構造だが、右隣のスクランブラーは、ちょうど一文字打って回転した左のスクランブラーの状態に設定されている。暗号文も平文も、各文字を横方向へ並んだスクランブラーに対応させる。逐次的にエニグマ暗号機のキーボードへ文字を打ち込んだときのローターの状態が、ボンベでは空間的に展開されている。

図中の一本の線で描かれている結線は、実は二十六文字に対応したケーブルである。またボンベにはステッカーボードはない。ただエニグマ暗号のローターを二十六文字並列に展開し、さらに文章の文字列を空間的に配置されたスクランブラーに展開しているだけである。

ブレッチレイの暗号解読部隊は、過去の諜報活動によって、エニグマ暗号機の構造は知っていたし、日鍵とメッセージ鍵の存在と、それを用いた通信方法(ドイツ軍がそれを変更しない限り)を承知していた。もちろん、その日の日鍵とメッセージ鍵はわからないので、傍受した暗号文を解読して、それを発見しなくてはならない。次の日には日鍵は変わってしまうので、解読作業が急がないといけない。

 

チューリング・ボンベは、リレー回路により電圧の分布を調べ、鍵(日鍵とメッセージ鍵)とステッカー結線が矛盾なく発見されていれば、自動運転をストップする。そのときの先頭のスクランブラーの設定が、求める日鍵とメッセージ鍵である。矛盾があるとき、スクランブラーの状態は次の鍵の候補に自動的に変化し、自動判定を繰り返す。では、その判定条件とは何か?

簡単な例をあげよう。暗号文「UILKNX」は平文「GEHEIM」に対応していると、推定されるとしよう。「GEHEIM」は「秘密」という意味で、クリブである。暗号文と平文(クリブ)の文字は図3―7のように各スクランブラーと対応している。

ボンベ(ステッカー配線なし)

 

図3―7 チューリング・ボンベによるエニグマ暗号解読の原理図(ステッカー結線なし)

 

六つのスクランブラーが「UILKNX」に対応している状態とは、最初のスクランブラーのU入力端子に電圧が、二番目のスクランブラーのI入力端子に電圧が、あと三、四、五、六番目のスクランブラーのL、K、N、X入力端子に電圧がかかっている状態である。これ以外の端子には電圧はかかっていない。

 

番号1のスクランブラーの状態が、(未知の)日鍵とメッセージ鍵を正しく模擬していると仮定しよう。最初のスクランブラーのG出力端子、二番目のスクランブラーのE出力端子、同様に三、四、五、六番目のスクランブラーのH、E、I、M出力端子だけに電圧が現われるだろう。これが正しく解読された状態であるが、このような状態を一気に発見することはほとんど不可能である。

 

ボンベ(ステッカー配線あり)

図3―8 チューリング・ボンベによるエニグマ暗号解読の原理図(ステッカー結線あり)

 

 

実際のエニグマ暗号機では、電流が流れる結線は一本であり、最右側のローターの出入り口からステッカー結線を経て(ステッカー結線を経ない場合も、同一文字を同一文字に置き換える仮想的な結線があると考えておく)、ランプまたはキーボードに接続されている。一方、ボンベにはステッカー結線がない。各スクランブラーに、各々二十六本の入出力端子があるだけである。

エニグマ暗号では、暗号化と復号化は対称、つまり同じマシン上で同じ手順で行うので、スクランブラーの入力と出力を区別する必要はない。また、入力側で(出力側でも)同じ文字をつなぐとき、ステッカー結線は影響しない。たとえば、図3―8のスクランブラー2において、文字αは出力側のEと(仮想的な)ステッカー結線されている。Eから結線を辿ると、スクランブラー4で文字αに戻る。したがって、スクランブラーによる文字変換に関する限り、ステッカー結線はないも同然である。このエニグマ暗号の特徴は、すでにポーランドの学者たちによって利用されていた。

 

暗号解読の最初の作業はクリブから、スクランブラー間を結線する「メニュー」を取り出すことである。図3―8は、M→E→H→K→Mという長さが4のメニューが取り出された場合を示す。そして、二番目のスクランブラーの暗号文側にかけられた電圧は、メニューを構成しているスクランブラー全体に拡がる。

第二番目のスクランブラーに対応する暗号文の文字をMとしよう。二番目のスクランブラーの二十六ある文字端子のどれが(エニグマ暗号機では最右側のローターの接点のどれが)Mという文字の入力を受けているのかは未知である。その不明の文字を仮にAとしよう。すなわちMとAを結ぶステッカー結線があると想像する。これをM/A仮説と呼ぶ。

ステッカー結線は日鍵であるから、一旦、結線されると一日中変わらない。したがって、二番目のスクランブラーの暗号文の側でM/A仮説が成り立つとすると、六番目のスクランブラーの平文側のMが(仮想的なステッカー結線を経て)接続されている端子は、当然Aでなければならない。二番目のスクランブラーの暗号文側の端子Aに電圧をかけると、六番目のスクランブラーの平文側の端子Aだけに電圧が現れるはずである。もし、この条件が満たされないときは、二番目のスクランブラーの端子Bに電圧をかけて六番目の端子Bの電圧を確かめ、それが満たされないとき、さらに端子Cを、端子Dをと、全部の組み合わせについて試行し、判定を繰り返すことになりそうである。それでは、暗号を解くのに長い時間を要するだろう。

この判定を一気にやってしまう方法がフィードバックである。図3―8でいえば、六番目のスクランブラーの平文側の二十六個の端子を、二番目のスクランブラーの暗号文側の二十六個の端子に戻し、M→E→H→K→M〜Mというループを、実際に電気的な閉回路として結線してしまう(〜はフィードバック結線を表わす)。

フィードバック結線の考え方は、等しくなるべき変数は最初から等しい、それも恒に等しい(恒等的)として結合することである。はたしてそれで技術的に不都合なことは起こらないのだろうか?

 

変換行列の分解

 

まず文字変換の基本サイクルという概念を説明しよう。

二番目のスクランブラーへの入力側の端子αと、六番目のスクランブラーからの出力側の端子βの間に現われる文字端子間の関係がすべてわかっていると仮定しよう。

この変換関係(α-β間の対応)が、α=(ABCDEFGHIJKLMNOPQRSTUVWXYZ)、β=(FTJLXRNESWUPHYMAIZKGQVBODC)だったとする。この意味は、αの端子Aに電圧をかけたとすると、βの端子Fに電圧が現れるという意味である。同様に、αの端子Bに電圧をかけると、βの端子Tに電圧が現れる。αの括弧内のn番目の端子は、βの括弧内のn番目の端子に対応して、電圧が現れることを意味している。

この例では、M/Aという仮説を立てて(MはAと結線されていると仮定して)電圧をAにかけると、六番目のスクランブラーではFという端子に電圧がでてくる。しかしこれはありえない。なぜなら、二番目のスクランブラーでM/Aというステッカー結線を仮定すれば、それは一日中変化しないはずなので、六番目でM/Fという結線になるわけがないから。

α-β間対応関係を書き直そう。対応関係は<AFRZCJWBTGNYDLP><EXOMH><ISKUQ><>という共通部分を含まないサイクル(今まで使ってきたループという意味ではないので、サイクルという用語を使う)を含んでいる。サイクル<EXOMH>の意味は、EはXに対応し、XはOに、OはMに、MはHに、Hは再びEに対応するというループを意味している。

<>の意味は、VはVだけに対応づけられていることで、数学的には不動点である。従って仮説M/Vが正しいとすると、暗号文入力Mはステッカー結線でVに変換され、それは複数のスクランブラーを経てVへ戻り、ステッカー結線で再びMになる。これが正しく暗号が解読された状態である。

サイクルとは、スクランブラーによる変換行列を、互いに素(disjoint)な行列に分解したときの特性行列である。具体的には、ローターによる文字変換によって、順次変換される文字端子を表しており、そのどこかの文字端子に電圧が加わると、電圧が伝わっていく端子群を意味している。サイクルの集合に含まれるどの端子に電圧をかけても、この集合のすべての要素の端子に電圧が現われる。しかし、正解(正しい暗号・平文対応)の対応関係はただ一つだから、正解の文字集合(結線)と正解でない文字集合(結線)とは、共通部分(導通)を持たない。

 

正解の条件

 

電圧がループの結線を伝搬して、サイクルを構成する端子群に拡がる有様は、(1)メニューが適切ではないか、スクランブラー1の設定(日鍵とメッセージ鍵)が間違っている場合と、(2)どちらも正しい場合とで異なる。

(1)メニューが適切ではないか、スクランブラー1の設定が間違っている場合

ほとんどの場合がこれで、電圧はどこまでも拡がる。なぜなら、実際のエニグマ暗号機のローターがもっていた変換行列と、ボンベの現在のスクランブラーの設定は一致していないし、ループの結線も間違っているのだから、電圧は本来のサイクルの境界を越えて、無秩序に拡がるだろう。これは、述語論理の命題、「間違った仮定から導出される定理は全部真になってしまう」の好例であるといわれている。ただし、電圧が十分に拡がるためには、すくなくとも三つ以上のループが必要だと(経験的に、また確率の計算から)推定されていた。

(2)メニューも適切で、スクランブラー1も正しく設定されている場合

電圧はどこまでも拡がることはなく、以下のどちらかになる。

C1 正解の文字端子に電圧をかけると、その文字端子に限って電圧が現われる。

C2 間違った端子に電圧をかけると電圧は拡がるが、正解の端子だけには電圧が現われない。

前述したように結線された端子群は、相互に独立なサイクルに分けられている。たまたま正解の文字端子に電圧がかけられると、電圧はその文字端子だけに現れ、ほかのサイクルに属する端子群には現れない。なぜなら両者は相互に導通がない(数学的にはdisjoint)からである。

この正解端子が偶然わかる確率は低い。普通は、正解でない文字端子を含むサイクルに電圧をかけてしまうだろう。その結果、電圧は正解端子を除いた端子群に拡がる。

これで、仮説M/A、M/B、……、M/Zを全部試す必要はなくなった。正解かどうかの判定は一度の電圧の印可によって可能となった。

ただし、メニューが不適切でループが不足しているか、まったくメニューが間違っている場合、これらの条件がたまたま満たされる「偽の停止」が起こりうる。

極端な例として、まったくメニューに基づく結線がない場合を考えよう。任意の端子に電圧を加えたとき、その端子だけに電圧が現れるので、条件C1が満たされている。しかし、これが正解である確率はきわめて少ない。このときのボンベの停止は、正解に対応しない「偽の停止」となるだろう。

 

対角結線

 

クリブの不足を補うために考案された重要な発明があった。それは、チューリングと同じグループで働いていた数学者ウエルチマンによって提案された対角結線(diagonal board)である。ステッカー結線の対称性(双方向性、たとえば端子Tが端子Nに接続されているならば、端子Nは端子Tに接続されている)を利用して、ループに現れる端子群の中で対称の位置にある端子を積極的に電気抵抗ゼロのケーブルで結線してしまうのである。数学的には変換関係にある記号ペアを、恒等的に結合することで、フィードバック結線と同じ哲学に基づいているアイデアである。対角結線の発想を最初に聞いたとき、チューリングはしばらく理解できなかったと伝えられている。それほどこの対角結線は画期的なアイデアであった。

 

この対角結線によって、異なるサイクル集合へ電圧が波及しやすくなった。それはクリブの不足を大幅に補って、エニグマ暗号解読の成功率に大きく貢献した。

 

ステッカー結線の推定

 

ポーランド人たちが、試行錯誤でやっていたステッカー結線の相手を見つけることが、このフィードバックと対角結線によって、(すくなくとも最初に電圧をかける一つの文字Mに関しては)自動的に発見できるようになった。

図3―8の例で、Mの相手がV端子だったとしよう。ボンベにはステッカーボードはない。電圧をかけている端子は、スクランブラーの端子(エニグマ暗号機でいえばローターからの出入り口の端子)そのものである。Mは暗号文中の文字で、ステッカーボードを介してAと変換される文字であり、ボンベでは仮にスクランブラー2に割り当てて考えている文字である。

ボンベが停止し、Aは実はVであるとわかったとしよう。そのとき、βもVであるはずである。スクランブラー2の出力αは、実際にそのスクランブラーの二十六個の端子の中で電圧が出ている端子を調べると、具体的な文字がわかる。

ボンベが停止すると、スタッフがその設定情報をもって別棟に駆けつける。そこには、ステッカー結線のないスクランブラーだけのエニグマ暗号機を模擬した機械があった。それに解読された日鍵やメッセージ鍵を設定し、スクランブラー2の入力Vから辿れば、ループを構成する文字E、H、Kに関しては、そのステッカー結線相手α、γ、δが順に判明する。

この作業中に、ステッカー結線相手が二重に(一度求まった相手とは異なる相手と)求まってしまうときは、あきらかにその停止状態は「偽の停止」である。そのとき、偽の停止を無視して、ボンベは次の鍵から探索を再開する。

偽の停止はボンベの自動運転を妨げ解読の時間を長引かせるので、できるだけその出現頻度を下げ、また判定作業を自動化して、探索作業の能率を上げなければならない。そのために電圧の分布を自動的に判定し、ステッカー結線の無矛盾状態へ発見するリレー回路を追加したボンベの改良機“JUMBO”があった。

 

解読手順のまとめ

 

ボンベ改良機JUMBOを使った解読の手順をまとめておこう。

(1)        最初のスクランブラーを日鍵とメッセージ鍵探索の初期値に設定し、順次スクランブラーを一文字ずつ回転させる。

(2)        電文からクリブを想定し、メニュー作成し、それにしたがってスクランブラー間を結線する。フィードバック結線と対角結線を追加する。

(3)        試行端子(普通はAとする)を選び、そこに電圧をかける。

(4)        ボンベは自動的に全部の端子の電圧をチェックし、全部に現れていたら、それは間違った鍵なので、(7)へ進む。

(5)        メニューに現れている文字端子に順次電圧をかけ、その電圧だけがそのままで、他の端子には電圧が現れていないか(この状態をストレートと呼んだ)を調べる。これは正解条件C1の場合である。他の端子に電圧が現れていれば(7)へ。

(6)        いくつかのストレートの状態がみつかれば、それらに関して、ステッカー結線の無矛盾(異なった端子と二重に結線されていないこと)を確かめ、すべてのストレートが矛盾していれば(7)へ。無矛盾なものが残れば、ボンベは停止し(8)へ。

(7)        スクランブラーは自動的に回転し、次の鍵の設定に変わる。(3)へ戻る。

(8)        ローターの桁上げ位置すなわちリング設定と、ループ中には現れていないステッカー結線を推定する仕事が残っている。エニグマ暗号機の模擬機において、実際に求まった日鍵とメッセージ鍵を設定し、暗号文を打ち込んでみて、意味のあるドイツ語(平文)が現れるまで試行錯誤をくり返し、矛盾しない桁上げ位置とすべてのステッカー結線を推定する。

(9)        エニグマ模擬機に日鍵とメッセージ鍵を設定し、暗号文を打ち込んで平文をえる。

 

エニグマ暗号はボンベによって100%自動的に解読されたわけではない。まだ現場的なカンを要求される(8)などの手作業が残っていた。また、偽の停止をできるだけ減らすためには、良質のクリブをえるように努力せねばならない。たとえば偽の作戦でドイツ軍を騙し、意図するクリブを電文に入れさせるなど。実際、007シリーズの作者イアン・フレミングは、ブレッチレイ・パークにいて、そのような仕事についていたという。