Zufall berechnen (unter Windows)
Für diverse Anwendungen (insbesondere Kryptografie) benötigt man einen Zufallszahlengenerator. Dieser sammelt aufgrund von verschiedenen Ereignissen (Tastatureingabe, Mausbewegung, Netzverkehr etc.) Werte und berechnet daraus Zahlen. Diese sollen möglichst gleichverteilt und zufällig aussehen. Insbesondere ist es wichtig, dass sich aus einer bekannten Ausgabefolge nicht die nächsten oder vorhergehenden Zahlen berechnen lassen. Denn das wäre dann wohl kein Zufall mehr.
Das Team um Zvi Gutterman hat im letzten Jahr den Zufallszahlengenerator von Linux untersucht. Bis auf Probleme bei festplattenlosen Routern waren sie von der Qualität des Generators überzeugt. Lediglich die fehlende Zusammenarbeit mit den Maintainern und der, sagen wir, eigenwillige Code wurde bemängelt. Nun haben sie sich den Zufallszahlengenerator von Windows angeschaut. Schon der Abstrakt verheißt nichts gutes:
The implication of these findings is that a buffer overflow attack or a similar attack can be used to learn a single state of the generator, which can then be used to predict all random values, such as SSL keys, used by a process in all its past and future operation. This attack is more severe and more efficient than known attacks, in which an attacker can only learn SSLkeys if it is controlling the attacked machine at the time the keys are used.
Sie haben den Binärcode einer Windows-2000-Installation untersucht. Der Code des Generators ist wohl seit Windows 95 bis Windows XP im wesentlichen gleich geblieben. Er nimmt Entropie aus dem System entgegen, hasht das und wendet dann RC4 an. Das bedeutet, wenn man einmal den Status des Generators kennenlernt, kann man alle weiteren Zufallswerte berechnen. Das wird dadurch erleichtert, dass der Generator im Benutzerraum läuft und nur alle 128 kB neu initialisiert wird. Weiterhin kann man auch alte Zufallswerte berechnen, wenn man den Status kennt. Der Aufwand beträgt laut der Veröffentlichung O(223), lässt sich also auf modernen Architekturen binnen Sekunden oder Minuten berechnen.
Alles in allem scheint damit der ZUfallszahlengenerator unter Windows seinen Namen nicht zu verdienen. Die Autoren geben einige Hinweise zur Verbesserung. Allerdings können die nur von Microsoft umgesetzt werden. Ein Grund mehr für Freie Software.