1

現在、私のパスワードの多くは md5 と sha1 が混在した状態で保存されていますが、ソルティングを始めたばかりで、最も安全なパスワードの内訳を知りたいと思っていました。

単純な md5() は簡単に取り消すことができると確信していますが、 md5(sha1(md5($var))); はどうですか? このコンボは難易度が高いですか、それとも必ずしも優れているとは限りません。

また、やっている

$var = $var.'t00lup';
md5($var);

t00lup が秘密鍵であると仮定すると、上記よりも安全ですか?

md5 や sha1 を使用する代わりに、これを行うより良い方法はありますか?

ありがとう

4

5 に答える 5

11

いくつかのこと:

  1. SHA256 を使用するだけです。再ハッシュは必要ありません。

  2. すべてのアカウントに 1 つのソルトをハードコーディングしないでください。ユーザーごとにランダムなソルトを生成し、データベースのユーザー レコードに配置します。そうすれば、誰かがそのソルト用にレインボー テーブルを生成した場合、少なくとも、すべてのユーザー アカウントではなく、その 1 つのユーザー アカウントにのみアクセスできるようになります。

于 2009-09-25T14:08:47.360 に答える
5

多いほど良いとは限りません。Sha256 を使用するだけで完了です。

$var = $var.'t00lup';
$hashedPass=hash('sha256', $var);

hash() の詳細については、こちらをご覧ください。

于 2009-09-25T13:56:43.030 に答える
4

そうしないと、攻撃者は既存の事前計算されたテーブルを使用して、ユーザーが使用したすべての短いパスワードまたは辞書パスワードのハッシュを単純に検索できるため、ソルトの使用は絶対に必要です。これを自分で試すことができます: 非常に悪い (短いまたは辞書の) パスワードの MD5 を取得し、その結果を Google 検索します。ほとんどの場合、どこかでヒットするでしょう。

ソルトを使用すると、既存のテーブルが役に立たなくなり、独自のテーブルを計算すると、非常に機知に富み、やる気のある攻撃者以外は時間がかかりすぎます。各ユーザーの個別のソルトはさらに優れています (そうしないと、ソルトを知っている攻撃者がすべてのユーザーを一度に攻撃できます)。

ハッシュを組み合わせても同様の効果が得られますが、その組み合わせに対して事前計算されたテーブルが存在する可能性があるため、(ソルトなしで) その目的で使用しないでください。

ただし、ハッシュの組み合わせと繰り返しには、攻撃者が辞書攻撃を行うのにかかる時間が長くなるため、それ自体が価値があります。処理する。しかし、辞書攻撃の場合、10,000 倍の時間かかるのは問題です。

この手法は、キーの強化として知られています。

于 2009-09-25T14:37:17.877 に答える
0

VBulletin は md5(md5($password).$salt) のようなものを使用します。大丈夫そうです。

于 2009-09-25T13:59:56.207 に答える
0

ソルティングを行うと、辞書攻撃がより困難になるため、セキュリティが向上すると思います。また、パスワードが短い場合でも、セキュリティレベル全体は問題ありません。

最も重要なことは、実際にはハッシュアルゴリズムと結果のハッシュの長さであるため、sha256 以上を調べる必要があります。

于 2009-09-25T14:02:00.960 に答える