asfws 2013 - rump session - sécurité d’un token otp nicolas ruff
TRANSCRIPT
Sécurité d'un token hardware
Nicolas RUFF
EADS Innovation Works
nicolas.ruff(à)eads.net
Une cible bien connue de l'ASFWS
Démontage
• 4 pins évidentes: VCC, GND, DATA, CLK
• Des pastilles
• Pas de référence visible
Décapsulation
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
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)
Documentation officielle
Connect the dots
CLK VCC
GND DATA
A5
A2
A1
A0
A6
A4RES
OSC1
OSC3
(A3)
A3
VSS
VDD
Connect the dots
Lecture du composant
• Le programmateur Elnec supporte les microcontrôleurs Holtek
Lecture du composant
• … mais le "code protection bit" est à 1
– Seule une zone de données semble lisible
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 ?
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
Extraction du code
• Si vous voulez m'aider à chercher le fusible …
– http://commons.wikimedia.org/wiki/File:HOLTEK_HT49R50A-1_A217K0092.jpg
HYPOTHÈSES …A partir de ce point, tout n'est qu'
• 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
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é