ハッシュの問題はすべてユーザーが15文字以上のパスワードを入力しないことです。ほとんどの場合、4〜8文字しか使用しないため、攻撃者が虹のテーブルで簡単にクラックすることがあります。アルティメットハッシュの保護 - 概念の考察
解決策は、ユーザー塩を使用してハッシュ入力を複雑にし、50chars以上にすることで決してテーブルを生成できないようにします。さらに、ユーザーごとに新しいテーブルを作成する必要があります。問題:データベースをダウンロードすると、ユーザーの塩が得られますので、十分注意が必要な場合は、正方形に戻ります。
解決策は、サイト "pepper"とユーザー塩を使用してください。それでもDBを取得しても、configファイルを知っている必要があります。問題:DBに入る可能性がある場合は、ファイルシステムに入り、サイトのペッパーを発見する可能性があります。
だから、これはすべて既知のものです。攻撃者があなたのサイトに入れて、すべてをすべて取得すると仮定することができます。では今何をしていますか?
この時点での議論では、ほとんどの人が「誰がこの点を気にしていますか?」と答えています。しかし、それはちょうど「私は次に何をするべきかわからないので、それほど重要ではない」という安価な方法です。悲しいことに、どこにいても私はこの質問に答えています。これは、ほとんどのプログラマーが非常に重要な点を見逃していることを示しています。
あなたのサイトは他の95%のサイトと同じように見えますが、ユーザーデータ(または完全に切断されたアクセス権)はスクワットに値するものではありません。攻撃者は、 "Bob"が銀行サイトで行っているのと同じパスワードをサイトで使用していることを知っているため、ユーザー "Bob"の後にいることがあります。彼はまたボブがそこに彼の人生の節約をしていることを知っている。さて、攻撃者がサイトのハッシュを解読できるのであれば、残りの部分はケーキになります。
ここに私の質問です - どのように追跡可能なパスなしでパスワードの長さを延長しますか?または、どのようにしてハッシュプロセスを複雑にして、適時に複製するのですか?私が思いついた唯一のことは、ハッシュを数千回再ハッシュして、最後のレインボーテーブルを1,000倍作成するのにかかる時間を増やすことができることです。これは、テーブルを作成するときに攻撃者が同じパスをたどる必要があるためです。
他のアイデアはありますか?
これはすでに何度も議論されています。パスワードsaltに関する他のスレッドを参照してください。 –
簡単な解決策:より長いパスワードが必要です。 – jalf
必要なパスワードの長さが長すぎてユーザーに尋ねることができません。異なる記号などで15文字以上必要です。ほとんどのサイトは強力な8文字のパスワードを取得する運が良いです。 – Xeoncross