Deutsch

Text- und Alltagstools · Passwortgenerator

crypto.getRandomValues vs. Math.random: Warum es für Passwörter wichtig ist

· Wie es funktioniert

Passwörter Web-Krypto Zufälligkeit

Ein schwacher Zufallspfad, der endet, während ein Web-Crypto-Pfad in Passwortsymbolen fortgesetzt wird
Original-ToolAcre-Vektorillustration

Erklärt den Unterschied zwischen dem Allzweck-Zufallszahlengenerator eines Browsers und seinem kryptografischen, warum Vorhersehbarkeit für Passwörter fatal ist und wie man erkennt, welches Tool ein Tool verwendet.

Zufällig genug für ein Würfelspiel, nicht für ein Passwort – die beiden Arten von Zufälligkeit, die ein Browser bietet

Ein Browser kann mehr als eine Quelle unregelmäßig aussehender Werte bieten, aber eine visuelle Unordnung ist kein Beweis dafür, dass eine Sequenz für einen Berechtigungsnachweis geeignet ist. ToolAcre zieht eine harte Produktgrenze: Jede Wortwahl, jede Trennzeichenwahl, jede Zeichenwahl und jeder Shuffle-Swap durchläuft eine sichere Ganzzahlfunktion, die durch `crypto.getRandomValues` unterstützt wird. Wenn diese API nicht verwendet werden kann, deaktiviert die Seite die Generierung, anstatt einen plausibel aussehenden Ersatz zu erstellen.

Diese Ablehnung ist wichtiger als die Frage, ob zwei Beispielausgaben gleichermaßen durcheinander erscheinen. Eine vorhersehbare Quelle kann dennoch Buchstaben, Ziffern und Wörter drucken, die für eine Person überzeugend wirken. Die Implementierung macht daher die Quelle überprüfbar und den Fehler sichtbar. Es wird nicht behauptet, dass ein generierter Wert für jede Umgebung sicher ist; Ein kompromittierter Browser oder ein kompromittiertes Gerät kann weiterhin lesen, was auf der Seite angezeigt wird.

Wozu Math.random da ist – schnelle, gesetzte Pseudozufälligkeit, deren Ausgabe aus wenigen Beobachtungen rekonstruiert werden kann

Die Arbeitsmappe beschreibt Math.random als gesetzte Pseudozufälligkeit, die aus einigen Beobachtungen rekonstruiert werden kann, aber das sind allgemeine Implementierungsansprüche, die dieses Repository nicht für jede JavaScript-Engine aufstellt. Die lokale Tatsache ist für dieses Produkt einfacher und stärker: Produktionsgeneratordateien rufen nicht `Math.random` auf. Ein Test auf Quellebene entfernt Kommentare, scannt ausführbaren Code und schlägt fehl, wenn ein solcher Aufruf irgendwo in der Engine oder der Passwort-App erscheint.

Diese Unterscheidung verhindert, dass der Artikel eine Implementierungsregel in eine universelle Browser-Historie-Vorlesung verwandelt. ToolAcre muss nicht jeden möglichen Math.random-Algorithmus charakterisieren, um die API für die Passwortgenerierung abzulehnen. Sein Paket akzeptiert Web Crypto oder eine injizierte sichere Quelle, die von Tests verwendet wird, und bietet keine Produktionsoption für einen Seed, einen deterministischen Modus oder einen schwachen Fallback.

Was dieses Repository über Math.random beweist: Es fehlt in der Produktionsgenerierung

`createWebCryptoSource` sucht nach einem aufrufbaren `getRandomValues` und verpackt diese Methode dann als zufällige Paketquelle. Die Anwendung führt eine zusätzliche Prüfung durch, bevor sie die Steuerelemente aktiviert: Sie fordert das globale Kryptoobjekt auf, ein typisiertes Array mit einem Element innerhalb eines Try-Blocks zu füllen. Dadurch werden eingeschränkte Umgebungen erfasst, in denen die Eigenschaft vorhanden ist, bei Verwendung jedoch ausgelöst wird, anstatt auf eine oberflächliche Funktionsprüfung zu vertrauen.

Die Quelle stoppt an der Browser-API-Grenze. Es beweist nicht, welcher Betriebssystem-Pool, welche Hardware-Anweisung oder welches Reseed-Design einem bestimmten Browser zugrunde liegt. Diese Details variieren unterhalb der Schnittstelle und erfordern eine Plattformdokumentation. Was der Code beweist, ist, dass Bytes über die benannte Web-Crypto-Methode ankommen und dass keine Generierung versucht wird, wenn die Probe fehlschlägt.

Was crypto.getRandomValues hier macht: Füllt typisierte Arrays über die Browser-API

Vorhersehbarkeit ist gefährlich, da ein Anmeldeinformationsgenerator neue Entscheidungen treffen soll, die ein Beobachter nicht aus früheren Ausgaben reproduzieren kann. ToolAcre unterstützt dieses Ziel, indem es deterministische Produktionspfade ablehnt, jeden Zug zentralisiert und prüft, ob die schwache API fehlt. Es verspricht keine Immunität vor Bildschirmaufnahmen, Erweiterungen, Malware, Phishing, Wiederverwendung von Passwörtern oder einem Dienst, der die Anmeldeinformationen nach der Übermittlung falsch behandelt.

Diese Grenze verhindert einen häufigen Kategoriefehler: Bei der Generierung geht es darum, wie ein Kandidat ausgewählt wird, nicht um alles, was später mit ihm passiert. Das Paket gibt einen String zurück und protokolliert oder speichert ihn nicht. Die Seite speichert einen aktuellen Wert im Speicher und gibt ihn als Text wieder. Die Passwortspeicherung, Übertragung, Kontowiederherstellung und Authentifizierungsrichtlinien bleiben in der Verantwortung anderer Systeme.

Lesen des Codes – wie man überprüft, welche API eine Seite verwendet und warum offene, überprüfbare Seiten leichter vertrauenswürdig sind

Das Lesen des Codes beginnt bei `packages/password-generator/src/index.js`, dessen Vertrag besagt, dass jede zufällige Entscheidung `secureRandomInt` erreicht. Die Implementierungsdatei zeigt dann `getRandomValues`, Ablehnungsstichproben und explizite Fehler an. Schließlich machen `no-math-random.test.js` und die umfassendere Passwortsicherheitssuite die Negativgarantie ausführbar, anstatt „Wir verwenden niemals Math.random“ als ungetesteten Kommentar zu belassen.

Open Source allein macht den Code nicht korrekt, aber es gibt einem Prüfer konkrete Ansätze zur Überprüfung. Suchen Sie nach der Zufallsquelle, folgen Sie Anrufern durch Auswahlmöglichkeiten und Mischvorgänge und prüfen Sie, was passiert, wenn die API fehlt. Eine vertrauenswürdige Überprüfung sollte in der Lage sein, sowohl den Erfolgspfad als auch den Ablehnungspfad zu benennen, anstatt aus dem Branding auf Sicherheit zu schließen.

Funktioniertes Beispiel – die gleiche Wortauswahlroutine, geschrieben in beide Richtungen, und was ein Angreifer mit beiden machen könnte

Betrachten Sie eine Anfrage nach einer Ganzzahl unter 100. `secureRandomInt` benötigt ein Byte, dessen Bereich 256 Werte enthält. Es akzeptiert nur das größte durch 100 teilbare Präfix, das vor 200 endet, und lehnt das verbleibende Ende ab. Ein deterministischer Test speist Byte 200, gefolgt von Byte 7. Die Implementierung verwirft 200 und gibt 7 zurück; Eine direkte Modulo-Verknüpfung hätte vom abgelehnten Byte Null zurückgegeben.

Dieselbe sichere Ganzzahlfunktion wählt Indizes für Wörter und Zeichen, daher handelt es sich bei diesem Beispiel nicht um ein von der Generierung losgelöstes Spielzeug. Die genauen Bytes in der Produktion sind keine wiederholbaren Beispiele und sollten niemals als Referenz veröffentlicht werden. Das nützliche Artefakt ist der Kontrollflussbeweis: Web Crypto füllt den Puffer, ein ungleichmäßiges Ende wird zurückgewiesen und nur ein akzeptierter Wert wird zu einer begrenzten Auswahl.

Arbeitsbeispiel: Verfolgen Sie einen begrenzten Draw durch den mitgelieferten secureRandomInt-Pfad

Dieses Repository implementiert oder vergleicht keine serverseitigen Generatoren, Hardware-Zufallszahlengeneratoren oder Betriebssystem-Befehlszeilentools. Es kann auch nicht die Interna der Browser-Krypto-Implementierung von JavaScript prüfen. Diese Themen benötigen ihr eigenes Quellmaterial, Bedrohungsmodelle und Betriebsprüfungen und nicht eine Analogie, die in den ToolAcre-Codepfad eingefügt wird.

Die Seite ist auch kein Passwort-Manager. Es speichert, synchronisiert, überträgt oder füllt nicht automatisch aus, was es generiert. Ein Leser sollte „kryptografische Zufallsquelle“ nicht als Empfehlung interpretieren, ein Ergebnis wiederzuverwenden oder es über einen unsicheren Kanal zu übertragen. Der Anspruch gilt nur für die Auswahl innerhalb der aktuellen Browser-Registerkarte.

Das Fazit: Der Passwortgenerator verwendet den kryptografischen Zufallszahlengenerator des Browsers und Sie können ihn auf der Seite selbst überprüfen

Die nachweisbare Wahl von ToolAcre ist Krypto oder nichts. Die Seite ruft die Browser-API während der Support-Erkennung auf, deaktiviert die Kontrollen, wenn sie fehlschlägt, und lässt die Engine `InsecureRandomError` auslösen, wenn bei der Generierung irgendwie die gleiche fehlende Bedingung erreicht wird. Hinter keinem der Zweige verbirgt sich ein Math.random-Fallback.

Verwenden Sie dieses Muster, wenn Sie einen Generator überprüfen: Identifizieren Sie die Quelle, verfolgen Sie jede begrenzte Zeichnung, überprüfen Sie die Reduzierung und Neuordnung und erzwingen Sie den Pfad zur nicht verfügbaren Quelle. Bewerten Sie dann Gerät und Ziel getrennt. Für die Funktion dieses Generators ist eine solide Zufallsquelle erforderlich, es handelt sich jedoch nicht um ein universelles Zertifikat für die gesamte Lebensdauer des Ausweises.