Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen
Demonstrieren Sie einen Cache-Timing-Angriff auf eine Implementierung ohne konstante Laufzeit.
Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein Timing-Angriff?
Ein Timing-Angriff ist ein Seitenkanalangriff, bei dem ein Angreifer misst, wie lange kryptografische Operationen dauern, um geheime Daten abzuleiten. Selbst Unterschiede im Nanosekundenbereich können Schlüsselbits preisgeben.
Warum die Ausführungszeit Geheimnisse preisgibt
Verzweigungen und Speicherzugriffe innerhalb von Kryptocode hängen oft von geheimen Werten ab. Eine Schleife, die bei einem Nullbit vorzeitig beendet wird, läuft schneller – der Angreifer misst diesen Unterschied.
Cache-Timing-Angriffe auf AES
Klassische AES-Tabellenzugriffe treffen CPU-Cache-Zeilen, deren Adressen von den Schlüsselbytes abhängen. Mit Werkzeugen wie Flush+Reload kann ein Angreifer beobachten, auf welche Cache-Zeilen zugegriffen wurde.
Bleichenbachers RSA-Timing-Orakel
Bleichenbachers Angriff von 1998 nutzte Laufzeitunterschiede bei der Validierung des PKCS#1-v1.5-Paddings aus. Durch Millionen gewählter Chiffretexte konnte ein 1024-Bit-RSA-Privatschlüssel wiederhergestellt werden.
Timing-Angriffe aus der Ferne
Selbst über ein Netzwerk lassen sich Laufzeitunterschiede im Submillisekundenbereich mit genügend Stichproben messen. Lucky13 nutzte das Timing des CBC-MACs in TLS über das Internet aus.
Zeitmessung in Python
Verwenden Sie time.perf_counter_ns() für eine Auflösung im Nanosekundenbereich. Um einen anfälligen Vergleich zu demonstrieren:
import time
def vulnerable_compare(a, b):
for x, y in zip(a, b):
if x != y:
return False
return len(a) == len(b)
start = time.perf_counter_ns()
vulnerable_compare(b"secret_key_here", b"wrong_key_xxxxx")
elapsed = time.perf_counter_ns() - start
print(f"Elapsed: {elapsed} ns")Ein Timing-Orakel simulieren
Ein Timing-Orakel gibt zurück, ob eine Vermutung korrekt ist, und verrät zusätzlich Informationen über die Laufzeit. Durch Messen, welche Vermutung vor der Rückgabe von False am längsten dauert, können wir ein Geheimnis Byte für Byte wiederherstellen.
Statistische Analyse von Timing-Daten
Einzelmessungen sind verrauscht. Angreifer sammeln für jeden Kandidaten Tausende von Stichproben und verwenden statistische Tests (t-Test, Welch-Test), um das Signal vom Rauschen zu unterscheiden.
Mangers Angriff auf OAEP
Im Jahr 2001 zeigte Manger, dass selbst OAEP-gepolstertes RSA Informationen preisgibt, wenn die Implementierung zwischen „erstes Byte ist null“ und anderen Fehlern anhand unterschiedlicher Laufzeiten unterscheidet.
Beispiele aus der Praxis
OpenSSL, GnuTLS und NSS hatten bereits Timing-Angriffs-CVEs. Der Lucky13-TLS-Angriff (CVE-2013-0169) betraf zum Zeitpunkt seiner Veröffentlichung praktisch jede TLS-Bibliothek.
Wissensprüfung
Welche statistische Technik hilft Angreifern, das Timing-Signal vom Messrauschen zu unterscheiden?
Zusammenfassung der Lektion
Timing-Angriffe extrahieren kryptografische Geheimnisse, indem sie Unterschiede in der Ausführungszeit messen. Sie funktionieren lokal (Cache) oder aus der Ferne (Netzwerk). Statistische Analysen trennen das Signal vom Rauschen. Die Gegenmaßnahme ist Laufzeit-unabhängiger Code – behandelt in der Lektion zu Gegenmaßnahmen.
Häufig gestellte Fragen
Ist die Lektion „Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen“ kostenlos?
Ja — der vollständige Text von „Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen“?
Demonstrieren Sie einen Cache-Timing-Angriff auf eine Implementierung ohne konstante Laufzeit. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cryptology Academy zu starten?
Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Timing-Angriffe: Schlüssel aus der Ausführungszeit gewinnen
- Seitenkanalanalyse des Stromverbrauchs: SPA und DPA
- Elektromagnetische und akustische Seitenkanäle
- Gegenmaßnahmen: Maskierung, Blinding und Code mit konstanter Laufzeit