1

パスワードをハッシュする前にソルトを使用すると、ハッシュがより安全になります。レインボー テーブル アタックがはるかに困難 (不可能?) になるため、これは理にかなっています。

複数の塩を使用するとどうなりますか? たとえば、日が月曜日か、月、時間など (または組み合わせ) かを確認します。次に、フィールドを格納するデータベースがあります: (userid、hash1、hash2、hash3...)。

これにより、情報の安全性が向上しますか (または低下しますか)?

例:

1) ユーザーはパスワード「PASS」で登録します。2) システム (この例では php) は、毎日 (7 つのパスワード) の値 (md5($password.$this_day)) を保存します。テーブル password、列 hash_monday、hash_tuesday など。

4

3 に答える 3

6

Your system will be no more secure - you end up with several single salt databases instead of one. In principle it may be even less secure, since you helpfully provide the attacker with 7 hashes to the same string to choose from and he only needs to guess one. These multiple hashes of the same plaintext may also lead to implications to cryptographic strength of the encryption used for passwords (not sure on that one and it will depend on the algorithm used).

于 2012-10-06T07:16:31.080 に答える
4

たぶん、この小さな記事を見てください。あなたのアプローチにはいくつかの間違いがあります。

  1. ソルトは辞書攻撃から保護しません。正しく使用すれば、レインボーテーブルから保護します。
  2. パスワードごとに一意のソルトを使用します。ソルトは、既知の情報から導き出されたものではなく、ランダムな値である必要があります。パスワードと一緒に保存する必要があります。
  3. パスワードのハッシュにMD5を使用しないでください。Md5は壊れていると見なされ、パスワードをハッシュするには速すぎます。既製のGPUを使用すると、1秒あたり8ギガのMD5ハッシュを計算できます(2012年)。これにより、0.1ミリ秒未満で、約500000語の英語辞書全体を総当たり攻撃することが可能になります。
  4. パスワードのハッシュにはBcryptを使用します。phpassのような定評のあるライブラリを使用することをお勧めします。その実装方法を理解したい場合は、上記の記事を読むことができます。

ハッシュ関数(隠しキーや隠し関数など)にシークレットを追加する場合は、パスワードにコショウを追加できます。コショウはデータベースに保存してはならず、秘密にしておく必要があります。攻撃者がパスワードハッシュ(SQL-Injection)にのみアクセスでき、シークレットを持つサーバーにはアクセスできない限り、ペッパーは辞書攻撃から保護できます。

于 2012-10-06T22:12:27.370 に答える
0

このシナリオでは、複数のハッシュが役立つとは思いません。主な理由は、誰かがデータベースを侵害したときに、反対する 7 つの異なるソルトがあることに気づき、知識に基づいてそれらが曜日に基づいていると推測する可能性があるためです。非常に多くの人が MD5 の流行に乗りたいと思っているため、MD5 に根本的な問題はありません。MD5 は壊れたハッシュであると言うタイプの人々は、ハッシュ関数と暗号化ハッシュ関数の間に根本的な誤解を持っています。それらを無視することをお勧めします。暗号化ハッシュ関数が必要な場合は、SHA-2 (またはそのファミリー以上のもの) を使用します。

ご存知のように、ユーザー入力をソルトする必要があります。通常はランダムな値が推奨されますが、別のアプリケーション スペース (データベースの外部) に保存する値にすることもできます。その情報も保護する必要があります。 . パスワードハッシュ関数は、入力ごとに数千回の反復を行うことを強くお勧めします。これにより、データベースでハッシュを照合する自動プロセスが遅くなるためです。

ユーザーが推測しやすいパスワードを使用している場合、辞書攻撃は毎日あなたを打ち負かし、愚かさから保護することはできません.

于 2012-10-07T14:34:44.770 に答える