Faulty Hardware Seminar on Mathematical Weaknesses of Cryptographic Systems Martin Heistermann July 17, 2013
Motivation: Beispielszenario Smartcard zur Authentifizierung Geheimnis darf nicht kopierbar sein Algorithmen und Protokolle sicher Korrekt implementiert Gegen Timing- und Sidechannel-Angriffe gesichert Selbstzerstörung beim Öffnen Ist das sicher?
Motivation: Beispielszenario Smartcard zur Authentifizierung Geheimnis darf nicht kopierbar sein Algorithmen und Protokolle sicher Korrekt implementiert Gegen Timing- und Sidechannel-Angriffe gesichert Selbstzerstörung beim Öffnen Ist das sicher? Nein! Smartcard kann sich verrechnen.
Idee Angriff auf Implementierung, nicht auf Algorithmus Kein Sidechannel-Angriff Fehlerhafte Ergebnisse durch Hardware-Fehler Fehler können geheime Daten verraten!
Fehlerquellen Natürliche Ursachen CPU-Bugs ( F00F -Bug) RAM: 2 5 Bitfehler / h bei 8 GB RAM (Google, 2009) Fault Injection Temperatur Spannungsversorgung (Über-, Unterspannung, Glitches) Takt (Übertaktung, Glitches) Laser Ionisierende Strahlung...
Angriffsszenarien Zertifizierungsstellen (z.b. SSL-CA) Smartcards (EC-Karten, Ausweise) Autos (Türschloss, Wegfahrsperre) TPM-Module Geldautomaten Spielekonsolen Software Reverse Engineering...
Beispiele verwundbarer Cryptosysteme RSA: Eine falsche RSA-CRT-Signatur Faktorisierung O(log 2 n) Paare (m, m d ): d berechenbar m e, mê m berechenbar ( 5 faults) Fiat-Shamir-Authentifizierung DES: 50-200 Ciphertexte Key berechenbar, bis auf 3 reduzierbar AES: 4kb Ciphertext RC4 (?) Unbekannte Algorithmen...
Beispiele verwundbarer Cryptosysteme RSA: Eine falsche RSA-CRT-Signatur Faktorisierung O(log 2 n) Paare (m, m d ): d berechenbar m e, mê m berechenbar ( 5 faults) Fiat-Shamir-Authentifizierung DES: 50-200 Ciphertexte Key berechenbar, bis auf 3 reduzierbar AES: 4kb Ciphertext RC4 (?) Unbekannte Algorithmen...
RSA-Cryptosystem RSA-Cryptosystem Öffentlich: n, e ( encrypt ) Geheim: p, q, d ( decrypt ) Verschlüsseln: m = x e mod n Entschlüsseln: x = m d mod n (auch signieren)
Theorie: Chinesischer Restsatz (CRT) Chinesischer Restsatz (CRT) n 1,..., n k paarweise teilerfremd a 1,..., a k ganze Zahlen = x : i : x a i mod n i Berechnung von x ist einfach
RSA-Signatur Theorie: RSA-CRT s = h d mod n RSA-Signatur mit CRT a 1 = h d a 2 = h d mod p mod q s = CRT(a 1, a 2, p, q, q 1 ) } {{ } secret CRT() : 3 Additionen, 2 Multiplikationen 4 schneller
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 )
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 ) Angriff: ŝ und s bekannt
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 ) Angriff: ŝ und s bekannt (s ŝ) = 0 mod p (s ŝ) 0 mod q p = gcd(n, s ŝ)
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 ) Angriff: ŝ und s bekannt (s ŝ) = 0 mod p (s ŝ) 0 mod q p = gcd(n, s ŝ) Eine einzige fehlerhafte Signatur reicht!
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 ) Angriff: ŝ und h bekannt
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 ) Angriff: ŝ und h bekannt ŝ e = h mod p ŝ e h mod q p = gcd(n, ŝ e h)
Angriff: Fehlerhafte RSA-CRT-Signatur (Boneh 97) Fehlerhafte Signatur a 1 = h d mod p â 2 h d mod q ŝ = CRT(a 1, â 2, p, q, q 1 ) Angriff: ŝ und h bekannt ŝ e = h mod p ŝ e h mod q p = gcd(n, ŝ e h) Eine einzige fehlerhafte Signatur reicht!
Fault-Injection-Methoden Zeitlich lokalisiert: Laser, Spannung Räumlich lokalisiert: Laser, mehrere Spannungsversorgungs-Anschlüsse Konstant: Temperatur Aufwand: Glühlampe vs. Synchrotron
Fault Injection in der Praxis Tatsächlich auftretende Fehler bei Unterspannung (ARM9-CPU, Barenghi 10): Fehlerhaftes Laden aus dem RAM: Flip-Down Auch bei Instruktionen! (z.b. bne beq)
Demo Angriffsziel: 3e-Board mit ATmega8A Angriffs-Hardware: ab 10e Code 1 bigint x, msg =..., signkey=...; 2 while (true) { 3 s = sign_rsa_crt(msg, signkey); 4 uart_send(s); 5 }
26.3 Speed Grades ATmega8A Datasheet Figure 26-1. Maximum Frequency vs. Vcc 16 MHz 8 MHz Safe Operating Area 2.7V 4.5V 5.5V ATmega8A [DATASHEET] 8159E AVR 02/2013 227
26.3 Speed Grades ATmega8A Datasheet Figure 26-1. Maximum Frequency vs. Vcc 16 MHz 8 MHz Safe Operating Area 2.7V 4.5V 5.5V ATmega8A [DATASHEET] 8159E AVR 02/2013 227
Einleitung Theorie Praxis Demo Prototyp Gegenmaßnahmen Zusammenfassung
Einleitung Theorie Praxis Demo Gegenmaßnahmen Zusammenfassung Demo-Aufbau Bus Pirate USB Vcc 5V ATmega8A Vcc ~2.1V UART ~2V UART 5V
Gegenmaßnahmen Hardware Tamper-Resistance Softwareware Ergebnis prüfen (nicht nur mehrfach berechnen) Blinding? x = (m r d ) e r 1 RSA-CRT: Shamir s Vorschlag
Gegenmaßnahmen: RSA-CRT Shamir s Vorschlag ( 97) a 1 = h d mod (p r) a 2 = h d mod (q r) a 1 mod r? = a 2 mod r s = CRT(a 1 mod p, a 2 mod q, p, q, q 1 ) } {{ } secret
Gegenmaßnahmen in der Praxis gnutls (libnettle): CRT, keine Überprüfung OpenSSL: CRT, Test auf Fehler bei Fehlschlag square-and-multiply kein erneuter Test! Seit 2010 bekannt, nie gepatcht
Zusammenfassung Fehlerhafte Ergebnisse können Crypto-Schlüssel verraten Eine falsche Signatur kann reichen Wichtig: Ergebnisse überprüfen