[PHP] Gute Hashing-Methode?

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Hallo,

aufgrund des aktuellen Security-Breaches bei Ubuntuforums wollte ich 'mal nachfragen:

Wie hasht ihr eure Passwörter?

Ich hashe meine Passwörter ganz simpel so:

Code:
// Function: gluehash
// Param 1: string to hash
// Returns: hashed string - So simple, isn't it?

function gluehash($_input_) {
	$return = "";
	for($i=0;$i<1000000;$i++) {
		$return = hash('sha512', $return.$_input_);
	}
	return $return;
}

wobei ein Login eines Users dann schon einen CPU-Kern auf 100% auslastet und der Hash ca. 2-2.5 Sekunden braucht.
 
Ich finde es etwas übertrieben den 1.000.000 mal durchlaufen zu lassen. Mach das mal bei einem großen Forum, wo täglich über 1000 Leute online sind. Geht gar nicht. Wie schon d4f geschrieben hat, solltest du Funktionen nutzen, die es bereits gibt. Kryptographisches solltest du nichts selbst machen, es seiden du bist Mathematiker und dein Fachgebiet sind Verschlüsselungsalgorithmen.
 
MOD: Full-Quote entfernt
m.E. unwirtschaftlicher und zu dem ein Pseudo-Hash-Algorithmus. IMHO ist es besser, das eigentliche Passwort z.B. um Meta-Daten des Users zu verlängern (z.B. Geburtsdatum oder Mail-Adresse). Damit wird auch der Aufwand selbst für sehr schlechte Passwörter massiv erhöht, ohne dass man massiv CPU-Power einsetzen muss.
 
Last edited by a moderator:
Ich finde es etwas übertrieben den 1.000.000 mal durchlaufen zu lassen. Mach das mal bei einem großen Forum, wo täglich über 1000 Leute online sind. Geht gar nicht.
Würde bei mir nichts ausmachen, da die Website in einem Cluster mit 40x3GHz CPU-Kernen läuft und die Hash-Methode nur bei der Eingabe des Passwortes ausgeführt wird.

Danke d4f, das werde ich 'mir mal ansehen.
 
Würde bei mir nichts ausmachen, da die Website in einem Cluster mit 40x3GHz CPU-Kernen läuft und die Hash-Methode nur bei der Eingabe des Passwortes ausgeführt wird.

Darf ich mir diese Website einmal anschauen, für die du derartige Ressourcen bereitstellen musst?

Ich kann mich sonst nur TerraX anschließen. Deine Hash-Function ist mehr als ineffizient. Ein Salt würde dir eine viel höhere Sicherheit bringen, als deine 1.000.000 Iterationen. Wenn du bewusst maximale Ressourcen investieren möchtest, dann verwende scrypt:

http://www.tarsnap.com/scrypt.html

Standard ist ist aber PBKDF2. Aber bitte auch mit Salt.
 
40x3 GHz? Bla bla bla

Nutz ein anständiges Framework das die Funktionaltiäten bereitstellt oder lies dich zu dem Thema ein wie anständige Passwort Speicherung aussieht.
 
40x3 GHz? Bla bla bla

Nutz ein anständiges Framework das die Funktionaltiäten bereitstellt oder lies dich zu dem Thema ein wie anständige Passwort Speicherung aussieht.

Und das trägt jetzt fachlich, wieviel zum Thema konkret bei? ;)

Anyway, hier mal ein Artikel, der die Problematik des Verfahrens von Fusl aufzeigt und warum sein Ansatz nicht nur unsinnig und unwirtschaftlich sondern sogar potentiell unsicherer ist http://www.zyxist.com/en/archives/111

Wenn Du schon die Sicherheit des Hashes durch ein iteratives Verfahren erhöhen willst, dann verschlüssele den Hash zusätzlich über ein paar Runden in Abhängigkeit von Salt und Passwort, siehe auch bcrypt-Verfahren. So 64 bis 128 Runden dürften reichen damit es hässlich genug wird.

Fassen wir zusammen: Einsatz sicherer Hash-Algorithmus + user-individuelles aka dynamisches Salt + über ein paar Runden verschlüsselter Hash mit sicherem Verschlüsselungsalgorithmus => maximaler Hass für den Brute-Forcer, weil hoffnungslos. Damit erreichst Du zu erheblich günstigeren Kosten ein deutlich verbessertes Sicherheitsniveau als mit Deinem Pseudo-Algorithmus, der Dir im worst-case evtl. sogar um die Ohren fliegt, denn bei derartig vielen Iterationen mit so kurzen String, bin ich mir nicht sicher wieviele Kollisionen u.U. unterwegs provoziert werden und was das genau anrichtet. Meine Annahme ist, dass bei Deinen - sorry - stupiden Iterationen, dass "Passwort" letztlich "schwächer" statt "stärker" wird, da der Hash nunmehr von einem sehr begrenzten Zeichenvorrat nach mathematischen Regeln immer wieder von sich selbst abgeleitet wird.
 
Last edited by a moderator:
Back
Top