5

私は現在プログラムを作成しており、その一部にはパスワードハッシュを安全に作成してデータベースに保存することが含まれており、phpassフレームワークに出くわしました。これは強く推奨されるようです。phpass では、ハッシュ (/dev/urandom からの読み取りなど) に使用するために可能な限り真にランダムなソルトを生成するために、かなりの時間を費やしているようです。

私の質問は、単に使用するのではなく、これを行う利点は何uniqid()ですか? ハッシュに使用されるソルトがランダムではなく互いに異なることを確認することがポイントではありませんか? 本当にランダムなソルトを使用することは、ユニークなソルトを使用するよりも実際には悪いことではないでしょうか?

編集:私の質問は、コンピューター環境に「真の」ランダム性が存在するかどうかに関するものではなかったので、少し言い間違えたかもしれませんが、私の質問は、「より多くの」ランダムソルトがより多くの一意性よりも利点があるかどうかという線に沿ったものでした塩として。

4

4 に答える 4

1

私はエクスプロイトのいくつかの前例への参照を見つけようとしています (そして苦労しています!) が、uniqid() によって生成されるようなランダムな値とは対照的に、暗号的にランダムなソルトのアイデアは、暗号化スキームへの攻撃から保護するのに役立ちます暗号文のやり方。疑似乱数ジェネレーターによって生成された一意の ID などの予測可能なパターンを持つソルトは、暗号文からその変動性の一部を取り除きます。もちろん、暗号化では、予測不可能性が求められます。

確かに、選択したフレームワーク (つまり、.NET の RNGCryptoServiceProvider) で暗号的に安全な乱数ジェネレーターを使用できる場合は、より予測可能なパターンよりもこれを選択します。これに関する良い前例やホワイトペーパーを見つけられるかどうか見ていきます。

于 2011-08-13T03:03:12.813 に答える
-1

マイク、別の回答で述べたように、これはソルトの問題ではないと思いますが、真の/疑似ランダム性について本当に心配している場合は、random.org の数値を使用できます。 違い確認し、PHP で真の乱数を取得する方法を確認してください

于 2011-08-13T14:38:36.447 に答える
-9

ソルトもハッシュ化されたパスワードと一緒に保存する必要があるため、問題ではないと思います。したがって、攻撃者はソルトを取得し、ソルトをどのように生成したかに関係なく、攻撃は同じになります。

(OT ディスカッション: パスワードを保存するためにソルトを使用することの大きな利点はないと主張しました。攻撃者が特定のハッシュされたパスワードのソルトを取得すると、とにかく辞書攻撃を行うことができます...攻撃者は再ハッシュする必要があるため、遅くなります。各パスワードソルトの辞書ですが.. md5() は地獄のように高速で、攻撃に 5 分または半日かかる場合、本当の違いは何ですか...ソルトを使用しても、ソルトを使用しない場合よりも安全だとは感じません。)

編集 - 議論の結論:ソルトはパスワードのクラックに必要な時間に大きな違いをもたらしますが、パスワードのハッシュに md5() を使用しないでください! bcrypt() のような非常に遅いハッシュ関数を使用するか、md5() を使用する必要がある場合は、何千回も呼び出してください!

于 2011-08-13T00:48:24.793 に答える