it-swarm.com.de

Wie lange würde es mathematisch dauern, einen bcrypt-Passwort-Hash zu knacken?

Daher verwende ich derzeit bcrypt, um Passwörter mit einem zufällig generierten Salt (wie im pip bcrypt -Modul zu sehen) mit 12 Runden zu hashen.

Ich habe mich umgesehen, aber ich kann keinen detaillierten und klaren mathematischen Weg finden, um abzuschätzen, wie lange eine starke GPU (oder sogar andere Methoden zum Knacken) brauchen würde, um meinen bcrypt-Hash zu knacken.

Ich habe this Gist gefunden, das 8x Nvidia GTX 1080 Hashcat-Benchmarks beschreibt, aber ich kann die für bcrypt angegebenen Zahlen anscheinend nicht für meine Implementierung des Hashing-Algorithmus verwenden.

11
madcrazydrumma

Ok, aus dem Artikel, den Sie verlinkt haben, erfahren wir, dass das 8x Nvidia-Setup ungefähr 100.000 bcrypt-Hashes pro Sekunde (H/s) berechnen kann. Der für die Benchmark verwendete Kostenfaktor beträgt 5 - sehr niedrig - wenn man den Kommentaren Glauben schenken will. Bei bcrypt entspricht die Anzahl der Runden zwei der Potenz des Kostenfaktors. Wenn Ihr 12 ist, ist Ihr Hash 212/ 25 = 27 = 128 mal langsamer. Also ab 105 H/s du bist auf 10 gesunken3 H/s.

Jetzt müssen Sie nur noch wissen, dass Sie im Durchschnitt 2 versuchen müssen, um einen Hash mit n Entropiebits zu knackenn-1 mal. Nehmen Sie zum Beispiel ein Passwort, das aus 8 zufälligen Kleinbuchstaben besteht. Es hat eine Entropie von n = log2(268) = 38 Bit. Um es zu knacken, würden Sie 2 benötigen38-1/ 1000 Sekunden = 4 Jahre.

Beachten Sie, dass der Benchmark aus dem Jahr 2016 stammt. Mit der Zeit wird die Hardware schneller. Sie müssen Ihren Kostenfaktor regelmäßig neu bewerten, um auf dem neuesten Stand zu bleiben.

14
Anders

Dies ist ein häufiges Missverständnis über Passwörter. Dies hängt von Ihrer Definition des Passworts ab. Sie müssen zuerst definieren, was Sie unter Passwort verstehen, z. B. "8 alphanumerische Zeichen". Sobald Sie das definiert haben, können wir berechnen.

Eine "alphanumerische Zahl" besteht aus 26 Großbuchstaben, 26 Kleinbuchstaben und 10 numerischen Zeichen oder 62 möglichen Kombinationen.

Um alle Kombinationen eines 8-stelligen Passworts auszuprobieren, wäre dies: 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62

Das sind 218.000.000.000.000.

Teilen Sie dies durch 13094 (die Anzahl der Hashes pro Sekunde) und Sie erhalten 16674820955 Sekunden oder 528 Jahre.

Die Unpraktikabilität, alle Kombinationen auszuprobieren, führt zu anderen Strategien, z. B. zur Auswahl von Wörterbuchwörtern oder "Markov-Ketten", um die Art der Passwörter zu testen, die wahrscheinlich gewählt werden, anstatt alle zufälligen Kombinationen auszuprobieren. Sie können nicht mathematisch berechnen, wie schnell dies ist, da es völlig subjektiv ist. Es hängt vom Glück ab, welche Passwörter die Ziele ausgewählt haben und welche Passwörter Sie zum Testen ausgewählt haben. Es liegt oft in der Größenordnung einer 10% igen Chance, ein Passwort mit ein paar Stunden Knacken zu knacken, aber auch das ist eine subjektive Erfahrung. Abhängig davon, wessen Passwort Sie knacken und wie Sie es knacken, variiert Ihre Erfahrung.

Der Punkt ist jedenfalls, dass diese Frage keine Antwort hat. Es ist ein Missverständnis darüber, wie die Dinge funktionieren. Und deshalb können Sie die Antwort nicht googeln.

0