|
|
エニグマ (Enigma) |
エニグマは第二次世界大戦でドイツ軍が使用した暗号システムです。
簡単な暗号機で極めて複雑な暗号を作ることができたので、
ドイツ軍の無線通信に使用され、大戦初期の快進撃に貢献しました。
ドイツ軍の U ボート と呼ばれた潜水艦は、連合国軍の船団に壊滅的ともいえる損害を与えていました。
ドイツ軍はエニグマに絶大の自信を持っていたため、
これが連合軍に解読されるとは夢にも思っていませんでした。
しかし、1930年代にはポーランドで解読に成功し、
次いでイギリスでも、チューリングらによって、エニグマが解読されました。
映画 "U-571" には、U ボートから、
エニグマ暗号機をドイツ軍に察知されないで奪うためにどのようなドラマが展開されたか… が描かれています。
(ま、映画ですから、そもそもエニグマとは… が省略されていて、
連合軍がどれほどエニグマに手を焼いていたかについても殆ど説明がありません。
予備知識がないと、 「面白いけれどもよく分からない」 映画だったかもしれません。
このページを見てから、もう一度映画を見ると、よく分かるかも…)
暗号解読によって得た情報は、1944年6月のノルマンディ上陸作戦でも
連合軍の勝利に大いに寄与しました。
戦争では通信内容の秘匿 (暗号の信頼性) がいかに重要かということを示す一例です。
歴史に "もし" は禁物ですが、
エニグマ暗号が "もし" 解読されていなければ、
ノルマンディ上陸作戦や大戦での連合軍の勝利はずっと遅れたか、
あるいは、勝利そのものさえなかった (?) かもしれません。
このページの写真は University of North Dakota の Crypto Drop Box から引用しています。 写真をクリックするとオリジナルの GIF 画像が表示されます。 ファイルサイズは上から順に 196KB、74KB、176KB です。
簡単に間違いなく暗号化するためには、どんな装置を作ればいいかを考えてみましょう
(アルファベットは A から F までの6文字しかないものとします)。
下図のように、スイッチを押すと暗号化された文字がランプで表示される
ようにしたらどうでしょうか。
このままでは、たとえば C のスイッチは C のランプに接続されていますから、
C のスイッチをマウスでクリックすると C のランプが点灯します。
これでは暗号作成機とはいえません。
|
ボタンをクリックするたびに、スイッチとランプの配線がズレます。 C のスイッチをクリックすると、例えば E のランプが点くようになります。 このように一定の数だけ文字をずらせて暗号にしたものを シーザー暗号といいます。 しかし、ずらせ方はこの図では5通りしかありません。 アルファベット 26 文字でも 25 通りです。 シーザー暗号だと分かってしまえば解読は簡単です。 | |
| ボタンをクリックするとスイッチとランプがランダムに接続されます。 こうなると解読するのは少しやっかいになります。 |
キーを押せば暗号化された文字のランプが光るというのは、
戦場で使用する暗号機には、いいアイデアです。
暗号化のアルゴリズムがどんなに複雑であっても、
暗号化の手順は 「キーを押す」→「ランプが光る」→「その文字を書き写す」 だけです。
エニグマで暗号文を作るには、まず定められたとおりにローターを設定します
(この設定は毎日変わります)。
下図では各ローターの上のボタンをクリックするとローターの設定ができます。
あとはキーボードのキーを押すだけです。
エニグマは、キーを押すとランプボードの文字が光りますが、上の Java アプレットではキーをクリックすると、
暗号化された文字のキーが光る (?) ようにしてあります。
どのような経路で暗号化されたかが、図の上部に表示されます。
キーからスタートした電流は、赤く表示されるルートを経てランプに至ります。
マウスのボタンを押したままにすれば、暗号化の経路がずっと表示され、
ボタンを放すとローターが 1/26 だけ回転します
キーの配列はパソコンのものと少し違いますが、ここではエニグマにあわせてあります。
すこし打ちにくいかもしれません。
暗号化された文章は右下のボタンをクリックするとクリアされます。
暗号文は、ローターの設定を元に戻して、暗号文をタイプすれば平文化できます。
例えば、ローターを左から順に、12, 3, 25 に設定して "HELLO" と打つと、
"PJMCP" と暗号化されます。
ローターは少し回転しているので、これを元に戻して "PJMCP" とタイプすると、
"HELLO" という平文を得ることができます。
update: 2004.07.26 ueyama@infonet.co.jp