質問: sslとmd5について 今、ログイン周りを勉強しているのですが、 md5でハッシュ化すればo.k.と思ってたら、 本の下の方に、 「いくらサーバー側で暗号化しても、パスワードは裸の状態で経路のネットワークを流れてくるわけですから気休めですけどね」 って書いてました。 md5ってのは、平文で流れる場合、一応やった方がいい、ぐらいの感じなのでしょうか? ・平文で送らないためには、sslにするしかないのでしょうか? ・sslにしたら、md5にしなくてもよいのでしょうか? ・チャレンジ/レスポンス認証というのは、どうやってやるんでしょうか? 「ここら辺の関連性」、「何が違うのか」、「注意したらいい点」、「それぞれのメリット・デメリット」等、教えてください。
回答: > ・平文で送らないためには、sslにするしかないのでしょうか? md5等のハッシュ関数をうまく利用して、パスワードまたは パスワードをハッシュ化したものを直接送らなくても、 正しいパスワードを知っていることを伝える方法があります。 それが、チャレンジ/レスポンス方式です。 > ・sslにしたら、md5にしなくてもよいのでしょうか? 他の方も書かれている通り、sslは通信路の暗号化に役立ちますが、 通信路に関係なく、パスワードをdbに保存する際は、md5等の ハッシュ化をすべきです。 > ・チャレンジ/レスポンス認証というのは、どうやってやるんでしょうか? http://www.ipa.go.jp/security/awareness/vendor/programmingv1/b09_01_main.html の「チャレンジ/レスポンス方式」の解説がわかりやすいと思いますので 参考にしてください。 httpプロトコルレベルで、md5を使ってチャレンジ/レスポンス方式で 認証する方式を「ダイジェスト認証」と言います。ダイジェスト認証は apacheやiis等のサーバ側を設定するだけで簡単に利用できますし、 クライアント側もieやfirefox等の一般的なブラウザなら必ず対応しています。 (参考) http://www.adminweb.jp/apache/allow/index8.html フォーム認証でチャレンジ/レスポンス方式を実現する場合は、 ブラウザ上でjavascriptを使ってハッシュ処理を実行させる必要があります。