Thema: Delphi Passwordverschlüsselung

Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#22

Re: Passwordverschlüsselung

  Alt 14. Sep 2006, 19:24
Zitat:
Hm, vielleicht waren das sg. Rainbow Tables. Diese lassen sich aber glaube ich für jedes Hashverfahren erstellen.
Diese Aussage muß ich korregieren. Rainbow Tables sind eine Form des Dictionary=Wörterbuch Angriffes. Bei diesen Verfahren berchnet man eine Tabelle aller möglichen Passwörter und deren Hash. Beim Angriff schlägt man einen Hashwert in dieser Tabelle nach und findet so das Passwort. Rainbow Tables sind eine spezielle Form dieser Wörterbücher die diesen Angriff beschleunigen weil weitaus weniger Speicher für diese Tabelle benötigt wird.

ABER! wenn man ein krytographisch korrektes Verfahren benutzt um das Passwort zu schützen dann funktionieren auch Rainbow Tables nicht mehr. Die Frage ist wie macht man es richtig ?

1.) ein Salt benutzen
2.) eine Hashfunktion benutzen

Man erzeugt einen Salt, das sind Zufallsdaten. Diese sollten mindestens so groß sein wie die Hashfunktion, dh. wenn wir SHA1 benutzen dann sollte dieser Salt 160 Bits groß sein, weil SHA1 eben 160 Bit groß ist.

Diesen Salt + das Passwort wird nun transformiert indem man damit die Hashfunktion füttert.
Der Hashdigest + der Salt werden auf dem Server zur Verifikation gespeichert.

Durch die Benutzung dieses Salts würde man also 2^160 Rainbow Tables benötigen statt nur EINER Tabelle ! Somit macht dieser simple Salt jedweige Form von Wörterbuch Angriffen unpraktikabel.

Rainbow Tables sind eine relativ neue Erfindung die überwertet wird. Ja, sie sind eine interessante Methode um schlecht bzw. kryptographisch unmodern konstuierte Verfahren zu knacken, zb. Windows/UNIX-Passwörter oder WLAN Verschlüsslung die nicht WPA2 konform ist.

Aber wenn man wie oben einen Salt + Password hasht dann funktinieren diese Angriffe nicht mehr.

Fazit: immer mit Salts arbeiten. Einmal um ein Password für eine Verschlüsselung in einen sicheren Sessionkey umzuwandlen, und zweites ein Salt vor die Daten die man verschlüsseln möchte um zb. Known Plaintext Angriffe auf unsere Daten zu verhindern !

Gruß Hagen
  Mit Zitat antworten Zitat