Login
Newsletter
Werbung

Fr, 1. September 2017, 10:38

Software::Kernel

BSI bestätigt Sicherheit des Linux-Zufallsgenerators

Das deutsche Bundesamt für Sicherheit in der Informationstechnik (BSI) hat den Zufallsgenerator im Linux-Kernel auf seine Sicherheit analysieren lassen. Die Ergebnisse stehen zur Einsicht auf der BSI-Webseite bereit.

Larry Ewing

Wer einen sicheren kryptografischen Schlüssel erzeugen will, benötigt einen entsprechend sicheren Zufallsgenerator. Jeder Pseudo-Zufallsgenerator benötigt einen Startwert, aber dieser muss selbst bereits unvorhersehbar sein. Letztlich geht es darum, ausreichend Entropie in den Zufallsgenerator einzubringen, denn nur dann ist sichergestellt, dass ohne Kenntnis des inneren Zustands des Generators keine Vorhersage der nächsten generierten Zahl möglich ist. Dazu muss diese Entropie gemessen oder vorsichtig abgeschätzt werden. Im Prinzip verfügt nur der Kernel über die Möglichkeit, Entropie zuverlässig zu sammeln, denn eine der wichtigsten Entropiequellen ist das Timing von Ereignissen, in gewissem Umfang auch von Interrupts. Darüber hinaus kann der Kernel andere Entropiequellen hineinmischen, beispielsweise eine CPU-Instruktion, die eine Zufallszahl liefert.

Der Zufallsgenerator im Linux-Kernel ist das Resultat langjähriger Entwicklung und sorgfältiger Abwägung, insbesondere um die vorhandene Entropie nicht zu überschätzen. Wie andere Unix-artige Systeme bietet Linux die Dateien /dev/random und /dev/urandom. Dazu kommt ein Systemaufruf, der 2014 vorgeschlagen und inzwischen implementiert wurde.

Da die Behörden ebenso wie alle anderen Nutzer sichere Schlüssel benötigen, die nicht einmal der eigene Geheimdienst knacken kann, hat das deutsche Bundesamt für Sicherheit in der Informationstechnik (BSI) eine Studie in Auftrag gegeben, die den Zufallsgenerator in fast allen Linux-Kerneln seit 2012 (Linux 3.2) untersucht hat. Eine der Fragen, die geklärt werden sollten, war, ob 100 Bit Entropie schnell, also auch direkt nach einem Systemstart, bereitstehen. Laut der Übersicht waren alle Kernel außer 3.15 und 3.16 konform zu NTG.1, was nach einer Einteilung des BSI hochgradig sicher ist. Die Phase kurz nach einem Systemstart ist jedoch kritisch.

Die Anomalie von Linux 3.15 und 3.16 kommt dadurch zustande, dass in diesen beiden Kerneln die CPU-Instruktion RDSEED zur Erhöhung der Entropie eingebaut wurde, diese Entropie jedoch nach Ansicht der Autoren der Studie viel zu hoch bewertet wurde. Dies wurde in Linux 3.17 stark reduziert. Außerdem wurde eine weitere Funktion in Linux 3.15 eingeführt, die sich ebenfalls auf die Qualität auswirkte und in Linux 3.17 wieder entfernt wurde. Der komplette Bericht ist mit 207 Seiten sehr detailliert. Dennoch bezieht er sich nur auf x86-Systeme und lässt die zahlreichen eingebetteten Systeme außer Acht, auf denen es oftmals viel schwerer ist, ausreichend Entropie zu sammeln. Die ursprüngliche Studie, die nur bis 2016 (Linux 4.8) reichte, wurde jetzt auf Linux 4.9 bis 4.12 ausgedehnt. An der Sicherheit des Zufallsgenerators hat sich in den neuen Versionen nichts geändert.

Die Zusammenfassung vertritt die Position, dass die Entropie bei einem Systemneustart zu niedrig und vorhersagbar ist, und empfiehlt, die Entropie vor dem Neustart zu speichern und beim Booten wieder einzulesen. Ist das der Fall, dann liefert /dev/random mit jedem Bit auch fast ein Bit an Entropie. Leider wird die Entropie beim Einsatz der zufälligen Anordnung von Adressen in Prozessen vermindert, was nach Ansicht der Autoren unnötig ist, da für diese Sicherheitsmaßnahme auch schwächere Zufallszahlen genügen würden. Außerdem unterschätzt der Kernel die Entropie meist gewaltig, was im Sinne der Sicherheit zwar eine gute Praxis ist, aber den Prozess der Entropiegewinnung verlangsamt. Die Integration weiterer Entropiequellen wäre wünschenswert, hierzu schlagen die Autoren unter anderem die Messung der Lüfterdrehzahlen vor. Auf vielen Systemen stehen solche Werte aber gar nicht zur Verfügung, ebenso wie die zahlreichen Sensoren, die unter Android bereits herangezogen werden. Die Autoren sehen aber noch Optimierungspotential, wodurch der Zufallsgenerator beim Auslesen mehr Entropie behalten würde. Dies müsste allerdings eingehend untersucht werden.

Einer der Autoren, Stephan Müller, hat auf Basis dieser Erkenntnisse einen neuen Zufallsgenerator geschrieben, den er versucht, in den Kernel zu bekommen. Der neue Generator soll genug Entropie beim Booten bereitstellen, auch in virtuellen Maschinen und bei Verwendung von SSDs, die weniger Entropie liefern als herkömmliche Festplatten. Die Kernel-Entwickler sind immer noch dabei, die Qualität dieses Patches zu verbessern, sind aber noch längst nicht überzeugt, dass er überhaupt sinnvoll ist. Insbesondere Theodore Ts'o zeigt sich von den Argumenten alles andere als beeindruckt. Die Diskussion wird wohl noch lange weitergehen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung