# Seitenkanalattacke

Eine Seitenkanalattacke (englisch side-channel attack; korrekter übersetzt, aber unüblich: Nebenkanal-Angriff), auch Seitenkanalangriff, bezeichnet eine kryptoanalytische Methode, die die physische Implementierung eines Kryptosystems in einem Gerät (Chipkarte, Security-Token, Hardware-Sicherheitsmodul etc.) oder in einer Software ausnutzt. Dabei wird nicht das kryptographische Verfahren selbst, sondern nur eine bestimmte Implementierung angegriffen, d. h. andere Implementierungen des Verfahrens sind von dem Angriff nicht betroffen.
Das Prinzip beruht darauf, ein kryptographisches Gerät bei der Ausführung der kryptologischen Algorithmen zu beobachten und Korrelationen zwischen den beobachteten Daten und dem verwendeten Schlüssel zu finden. Diese charakteristische Information kann durch die Analyse der Laufzeit des Algorithmus, des Energieverbrauchs des Prozessors während der Berechnungen oder der elektromagnetischen Ausstrahlung gewonnen werden. Aktive, invasive Angriffe bestehen darin, in das Gerät einzugreifen und Fehler bei der Ausführung des kryptologischen Algorithmus einzubringen. Um dies zu verhindern, ist eine Seitenkanalanalyse daher Bestandteil der Schwachstellenanalyse in der Common-Criteria-Zertifizierung von Chipkarten und ähnlichen Geräten.

## Beispiele für Seitenkanäle
### Rechenzeitangriff (Timing Attack)

Die von Paul C. Kocher 1996 entdeckten Timing Attacks messen die Rechenzeit des implementierten kryptographischen Verfahrens für verschiedene (in der Regel vom Angreifer gewählte) Eingaben. Kryptosysteme benötigen leicht unterschiedliche Ausführzeiten, um unterschiedliche Eingaben zu verarbeiten. Diese Charakteristiken bei der Performance sind sowohl vom Schlüssel als auch von den Eingabedaten (Klar- oder Chiffretexte) abhängig. Durch die Laufzeitanalyse kann der Schlüssel nach und nach rekonstruiert werden.
Timing Attacks sind sowohl gegen Chipkarten als auch gegen Software-Implementierungen veröffentlicht worden.

### Gemeinsame Speichernutzung

Wenn sich Prozesse auf einem Rechner Speicherbereiche teilen, können sie aus der Nutzung des Speichers durch den anderen Prozess auf die durchgeführten Operationen schließen. Typische Beispiele:
* 2005: Ein entsprechender Angriff gegen OpenSSL nutzte die gemeinsame Nutzung des Level-1-Cache beim Hyper-Threading des Pentium 4 aus.
* 2015: Rowhammer
* 2017: Meltdown
* 2018: Spectre

### Simple Power Analysis (SPA)

Simple Power Analysis ist eine Methode, bei der der Energieverbrauch eines Mikroprozessors während kryptographischer Berechnungen direkt aufgezeichnet wird. Der Energieverbrauch variiert abhängig von den jeweils ausgeführten Mikroprozessorbefehlen. Er gibt somit Aufschluss über die ausgeführten Operationen sowie über den Schlüssel.
Eine Spur ist eine Menge von Energieverbrauchsmessungen, die von einer kryptologischen Operation erhalten wurden. Der Vergleich von Spuren entdeckt Muster wie etwa DES-Runden oder RSA-Operationen. Unterschiede in den Spuren liefern Rückschlüsse auf den Schlüssel.

### Differential Power Analysis (DPA)

Differential Power Analysis vergleicht Spuren, indem sie zusätzlich zur SPA-Technik statistische Methoden einsetzt.

### Bug Attacks

Ein Bug-Angriff nutzt fehlerhaft implementierte Funktionen in Mikroprozessoren aus (etwa Pentium-FDIV-Bug).

### Elektromagnetische Abstrahlung

Die von einem Rechner oder Gerät bei Berechnungen erzeugten elektromagnetischen Felder lassen sich oft noch in einiger Entfernung messen und erlauben ebenfalls Rückschlüsse auf die durchgeführten Operationen. Diese Angriffe sind als Van-Eck-Phreaking oder TEMPEST bekannt.

### Schallanalyse

Eine Analyse der Betriebsgeräusche eines Computers, mithilfe günstiger Mikrophone, kann zur Extraktion von RSA-Schlüsseln verwendet werden.
Nadeldrucker erzeugen Geräusche, die Rückschlüsse auf die gedruckten Zeichen zulassen. Nach einer Lernphase und Kenntnis des Kontexts ist eine Texterkennung besser als 70 % erreichbar.

## Beispiele für aktive Angriffe
### Reaktion auf falsche Eingaben

Manche kryptographische Implementierungen reagieren auf falsche Eingaben unterschiedlich, abhängig davon, an welcher Stelle der Verarbeitung ein Fehler auftritt. Die Art der Reaktionen liefert einem Angreifer daher bereits Informationen über den verwendeten geheimen Schlüssel. Ein solcher Angriff wurde gegen weit verbreitete Implementierungen von SSL veröffentlicht.

### Glitch-Attacke

Glitch-Attack ist eine Methode, um einen Kryptoprozessor zu kompromittieren, indem man die Ausführung von Maschinenbefehlen unterbricht. Für den Fall, dass Prozessoren nach In-order Logik arbeiten, wird das Programm strikt nach Programmreihenfolge abgearbeitet. Haben die Prozessorschaltkreise nun nicht genügend Zeit, die Befehle abzuarbeiten, kann das zu unterschiedlichem Verhalten führen. Dies wird durch das gezielte, kurzfristige Abschalten der Spannungsversorgung (voltage glitch) oder Einfügen eines Taktpulses (clock glitch) erreicht. Dadurch können Befehle falsch geladen, ungültige Daten weitergereicht oder Instruktionen übersprungen werden. Das genaue Verhalten hängt vom exakten Timing ab.
Ein Angriff kann wie folgt aussehen:
Genau in dem Augenblick, in dem eine Vergleichs- oder Sprunganweisung ausgeführt wird, wird eine Störung eingefügt, die die Befehlsausführung verändert. Um den Zeitpunkt zu finden, beobachtet der Angreifer externe Signale, die bei der Programmausführung geschaltet werden. Auf diese Weise könnte man eine kritische Authentifizierungsroutine umgehen.
Mit dieser Methode wurde bei der Xbox 360 der Bootloader „ausgetrickst“, wodurch beliebiger Code geladen werden konnte. Ziel des Angriffs war es, XeLL ausführen zu können.

### Differenzielle Fehleranalyse (DFA)

Die DFA ist eine Methode, eine kryptographische Einheit zu untersuchen, indem man ihr Fehler zufügt. Das wird meistens durch Veränderung der Spannung, Manipulation der Systemuhr oder Strahlung erzeugt. Der Eingriff kann zu vier Ergebnissen führen: kein Effekt, falsche Resultate (was ausgenutzt werden kann), keine Antwort, physische Zerstörung. Bei diesem Angriff wird derselbe Klartext, der unbekannt sein kann, zweimal verschlüsselt: einmal unter regulären Bedingungen und einmal unter Testbedingungen. Die beiden Chiffretexte werden dann verglichen. Bitdifferenzen liefern Rückschlüsse auf das RSA-Signaturschema.

## Gegenmaßnahmen

Gegenmaßnahmen wirken spezifisch gegen eine oder mehrere Angriffsformen:
* Sensoren, die Veränderungen der Betriebsspannung oder des Takts wahrnehmen, können den Computer veranlassen, sich gezielt auszuschalten, geheimes Schlüsselmaterial aus dem Speicher zu löschen oder andere Verteidigungsmaßnahmen durchführen.
* Zur Glättung des Stromverbrauchs können zusätzlich Kondensatoren in die Schaltung eingefügt werden. Dadurch wird die Analyse des zeitlich exakten, fein aufgelösten Stromverbrauchs erschwert; dabei müssen die Kondensatoren so verbaut sein, dass ein Angreifer sie nicht aus der Schaltung entfernen kann.
* Durch Generierung des ausgeführten Maschinencodes anhand spezieller Verfahren wird erreicht, dass die Code-Ausführung unabhängig von den verarbeiteten Daten stets dieselbe Laufzeit benötigt. Dazu wird die Menge der nutzbaren Maschinenbefehle stark eingeschränkt. Befehle, die nicht verwendet werden, sind zum Beispiel bedingte Sprungbefehle (da die angesprungenen Codestücke üblicherweise unterschiedliche Laufzeiten haben) oder Divisionen (da die Ausführungszeit von den konkreten Zahlen abhängt). Für den Fall, dass bedingte Sprünge doch notwendig sind, müssen die beiden möglichen Ausführungspfade mit redundantem Code aufgefüllt werden, damit sie gleich lange laufen.
* Physikalische Abschirmung gegen elektromagnetische Abstrahlungen, zum Beispiel bei Monitoren.
* Die eigentliche Aufgabe des ausgeführten Codes kann durch zusätzliche, nutzlose Codestücke verschleiert werden (Code Obfuscation). Dadurch wird dem Angreifer die Analyse erschwert, sie wird jedoch nicht unmöglich gemacht.
* Auf Mikrochips können mit derselben Idee zusätzliche Gatter eingebaut werden, die keine physikalische Funktion haben (Gatter Obfuscation). Insbesondere im Hochfrequenzbereich gibt es Komponenten (etwa kleine Metallansammlungen), die auf den ersten Blick nutzlos erscheinen, jedoch als kleine Kondensatoren dienen und dadurch die Gesamtschaltung beeinflussen.
* Das Beobachten von physikalischen Signalen kann verschleiert werden, indem zusätzliches Signalrauschen erzeugt wird.