5

PHP.netで、MD5は役に立たないことを読みました。彼らは、crypt+saltの使用を提案しています。

それで、私は彼らの関数の説明に行き、読んだ

<?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
}

したがって、saltがハッシュ化されたパスワードに保存されており、そのハッシュ化されたパスワードをsaltとして使用していることを確認すると、Crypt + Saltは、出力に対するブルートフォース(ハッシュ化されたパスワードを盗むことができたハッカー)に対してより安全ではないと思います。より安全ですか?

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

4

3 に答える 3

2

ハッシュする前に文字列(例ではパスワード)にソルトを適用すると、ハッシュはソルトがない場合とは別のハッシュになります。ソルトがなければ、既存の辞書を使用することができます。代わりに、ソルトの辞書を作成する必要があります。ユーザー固有のソルトを使用する場合、ブルートフォースを使用するときは、各ユーザーが独自の辞書を持っている必要があります。これははるかに時間がかかります。

MD5は、衝突の脆弱性のために壊れたアルゴリズムです。

于 2011-12-27T15:49:45.550 に答える
0

ソルトは、ハッシュされたパスワードを一意にすることで、レインボーテーブルとハッシュ辞書を妨げます。

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

従来のブルートフォース攻撃には効果がありません。

于 2011-12-27T15:52:37.513 に答える
0

ハッシュ付きのクリプトは、MD5 より単純に高価です。これはより安全であるため、攻撃者はより多くの計算時間を必要とします。

パスワードと MD5 の場合、攻撃者は MD5 に事前計算されたテーブルを使用できます。さらに、MD5 は非常に高速であるという利点があります。

パスワードとソルト暗号の場合、事前計算されたテーブルは役に立たず、PLUS crypt は MD5 よりも多くの馬力を必要とします

これをさらに進めるために、意図的に高い計算コストを持つ特別に作成されたアルゴリズム (google bcrypt) があります。

于 2011-12-27T15:54:59.037 に答える