AES-GCM (Galois Counter Mode) Sidechannel Resistance

Hey allerseits,

[Einschub: Es ist nicht klar, ob die Implementation überhaupt sidechannel-resistant ist, daher im folgenden diese Information nur im Hinterkopf haben]

angenommen ich habe eine Smartcard, die bei der Berechnung ein Feld generiert, aus dem evtl. (!) Informationen abgelesen werden könnten, wie z.B. der Energieverbrauch. Wie viele Messungen muss ein potentieller Angreifer (egal auf welcher Entfernung) durchführen, um dadurch genügend viele Informationen, für einen erfolgreichen Angriff auf das System (egal mit welchem Ziel), zu haben?

Also kurz um: Wie viele Berechnungen müsste der Angreifer beobachten, bis er einen Angriff auf Basis dieser Informationen durchführen kann? Genügen bereits drei? (Erste Messung ist Referenz, zweite Messung Abweichung, dritte Methode)


Viele Grüße
 
Also kurz um: Wie viele Berechnungen müsste der Angreifer beobachten, bis er einen Angriff auf Basis dieser Informationen durchführen kann? Genügen bereits drei? (Erste Messung ist Referenz, zweite Messung Abweichung, dritte Methode)

Ich kenne keine solche "Simplifizierung" und wenn es sie gäbe, dann wäre Krypto wohl generell im Eimer. Das ist primär eine rein akademische Frage obwohl es denkbar ist, dass gewisse Organisationen durch solche Methoden Informationen gewinnen wollen und unter den richtigen Umständen auch können.

In jedem Fall sind aber umfangreiche Messungen nötig und soweit ich das beurteilen kann, geht es dabei ohnehin nur um die Bestimmung von Wahrscheinlichkeiten bestimmter Werte.

Also 1. brauchst du sehr viel Messung mit entsprechendem Gerät und 2. brauchst du eine Methode um daraus auch einen Angriff zu bauen. Sprich: du musst die gewonnen Daten auch erst einmal korrekt interpretieren.
 
Sagen wir das Gerät ist ein Chipkartenleser, der die Informationen mittels AES-GCM ver- und entschlüsselt. Um die Daten auszulesen und auszugeben, muss der Kram für kurze Zeit im Klartext vorliegen. Angenommen es geht dem Angreifer nur um den Klartext. Schränkt das die Anzahl notwendiger Messungen ein?

Die Implementierung ist eine eigens entworfene Version.

Ich würde sagen, dass die erste Messung allein als Referenzwert dient. Die zweite als Abweichungshighlighter und die Dritte zur (hoffentlichen) Bestätigung. Jedenfalls empfinde ich drei Messungen als ungenügend, um tatsächliche Abweichungen zu enttarnen, wie z.B. einer Wartezeit.

Aber mal aus Erfahrung gesprochen, wenn jemand einen Sidechannel-Angriff gemacht hat: Wie viele Messungen waren ca. notwendig um überhaupt eine Info zu entlarven?
 

Ich würde sagen, dass die erste Messung allein als Referenzwert dient. Die zweite als Abweichungshighlighter und die Dritte zur (hoffentlichen) Bestätigung. Jedenfalls empfinde ich drei Messungen als ungenügend, um tatsächliche Abweichungen zu enttarnen, wie z.B. einer Wartezeit.

Solange du nichts über die Beschaffenheit dessen weißt, was du da analysieren willst - was soll das Ergebnis denn Referenzieren außer irgend einer Unbekannten?
Und was meinst du mit Wartezeit?

Und was willst du Messen? Du kannst Strom Messen, Emissionen von Feldern, Lichtemissionen von LEDs..?
 
Messungen des Verbrauchs geben ja Aufschluss darüber, was der Prozessor macht: Work, Idle (=Wartezeit).

In Onlineplattformen entwickeln viele ein Login-Script, dass zunächst rechnet und prüft, aber danach den Nutzer kurz warten lässt, um Bruteforceangriffe zu verlangsamen. Diese Wartezeit, in der der Prozessor praktisch nichts macht, lässt sich anhand des Verbrauches messen.

Sagen wir: Ziel aller Angriffe ist es, die Smartcard zu kopieren oder Daten sichtbar zu machen. Dabei ist diese Feldmessung zum Stromverbrauch nur ein kleiner Teil, der Aussagen liefern kann. Irgendwann liegen auch Daten im Klartext vor, die dann kurz verarbeitet und wieder aus dem speicher gelöscht, oder wo der Speicher wird verschlüsselt wird.
 
Dabei ist diese Feldmessung zum Stromverbrauch nur ein kleiner Teil, der Aussagen liefern kann
Das ist ja in der Hauptsache der Zweck: Durch derartige Analysen Bruteforcewege zu verkürzen.

Diese Wartezeit, in der der Prozessor praktisch nichts macht, lässt sich anhand des Verbrauches messen.
Der tut immer irgendwas. Du musst exakt wissen welches System du vor dir hast um sinnvolle Messungen machen zu können.
Wenn es um Strom geht, so kannst du gegen Masse die Differenz zur Eingangsspannung messen und hast den Verbrauch.
Dann musst du schauen, bei welchen Tätigkeiten der Verbrauch steigt. Normalerweise ist das der "Tick" einer CPU selbst und die Kommunikation über Bus.
Und du musst in der Lage sein das übliche Rauschen/Noise zu berücksichtigen.

Irgendwann liegen auch Daten im Klartext vor, die dann kurz verarbeitet und wieder aus dem speicher gelöscht, oder wo der Speicher wird verschlüsselt wird.
Solange sich nur Maschinen damit befassen müssen, gibt es wenig Grund Energie darauf zu verwenden etwas in Klartext zu wandeln. Aber selbst wenn: Pro Tick und Kommunikation über Bus misst du abstrakte Datengrößen (um es mal GANZ einfach zu halten).
Gehen wir von Maschinenwörtern aus, so transportierst du also Bitmuster - nicht einzelne Bits. Es ist also nicht so, dass du die Verbrauchsspannung wie einen binären Morsecode lesen kannst..
Aber gehen wir davon aus, dass irgendwann irgendwo im Speicher (üblicherweise Flash) Daten im Klartext liegen (die durchaus als 64Bit Doppel-DWORD (Oder LWORD, wie es in der Industrie heisst) geschrieben werden).
Aber was nützt dir das? Gespeichert wird in Form elektrischer Ladungen und solange nichts rein- oder raus geht, passiert da nichts was du sinnvoll messen kannst.


Aber - ich bin kein Elektroniker und das mag alles nicht auf dem neuesten Stand sein. Soweit ich das verfolgt habe, geht/ging jedenfalls immer darum, durch das Messen von Emissionen oder Verbrauchsspannung Annahmen zu treffen, die es ermöglichen sollen Aussagen über die Beschaffenheit von Schlüsseln zu treffen. Das Resultat war dann die Tatsache dass man die maximale Anzahl an Versuchen einer Bruteforceattacke auf ein erträgliches Maß reduziert - welches aber auch dann noch oftmals ein rein akademisches Thema war denn das bedeutete nicht unbedingt dass man in praktikablen Zeiträumen Angriffe fahren kann.

Afaik ist man aber bei der Identifizierung von Netzwerktraffic da sehr viel erfolgreicher. Ebenso durch das messen von Emissionen.


Wenn du dich da reinschaffst, waere es prima wenn du uns erleuchtendes Material spendierst ;)
 
Shalec hat gesagt.:
Aber mal aus Erfahrung gesprochen, wenn jemand einen Sidechannel-Angriff gemacht hat: Wie viele Messungen waren ca. notwendig um überhaupt eine Info zu entlarven?
Schon alleine die Theorie gibt eine Mindestanzahl an Messungen vor. Das was die dort offenbar benutzen ist Differential Power Analysis. Ohne davon wirklich Ahnung zu haben, geht ja aus dem Paper hervor, dass du mindestens 256 Messungen von unterschiedlichen Inputs brauchst, um überhaupt die statistischen Korrelationsalgorithmen durchführen zu können. Die Mehrfachverwendung von Messungen an unterschiedlichen Smartcards in unterschiedlichen Abständen stelle ich mir auch schwierig vor. Dazu kommen noch Unterschiede in den EM-Störungen, je nachdem wo man sich gerade befindet und welche Geräte neben einem stehen.
Wenn dich die Frage wirklich interessiert, wirst du nicht drum rumkommen dich mit Signalverarbeitung und evtl. auch Informationstheorie zu beschäftigen.

Des weiteren sind die Entwickler dieser Mikrochips ja auch nicht blöd und haben dementsprechend die Möglichkeit Verteidigungsmechanismen einzubauen. Praktisch wird das also alles sehr schwierig.

€dit: Etwas zu endgültig klingende Schlussfolgerungen abgemildert
 
Zuletzt bearbeitet:
Ich bin davon ausgegangen, dass evtl. noch andere Angriffe existieren, da ich von den Grundlagen wenig bis keine Ahnung habe. Auch findet man absolut keine Bücher, die diese Themen thematisieren. Angenommen der Angreifer ist in der Lage die EM-Störungen zu korrigieren und kann quasi unter Laborbedingungen eine Messung durchführen. (Idealfall) Nun würde mich entsprechend nur interessieren, wie viele Messungen im absoluten Worst-Case erforderlich sind. D.h. wie viele AES-Operationen mit gleichem Key muss ich beobachten, um den Key zu regenerieren. Wie ändert sich das ganze, wenn ich den Plain- und Ciphertext kenne? ...

Ich habe bislang nur herausgefunden, dass es nicht verallgemeinerbar ist, wegen der unterschiedlichen Hardware. Aber mich interessiert nur ein Fall: AES Implementation von Behörde, wie BSI, NIST, ... veröffentlicht, Hardware erfüllt den Worst-Case.

Ich kann mir kaum Gedanken dazu machen, da mir eben die dafür explizit notwendigen Grundlagen fehlen :) Daher setze ich ein wenig auf das Gruppenwissen.
 
Hey,
ich finde das Thema auch sehr interessant, habe aber gerade wegen Prüfungszeit nicht so wirklich Zeit mich da einzulesen um dir deine Frage wirklich vollständig beantworten zu können. Aber falls du Zeit und Lust hast gibt es denk ich genug Material im Netz:
DEF CON 23 - Colin Flynn - Dont Whisper my Chips: Sidechannel and Glitching for Fun and Profit - YouTube
Knacken von AES mittels eines ChipWhisperers - Piece of scake (Seitenkanalattacke Analyse 100) - YouTube
https://link.springer.com/content/pdf/10.1007/s13389-011-0006-y.pdf

Shalec hat gesagt.:
Aber mich interessiert nur ein Fall: AES Implementation von Behörde, wie BSI, NIST, ... veröffentlicht, Hardware erfüllt den Worst-Case.
Naja, wo beginnt der WorstCase und wo hört er wieder auf. Zumindest bei RSA ist es glaub ich bei einer richtig schlechten Implementation sogar möglich durch das Angucken des Spannungsverlaufs auf dem Oszilloskop den Private Key auszulesen. Keine Ahnung ob das bei AES auch geht.

Kannst ja mal gucken obs in deiner Region nen Hackerspace oder so mit Leuten gibt die Ahnung davon haben. So wie ich die meisten Frickler kenne, erzählen die dir gerne was darüber :D
 
Nochmal als Rückmeldung dazu: BSI empfiehlt sicherheitsrelevanten Funktionen auf geprüfter Kryptohardware durchzuführen. Dies können CryptoUnits in µC oder Smartcards sein. Eine genaue Empfehlung, wie ein System beschaffen sein muss, kann nicht ausgestellt werden. Es ist immer vom Einzelfall abhängig.


Interessante Angriffe, sind Distanzangriffe. Diese werden entweder nicht, oder erst viel zu spät in Erfahrung gebracht. Der interessanteste Angriff ist für mich der, bei dem der Bildschirminhalt ohne Sicht auf den Bildschirm, reproduziert wird. Eine Frage stellt sich dabei für mich: Ist bei Handheld-Screens (sagen wir 1-2 Zeiler mit 256 Bit pro Zeile) ein solcher Angriff möglicher Weise erfolgreich?

Beim AES_GCM kommt die zusätzliche Sicherheit vom GHASH, der als Prüfsumme zur Integrität dient. Ansonsten ist es ein normaler AES im Counter Mode. Soweit ich mich belesen konnte, sind Angriffe bereits nach ca. 6-8 AES-Durchgängen mit gleichem P,C und K erfolgreich gewesen, womit dann die Seitenkanalkomplexität enorm fällt. 8 Durchläufe entsprechen ca 3 Bit. Wie genau dieser Angriff aussieht und warum dieser gerade so schnell erfolgreich war, kann ich derzeitig nicht wiedergeben.

Man sollte sich also die Frage, bzgl. der Forschung, stellen: Mit welchen Materialien kann ich in Kosten/Nutzen Ralation eine angemessene Sicherheit für e-Felder erzeugen? Dazu wird es wohl nötig sein, überhaupt ein Maß zu definieren, welches garantiert in Abhängigkeit der Feldstärke stehen wird.
 
Zurück
Oben