APOPの問題について
APOPに脆弱性が発見された、というニュースが広まっています。
各所を見ると、若干誤解されているきらいがありますので、ちょっと解説しましょう。
今回の脆弱性の根本的な問題点は、APOPで使用されているハッシュ関数であるMD5にあります。
ハッシュ関数とは、例えば「Hello」というデータ列をこの関数で計算すると、決まった長さの値(ハッシュ値)「8b1a9953c4611296a827abf8c47804d7」を作る関数のことです。特徴としてデータ列からハッシュ値を作るのは簡単ですが、ハッシュ値からデータ列を作ることは難しい、という点があります。このハッシュ値になるのは、そのデータ列以外に無いとされていたのですが、ここに問題が生じました。
MD5は、既に2004年にはメッセージの衝突が理論上では発見されており、同じハッシュ値から異なるデータ列を見つけること(強衝突といいます)が出来るとされました。翌2005年にはそれを実証する攻撃用プログラム(PoCといいます。Proof of Conceptの略)が発表されています。
ちなみに、適当なハッシュ値になるようにデータ列を改竄すること(弱衝突といいます)は破られていないため、ファイルの改竄チェックなどではまだ使えるはずです。(あくまで、"はず"、です…。時間の問題かもしれませんが)さらに言えば、別のハッシュ関数であるSHA1にも2005年には強衝突耐性が破られています。
話を元に戻しましょう。なぜAPOPが危険なのか。
APOPは、認証を行う際にMD5を使用しています。具体的には、サーバからPCへ「毎回変わる特定の文字列」を送ります。そしてPCからは、その「毎回変わる特定の文字列」+「ユーザのパスワード」をMD5でハッシュ化してサーバに送信します。こうすることで、毎回変わるハッシュ値を使ってその中にパスワードを隠蔽してサーバに送ることができました。(毎回変わるハッシュ値と、ハッシュ値からはデータ列はわからないことから盗聴に強いとされてきました。)
今回発表された攻撃手法では、MD5の衝突の問題と「毎回変わる特定の文字列」に細工をすることでパスワードを解析しています。その結果、数時間で破ることができた、ということです。
解析が完了するまでの間、攻撃側は「毎回変わる特定の文字列」をPCに送りつづける必要がありますし、PCはそれを受けてハッシュ値を送り続ける必要があります。そのため、状況的にすぐにどうこうされるわけではない脆弱性なのですが、APOPを使わないに越したことはありません。
そういえば、私はあまりメールをPOPしたことが無い気がしました。以前はSMTP直受けでしたし、最近はWebメールですし。何か、メールを使っているという感覚がもう既にありません。
トラックバック
このエントリーのトラックバック:
http://news.brain-gate.net/mt-tb.cgi/236

