2009-11-18 1 views
12

こんにちは、私はパスワードの塩漬けについて読んだことがありますが、少し奇妙に聞こえるかもしれません。しかし、私はどのように塩を貯蔵して固定するのですか?たとえば、複数のタイヤアーキテクチャでは、クライアントマシンのGUIDを使用してソルトを生成し、ユーザーは単一のマシンに制限されますが、ランダムな塩を使用すると、どこかに格納する必要があります。数日前には、新しいユーザーが作成された後にいつでも、ハッシュとソルトがクライアントシステムで生成されたサンプルアプリケーションが表示され、ソートされたパスワードとハッシュがSQLサーバーに格納されているサーバーに送信されました。しかし、この方法に従えば、データベースが侵害された場合、各パスワードのパスワードと塩分値はX人が利用できるようになります。ですから、私は再度パスワードを暗号化して暗号化し、サーバー側で塩を受け取るべきですか?塩漬けのベストプラクティスは何ですか?塩を塩漬けして貯蔵する最良の方法は何ですか?

答えて

22

ハッシュされたパスワードの隣のデータベースに暗号化されていないsaltを格納することは問題にはなりません。

塩の目的は秘密ではありません。それは、攻撃者がデータベースを手に入れたときに、それぞれのハッシュ(つまりランダム)ごとに異なるようにし、rainbow tablesの使用を打ち負かすのに十分な長さです。

この件については、Thomas Ptacekの件名excellent postを参照してください。

編集@ZJR:塩類が完全に公開されていても、それらはまだ虹のテーブルの利益を奪います。 secure hash functionのためのWikipediaの記事を参照してください:あなたは、塩を持っており、データをハッシュ化されたとき、あなたはそれを逆にできる最善のは、ブルートフォース(ハッシュ関数は暗号学的に安全であることを提供する)n10i @

編集です。塩のサイズは、普及しているbcrypt .gensalt()の実装では128ビットを使用しています。

+0

は、私はどちらか、塩の目的は**公共**することはないと言うだろうハッシングをお読みください。 – ZJR

+0

「ハッシュ関数は暗号で安全です」と説明してください。申し訳ありませんが、私は暗号を初めて使う人です。あなたの返信でも、「虹のテーブルの使用を打ち負かすのに十分な長さ」と言われました。 – Neel

関連する問題