1

パスワードのハッシュなどのさまざまな形式について多くのことを考えてきました。はい、私は塩漬けについて知っていて、おそらくそれをハッシュに追加しますが、これは塩漬けなしです。私はおそらく動的塩漬け技術を使用するでしょう。

それ以外に、以下に示すことを行うのは論理的でさえあるのだろうかと思っていました。

<?php

$data = "David";
$hash_crc32 = crc32($data);
$hash_md5 = md5($data);
$hash_sha1 = sha1($data);
echo '<br /><br />' .$hash_crc32. '<br /><br />' .$hash_md5. '<br /><br />' .$hash_sha1;

?>

エコーは次を出力します。

1180170431

464e07afc9e46359fb480839150595c5

d27937f914ebe99ee315f04449678eccfb658191

$hash_crc32_md5 = $hash_md5 + $hash_crc32 + $hash_sha1 . $hash_md5 . $hash_crc32 . $hash_sha1;

<?php echo '<br /><br />' .$hash_crc32_md5; ?>

そのエコー出力:

5820170431464e07afc9e46359fb480839150595c51180170431d27937f914ebe99ee315f04449678eccfb658191

では、このようなパスワードをハッシュするのはやり過ぎだと思いますか?ソルティングを使用したハッシュの1つの形式に固執する必要がありますか?本当に当たり前のように思えるので、私がこのようなことを最初に考えることはできないことを私は知っています。

また、このフォームで衝突衝突などに遭遇するのはどれほど難しいと思いますか?

ご回答ありがとうございます!:)

4

2 に答える 2

4

やり過ぎですか?それについてはコメントできません。(情報理論の観点から)1つの方法だけを使用するよりもおそらく安全性が低いと述べます。

その理由は、複数のハッシュアルゴリズムの結果を提供することで、実際にハッカー候補にさらに多くの情報を提供しているためです。

これらのハッシュメソッドで使用されるアルゴリズムについては、秘密は何もありません。ハッシュは、元に戻すことができますが、同じハッシュを生成する可能性のあるテキストが多数あるという事実により、情報を削除します。

ただし、複数のハッシュ出力を提供する場合、たとえば、特定のMD5を生成できるテキストの数が、特定のSHAxを生成するテキストと交差するため、これらの可能性の多くを効果的に削除できます。

あなたが持っているMD5ハッシュの観点から考えてください。たぶん、その価値を生み出すことができる何兆もの異なるテキストがあります。これは非常に大きな検索スペースです。

次に、SHAxハッシュについて考えます。それを生み出すことができる何兆もの異なるテキストもあるかもしれません。ここでも大きな検索スペース。

しかし、これら2つの検索スペースの交差が42の異なるテキストである場合、それをクラックするのにそれほど時間はかかりません。

暗号化は、心臓の弱い人や、その分野で博士号を取得していない人のためのものではありません:-)

于 2012-01-13T03:29:01.990 に答える
1

ハッシュされたパスワードのポイントは、最初にハッシュしたのと同じ方法でプレーンテキストのパスワードをハッシュし、ハッシュされた値を元に戻すことなく、保存されているハッシュと比較することで、パスワードを検証できることです。その平文形式。その意味で、あなたがしていることはその目的から何も奪うことはありません。

ハッシュの弱点は大きく2つあります。考えられるすべてのパスワードを調べてハッシュし、保存されているハッシュと比較するのが比較的安価な場合は、ハッシュをブルートフォースすることができる場合があります。その意味で、トリプルハッシュは1つのプレーンハッシュよりも計算に少し時間がかかるため、攻撃者はすべての組み合わせを試すためにより多くの時間を必要とするため、この手法はセキュリティを少し追加します。しかし、それはそれほど重要ではありません。これを実現するためのより良い方法は、低速のハッシュアルゴリズムを使用するか、ハッシュ操作を特定の回数(100〜1000回以上)繰り返すことです。

もう1つの弱点は、レインボーテーブルです。このテーブルでは、考えられるすべてのパスワードをハッシュ値にマップするテーブルを作成するという問題がすでに発生しています。あなたのテクニックは、あなたの特定のアルゴリズムがどこかに既存のレインボーテーブルを持っている可能性が低いという点で、ここで少しセキュリティを追加します。2人のユーザーが同じパスワードを持っている場合、それらは両方とも同じハッシュにハッシュされるため、攻撃者は1対2を取得するため、役に立ちません。これは、攻撃者がすべてのユーザーに対して1回だけすべてのパスワードを試すのではなく、すべてのユーザーに対してすべてのパスワードを個別に試す必要があることを意味するため、ユーザーごとに固有のソルトが重要な場所です。

ですから、あなたがしていることは、まだ改善されていないことを実際に追加することはなく、そして最も重要なことに、まだユニークな塩を欠いています。

于 2012-01-13T03:34:10.663 に答える