TCP/IPアレルギー撲滅ドリル【番外編】 第3回
読み出しを暗号化しないpop3やapopメールは危険か?
福永勇二
インタラクティブリサーチ
2005/12/13
前回「メールを安全に読み出すpop3s 」に引き続き、メールを安全に読み出すための仕組み、pop3s、apop、pop3それぞれの性質を比較。PCからメールサーバまでpop3でも安全なケースもあるというが、pop3が安全でないケースはどんなときか?メールの転送中は安全なのか?
はたまた、pop3で読み出しだけ暗号化しても無意味なのではないか、などの素朴な疑問をさらに深く迫っていきます。
pop3s、apop、pop3を比較する
前回「メールを安全に読み出すpop3s 」に引き続き、pop3s、apop、pop3それぞれの性質にさらに深く迫っていきます。表1 で○は安全、×は安全でないことを表しています。また○の下にある説明は、安全にするための仕組みを書きました。
まずpop3は、本人確認、一覧読み出し、本文読み出し、いずれも安全ではありません。apopは、「ハッシュ」という暗号化の仕組みを使って本人確認は安全に行えます。しかしメール一覧やメール本文の読み出しは盗聴される可能性があります。一番安全なのはpop3sです。TLS/SSLの仕組みを使うことで、通信内容を暗号化(盗聴防止)し、また通信相手を特定する(なりすまし防止)ことができます。
プロトコル
(1)本人確認
(2)一覧読出
(3)本文読出
pop3
×
×
×
apop
○
ハッシュ
×
×
pop3s
○
SSL
○
SSL
○
SSL
表1 pop3s、apop、pop3の機能比較
ネットワークに生パスワードを送らずにすむapop
少し話がそれますが、apopで使われている「一方向ハッシュ関数」を簡単に説明しておきましょう。「一方向ハッシュ関数」とは、図1 のような性質を持った関数です。ちょっとややこしいですが、じっくり読んでみてください。
一方向ハッシュ関数は……
メッセージが不正に書き換えられていないか(改ざん)を見つけ出したり、パスワードを保護するためなどに使う
メッセージダイジェスト関数とも呼ばれる
具体的にはMD5やSHA-1といった関数がある
図1 一方向ハッシュ関数の性質
何かの文字列を一方向ハッシュ関数に与えると、長さが一定の別の文字列に変換されます。図では「I have a pen」という文章が「4a25880d19034b05ea27a3de98109343」になっています。では元の文字列を「I
have a pin」に変えるとどうでしょうか? 今度は「e2f830b0e1b4b9488b8f853cc53562e4」という結果になりました。元の文章は1文字違うだけなのに、結果はまったく違います(図中(1))。また、このとき結果から元のデータを逆算することは困難です(図中(2))。
このような性質のある一方向ハッシュ関数は、メッセージが不正に書き換えられていないか(改ざん)のチェックによく使われます。これは1文字違っているだけで結果がまったく違うこと、また結果から逆算するのが困難な性質を利用するものです。またapopでパスワードの保護に使う場合は、主に逆算がとても難しい性質を利用していると考えられます。
なお、一方向ハッシュ関数では、極めてまれですが、図中(3)のように元の文字列がまったく違うのに同じ結果をもたらすことがあります。ただ、その確率は実用上ほぼゼロになるように設計されています。また同じ結果が得られる元の値を逆算することは困難です。
apopでは、パスワードをそのまま送る代わりに、一方向ハッシュ関数の結果をやりとりすることで、パスワードが正しいことを確認しています。
具体的には、図2 のような動作をします。
図2 パスワードをやりとりしない認証
まずpopサーバは「チャレンジ文字列」をユーザーPCに送ります。ユーザーPCでは、チャレンジ文字列にパスワードをくっつけて、それをMD5という種類のハッシュ関数に与えます。そうして得られた結果を「レスポンス文字列」として送り返します。
popサーバは、チャレンジ文字列と自分自身が知っているパスワードから、MD5によってレスポンス文字列を作っておきます。ユーザーPCからレスポンス文字列を受け取ったら、自分が作ったものと比較して、両方が同じだったら正しいパスワードだと判断します。これだけです。
ここでpopサーバとユーザーPCの間で、パスワードのやりとりをしていないことに注目してください。やりとりしているのはレスポンス文字列です。一方向ハッシュ関数の性質上、レスポンス文字列からその元になった値(チャレンジ文字列+パスワード)を逆算することは困難です。そのため、いくらネットワークが盗聴されたとしても、盗聴者がパスワードを知ることはできない、というわけです。
なお、実際のpopのやりとりを「連載第4回 TCP/IPアレルギー撲滅ドリル【超実践編】ちょっとジミなPOP3でメールを読む 」で紹介していますので参考にしてください。
TCP/IPアレルギー撲滅ドリル
TCP/IPへのアレルギーを撲滅すべく、試しながらナットクしていただく超実践型入門ドリル。
TCP/IPアレルギー撲滅ドリル【下位レイヤ編】
正確で確実な通信をするための下位レイヤプロトコル。あなたはTCP/UDP/IP/ARPを制覇できるか?
TCP/IPアレルギー撲滅ドリル【総まとめ編】
ウェブブラウザでウェブページが見られるまでの各プロトコルの動きをパケットになった気分で冒険してみよう
TechTargetジャパン
Master of IP Network フォーラム 新着記事
実機では測定できない性能を測定? (2012/2/7) システムの完成前に、達成し得る性能値や必要なサーバリソースを知るには? その解となる「性能シミュレーション技法」を解説
性能チューニング個所の検討 (2012/1/30) アプリのチューニングや環境増強で、どの程度改善が見込める? 今回からは「実際に活用できる性能対策」を解説します
遅いところを直すだけでいいのですか? (2012/1/24) 負荷が集中したときの性能ボトルネックを改善するのに、アプリケーションサーバとDB、どちらを優先すべきでしょう?
cloudfoundry.comを使ってみよう (2012/1/19) VMwareが提供するPaaSプラットフォーム「CloudFoundry」。注目を集めるこの基盤を活用してPaaSを構築!
キャリアアップ
**先週の人気講座ランキング**
〜 Android編 〜