# Kaltstartattacke

Die Kaltstartattacke oder der Kaltstartangriff (englisch cold boot attack) bezeichnet in der Kryptologie eine Seitenkanalattacke, bei der ein Angreifer mit physischem Zugang zum Zielrechner Inhalte des Arbeitsspeichers ausliest, nachdem das System abgeschaltet wurde.
Sie basiert auf der Datenremanenz in gängigen RAM-Modulen, in denen sich Ladung unter bestimmten Bedingungen (oder schon allein durch Fertigungstoleranzen bedingt) nicht innerhalb von Millisekunden, sondern nach und nach langsam über Sekunden bis Minuten verflüchtigt und die Dateninhalte aus den Speicherzellen eventuell nach einigen Minuten noch erfolgreich vollständig ausgelesen werden können. Je nach Rechner können solche Reste nach mehreren Sekunden bis Minuten ohne Strom aufgefunden werden. Kühlung der Speichermodule verlängert die Remanenzzeit drastisch. Nach einer Behandlung der Module mit Kältespray halten sich die Inhalte viele Minuten lang.
Bei einem im Juli 2008 auf der USENIX-Konferenz vorgestellten Angriff gelang es Forschern der Princeton-Universität, direkt nach einem Kaltstart Daten noch forensisch auszulesen. Für den Angriff wird der Zielrechner mit einem minimalen Betriebssystem kalt neugestartet. Weil dieses Mini-System nur wenig Speicher verbraucht, lässt es einen größtmöglichen Teil des Speichers unberührt, wodurch der unbenutzte Speicher noch genau das enthalten kann, was vor dem Neustart dort gespeichert war.
Aus den ausgelesenen Daten können dann die kryptographischen Schlüssel zu verschlüsselten Daten extrahiert werden, auf die im Moment des Systemabsturzes gerade Zugriff bestand. Das könnten zum Beispiel die Schlüssel von Full-Disk-Encryption-Systemen sein.

## Gegenmaßnahmen

Als Best Practice zur Minderung der Angriffschancen gilt das Überschreiben der Schlüssel beim Aushängen des Datenträgers (zum Beispiel beim Herunterfahren des Systems), womit die Daten zumindest danach sicher sind. Die Trusted Computing Group empfiehlt als Gegenmaßnahme in der „TCG Platform Reset Attack Mitigation Specification“, dass das BIOS Inhalte des Arbeitsspeichers beim power-on self-test leert, wenn ein unsauberes Beenden des Betriebssystems erkannt wurde. Dies verhindert allerdings höchstens, dass ein konformer Rechner selbst zum Auslesen benutzt wird.
Eine Möglichkeit, das zugrundeliegende Problem zu beheben, ist, Schlüssel und ähnliches nur im Prozessor-Cache vorzuhalten. Dieser ist in einem Gesamtchip eingebettet, dem er nicht leicht zu entnehmen ist und welcher bei Einschalten eine Initialisierung durchläuft, die die Speicherinhalte vernichtet. Dabei muss sichergestellt werden, dass der Cache-Inhalt nicht wie üblich mit dem Hauptspeicher synchronisiert wird („no-fill“-Modus). In der Praxis bremst die Methode den Prozessor zur Unbenutzbarkeit.
Ein weiterer Ansatz ist es, den Schlüssel ausschließlich in den Registern des Prozessors vorzuhalten. Für Linux-Betriebssysteme auf x86-64-Systemen und Android auf ARM-Systemen ist eine Implementierung dieses Ansatzes als Teil des Kernels in Form eines Patchs verfügbar. Für sonstige x86-64-Betriebssysteme (z. B. Microsoft Windows) kann diese Art der Registerspeicherung durch den Einsatz einer geeigneten Hypervisor-Software erreicht werden. Auf einem 64-Bit-Prozessor mit AES-Befehlssatzerweiterung, ab Core-i-'Westmere'-Prozessoren seit 2010 sind die Leistungseinbußen nach Aussage der Entwickler zu vernachlässigen.