2012-03-28 3 views
0

Ich habe aus diesem Artikel gelesen http://codahale.com/how-to-safely-store-a-password/ und es sagt, mit einem Salz ist nicht einmal sicher gegen GPU Brute-Force-Angriffe. Ich will nicht gehackt werden und Passwörter in ein paar Wochen entschlüsselt haben ... Also lese ich mehr und die Lösung war bcrypt aber ich möchte nicht die phpass class implementieren, mag ich SHA-512.Wie fügen Sie "runden" zu einer Funktion wie hash_hmac() hinzu?

Aber wenn man Runden zu sha-512 hinzufügen kann, um GPU-Angriffe zu verlangsamen ... wie kann das gemacht werden? Bedeutet Runden Iterationen?

Wie fügen Sie Runden hinzu, um sha512 zu verlangsamen?

+0

Sie denken wirklich, dass SHA512 nicht sicher genug für Ihre Anwendung ist? –

+0

@webarto Wenn die Datenbank gestohlen wird, könnten sie möglicherweise SHA-512 mit einer High-End-GPU/CUDA knacken? – user121235

+0

Also ... Sie haben erkannt, dass bcrypt eine überlegene Lösung ist, aber Sie sind nicht bereit, es zu benutzen, weil Sie SHA-512 "mögen", und jetzt möchten Sie, dass SHA-512 wie bcrypt funktioniert? –

Antwort

0

Einer der sichersten Wege für Passwort zu speichern, die ich gefunden folgt:

<?php  
function createPasswordSalt($saltLength = 20) { 
    return substr(md5(uniqid(rand(), true)), 0, $saltLength); 
} 

function createPasswordHash($password, $salt = null, $staticKey = null) { 
    if ($staticKey === null) { 
     $staticKey = "Some passphrase that will be only in your php script"; 
    } 

    if ($salt === null) { 
     $salt = self::createPasswordSalt(); 
    }  

    return hash_hmac('sha512', $password . $salt, $staticKey); 

} 

Und ich speichern in Datenbank-Passwort und Hash ...

So, hier habe ich mehrere Sicherheitsebenen verwendet . Und man kann nur seine Passwörter hacken, wenn er Ihre Datenbank und PHP-Skripte zusammenbringt. In jedem Fall, wenn der Hacker Ihre Skripte hat, kann er jedes Passwort, das Sie in Ihrer Datenbank haben, hacken, da er das Schema kennt, das Sie für das Hashing von Passwörtern verwenden.

0

Das Erhöhen der Runden für SHA512 bedeutet nicht das Iterieren eines bereits gehashten Werts mit derselben Hash-Funktion. Dies kann tatsächlich die Sicherheit LESSEN, da nach dem ersten Hash Ihr neues 'Passwort' einen reduzierten Zeichensatz hat. Sehen Sie diesen Link auf security.stackexchange, der teilweise warum erklärt.

Ich schlage vor, nicht Ihre eigenen Passwortschutzfunktion "rollen". Verwenden Sie stattdessen eine viel besser erforschte und geprüfte Lösung wie PHPass.

Auf ihrer Website ist auch ein sehr gut geschrieben und ausführlich Artikel erklärt die Auswirkungen auf die Sicherheit von password hashing and creation.