戻る エニグマ (Enigma)



エニグマは第二次世界大戦でドイツ軍が使用した暗号システムです。

簡単な暗号機で極めて複雑な暗号を作ることができたので、 ドイツ軍の無線通信に使用され、大戦初期の快進撃に貢献しました。 ドイツ軍の潜水艦、 U ボートは、 連合国軍の船団に壊滅的ともいえる損害を与えていました。

ドイツ軍はエニグマに絶大の自信を持っていたため、 これが連合軍に解読されるとは夢にも思っていませんでしたが、 1930年代にはポーランドで解読に成功、 次いでイギリスでも、チューリング (Alan Turing) らによってエニグマが解読されました。


エニグマの解読によって戦局は一変し、 1944年6月のノルマンディ上陸作戦にも寄与しました。
歴史に "もし" は禁物とはいえ、 エニグマがもし解読されていなければ、 第二次世界大戦の終結はずっと遅れたか、 あるいは、 連合国の勝利さえ危うかった(?)かもしれません。



下図は、 ものすごく単純にした、 暗号機のイメージです。
(アルファベットは A から F までの 6 文字しかないものとします。)

スイッチとランプと、暗号機の心臓部、スクランブラーがあります。
スイッチをマウスでクリックすると、 暗号化された文字のランプが点灯します。
(同じ文字のランプが点灯する場合もあります。 ボタンをクリックすれば条件が変わります。)



キーを押して、光ったランプの文字を書き写す。
これなら戦場でも、 素早く、 正確に暗号文を作ることができます。
あとはスクランブラーの部分を複雑にして、 敵に解読されないようにすればいいのですが…。




Enigma Machine
エニグマ

右はエニグマ暗号機の外観です。

本体上面は奥から順に、 3つのローターとリフレクタからなる 「スクランブラー」、 暗号化された文字がランプで表示される 「ランプボード」、 文字を入力する 「キーボード」 の3つのユニットから成っています。
手前前面は 「プラグボード」 です。 ここにコネクタ付きケーブルをセットすれば、 任意の文字の配線を入れ替えることができるので、 暗号はますます複雑になります。

キーボードのキーを押すと、 電流はまずスクランブラーの右端のローターに伝えられます。
Rotor
ローター
ローターには 26 個の接点があります。 反対側の面にも、 隣のローターに接触するための 26個の端子があり、 ローターの内部でそれぞれランダムに 接続されています。
例えば "A" のキーから電流が流れてきても、 ローターを通過すると "U" の接点に電流が流れていきます。 このようにしてローターを通過するたびに、 電流は他の文字の接点に移されながら、 左端のリフレクタに達します。
リフレクタは回転しませんが、 電流はここでも別の文字の端子に移され、 もう一度ローターに戻されます。
電流は更に3つのローターを逆にたどって、 ランプボードの電球を光らせます。

Scrambler Unit
スクランブラー(上) と
ランプボード(下)
エニグマの右端のローター (Fast Rotor) は、 キーを押すたびに 1 文字分回転します。
右端のローターが一回転すると、 中央のローター (Medium Rotor) が 1 文字分回転します。
中央のローターが一回転すると、 左端のローター (Slow Rotor) が 1 文字分回転します。
1文字打つたびにローターが回転するので、 暗号化キーは1文字毎に変わっていきます。
同じ文字が続いても、 すべて違う方法で暗号化されますから、 エニグマの解読は非常に困難です。

エニグマのもう一つの特徴は、 暗号化だけでなく、 そのまま復号化にも使えることです。
ローターを正しく設定して暗号文をタイプすると、 平文化された文字のランプが光ります。
電流はリフレクタで折り返して往復しているので、 暗号文の文字をタイプすれば、 電流は逆のルートを流れて平文のランプを光らせます。




エニグマで暗号文を作るには、 まず定められた通りにローターを設定します。
この設定は毎日変わることになっていました。
(下図では各ローターの上のボタンをクリックするとローターの設定ができます。)

あとは、 キーボードのキーを押すだけです。





エニグマではキーボードとランプボードは独立していますが、 上の Java アプレットでは合体させています。
キーをクリックすると暗号化された経路が表示されます。
マウスのボタンを放すと経路の表示は消えて、 ローターが 1 文字分だけ回転します。
暗号化文は右下のボタンをクリックするとクリアされます。



キーの配列はパソコンのものと少し違いますが、 エニグマの配列にあわせてあります。
すこし打ちにくいかもしれません。

暗号文は、 ローターの設定を元に戻して、 暗号文をタイプすれば平文化できます。
例えば、 ローターを左から順に、 12, 3, 25 に設定して "HELLO" と打つと、 "PJMCP" と暗号化されます。
ローターは少し回転しているので 12, 3, 25 に戻して "PJMCP" とタイプすると、 "HELLO" という平文を得ることができます。




関連事項:  シーザー暗号  秘密鍵暗号方式  公開鍵暗号方式 


情報処理概論 に戻る  目次 に戻る  戻る


*1  エニグマは 5 種類のローターのうち、 任意の 3個をどの位置にでもセットできます。 もちろん、 この5種類のローターは、 どのエニグマに使われるものもすべて同じように作られていなくてはなりません。

【注1】 このページの Java applet は、エニグマの原理を説明するためのもので、 エニグマの動きをシュミレートするものではありません。
プラグボードで任意の文字の接続を変更する機能や、 ローターを自由に交換できる機能などを省略しています。
エニグマのシュミレータ には Enigma などがあります。興味のある方はご覧下さい。

【注2】 このページは、 Enigma and the Turing Bombe を参考にして作成しました。
エニグマの写真は University of North Dakota の Crypto Drop Box から許可を得て引用しています。
下の 「自由利用マーク」 は本文および Java Applet に対してつけたもので、 これら著作権が他にあるもののお取り扱いについてはご注意下さい。

Java applet 圧縮アーカイブファイル    自由利用マーク
update: 2012.09.26  address