6

私は長い間、PHPassを使用してパスワードをハッシュしています。パスワードを適切にハッシュするために完全に理解していない(または無視している)ことがまだあることを認めます。そのため、今日、私はパスワードについて見つけたすべての情報を確認していました。

PHPassドキュメントを確認して、私はこれに足を踏み入れました:

実際のハッシュに加えて、phpassは、新しいパスワードまたはパスフレーズがハッシュされると、ランダムなソルトを透過的に生成し、ハッシュタイプ、ソルト、およびパスワード拡張反復カウントを、返す「ハッシュエンコーディング文字列」にエンコードします。phpassは、保存されているハッシュに対してパスワードまたはパスフレーズを認証するときに、同様に透過的にハッシュタイプ識別子、ソルト、および「ハッシュエンコーディング文字列」からの反復カウントを抽出して使用します。したがって、あなたは自分で塩漬けやストレッチを気にする必要はありません-phpassはあなたのためにこれらを世話します。

気になった文章を太字にしました。
私はいつも、塩は攻撃者に知られてはならないという意味で、いくらか秘密にすべきだと思っています。したがって、正しく理解されていれば、PHPassは同じハッシュで使用されているソルトを保存するため、パスワードを比較して有効かどうかを確認するときに使用できます。
私の質問は

  1. これは安全ですか?ハッシュが危険にさらされている場合、攻撃者はパスワードのハッシュに使用されるソルトを持っています...ここで私が見逃していることがあります。
  2. 私はここでパスワードのソルトについて本当に自由に悩んでいますか?本当にPHPassに頼ることができますか?
4

3 に答える 3

3

少し背景
ソルトは秘密にすることを意図したものではなく、使用する各インスタンスに固有のハッシュ結果を確認することでソルトが「機能」します。これは、計算されたハッシュごとに異なるランダムソルト値を選択することによって行われます。

それが知られているとき、塩の意図は妥協されません。攻撃者は、各ハッシュを個別に攻撃する必要があります。したがって、パスワードと一緒にソルトを保存するだけで済みます。

それで、PHPassは安全ですか?
はい!PHPass(ベストプラクティスによる)は、強力なランダムソルトを生成します。よくレビューされた質の高いライブラリです。

興味のあるリンク
パスワードを安全にハッシュする方法は?
塩の保管方法は?
パスワードハッシュは塩+コショウを追加しますか、それとも塩で十分ですか?
ソルトジェネレーションとオープンソースソフトウェア

于 2012-08-27T10:30:08.543 に答える
1

私が正しく理解していれば、ソルトは主に事前計算されたハッシュ/レインボーテーブル攻撃を阻止するために使用されます。使用されるハッシュが合理的にグローバルに一意になるように生成されている限り(たとえば、PHPassでハードコーディングされていない場合)、問題はありません。

于 2012-08-27T10:27:22.507 に答える
1

塩の目的は秘密にすることではありません。目的は、各ハッシュ入力に一意のコンポーネントを追加することです。これにより、同一のパスワードが同一のハッシュにハッシュされなくなり、各ハッシュを個別に試行する必要があるため、ブルートフォースプロセスがより困難で時間がかかります。

はい、ソルトが秘密の場合はわずかに安全ですが、アプリケーションにもソルトが必要であるため、実際には実現が困難です。そのため、パスワードにもアクセスできる場所に保存する必要があります。したがって、実際には、攻撃者がパスワードハッシュを取得すると、通常、攻撃者はとにかくソルトを取得することもできます。

于 2012-08-27T10:28:58.857 に答える