やること
暗号化の最小コードをPythonで実装しながら、最終的にエニグマを作ることを目指すシリーズ。前回はエニグマの本質的な仕組みが理解できました。
今回は少し力を抜いて、エニグマの運用方法を考察します。
参考文献
エニグマの具体的な運用方法に触れているサイトは多くありません。こちらの記事を非常に参考にさせていただきました。著者に感謝いたします。
私の想像
前提として、ドイツ軍と戦う連合国軍はエニグマ本体を手に入れており、その仕組み(=暗号化アルゴリズム)も完全に理解していました。また、ドイツ軍の無線も傍受できていました。それでも暗号を解読できないでいたのは、鍵(=ローターの選択と初期回転)が分からなかったからにほかなりません。
ですので鍵がバレないことがもっとも大事です。そして、鍵がバレる前に新しい鍵に交換すること。
鍵を守るにはどうしたらいいかというと、暗号化された文章で鍵を伝達すればよいのです。1日に一度、あるいは1時間に一度の頻度で「暗号文で新しい鍵を伝える」をやっていけば永久に解読されないのではないか?見事な数学的帰納法です。(最初の鍵は・・・がんばる。)
ただ、この方法にはリスクがあります。一度でもエニグマを誤って操作したり(2回打っちゃったとか)、鍵を聞き間違えてしまうとアウトです。それ以降、永久に怪文書とにらめっこすることになります。
そんなキリキリしたルールで運用していたとは思えないので、はてさて実際はどうやっていたのか。
実際の運用方法
以降の内容は事実をかなり歪めた「フィクション」です。イメージの話。正確な情報は参考文献をご参照ください。
まず、送信者と受信者に共通の初期設定ブックが配布されます。これは毎日の朝に設定すべき初期条件が書かれています。ここでは初期設定は6文字で表されることとします。(ちなみにこのブックが流出したらそれなりにマズイです)
毎朝、送信者も受信者もエニグマを「本日の初期設定」にセットします。どのスロットにどのローターをセットするか。そして初期回転を注意深く合わせます。
送信者は平文をエニグマに打ち込み、出てきた暗号文を無線で送ります。
受信者はエニグマに暗号文を打ち込み、出てきた平文を見て作戦を遂行します。
ここからが大事なのですが、たまに6文字の暗号が2回連続で送られてきます。復号してもチンプンカンプンな6文字がご丁寧に2回連続で。実はこれが新しい一時鍵で、これを受信したら特殊な解読ルーチンを行います。
それはエニグマを「本日の初期設定」に戻して6文字を解読するということです。すると初期条件を表す文章になっているので、エニグマをその「一時鍵設定」にセットして以後の受信と解読を続行します。
送信者はどうしているかというと、任意のタイミングで「本日の初期設定」にセットし直して、自分が決めた新しい一時鍵を6文字✕2回送信します。その後、自分もその「一時鍵設定」にセットして送信を再開します。
これにより両者は「一時鍵設定」で同時のスタートを切ることができるのです。
この運用方法であれば任意のタイミングで鍵を更新でき、かつ、受信者が途中でエニグマの操作をミスってお通夜モードになっても、6文字✕2回が来たタイミングで復活できるのです。まあ最悪、朝には復活できます。なるほど確かに。
だいぶ自信がないですがそんな感じの運用だったようです。ホンマか?間違っていたらご指摘ください。
ただ、初期設定ブックが連合国軍に奪われた場合についてはよくわかりませんでした。いかがでしたか? 初期設定ブックは地域や隊によって異なるうえ1ヶ月毎の配布だったようなので、万が一流出しても直ちに全滅とはならないようです。とはいえ連合国軍に物理的に奪取され、完全解読の手がかりの一つにはなったようです。
おわりに
一旦、エニグマの勉強はここまでとします。
今後はオリジナル自作エニグマを検討しています(お前まだ自作キーボードも売れてないだろ)。展示会に間に合ったら触りに来てくださいね (๑`·ᴗ·´๑)チャオ