Deutsch

Text- und Alltagstools · Passwortgenerator

Modulo-Bias erklärt: Auswahl eines zufälligen Wortes aus einer Liste ohne Verzerrung

· Wie es funktioniert

Passwörter Zufälligkeit Kryptographie

Eimer mit ungerader Nummer neben einem geraden Satz, der nach der Ablehnung eines Schwanzes erzeugt wurde
Original-ToolAcre-Vektorillustration

Zeigt, warum „Zufallszahlen-Modulo-Listenlänge“ einige Wörter gegenüber anderen bevorzugt, wenn sich der Bereich nicht gleichmäßig aufteilt, wie groß die Abweichung ist und wie sie durch Ablehnungsstichprobe beseitigt wird.

Ein fairer Würfel und eine unfaire Abkürzung – warum das Nehmen einer Zufallszahl modulo 7,776 nicht dasselbe ist wie Würfeln

Eine faire Quelle kann immer noch eine unfaire Auswahlroutine unterstützen. Wenn ein Programm eine Ganzzahl liest und nach der Division durch eine Listenlänge sofort den Rest nimmt, erhalten einige Indizes immer dann mehr Quellwerte, wenn der Quellbereich nicht genau durch diese Länge teilbar ist. Der Fehler liegt im Reduktionsschritt, nicht unbedingt in den Bytes. ToolAcre vermeidet diese Abkürzung, bevor ein EFF-Wort ausgewählt wird.

Physische Würfel ermöglichen nur dann einen intuitiven Vergleich, wenn vollständige Ergebnisgruppen gleichmäßig abgebildet werden. Die Browser-Implementierung hat einen anderen Rohbereich und berechnet daher ein Akzeptanzfenster für die angeforderte Grenze. In diesem Artikel geht es um diesen mitgelieferten Mechanismus, anstatt zu behaupten, dass Browser-Bytes buchstäblich fünf Würfel reproduzieren. Beide können Indizes auswählen, ihre Verfahren und Prüfungsnachweise sind jedoch unterschiedlich.

Woher die Verzerrung kommt – ein 32-Bit-Wert teilt sich nicht gleichmäßig in 7,776-Buckets auf, sodass die ersten paar Wörter eine zusätzliche Chance erhalten

Für ein Byte und eine Grenze von 100 hat der Rohbereich 256 mögliche Werte. Es passen zwei vollständige Gruppen von 100 zusammen, so dass 56 Werte übrig bleiben. Durch die Reduzierung jedes Bytes modulo 100 erhalten die Indizes Null bis 55 jeweils drei Vorbilder, während die Indizes 56 bis 99 nur zwei erhalten. Die Eingabebytes sind möglicherweise einheitlich, die ausgewählte Bucket-Verteilung jedoch nicht.

Der Implementierungskommentar leitet auch das entsprechende Finite-Range-Problem für eine 7,776-Eintragsliste ab, wenn zwei Bytes direkt reduziert werden. Diese Zahlen stammen aus den tatsächlichen, in der Quelle genannten Bereichen, nicht aus einer angenommenen Angriffsrate. Die wichtige Überprüfungsfrage ist, ob die übrig gebliebenen Werte verwendet werden, und nicht, ob die Abweichung in einigen wenigen generierten Phrasen gering erscheint.

Wie groß der Effekt ist – klein für einen großen Zufallsbereich, aber ungleich Null, und warum kryptografischer Code sich weigert, ihn zu akzeptieren

Die deterministischen Tests machen den ungleichmäßigen Schwanz beobachtbar. Die Grenzen 3, 5, 7, 100 und 7,776 sind bewusst umständlich, während eine Zweierpotenz-Grenze den Fall der Nichtzurückweisung demonstriert. Eine weitere statistische Kontrolle verwendet dieselbe Web-Crypto-Quelle für die richtige Funktion und einen naiven Modulo-Helfer, sodass der Test die Reduktionsstrategie isoliert, anstatt die Entropiequelle dafür verantwortlich zu machen.

ToolAcre wandelt diese Verteilungsprüfungen nicht in eine Crack-Time-Vorhersage um. Bias reduziert die Einheitlichkeit, aber die Umsetzung dieser Reduzierung in die Kosten eines bestimmten Angreifers erfordert ein vollständiges Bedrohungsmodell. Die technischen Anforderungen sind klarer: Jeder in Frage kommende Index sollte die gleiche Anzahl akzeptierter Rohwerte haben, und der Code kann dies genau erzwingen.

Die verifizierten Skew-Beispiele in den Implementierungskommentaren und deterministischen Tests

`secureRandomInt` findet die kleinste ganze Byteanzahl, die den höchsten gültigen Index darstellen kann. Es berechnet den Bytebereich, subtrahiert den Rest nach der Division durch die Grenze und nennt das Ergebnis `limit`. Werte unterhalb dieser Grenze gehören zu vollständigen Gruppen; Werte darüber oder darüber werden verworfen, bevor die Modulo-Operation ausgeführt werden kann.

Nach jeder Ablehnung erfolgt eine neue Auslosung. Die Schleife verfügt über eine hohe feste Decke, so dass eine defekte injizierte Quelle die Lasche nicht für immer hängen lassen kann; Nach wiederholten Werten außerhalb des Bereichs wird eine voreingenommene Antwort zurückgegeben, anstatt sie zurückzugeben. Dieser Fehlerpfad ist Teil der Korrektheit: Durch die Ablehnung einer verdächtigen Quelle wird das Versprechen gewahrt, dass ein zurückgegebener Index aus dem einheitlichen Akzeptanzfenster stammt.

Alternativen – genau genug Bits zeichnen und Werte außerhalb des Bereichs verwerfen oder die einheitliche Ganzzahlfunktion einer Bibliothek verwenden

Andere Uniform-Integer-Designs sind möglich, entsprechen aber nicht dem Verhalten dieses Pakets und werden daher nicht als austauschbare ToolAcre-Optionen dargestellt. Die Engine stellt einen geprüften Pfad bereit. `secureRandomChoice` überprüft, ob seine Eingabe ein nicht leeres Array ist und delegiert an `secureRandomInt(items.length)`, wodurch die Wortauswahl zu einem direkten Konsumenten des begrenzten Ganzzahlvertrags wird.

Der Zufallspasswortgenerator verwendet denselben Pfad für Zeichen und ruft dann einen Fisher-Yates-Shuffle auf, der durch sichere, begrenzte Swaps gesteuert wird. `sort` wird nicht mit einem Zufallskomparator verwendet. Das Beibehalten eines Grundelements unter mehreren Merkmalen macht eine Quellenüberprüfung nachvollziehbar: Korrigieren oder testen Sie die einheitliche Reduzierung einmal und folgen Sie dann den Aufrufern.

Alternative Designs liegen außerhalb dieses Moduls; Der Versandpfad verwendet eine Ablehnungsstichprobe

Der gebundene 100-Regressionstest liefert jedes Endbyte von 200 bis 255 und dann ein letztes 42. Der richtige Code verbraucht alle 56 abgelehnten Bytes und antwortet von 42. Ein zweiter fokussierter Fall liefert 200 und 7; Da 200 modulo 100 Null wäre, beweist die Rückgabe von 7, dass das erste Byte abgelehnt und nicht stillschweigend reduziert wurde.

Dieses ausgearbeitete Beispiel ist von Natur aus deterministisch und enthält keine Anmeldeinformationen. Produktionsbytes bleiben für den Browseraufruf privat und werden nicht protokolliert. Die Testquelle ist nur injizierbar, sodass das Verhalten an der Grenze erzwungen werden kann. Das öffentliche Paket bietet keinen Produktions-Seed-Modus, der eine generierte Passphrase reproduzieren könnte.

Funktioniertes Beispiel: gebunden 100 lehnt Byte 200 ab und akzeptiert das folgende 7

Gleitkomma-Zufallsreduktion, bibliotheksspezifische einheitliche APIs und unabhängige Mischalgorithmen fallen nicht in diese Implementierung. Um sie zu bewerten, wären ihre Quelle und ihre Verträge erforderlich. Der Code von ToolAcre basiert auf Ganzzahlen und ist explizit begrenzt. Das Hinzufügen einer Übersicht über Alternativen würde also die enge Behauptung verwischen, die die Tests tatsächlich beweisen.

Aus dem Artikel geht auch nicht hervor, dass ein einheitlich generiertes Passwort für jede Richtlinie oder jedes Gerät geeignet ist. Die einheitliche Indexauswahl befasst sich mit einem Mechanismus. Speicherung, Wiederverwendung, Handhabung der Zwischenablage, Malware und Zielbeschränkungen bleiben separate Fragen, selbst wenn jedes Listenelement die gleiche Chance auf Auswahl hätte.

Das Wichtigste: Ein Passphrase-Generator muss Wörter einheitlich auswählen; Sehen Sie sich die technischen Hinweise des Tools an, um zu erfahren, wie der Passwortgenerator das macht

Ein Passphrase-Generator darf frühe Einträge nicht nur deshalb bevorzugen, weil sein Rohbereich einen Rest übrig lässt. ToolAcre übernimmt Bytes von Web Crypto, weist den unvollständigen Schwanz zurück und reduziert nur Werte innerhalb vollständiger gleich großer Gruppen. Die Tests erzwingen sowohl Ablehnungs- als auch Akzeptanzgrenzen, sodass der Anspruch nicht auf einer visuellen Prüfung der Ergebnisse basiert.

Berechnen Sie beim Überprüfen ähnlichen Codes den Rohbereich für die ausgewählte Bytebreite, dividieren Sie ihn durch die angeforderte Grenze und suchen Sie nach einem verworfenen Rest. Wenn kein Schwanz zurückgewiesen wird, verlangen Sie einen weiteren Homogenitätsnachweis. Die Wortliste kann öffentlich und die Quelle kryptographisch sein, während eine unvorsichtige Reduzierung immer noch zu vermeidbaren Verzerrungen führt.