0

私はセキュリティがいくらか重要なサイトを構築していて(それでは、いつ重要ではないのですか?)、パスワードを保存するための最良の方法を探していました。MD5にはSHA-1と同様に衝突の問題があることを知っているので、SHA-256またはSHA-512のいずれかを介してパスワードを保存することを検討していました。

小さいハッシュバリアントではなく、長いハッシュバリアントを格納する方が賢明ですか?(つまり、512対256)SHA-256でエンコードされたパスワードと比較して、SHA-512でエンコードされたパスワードを解読するのにかなり長い時間がかかりますか?

また、パスワードに「ソルト」を使用する方法についても読みました。これは何で、どのように機能しますか?ソルト値を別のデータベースフィールドに保存するだけですか?ハッシュ値の計算の一部としてそれをどのように使用しますか?

4

3 に答える 3

3

パスワードの保存には、単なるハッシュ関数以上のものが必要です。必要なもの:

  • 非常に遅いハッシュ関数(ブルートフォース攻撃がより困難になるように)
  • ソルト:公に知られている値で、ハッシュに沿って保存され、ハッシュパスワードごとに区別され、パスワードハッシュプロセスに入力されます。ソルトは、攻撃者が複数のパスワードを効率的に攻撃するのを防ぎます(たとえば、事前に計算されたハッシュテーブルを使用する)。

したがって、 bcryptが必要です。

ハッシュ出力サイズのポイントについて:そのサイズがnビットの場合、nは、攻撃者がハッシュ関数を2n現実的に計算できないようなものでなければなりません。そのためには80ビットで十分です。したがって、128ビットの出力はすでにやり過ぎです。MD5は速すぎるため(ただし、MD5の100000のネストされた呼び出しは十分に遅い可能性があります)、MD5には構造上の弱点がいくつか見つかっており、パスワードのハッシュのセキュリティに直接影響を与えないため、MD5は使用したくないでしょう。それにもかかわらず、悪い広報です。とにかく、自家製の構造ではなく、bcryptを使用する必要があります。

于 2011-09-15T00:38:49.177 に答える
0

衝突はシナリオに関連しないため、MD5の弱点は関連しません。ただし、最も重要なことは、計算に長い時間がかかるハッシュを使用することです。http://codahale.com/how-to-safely-store-a-password/およびhttp://www.jasypt.org/howtoencryptuserpasswords.htmlをお読みください(Javaを使用していない場合でも、この手法は引き続き有効です) 。

他にも同様に機能するハッシュがあるので、どのような場合でもMD5には近づかないでしょう。

于 2011-09-14T07:58:50.487 に答える
0

ここでの答えのいくつかはあなたに疑わしいアドバイスを与えています。IT Security Stack Exchangeにアクセスして、「パスワードハッシュ」を検索することをお勧めします。あなたはたくさんのアドバイスを見つけるでしょう、そしてそれの多くはセキュリティスタック交換の人々によって注意深く精査されました。または、彼が何について話しているかを知っている@ThomasPorninを聞くこともできます。

于 2011-09-16T23:46:19.443 に答える