Zum Hauptinhalt springen

3.6. Non-hardware Sources of Randomness (Nicht-Hardware-Quellen für Zufälligkeit)

3.6. Non-hardware Sources of Randomness (Nicht-Hardware-Quellen für Zufälligkeit)

Die beste Quelle für Eingabe-Entropie wäre eine hardwarebasierte Zufallsquelle wie Ringoszillatoren, Festplatten-Timing, thermisches Rauschen oder radioaktiver Zerfall. Wenn jedoch keine davon verfügbar ist, gibt es andere Möglichkeiten. Dazu gehören Systemuhren, System- oder Eingabe-/Ausgabepuffer, Benutzer-/System-/Hardware-/Netzwerk-Seriennummern oder -Adressen und Timing sowie Benutzereingaben. Leider kann jede dieser Quellen unter bestimmten Umständen sehr begrenzte oder vorhersagbare Werte erzeugen.

Einige der oben aufgeführten Quellen wären auf Mehrbenutzersystemen recht stark, wo jeder Benutzer des Systems im Wesentlichen eine Quelle für Zufälligkeit ist. Auf einem kleinen Einzelbenutzer- oder eingebetteten System, insbesondere beim Start, könnte es jedoch für einen Gegner möglich sein, eine ähnliche Konfiguration zusammenzustellen. Dies könnte dem Gegner Eingaben für den Mischprozess liefern, die gut genug mit denen korreliert waren, die ursprünglich verwendet wurden, um eine erschöpfende Suche praktikabel zu machen.

Die Verwendung mehrerer Zufallseingaben mit einer starken Mischfunktion wird empfohlen und kann Schwächen in einer bestimmten Eingabe überwinden. Das Timing und der Inhalt angeforderter "zufälliger" Benutzer-Tastenanschläge können Hunderte von Zufallsbits liefern, aber es müssen konservative Annahmen getroffen werden. Zum Beispiel wäre eine vernünftig konservative Annahme, dass ein Intervall zwischen Tastenanschlägen höchstens ein paar Bits an Zufälligkeit liefert, aber nur, wenn das Intervall in der Sequenz von Intervallen bis zu diesem Punkt eindeutig ist. Eine ähnliche Annahme wäre, dass ein Tastencode ein paar Bits an Zufälligkeit liefert, aber nur, wenn der Code in der Sequenz eindeutig ist. Somit würde angenommen, dass ein Intervall oder Tastencode, der einen vorherigen Wert dupliziert, keine zusätzliche Zufälligkeit liefert. Die Ergebnisse des Mischens dieser Timings mit getippten Zeichen könnten weiter mit Uhrwerten und anderen Eingaben kombiniert werden.

Diese Strategie kann praktikablen portablen Code zur Erzeugung guter Zufallszahlen für Sicherheit ermöglichen, selbst wenn einige der Eingaben auf einigen der Zielsysteme sehr schwach sind. Sie kann jedoch immer noch gegen einen hochgradigen Angriff auf kleine, Einzelbenutzer- oder eingebettete Systeme versagen, insbesondere wenn der Gegner jemals in der Lage war, den Generierungsprozess in der Vergangenheit zu beobachten. Eine hardwarebasierte Zufallsquelle ist immer noch vorzuziehen.