Original-URL des Artikels: https://www.golem.de/news/dan-kaminsky-sichere-zufallszahlen-zum-standard-machen-1408-108469.html    Veröffentlicht: 10.08.2014 20:38    Kurz-URL: https://glm.io/108469

Dan Kaminsky

Sichere Zufallszahlen zum Standard machen

Def Con 22 Dan Kaminsky fordert, dass sichere Zufallszahlengeneratoren zum Standard in allen Programmiersprachen werden müssen. Als weitere große Baustellen in der IT-Sicherheit sieht er Denial-of-Service-Attacken und die Speicherverwaltung von Browsern.

Dan Kaminsky hat auf der Def Con 22 Vorschläge gemacht, wie man das Problem unsicherer Zufallszahlen ein für allemal lösen könnte. Immer wieder führten in der Vergangenheit mangelhafte Zufallszahlengeneratoren zu Sicherheitsproblemen. Zuletzt war davon beispielsweise LibreSSL betroffen. Kaminsky verweist auch auf Forschungsarbeiten, die gezeigt haben, dass etwa 50.000 RSA-Schlüssen von Routern und anderen Embedded-Geräten wegen schlechter Zufallsgeneratoren gebrochen werden konnten. Gerade erst hatte Dominique Bongard ein Problem mit Zufallszahlengeneratoren in Routern mit dem WPS-Protokoll gezeigt.

Kaminsky sagte, dass er es Leid sei, immer wieder die gleichen Probleme zu beheben. Deshalb sollte das Problem unsicherer Zufallszahlen ein für allemal gelöst werden. Dabei werde oft über die falschen Probleme diskutiert. Es sei eigentlich nicht schwer, einen sicheren Zufallszahlengenerator zu programmieren und es sei dabei auch weitgehend egal, welche Algorithmen verwendet werden. Grundsätzlich gebe es vor allem zwei Probleme: Zufallszahlen ohne Entropie und Zufallszahlengeneratoren, die überhaupt nicht auf Sicherheit ausgelegt sind.

Unsichere Algorithmen Standard

In fast allen Programmiersprachen basiert die Standardfunktion für Zufallszahlen auf unsicheren Algorithmen. Meistens handelt es sich entweder um einen LFSR-Algorithmus (Linear feedback shift register) oder um einen Mersenne Twister. Beide Algorithmen haben das Problem, dass ein Angreifer, der einige Zufallszahlen beobachten kann, dadurch in der Lage ist, frühere und zukünftige Zufallszahlen zu berechnen.

Das Problem sei laut Kaminsky, dass die unsicheren Standard-Zufallszahlengeneratoren oft einfacher zu benutzen sind. Unsicherheit "per Default" habe noch nie gut funktioniert, so Kaminsky, deshalb sollten idealerweise alle Standardfunktionen für Zufallszahlen sichere Zufallsgeneratoren des Betriebssystems aufrufen. Kaminsky arbeitet an einer Bibliothek namens Liburandy, die für alle gängigen Programmiersprachen eine solche Änderung implementiert.

Sichere Zufallszahlen sind langsamer

Es gebe zwei Gründe warum bisher die meisten Programmiersprachen standardmäßig keine starken Zufallszahlen implementieren. Der eine sei, dass manche Programme einen deterministischen Zufallszahlengenerator nutzen wollen. Wenn der Programmierer den Seed für einen Zufallszahlengenerator auf einen festen Wert setzt, liefert der Zufallszahlengenerator immer die selben Zahlen. Das andere Problem sei die Geschwindigkeit: Systemweite Zufallszahlengeneratoren wie beispielsweise /dev/urandom unter Linux sind oft deutlich langsamer.

Für die allermeisten Anwendungen spielt die Geschwindigkeit des Zufallszahlengenerators zwar kaum eine Rolle, es sei aber mittels schneller Hashfunktionen wie SipHash möglich, im Userspace auch sichere Zufallszahlengeneratoren sehr schnell zu implementieren, so Kaminsky. Um Probleme beim Forken von Prozessen zu umgehen, könne hier die Systemzeit millisekundengenau in den Zufallsgenerator mit einfließen. Es sei dann zwar theoretisch nicht mehr absolut auszuschließen, dass zweimal der selbe Zufallswert auftaucht, aber praktisch ist es laut Kaminsky nahezu ausgeschlossen, dass zwei Prozesse genau im selben Augenblick ausgeführt werden.

Kaminsky selbst bevorzugt die Lösung, immer auf dem systemweiten Zufallszahlengenerator zurückzugreifen. Aber bei Verfechtern beider Lösungen sei klar, dass der traditionelle und unsichere LSFR-Algorithmus abgeschafft werden muss.

Fehlende Entropie

Die Ursache der schwachen RSA-Schlüssel war fehlende Entropie von Embedded-Geräten beim Systemstart. Linux initialisiert den Zufallszahlengenerator durch verschiedene Systemereignisse, etwa Tastatureingaben, Zugriffszeiten von Festplatten und Mausbewegungen. Ein Embedded-Router hat aber keines dieser Geräte.

Kaminsky sieht eine gute Möglichkeit zur Gewinnung von Entropie darin, die Unterschiede verschiedener Zeitquellen im System zu messen. So gebe es in fast jedem System genauere und weniger genaue Zeitmessungen. Kaminsky hatte hierfür vor einigen Jahren bereits ein Tool namens DakaRand programmiert, das auf einer Idee von Matt Blaze basiert, der ein entsprechendes Programm namens TrueRand bereits 1996 entwickelt hatte. Er wisse zwar nicht, ob diese Methode perfekt sei, aber Kaminsky sei sich sicher, dass ein System wie DakaRand besser sei als vieles, was in heutigen Systemen verwendet wird.



Sichere Passwörter sind schlecht zu merken

Neben den Entropieproblemen von Zufallszahlengeneratoren sieht Kaminsky aber noch ein weiteres ungelöstes Entropieproblem: Den Menschen vor dem Computer. Menschen können sich sichere Passwörter in aller Regel nicht merken, deshalb neigen sie fast immer dazu, unsichere Passwörter zu nutzen, die nur wenige Bit an Entropie haben. Die Programmierer machen es sich leicht: Sie schieben die Aufgabe, sich ein Passwort auszudenken, auf den Nutzer ab, damit können sie am Ende sagen, dass die Wahl eines schlechten Passworts durch den Nutzer nicht ihre Schuld ist.

Kaminsky bat Ryan Castellucci auf die Vortragsbühne, um ein Alternativkonzept zu Passwörtern vorzustellen. Castellucci hat ein Verfahren entwickelt, bei dem der Anwender sich statt Passwörtern einfache Sätze merken soll. Das System korrigiert dabei automatisch Tippfehler und Fehler in der Reihenfolge. Menschen seien eher in der Lage, sich solche Wortkombinationen zu merken.

Neben den Problemen mit Zufallszahlen und Entropie hat Kaminsky in seinem Vortrag weitere Sicherheitsprobleme im Internet angesprochen, die seiner Ansicht nach zur Zeit so dramatisch sind, dass sie die Existenz des Netzes als ganzes in Frage stellen könnten.

Zero-Day-Lücken in Browsern

Die Hersteller von Browsern kämpfen mit einer nicht endenden Serie von Zero-Day-Sicherheitslücken, die auf die Speicherverwaltung zurückzuführen sind. Meist handelt es sich um sogenannte Use-after-Free-Probleme: Ein Speicherbereich, der vorher durch ein Objekt genutzt wurde, wird von einem anderen Teil des Browsers ausgelesen und ausgewertet. Während Chrome und Microsoft bereits grundsätzliche Gegenmaßnahmen ergriffen hätten, sei die Speicherverwaltung von Firefox zur Zeit am problematischsten. Gemeinsam mit dem Informatikprofessor Emery Berger plant Kaminsky, eine verbesserte Speicherverwaltung für Firefox zu entwickeln. Zunächst könnte diese dann in Spezialanwendungen wie dem Tor-Browser oder der auf Sicherheit optimierten Tails-Distribution genutzt werden. Es werde allerdings laut Kaminsky schwierig, die Firefox-Entwickler davon zu überzeugen, sich von ihrer bisherigen sehr performant arbeitenden Speicherverwaltung zu verabschieden.

DDoS-Angriffe bedrohen das Internet

Als weiteres großes Problem sieht Kaminsky Denial-of-Service-Angriffe, die DNS-Server und andere Protokolle zur Verstärkung nutzen. Netzwerkprotokolle, die auf UDP basieren, schicken Antworten an gefälschte Pakete. Die Pakete enthalten als Absender-IP-Adresse die Adresse des Opfers. Für die Betreiber dieser Server ist nicht zu erkennen, dass es sich um gefälschte Pakete handelt. Eine Lösung des Problems ist ein Routingprotokoll namens BCP38. Allerdings hilft das nur, wenn ein Großteil der Netzwerke im Internet BCP38 einsetzt. Als schnelle Maßnahme sollten Betreiber von DNS-Servern die Funktion Response-Rate-Limiting (RRL) einschalten. Neben DNS gibt es weitere Protokolle, die für derartige Reflection-Angriffe anfällig sind, zuletzt wurde etwa NTP hierfür ausgenutzt.

Kaminsky erinnert sein Publikum daran, dass das Internet nicht der erste Versuch gewesen sei, ein weltweit vernetztes System wie das Internet zu schaffen. Es sei nur niemand vorher damit erfolgreich gewesen. Der Grund des Erfolges des Internets sei seine Offenheit. Wenn das Netz erhalten werden soll, müssten die wichtigen Sicherheitsprobleme gelöst werden, die es bedrohen. Das Internet habe in vielen Branchen für Disruptionen und Verwerfungen gesorgt. "Wir müssen davon ausgehen, dass viele ein Interesse daran haben, die Funktion des Internets zu stören", so Kaminsky.  (hab)


Verwandte Artikel:
DUHK-Angriff: Vermurkster Zufallszahlengenerator mit Zertifizierung   
(24.10.2017, https://glm.io/130777 )
Zertifikate: DANE und DNSSEC könnten mehr Sicherheit bringen   
(13.05.2014, https://glm.io/106436 )
Keren Elazari: "Hacker sind das Immunsystem des Internets"   
(11.08.2014, https://glm.io/108476 )
BASIC: GOTO 50   
(01.05.2014, https://glm.io/106183 )
E-Mail-Clients für Android: Kennwörter werden an App-Entwickler übermittelt   
(06.03.2018, https://glm.io/133172 )

© 1997–2019 Golem.de, https://www.golem.de/