Text- und Alltagstools · Passwortgenerator
PRNG vs. CSPRNG: Woher kommen die Zufallszahlen Ihres Browsers tatsächlich?
· Hintergrund
Passwörter Web-Krypto csprng
Erklärt den Unterschied zwischen pseudozufälligen und kryptografisch sicheren Generatoren, wie Betriebssysteme Entropie aus Hardwareereignissen sammeln und wie diese Zufälligkeit über die Web Crypto API eine Webseite erreicht.
Computer sind deterministisch, woher kommt also der Zufall? – das Grundrätsel hinter jedem Generator
In ToolAcre ausgeführtes JavaScript beginnt an einer API-Grenze. Es kann Bytes von `crypto.getRandomValues` anfordern, beobachten, ob dieser Aufruf erfolgreich ist, und das zurückgegebene Array verwenden. Es kann nicht jedes physische Ereignis, jeden Kernelpool oder jede Hardwarekomponente untersuchen, die eine bestimmte Plattform möglicherweise darunter verwendet. Die Ursprungsgeschichte des Arbeitsbuchs zur Zufälligkeit geht daher über die lokalen Beweise hinaus.
Eine technisch ehrliche Erklärung beginnt dort, wo die Beobachtung beginnt. Die App prüft Web Crypto, die Engine verpackt es und alle Auswahlen verbrauchen diese Quelle. Plattformspezifische Interna benötigen Plattformdokumentation und -prüfungen, keine generische Anweisung, die aus dem Namen der Browsermethode abgeleitet wird.
Das Repository startet bei der Browser-API; Es prüft keine physischen Entropiequellen
Pseudozufallsgeneratoren werden oft durch Seeds und reproduzierbaren Zustand beschrieben, aber JavaScript-Engines sind für dieses Repository nicht erforderlich, um ein Math.random-Design zu teilen. ToolAcre vermeidet die Mehrdeutigkeit, indem es die API bei der Erstellung von Anmeldeinformationen vollständig verbietet. Quellenscans erzwingen diese negative Garantie.
Tests benötigen weiterhin deterministische Bytes, daher injizieren sie Objekte, die `getRandomValues` über einen internen Parameter verfügbar machen. Diese Fälschungen befinden sich im Testsupport und werden nicht als gesäter Produktionsmodus exportiert. Testability schafft keine versteckte Benutzeroption für wiederholbare Passwörter.
Math.random ist hier verboten, ohne Anspruch auf ein universelles PRNG-Design zu erheben
Das Produkt verwendet „kryptographisch“ auf eine begrenzte Weise: Die erforderliche Browserschnittstelle ist Web Crypto und die Generierung schlägt fehl, wenn sie fehlt oder unbrauchbar ist. Die App ruft die Methode während der Erkennung auf, anstatt nur ihren Typ zu überprüfen, und fängt so eingeschränkte Umgebungen ab, in denen der Aufruf auslöst.
Dieser Vertrag verspricht keinen Widerstand gegen jede hypothetische staatliche Kompromittierung oder zertifiziert eine Browser-Implementierung. Es beweist, welche API die Seite anfordert und dass kein schwächeres Fallback daneben verkabelt ist. Die Geräteintegrität bleibt außerhalb des Generators.
Die überprüfte kryptografische Eigenschaft ist die erforderliche Web-Krypto-Quelle und der Ablehnungspfad
Timing-Ereignisse, dedizierte Prozessoranweisungen, Reseeding-Zeitpläne und Betriebssystem-Entropie-Pools befinden sich alle unter der Web-API-Oberfläche. Hier wird keine behauptet, da die Paketquelle sie nicht überprüfen kann. Ein zukünftiger plattformspezifischer Artikel würde eine Primärdokumentation für jede beschriebene Umgebung benötigen.
Die Unterlassung stärkt den aktuellen Anspruch eher, als dass er ihn schwächt. ToolAcre kann genau sagen, was der Browser tun soll und wie er mit den Bytes umgeht. Es muss nicht so tun, als könne JavaScript die gesamte Entropiekette prüfen, um die Ablehnung von Math.random zu rechtfertigen.
Hardware-Ereignis- und Betriebssystem-Pool-Details sind Implementierungsansprüche, die diese Quelle nicht beweist
`getRandomValues` füllt eine Größe von `Uint8Array` aus der angeforderten exklusiven Grenze. `secureRandomInt` setzt diese Bytes als vorzeichenlose Big-Endian-Zahl zusammen, berechnet das größte teilbare Akzeptanzfenster und verwirft Werte im Rest. Der akzeptierte Wert wird dann auf einen Index reduziert.
Wörter, Trennzeichen, Zeichen und Shuffle-Swaps verwenden alle diesen Pfad wieder. Ein einziger Drosselpunkt macht die Browser-zu-Auswahl-Kette überprüfbar und stellt sicher, dass sich die Behebung der begrenzten Reduzierung auf jeden Generierungsmodus und nicht auf einen vergessenen Aufrufer auswirkt.
Von getRandomValues zu secureRandomInt: der sichtbare Browser-zu-Index-Pfad
Für einen 7,776-Wortpool wählt die Funktion genügend Bytes aus, um jeden gültigen Index darzustellen. Es bildet eine Ganzzahl, lehnt jeden Wert ab dem berechneten Grenzwert ab und gibt den Rest erst nach Annahme zurück. `secureRandomChoice` verwendet dieses Ergebnis, um ein Wort aus dem geeigneten Array zu lesen.
Der jeweilige Produktionsindex ist privat und sollte nicht in der Dokumentation reproduziert werden. Deterministische Tests speisen stattdessen bekannte Tail- und In-Range-Bytes ein, um den Kontrollfluss nachzuweisen. Dies verfolgt eine Auswahl, ohne eine generierte Phrase in ein öffentliches Beispiel umzuwandeln.
Arbeitsbeispiel: Verfolgen Sie Bytes durch Ablehnungsstichprobe zu einem Listenindex
Das Design des Hardware-Zufallszahlengenerators und formale kryptografische Beweise werden nicht durch das Paket abgedeckt. Weder Serverlaufzeiten noch native Anwendungen. Die Implementierung ist ein Browsergenerator und seine Garantien sollten nicht auf unabhängige Systeme kopiert werden.
Es geht auch nicht um die Speicherung oder spätere Verwendung. Ein über Web Crypto ausgewählter Wert kann dennoch durch Wiederverwendung, Phishing, Zwischenablageverlauf oder Malware offengelegt werden. Die Auswahl von CSPRNG löst das Quellproblem, nicht jedes Problem bei der Handhabung von Anmeldeinformationen.
Das Fazit: Der Passwortgenerator fragt den kryptografischen Generator des Browsers, welche Quelle für ein Geheimnis die richtige ist
Die umsetzbare Kette ist kurz: Testen Sie, ob Web Crypto funktioniert, verweigern Sie die Generierung, wenn dies nicht der Fall ist, füllen Sie Bytes, lehnen Sie ein ungerades Ende ab und ordnen Sie den akzeptierten Wert einem Index zu. ToolAcre macht jeden Schritt sichtbar und testet schwierige Grenzen.
Überprüfen Sie diese Kette, anstatt sich auf eine vage „zufällige“ Bezeichnung zu verlassen. Überprüfen Sie dann den Endpunkt und das Ziel separat. Die kryptografische API des Browsers ist die richtige Quelle für dieses Produkt, das Repository erhebt jedoch nicht den Anspruch, zu zertifizieren, was darunter liegt oder alles, was folgt.