Open Source im professionellen Einsatz
Linux-Magazin 09/2011

Aus dem Alltag eines Sysadmin: Haveged

Zufall entfesseln

Die kryptographische Praxis benötigt oft viele Zufallszahlen binnen weniger Augenblicke. Pures Chaos ist der Rohstoff für den Zahlenzufall, den zu gewinnen sich als schwieriger erweist, als zu vermuten wäre. Ein Einsatzbericht von Charlys Chaostagen.

535

Ich kann mit einem Computer ein großes Durcheinander anrichten, aber heute geht's um ein ordentliches Chaos. Ich will Zufallswerte von hoher Qualität, das bedeutet von minimaler Vorhersagbarkeit, erzeugen. Wer in die Katakomben kryptographischer Funktionen hinabsteigt, benötigt einen guten und schnellen Zufallsgenerator, etwa um einen Schlüssel aus wirklich zufälligen, nicht vorhersagbaren Daten zu generieren.

An qualitativ hochwertiges Chaos zu gelangen erfordert Kreativität. Findige Köpfe haben Methoden ersonnen, Zufallszahlen aus der Blasenbildung in einer Lavalampe zu gewinnen, aus dem Rauschen eines übersteuerten Mikrofoneingangs und den Luminanzwerten eines Kamerasensors in einer schwarzen verschlossenen Box. All das funktioniert gut, ist aber sehr langsam.

Gut und wenig oder viel und schlecht

Auf Linux-Systemen ist es das gleiche Dilemma. Im Blockdevice »/dev/random« steht eine gewisse Menge von Zufallsdaten bereit, die der Kernel aus unvorhersehbaren Hardware-Interrupts (Tastatur, Maus, Platten, …) errechnet. Das ist der Grund, warum manche Schlüsselgeneratoren den Benutzer dazu auffordern, wild auf die Tastatur einzudreschen, während der Schlüssel erzeugt wird. Die Qualität des Zufalls aus »/dev/random« reicht für die meisten kryptographischen Zwecke aus, nicht aber die Menge.

Andererseits gibt es »/dev/urandom« , das eine große Menge Zufallsdaten von minderer Qualität liefert, die für Verschlüsselungstechniken wertlos sind. Zu allem Überfluss kommen sich beide in die Quere, denn wenn ich »/dev/urandom« um Zufallswerte bitte, saugt er zunächst einmal den Entropie-Pool seines Bruders »/dev/random« leer, um die eigenen Ergebnisse ein wenig aufzuhübschen.

Prozessorgeflimmer

Einen Lösung verspricht Havege (Hardware Volatile Entropy Gathering and Expansion, [1] ). Das Verfahren macht sich den Umstand zunutze, dass moderne Prozessoren Elemente zur Verzweigungsvorhersage (Branch Prediction), Caches, Pipelines und vieles mehr besitzen. Das normale Benutzen der CPU löst ein Trommelfeuer an Statusänderungen bei Tausenden dieser Elemente aus, und genau daraus produziert das Havege-Verfahren viel und hochwertigen Zufall.

Die Linux-Implementation des Havege-Verfahrens heißt wenig überraschend Haveged [2] . Er gehört zum Lieferumfang der meisten Linux-Distributionen und geht nach der Installation ganz ohne Umschweife, sprich ohne Konfiguration, ans Werk. Auf meinem Ubuntu-Testsystem verzehnfachte sich die Größe des verfügbaren Entropie-Pools nach dem Start von Haveged binnen weniger Sekunden (siehe Abbildung 1 ). Den Füllstand des Pools teilt mir der Kernel freundlicherweise unter »/proc/sys/kernel/random/entropy_avail« fortlaufend mit.

Abbildung 1: Auf dem Testsystem füllt sich der Entropie-Pool (y-Achse, Maßeinheit Byte) nach dem Start von Haveged binnen Sekunden.

Mein Fazit: Wer mit kryptographischen Funktionen arbeitet, und sei es nur, dass er gelegentliche einen Schlüssel feilt, sollte Haveged installieren. Der Daemon arbeitet unauffällig und praktisch wartungsfrei, ist aber sehr wirksam. Es ist kein Zufall, dass er so lange zu meinem Standard-Werkzeugkasten gehören soll, bis ich eine Methode gefunden habe, den Zustand meines Arbeitszimmer kryptographisch abzubilden. (jk)

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein in Kamp-Lintfort. Zu seinen Aufgaben gehören die Sicherheit und Verfügbarkeit der Firewalls und der DMZ. Im heißen Teil seiner Freizeit frönt er dem Kochen, im feuchten Teil der Süßwasseraquaristik und im östlichen lernt er Japanisch.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 1 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Tooltipps

    Ajenti 1.2.17, Uncsv 0.9.1, Haveged 1.8, EBD 0.9.20, Prun und Tcpreplay 4.0.0

  • Kernelpatch: Alternative zu "/dev/random"

    Die Zufallserzeugung mit "/dev/random" stößt in aktuellen IT-Setups mitunter an ihre Grenzen. Nun schlägt der deutsche Entwickler Stephan Müller mit dem Linux Random Number Generator eine Alternative vor und hat auf der Kernel-Mailingliste ein Patch eingereicht.

  • NSA-Code im Kernel? Linus sagt: Nope!

    Auch Linus Torvalds spürt mittlerweile die Auswirkungen der NSA-Affäre und schmettert eine Vermutung ab, nach welcher die Zufallserzeugung im Kernel manipuliert sei.

  • Einführung

    Im vergangenen Monat herrschte mit dem Havege-Daemon das Chaos in dieser Kolumne. Heute dagegen sorgt Charly für Ordnung im Netz – nach einer dreistufigen Leidensgeschichte.

  • Kern-Technik

    Hochwertige Zufallszahlen sind schwieriger zu erzeugen, als man denkt. Dieser Artikel verrät, wie Linux virtuell würfelt und damit eine hohe Qualität der generierten Zahlenfolgen sicherstellt. Einige Bereiche lassen aber noch Raum für Verbesserungen.

comments powered by Disqus