Ein True Random Number Generator, kurz TRNG, gewinnt neue unvorhersehbare Eingaben durch Messung eines physikalischen Vorgangs. Darin unterscheidet er sich von einem Generator, der weitere Werte nur aus einem gespeicherten Zustand berechnet. In der Praxis können beide zusammenarbeiten. „True“ ist aber kein Qualitätssiegel: Auch eine physikalische Quelle kann schlecht konstruiert oder defekt sein.
Eine Schaltung kann kleine elektrische Schwankungen messen und in Zahlen umwandeln. Entscheidend ist, welchen Anteil des Messergebnisses ein Angreifer nicht vorhersagen kann. Schnell viele Daten zu erzeugen reicht nicht. NIST SP 800-90B bewertet deshalb die konkrete Rauschquelle, ihre Abtastung, eine mögliche Aufbereitung und Funktionsprüfungen. Die Benennung des physikalischen Phänomens ersetzt diese Bewertung nicht. [1]
Eine Quelle könnte häufiger Nullen als Einsen liefern. Die Verarbeitung namens Conditioning hilft, solche Ungleichverteilungen zu verringern und die vorhandene Entropie, also Unsicherheit aus Sicht des Angreifers, in einer kürzeren Ausgabe zu bündeln. Fehlende Unsicherheit erzeugt sie nicht. NIST SP 800-90B knüpft die anrechenbare Ausgabeentropie deshalb an Eingabe und Verfahren. Auch ein Hash, ein berechneter Fingerabdruck der Daten, beweist keine Unvorhersagbarkeit: Aus einer bekannten Eingabe lässt sich derselbe Fingerabdruck erneut berechnen. [1]
Liefert die Quelle ständig denselben Wert, darf das Gerät dies nicht übersehen. NIST SP 800-90B nutzt den Repetition Count Test für Wiederholungen und den Adaptive Proportion Test für ungewöhnliche Häufigkeiten. Diese Prüfungen suchen bestimmte Störungen; sie erkennen nicht automatisch jeden Angriff oder Fehler. Bei einem erkannten dauerhaften Ausfall darf die Quelle nicht wie im Normalbetrieb weiter Daten ausgeben. [1]
Ein vorhandener TRNG allein beweist nicht, dass eine Wallet sicher ist. Ebenso wichtig ist, wie die konkrete Version seine Daten nutzt und auf Fehler reagiert. NIST SP 800-90C betrachtet deshalb Quellen zusammen mit den nachfolgenden Generatoren. Die Bewertung einer Komponente ist keine Bewertung der gesamten Wallet. Auch eine ausgezeichnete Zufallsquelle schützt keine Sicherung, die Sie später offenlegen. [4]
Eine lange Aufzeichnung eines laufenden Geräts zeigt andere Aspekte seines Verhaltens als wiederholtes Aus- und Einschalten. NIST SP 800-90B berücksichtigt deshalb auch Neustarttests. Die Bewertung muss zur konkreten Quelle und ihren Betriebsbedingungen passen. Das Ergebnis einer Probe gilt nicht automatisch für alle Geräte oder Umgebungen. Auch eine Änderung der Firmware, also des Programms im Gerät, kann eine neue Bewertung erfordern. [1]
In technischen Unterlagen begegnen Ihnen die Befehle RDRAND und RDSEED. Intel beschreibt sie im Leitfaden zum DRNG, einem Hardware-Zufallszahlengenerator. RDRAND liefert Ergebnisse eines deterministischen Generators, der aus seinem internen Zustand weitere Werte berechnet. RDSEED liefert aufbereitete Entropie zur Initialisierung, also zum Erzeugen des Anfangszustands eines Generators. Beide Wege können bei einer physikalischen Quelle beginnen; das verspricht jedoch keinen direkten Zugriff auf unverarbeitetes Rauschen. [2]
Der Prozessor hat nicht unbedingt für jede Anfrage ein Ergebnis bereit. Intel verlangt deshalb bei RDRAND und RDSEED die Prüfung des Statusflags CF: 1 bedeutet Ergebnis verfügbar, 0 bedeutet nicht verfügbar. Nur nach einer numerischen Null im Zielregister, einem kleinen Speicherplatz im Prozessor, zu schauen reicht nicht. Das Programm muss das Erfolgsflag prüfen. Die Unterstützung eines Befehls bedeutet noch nicht, dass eine bestimmte Anfrage erfolgreich war. [2]
Unter Linux lässt sich die Hardwarequelle über die Schnittstelle hw_random und /dev/hwrng ähnlich wie eine Datei lesen. Die Dokumentation warnt ausdrücklich, dass diese Schnittstelle selbst keine Qualitätstests auf die Daten anwendet. Defekte oder manipulierte Hardware kann daher falsche Daten liefern, die eine Anwendung trotzdem lesen kann. Erfolgreiches Lesen beweist keine ausreichende Entropie. Bewertet werden müssen sowohl die Quelle als auch der Umgang des Programms mit ihren Ergebnissen. [3]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Cryptographic Entropy, Random Number Generator, CSPRNG, Entropy Mixing. Auf diesen Eintrag verweisen außerdem Entropy Mixing.