1

パスワードを保存する必要があります (保存される実際の情報は非常に具体的なビジネス情報ですが、パスワードと比較して質問を簡単にすることができます)。パスワードはハッシュ化/暗号化する必要があります。

パスワードを読み取れるようにしたいのではなく、どのユーザーが同じパスワードを持っているかを知りたいのです。

常に同じソルトを使用crypt()するハッシュを使用するとどうなりますか?CRYPT_BLOWFISH

パスワードをハッシュ/暗号化して、データベースが侵害された場合に攻撃者がそれらを読み取ったり復号化したりできないようにするにはどうすればよいでしょうか?

4

4 に答える 4

1

常にハッシュを探しているパスワードを使用すると、パスワードを解読したくない、または解読する必要がなくなります。したがって、あなたが探しているのは、強力なハッシュアルゴリズム、blowfish または SHA512 です。異なるユーザー パスワードの比較に関する質問については、システム全体のセキュリティが大幅に低下します。

各パスワードにランダムなソルトを含めて、ハッシュを事前に計算できないようにする必要があります。そのため、同じパスワードでもユーザーごとに異なるハッシュが作成されます。そうしないと、攻撃者が同じパスワードを使用しているユーザーを見つけて使用する可能性があります。彼らの利益に。すべてのパスワードに同じソルトを使用するとその目的が無効になり、何も使用しないとレインボー テーブルが使用できるようになるため、アプリケーションの安全な設計が必要な場合は、その特定の機能を犠牲にする必要があります。

編集:申し訳ありませんがコメントを削除し、回答として投稿しました

妥協点を探している場合は、おそらくすべてのパスワードに共通する大きなランダムソルトを使用して、多くのハッシュ反復を検討していると思います。これにより、パスワードの解読に使用できる事前計算済みのテーブルが既に存在しないことが保証され、解読時間が長くなります。アルゴリズム チェーンもオプションである可能性がありますが、多くのユーザーがいる場合、パフォーマンスの問題が発生する可能性があります。基本的に、ユーザーのパスワードを比較できるようにしたい場合は、ハッシュの計算に時間がかかるようにします。これにより、クラッキング時間が大幅に増加します。繰り返しますが、これは妥協であり、この問題を回避するための最も効率的で安全な方法ではありません。

于 2013-10-05T01:22:15.567 に答える
0

それは完全にあなたのビジネス情報が何であるかに依存します. ハッシュは復号化できないため、暗号化よりもハッシュの方が望ましいことはすでに見ました(そうでなければ、別の方法で質問したでしょう)。

パスワードのように情報をハッシュできない問題は、ソルトが一意であり、ハッシュ関数が比較できないハッシュ値になることです。ソルトなしで実行できる場合は、目的に合わせてハッシュ関数を使用できます。

パスワードは通常短いテキストであるため、ソルティングが行われます (人々はそれらを覚えておく必要があります)。辞書またはレインボー テーブルをチェックすることで、元のパスワードを非常に迅速に見つけることができましたが、salt+password テキスト用の既存のレインボー テーブルはありません。別の言い方をすれば、特定の長さの非常に強力なパスワードは、安全のためにソルトする必要はありません。ビジネス情報に十分な一意の情報 (エントロピー) がある場合は、ソルトなしでハッシュを行い、BCrypt または PBKDF2 を使用できます。

于 2013-10-05T19:46:41.353 に答える
0

機密情報を保存するには、ソルトとバイトの配列が必要です。次に、別の場所に保存されているマスターキーを使用してペアを安全に暗号化できます. 2 フェーズ暗号化を使用すると、セキュリティ上の目的で必要に応じて何度でもキーをロールできます。アプリケーションは、データを比較するために断片を組み合わせることができる必要があります。

于 2013-10-05T01:17:13.543 に答える
0

パスワードについては、SO や他の Web サイトの私や他の多くの人が Bcrypt を強く推奨しています。Bcrypt は計算集約型のハッシュ アルゴリズムであり、ブルート フォースに対して低速でコストがかかるように設計されています。

Bcrypt の詳細については、こちらの回答を参照してください: How do you use bcrypt for hashing passwords in PHP?

値の比較については、Bcrypt ではできませんが、値が正しいかどうかを確認できます。

于 2013-10-05T01:31:14.387 に答える