Definition

Timing-Angriff

Was ist ein Timing-Angriff?

Ein Timing-Angriff ist eine Art von Seitenkanalangriff, bei dem die Zeit, die ein Computerprozess läuft, ausgenutzt wird, um Wissen über ein System zu erlangen oder darauf zuzugreifen. Es gibt konkrete Implementierungen von Timing-Angriffen gegen einige Verschlüsselungsmethoden.

Wie funktionieren Timing-Angriffe?

Bei Timing-Angriffen wird gemessen, wie lange ein Computer für die Ausführung eines bestimmten Vorgangs benötigt, um Erkenntnisse über die Daten zu gewinnen, mit denen das System arbeitet. Es gibt zwar viele Faktoren, die die Verarbeitungszeit beeinflussen können, aber der Angreifer kann viele Messungen vornehmen, um eine Durchschnittszeit zu ermitteln. Selbst Teilkenntnisse über die Daten können herkömmliche Brute-Force-Angriffe effektiver machen. Statistische Modelle und maschinelles Lernen können Teilwissen aus einem Timing-Angriff nutzen, um die Daten zu reproduzieren.

Einige Timing-Angriffe nutzen Race Conditions (eine Art Wettlaufsituation) aus, das heißt, dass zwei Vorgänge gleichzeitig ablaufen und sich das Ergebnis ändert, je nachdem, welcher Vorgang zuerst abgeschlossen wird. Die Angriffe nutzen eine Race Condition aus, um auf Daten zuzugreifen, die der Angreifer nicht erhalten durfte.

Timing-Angriffe sind schwierig zu implementieren, aber sie können erfolgreich ausgenutzt werden. Dies liegt daran, dass sie oft auf hochwertige Daten wie Verschlüsselungsschlüssel, Kryptographie, Passwörter oder API-Schlüssel abzielen. Sie hinterlassen oft keine Spuren auf dem angegriffenen System, so dass der Angreifer genügend Zeit hat, den Angriff auszuführen.

Ein Beispiel für einen Timing-Angriffe

Die meisten Benutzer und Programmierer wollen, dass ihre Computer so schnell wie möglich arbeiten. Daher werden Programme auf Geschwindigkeit optimiert. Wenn ein Programm so schnell wie möglich läuft, kann ein sorgfältiger Angreifer manchmal Informationen über das System herausfinden.

Man stelle sich eine Website vor, die eine Zeichenkette verwendet, um den Benutzer mit einem Passwort oder einem API-Schlüssel zu validieren. Das System bräuchte 10 ns (Nanosekunden), um jeden korrekten Buchstaben zu überprüfen, und würde sofort aufhören, weitere Zeichen zu lesen, sobald es auf ein falsches Zeichen stößt. Dieses System wäre zwar recht schnell, aber anfällig für einen Timing-Angriff. Ein entschlossener Angreifer könnte versuchen, jedes Mal ein anderes Zeichen zu senden, und messen, wie lange es dauert, bis er eine Antwort erhält. Anhand der genauen Zeitangaben der Antworten und der Mittelung der Ergebnisse könnte der Angreifer schließlich die richtige Zeichenfolge mit viel weniger Versuchen als bei einer Brute-Force-Methode herausfinden.

Eine mathematische Funktion, die beim Diffie-Hellman-Schlüsselaustausch und bei RSA-Schlüsseln verwendet wird, ist linear zeitabhängig davon, wie viele Einsen in der zu berechnenden Binärzeichenfolge enthalten sind. Dadurch kann festgestellt werden, wie viele Einsen in der Binärzahl enthalten sind, aber nicht, wie viele Nullen. Dies verrät zwar nicht direkt den Schlüssel, aber wenn ein Angreifer genügend verschlüsselte Daten beobachten kann, kann dies zusätzliche Informationen liefern, die zum Knacken der verwendeten Verschlüsselung beitragen.

Die Angriffe Spectre und Meltdown nutzen eine Race Condition in modernen Prozessoren aus, um einen Timing-Angriff durchzuführen und Cache-Speicher zu lesen, auf den das angreifende Programm keinen Zugriff haben sollte. Da moderne Prozessoren so schnell sind und der Speicher relativ langsam ist, beginnen sie, Daten im Cache vorzuhalten, von denen sie vorhersagen, dass sie aufgerufen werden, noch bevor die aufrufenden Funktionen beendet sind. Dies macht sich der Angreifer zunutze, indem er Daten aufruft, auf die er keinen Zugriff hat, dann den Pre-Cache liest, bevor die aufrufende Funktion Zeit hat, die Daten zu verarbeiten, und dabei feststellt, dass er keine Berechtigung für diese Daten hat.

Wie man sich vor Timing-Angriffen schützt

Der beste Schutz gegen Timing-Angriffe besteht darin, Systeme und Software auf dem neuesten Stand zu halten. Dazu gehört auch die Aktualisierung von Abhängigkeiten und Open-Source-Produkten. Wenn neue Angriffe entwickelt werden, aktualisieren Programmierer und Anbieter ihre Produkte, damit sie gegen diese Angriffe resistent sind. Angreifer können Timing-Angriffe gegen bekannte anfällige Softwareversionen einsetzen.

Keine Informationen über Systeme oder Software preisgeben. Sicherheit durch Unklarheit ist zwar keine gute Primärverteidigung, aber als Teil einer Gesamtstrategie ist sie dennoch eine gute Praxis. Ein Angreifer könnte das Wissen über die Hardware oder Software nutzen, um bekannte Timing-Angriffe zu finden oder das spezifische System ins Visier zu nehmen, um einen neuen Angriff zu entwickeln.

Timing-Angriffe auf öffentliche Systeme erfordern oft viele Versuche, um genügend Informationen zu sammeln. Die Implementierung von Ratenlimitierungs- oder Fail-to-Ban-Systemen kann den Angreifer daran hindern, genügend Daten zu sammeln, um einen Zeitangriff durchzuführen.

Programmierer sollten sicherheitskritische Funktionen identifizieren und sie so erstellen, dass sie zeitlich konstant sind. Dies kann zu einer etwas langsameren Programmausführung führen, eliminiert aber die Möglichkeit für einen Zeitangriff. Eine weitere Möglichkeit ist das Einfügen von zufälligem Timing-Jitter in die Programmausführung.

Diese Definition wurde zuletzt im März 2024 aktualisiert

Erfahren Sie mehr über Bedrohungen