Welcher Teil ist dir denn unklar geblieben?
- Ist es nicht so, dass bei einem Lauf unter PHP ab 5.3 statt der auf rand() zurückgreifenden die originalen PHP-Funktionen password_hash() und password_verify() benutzt werden, dass also deine Einwände nur dann gelten könnten, wenn das System ohnehin unsicher ist?
Quelltext zur Gedächnisstütze:
if (! function_exists('password_hash') ) {
function create_salt ($l=22, $allowed='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJLKMNOPQRSTUVWXYZ./'){
$salt='';
for ( $i = 0; $i < $l; $i++ ) {
$salt .= $allowed{rand(0,strlen($allowed)-1)};
}
return $salt;
}
function password_hash ($str, $dummy) {
if (CRYPT_BLOWFISH && ($hash=crypt($str,'$2y$10$'.create_salt().'$'))){
return $hash;
} elseif (CRYPT_SHA512 && ($hash=crypt($str,'$6$rounds=5000$'.create_salt(16).'$') ) ) {
return $hash;
} elseif (CRYPT_BLOWFISH && ($hash=crypt($str,'$2a$10$'.create_salt().'$')) ) {
return $hash;
} else {
return false;
}
}
function password_verify ($password, $hash) {
return ( $hash == crypt($password, $hash) );
}
function password_needs_rehash ($password, $dummy) {
return ('$2y$10$' != substr($password, 0, 7) );
}
}
-
Ist es nicht auch so, dass ein Angreifer, der den Angriff gegen mehrere hashes führen will um die Passwörter zu ermitteln, den salt ohnehin kennt, weil der, und der Indianerversteher hat das mehrfach beschrieben, der salt direkt dort steht, wo auch der hash steht? Ist es also nicht so, dass der demnach bekannte salt gar nicht erraten werden muss?
-
Ist es nicht so, dass du dafür den seed() setzen musst bevor die salts erzeugt werden? Also Zugriff auf den Server brauchst?
-
Es wurde (siehe Quelltext) in einer beachtlichen Anzahl von Runden zum hashen BLOWFISH und SHA512 verwendet. Ganz spitzfindig frage ich nochmal, wo und und zu welchen Kosten wie Du die Rainbowtables (deren Nützlichkeit Du behauptest - siehe Frage 2) 4.a) auch nur für einen Salt erzeugen und 4.b) speichern willst. Die entstehenden Datenmengen sind nämlich gewaltig.
(marctrix)
Aber ich finde es ist aus der Art der Frage erkennbar, dass du schon eine Antwort darauf hast, denn es sind überhaupt keine Fragen, sondern verklausulierte Feststellungen.
Nun, die könnten ja falsch sein. Sind diese "verklausulierte Feststellungen" aber richtig, dann ist belegt, dass die Gründe, aus denen heraus 1unitedpower das Skript als "unsicher" behauptet, unzutreffend sind. Und zwar alle.