Frage:
Ist es sicher, PBKDF2 zum Hashing zu verwenden?
Razick
2013-12-17 23:47:53 UTC
view on stackexchange narkive permalink

Ich möchte ein paar Meinungen dazu einholen, ob es sicher wäre, PBKDF2 zu verwenden, um einen Hash eines Passworts zu generieren. Für meine Zwecke möchte ich davon ausgehen, dass der Hash selbst auf der Twitter-Seite des Weißen Hauses veröffentlicht wird (mit anderen Worten, er wird öffentlich sein).

Wäre es besser, wenn ich eine große Anzahl von SHA verwende -256 Iterationen (als Ersatz für meine 100.000 PBKDF2-Iterationen)? Gibt es Angriffe, die PBKD2 umkehren können?

Dies ist der Code, den ich verwende:

  string salt = Utility.RandString (32); // in Byte [] konvertieren und in beiden Formen speichern this.Salt = salt; this.BSalt = Utility.ToByteArray (Salz); // Passwort-Hash generieren Rfc2898DeriveBytes preHash = new Rfc2898DeriveBytes (this.Password, this.BSalt, 100000); byte [] byteHash = preHash.GetBytes (32); this.Hash = Convert.ToBase64String (byteHash);  
Zwei antworten:
Tom Leek
2013-12-18 00:04:25 UTC
view on stackexchange narkive permalink

Die kurze Antwort lautet, dass PBKDF2 für das Hashing von Passwörtern als geeignet und sicher angesehen wird. Es ist nicht so gut, wie man es sich wünschen könnte, weil es mit einer GPU effizient implementiert werden kann. Siehe diese Antwort für einige Diskussionen (und diese für weitere Informationen zu diesem Thema).

Es gibt einige Argumente insbesondere, dass PBKDF2 als Schlüsselableitungsfunktion konzipiert wurde, die nicht die gleiche Art von Tier wie eine Hash-Funktion ist; Es stellte sich jedoch heraus, dass es auch für das Hashing von Passwörtern durchaus brauchbar ist, vorausgesetzt, Sie machen nichts Dummes damit (was bedeutet: Stellen Sie sicher, dass Sie mindestens 80 Bit Ausgabe ausgeben und eine ausreichend hohe Iterationszahl verwenden, idealerweise genauso hoch (wie Sie auf Ihrer Hardware tolerieren können).

Versuchen Sie nicht, Ihre eigene Hash-Funktion zu erstellen. Diese Dinge sind überraschend schwer zu korrigieren, insbesondere weil es nahezu unmöglich ist zu beurteilen, ob eine bestimmte Konstruktion sicher ist oder nicht. Verwenden Sie PBKDF2. Wenn Sie wirklich SHA-256 (oder SHA-512) möchten, verwenden Sie PBKDF2 mit SHA-256: PBKDF2 ist eine konfigurierbare Konstruktion, die traditionell für die Verwendung von SHA- konfiguriert ist. 1, funktioniert aber genauso gut mit SHA-256 oder SHA-512.

Was würden Sie für Hashing empfehlen, das sowohl in C # als auch in PHP verfügbar ist?
** PBKDF2 kann aufgrund der XOR-Operation, die zwischen jeder Iteration der Hash-Funktion ausgeführt wird, nicht effizient auf einer GPU implementiert werden. **
@Rook: ah, ein kontextabhängiges Missverständnis. PBKDF2 passt gut auf eine GPU im Kontext des Kennwort-Crackings, da Sie viele PBKDF2-Instanzen parallel ausführen können. Was nicht gut funktionieren würde, wäre die Verwendung einer GPU zum Ausführen von _one_ PBKDF2 (der Algorithmus ist sehr sequentiell), aber der Angreifer muss Millionen von PBKDF2-Instanzen ausführen, und diese Instanzen sind unabhängig voneinander. Bcrypt hingegen läuft auf einer GPU nicht gut, da es eine RAM-Nachschlagetabelle verwendet und dies eine Menge Buskonflikte impliziert (die unabhängige Instanz muss dieselben knappen Busressourcen gemeinsam nutzen).
@rook Können Sie eine Quelle angeben, um dies zu sichern?XOR-Operatoren sind so schnell wie alles andere.(Zum Beispiel ruft CUDA native Operatoren auf: http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions__throughput-native-arithmetic-instructions)
Andrew Hoffman
2013-12-18 00:02:55 UTC
view on stackexchange narkive permalink

Ich denke, es ist ein gutes KDF, obwohl es bessere gibt.

Die Passwortentropie selbst ist von größerer Bedeutung.

http://arstechnica.com/ security / 2013/05 / wie-Cracker-Hackfleisch-aus-Ihren-Passwörtern machen /

Wenn Sie sich an Ihr Passwort erinnern können, können spezielle Verknüpfungstechniken verwendet werden, die niedriger sind die theoretische Stärke des Passworts. Stellen Sie sich Wörter bei der Berechnung der Entropie grundsätzlich als ein einziges Zeichen vor.

Ein 6-stelliges Passwort mit einem wirklich teuren KDF wird in kürzester Zeit immer noch geknackt.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...