Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
Is Your Password Actually Stored? Sites Keep a Salted Hash
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 102 Zeilen
- Eine Login-Tabellenzeile ist auf dem Bildschirm zu sehen. Email, salt, algorithm,
- cost, hash. Die Passwortspalte fehlt. Man würde erwarten, dass die Seite das speichert,
- was sie prüft, aber die sicherste Zeile weigert sich, es zu behalten. Wie kann eine Website also beweisen,
- dass du ein Passwort kennst, ohne das Passwort selbst zu speichern?
- Die kurze Antwort ist auf genau die richtige Weise unbequem. Eine verantwortungsvolle Seite speichert einen verifier,
- einen salted hash, der einen künftigen Versuch bestätigen kann, aber das ursprüngliche Passwort nicht preisgeben sollte.
- Wenn du Passwörter wiederverwendest, entscheidet diese fehlende Spalte, ob eine gestohlene database
- nur eine Reset-Email wird oder ein Schlüssel zu deiner Bank, deinem Postfach
- und deinem cloud account. Früher dachte ich, die Geschichte sei encryption.
- Ist sie nicht. Die Antwort ist kein vault. Sie ist eine wiederholbare Berechnung mit einer absichtlich
- teuren falschen Antwort. Das ist diese Episode von KNOW:
- TECH. Die normale Annahme klingt plausibel. Eine Seite fragt nach deinem Passwort.
- Sie sagt yes oder no. Irgendwo
- stellt sich dein Gehirn ein verstecktes Regal vor, in dem dieses Passwort wartet.
- Aber ein gutes Login-System sollte sich nicht so an dich erinnern.
- Es sollte sich an Belege erinnern, die du neu erzeugen kannst. NIST P800-63B verwendet das Wort verifier,
- und dieses Wort ist wichtig. Das Gespeicherte ist meist ein hash plus
- metadata, salt, algorithm, version und ein work factor oder memory cost.
- Ein hash ist eine Einwegtür. Du kannst ein Passwort hindurchschieben und
- bekommst ein Ergebnis, das fest aussieht. Du solltest das Passwort nicht wieder
- herausholen können. Beim Login nimmt das System deinen neuen Versuch,
- fügt den gespeicherten salt hinzu, führt dieselben settings aus
- und vergleicht das neue Ergebnis mit dem gespeicherten proof. Ich will bei den Vergleichen kurz langsamer machen.
- Es entschlüsselt das alte Passwort nicht. Es stellt es nicht wieder her.
- Es fragt, ob die heutige Berechnung auf dem gestrigen proof landet. Das macht die Passwort-database nützlich für
- den Login-Server und nutzlos für alle, die hoffen, dass sie Passwörter enthält.
- Aber wenn ein hash eine Einbahnstraße ist, warum sind gestohlene Passwort-databases dann immer noch wichtig?
- Stell einen salt shaker neben die Zeile. Das Bild ist einfach,
- aber die Aufgabe ist präzise. Ein salt ist zusätzliche zufällige data, gemischt in
- das Passwort jedes users vor dem hashing. Hier ist der Teil, der mich überrascht hat.
- Der salt wird normalerweise neben dem hash gespeichert. Er ist kein secret key.
- Es klingt, als müsste er versteckt sein, aber Verstecken ist nicht seine Hauptaufgabe.
- Ohne salts kann dasselbe Passwort denselben hash über viele accounts hinweg erzeugen.
- Angreifer können lookup tables für gängige Passwörter vorberechnen und diese Arbeit wiederverwenden.
- Mit einem unique salt wird dasselbe Passwort in jeder Zeile zu einem anderen
- target. Der breach wird also nicht an der Tür gestoppt.
- Er wird bei jedem guess verlangsamt. OWASPs password storage cheat sheet wird konkret, wenn
- Argon2ID verfügbar ist. Es empfiehlt mindestens 19 mebibytes an memory,
- zwei iterations und einen Grad an parallelism. Das klingt nach tuning trivia, bis man sich vorstellt,
- dass der Angreifer die ganze Tabelle hat. Normales Login muss erträglich bleiben.
- Das Cracking gestohlener Datenbanken, muss teuer werden.
- Ich sehe das als den Preis eines guess. Sobald man das erkennt,
- wirken alte breach stories nicht mehr wie eine Kategorie namens password leak.
- Die timeline beginnt am 5. Juni 2012, als der LinkedIn password hash breach
- öffentlich wurde. Have I Been Pwned listet 164 Millionen offengelegte email addresses und passwords,
- wobei passwords als unsalted SHA-1 hashes gespeichert waren. SHA-1 ist schnell,
- und schnell ist genau das, was man nicht will, nachdem die database gestohlen wurde.
- Ich sage das nicht, um auf ein einzelnes company einzuschlagen. Viele ältere systems wurden gebaut, als der
- login server wie der bottleneck wirkte. Nach dem Diebstahl bringt der attacker den bottleneck nach Hause.
- Dann kommt Dropbox. Have I Been Pwned verbindet den breach vom 1. August
- 2012 mit mehr als 68 Millionen records, die email addresses und salted password hashes enthielten,
- aufgeteilt zwischen SHA-1 und Bcrypt. Diese Aufteilung ist wichtig.
- Zwei Menschen im selben incident konnten unterschiedlichem cracking pressure ausgesetzt sein, weil ihre rows unterschiedliche
- schemes nutzten. Dann, am 3. Oktober 2013, gab Adobe bekannt, dass attackers auf customer IDs
- und encrypted passwords zugegriffen hatten. Encryption hat gute Einsatzbereiche,
- aber recoverable password storage hat einen scharfen failure mode. Wenn das system das password
- zurückholen kann, kann jemand, der die richtigen pieces kompromittiert, es vielleicht ebenfalls tun.
- Hier hat sich mein model verändert. Die login table row ist nicht nur storage.
- Sie ist eine Wette darauf, was der thief als Nächstes tun kann.
- Die sicherste password database ist eine, die dir das password nicht nennen kann.
- Jetzt schauen wir auf einen anderen screen. Pwned passwords. Das Problem ist heikel.
- Man will prüfen, ob ein password in bekannten breaches aufgetaucht ist,
- aber das ganze password an einen service zu senden, würde genau das risk erzeugen, das man reduzieren will.
- Troy Hunts Pwned Passwords range API löst das mit einem k-anonymity prefix.
- Der client hasht das password mit SHA1, sendet nur die ersten fünf Zeichen dieses hash,
- und bekommt passende suffixes mit counts zurück. Der service kann bei der Prüfung helfen, ohne das ganze secret
- zu empfangen. Dieser fünfstellige prefix ist die interface-Version
- der fehlenden Spalte. Er fragt nach gerade genug evidence,
- nicht nach allem. Aber das ist keine Magie.
- Der prefix schützt den lookup. Er macht ein schwaches password nicht stark.
- Wenn das password häufig ist, kann der zurückgegebene count genau zeigen, warum
- das login system es ablehnen sollte. Ich kam immer wieder auf dieselbe enge
- Frage zurück. Wenn das system das password nicht wiederherstellen kann, woher weiß es dann trotzdem, dass man das
- richtige eingegeben hat? Die Antwort ist kleiner als memory und stärker als trust.
- Es führt den test erneut aus. RFC 9106, datiert auf 2021,
- standardisierte Argon2 für password hashing use, und sagt, dass Argon2 ID von
- Implementierungen dieses RFC unterstützt werden muss. Die wichtige Formulierung lautet:
- memory hard. In einfachem Englisch: Die function lässt attackers mit memory bandwidth
- und hardware capacity bezahlen, nicht nur mit CPU speed.
- Jetzt setzen wir das in ein launch review. Product will, dass sign-up reibungslos bleibt.
- Operations will eine vorhersehbare Serverlast. Security will, dass die gestohlene Tabelle enttäuschende
- Beute ist. Jemand zeigt auf die Login-Zeilen und fragt: Zeigt mir die gezählte Arbeit.
- Saubere Zeile, unique salt, argon2id, memory cost aufgezeichnet,
- hash gespeichert, kein plaintext password. Saubere Zeile, bcrypt für einen älteren Account beibehalten,
- Version für die Migration markiert, keine Passwortspalte.
- Umstrittene Zeile, unsalted SHA1 weil ein legacy service noch davon abhängt.
- Umstrittene Zeile, encrypted password, weil ein Support-Workflow Wiederherstellung will.
- Das ist die Drucksituation, kein Lock-Icon.
- Ein Tabellen-Review vor einem Launch, bei dem Kompatibilität, Geschwindigkeit
- und Schaden bei einem Breach alle unterschiedliche Antworten verlangen.
- Der salt verhindert, dass 1Password zu einem wiederverwendbaren Lookup wird. Der cost factor macht Raten zu einem
- operativen Aufwand. Eine memory-hard function macht die Hardware des Angreifers zu einem Teil der Verteidigung.
- Login ist Vergleich, nicht Erinnerung. Holt die erste Zeile zurück.
- Email, salt, algorithm, version, cost, memory,
- hash. Immer noch keine Passwortspalte. Was wie fehlende Daten aussah,
- sieht jetzt aus wie Design, das seine Aufgabe erfüllt. Wenn euer Team heute entscheiden müsste,
- Würdet ihr neue Logins auf Argon2ID mit höherem memory cost umstellen?
- Oder bcrypt aus Kompatibilitätsgründen behalten und das Risikobudget in passkeys stecken?
- Erzählt uns in den Kommentaren, was euer eigenes System, eure invoice oder euer incident euch beigebracht hat.
- Dieser Kanal verfolgt die Mechanismen, die entscheiden, ob aus einem Breach eine Schlagzeile wird
- oder ein eingedämmter Ausfall. Danke fürs Zuschauen.
- Bis zum nächsten Mal.
Zum Nachlesen
Salt (Kryptologie)Salt (englisch für Salz) bezeichnet in der Kryptographie eine zufällig gewählte Zeichenfolge, die an einen gegebenen Klartext vor dessen weiterer Verarbeitung ( …
Rainbow TableJede dieser Ketten startet mit einem initialen Kennwort, welches durch eine Hashfunktion geleitet wird. Der resultierende Hash wird wiederum durch eine …
SchlüsselableitungDie gebräuchlichste Verwendung von Schlüsselableitungsfunktionen ist der Passwort-Hash bei der Passwortverifizierung. Schlüsselableitungsfunktionen weisen …
Challenge-Response-AuthentifizierungAlice ergänzt diese Zahl N um ihr Passwort, wendet eine kryptologische Hashfunktion oder Verschlüsselung auf diese Kombination an und sendet das Ergebnis an Bob …