Login
Newsletter
Werbung

Di, 22. Juli 2014, 08:54

Software::Kernel

Systemaufruf für Zufallszahlen vorgeschlagen

Einem Wunsch der Entwickler von LibreSSL nachkommend hat Linux-Veteran Theodore »Ted« Ts'o einen neuen Systemaufruf vorgeschlagen, der eine Reihe zufälliger Bytes liefert.

Theodore Ts'o

Linux Foundation

Theodore Ts'o

Der bisherige Weg, Zufallszahlen, genauer gesagt zufällige Bytes oder Bits, vom Kernel zu erhalten, führt über die Dateien /dev/random und /dev/urandom. Beide werden aus einem Zufallsgenerator gespeist, der über den Mindestwert der enthaltenen Entropie Buch führt. Dies ist notwendig, um sicherzustellen, dass die Zufallszahlen kryptografisch stark sind. Nur wenn genug Entropie enthalten ist, ist sichergestellt, dass ohne Kenntnis des inneren Zustands des Generators keine Vorhersage der nächsten generierten Zahl möglich ist.

Die Zufallszahlen aus dem Kernel werden verwendet, um Zufallsgeneratoren, die in den Anwendungen enthalten sind, mit Anfangswerten zu belegen. /dev/random kommt zum Einsatz, um Bytes mit garantiert ausreichender Entropie zu erhalten. Das Lesen von /dev/random blockiert jedoch, wenn dem Kernel gerade nicht genug Entropie zur Verfügung steht. Wenn etwas weniger Sicherheit genügt, kann auch /dev/urandom verwendet werden, das nie blockiert und immer die gewünschte Zahl von Bytes liefert. Anwendungen, die nicht sicherheitskritisch sind, brauchen nicht auf diese Dateien zuzugreifen, sie können auch einfach eine Kombination aus Zeitzähler und Prozess-ID zur Initialisierung des Zufallsgenerators verwenden.

Dass Zufallszahlen bisher nur über /dev/random und /dev/urandom zu erhalten sind, hat sich im Lauf der Zeit als problematisch erwiesen. Zum einen könnte es sein, dass die Dateien in einer chroot-Umgebung oder einem Container gar nicht existieren, entweder absichtlich oder weil sie vergessen wurden. Zum anderen benötigt ein Programm einen Datei-Deskriptor zum Öffnen der Dateien. Datei-Deskriptoren sind aber nur begrenzt verfügbar. Es sind Szenarien denkbar, in denen ein Angreifer alle verfügbaren Deskriptoren belegt, so dass ein Programm /dev/random oder /dev/urandom nicht mehr öffnen kann und auf eine kryptografisch wesentlich schwächere Initialisierung des Zufallsgenerators zurückgreifen muss.

Diese Schwächen wurden von OpenBSD erkannt und mit dem Systemaufruf getentropy beseitigt. Die Entwickler von LibreSSL, die neben einer OpenBSD- auch eine portable Edition für andere Betriebssysteme bereitstellen, haben nun den Wunsch geäußert, dass auch Linux einen solchen Systemaufruf anbietet. Linux-Veteran Theodore »Ted« Ts'o hat daraufhin den neuen Systemaufruf getrandom ausgearbeitet und auf der Mailingliste vorgestellt. Wie er später erläuterte, ist getrandom eine Obermenge der Funktionalität von getentropy und hat daher einen anderen Namen. getentropy kann dann leicht als Spezialfall von getrandom in der C-Bibliothek implementiert werden.

Der vorgestellte Patch ist ziemlich kurz, da er lediglich vorhandene Funktionalität auf neue Weise zugänglich macht. Trotzdem wurden von anderen Kernel-Entwicklern zahlreiche Kritikpunkte vorgebracht, die Ts'o in mehreren Schritten abgearbeitet hat, so dass der Patch jetzt mindestens in der vierten Version vorliegt. Es ist zu vermuten, dass die Änderung kurz vor der Vollendung steht und direkt nach der Freigabe von Linux 3.16 in den Kernel aufgenommen wird. Linux 3.17 könnte dann den neuen Aufruf offiziell machen.

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