it-swarm.com.de

Ist es sicher, PBKDF2 zum Hashing zu verwenden?

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 für mich, eine große Anzahl von SHA-256-Iterationen zu verwenden (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);
        // convert to byte[] and store in both forms
        this.Salt = salt;
        this.BSalt = Utility.ToByteArray(salt);
        // generate the password hash
        Rfc2898DeriveBytes preHash = new Rfc2898DeriveBytes(this.Password,  this.BSalt, 100000);
        byte[] byteHash = preHash.GetBytes(32);
        this.Hash = Convert.ToBase64String(byteHash);
15
Razick

Die kurze Antwort lautet, dass PBKDF2 für das Passwort-Hashing 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 eine Diskussion (und diese für mehr zu diesem Thema).

Es gibt einige strittige Punkte, insbesondere, dass PBKDF2 als Key Derivation Function konzipiert wurde, was nicht die gleiche Art von ist Tier als Hash-Funktion; 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, dh traditionell für die Verwendung von SHA-1 konfiguriert, funktioniert aber genauso gut mit SHA-256 oder SHA-512.

17
Tom Leek

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/how-crackers-make-minced-meat-out-of-your-passwords/

Wenn Sie sich an Ihr Passwort erinnern können, können spezielle Verknüpfungstechniken verwendet werden, die die theoretische Stärke des Passworts verringern. 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.

2
Andrew Hoffman