Ist Stretching Hash mehrmals im Grunde dasselbe wie bcrypt?

  • Wenn ich es verstehe, ist der Hauptvorteil von bcrypt das Strecken, so dass es langsamer wird, Überstunden zu knacken. Wird der Algorithmus "gut genug" (z. B. die SHA-2-Familie) dann so lange gedehnt, bis er langsam genug ist, um Ihren Wünschen zu genügen, ist er in etwa so wie bcrypt?

    Hinweis: Ich verstehe, dass Scrypt überlegen ist, aber nehmen wir an, dass Bcrypt das Beste für jetzt ist.

    08 August 2012
1 answer
  • Nein, so funktioniert es nicht. Sie müssen Gedächtnis in die Gleichung einführen. Der Schlüssel von bcrypt und scrypt besteht darin, dass sie eine variable Speichermenge verwenden (die nicht optimiert werden kann), um den endgültigen "Hash" zu berechnen. Oft hat dies die Form großer Nachschlagetabellen, die nicht eingebettet werden können, weil auf sie pseudozufällig zugegriffen wird. Sie müssen sie also irgendwie speichern.

    Was ist der Punkt, werden Sie mich fragen? Schauen Sie sich einen Standard-MD5-Hash an. Dies erfordert im Wesentlichen keinen Speicher, der implementiert werden muss, sodass Sie eine Reihe von FPGAs und GPUs erwerben, einen Cluster erstellen und eine Billion Passwörter pro Sekunde hashieren können.

    Sehen Sie sich jetzt Ihre md5-Variante an mit Iterationen. Okay, jetzt müssen Ihre FPGAs und GPUs härter arbeiten, aber es ist immer noch recht einfach zu implementieren - fügen Sie einfach eine for-Schleife hinzu (und es ist einfach, die Anzahl der Iterationen zu ändern). Sie können jetzt nur 20 Millionen Passwörter pro Sekunde mit Ihrem Cluster verschlüsseln, großartig.

    Betrachten Sie nun bcrypt / scrypt und lassen Sie diese so einstellen, dass sie beispielsweise 20 MB Speicher benötigen pro Hash (und etwa so teuer wie N Runden von MD5). Sie versuchen, es in Ihrem Cluster zu implementieren, und ... BOOM! Nicht genügend lokaler Speicher, um den Hash auszuführen, da jetzt für jede Hash-Iteration nicht verhandelbare 20 MB Arbeitsspeicher erforderlich sind und Ihren GPU / benutzerdefinierten Chips sicherlich nicht so viel Speicher zur Verfügung steht (für jeden Hash, den sie parallel ausführen, nämlich den Hash) ist). Ihr Cluster ist jetzt im Wesentlichen unbrauchbar - Gesamt-Hash-Rate: 0 Hash pro Sekunde.

    Grundsätzlich kann die Rechenleistung kostengünstig und problemlos parallelisiert werden, der Arbeitsspeicher jedoch nicht. Dies ist der Grundstein von bcrypt und scrypt. Offensichtlich können sie immer noch mit reiner Gewalt gebrochen werden, und Sie könnten nur Hardware mit integrierten Speichereinheiten verwenden, um das Problem zu umgehen, aber das ist viel schwieriger und viel teurer.

    Insgesamt macht das Hinzufügen von mehr Iterationen Spaß, aber es skaliert nur linear. Fügen Sie doppelt so viele Iterationen hinzu, h

    10 August 2012
    Thomas