Seitenkanalattacke

Aus IT-Forensik Wiki
Version vom 30. Juli 2020, 19:09 Uhr von St192481 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Eine „Seitenkanalattacke“ (“Side-Channel-Attack” ) bezeichnet eine kryptoanalytische Methode,bei der nicht das kryptographische Verfahren selbst, sonde…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Eine „Seitenkanalattacke“ (“Side-Channel-Attack” ) bezeichnet eine kryptoanalytische Methode,bei der nicht das kryptographische Verfahren selbst, sondern seine physische Implementierung angegriffen wird. Geprägt hat den Begriff der US-AmerikanischeKryptologe Paul C. Kocher im Jahr1996. Bei Seitenkanalangriffen werden Erkenntnisse aus beobachtbaren physikalischen Effekten bei derVerarbeitung von sensitiven Daten gewonnen. Während sich passive Seitenkanalattacken auf die reineBeobachtung und Analyse der Nebeneffekte beschränkt, greifen aktive Seitenkanalattacken direkt inden Ablauf oder die Funktion eines Geräts ein.Mittels Seitenkanalattacken werden bestimmte Parameter des den Algorithmus ausführenden Systems gemessen, z.B.

  • die Bearbeitungsdauer (“Rechenzeitangriff” / “Timing-Attack”)
  • die Speichernutzung
  • die Leistungsaufnahme (“Simple Power Analysis”SPA, “Differential Power Analysis”DPA)
  • die elektromagnetische Abstrahlung (“Tempest”)
  • die Geräuschemmission
  • die Reaktion auf falsche Eingaben
  • die Reaktion auf herbeigeführte fehlerhafte Betriebsbedingungen (“Differential Fault Analysis”DFA, “Glitch-Attack”)
  • die Ausnutzung fehlerhaft implementierter Funktionen (“Bug-Attack”)

Aus den ermittelten Parametern werden Informationen über den Programmfluss extrahiert, die dasBrechen des Verfahrens (oder eines bestimmten Schlüssels)vereinfachen. Typische Maßnahmen gegen Seitenkanalangriffe sind:

  • elektromagnetische Abschirmung der Geräte
  • physikalische Maßnahmen gegen Schall- und Wärmeabstrahlung
  • Angleichung von Laufzeiten unterschiedlicher Prozesse durch Einfügen von Redundanzen
  • Erzeugen von Laufzeiten, die von Zufallsfunktionen abhängig sind
  • Einfügen von physikalischen und logischen Rauschfunktionen
  • eingabeunabhängige Ausführung von Code
  • identische Reaktionen auf fehlerhafte Eingaben.