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

だいくしー(@daiksy)のはてなブログ

daiksyの徒然的なもの 以前のブログはこっち -> http://daiksy.blogspot.jp/

アリスとボブはパスワードつきzipをメールに添付したりしない - 暗号技術入門を読んだ -

読書

パスワードつきzipの添付メールと鍵配送問題

ボブのもとに届けられたアリスからのメール。このメールにはzipファイルが添付されていて解凍にパスワードが必要だ。このパスワードは、添付ファイルの後、アリスから別のメールに記載されて送られてくる。この手順により、最初のメールをイブが盗聴したとしても、イブはパスワードを知らないので添付ファイルを解凍することはできない。

一見すると安全に情報をやりとりしているようにみえるこの形式は、実はまったく安全ではない。ファイルが添付されている最初のメールが盗聴できるのであれば、当然イブは次に送られるパスワードが記載されたメールも盗聴できるからだ。

zipに施されるパスワードの強度はとりあえず気にしないこととして、この情報のやりとりは暗号におけるとても重要な問題をないがしろにしている。それは鍵配送問題と呼ばれる。

暗号の中には、かなり早い段階で「絶対に解読不可能であることが数学的に証明されている暗号」が存在する。使い捨てパッド(ワンタイムパッド)と呼ばれる暗号である。ただし、この暗号を使って情報をやり取りするためには、送信者と受信者が同一の鍵を共有しなければならない。使い捨てパッドで暗号化した文章をボブに送ろうと思っているアリスは、暗号化された文章とともに、暗号化に用いた鍵を安全に(決してイブに盗まれることなく)ボブに届けなければならない。いかにして、安全に鍵を通信相手に届けるか。鍵配送問題は暗号技術における肝だ。パスワードつきzipのメールのやりとりは、この鍵配送問題がずさんすぎるために、秘密の通信としてはまったく意味をなしていない。パスワードが安全に相手に伝わるなら、そもそも暗号化などせずとも文章そのものが相手に安全に伝わるはずだ。

事前にミーティングの場などで、口頭によってパスワードを共有しておく、などの方法であれば若干安全にはなるが、今度はそのパスワードをいかに保存するか、という鍵管理の方法における問題もある。

暗号の歴史は鍵配送問題の歴史

数年前にサイモン・シンの『暗号解読』という本を読んだ。 とても良質なドキュメンタリーで、暗号作成者と暗号解読者の戦いの物語が、克明に描かれている。まるでスパイ小説を読んでいるような錯覚に陥るほど、その筆致は刺激的だ。また、この本は物語としておもしろいだけでなく、きちんとそれぞれの暗号の仕組みをわかりやすく解説してくれる。

暗号の歴史は、鍵配送問題をいかに解決するか、という歴史でもある。サイモン・シンの『暗号解読』で描かれる物語において、人類が獲得した「公開鍵暗号方式」のくだりは、ミステリー小説の解答編を読んでいるような痛快さがある。

この本で人類の壮絶な戦いの物語を読んだあとに、メールにパスワードを記載して送信しようという気持ちには絶対なれない。

暗号技術と、その周辺の人間たちのドラマは、それほどに鮮烈でおもしろい。

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

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

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

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

暗号技術入門 - 第3版 -

数学ガール結城浩による『暗号技術入門 - 第3版 -』

以前から名著として知っていたが、版が新しくなったのをきっかけに読んでみた。 とても読みやすく、暗号技術の奥深さ、面白さがわかるよい本だった。

我々は、日常的に暗号技術を使って生活している。 Amazonでクレジットカードを使って買い物をしているときに、ブラウザに表示されているURLを見てみると、"https://"ではじまるURLが表示されている。 これは、SSL/TLSという暗号通信のプロトコルを使っている印だ。

なにげなくダウンロードして使っているスマートフォンアプリにも、デジタル証明書という暗号技術の一種が使われている。

ITエンジニアであれば、githubを利用する際に鍵ペアを作って、公開鍵を登録したりもしているだろう。

これらの技術は、詳細なアルゴリズムを知らなくても、ちょっとした手順やコマンドを知っていれば誰にでも使うことができる。

暗号技術は、「秘密の通信」を行うための技術である。秘密のやりとりをするための技術であるのだから、暗号化のアルゴリズムも秘密にした方が安全ではないか、と直感的には思ってしまう。ところがそれは間違いで、アルゴリズムが公開され、その強度が世界中の暗号学者によって検証されているオープンな方式の方がはるかに安全なのだ。秘密の通信を行うための技術が、実はオープンであるほうが安全、という一見すると直感に反するこの関係性が、暗号の難しさであり、面白さでもある。

これはとても重要なことで、『暗号技術入門』でも、オープンであることゆえの安全性が、繰り返し語られる。

暗号のアルゴリズムは難しい?

我々は日常的に"https" などで暗号通信を行っているけれど、それが本当に安全かどうかはどうやって判断しているのだろう。マイクロソフトGoogleといった有名企業が実装しているブラウザだから、という理由で安心しているのだろうか。それも決して間違った判断ではないかもしれないが、どうせならアルゴリズムをきちんと知ったうえで、「自分が使っている暗号化方式は、こういう理屈だから安全」と納得したほうがよいのではないだろうか。

暗号技術は数学によって構築されているので、難しそうな印象がある。もちろん、暗号技術に用いられている数学的な要素をすべて理解するのはとても難しい。けれど、なぜその技術が安全なのか、という理屈を理解するのは、実はそれほど難しくない。というより、結城浩という人が、わかりやすく理屈を理解できるように丁寧に整理してくれている。『暗号技術入門』はそういう本だ。

結局は人間の問題

『暗号技術入門』は、「暗号学者の道具箱」として以下の6つの暗号ための道具を詳しく解説してくれる。

また、新しい版では、ビットコインの仕組みや、最近問題になったOpenSSLやSSL/TLSにおける脆弱性の解説など新しいトピックについても書かれている。

ぼくがこの本でとても良いな、と思ったのは、最後に「人間の不完全さ」に触れられていることだ。どんなに強力な暗号を施しても、それらを使うのは結局は人間である。情報を扱うのが人間である以上、「システム管理者になりすまして電話でパスワードを聞く」などの手段によって、いくらでも暗号を解読する手段は存在する。冒頭のパスワードつきzipの添付ファイルなどはまさにその典型で、zipファイルに充分な長さのパスワードを設定したところで、そのパスワードの運用によって安全性はいともあっさり崩壊してしまう。

この人間の不完全さこそが、暗号通信の難しさでもあり、暗号の歴史における物語の面白さでもある。

暗号技術入門 第3版 秘密の国のアリス

暗号技術入門 第3版 秘密の国のアリス