❌

Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraĂźchir la page.
À partir d’avant-hierFlux principal

Degate : espionner un CPU depuis les waters

Degate est un logiciel libre pour faire de l'ingénierie inverse sur les processeurs.

Pour le présenter, Dorian Bachelot, mainteneur du projet, a accepté de répondre à nos questions.

Logo Degate

Sommaire

Présentation

Entretien avec Dorian Bachelot

Présentation

Qui ĂȘtes-vous ? Quel est votre parcours ?

C’est sĂ»rement trĂšs « bateau Â», mais comme beaucoup je suis avant tout un passionnĂ© d’informatique et d’électronique. J’ai commencĂ© Ă  programmer dans mes annĂ©es collĂšge (dĂ©but des annĂ©es 2010) et suis rapidement arrivĂ© Ă  dĂ©couvrir Linux ainsi que d’autres galaxies (C++, git, virtualisation, reverse engineering
). Par la suite j’ai eu la chance de rĂ©aliser un diplĂŽme d’ingĂ©nieur Ă  l’ESIEA (Ă©cole d’ingĂ©nieur gĂ©nĂ©raliste sur Laval) qui m’a permis de dĂ©couvrir de nombreux domaines comme l’électronique embarquĂ©e, la cybersĂ©curitĂ© et l’intelligence artificielle. Comme beaucoup, j’ai un faible pour les domaines complexes et devoir me limiter Ă  une seule spĂ©cialitĂ© pour mes Ă©tudes ne m’allait pas trop. C’est sur ce dernier point que dĂ©marre l’aventure Degate au cĂŽtĂ© du laboratoire de recherche en cybersĂ©curitĂ© de mon Ă©cole. Cette derniĂšre proposait en effet un format « espoir recherche Â» permettant de creuser un sujet de recherche en plus des cours. Mon sujet a justement portĂ© sur Degate, puisque comme nous allons le voir la rĂ©tro-ingĂ©nierie matĂ©rielle a l’avantage de toucher autant Ă  l’électronique, qu’à la physique, la cybersĂ©curitĂ© et l’intelligence artificielle !

Quant Ă  aujourd’hui, aprĂšs avoir travaillĂ© sur le sujet de la rĂ©tro-ingĂ©nierie matĂ©rielle pendant presque 3 ans (en publiant 5 articles dans Hackable et en travaillant sur Degate) et avoir obtenu mon diplĂŽme, je suis Tech Lead R&D Cyber/IA chez Neverhack (on vient de lever 100 millions d’euros). J’ai pu en effet garder une dualitĂ© de spĂ©cialitĂ©, Ă  travers la cybersĂ©curitĂ© et l’intelligence artificielle, principalement grĂące Ă  cette aventure d’espoir recherche (et donc en partie de Degate) 1.

Est-ce que vous ĂȘtes parent de Roselyne ?

Et non, du tout, mais bien vu ;)

Qu’est-ce que Degate ?

En une phrase : Degate est un logiciel open source (GPL-3.0) et multiplateforme aidant ses utilisateurs à effectuer de la rétro-ingénierie sur des puces de silicium 2.

Maintenant, pour donner un peu de contexte, le dĂ©veloppement de Degate a commencĂ© dĂšs 2008 avec la thĂšse de master de Martin Schobert 3. Jusqu’à la fin de cette derniĂšre en 2011, Martin a pu faire Ă©voluer la solution et collaborer avec d’autres chercheurs pour l’utiliser sur des sujets de cybersĂ©curitĂ©. Par exemple, Degate a pu ĂȘtre utilisĂ© 4 pour aider Ă  la rĂ©tro-ingĂ©nierie de la puce RFID MIFARE Classic de NXP (le dĂ©veloppement de Degate a d’ailleurs pour source ce cas prĂ©cis). Par la suite, les chercheurs Karsten Nohl et Starbug ont pu trouver une faille cryptographique dans la puce permettant d’outrepasser toutes les sĂ©curitĂ©s (on parle ici d’un impact Ă©conomique Ă©norme pour NXP) 5.

Degate est donc un logiciel avec une histoire riche de plus de 10 ans, qui a dĂ©jĂ  permis d’avoir un impact dans l’industrie (et, suite au cas MIFARE Classic, dans la sociĂ©tĂ©). Il est aujourd’hui le seul bastion permettant Ă  n’importe qui (ou presque) d’effectuer de la rĂ©tro-ingĂ©nierie matĂ©rielle sur des puces.

Pourquoi dis-tu que c’est le seul bastion ?

On peut voir ça sous diffĂ©rents angles, mais je parle d’unique bastion car Degate est le seul logiciel disponible Ă  la fois gratuit, accessible (traduction de l’interface, documentation, etc.) et extensible (car open source). Or, les alternatives payantes sont gĂ©nĂ©ralement vendues sous conditions et donc difficilement accessibles. Seulement, comme je l’ai expliquĂ© (modulo une dĂ©formation par mon parcours), la sĂ©curitĂ© d’aujourd’hui passe, pour moi, forcĂ©ment par une utilisation de la rĂ©tro-ingĂ©nierie matĂ©rielle beaucoup plus massive pour valider tout matĂ©riel critique. Et Degate n’est pas qu’un logiciel (surtout Ă  sa crĂ©ation en 2008, c’était plus un outil ou un dĂ©monstrateur), c’est aussi une preuve d’importance (MIFARE Classic) et des ressources en ligne (wiki, articles, thĂšse, etc.). Il ne faut pas seulement voir le logiciel (avec ses dĂ©fauts), mais plutĂŽt l’approche : essayer de rendre plus accessible la rĂ©tro-ingĂ©nierie matĂ©rielle. Je ne clame pas que Degate rĂ©ussit Ă  remplir cette vision, mais je crois que nous sommes quasiment les seuls Ă  essayer depuis maintenant plus de 10 ans (outre les projets visant Ă  « rĂ©tro-ingĂ©nierier Â» certaines puces en particulier, sans prendre le prisme de la sĂ©curitĂ© et de l’accessibilitĂ©).

Comment ça fonctionne ?

Avant tout il faut comprendre les contraintes et mĂ©thodes permettant d’effectuer de la rĂ©tro-ingĂ©nierie sur un objet aussi petit et complexe qu’une puce de silicium. Quand on parle d’une puce, on parle d’un agencement de milliards de transistors sur quelques millimĂštres et de leurs liens rĂ©partis sur plusieurs couches. La premiĂšre Ă©tape est alors de dĂ©finir un objectif, pouvant ĂȘtre la reconstruction d’un algorithme implĂ©mentĂ© matĂ©riellement (et donc dans une zone rĂ©duite de la puce) ou encore la reconstitution complĂšte du fonctionnement de la puce, par exemple pour construire un simulateur. Ensuite, il faut rĂ©ussir Ă  rĂ©cupĂ©rer des images de la puce et de toutes ses couches (images en 2D ou 3D, un de mes articles dans Hackable aborde le sujet 6). Toutes les mĂ©thodes permettant d’obtenir ces images impliquent un processus destructeur pour la puce. Cela passe par exemple par un processus de polissage itĂ©ratif et la prise de photographies (attention, on parle d’un exercice trĂšs complexe puisqu’une couche de silicium c’est extrĂȘmement fin, et trop polir implique de devoir recommencer sur une nouvelle puce). On peut aussi prendre une approche chimique (utilisation d’acide pour attaquer couche par couche) ou laser. Sans dĂ©velopper beaucoup plus, ce processus est le plus important, car c’est avec ces photos trĂšs hautes rĂ©solutions que l’on va pouvoir dĂ©buter l’analyse de la puce.

C’est lĂ  que Degate rentre en jeu, son objectif est de permettre d’utiliser les images obtenues, de les importer dans le logiciel (on parle gĂ©nĂ©ralement d’images de plusieurs Giga, voire Tera, tellement la rĂ©solution et leur taille sont grandes) puis de commencer l’analyse. Ensuite, l’utilisateur peut analyser les parties de la puce en partant de la couche la plus basse, celle avec les transistors, et ainsi reconstruire les portes logiques (c’est ici que des connaissances en physique et en Ă©lectronique sont importantes, il faut savoir lire Ă  travers les transistors !). Comme vous vous en doutez, effectuer l’analyse de chaque transistor quand il peut y en avoir des milliards serait trop fastidieux, et Degate facilite le processus. Ce dernier propose en effet de construire une bibliothĂšque de portes logiques reconstituĂ©e depuis une zone de l’image de la puce, et puisque l’agencement des transistors ne change pas pour chaque porte logique, on peut alors automatiser la recherche et reconstitution de ces portes via des algorithmes de reconnaissance d’images. Il ne reste alors Ă  l’utilisateur qu’à analyser les connexions entre les portes logiques toujours grĂące aux images de la puce (couches supĂ©rieures, les liaisons entre couches sont appelĂ©es des « Via Â») et ainsi reconstituer les algorithmes utilisĂ©s par la puce. Degate permet lĂ  encore d’automatiser une partie du processus en aidant Ă  la reconnaissance des connexions et en proposant d’exporter toute l’analyse dans un langage type VHDL (permettant de simuler le fonctionnement de la puce, si l’analyse a Ă©tĂ© rĂ©ussie).

Degate ne permet donc pas d’automatiser tout le processus de rĂ©tro-ingĂ©nierie, et une expertise humaine reste nĂ©cessaire (dĂ©capage de la puce, prise des photos, analyses des portes logiques puis des connexions), mais il permet de gagner un temps non nĂ©gligeable sur l’analyse en automatisant plusieurs Ă©tapes. Pour cela, Degate implĂ©mente des algorithmes de reconnaissances d’images, supporte l’importation d’images extrĂȘmement grandes (plusieurs millions de pixels de large), vous aide dans la navigation des images et couches, vous permet d’identifier les portes logiques formĂ©es par des transistors et bien plus.

Si le sujet vous intĂ©resse, je peux vous donner les rĂ©fĂ©rences suivantes : on peut citer Ken Shirriff qui est LA personne Ă  suivre sur le sujet (auteur de beaucoup d’analyses sur des puces historiques 7, comme la Intel 8086 ou la fameuse Z80), ou encore la communautĂ© Visual 6502 8 qui ont rĂ©tro-ingĂ©nieriĂ© plusieurs puces (en partant de simples images pour finir par la crĂ©ation de simulateurs complets) ! Vous pourrez Ă©galement explorer le super site Silicon Pr0n 9. Enfin, pour trouver une liste plus complĂšte n’hĂ©sitez pas Ă  vous rendre directement sur le dĂ©pĂŽt de Degate 10.

Il existe des protections contre ceci ? J’imagine que certaines entreprises n’aimeraient pas qu’on fasse de la retro-ingĂ©nierie sur leur puce, il me semble que certaines puces possĂšdent un genre de grillage.

En effet, il existe beaucoup de mĂ©thodes pour essayer de s’en protĂ©ger. On parle de deux grandes catĂ©gories : les protections passives et actives. Les protections passives peuvent par exemple prendre la forme de rĂ©sine que l’on “coule” sur les puces pour complexifier leurs rĂ©cupĂ©rations (et aussi empĂȘcher la rĂ©cupĂ©ration des rĂ©fĂ©rences), ou d’une couche directement dans le silicium pour bloquer l’analyse visuelle de surface. D’autres mĂ©thodes existent, mais gĂ©nĂ©ralement de l’huile de coude et du bon matĂ©riel permettent de passer outre. Les mĂ©thodes actives sont plus recherchĂ©es et protĂšgent contre d’autres approches de la rĂ©tro-ingĂ©nierie matĂ©rielle. Comme citĂ© dans la question, l’ajout d’un grillage actif est une solution assez rĂ©pandue dans les puces de cartes bleues par exemple. L’idĂ©e est Ă  la fois de bloquer une analyse visuelle de surface de la puce, mais aussi d’empĂȘcher le “probing” (essayer d’utiliser une sonde directement sur un “circuit” de la puce) ou la modification de la puce (par exemple en connectant deux “circuits” de la puce). Cela passe par un maillage avec des formes complexes (on peut voir ça comme un labyrinthe) alimentĂ© par un courant qui, en cas de modification du circuit, peut rendre la puce non fonctionnelle. Il est alors compliquĂ© d’aller voir et manipuler les couches infĂ©rieures en laissant la puce fonctionnelle. 11

Est-ce que les diffĂ©rentes façons de gravure qui utilise diffĂ©rent MOSFET (CMOS, FinFET, MBCFET, FD-SOI etc) ne demandent pas des analyses diffĂ©rentes ? Est-ce que ça sera fiable avec les derniers types de gravure avec des transistors imbriquĂ©s 3D ?

À tout problĂšme sa solution : les mĂ©thodes d’analyses 3D de puces de silicium se dĂ©veloppent Ă©galement 6. Si le matĂ©riel nĂ©cessaire pour crĂ©er les donnĂ©es 3D venait Ă  ĂȘtre plus accessible, je prĂ©vois dĂ©jĂ  l’ajout d’un mode d’analyse Ă  Degate permettant de les exploiter. Je ne doute cependant pas que les mĂ©thodes d’analyses actuelles fonctionnent pour la majoritĂ© des cas, mĂȘme si le problĂšme est dĂ©jĂ  suffisamment complexe pour ne pas rajouter ces spĂ©cificitĂ©s. Je n’ai personnellement pas pu couvrir toutes les mĂ©thodes de gravures dans mes analyses ni les nouvelles approches en 3D. Seulement, ces mĂ©thodes s’appliquent pour l’instant majoritairement Ă  la mĂ©moire, ce qui n’est pas forcĂ©ment la cible des analyses.

Qui se sert de Degate ? Est-ce une communautĂ© de fans de consoles ou des professionnels confrontĂ©s Ă  des puces qui ne sont plus documentĂ©es ou des gens du logiciel libre, etc. ?

DĂšs ses premiers jours, Degate a Ă©tĂ© pensĂ© pour la cybersĂ©curitĂ©. L’idĂ©e Ă©tait de pouvoir faciliter l’analyse d’algorithmes implĂ©mentĂ©s directement dans les puces de silicium, Ă  la fois pour essayer d’identifier des failles, mais aussi pour vĂ©rifier la prĂ©sence de portes dĂ©robĂ©es. En effet, d’un point de vue sĂ©curitĂ© trop peu de personnes vont voir ces puces alors que tout dĂ©pend d’elles. Comment faire confiance Ă  un systĂšme si l’on ne peut pas vĂ©rifier la sĂ©curitĂ© de son composant le plus important et bas niveau ? Permettre Ă  des chercheurs et passionnĂ©s d’attaquer le sujet est ma principale motivation quand je travaille sur Degate, le sujet est pour moi majeur. On a trop tendance Ă  s’arrĂȘter Ă  la rĂ©tro-ingĂ©nierie logicielle, et c’est malheureusement un risque que l’on oublie trop.
Je sais aujourd’hui que Degate est utilisĂ© (ou a Ă©tĂ© Ă©tudiĂ©) par des entreprises amĂ©ricaines dans le cadre de l’analyse de puces (je ne sais pas pour quel objectif), par la police allemande et par une universitĂ©.

Malheureusement le domaine n’encourage pas beaucoup la communication et Degate pourrait ĂȘtre utilisĂ© ailleurs. J’ai d’ailleurs de gros doutes sur son utilisation par une entreprise amĂ©ricaine sous forme de fork non-partagĂ© (ne respectant alors pas la licence GPL qui est copyleft
). Mais ça, c’est un combat classique du monde libre (pour dire, on m’avait mĂȘme proposĂ© de me payer pour travailler dessus
).

Mais autrement, le logiciel peut ĂȘtre utilisĂ© par d’autres communautĂ©s, comme pour les fans de vieux systĂšmes. Je sais que la communautĂ© qui s’occupe de rĂ©tro-ingĂ©nierer la PlayStation s’est dĂ©jĂ  intĂ©ressĂ©e Ă  Degate 12.

Concernant la sĂ©curitĂ©, quels types de puces sont concernĂ©es ? J’imagine qu’il ne s’agit pas d’analyser les processeurs gĂ©nĂ©ralistes de nos ordinateurs
 Ce sont des puces qu’on trouve dans quels matĂ©riels ?

C’est trĂšs large, gĂ©nĂ©ralement on parle de puces avec des missions/parties critiques. Par exemple (comme pour le cas MIFARE Classic), des puces implĂ©mentant des algorithmes cryptographiques sont importantes Ă  regarder : au niveau logiciel on recommande (et c’est un euphĂ©misme) de ne jamais rĂ©implĂ©menter ses propres primitives cryptographiques, pourtant beaucoup de puces le font (mĂ©thode simple pour booster les performances, aujourd’hui tout utilise de la cryptographie). Maintenant, on parle gĂ©nĂ©ralement de certaines parties/fonctions d’une puce plus que des puces entiĂšres. On peut par exemple citer en plus de la cryptographie tout ce qui concerne le stockage de donnĂ©es critiques (comme les clĂ©s de chiffrement). Aujourd’hui, je pense que l’on retrouve ces fonctionnalitĂ©s dans tout type de matĂ©riel.

Comment en ĂȘtes-vous devenu le mainteneur ?

Comme je l’ai expliquĂ© prĂ©cĂ©demment, c’est via un programme proposĂ© par mon Ă©cole d’ingĂ©nieur que j’ai Ă©tĂ© amenĂ© Ă  travailler sur le sujet de la rĂ©tro-ingĂ©nierie matĂ©rielle Ă  partir de fin 2018. Et comme Degate Ă©tait le seul programme gratuit et open source permettant d’automatiser une partie du processus (indispensable pour arriver Ă  des rĂ©sultats sans y passer 10 ans), j’ai rapidement eu l’occasion de pouvoir l’utiliser. Malheureusement l’auteur originel du logiciel ne contribuait plus au projet depuis quasiment 8 ans Ă  l’époque, et j’ai rapidement rencontrĂ© des difficultĂ©s pour l’utiliser plus largement dans mes recherches.

AprĂšs quelques mois de travail et un refactor Ă  70 % du projet (j’ai par exemple refait toute la GUI en Qt5 + OpenGL moderne) pour repartir sur de bonnes bases, j’ai publiĂ© mon fork sur Github. Par la suite Martin (l’auteur originel de Degate) a prĂ©fĂ©rĂ© mettre le projet initial en archive sur Github, et faire une redirection vers cette nouvelle version (aujourd’hui refaite Ă  quasiment 80 % par moi-mĂȘme). L’idĂ©e Ă©tait de garder le nom et la communautĂ© mĂȘme si la grande majoritĂ© du logiciel a Ă©tĂ© refait.

Maintenant, suite Ă  la fin de mes Ă©tudes, je dispose de moins de temps qu’avant et je suis forcĂ©ment moins actif. Mais j’essaie de traiter toutes les issues et pull request, tout en continuant Ă  travailler sur de nouvelles fonctionnalitĂ©s. Je cherche Ă©galement Ă  faire pĂ©renniser le projet en proposant Ă  des Ă©tudiants comme moi (Ă  l’époque) un financement pour travailler sur le sujet (et surtout Degate). Reste maintenant Ă  trouver des personnes motivĂ©es, car le sujet est vraiment complexe.

Tu n’utiliseras donc pas Degate dans le cadre de ton travail ?

Aujourd’hui non, mais je sais que la question se pose pour des collĂšgues. Le test d’intrusion matĂ©riel se dĂ©veloppe, et le sujet se pose de plus en plus. Maintenant les compĂ©tences nĂ©cessaires pour s’attaquer Ă  la rĂ©tro-ingĂ©nierie de puces de silicium sont un frein pour descendre aussi bas, sans compter le problĂšme du matĂ©riel (faut-il encore pouvoir dĂ©caper/dĂ©stratifier les puces avant de pouvoir commencer l’analyse). La solution actuelle est de pouvoir accĂ©der au design des puces (test en white box), mais les limites sont dĂ©jĂ  visibles (un matĂ©riel est gĂ©nĂ©ralement composĂ© de nombreuses puces de constructeurs diffĂ©rents).

Quelle est ta motivation ? Qu’est ce qui t’anime avec Degate ? Puisque tu as commencĂ© l’informatique assez jeune, tu jouais peut-ĂȘtre avec des consoles ; est-ce que Degate te permet aussi d’imaginer recrĂ©er les puces de ton enfance ?

Étant aujourd’hui un ingĂ©nieur chercheur portĂ© sur la cybersĂ©curitĂ©, cela me force Ă  voir Degate et la rĂ©tro-ingĂ©nierie matĂ©rielle Ă  travers ce prisme. Pouvoir permettre Ă  des chercheurs d’analyser des puces utilisĂ©es dans des millions de matĂ©riels Ă  travers la planĂšte est ce qui m’anime, mĂȘme si je ne doute pas que bien d’autres cas d’utilisations peuvent ĂȘtre tout aussi intĂ©ressants. Je suis par exemple aussi trĂšs portĂ© sur l’histoire, et la rĂ©tro-ingĂ©nierie matĂ©rielle est aussi un moyen de ne pas perdre certaines piĂšces de notre histoire.

Est-ce que vous tirez un revenu de ce travail ? Est-ce une bonne wafer ?

Je suis actuellement financĂ© 100$/mois par le mainteneur principal de Rizin/Cutter (logiciel de rĂ©tro-ingĂ©nierie software) et j’ai dĂ©jĂ  eu plusieurs autres propositions de financement. Ayant Ă©galement publiĂ© des articles sur le sujet, j’ai quand mĂȘme pu ĂȘtre rĂ©munĂ©rĂ© pour ce travail, mais on est trĂšs loin de quelque chose me permettant de vivre (et ce n’est pas l’objectif).

Pour finir

Que dire sur vos autres projets ?

Au niveau personnel je travaille (quand j’ai le temps) sur une nouvelle approche IA au service de la cybersĂ©curitĂ© dĂ©fensive. Malheureusement mon temps est trĂšs limitĂ©, et j’évite de trop m’éparpiller. Au niveau professionnel je suis aujourd’hui Tech Lead et Team Leader sur un projet d’automatisation de cybersĂ©curitĂ© offensive. L’idĂ©e Ă©tant de crĂ©er un outil entiĂšrement automatisĂ© par IA permettant de jouer des attaques avec le mĂȘme niveau de sophistication que les vrais acteurs (gĂ©nĂ©ralement quand je parle du projet on me parle de Skynet, pour ceux ayant la rĂ©fĂ©rence). Un produit devrait sortir dans les deux ans, nous avons dĂ©jĂ  fait de nombreuses avancĂ©es scientifiques mais la route est encore longue. C’est aujourd’hui ce qui occupe le plus clair de mon temps !

Que pensez-vous de la directive NIS 2 sur la cybersĂ©curitĂ© ?

La France a Ă©tĂ© pionniĂšre en matiĂšre de rĂ©glementation dans le domaine de la cybersĂ©curitĂ©, et je pense que la directive NIS 2 se place dans le mĂȘme esprit que ce que l’on fait dĂ©jĂ  depuis plusieurs annĂ©es (avec la LPM de 2013 par exemple). Je sais que ces rĂ©glementations peuvent aussi faire peur, et l’accompagnement sera une condition nĂ©cessaire pour rĂ©ussir son application. Malheureusement je pense qu’il est nĂ©cessaire d’agir au plus vite, les rĂ©cents Ă©vĂšnements gĂ©opolitiques ainsi que les (trĂšs) nombreuses attaques observĂ©es chaque semaine imposent d’investir dans la sĂ©curitĂ© de nos entreprises. Je pense Ă©galement que comme la NIS 1, la NIS 2 n’est qu’une Ă©tape, et que des Ă©volutions seront nĂ©cessaires dans la prochaine dĂ©cennie pour Ă©tendre les attentes concernant la sĂ©curitĂ© des entreprises europĂ©ennes.

Au niveau personnel, quels logiciels libres utilisez-vous, sur quel OS ?

J’utilise depuis maintenant quatre ans Manjaro, venant de Debian/Ubuntu, et je suis trùs satisfait (le modùle rolling release me plaüt beaucoup à l’usage).

Au niveau professionnel, quels logiciels libres utilisez-vous, sur quel OS ?

Au niveau professionnel je tourne sur du Ubuntu 22.04, et j’utilise principalement du VS Code.

Quelle est votre distribution GNU/Linux prĂ©fĂ©rĂ©e et pourquoi, quels sont vos logiciels libres prĂ©fĂ©rĂ©s ?

Manjaro et Ubuntu sont les distributions que j’utilise dans la vie de tous les jours. Concernant les logiciels, la question est difficile puisque j’en utilise tellement. En ce moment je ne pourrais plus me passer de Joplin ou Signal, mais je pourrais en citer beaucoup (Virtual box, Kali linux, VSCode, Zotero
).

Références

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌
❌