Das Projekt liefert ein umfassendes Redesign des Subsystems für die Zufallszahlengenerierung des Linux-Kernels. Der Schwerpunkt liegt dabei auf der Entropieerfassung, der Schätzung und der Einhaltung der deutschen Sicherheitsstandards. Der wichtigste technische Beitrag ist die Implementierung eines neuen Entropie-Pools, der die Blake2s-Hash-Funktion als Zustandsübergangsmechanismus verwendet. Der Pool wird mit den standardmäßigen Blake2s IV-Vektoren und einem 0x01010000-Parameterblock initialisiert, um einen sicheren, nicht verschlüsselten Hash-Zustand zu gewährleisten. Ein Spinlock schützt gleichzeitige Aktualisierungen, während ein init_bits-Zähler die ersten 256 Bits Entropie erfasst, die beim Booten eingefügt werden. Nachfolgende Entropie wird nicht gezählt, was die Zustandsverwaltung vereinfacht und gleichzeitig eine hohe Sicherheit gewährleistet.
Die Entropie wird aus verschiedenen Hardware- und Softwarequellen gesammelt. Unterbrechungsgeräusche, Blockgeräteaktivität, HID-Ereignisse (Human Interface Device) und Scheduler-basierte Timing-Variationen werden alle über einen einfachen Blake2s-Aktualisierungsaufruf in den Pool eingespeist. Das Projekt liefert detaillierte Minimalentropie-Schätzungen für jede Quelle gemäß NIST SP800-90B, die Worst-Case-Szenarien, normale Anwendungsfälle und Early-Boot-Bedingungen sowohl in virtuellen als auch in nativen Umgebungen abdecken. Die Tabellen fassen die Schätzungen spalten- und zeilenweise zusammen und zeigen, dass selbst die Quellen mit der niedrigsten Entropie eine ausreichende Unvorhersehbarkeit für die Anforderungen des Pools bieten. Eine spezielle Testreihe mit Roh-Entropie-Stichproben validiert die theoretischen Schätzungen und bestätigt, dass der kombinierte Pool durchgängig die 256-Bit-Schwelle überschreitet, die für den deterministischen Zufallszahlengenerator (DRNG) ChaCha20 benötigt wird.
Der ChaCha20 DRNG selbst ist vollständig konform mit den BSI-Spezifikationen NTG.1 und DRG.3. Die Implementierung folgt dem vom BSI genehmigten Design und bietet einen 256-Bit-Ausgangszustand und eine 128-Bit-Nonce. Das Projekt dokumentiert, dass der DRNG alle Unteranforderungen von DRG.3 erfüllt, einschließlich der Auswahl der Entropiequelle, der Initialisierung des Zustands und der Ausgabequalität. Das Design des Entropie-Pools stellt sicher, dass der DRNG einen qualitativ hochwertigen Seed erhält und damit die kryptografische Stärke für alle nachgelagerten Anwendungen garantiert.
Hardware-Zufallszahlengeneratoren werden über ein neues Kernel-Framework integriert, das CPU-basierte RNGs abstrahiert. Das Framework bietet eine einheitliche Schnittstelle zu Kernel-Subsystemen, so dass der Linux-RNG auf Hardware-Entropie zurückgreifen kann, wenn diese verfügbar ist. Dieser hybride Ansatz verbessert die Verfügbarkeit von Entropie auf Systemen mit dedizierten Hardware-RNGs und sorgt gleichzeitig für ein robustes Software-Fallback.
Der Schutz der Sicherheitsdomäne wird durch die Isolierung des Linux-RNG-Codes und der Datenstrukturen innerhalb einer speziellen Kernel-Sicherheitsdomäne erreicht. Diese Isolierung verhindert den unbefugten Zugriff auf den Entropie-Pool und den DRNG-Status und entschärft damit mögliche Seitenkanalangriffe. Das Projekt skizziert auch einen Zeitplan für die Verfügbarkeit von Entropie: Während der Installation sammelt der Pool 256 Bit Entropie an; nach dem ersten Neustart ist der DRNG voll funktionsfähig; und während der regulären Nutzung erhält der Pool weiterhin Entropie aus der laufenden Systemaktivität.
Das Projekt wurde unter der Schirmherrschaft des Bundesamts für Sicherheit in der Informationstechnik (BSI) durchgeführt, das die Finanzierung bereitstellte und die Konformitätsanforderungen definierte. Der Entwicklungszyklus umfasste mehrere Kernel-Releases, wobei die vollständig getestete Version 6.3 und die dokumentierte Version 6.7 war. Die Zusammenarbeit mit anderen deutschen Forschungseinrichtungen und Industriepartnern trug zum Design des Hardware-RNG-Frameworks und zur Validierung der Entropieschätzungen bei. Das daraus resultierende Linux-RNG-Modul stellt einen bedeutenden Fortschritt bei der Bereitstellung einer sicheren, standardkonformen Zufallszahlengenerierungsfunktion für den Linux-Kernel dar, die sowohl den nationalen Sicherheitsanforderungen als auch den Anforderungen moderner kryptographischer Anwendungen gerecht wird.
