Entwicklertools · SHA-Hash-Rechner
Warum Sie Passwörter nicht als einfache SHA-256 Hashes speichern dürfen
· Warum es wichtig ist
Passwörter Sicherheit Kryptographie
SHA-256 ist auf Schnelligkeit ausgelegt, was genau das ist, was Sie für Passwörter nicht wollen. In diesem Beitrag wird erklärt, warum Geschwindigkeit das Problem ist und welche Passwort-Hashing-Funktionen anders funktionieren.
SHA-256 ist kein Passwortspeicher; es ist schnelles Hashing. Einfacher SHA-256 bietet Angreifern die gleiche Geschwindigkeit beim Erraten, was ihn ungeeignet macht, obwohl es sich um einen kryptografisch starken Algorithmus handelt.
Ein Entwickler implementiert ein Anmeldesystem und speichert Passwörter als SHA-256 Hashes. Der Algorithmus ist kryptografisch stark und die Anwendung wendet kein Salt an, sodass der Code einfach bleibt. Wenn sich ein Benutzer anmeldet, hasht die Anwendung die Übermittlung und vergleicht sie mit dem gespeicherten Wert. Dieses Design ist elegant in seiner Einfachheit und für die Passwortspeicherung völlig ungeeignet. Dies ist kein theoretisches Problem; Dies ist der häufigste schwerwiegende Fehler in Authentifizierungssystemen. Das Design scheint vertretbar zu sein, bis man bedenkt, was ein Angreifer mit gestohlenen Daten anstellen kann.
Der Fehler besteht nicht darin, dass SHA-256 schwach ist. SHA-256 ist ein robuster kryptografischer Algorithmus, dem die Sicherheitsgemeinschaft vertraut und der in der gesamten Branche für Integritätsprüfungen und Inhaltsadressierung verwendet wird. Der Fehler besteht darin, dass SHA-256 schnell ist und schnell genau das Gegenteil von dem ist, was Passwörter benötigen. Ein Passwort-Hash ist nicht irgendein kryptografisches Primitiv; Es handelt sich um ein spezielles Werkzeug, das für ein bestimmtes Problem entwickelt wurde: den Schutz vor Vermutungen. Geschwindigkeit ist ein Merkmal von Prüfsummen; Bei Passwörtern ist es eine Katastrophe.
Schnelligkeit ist der Sinn von SHA-256 – Integritätsprüfungen brauchen Geschwindigkeit, und ein Angreifer erhält die gleiche Geschwindigkeit beim Raten
Wenn eine Datenbank mit SHA-256 Passwort-Hashes kompromittiert wird, muss ein Angreifer die Hashes nicht umkehren. Der Angreifer erstellt ein Wörterbuch: gängige Passwörter wie „Passwort“, „123456“, „Hallo“ und Millionen mehr. Jeder Kandidat wird mit SHA-256 gehasht – eine rechnerisch triviale Operation – und mit der gestohlenen Datenbank abgeglichen. Ein Angreifer kann mögliche SHA-256-Werte mit demselben schnellen Grundelement berechnen, das vom Anmeldedienst verwendet wird, und dann jedes Ergebnis offline ohne Geschwindigkeitsbegrenzung vergleichen. Die genaue Rate hängt von der Hardware und der Implementierung ab, weshalb in diesem Artikel bewusst keine Angaben zu Schätzungen pro Sekunde oder zur Durchbruchszeit gemacht werden.
Geschwindigkeit ist das ganze Problem. SHA-256 soll schnell sein. Das ist seine Designabsicht. Damit können Sie Download-Prüfsummen überprüfen, Inhaltsadressen berechnen und Merkle-Bäume erstellen, ohne warten zu müssen. Bei diesen Anwendungen kommt es auf Geschwindigkeit an. Bei Passwörtern ist Geschwindigkeit eine Katastrophe. Wenn eine Passwortdatenbank gestohlen und mit SHA-256 gehasht wird, hat der Angreifer die gleiche Geschwindigkeit beim Erraten wie der legitime Server bei der Verifizierung. Diese Symmetrie beeinträchtigt die Passwortsicherheit. Sowohl der legitime Server als auch der Angreifer profitieren von einem schnellen, universellen Digest; Nur der Angreifer kann es offline ohne die Anmeldekontrollen der Anwendung wiederholen.
Wörterbücher und Regenbogentabellen – Vorberechnung gegen ungesalzene Hashes und was ein Salz ändert
Hier wird ein vorberechnetes Wörterbuch praktisch. Ein Angreifer kann einen Tag damit verbringen, SHA-256 Hashes für die tausend häufigsten Passwörter, für gängige Muster wie Name1990 oder für ganze Wörterbücher in mehreren Sprachen zu berechnen. Die resultierende Tabelle wird Regenbogentabelle genannt. Das Nachschlagen eines gestohlenen SHA-256-Hashs anhand einer vorberechneten Tabelle erfolgt sofort. Selbst ohne eine vorberechnete Tabelle ist die Berechnung einer Milliarde Vermutungen mit GPU-beschleunigtem Hashing trivial. Der Rechenaufwand für den Angreifer ist so gering, dass selbst schwache Passwörter innerhalb von Minuten verloren gehen.
Der ToolAcre SHA-Hash-Rechner demonstriert diese Geschwindigkeit direkt. Fügen Sie einen kurzen Text ein, klicken Sie auf die Schaltfläche SHA-256 und das Ergebnis ist sofort sichtbar. Dieses sofortige Ergebnis – die Eigenschaft, die Sie in einem Hash-Rechner bewundern – ist genau die Eigenschaft, die schlichtes SHA-256 für Passwörter unhaltbar macht. Ein Angreifer erhält bei jeder Vermutung sofort das gleiche Ergebnis. Für Prüfsummen und Integritätsprüfungen ist diese Geschwindigkeit perfekt. Bei Passwörtern ist dies fatal für die Sicherheit.
Welche Passwort-Hashing-Funktionen hinzufügen – Arbeitsfaktoren, Speicherhärte und Salts pro Benutzer in bcrypt, scrypt, Argon2 und PBKDF2
Ein Salt ist ein zufälliger Wert, der dem Passwort vor dem Hashing hinzugefügt wird, sodass der Salt für jeden Benutzer unterschiedlich ist. Selbst wenn zwei Benutzer dasselbe Passwort haben, verwenden sie einen Hash für unterschiedliche Werte. Dadurch werden vorberechnete Regenbogentabellen zerstört; Ein Angreifer muss die Tabelle für jedes Salt unabhängig berechnen. Bei unabhängig generierten Salts pro Benutzer gilt eine vorberechnete Tabelle nicht mehr unverändert für jedes Konto. Ein Salt zwingt den Angreifer jedoch nur dazu, die Tabelle während des Angriffs und nicht vorher zu berechnen. Wenn das Hashing immer noch schnell ist, berechnet der Angreifer einfach mehrere Tabellen parallel und errät weiterhin jedes Konto mit einem schnellen Grundelement. Das Salz ist notwendig, aber nicht ausreichend. Es verhindert die Wiederverwendung von Wörterbüchern zwischen Opfern, verlangsamt jedoch nicht die Kernaufgabe des Angreifers: das Raten. Die Geschwindigkeit des Hashings ist immer noch die Geschwindigkeit des Ratens.
Funktioniertes Beispiel – wie schnell SHA-256 eines allgemeinen Passworts im Vergleich zu einem abgestimmten Passwort-Hash erkannt wird, qualitativ beschrieben
Eine Passwort-Hashing-Funktion verfolgt einen anderen Ansatz. Bcrypt, scrypt, Argon2id und PBKDF2 wurden speziell für die Passwortüberprüfung entwickelt. Sie alle beinhalten einen Arbeitsfaktor: einen Parameter, der das Hashing bewusst teuer macht. Argon2 ist das modernste; Es passt sowohl die CPU-Zeit als auch den Speicherverbrauch an. Bcrypt verwendet einen einstellbaren Kostenfaktor, der die Arbeit mit jedem Inkrement verdoppelt. Alle verfügen über eine integrierte Salzerzeugung. Diese Tools wurden unter Berücksichtigung des Angreifermodells entwickelt. Der Faktor Arbeit ist entscheidend.
Eine Passwort-Hashing-Funktion macht die konfigurierten Kosten zu einem Teil jeder Verifizierung. Ein Angreifer, der Kandidaten testen möchte, muss diese Kosten auch für jede Vermutung bezahlen. Konkrete Zeitvorgaben können nicht sicher zwischen Bereitstellungen kopiert werden, weshalb im Abschnitt über Parameter ein Benchmarking anhand der tatsächlichen Produktionsklasse der Hardware erforderlich ist. Diese Asymmetrie ist es, die dafür sorgt, dass Passwort-Hashing funktioniert. Der Arbeitsfaktor verschiebt sich vom „Angreifervorteil“ zum „Verteidigervorteil“.
Migrieren einer alten SHA-256-Tabelle – Umschließen vorhandener Hashes und erneutes Aufbereiten bei der nächsten Anmeldung
Der durchgeführte Vergleich bleibt qualitativ, da dieses Repository keinen Benchmark für eine bestimmte Passwortfunktion oder einen bestimmten Angreifer enthält. Ein gemeinsames Passwort erzeugt jedes Mal sofort das gleiche einfache SHA-256, sodass ein vorhandener Wörterbucheintrag es anhand der Gleichheit identifizieren kann. Ein abgestimmter Passwortdatensatz enthält seine eigenen Salt- und Kostenparameter und erfordert konfigurierte Arbeit für jeden Kandidaten.
Dieser Kontrast stellt den Entwurfsfehler fest, ohne pro Sekunde Schätzungen zu versprechen. Hardware, Implementierung und ausgewählte Parameter bestimmen das Timing. Die vertretbare Schlussfolgerung ist unveränderlich: Ein Allzweck-Digest hat keinen einstellbaren Arbeitsfaktor oder Speicheraufwand, während eine Passwort-Hashing-Funktion speziell ausgewählt wird, um diese Kosten aufzuerlegen.
Was dies nicht abdeckt – Auswahl von Parametern für einen bestimmten Passwort-Hash, der von Ihrer Hardware und Ihrem Bedrohungsmodell abhängt
Die Parameterauswahl liegt bewusst außerhalb dieses Rechners und dieses Artikels. Die richtigen Einstellungen hängen von den Latenzbudgets des Servers, dem verfügbaren Speicher, der Parallelität und dem aktuellen Bedrohungsmodell ab. Das Kopieren eines festen Werts aus einer unabhängigen Bereitstellung würde also eine Sicherheitskontrolle zur Folklore machen. Vergleichen Sie die ausgewählte Passwortfunktion auf Hardware der Produktionsklasse und überprüfen Sie sie erneut, wenn sich die Kapazität ändert.
ToolAcre kann diese Übung nicht durchführen: Sein Panel akzeptiert Text und eine SHA-Kennung und gibt dann einen einfachen Digest zurück. Es stellt kein Salt-Feld, keine Speichereinstellung, keine Iterationskontrolle oder kein Passwort-Datensatzformat bereit. Dieses Fehlen ist ein nützliches Grenzsignal und keine fehlende Funktion, die durch wiederholtes Hashing eines Passworts im Textfeld umgangen werden kann.
Takeaway: Das sofortige Ergebnis ist die Warnung – der ToolAcre SHA-Hash-Rechner zeigt, wie schnell SHA-256 ist, weshalb er nicht die Passwörter Ihrer Benutzer enthalten darf
Ein Altsystem, das Passwörter als Klartext SHA-256 gespeichert hat, kann nach vorne migriert werden, ohne dass alle Benutzer sofort zurückgesetzt werden müssen. Die Technik besteht darin, den alten Hash zu „verpacken“: Nehmen Sie den Wert SHA-256 und hashen Sie ihn erneut mit Argon2. Bei der nächsten Anmeldung des Benutzers prüft das System, ob der alte SHA-256 übereinstimmt; Wenn ja, berechnet es Argon2 über dieses Ergebnis und speichert die verpackte Version. Wenn sich der Benutzer das nächste Mal anmeldet, verifiziert das System direkt mit Argon2. Die Migration erfolgt transparent während des normalen Anmeldevorgangs.
Dieser verpackte Ansatz stellt sicher, dass ältere Passwörter, die kompromittiert wurden, jetzt durch den Arbeitsfaktor geschützt sind. Ein Angreifer mit der alten Datenbank von SHA-256-Hashes kann diese nicht mehr einfach knacken; Sie müssen die verpackte Version angreifen, die die Kosten von Argon2 beinhaltet. Die Migration erfolgt für Benutzer transparent während ihres normalen Anmeldevorgangs. Jede Anmeldung bietet die Möglichkeit, den Hash zu stärken, ohne das Benutzererlebnis zu beeinträchtigen. Die Wahl des richtigen Arbeitsfaktors hängt von Ihrer Hardware und Ihrem Bedrohungsmodell ab. Argon2-Standardwerte sind sinnvoll: 19 Iterationen, 512 MB Speicher und 1 Parallelität für Webdienste.