Komplexitätsregeln messen das Falsche
Fast jede Site verlangt nach einem Großbuchstaben, einer Ziffer und einem Symbol. Es ist nahezu nutzlos, und der Grund dafür ist, dass Menschen Regeln auf die billigste verfügbare Art und Weise erfüllen.
Wenn sie nach einem Großbuchstaben gefragt werden, schreiben sie den ersten Buchstaben groß. Wenn sie nach einer Ziffer gefragt werden, hängen sie 1 an. Wenn sie nach einem Symbol gefragt werden, hängen sie ! an. Das Ergebnis ist Password1!, das alle Regeln erfüllt und in den ersten paar tausend Schätzungen eines echten Angriffs enthalten ist.
Die Regel schränkt die Form des Passworts ein. Ein Angreifer errät keine Formen; Sie erraten wahrscheinliche Zeichenfolgen, und Regeln, die jeder auf die gleiche Weise erfüllt, erleichtern die Aufzählung der wahrscheinlichen Zeichenfolgen.
Vor dem Weiterlesen
Was ist schwerer zu erraten: sechzehn zufällige Kleinbuchstaben oder acht zufällige Zeichen unter Verwendung des gesamten druckbaren Satzes?
Die sechzehn Kleinbuchstaben, mit großem Abstand – etwa 75 Bit Entropie gegenüber 52. Die Länge multipliziert den Exponenten, während das Alphabet nur die Basis erhöht, sodass das Hinzufügen von Zeichen besser ist als das Hinzufügen von Zeichentypen jedes Mal. Das ist genau der Grund, warum Kompositionsregeln zu schwachen Passwörtern führen und warum aktuelle Richtlinien stattdessen mit der Länge führen.
Entropie ist das, was man nicht erraten kann
Das nützliche Maß ist, wie viele gleichwahrscheinliche Ergebnisse der Prozess hätte hervorbringen können.
entropy in bits = length x log2(size of the alphabet)
8 characters, lowercase only = 8 x 4.7 = 37.6 bits
8 characters, all 94 printable = 8 x 6.55 = 52.4 bits
16 characters, lowercase only = 16 x 4.7 = 75.2 bits
4 words from a 7,776-word list = 4 x 12.9 = 51.7 bits
5 words from a 7,776-word list = 5 x 12.9 = 64.6 bits
Zwei Dinge fallen aus dieser Tabelle heraus, und beide sind nicht intuitiv.
Länge ist wichtiger als Alphabet. Sechzehn Kleinbuchstaben sind weitaus stärker als acht gemischte Zeichen, da die Länge den Exponenten multipliziert, während das Alphabet nur die Basis erhöht.
Eine einprägsame Phrase kann einer zufälligen Zeichenfolge entsprechen. Vier zufällige Wörter sind ungefähr so stark wie acht zufällige druckbare Zeichen und auf einem Telefon enorm einfacher einzugeben.
Die Bedingung, die irgendetwas davon wahr macht
Bei jeder oben genannten Zahl wird davon ausgegangen, dass die Auswahl zufällig war. Nicht „willkürlich“, nicht „etwas, woran ich nicht gedacht hätte“ – zufällig, aus einem Prozess ohne Präferenz.
Eine Phrase, die Sie selbst gewählt haben, hat fast nichts von dieser Entropie, weil Sie nicht einheitlich aus 7.776 Wörtern ausgewählt haben; Sie haben aus den wenigen Hundert, die Ihnen in den Sinn kamen, in einer sinnvollen Reihenfolge ausgewählt. Ein zitierter Text oder ein Filmtitel hat im Wesentlichen keine Bedeutung.
Auch hier gehen Umsetzungen unsichtbar schief. Math.random ist ein schneller, vorprogrammierter und vorhersagbarer Pseudozufallsgenerator, der eine Ausgabe erzeugt, die genauso zufällig aussieht wie das Original. Es ist das crypto.getRandomValues des Browsers zu verwenden, und die Tools hier tun es – aber nichts über die resultierende Zeichenfolge würde Ihnen sagen, welche verwendet wurde, weshalb es sich eher um eine Regel als um eine Einzelfallbeurteilung handeln muss.
Es gibt eine zweite, subtilere Falle im gleichen Bereich: Wenn man eine Zufallszahl modulo zur Alphabetgröße nimmt, verschiebt sich die Verteilung hin zu den früheren Zeichen, wenn sich das Alphabet nicht gleichmäßig in den Bereich aufteilt. Es kostet ein wenig Entropie kostenlos und die Lösung besteht darin, sie zu verwerfen und neu zu zeichnen, anstatt sie zu falten.
Eine zufällige Kennung ist nicht automatisch ein Geheimnis
Eine UUID der Version 4 und ein generiertes Passwort beziehen möglicherweise Bytes aus derselben kryptografischen Browserquelle, ihre Verträge sind jedoch unterschiedlich. UUIDv4 verwendet sechs seiner 128 Bit für eine erkennbare Version und ein Variantenlayout und nutzt die restlichen 122, um unabhängigen Systemen die Auswahl von Bezeichnern mit vernachlässigbarem Kollisionsrisiko zu ermöglichen. Seine Aufgabe besteht darin, Koordination zu vermeiden und nicht zu beweisen, dass ein Anrufer handeln darf.
Ein Authentifizierungsgeheimnis verfügt über ein Bedrohungsmodell, das aus Erraten, Offenlegen, Speichern, Widerrufen und Vergleichen besteht. RFC 9562 warnt ausdrücklich davor, dass UUIDs schwer zu erraten sein sollten und dass der bloße Besitz keinen Zugriff gewähren sollte. Verwenden Sie also eine UUID als Datenbank- oder Nachrichtenkennung und verwenden Sie ein dediziertes Zufallstoken oder Passwort als Anmeldeinformationen. Zufällig aussehender Text ist ohne das richtige umgebende Protokoll keine Sicherheitseigenschaft.
Was die aktuellen Leitlinien tatsächlich sagen
Die Richtlinien zur digitalen Identität des NIST haben sich vor einigen Jahren von den Kompositionsregeln abgewendet, und die Form der Ratschläge lautet jetzt:
- Die Länge ist der Hauptfaktor. Erlauben Sie lange Passwörter und kürzen Sie sie nicht. - Überprüfung anhand bekannter Verstöße-Listen, anstatt Zeichenklassen zu erzwingen. - Erzwingen Sie keine geplante Rotation. Es macht Passwörter schlechter, nicht besser, weil Leute eine Zahl erhöhen. Änderung aufgrund von Beweisen für einen Kompromiss. - Einfügen zulassen und jedes druckbare Zeichen zulassen. Das Blockieren von beidem bekämpft Passwort-Manager, die mit Abstand das Effektivste sind, was ein Mensch tun kann.
Die meisten Websites setzen immer noch die alten Regeln durch. Die praktische Antwort ist ein Passwort-Manager plus Generator: einmalig pro Website, lang und nie aus dem Gedächtnis eingegeben – dann spielt es überhaupt keine Rolle mehr, wie einprägsam es ist.
Fragen
Sind Komplexitätsregeln nutzlos?
Nicht nutzlos, aber sie messen das Falsche und das geht nach hinten los. Wenn ein Großbuchstabe, eine Ziffer und ein Symbol erforderlich sind, wird „Passwort1!“ erzeugt. viel häufiger, als dass es etwas Unvorstellbares hervorbringt, weil die Menschen die Regel auf die billigste Art und Weise erfüllen. Länge und echte Zufälligkeit sorgen für weitaus mehr Widerstand bei weitaus weniger Schmerzen für den Benutzer, weshalb die aktuellen Richtlinien bei diesen Punkten an erster Stelle stehen.
Ist eine Passphrase wirklich so stark wie eine zufällige Zeichenfolge?
Dies kann der Fall sein, wenn die Wörter zufällig aus einer großen Liste ausgewählt werden und es genügend davon gibt. Vier zufällig aus einer Liste von 7.776 Wörtern gezogene Wörter ergeben etwa 51 Bits; Fünf ergibt 64. Was daran scheitert, ist die Wahl der Wörter selbst – eine Phrase, die Sie sich ausgedacht haben, ist nicht zufällig, und das Zitieren eines Liedtextes ist schlimmer als eine kurze zufällige Zeichenfolge.
Hilft es, die Passwörter alle 90 Tage zu ändern?
Die aktuellen Leitlinien sagen Nein und raten davon ab, es zu erzwingen. Durch die geplante Rotation wählen Benutzer schwächere Passwörter aus und ändern sie vorhersehbar – indem sie eine Zahl anhängen, die sich erhöht. Ändern Sie ein Passwort, wenn Grund zu der Annahme besteht, dass es kompromittiert ist, und lassen Sie andernfalls ein starkes, eindeutiges Passwort in Ruhe.
Woher soll die Zufälligkeit kommen?
Ein kryptografisch sicherer Generator, der in einem Browser crypto.getRandomValues bedeutet. Math.random ist keines davon – es ist schnell, gesetzt und vorhersehbar genug, dass die Ausgabe niemals für geheime Zwecke verwendet werden sollte. Die Unterscheidung ist im Ergebnis unsichtbar, und genau deshalb muss es sich um eine Regel und nicht um ein Urteil handeln.
Ist die Verwendung einer zufälligen UUID v4 als Passwort oder API-Schlüssel sicher?
Nein. Eine UUID v4 ist eine Kennung mit sechs Strukturbits und 122 Zufallsbits, aber ihr Standard definiert sie nicht als Authentifizierungsgeheimnis und warnt davor, den Besitz als Autorität zu behandeln. Verwenden Sie ein speziell entwickeltes Token oder Passwort mit den Längen-, Rotations- und Speicherregeln dieser Sicherheitsgrenze.