it-swarm-eu.dev

Sind gesalzene SHA-256/512-Hashes noch sicher, wenn die Hashes und ihre Salze freigelegt sind?

Szenario: Eine Datenbank mit gehashten und gesalzenen Passwörtern, einschließlich Salzen für jedes Passwort, wird von einem böswilligen Benutzer gestohlen. Passwörter sind 6-10 Zeichen lang und werden von nicht technischen Benutzern ausgewählt.

Kann dieser böswillige Benutzer diese Passwörter knacken?

Meines Wissens nach sind MD5 und SHA-1 nicht mehr sicher, da GPU-unterstützte Tools zur Kennwortwiederherstellung Milliarden dieser Hashes pro Sekunde und GPU berechnen können.

Was ist mit SHA-256 oder SHA-512? Sind sie derzeit sicher? Was ist mit in ein paar Jahren?

51
Seppo Erviälä

Die Frage gibt nicht an, wie viele Hashing-Runden durchgeführt werden. Und die ganze Antwort hängt von diesem Punkt ab.

Alle Hash-Funktionen sind unsicher, wenn Sie nur eine Iteration verwenden. Die Hash-Funktion, egal ob es sich um SHA-1 oder eine der SHA-2-Familien handelt, sollte tausende Male wiederholt werden. Ich würde 10.000 Iterationen als Minimum betrachten, und 100.000 Iterationen sind angesichts der geringen Kosten für leistungsstarke Hardware nicht unangemessen.

Kurze Passwörter sind ebenfalls unsicher. 8 Zeichen sollten das Minimum sein, auch für Ziele mit geringem Wert (da Benutzer dasselbe Kennwort für mehrere Anwendungen wiederverwenden).

Mit einer Grafikkarte im Wert von 150 US-Dollar können Sie 680 Millionen SHA-1-Hash-Berechnungen pro Sekunde durchführen. Wenn Sie nur eine Hashing-Runde verwenden, alle 6-stellige Passwörter können in etwas mehr als 15 Minuten getestet werden (vorausgesetzt, alle 94 druckbaren ASCII Zeichen werden verwendet). Jedes zusätzliche Zeichen multipliziert die Zeit mit 94, also 7 Zeichen erfordern einen Tag, 8 Zeichen erfordern 103 Tage für dieses Setup. Denken Sie daran, dass dieses Szenario ein 14-jähriger ist, der seine GPU verwendet, kein organisierter Verbrecher mit echtem Geld.

Betrachten Sie nun den Effekt der Durchführung mehrerer Iterationen. Wenn 1.000 Hashing-Iterationen durchgeführt werden, dauert der 6-stellige Kennwortspeicher fast 12 Tage anstatt 15 Minuten. Ein Leerzeichen mit 7 Zeichen dauert 3 Jahre. Wenn 20.000 Iterationen verwendet werden, reichen diese Zahlen bis zu 8 Monaten bzw. 60 Jahren. Zu diesem Zeitpunkt können selbst kurze Passwörter nicht vollständig durchsucht werden. Der Angreifer muss auf ein Wörterbuch mit "wahrscheinlichsten" Passwörtern zurückgreifen.

61
erickson

Das Salz kann als öffentlich angesehen werden praktisch per Definition .

Was den zu verwendenden Hash betrifft und wie "sicher" er ist, würde ich mich an die Empfehlungen halten, die NIST für US-Regierungsbehörden gibt. Wie der Wikipedia-Artikel sagt:

SHA-1 wird für die meisten staatlichen Zwecke in den Ruhestand versetzt. Das US-amerikanische National Institute of Standards and Technology sagt: "Bundesbehörden sollten die Verwendung von SHA-1 für ... Anwendungen einstellen, die so schnell wie möglich Kollisionsbeständigkeit erfordern und muss die SHA-2-Familie von Hash-Funktionen für diese Anwendungen nach 2010 verwenden. "

Sie können darüber spekulieren, wie sicher oder unsicher verschiedene Algorithmen sind, aber warum sollten Sie sich die Mühe machen, wenn Sie eine Spezifikation haben, die die US-Regierung für gut genug für den eigenen Gebrauch hält?

[bearbeiten]

Ihre Frage scheint übrigens ein Missverständnis darüber zu widerspiegeln, wie diese Analysen durchgeführt werden. Eine Hash-Funktion enthält viel mehr als die Anzahl der Bits.

Das brutale Erzwingen eines 160-Bit-Hash wie SHA-1 erfordert 2 ^ 160 Aufwand; Das wird einfach nicht passieren, egal wie viele "GPUs" Sie darauf werfen. In der Tat wird es wahrscheinlich nicht im Leben des Universums passieren. (Richtig, das brutale Erzwingen einer Kollision erfordert "nur" 2 ^ 80 Aufwand. Aber es erfordert auch 2 ^ 80 Speicher . Viel Glück damit.)

Der Grund, warum MD5 und SHA-1 als "möglicherweise unsicher" eingestuft werden, besteht darin, dass in jedem Algorithmus Schwachstellen entdeckt wurden, die den Arbeitsweg weit unter den Brute-Force-Aufwand reduzieren könnten. Der Grund für die Umstellung auf einen neueren Algorithmus (wie SHA-2) besteht darin, diese bekannten Schwachstellen zu vermeiden. Der Grund für die Verwendung von 256 Bit besteht darin, einen Puffer gegen unbekannte Schwachstellen bereitzustellen. Es hat nichts mit "GPUs" zu tun; Um Brute-Force-Angriffen zu widerstehen, reichen 160 Bit aus.

Ähnliche Aussagen gelten übrigens für alle Kryptografien.

Jetzt ist es unmöglich zu übertreiben, wie viel mehr die Leute bei NSA über dieses Zeug wissen als Sie oder ich. Sie geben Empfehlungen für US-Regierungsbehörden und die US-Industrie über NIST ab. Es sei denn, Ihr Gegner ist selbst eine große Weltregierung, die NIST-Empfehlungen sind mehr als ausreichend. Ignorieren Sie alle selbsternannten "Experten", die versuchen, Ihnen etwas anderes zu sagen; NSA ist besser in dem, was es tut, als Sie möglicherweise können vorstellen.

Wenn Ihr Gegner eine große Weltregierung ist, ist niemand bei SO qualifiziert, Ihnen zu helfen. Und Sie haben viel mehr Probleme als welche Hash-Funktion verwendet werden soll.

[bearbeiten 2]

Natürlich gehe ich davon aus, dass Sie diese Funktion bereits als Teil eines Standard-Passwort-Hashing-Schemas wie PKCS # 5 (auch als "PBKDF2" bekannt) verwenden, und Ihre Frage war nur, welche Hash-Funktion verwendet werden soll verwenden.

PBKDF2 empfiehlt mindestens 1000 Iterationen, Sie können jedoch auswählen, was Sie möchten. Die Brute-Force-Anstrengung des Angreifers steigt linear mit dieser Zahl. 10000 Iterationen gegenüber 1000 bedeuten, dass sie zehnmal länger brauchen, um jedes Passwort zu erzwingen.

17
Nemo

Wenn der Angreifer das Salz kennt, kann er anhand des Salzwerts eine neue Regenbogentabelle berechnen.

Dies hängt vom verwendeten Algorithmus ab. Nach Coda Hale sind MD5 und die SHA -Familie von Hashing-Algorithmen universell einsetzbar und auf Geschwindigkeit ausgelegt. Kurz gesagt, er kommt zu dem Schluss, dass diese nicht ausreichen, um Wörterbuchangriffe zu verhindern, und dass bcrypt der richtige Weg ist, da das Knacken von Passwörtern mehr Einrichtungszeit erfordert und einen Angreifer drastisch verlangsamt. Hier ist ein weiterer interessanter Artikel über bcrypt .

Was ist mit SHA-256 oder SHA-512? Sind sie derzeit sicher? Was ist mit in ein paar Jahren?

Seien Sie gewarnt, dieses Argument hat zwei Seiten. Es gibt die bcrypt Seite und die SHA-256 und die obere Seite. Wenn Sie denen der SHA -Familie glauben, dann werden Sie mit SHA-256 mehr als ein paar Jahre in Sicherheit sein, sogar einige argumentieren, dass SHA-1 mit einem Salz immer noch gut genug ist. Aber wenn Sie sicher sein wollen, würde ich mich an SHA-256 halten. Es gibt ein Forum, in dem auch erwähnt wird, dass MD5 noch 5-10 Jahre Zeit hat, um als "ausreichend unzuverlässig" erwiesen zu werden. Leider kann ich die Links dazu nicht posten, da ich bereits mein Maximum von zwei erreicht habe.

Persönlich verwende ich SHA-256 mit einem Salz, aber ich muss definitiv mehr in bcrypt lesen und neu bewerten. Hoffentlich hilft das. Dies ist eine Art von Frage, die Sie leicht unzählige Stunden lang recherchieren können, die aber dennoch interessant ist.

1
SantosLHalper