2011-12-27 5 views
5

私はPHP.netでMD5が役に立たず、crypt + saltを使うことを勧めました。ブルートフォース攻撃に対して、クリプトとソルトはMD5よりどのように安全ですか?

だから、私は、その機能の説明に行き、

<?php 
$password = crypt('mypassword'); // let the salt be automatically generated 

/* You should pass the entire results of crypt() as the salt for comparing a 
    password, to avoid problems when different hashing algorithms are used. (As 
    it says above, standard DES-based password hashing uses a 2-character salt, 
    but MD5-based hashing uses 12.) */ 
if (crypt($user_input, $password) == $password) { 
    echo "Password verified!"; 
} 
?> 

または私の場合のようなもの読み:私は塩がハッシュされたパスワードに格納されていることを見たときに、

ので
$stored_password=fetch_password($user); 
if (crypt($_REQUEST['password'],$stored_password)===$stored_password) { 
// ok 
} 

をし、そのハッシュされたパスワードを塩として使用すると、私はCrypt + Saltが出力(ハッシュパスワードを盗んだハッカー)に対してより安全ではないと思います。それはより安全ですか?

辞書攻撃に対して、私はその能力を理解することができますが、ハッシュされたパスワードに対するブルートフォース攻撃の場合、私にはその利点はありません。

答えて

0

ハッシュによる暗号化は、MD5よりも単純に高価です。攻撃者はより多くの計算時間を必要とします。そのため、これはより安全です。

パスワードとMD5の場合、攻撃者はMD5 PLUS用の事前計算テーブルを使用するとMD5の利点が非常に速くなります。

パスワードと塩漬け暗号については、事前に計算されたテーブルは役に立たないだろう、PLUS暗号はMD5

よりも多くの馬力を必要としても、これを取るために意図的に高い計算コストを持っている特別な細工がされたalgoritmsは(bcryptのグーグル)ありますが、さらに。

2

ハッシュ前に文字列(この例ではパスワード)にsaltを適用すると、ハッシュは塩なしの場合とは別のハッシュになります。 塩がなければ、既存の辞書を使うことができます。代わりに、塩の辞書を作成する必要があります。ユーザー固有の塩を使用する場合、各ユーザーは無差別な使用時に独自の辞書を持つ必要があります。これは時間のかかる方法になります。

MD5は、collision vulnerabilitiesのために破損したアルゴリズムです。

0

ハッシュのパスワードを一意にすることによって、虹のテーブル&の虹の表を妨げます。

ハッシュされたパスワードのリストを盗んで、それを使用して別のサイトのアカウントにアクセスするのを防ぐのにも役立ちます(ハッシュなどを逆転して)。

従来のブルートフォース攻撃には役立ちません。

+1

ハッカーが塩に合わせて辞書を構築しなければならないため、塩は伝統的なブルートフォース攻撃に役立ちます。ユーザー固有の塩が使用される場合、各ユーザーは独自の辞書を持たなければなりません。 – Zar

+0

ディクショナリは、従来のブルートフォース攻撃では使用されません。 – MrGlass

関連する問題