Specialized Hardware, wie in Bitcoin Bergbau, durchführen kann nach oben von 50 Milliarden Hashes pro Sekunde (Stand Anfang 2013. Es ist ein bewegliches Ziel, da die Hardware schneller wird).
Wenn Sie 1000 Iterationen von PBKDF2 machen, dann wird das den Angriff von 50 Milliarden pro Sekunde auf 50 Millionen pro Sekunde reduzieren. 10.000 Iterationen werden 5 Millionen pro Sekunde sein.
Ein typischer Webserver wird jedoch nicht annähernd so schnell sein. Es wird ein Los langsamer für Sie sein. Sie müssen einige Tests auf Ihrem eigenen Produktionsserver durchführen und finden, dass 10.000 Iterationen zu langsam sind.
Es geht also nicht wirklich darum, wie schnell PBKDF2 brutal erzwungen werden kann, es geht darum, dass Ihr Server schnell ein PBKDF2-Passwort verifizieren kann. Sie müssen entscheiden, wie lange Sie denken, dass es dauern sollte (eine halbe Sekunde, eine Zehntelsekunde oder eine Hundertstelsekunde?) Und dann die Anzahl der PBKDF2-Runden entsprechend anpassen.
Beachten Sie auch die Stärke der von Ihren Kunden verwendeten Kennwörter. Wenn sie alle ausgezeichnete Passwörter haben, dann spielt es keine Rolle, welches Hash-System Sie verwenden. Wenn sie alle schreckliche Passwörter verwenden, dann ist PBKDF2 nicht gut genug, um sie zu schützen - Sie müssten exotischer werden, wie der Hardware-gesalzene Hash, den Apple im iPhone verwendet, um eine 4-stellige Zahl in etwas zu verwandeln, das mindestens einige hat Sicherheit (im Grunde erzwingen sie alle Hashing von einem dedizierten Hardware-Chip, der absichtlich langsam ist. Verschieben Sie die Daten auf andere Hardware und es ist unmöglich zu entschlüsseln).
Angenommen, das Kennwort befindet sich nicht in einem Wörterbuch (die meisten Kennwörter sind), dann wird die Kennwortstärke berechnet, indem die Anzahl der möglichen Zeichen im Alphabet für jedes Zeichen einzeln multipliziert wird. Wenn also ein Passwort Buchstaben (26 Zeichen) und Ziffern (weitere 10 Zeichen) hat, dann haben Sie ein 36 Zeichen langes Alphabet, und wenn es 6 Zeichen lang ist, multiplizieren Sie es 6-mal mit sich selbst.
So ein 6-stelliges alphanumerisches Passwort ist 36 * 36 * 36 * 36 * 36 * 36, oder wenn Sie bevorzugen: 36^6. Das gibt Ihnen ungefähr 2,1 Milliarden mögliche Passwörter ... allgemein gehen wir davon aus, dass der Hacker das echte Passwort etwa auf halbem Weg finden wird, nennen Sie es also 1 Milliarde.
Wenn Sie PBKDF2 verwenden und 1.000 Iterationen haben, wird ein Hacker mit spezialisierter Hardware 1 Milliarde Passwörter in ungefähr 20 Sekunden erraten. Das ist überhaupt keine sehr gute Sicherheit.
Sie können die Sicherheit verbessern, indem Sie entweder mehr PBKDF2-Runden verwenden (wodurch Ihre Website langsamer wird) oder indem Sie Ihre Benutzer davon überzeugen, bessere Kennwörter zu verwenden. Einfach durch Umschalten auf 7 Ziffern statt 6 oder durch Hinzufügen von Großbuchstaben oder sogar Symbolen, wird ihre Sicherheit dramatisch verbessert.
Wolfram Alpha ist nützlich für die Mathematik: ((36^6)/50 million) seconds
wo 36 ist die Größe des Alphabets und 6 ist die Länge des Passworts, und 50 Millionen ist die Anzahl der Raten pro Sekunde ein Hacker verwenden kann (50 Millionen ist a schwerer Angreifer nach PBKDF2 mit 1.000 Runden).
Wie viele Passwörter gibt es in Ihrer Datenbank? Wenn es 20 Sekunden dauert, um ein individuelles Passwort zu knacken, wird das 30 Tage Mathe oder 30 Jahre dauern? Es hängt davon ab, wie viele Kunden Sie haben.
Es ist angeblich einer der härtesten, wenn nicht der härteste zu brutaler Gewalt. (* und es ist so gestaltet *) Ich habe allerdings keine Zahlen zur Hand. – ZJR
Verwandte http://security.stackexchange.com/questions/12114/aes-encryption-choice-of-password – CodesInChaos
@ ZJR PBKDF2 ist viel billiger zu Brute-Force als scrypt. – CodesInChaos