ハッシュ機能とパスワードの保護を維持します
質問
パスワードについては、さまざまな形式のハッシュなどについて多くのことを疑問に思っています。はい、私は塩漬けについて知っていて、おそらくハッシュにそれを追加するでしょうが、これは塩漬けのないものです。私はおそらくダイナミックな塩漬け技術を使用するでしょう。
それとは別に、私が以下に示したことをするのは論理的でさえあるのではないかと思っていましたか?
<?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
D27937F914EBE999EE315F04449678ECCFB658191
$hash_crc32_md5 = $hash_md5 + $hash_crc32 + $hash_sha1 . $hash_md5 . $hash_crc32 . $hash_sha1;
<?php echo '<br /><br />' .$hash_crc32_md5; ?>
そのエコー出力:
5820170431464E07AFC9E46359FB480839150595C51180170431D27937F914EBE99EE315F04449678ECFB658191
それで、あなたはそれがこのようなパスワードをハッシュするための過剰な殺害になると思いますか?塩漬けでハッシュする1つの形式に固執する必要がありますか?私はこのようなことを最初に考えることはできないことを知っています。
同様に、この形でハッシュする衝突などを駆け抜けることはどれほど難しいと思いますか?
ご回答ありがとうございます! :)
解決
それはやり過ぎですか?それについてコメントすることはできません。私 意思 おそらくそうだと述べてください 以下 方法の1つだけを使用するよりも安全です(情報理論の観点から)。
その理由は、あなたが実際に供給しているからです もっと 複数のハッシュアルゴリズムの結果を与えることにより、将来のハッカーへの情報。
については何もありません アルゴリズム これらのハッシュメソッドで使用されます。ハッシュすると、可逆的であるが、あるという事実により情報が削除されます 大きい 同じハッシュを生成できる可能性のあるテキストの数。
ただし、複数のハッシュ出力を提供する際には、特定のMD5を生成できるテキストの数は、これらの可能性の多くを効果的に削除します。 交差 特定のShaxを生成するものと。
あなたが持っているMD5ハッシュについて考えてください。たぶん、その価値を生み出すことができる1兆種類のテキストがあります。それは非常に大きな検索スペースです。
ここで、Shax Hashを検討してください。また、それを生成できる1兆種類のテキストがあるかもしれません。再び大きな検索スペース。
しかし、場合 交差 これらの2つの検索スペースのうち、42の異なるテキストがあり、クラックするのにそれほど時間はかかりません。
暗号化は、気弱な人向けではなく、現場で博士号を持っていない人のためではありません:-)
他のヒント
ハッシュされたパスワードのポイントは、プレーンテキストパスワードを初めてハッシュした場合にハッシュしてから、ハッシュ値を逆にすることができずに保存されたハッシュと比較することにより、パスワードに対してパスワードを検証できることです。そのプレーンテキストフォーム。その意味で、あなたがしていることは、その目的から何も奪われません。
ハッシュの弱点はほぼ2つあります。すべての可能なパスワードを通過し、ハッシュして保存されたハッシュと比較することが比較的安価な場合、ハッシュを拡大することが可能かもしれません。その意味で、あなたのテクニックは、トリプルハッシュのものが1つのプレーンハッシュよりも計算に少し時間がかかるため、少しのセキュリティを追加します。そのため、攻撃者はすべての組み合わせを試すためにより多くの時間を必要とします。それは本当に重要ではありません。より遅いハッシュアルゴリズムを使用するか、単にハッシュ操作を一定数(100〜1000回以上)繰り返すことを達成するより良い方法です。
もう1つの弱点はレインボーテーブルで、誰かがすでにハッシュされた値にすべての可能なパスワードをマッピングするテーブルを作成するトラブルを経験しました。あなたの手法は、あなたの特定のアルゴリズムがどこかに既存の虹のテーブルを持っている可能性が低いという点で、ここに少しセキュリティを追加します。 2人のユーザーが同じパスワードを持っている場合は役に立たない。なぜなら、それらは両方とも同じハッシュにハッシュするため、攻撃者は1人で2人を取得するからです。これは、ユーザーごとの一意の塩が重要な場所です。これは、すべてのユーザーがすべてのユーザーに対して1回だけでなく、すべてのユーザーに対してすべてのユーザーに対してすべてのパスワードを試す必要があることを意味するためです。
したがって、あなたがしていることは、まだ良くなっていないものを実際に追加するものではなく、最も批判的にはまだユニークな塩がありません。