ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff
-
Upload
application-security-forum-western-switzerland -
Category
Technology
-
view
420 -
download
0
Transcript of ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff
![Page 1: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/1.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/2.jpg)
Une cible bien connue de l'ASFWS
![Page 3: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/3.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/4.jpg)
Décapsulation
![Page 5: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/5.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/6.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/7.jpg)
Documentation officielle
![Page 8: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/8.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/9.jpg)
Connect the dots
![Page 10: ASFWS 2013 - Rump Session - Sécurité d’un token OTP Nicolas ruff](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/10.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/11.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/12.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/13.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/14.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/15.jpg)
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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/16.jpg)
• 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](https://reader038.fdocuments.fr/reader038/viewer/2022103114/555a8759d8b42abb628b4f19/html5/thumbnails/17.jpg)
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é