+ All Categories
Home > Documents > From Academia to Real World : a Practical Guide to Hitag-2 …€¦ ·  ·...

From Academia to Real World : a Practical Guide to Hitag-2 …€¦ ·  ·...

Date post: 01-May-2018
Category:
Upload: vuhuong
View: 220 times
Download: 1 times
Share this document with a friend
68
From Academia to Real World : a Practical Guide to Hitag-2 RKE System Analysis Ryad BENADJILA 1 Mathieu RENARD 2 Jos´ e LOPES-ESTEVES 2 Chaouki KASMI 2 1 [email protected] 2 ANSSI, [email protected] Symposium sur la S´ecurit´edes Technologies de l’Information et des Communications 8 juin 2017
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


Recommended