Seitenkanalattacke

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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[1].

Beispiele für Seitenkanäle

[Bearbeiten | Quelltext bearbeiten]

Rechenzeitangriff (Timing Attack)

[Bearbeiten | Quelltext bearbeiten]

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.[2]

Gemeinsame Speichernutzung

[Bearbeiten | Quelltext bearbeiten]

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:

Simple Power Analysis (SPA)

[Bearbeiten | Quelltext bearbeiten]

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)

[Bearbeiten | Quelltext bearbeiten]

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

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

Elektromagnetische Abstrahlung

[Bearbeiten | Quelltext bearbeiten]

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.

Eine Analyse der Betriebsgeräusche eines Computers, mithilfe günstiger Mikrophone, kann zur Extraktion von RSA-Schlüsseln verwendet werden.[5]

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.[6]

Beispiele für aktive Angriffe

[Bearbeiten | Quelltext bearbeiten]

Reaktion auf falsche Eingaben

[Bearbeiten | Quelltext bearbeiten]

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.[7]

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.[8]

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.[9]

Differenzielle Fehleranalyse (DFA)

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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.
  • National Computer Security Center: A Guide to understanding Covert Channels
  • Paul Kocher: Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems. Proc Int Cryptol Conf, Volume 1109 of Lecture Notes in Computer Science, Springer 1996, p. 104–113. ISBN 3-540-61512-1
  • Paul Kocher, Joshua Jaffe, Benjamin Jun: Differential Power Analysis (PDF; 217 kB), Volume 1666 of Lecture Notes in Computer Science, Springer 1999, p. 388–397.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Das ÖFIT-Trendsonar der IT-Sicherheit – Seitenkanalanalyse. Fraunhofer FOKUS Kompetenzzentrum Öffentliche IT, April 2016, abgerufen am 20. Mai 2016.
  2. Patrick Brauch: Sicherheitslücke bei SSL-Bibiliotheken. In: heise.de. 20. Februar 2003, abgerufen am 3. Februar 2024.
  3. Andreas Stiller: Lauschangriff. Sicherheitsrisiko Hyper-Threading. In: c’t. Band 13, Nr. 14, 2005, S. 48 (heise.de [abgerufen am 13. Juni 2019]).
  4. Eli Biham, Yaniv Carmeli, Adi Shamir: Bug Attacks. CRYPTO 2008, LNCS 5157, S. 221–240, Springer, 2008
  5. RSA Key Extraction via Low-Bandwidth Acoustic Cryptanalysis
  6. Backes et al.: Acoustic Side-Channel Attacks on Printers (Memento vom 8. Mai 2012 im Internet Archive) (PDF; 827 kB)
  7. PDF bei eprint.iacr.org
  8. Embedded Security 101. Abgerufen am 31. August 2020 (englisch).
  9. gligli: The Xbox 360 reset glitch hack. August 2011, abgerufen am 21. Februar 2012 (englisch): „We found that by sending a tiny reset pulse to the processor while it is slowed down does not reset it but instead changes the way the code runs“