読者です 読者をやめる 読者になる 読者になる

DISTRICT 37

なにか

ENIGMA~暗号解読~

Blog Python

ナチス・ドイツが大戦中に使用したエニグマが4400万円で落札されたというニュース。

www.jiji.com

エニグマの仕組み

サイモン・シンの暗号解読に詳しい事が書いてあり、なるほどという事でpythonで実装したことあるが、とても汚くなったので公開するのもしのびない。という事で、gistにだれかが実装したコードがあったの記事の最後に置いておく

暗号化というのはどれもこれも基本的なものは変わらず、AとタイプしたらBが出力されるというものだ。この場合はタイプした文字の次のアルファベットを出力するというルールで暗号化されたもので、例えばこのルールだと

Hello World  →  Ifmmp Xpsme

と暗号化されるという仕組みだ。複合化するにはひとつ前のアルファベットを使ったらいい。このルールをとにかく複雑化したものがエニグマだ。暗号文をやり取りするには発信者と受信者がルールを知っている必要がある。そのためあらかじめルールを決めておくのだが、このルールを日によって変えるので暗号解読には時間を要したという。 作戦時にはこのルールブックを持ち歩かなければならないうえ、分厚く取り回しが効きにくいという話もある。ルールブックに従ってエニグマを設定するだけなので、このルールブックを奪ってしまえばエニグマは恐るるにたらずという事で、コードブレイクはなされた。エニグマはあのかっこいい筐体が取りざたされているが、本体はこのルールブックといってもいい。

エニグマシミュレータというサイトもあって、視覚的にどのように暗号化しているかがわかりやすい。

エニグマシミュレータ

現代の暗号化

大きく分けて公開鍵方式と共通鍵方式がある。エニグマは発信者と受信者が同じルールブックを使用するという共通鍵方式だ。この共通鍵を奪われてしまうと暗号の解読はいとも簡単になされてしまう。対して公開鍵方式はあらかじめルールブックを公開してしまう方式だ。発信するときはルールブックに従って暗号化してほしいとお願いしておくやりかた。なんとも無防備にも見えるが、このルールブックでは復号できないというのがポイントだ。復号には自分だけが知っている秘密鍵とよばれるもう一つのルールブックがありこれを使う。もちろん秘密鍵を奪われてしまったら暗号解読はされてしまう。持ち運んだりしないだけ公開鍵のほうがセキュアだともいえる。

これだけ見ると共通鍵方式が時代遅れに見えるが、現在は共通鍵方式が主流らしい。専門家ではないので間違ってる可能性もあり、その辺はご容赦を。AESという方式がそれで、なりすましだのなんだので話題になったTorにその技術が使われている。

量子コンピュータの出現により人類最先端の暗号化技術も一気に無駄なあがきとなる可能性が秘められている。コードトーカーのような原始的な技術に回帰する日も近いのかもしれない。

まとめ

エニグマかっけ―。もうエニグマって言葉ですでにかっこいい。それが言いたいだけです。

暗号解読〈上〉 (新潮文庫)

暗号解読〈上〉 (新潮文庫)

暗号解読 下巻 (新潮文庫 シ 37-3)

暗号解読 下巻 (新潮文庫 シ 37-3)

んでこれがgist。pythonでかかれたエニグマ