- ベストアンサー
SSLとMD5について
今、ログイン周りを勉強しているのですが、 MD5でハッシュ化すればO.K.と思ってたら、 本の下の方に、 「いくらサーバー側で暗号化しても、パスワードは裸の状態で経路のネットワークを流れてくるわけですから気休めですけどね」 って書いてました。 MD5ってのは、平文で流れる場合、一応やった方がいい、ぐらいの感じなのでしょうか? ・平文で送らないためには、SSLにするしかないのでしょうか? ・SSLにしたら、MD5にしなくてもよいのでしょうか? ・チャレンジ/レスポンス認証というのは、どうやってやるんでしょうか? 「ここら辺の関連性」、「何が違うのか」、「注意したらいい点」、「それぞれのメリット・デメリット」等、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>MD5でハッシュ化すればO.K.と思ってたら、 何をハッシュ化する話ですか?パスワードをDBに保存する際の話でしたら、何らかの文字列を付加した上でMD5とかSHA1とかでハッシュした物だけを保存するのは必須です。これは通信路が何であるかと関係ありません。 ハッシュ化して保存しないと、DBにアクセス出来る人(クラッカーも含む)だと全員のパスワードが見放題です。 一方通信路の方は、盗聴者が罠を仕掛けた状態で、誰かがログインすると平文でパスワードが流れたときにそのパスワードだけが漏れます。そもそも通信路に罠を仕掛けるのは、サーバに侵入するよりは困難なはず。 というわけで、重大度がかなり違います。 平文で通信路を流さないためには、お書きのように、SSLかチャレンジレスポンスがありますが、チャレンジレスポンスだとクライアント側でプログラムが必要ですね。
その他の回答 (2)
- Lchan0211
- ベストアンサー率64% (239/371)
> ・平文で送らないためには、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を使ってハッシュ処理を実行させる必要があります。
お礼
ダイジェスト認証って、初めて聞きました。 取っ掛かりとなる「キーワード」を全然知らないと、何を検索していいのかすら、 分からないので、 こんなのもあるよ、って情報は大変有難かったです。 また、チャレンジ/レスポンス方式もそうですが、 詳しい説明と、有用な参考サイトを教えていただき、 ありがとうございました! みなさんのアドバイスを参考にして、 これから色々、勉強・検討・試行錯誤していきたいと思います。
- はせがわ もぐら(@mogura_198)
- ベストアンサー率66% (14/21)
MD5する理由-> SQLインジェクションなどでパスワードが流出した場合そのまま使われてしまいます。 ですので、ハッシュ化したものを保存しておくのがいいと思います。 出来ればパスワード+SALTしたものをmd5とかsha1かけるのがいいと思います。 SSL-> こちらは通信経路なのでパスワードをハッシュかけるのとは別物ですね。 例えばネカフェやマンションなどはルーターを使用してると思います。このルーターに流れるパケットをのぞき見された場合sslにしていないと丸見えです。
お礼
>出来ればパスワード+SALTしたものをmd5とかsha1かけるのがいいと思います。 回答ありがとうございます。SALTの存在とか、すっかり忘れてました。SALTのこともこれから勉強しときたいと思います。
お礼
回答ありがとうございました。 頭の中がこんがらがってたのですが、 「DB保存」と「通信路」に分けて考えればよいことが分かり、 すっきりしました。 >パスワードをDBに保存する際の話でしたら、何らかの文字列を付加した上でMD5とかSHA1とかでハッシュした物だけを保存するのは必須です。これは通信路が何であるかと関係ありません。 これだけはっきり書いていただくと、分かりやすくて、助かります。 >重大度がかなり違います この辺りの説明も大変分かりやすかったです。