セキュリティ対策だけでなく、バックアップにもいえることだが、「面倒くさい」と思うと手抜きが始まり、結果としてデータの損失につながることがある。今回は、そんな話を。
エニグマ暗号機の日鍵とメッセージ鍵
本連載の第43回や第129回で、第2次世界大戦中にドイツ軍が使用していたエニグマ暗号機に言及したことがある。
第2次世界大戦における暗号化の特徴は、「機械暗号の普及」と「解読のための数学的理論の活用」であった。それを象徴するのが、エニグマ暗号機と、エニグマを対象とする解読の努力といっても過言ではない。
エニグマの基本的な動作原理や使い方については、第129回で解説しているので、ここで繰り返すことはしない。もしも御存じなかったら、第129回を参照していただければと思う。
エニグマを使用する時は、2種類の鍵情報が関わってくる。1つは、事前に作成・配布されているコードブックに書かれた「日鍵」で、1日ごとに変わる。その内容は、使用するローターの種類と開始位置の指定である。
初期のエニグマは3個のローターを使用していたが、ローターをセットする順番は変更できたので、配置の組み合わせは6パターン。その後、5個のローターから3個を選んでセットする改良型が現れたが、その場合の配置の組み合わせは60パターンに増える。
そして、セットした3個のローター位置の組み合わせは、26×26×26=17,576パターンである。
日鍵は日が変わるまで、ずっと同じである。ローターを3個使用するから、17,576文字を入力するまで最初にセットした位置(日鍵)に戻ってこないことになるが、1日の間に多数の通信文を送信していれば、これぐらいの分量は簡単にクリアしてしまう。同じ日にやりとりされた通信文を大量に傍受・解析することで、換字パターンの反復が生じていないかどうかを洗い出すのは、換字式暗号の解読を試みる際の基本である。換字式暗号の世界では、反復は悪なのだ。
そこでエニグマの運用に際しては、日鍵に加えてメッセージ鍵という考え方を取り入れた。メッセージ鍵はその名の通り、個々の通信文ごとに異なる。しかも送信者がランダムに決めることができる。
そこで、疑問に思われる方が出てくることだろう。「送信者が勝手に決めたメッセージ鍵を、どうやって受信者に伝達するのか?」。おなじみの鍵配送問題である。実際の運用はどうなっていたのか。
例えば、送信者がある通信文に対して、メッセージ鍵が「XYZ」を使用する、と決める。すると、送信者は最初にコード・ブックを見て、その日の日鍵をセットする。次に、その日鍵を使って、同じメッセージ鍵を2回繰り返す。先の例なら「XYZXYZ」と入力する。
ところがエニグマの構造上、1回目の「XYZ」と2回目の「XYZ」は、換字によって暗号化した結果が同じにならない。ローターが順繰りに回転しているのだから当然だ。
次に、そのメッセージ鍵に合わせてローターの開始位置をセットし直す。「XYZ」だったら、3個あるローターの開始位置をそれぞれ「X」「Y」「Z」にセットするわけだ。そして本文をタイプして、暗号文を生成する。それを無線機で相手に送る。
受信者の側は、まず、受け取った暗号文の冒頭・6文字をメッセージ鍵と見なして取り出す。
日鍵の情報は、送信者と受信者が同じコード・ブックを使用しているから、問題なく送信者と同じものを設定できる。その日鍵をセットした上で、問題の6文字をタイプする。そして「XYZXYZ」が出てくれば、メッセージ鍵は正しく受け取れていることになる。もしも「XYZXBZ」などというように最初の3文字と次の3文字が一致しない場合は、何か間違いが起きていることになる。
こうしてメッセージ鍵が判明したら、それをローターにセットし直す。「XYZ」だったら、3個あるローターの開始位置をそれぞれ「X」「Y」「Z」にセットする。そして、6文字のメッセージ鍵に続いて送られてきている暗号文をタイプして、復号を実施する。
メッセージ鍵の決め方が問題
こうすれば、本文を暗号化するために使用するローター開始位置の組み合わせはメッセージごとに変わるので、反復を大幅に抑えられる。反復を抑えれば被解読の可能性も減るはずである。完璧だ!
……と思ったら、実際にはそうはならなかった。
理由の1つは、メッセージ鍵の伝達を確実にするために、同じメッセージ鍵を2回繰り返した点にある。内容はわからなくても、「アルファベット26文字の中のいずれかを使用するメッセージ鍵があり、同一内容のものを2回繰り返す」とわかっていれば、それがメッセージ鍵を知るための突破口になる。
もう1つの問題が本稿の本題だが、メッセージ鍵の決め方に問題があった。本当にランダムな内容で3文字のアルファベットを組み合わせていれば、それは確かに能書き通りに機能したかもしれない。しかし実際には、多数のメッセージをやりとりする通信兵が、いちいちユニークなメッセージ鍵を考え出す手間を惜しんだのか省いたのか、とにかく手抜きをしてしまう事例が多発したという。
例えば、隣り合ったキーを並べてメッセージ鍵にしてしまったり、あるいは馴染みの深い単語をメッセージ鍵に使ったり、といった具合だ。今でも似たような話はあって、ダメなパスワードの見本として「qwerty」が出てくることがしばしばある。それと同じである。
そんな事例が多発していることを知ったイギリスの暗号解読者は、メッセージ鍵を知るための近道として、そうした手抜きを活用したという。
これを情報セキュリティの見地から見ると、「安全性を守るための作業に起因する負担が大きかったための手抜き」であり、「人間がセキュリティホールになってしまった一例」と見なせるのではないか。
当節でも、「容易に推測できないパスワードを使おう」という類の呼びかけや指導がなされることは多い。それ自体は正しい考え方といって差し支えないのだが、「容易に推測できないパスワード」を考え出すのが面倒になるのは否めない。
しかもその種のパスワードは覚えにくいものになるだろうから、結果として複数のサービスで同じパスワードを使い回したり、パスワードを付箋紙に書いてディスプレイの横に貼っておいたり、といった仕儀になる。それでは何のためのパスワードかわからなくなる。
つまり、セキュリティ対策を考える時は、「いかにして安全性を確保するか」だけでなく「いかにして利用者の負担を減らすか」ということも考えなければならない。エニグマ解読をめぐる歴史は、そのことを教えてくれる。
著者プロフィール
井上孝司
鉄道・航空といった各種交通機関や軍事分野で、技術分野を中心とする著述活動を展開中のテクニカルライター。
マイクロソフト株式会社を経て1999年春に独立。『戦うコンピュータ(V)3』(潮書房光人社)のように情報通信技術を切口にする展開に加えて、さまざまな分野の記事を手掛ける。マイナビニュースに加えて『軍事研究』『丸』『Jwings』『航空ファン』『世界の艦船』『新幹線EX』などにも寄稿している。