2012-07-02 20 views
8

Nach dem Hash-Leck linkedin Passwort, ich habe in unserem Passwort-Hashing gesucht. Wir verwenden Django 1.4, das PBKDF2 verwendet, was großartig ist und einen Schritt weiter als der vorherige SHA1.Wie schnell bringst du PBKDF2?

Allerdings bin ich gespannt, wie leicht könnte man die rohe Gewalt. Ich schaue uns unsere Regeln für die Komplexität von Passwörtern an und frage mich, wie schnell es dauern würde, um (sagen wir) 8-seitige Ascii-Kleinbuchstaben zu schreiben.

Dieser Leitfaden zum Knacken der LinkedIn-Passwort Hash, hat jemand 430 Millionen sha1 Hashes pro Sekunde auf einer GPU. http://erratasec.blogspot.ie/2012/06/linkedin-vs-password-cracking.html Welche Geschwindigkeiten würden Sie für PBKDF2 bekommen?

Hat irgendjemand irgendwelche ungefähren/zurück-von-the-Envelope/Ballpark-Zahlen für wie schnell könnte man PBKDF2 Brute-Force?

+0

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

+0

Verwandte http://security.stackexchange.com/questions/12114/aes-encryption-choice-of-password – CodesInChaos

+0

@ ZJR PBKDF2 ist viel billiger zu Brute-Force als scrypt. – CodesInChaos

Antwort

9

Es gibt eine writeup over at agilebits von Februar, die die Servietteberechnungen macht. Die Kurzfassung:

Als Ball Park Figur, ich werde sagen, 10.000 PBKDF2 Iterationen Zehn oder hundert Millisekunden führen ein Passwort für ein sehr High-End-Consumer-System zu testen. Was wir mit PBKDF2 machen, ist die Reduzierung von Dinge von einer Million Tests pro Sekunde auf ein paar hundert. Dies ist unter Berücksichtigung spezieller Software, die Verwendung von mehreren Kerne und mehrere GPUs macht.

So Ihren erratasec Artikel nehmen, die als Grundlage für einen gpu 430 Millionen SHA-1-Hashes pro Sekunde Benchmarks - der agilebits Artikel zeigt Metriken, die PBKDF2 mit 10k Iterationen würde vorschlagen, dass pro Sekunde um 100k Tests bringen.

Weit weg von wissenschaftlichen, aber bringt uns im Baseballstadion ...

+1

Sie haben den Teil vermisst, wo sie über GPU-Cracking gesprochen haben und dass die Schätzung ~ 1 Million/Sek. Auf einer GPU war. https://blog.agilebits.com/2012/07/31/1password-is-ready-for-john-the-ripper/ erwartet, dass das Modul bald geändert wird, damit es Graphic verwenden kann Prozessoreinheiten (GPUs). Dies wird die Schätzgeschwindigkeit um mehr als das Hundertfache erhöhen. In meiner Tabelle unten habe ich eine 200-fache Erhöhung der Geschwindigkeit für GPUs verwendet. Also, wo ich auf meinem Mac Pro ungefähr 5000 Raten pro Sekunde hatte, nehme ich an, dass es mit der GPU-Beschleunigung eine Million Raten pro Sekunde geben wird. –

3

PBKDF2 abstimmbar ist. Sie können den Kostenwert immer erhöhen, um die Anzahl möglicher Fehler pro Sekunde für einen Angreifer zu reduzieren. Ich empfehle, zu entscheiden, wie schnell es auf Ihrer Plattform laufen soll, und stellen den Kostenwert entsprechend ein. Wenn Sie 200-Hashes Zum Beispiel denken/s ist ein idealer Kompromiss in der Leistung/Sicherheit, erhöhen dann den Kostenwert und testet, wie lange es dauert ein paar tausend Test Passwörter Hash, bis Sie etwa 200/s im Durchschnitt.

PBKDF2 verwendet auch ein "Salz", das verhindert, dass Angriffe skaliert werden, indem der Angreifer gezwungen wird, jedes einzelne Konto einzeln anzugreifen. In Kombination mit dem Dehnen (d. H. Verlangsamen des Algorithmus) ist es extrem schwierig, mehr als eine kleine Anzahl von Konten wiederherzustellen. Ein Angreifer kann auf einem Konto konzentrieren und das Beste hoffen oder eine bestimmte Zeit (eine Stunde, einen Tag) für jedes Konto widmen und dann zum nächsten bewegen, wenn er nicht erfolgreich ist.

Mit den LinkedIn-Hashes konnten die Leute mehr als eine Million Hashes an einem Tag oder weniger knacken. Mit PBKDF2, das bei ~ 200 Raten/Sekunde läuft, würde es ungefähr 9 Stunden dauern, nur um herauszufinden, welches der 6.5M-Konten "linkedin" als ihr Passwort verwendet hat. Wenn Sie eine Liste von 1.000 gemeinsamen Passwörtern gegen alle diese Hashes ausführen wollten, würde es etwa ein Jahr dauern.

3

Denken Sie daran, dass bcrypt, scrypt und PBKDF2/PKCS # 5/RFC 2898 alle eine unterschiedliche Anzahl von Iterationen unterstützen; nichts ist von Natur aus "schneller" oder "langsamer". Einige nehmen mehr RAM (PBKDF2 tut nicht viel RAM nehmen), aber das war es.

Soweit PBKDF2 Iterationen in bestimmten, kann eine beliebte GPU-basierte Cracking-Programm mit einem ausgestatteten modernen Desktop + 8 GPUs bei 1 Million pro Sekunde gegen WPA2 behandelt werden.Da WPA2 im Wesentlichen PBKDF2 (HMAC-SHA1, Passphrase, ssid, 4096, 256) ist, sagt uns das, dass eine Maschine etwas über 4 Milliarden HMAC-SHA1 PBKDF2-Iterationen pro Sekunde testen kann. Zehn solcher Maschinen würden natürlich über 40 Milliarden solcher Iterationen pro Sekunde testen.

OWASP Passwort Spickzettel (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) empfiehlt mindestens 64.000 Iterationen im Jahr 2012 alle zwei Jahre verdoppelt, oder 90.510 Iterationen 2013

3

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.