Ich schaue mir Hashing-Algorithmen an, 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 "adaptives Hashing" bezeichnet.
Da bcrypt auf Blowfish basiert, wurde ich zu der Annahme gebracht, dass Blowfish ein Hashing-Algorithmus ist. Wenn es sich um eine Verschlüsselung handelt, wie die Antworten gezeigt haben, scheint es mir, dass sie keinen Platz in diesem Artikel haben sollte. Schlimmer ist, dass er zu dem Schluss kommt, dass bcrypt das Beste ist. Was mich jetzt auch verwirrt, ist, dass die Phpass-Klasse (die meiner Meinung nach für das Hashing von Passwörtern verwendet wird) bcrypt verwendet (dh Blowfish, dh Verschlüsselung). Basierend auf diesen neuen Informationen, die ihr mir erzählt (Blowfish ist Verschlüsselung), klingt diese Klasse falsch. Vermisse ich etwas
quelle
bcrypt
hat einfach standardmäßig einen höheren "Arbeitsfaktor". Es wird davon ausgegangen, dass SHA nicht ... es sei denn, Sie verwenden passhash9, das entweder zusammen mit einem Arbeitsfaktor verwendet werden kann. Warum ist diese Frage geschlossen? es ist alles andere als beantwortet, aber sehr wichtig.Antworten:
Es sollte genügen zu sagen, ob bcrypt oder SHA-512 (im Kontext eines geeigneten Algorithmus wie PBKDF2) gut genug ist . Und die Antwort lautet: Ja, jeder Algorithmus ist sicher genug, dass ein Verstoß durch einen Implementierungsfehler und nicht durch eine Kryptoanalyse auftritt.
Wenn Sie darauf bestehen zu wissen, was "besser" ist, hat SHA-512 eingehende Überprüfungen durch NIST und andere erhalten. Es ist gut, aber es wurden Fehler erkannt, die, obwohl sie jetzt nicht ausnutzbar sind, zum SHA-3-Wettbewerb um neue Hash-Algorithmen geführt haben. Denken Sie auch daran, dass das Studium von Hash-Algorithmen "neuer" ist als das von Chiffren, und Kryptografen noch etwas über sie lernen.
Obwohl bcrypt als Ganzes nicht so genau unter die Lupe genommen wurde wie Blowfish selbst, glaube ich, dass die Verwendung einer Verschlüsselung mit einer gut verstandenen Struktur eine gewisse Sicherheit bietet, die der Hash-basierten Authentifizierung fehlt. Es ist auch einfacher, gängige GPUs als Werkzeug für den Angriff auf SHA-2-basierte Hashes zu verwenden. Aufgrund des Speicherbedarfs erfordert die Optimierung von bcrypt speziellere Hardware wie FPGA mit etwas integriertem RAM.
Hinweis: bcrypt ist ein Algorithmus, der Blowfish intern verwendet. Es ist selbst kein Verschlüsselungsalgorithmus. Es wird verwendet, um Passwörter irreversibel zu verschleiern, genauso wie Hash-Funktionen verwendet werden, um einen "Einweg-Hash" durchzuführen.
Kryptografische Hash-Algorithmen sind so konzipiert, dass sie nicht rückgängig gemacht werden können. Mit anderen Worten, wenn nur die Ausgabe einer Hash-Funktion gegeben ist, sollte es "ewig" dauern, bis eine Nachricht gefunden wird, die dieselbe Hash-Ausgabe erzeugt. Tatsächlich sollte es rechnerisch unmöglich sein, zwei beliebige Nachrichten zu finden, die denselben Hashwert erzeugen. Im Gegensatz zu einer Chiffre werden Hash-Funktionen nicht mit einem Schlüssel parametrisiert. Der gleiche Eingang erzeugt immer den gleichen Ausgang.
Wenn jemand ein Kennwort bereitstellt, das mit dem in der Kennworttabelle gespeicherten Wert übereinstimmt, wird er authentifiziert. Insbesondere aufgrund der Irreversibilität der Hash-Funktion wird angenommen, dass der Benutzer kein Angreifer ist, der den Hash ergriffen und umgekehrt hat, um ein funktionierendes Passwort zu finden.
Betrachten Sie nun bcrypt. Es verwendet Blowfish, um eine magische Zeichenfolge mit einem vom Kennwort "abgeleiteten" Schlüssel zu verschlüsseln. Wenn ein Benutzer später ein Kennwort eingibt, wird der Schlüssel erneut abgeleitet. Wenn der durch Verschlüsselung mit diesem Schlüssel erzeugte Chiffretext mit dem gespeicherten Chiffretext übereinstimmt, wird der Benutzer authentifiziert. Der Chiffretext wird in der Tabelle "Passwort" gespeichert, der abgeleitete Schlüssel wird jedoch nie gespeichert.
Um die Kryptographie hier zu brechen, müsste ein Angreifer den Schlüssel aus dem Chiffretext wiederherstellen. Dies wird als "bekannter Klartext" -Angriff bezeichnet, da der Angriff die verschlüsselte magische Zeichenfolge kennt, jedoch nicht den verwendeten Schlüssel. Blowfish wurde ausführlich untersucht, und es sind noch keine Angriffe bekannt, die es einem Angreifer ermöglichen würden, den Schlüssel mit einem einzigen bekannten Klartext zu finden.
Genau wie bei irreversiblen Algorithmen, die auf kryptografischen Digests basieren, erzeugt bcrypt eine irreversible Ausgabe aus einem Kennwort, einem Salt und einem Kostenfaktor. Seine Stärke liegt in der Beständigkeit von Blowfish gegen bekannte Klartextangriffe, die einem "ersten Pre-Image-Angriff" auf einen Digest-Algorithmus entspricht. Da bcrypt anstelle eines Hash-Algorithmus zum Schutz von Passwörtern verwendet werden kann, wird es verwirrenderweise selbst als "Hash" -Algorithmus bezeichnet.
Unter der Annahme, dass Regenbogentabellen durch die richtige Verwendung von Salz vereitelt wurden, reduziert jede wirklich irreversible Funktion den Angreifer auf Versuch und Irrtum. Und die Rate, mit der der Angreifer Versuche durchführen kann, wird durch die Geschwindigkeit dieses irreversiblen "Hash" -Algorithmus bestimmt. Wenn eine einzelne Iteration einer Hash-Funktion verwendet wird, kann ein Angreifer mit Geräten, die in der Größenordnung von 1000 US-Dollar kosten, Millionen von Versuchen pro Sekunde durchführen und alle Passwörter mit einer Länge von bis zu 8 Zeichen in wenigen Monaten testen.
Wenn die Digest-Ausgabe jedoch tausende Male "zurückgemeldet" wird, dauert es Hunderte von Jahren, um denselben Satz von Kennwörtern auf dieser Hardware zu testen. Bcrypt erzielt den gleichen "Schlüsselverstärkungseffekt", indem es innerhalb seiner Schlüsselableitungsroutine iteriert, und eine geeignete Hash-basierte Methode wie PBKDF2 macht dasselbe. In dieser Hinsicht sind die beiden Methoden ähnlich.
Meine Empfehlung für bcrypt beruht also auf den Annahmen 1), dass ein Blowfish ein ähnliches Maß an Kontrolle hatte wie die SHA-2-Familie von Hash-Funktionen, und 2) dass kryptoanalytische Methoden für Chiffren besser entwickelt sind als solche für Hash-Funktionen.
quelle
Ich stimme der Antwort von erickson mit einer Einschränkung zu: Für die Kennwortauthentifizierung ist bcrypt weitaus besser als eine einzelne 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, auf den Sie erneut verlinkt haben (scrollen Sie nach unten zu " Geschwindigkeit ist genau das, was Sie in einer Passwort-Hash-Funktion nicht 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 funktioniert. Ulrich Drepper hat genau das für glibcs Krypta getan (). Es gibt jedoch keinen besonderen Grund, dies zu tun, wenn Sie bereits eine getestete bcrypt-Implementierung zur Verfügung haben.
quelle
crypt
Implementierungen (einschließlich PHP, die ich verwende) aufgenommen. Als ich die ursprüngliche Frage las, ging ich sogar davon aus, dass das OP dies bedeutete, als er nach SHA-512 fragte - dass er sich tatsächlich auf Tausende von Runden von SHA-512 gegen bcrypt bezog, die selbst Hunderte oder Tausende von Iterationen verwenden.Blowfish ist kein Hashing-Algorithmus. Es ist ein Verschlüsselungsalgorithmus. Das bedeutet, dass Sie etwas mit Blowfish verschlüsseln und später wieder in einfachen Text entschlüsseln können.
SHA512 ist ein Hashing-Algorithmus. Das bedeutet, dass Sie (theoretisch) nach dem Hash der Eingabe die ursprüngliche Eingabe nicht mehr zurückerhalten können.
Es sind zwei verschiedene Dinge, die für verschiedene Aufgaben entwickelt wurden. Es gibt keine 'richtige' Antwort auf "Ist Blowfish besser als SHA512?" Sie könnten genauso gut fragen: "Sind Äpfel besser als Kängurus?"
Wenn Sie mehr über das Thema erfahren möchten, finden Sie hier einige Links:
quelle
bcrypt
) wird er als Hashing-Algorithmus verwendet, indem ein Schlüssel aus der Quellzeichenfolge abgeleitet und damit eine magische Zahl verschlüsselt wird. Dies macht es irreversibel, im Wesentlichen eine Hashing-Funktion. Sie können den Schlüssel nicht aus einer Chiffre berechnen, selbst wenn Sie den Klartext und die verschlüsselten Daten kennen.Blowfish ist nicht besser als MD5 oder SHA512, da sie unterschiedlichen Zwecken dienen. MD5 und SHA512 sind Hashing-Algorithmen, Blowfish ist ein Verschlüsselungsalgorithmus. Zwei völlig unterschiedliche kryptografische Funktionen.
quelle
Ich würde Ulrich Dreppers SHA-256 / SHA-512-basierte Krypta-Implementierung empfehlen.
Wir haben diese Algorithmen nach Java portiert. Eine frei lizenzierte Version finden Sie 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.
quelle
Ich bin gerade darauf gestoßen:
http://codahale.com/how-to-safely-store-a-password/
Kann der Autor dieses Artikels falsch liegen?
quelle