md5 は安全か?
2007年4月23日
hsur さんがブログで、APOP の脆弱性について書かれている。ちょっと調べてみた。
どうやらこれは、md5 の問題というよりも、APOP の問題のようである。今回報告されたAPOP脆弱性をつくためには、中間者攻撃が必要である。そもそも、この中間者攻撃自体がかなり難しい(思いつくところでは、ルーターの乗っ取り、DHCP サーバの乗っ取り、hosts ファイルの改変など)。
中間者攻撃を常に意識しないといけないとなると、暗号化されていない web サイト(http:)へは、一切情報を送れなくなり、SSL などで常に暗号化しておかないといけないということである。しかも、ここで用いられる公開鍵は、常に認証されたものでなければならない。たとえて言うならば、『外に出かけるときは防弾チョッキを忘れずに』だとか、『自宅の周りは、10メートルの高さのコンクリート壁で固めましょう』というところか。
話を md5 に戻して、『MD5は、メール以外にも会員制サイトに入る際のパスワードの暗号化などインターネットの世界で広く使われている。さらに強力な関数に替えるなどの処置が必要だ』(読売新聞)というのは、論点がずれていると思われる。APOP で用いられているパスワード暗号を中間者攻撃で読み取ったからといって、同じ方法が『会員制サイトに入る際のパスワードの暗号化』の解読に使えるわけではない。APOP では、md5 に通す前の文字列としていろいろなものがトライできるがためにこの脆弱性が出てしまったわけで、この方法は単純にmd5で暗号化して保存してあるパスワードの解読に用いることは出来ない。
もちろん、将来的にmd5暗号を短時間に解読できる方法が発見される可能性はある。しかし、現時点ではそれは見つかっていない。より高い強度の暗号に切り替えることはおそらく良いことではあるが、今日この時点ですぐに切り替える処置が必要だとは思われない。この問題は、APOP の脆弱性とはまったく無縁の話である。付け加えれば、ここで言っている『さらに強力な関数』の解読方法のほうが、md5 の解読方法よりも先に発見されてしまう可能性すらある。
今回の APOP における問題を要約すると、
APOP を認証に用いることにセキュリティー上の意味はなく、平文を用いる方法(POPなど)とさほど変わりがなくなった。
といったところか。
Nucleus におけるパスワード管理では、ログインするときにパスワードが平文で送られる。これが何とかならないかといろいろ考えているが、今回のこの問題はそういった方法を考える上で、非常に良い参考になりそうである。
どうやらこれは、md5 の問題というよりも、APOP の問題のようである。今回報告されたAPOP脆弱性をつくためには、中間者攻撃が必要である。そもそも、この中間者攻撃自体がかなり難しい(思いつくところでは、ルーターの乗っ取り、DHCP サーバの乗っ取り、hosts ファイルの改変など)。
中間者攻撃を常に意識しないといけないとなると、暗号化されていない web サイト(http:)へは、一切情報を送れなくなり、SSL などで常に暗号化しておかないといけないということである。しかも、ここで用いられる公開鍵は、常に認証されたものでなければならない。たとえて言うならば、『外に出かけるときは防弾チョッキを忘れずに』だとか、『自宅の周りは、10メートルの高さのコンクリート壁で固めましょう』というところか。
話を md5 に戻して、『MD5は、メール以外にも会員制サイトに入る際のパスワードの暗号化などインターネットの世界で広く使われている。さらに強力な関数に替えるなどの処置が必要だ』(読売新聞)というのは、論点がずれていると思われる。APOP で用いられているパスワード暗号を中間者攻撃で読み取ったからといって、同じ方法が『会員制サイトに入る際のパスワードの暗号化』の解読に使えるわけではない。APOP では、md5 に通す前の文字列としていろいろなものがトライできるがためにこの脆弱性が出てしまったわけで、この方法は単純にmd5で暗号化して保存してあるパスワードの解読に用いることは出来ない。
もちろん、将来的にmd5暗号を短時間に解読できる方法が発見される可能性はある。しかし、現時点ではそれは見つかっていない。より高い強度の暗号に切り替えることはおそらく良いことではあるが、今日この時点ですぐに切り替える処置が必要だとは思われない。この問題は、APOP の脆弱性とはまったく無縁の話である。付け加えれば、ここで言っている『さらに強力な関数』の解読方法のほうが、md5 の解読方法よりも先に発見されてしまう可能性すらある。
今回の APOP における問題を要約すると、
APOP を認証に用いることにセキュリティー上の意味はなく、平文を用いる方法(POPなど)とさほど変わりがなくなった。
といったところか。
Nucleus におけるパスワード管理では、ログインするときにパスワードが平文で送られる。これが何とかならないかといろいろ考えているが、今回のこの問題はそういった方法を考える上で、非常に良い参考になりそうである。