security sha256 - SHA512 vs Blowfish und Bcrypt




pbkdf2 scrypt (6)

Ich schaue auf Hash-Algorithmen, konnte aber keine Antwort finden.

  • Bcrypt verwendet Blowfish
  • Blowfish ist besser als MD5
  • F: Aber ist Blowfish besser als SHA512?

Vielen Dank..

Aktualisieren:

Ich möchte klarstellen, dass ich den Unterschied zwischen Hashing und Verschlüsselung verstehe. Was mich dazu veranlasst hat, die Frage auf diese Weise zu stellen, ist dieser Artikel, in dem der Autor bcrypt als "adaptive Hashing" bezeichnet https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow-tables-what-you-need-to-know-about-secure-password-schemes/

Da bcrypt auf Blowfish basiert, wurde ich davon überzeugt, dass Blowfish ein Hashalgorithmus ist. Wenn es Verschlüsselung ist, wie Antworten darauf hingewiesen haben, dann scheint mir, dass es keinen Platz in diesem Artikel haben sollte. Schlimmer ist, dass er zu dem Schluss kommt, dass bcrypt das Beste ist. Was mich auch verwirrt, ist, dass die phpass-Klasse (die ich für das Passwort-Hashing verwende) bcrypt (dh blowfish, dh Verschlüsselung) verwendet. Basierend auf dieser neuen Information, die ihr mir erzählt (Blowfish ist Verschlüsselung), klingt diese Klasse falsch. Fehle ich etwas?


Answers

Ich würde Ulrich Dreppers SHA-256 / SHA-512-basierte Crypt-Implementierung empfehlen.

Wir haben diese Algorithmen nach Java portiert und Sie finden eine frei lizenzierte Version von ihnen unter ftp://ftp.arlut.utexas.edu/java_hashes/ .

Beachten Sie, dass die meisten modernen (L) Unices den Drepper-Algorithmus in ihren / etc / shadow-Dateien unterstützen.


Blowfish ist nicht besser als MD5 oder SHA512, da sie verschiedenen Zwecken dienen. MD5 und SHA512 sind Hash-Algorithmen, Blowfish ist ein Verschlüsselungsalgorithmus. Zwei völlig unterschiedliche kryptographische Funktionen.


Blowfish ist kein Hashalgorithmus. Es ist ein Verschlüsselungsalgorithmus. Was das bedeutet ist, dass Sie etwas mit blowfish verschlüsseln können, und später können Sie es wieder in Klartext entschlüsseln.

SHA512 ist ein Hash-Algorithmus. Das bedeutet, dass (theoretisch) nach dem Hashing der Eingabe die ursprüngliche Eingabe nicht mehr wiederhergestellt werden kann.

Sie sind 2 verschiedene Dinge, die für verschiedene Aufgaben verwendet werden können. Es gibt keine "richtige" Antwort auf "ist Blowfish besser als SHA512?" Sie könnten auch fragen: "Sind Äpfel besser als Kängurus?"

Wenn Sie mehr über das Thema lesen möchten, hier sind einige Links:


Ich stimme der Antwort von Erickson zu, mit einem Vorbehalt: Für die Authentifizierung per Passwort ist bcrypt viel besser als eine einzige Iteration von SHA-512 - einfach weil es viel langsamer ist. Wenn Sie nicht verstehen, warum Langsamkeit in diesem speziellen Spiel von Vorteil ist, lesen Sie den Artikel, mit dem Sie verlinkt haben (scrollen Sie nach unten zu " Geschwindigkeit ist genau das, was Sie nicht in einer Passwort-Hash-Funktion haben wollen. ").

Sie können natürlich einen sicheren Passwort-Hashing-Algorithmus um SHA-512 herum erstellen, indem Sie ihn tausende Male wiederholen, genau wie der MD5-Algorithmus von PHK. Genau das tat Ulrich Drepper für glibcs ​​Krypta (). Es gibt jedoch keinen besonderen Grund dafür, wenn Sie bereits eine getestete bcrypt-Implementierung zur Verfügung haben.



Passwörter zu picken ist sicherlich eine gute Sache, aber lass uns sehen, warum.

Zuerst sollten wir die Frage beantworten, wann genau eine Paprika hilft. Der Pfeffer schützt nur die Passwörter, solange sie geheim bleiben. Wenn also ein Angreifer Zugriff auf den Server selbst hat, ist es nutzlos. Ein viel einfacherer Angriff ist SQL-injection, der Lesezugriff auf die Datenbank erlaubt (zu unseren Hash-Werten), ich habe eine Demo von SQL-injection vorbereitet, um zu zeigen, wie einfach es sein kann (klicke auf den nächsten Pfeil, um ein vorbereitet zu bekommen) Eingang).

Was hilft der Pfeffer eigentlich? Solange der Pfeffer geheim bleibt, schützt er schwache Passwörter vor einem Wörterbuchangriff. Das Passwort 1234 würde dann so etwas wie 1234-p*deDIUZeRweretWy+.O . Dieses Passwort ist nicht nur viel länger, es enthält auch Sonderzeichen und wird niemals Teil eines Wörterbuchs sein.

Jetzt können wir abschätzen, welche Passwörter unsere Benutzer verwenden werden, wahrscheinlich werden mehr Benutzer schwache Passwörter eingeben, da es Benutzer mit Passwörtern zwischen 64 und 72 Zeichen gibt (tatsächlich wird dies sehr selten vorkommen).

Ein weiterer Punkt ist die Reichweite für Brute-Forcing. Die sha256-Hash-Funktion gibt 256-Bit-Ausgabe oder 1.2E77-Kombinationen zurück, das ist viel zu viel für Brute-Forcing, sogar für GPUs (wenn ich richtig kalkulierte, würde dies 2013 ungefähr 2E61 Jahre auf einer GPU benötigen). Wir haben also keinen echten Nachteil, wenn wir den Pfeffer anwenden. Da die Hash-Werte nicht systematisch sind, können Sie das Brute-Forcing nicht mit gängigen Mustern beschleunigen.

PS Soweit ich weiß, ist die Grenze von 72 Zeichen spezifisch für den Algorithmus von BCrypt selbst. Die beste Antwort, die ich gefunden habe, ist this .

PPS Ich denke, Ihr Beispiel ist fehlerhaft, Sie können den Hash nicht mit der vollständigen Passwortlänge generieren und mit einem abgeschnittenen Code überprüfen. Wahrscheinlich wollten Sie den Pfeffer auf die gleiche Weise anwenden, um den Hash zu generieren und den Hash zu verifizieren.







security encryption passwords hash