from academia to real world : a practical guide to hitag-2 …€¦ · ·...
TRANSCRIPT
From Academia to Real World :
a Practical Guide to Hitag-2 RKE System Analysis
Ryad BENADJILA1 Mathieu RENARD2
Jose LOPES-ESTEVES2 Chaouki KASMI2
[email protected] 2ANSSI, [email protected]
Symposium sur laSecurite desTechnologies de
l’Information et des
Communications
8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Controle d’acces
Controle d’acces dans le monde automobile
Pour l’ouverture/fermeture, le demarrage.
1/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Mecaniq
ue
Sm
art
-key
RK
E
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Controle d’acces
Controle d’acces dans le monde automobile
Pour l’ouverture/fermeture, le demarrage.
1/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Mecaniq
ue
Sm
art
-key
RK
E
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Controle d’acces
Controle d’acces dans le monde automobile
Pour l’ouverture/fermeture, le demarrage.
1/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Mecaniq
ue
Sm
art
-key
RK
E
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Controle d’acces
Controle d’acces dans le monde automobile
Pour l’ouverture/fermeture, le demarrage.
1/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Mecaniq
ue
Sm
art
-key
RK
E
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
RKE :
1. Communication mono-directionnelle entre la cle et l’ECU.
2. Menaces : capture, rejeu, brouillage, spoofing , . . .
2/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME
CAPTURE
TRAME
TRAME
TRAME
TRAME
TRAME
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
RKE :
1. Communication mono-directionnelle entre la cle et l’ECU.2. Menaces : capture,
rejeu, brouillage, spoofing , . . .
2/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME
CAPTURE
TRAME
TRAME
TRAME
TRAME
TRAME
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
RKE :
1. Communication mono-directionnelle entre la cle et l’ECU.2. Menaces : capture, rejeu,
brouillage, spoofing , . . .
2/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME
CAPTURE
TRAME
TRAME
TRAME
TRAME
TRAME
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
RKE :
1. Communication mono-directionnelle entre la cle et l’ECU.2. Menaces : capture, rejeu, brouillage,
spoofing , . . .
2/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME
CAPTURE
TRAME
TRAME
TRAME
TRAME
TRAME
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
RKE :
1. Communication mono-directionnelle entre la cle et l’ECU.2. Menaces : capture, rejeu, brouillage, spoofing , . . .
2/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME
CAPTURE
TRAME
TRAME
TRAME
TRAME
TRAME
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
3/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
CLEF 1
CRYPTO K1
CNTR1UID1 BTN1
AUTH1
UID1, CNTR1, BTN1, AUTH1
CLEF 2
CRYPTO K2
CNTR2UID2 BTN2
AUTH2
UID2,CNTR2,
BTN2,AUTH2
ECU
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
UID Cle Compteur Bouton
UID1 K1 11 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
3/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
CLEF 1
CRYPTO K1
CNTR1UID1 BTN1
AUTH1
UID1, CNTR1, BTN1, AUTH1
CLEF 2
CRYPTO K2
CNTR2UID2 BTN2
AUTH2
UID2,CNTR2,
BTN2,AUTH2
ECU
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
UID Cle Compteur Bouton
UID1 K1 11 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
CRYPTOK1
CNTR1UID1 BTN1
AUTH ECU =?= AUTH1
BTN1 ∈ {0,1,5,6} ?
CNTR1 ∈ [10, 10 + δ] ?
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Remote Keyless Entry
3/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
CLEF 1
CRYPTO K1
CNTR1UID1 BTN1
AUTH1
UID1, CNTR1, BTN1, AUTH1
CLEF 2
CRYPTO K2
CNTR2UID2 BTN2
AUTH2
UID2,CNTR2,
BTN2,AUTH2
ECU
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
UID Cle Compteur Bouton
UID1 K1 11 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
CRYPTOK1
CNTR1UID1 BTN1
AUTH ECU =?= AUTH1
BTN1 ∈ {0,1,5,6} ?
CNTR1 ∈ [10, 10 + δ] ?
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Usenix 2016 : attaques sur les RKE
Article Usenix 2016 � Lock It and Still Lose It - On the (In)Securityof Automotive Remote Keyless Entry Systems �.
Deux attaques presentees :
1. Volkswagen – bonne cryptographie mais cles partagees par tous lesvehicules depuis les annees 2000 !
2. PCF7946 – transpondeur de Philips/NXP utilisant l’algorithmeHitag-2. Une nouvelle attaque a ete presentee.
4/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Remote Keyless Entry
Usenix 2016 : attaques sur les RKE
Objectif : reproduire l’attaque sur PCF7946.
1. Capturer et decoder des trames radio.2. Implementer l’attaque sur Hitag-2 pour retrouver la cle secrete.3. Forger des trames valides.
Contraintes : black-box.
• Ne pas casser la voiture !• Pas d’attaque materielle sur le transpondeur PCF7946.
5/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Analyse des signaux radiofrequences
Nous devons determiner :• La frequence de la porteuse et la bande passante.• La modulation.• Le codage canal.• La structure des paquets.
Analyse white-box, informations connues.
Parametre Valeur
Frequences ISM 433 MHz
Modulation ASK/FSK
Codage canal Manchester/NRZ
Format des trames Usenix 2016
6/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Demodulation : analyse spectrale
Modulation utilisee : modulation d’amplitude (ASK).
7/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Decodage
8/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
PREAMBULE PAQUET 1 PAQUET 2
SYNC
Temps symbole
DONNEES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Decodage
8/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
PREAMBULE PAQUET 1 PAQUET 2
SYNC
Temps symbole
DONNEES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Decodage
8/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
PREAMBULE PAQUET 1 PAQUET 2
SYNC
Temps symbole
DONNEES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Decodage
8/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
PREAMBULE PAQUET 1 PAQUET 2
SYNC
Temps symbole
DONNEES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Trames PCF7946 |Demodulation |Decodage
Decodage
Resultats :• Modulation ASK.• Codage de Manchester.• Observation des invariants pour remonter aux donnees.• Utilisation de la somme de controle.
8/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
SYNC 0x0001 UID BTN CNTRL KS 10 CHK
16-bit 32-bit 4-bit 10-bit 32-bit 2-bit 8-bit
104-bit
PREAMBULE PAQUET 1 PAQUET 2
SYNC
Temps symbole
DONNEES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2
Stream cipher Philips (NXP) de la fin des annees 90.
Reverse engineering materiel en 2007.
Utilisation dans un contexte RKE :
9/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2
Stream cipher Philips (NXP) de la fin des annees 90.
Reverse engineering materiel en 2007.
Utilisation dans un contexte RKE :
9/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
SYNC 0x0001 UID BTN CNTRL KS 10 CHK
PCF7946
Hitag-2Cle
CNTRLUID BTN
CNTRH (18 bits secrets)
KS ECU =?= KS
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2
Stream cipher Philips (NXP) de la fin des annees 90.
Reverse engineering materiel en 2007.
Utilisation dans un contexte RKE :
9/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Hitag-2 k
0 47
BTN
31
CNTRHCNTRL
0
4-bit18-bit10-bit
iv
id=UID
0 31
ks=KS
0 31
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase d’intialisation
10/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
uid = uid0 . . . uid31 (32 bits) klow = k0 . . . k16 (16 bits)
Etat interne Hitag-2 (48 bits)
-1
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase d’intialisation
10/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
uid = uid0 . . . uid31 (32 bits) klow = k0 . . . k16 (16 bits)
Etat interne Hitag-2 (48 bits)
47
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3232 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3232 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
47
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 11 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 1717 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3131 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4747
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
48
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 22 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 1818 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3030 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4646 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
49
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 33 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 18 1919 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2929 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 4545 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
50
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 44 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 18 19 2020 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2828 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4444 45 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
51
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3131
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4747
0 11 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1717 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
47
C
YCLES
78
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase de randomisation
11/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1616 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv0 . . . iv31 (32 bits)
khigh = k16 . . . k47 (32 bits)
Registre a decalage
⊕
79
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase nominale
12/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
⊕L(state)
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
ks0. . .
keystream
79
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase nominale
12/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
⊕L(state)
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
ks1ks0. . .
keystream
80
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase nominale
12/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
⊕L(state)
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
ks15ks14ks13ks12ks11ks10ks9ks8ks7ks6ks5. . .
keystream
94
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : phase nominale
12/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
⊕L(state)
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
ks16ks15ks14ks13ks12ks11ks10ks9ks8ks7ks6. . .
keystream
95
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : attaque par correlation
Introduite par l’article de Usenix 2016 :
• Retrouve la cle avec 4 a 8 trames.• Reduit fortement l’espace de recherche des cles.• Scoring des candidats lie au keystream observe.
Probleme de CNTRH inconnu :
• A priori a zero en sortie d’usine.• Les auteurs proposent d’estimer l’age du vehicule.
13/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
L’algorithme Hitag-2 : attaque par correlation
Introduite par l’article de Usenix 2016 :
• Retrouve la cle avec 4 a 8 trames.• Reduit fortement l’espace de recherche des cles.• Scoring des candidats lie au keystream observe.
Probleme de CNTRH inconnu :
• A priori a zero en sortie d’usine.• Les auteurs proposent d’estimer l’age du vehicule.
13/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
Implementation de la cryptanalyse par correlation
Test sur des trames emulees.
• Notre implementation fonctionne.• La cle est retrouvee en quelques minutes.
Test sur des trames reelles (CNTRH inconnu).
• Ne converge pas vers une bonne cle sur les trames decodees . . .• Necessite d’un recalage cryptographique.
14/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
Implementation de la cryptanalyse par correlation
Test sur des trames emulees.
• Notre implementation fonctionne.• La cle est retrouvee en quelques minutes.
Test sur des trames reelles (CNTRH inconnu).
• Ne converge pas vers une bonne cle sur les trames decodees . . .
• Necessite d’un recalage cryptographique.
14/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Algorithme |Implementation
Implementation de la cryptanalyse par correlation
Test sur des trames emulees.
• Notre implementation fonctionne.• La cle est retrouvee en quelques minutes.
Test sur des trames reelles (CNTRH inconnu).
• Ne converge pas vers une bonne cle sur les trames decodees . . .• Necessite d’un recalage cryptographique.
14/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Le recalage cryptographique
Comment faire ?• Acces au vehicule mais acces difficile a l’ECU.• Pas de NDA avec NXP donc pas de datasheet ni de SDK.
Acces a des cles vierges programmables contenant le PCF7946 !
• Elles utilisent la cle usine par defaut 0x4f4e4d494b52.
15/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Le recalage cryptographique
Comment faire ?• Acces au vehicule mais acces difficile a l’ECU.• Pas de NDA avec NXP donc pas de datasheet ni de SDK.
Acces a des cles vierges programmables contenant le PCF7946 !
• Elles utilisent la cle usine par defaut 0x4f4e4d494b52.
15/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Recherche du format de iv
Recherche exhaustive d’un pattern pour les 232 iv qui realise ks a idet k fixes.
16/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Hitag-2 k
0 47
iv0 31
id=UID
0 31
ks=KS
0 31
0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000100000000000000000000000000000001100000000000000000000000000000100
...0000001010001001000010000100011100110100010000000000000001000101
...
Exh
aust
if–
232
Rea
liseks
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Differences trouvees
Explique pourquoi la cryptanalyse par correlation fonctionne mal.
17/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Hitag-2 k
0 47
BTN
31
CNTRLCNTRH
CNTRH
Fixe
Modifie peu ks0
Modification
a chaque trame
0
4-bit10-bit18-bit
iv
BTN
31
CNTRHCNTRL
0
4-bit18-bit10-bit
iv usenix
id=UID
0 31
ks=KS
0 31
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Differences trouvees
Explique pourquoi la cryptanalyse par correlation fonctionne mal.
17/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Hitag-2 k
0 47
BTN
31
CNTRL
CNTRH
CNTRH
Fixe
Modifie peu ks0
Modification
a chaque trame
0
4-bit10-bit18-bit
iv
BTN
31
CNTRHCNTRL
0
4-bit18-bit10-bit
iv usenix
id=UID
0 31
ks=KS
0 31
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Decouverte d’une contremesure ECU
Resynchronisation en champ proche a 125 KHz lors du contact.
18/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
UID1, CNTRL1 = 9, BTN1, AUTH1
ECU
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
CNTR1 = 9 < 10
BTNCNTRL’CNTRH’
10-bit18-bit
ALEATOIRE
Resyn
chron
isationE
CU
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Decouverte d’une contremesure ECU
Resynchronisation en champ proche a 125 KHz lors du contact.
18/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
UID1, CNTRL1 = 9, BTN1, AUTH1
ECU
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
CNTR1 = 9 < 10
BTNCNTRL’CNTRH’
10-bit18-bit
ALEATOIRE
Resyn
chron
isationE
CU
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Decouverte d’une contremesure ECU
Resynchronisation en champ proche a 125 KHz lors du contact.
18/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
UID1, CNTRL1 = 9, BTN1, AUTH1
ECU
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
UID Cle Compteur Bouton
UID1 K1 10 0,1,5,6
UID2 K2 200 0,1,2
. . . . . . . . . . . .
CNTR1 = 9 < 10
BTNCNTRL’CNTRH’
10-bit18-bit
ALEATOIRE
Resyn
chron
isationE
CU
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Recherche exhaustive optimisee
Necessite deux triplets (id, iv, ks) :• Recherche parmi 248 cles celle qui realise les deux keystreams.• Implementation d’un brute-forcer optimise et parallelise sur CPU et
GPU en OpenCL.
Teste sur Amazon EC2 :
Plateforme Temps
GeForce GTX 780Ti 18 heures
Instance Amazon EC2† 45 minutes
3 instances Amazon EC2† 15 minutes
†p2.16xlarge : 16 Tesla K80, 128 CPU
Quid de la partie inconnue CNTRH ?
19/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Recherche exhaustive optimisee
Necessite deux triplets (id, iv, ks) :• Recherche parmi 248 cles celle qui realise les deux keystreams.• Implementation d’un brute-forcer optimise et parallelise sur CPU et
GPU en OpenCL.
Teste sur Amazon EC2 :
Plateforme Temps
GeForce GTX 780Ti 18 heures
Instance Amazon EC2† 45 minutes
3 instances Amazon EC2† 15 minutes
†p2.16xlarge : 16 Tesla K80, 128 CPU
Quid de la partie inconnue CNTRH ?
19/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Recherche exhaustive optimisee
Necessite deux triplets (id, iv, ks) :• Recherche parmi 248 cles celle qui realise les deux keystreams.• Implementation d’un brute-forcer optimise et parallelise sur CPU et
GPU en OpenCL.
Teste sur Amazon EC2 :
Plateforme Temps
GeForce GTX 780Ti 18 heures
Instance Amazon EC2† 45 minutes
3 instances Amazon EC2† 15 minutes
†p2.16xlarge : 16 Tesla K80, 128 CPU
Quid de la partie inconnue CNTRH ?
19/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Cles Hitag-2 equivalentes
Compensation par masquage durant la phase de randomisation.
20/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0
⊕
⊕
1
⊕
⊕
2
⊕
⊕
3
⊕
⊕
4
⊕
⊕
5
⊕
⊕
6
⊕
⊕
7
⊕
⊕
8
⊕
⊕
9
⊕
⊕
10
⊕
⊕
11
⊕
⊕
12
⊕
⊕
13
⊕
⊕
14
⊕
⊕
15
⊕
⊕
16
⊕
⊕
17
⊕
⊕
18
⊕
⊕
19
⊕
⊕
20
⊕
⊕
21
⊕
⊕
22
⊕
⊕
23
⊕
⊕
24
⊕
⊕
25
⊕
⊕
26
⊕
⊕
27
⊕
⊕
28
⊕
⊕
29
⊕
⊕
30
⊕
⊕
31
⊕
⊕
M(masque)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
fa(i) = (0xA63C)i fb(i) = (0xA770)i fb(i) = (0xA770)i fb(i) = (0xA770)i fa(i) = (0xA63C)i
fc(i) = (0xD949CBB0)i
iv = iv ⊕M
khigh = khigh ⊕M
Registre a decalage
⊕
47
C
YCLES
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Cles Hitag-2 equivalentes
Existence de multiples cles equivalentes produisant le memekeystream a iv masque.
Une recherche exhaustive avec des iv equivalents produit une cleequivalente k masquee avec CNTRH.
Nul besoin de retrouver la vraie cle k pour forger des trames valides !
21/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Hitag-2
k
0 47
= kBTN
31
CNTRLCNTRH
0
4-bit10-bit18-bit
iv
k0...15 k16...33 ⊕M1 k34...47
0 47
16-bit 18-bit 14-bit
= k1
31
CNTRH⊕M1
0
k0...15 k16...33 ⊕M2 k34...47
0 47
= k2
31
CNTRH⊕M2
0
k0...15 k16...33 ⊕M3 k34...47
0 47
= k3
31
CNTRH⊕M3
0
id=UID
0 31
ks=KS
0 31
...
...
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Cles Hitag-2 equivalentes
Existence de multiples cles equivalentes produisant le memekeystream a iv masque.
Cas particulier ou le masque est CNTRH.
Une recherche exhaustive avec des iv equivalents produit une cleequivalente k masquee avec CNTRH.
Nul besoin de retrouver la vraie cle k pour forger des trames valides !
21/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
Hitag-2
k
0 47
= kBTN
31
CNTRLCNTRH
0
4-bit10-bit18-bit
iv
k0...15 k16...33 ⊕ CNTRH k34...47
0 47
16-bit 18-bit 14-bit
= k31
000000000000000000
0
id=UID
0 31
ks=KS
0 31
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Cles Hitag-2 equivalentes
Existence de multiples cles equivalentes produisant le memekeystream a iv masque.
Une recherche exhaustive avec des iv equivalents produit une cleequivalente k masquee avec CNTRH.
Nul besoin de retrouver la vraie cle k pour forger des trames valides !
21/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
SYNC 0x0001 UID BTN1 CNTRL1 KS1 10 CHK1
Trame RF capturee 1
BTN1CNTRL1
iv1000000000000000000
SYNC 0x0001 UID BTN2 CNTRL2 KS2 10 CHK2
Trame RF capturee 2
BTN2CNTRL2
iv2000000000000000000
k = k ⊕ (016‖CNTRH‖014)
Rechercheexhaustive
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Cles Hitag-2 equivalentes
Existence de multiples cles equivalentes produisant le memekeystream a iv masque.
Une recherche exhaustive avec des iv equivalents produit une cleequivalente k masquee avec CNTRH.
Nul besoin de retrouver la vraie cle k pour forger des trames valides !
21/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Nouvelles attaques 1/2
Sans resynchronisation ECU.
22/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME1
TRAME2
CAPTURE
k = Recherche exhaustive 248
⇒ 15 minutes EC2
TRAMES
k
≤ (1024− CNTRL) trames OK> (1024− CNTRL)⇒ incrementation
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Nouvelles attaques 1/2
Sans resynchronisation ECU.
22/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME1
TRAME2
CAPTURE
k = Recherche exhaustive 248
⇒ 15 minutes EC2
TRAMES
k
≤ (1024− CNTRL) trames OK> (1024− CNTRL)⇒ incrementation
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Nouvelles attaques 1/2
Sans resynchronisation ECU.
22/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
TRAME1
TRAME2
CAPTURE
k = Recherche exhaustive 248
⇒ 15 minutes EC2
TRAMES
k
≤ (1024− CNTRL) trames OK> (1024− CNTRL)⇒ incrementation
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Nouvelles attaques 2/2
Avec resynchronisation ECU.
23/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
1 TRAME
CAPTURE
k
k k′
k′ = Recherche echaustive 218
⇒ 15 minutes sur PC
TRAME
k′
≤ (1024− CNTRL) trames OK> (1024− CNTRL)⇒ incrementation
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Nouvelles attaques 2/2
Avec resynchronisation ECU.
23/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
1 TRAME
CAPTURE
k
k k′
k′ = Recherche echaustive 218
⇒ 15 minutes sur PC
TRAME
k′
≤ (1024− CNTRL) trames OK> (1024− CNTRL)⇒ incrementation
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
|Cles vierges |Differences |Attaques
Nouvelles attaques 2/2
Avec resynchronisation ECU.
23/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
1 TRAME
CAPTURE
kk k′
k′ = Recherche echaustive 218
⇒ 15 minutes sur PC
TRAME
k′
≤ (1024− CNTRL) trames OK> (1024− CNTRL)⇒ incrementation
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
Conclusion
Resultats :
• Differentes implementations RKE Hitag-2.• Contremesure par resynchronisation avec l’ECU.• Cout de l’attaque = 10 + 90 + 45 e.• 2 trames RF, +1 avec la contremesure ECU.
Cryptographie proprietaire obsolete et cassee a proscrire.
24/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017
|Introduction |Contexte |Analyse radio |Hitag-2 |Nouvelles attaques |Conclusion
Conclusion
Resultats :
• Differentes implementations RKE Hitag-2.• Contremesure par resynchronisation avec l’ECU.• Cout de l’attaque = 10 + 90 + 45 e.• 2 trames RF, +1 avec la contremesure ECU.
Cryptographie proprietaire obsolete et cassee a proscrire.
24/24 RKE Hitag-2 - SSTIC 2017 - 8 juin 2017