17
Sécurité d'un token hardware Nicolas RUFF EADS Innovation Works nicolas.ruff(à)eads.net

ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Embed Size (px)

Citation preview

Page 1: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Sécurité d'un token hardware

Nicolas RUFF

EADS Innovation Works

nicolas.ruff(à)eads.net

Page 2: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Une cible bien connue de l'ASFWS

Page 3: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Démontage

• 4 pins évidentes: VCC, GND, DATA, CLK

• Des pastilles

• Pas de référence visible

Page 4: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Décapsulation

Page 5: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Décapsulation

• HT49R50A-1

– Un microcontrôleur Holtek, 8 bits, spécialisé pour le pilotage LCD• http://www.holtek.com.tw/english/docum/uc/49x50.htm

• http://www.holtek.com.tw/pdf/uc/ht49x50v240.pdf

– Coût unitaire: probablement quelques centimes

Page 6: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Description du composant

• Les pastilles correspondent probablement à pins de programmation "in-circuit"

• Le protocole de programmation est référencé "ICP-1A" chez Holtek– http://www.holtek.com.tw/Chinese/tech/tool/MainPage2.aspx

• … mais apparemment non documenté

• Il utilise 11 broches– PA0 – PA6– OSC (OSC1 ou OSC3 ?)– VSS (câblé à OSC)– VDD– VPP (alias RESB ou RESET)

Page 7: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Documentation officielle

Page 8: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Connect the dots

CLK VCC

GND DATA

A5

A2

A1

A0

A6

A4RES

OSC1

OSC3

(A3)

A3

VSS

VDD

Page 9: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Connect the dots

Page 10: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Lecture du composant

• Le programmateur Elnec supporte les microcontrôleurs Holtek

Page 11: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Lecture du composant

• … mais le "code protection bit" est à 1

– Seule une zone de données semble lisible

Page 12: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Extraction du code

• Pour extraire le code, il est nécessaire de comprendre le protocole de programmation– … mais comment peut-il y avoir autant de données transférées en si

peu de cycles ?

Page 13: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Extraction du code

• Une attaque est-elle possible ?– http://www.cl.cam.ac.uk/~sps32/mcu_lock.html

✘Effacement du "code protection bit" avec un faisceau d'UV• Il faut trouver l'emplacement du fusible

• Le risque d'effacer une partie du code est important

✘Power Glitch / Clock Glitch• Les MCU Holtek sont relativement résistant contre cette

attaque

Page 14: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Extraction du code

• Si vous voulez m'aider à chercher le fusible …

– http://commons.wikimedia.org/wiki/File:HOLTEK_HT49R50A-1_A217K0092.jpg

Page 15: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

HYPOTHÈSES …A partir de ce point, tout n'est qu'

Page 16: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

• Question(s)– A quoi servent les pins documentés ?

• Injecter la seed ?– Une fois que la RAM est alimentée par la pile ?

• Relire la seed ?– Si oui: #fail …

– Quel est le protocole de communication sur ces pins ?• Requière l'accès au code du MCU

– Un brute-force du protocole semble peu réaliste

• Hypothèse(s)– Le MCU est programmé en usine par les pins non documentés

– Si les pins documentés sont liés à la programmation de la seed• Il pourrait être possible d'extraire la seed discrètement

– Avec 4 trous de la taille d'une épingle au dos du token

• Il pourrait être possible d'injecter votre propre seed– Si vous ne faites pas confiance au vendeur

Page 17: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff

Conclusion

• N'hésitez pas à contribuer

• Si vous voulez des échantillons gratuits, demandez à Sylvain

• Si vous voulez fabriquer votre propre token, cela vous coûtera probablement moins de 5€/unité