Systèmes embarqués et sécurité hardware - partie 1

Filtrer par catégorie :

06 Avril 2016 by Lény Bueno
Systèmes embarqués et sécurité hardware - partie 1
 
 
On vous a offert une poêle connectée ? Votre collègue se sépare de son vieux switch ? Parfait ! C'est l'occasion idéale pour se plonger dans le Hardware...

Mais avant d'installer le patient sur son lit d'hôpital, précisons certains aspects :
  • Ouvrir un matériel pour étudier son contenu est en général synonyme de perte de garantie ;
  • Nul n'est à l'abri de blesser son patient, notamment lors d'opérations délicates comme le dessoudage de composants. Il peut donc s'avérer utile de disposer de deux exemplaires du produit.
Après avoir épluché les guides d'utilisation ou d'administration, et relevé chaque information pertinente (fonctionnalités, services d'administration, mots de passe par défaut, etc.), s'être renseigné sur la politique de disclosure de l'éditeur, ou encore avoir cherché si des vulnérabilités ont déjà été découvertes par le passé, il est temps de passer à l'action.

De simples tournevis et une fine lame devraient faire l'affaire pour ouvrir l'objet. Dans le cas où des vis de protection sont utilisées, il sera nécessaire d'acheter un lot d'embouts de sécurité. Il faut être délicat durant l'ouverture du matériel, si cela coince et qu'il faut forcer, il reste sûrement une petite vis ou un onglet de verrouillage oublié. Si le matériel est complexe, il est utile de prendre des photos régulièrement pour aider au remontage.

Ca y est, l'objet est ouvert ? Le circuit imprimé est visible et accessible? Il faut désormais tenter de le comprendre... Le PCB (Printed Circuit Board) est constitué d'une ou plusieurs couche(s) de cuivre gravée(s) et séparée(s) par un isolant ; une mince nappe de fibre de verre imbibée de résine époxy. La couleur naturelle du circuit imprimé n'est pas verte mais blanchâtre ou rousse. Cette couleur est en réalité dû à une couche de vernis protégeant les pistes de l'oxydation et de l'humidité, le soldermask. On pourra également retrouver au dessus de cette couche des indicateurs, permettant l'identification de certains composants du PCB. Généralement des lettres, par exemple :
  • U pour un circuit intégré ;
  • R pour une résistance ;
  • C pour un condensateur ;
  • etc.
pcb

Les différentes couches sont interconnectées par des trous métallisés, ou vias. Certains ne traversent pas toutes les couches, les vias borgnes, d'autres ne débouchent pas sur les couches externes, les vias enterrés. Quant aux pistes, elles relient les composants électriquement.

Les composants étaient autrefois soudés sur le circuit imprimé en le traversant. Même si cela peut encore arriver, dans le cas de gros régulateurs, connecteurs ou transformateurs, la majorité des composants sont aujourd'hui montés en surface. On parlera alors de CMS ou en anglais SMD. Cette technologie a entres autres permis de miniaturiser les composants, de simplifier leur placement sur le circuit imprimé tout en évitant de le percer, elle a également facilité l'automatisation de l'assemblage et diminué les coûts de revient. Les CMS possèdent de petites broches qui sont directement brasées à la surface du PCB.

CMS

L'industrie électronique a standardisé la forme et la taille du paquetage (package) des CMS. Il existe une grande variété de packages que l'on peut regrouper en trois grandes catégories :
  • ceux à deux rangées de broches (comme le SOIC) ;
  • ceux à quatre rangées de broches (comme les PLCC, QFP ou QFN) ;
  • ceux à matrice de billes, de pastilles ou de broches (respectivement BGA, LGA et PGA).
package


Les composants principaux d'un circuit imprimé sont les diodes, les résistances, les bobines, les condensateurs, les transistors et les circuits intégrés. Ce sont ces derniers qui sont les plus intéressants à analyser, ces composants actifs sont de nature variable :
  • processeurs de signal numérique ;
  • microprocesseurs ;
  • mémoires (vives ou mortes) ;
  • microcontrôleurs ;
  • etc.
Ils sont souvent facilement reconnaissables, de par leur boîtier rectangulaire noir à multiples broches (ou pins), et il est très intéressant de s'y interfacer afin de les analyser. Mais nous y reviendrons plus tard...
ci

Il est souvent complexe de déterminer le rôle des circuits intégrés, une méthode efficace consiste à identifier la référence inscrite au dos de la puce afin de rechercher sa fiche technique (ou datasheet) :
chip

De bonnes lunettes, une loupe, de la lumière, un endoscope (oui, oui...) et une bonne dose d'imagination pourront vous aider ! De longues recherches seront parfois nécessaires avant de trouver la datasheet. Vos amis seront :
  • Google ;
  • Bing ;
  • Baidu ;
  • DataSheetLocator ;
  • les différents sites de fournisseurs ;
  • etc.
pin 
pin
instr

Ces fiches techniques représentent une mine d'informations techniques. Elles fournissent des indications concernant le voltage et le courant typiques du composant, les protocoles de communications supportés ainsi que toutes les informations nécessaires pour s'y interfacer et communiquer :

fréquence de l'horloge ;
identification et description de chaque patte (alimentation électrique, terre, entrée de données, sortie de données, horloge, etc.) ;
liste des instructions selon le mode de communication ;
détail des différentes protections ;
etc.
Identification des pattes Description des pattes

De futurs articles traiteront spécifiquement des différents protocoles permettant de communiquer avec les composants et leur(s) bus de données :

I²C ;
SPI ;
CAN ;
JTAG ;
SWD ;
etc.
Par ailleurs, si c'est un appareil émettant des ondes radio, il est fort probable qu'il ait été approuvé par la FCC (Federal Communications commission) ou l'ETSI (European Telecommunications Standards Institute). Dans ce cas, des rapports techniques croustillants sont sûrement accessibles publiquement sur Internet, dévoilant les bandes de fréquence et modulation utilisées, des photos du PCB permettant parfois d'identifier les différentes puces, etc. Pour les consulter, il suffit de rechercher l'identifiant FCC sur le boîtier de l'appareil et de le taper dans un moteur de recherche dédié, exemple FCC ID Search :



Durant la découverte du circuit imprimé, il est très utile d'identifier les différents points de test (test points). Les constructeurs les utilisent à la fois pour valider le bon fonctionnement d'un produit et pour réparer un produit défaillant. Dans une perspective de rétro-ingénierie, ils seront utiles pour analyser les différents signaux électriques. Ils sont facilement repérables, ce sont généralement des petits cercles, parfois marqués des lettres TP suivies d'un ou plusieurs chiffres :
test

Dans un circuit électrique, la masse ([ground](https://en.wikipedia.org/wiki/Ground_(electricity)) est la broche de référence des potentiels électriques (en général 0V). Identifier les masses est primordial pour valider le bon fonctionnement des composants ou de la carte électronique. Il est donc intéressant de savoir les repérer sur le circuit imprimé. Pour simplifier la conception des circuits imprimés, éviter de créer des boucles avec les pistes de masse et limiter les dégâts en cas de courts-circuits, les pistes d’un circuit électronique sont souvent reliées entre elles pour ne former qu’une seule nappe de cuivre. On appelle cela un plan de masse (ou ground plane). Ces nappes recouvrent généralement la quasi-totalité d'un PCB. Sur le circuit suivant, les plans de masse sont clairement visibles, ce sont les zones bleues les plus claires :
groun

Certains points de masse sont marqués des lettres GND. Si ce n'est pas le cas, ils sont facilement identifiables ; un appareil photo, une loupe ou de bons yeux feront l'affaire, ils sont directement en contact avec un plan de masse :
masse

Pour valider le bon fonctionnement des produits, les constructeurs utilisent bien souvent des interfaces "lit à clous" pour connecter un ensemble de points de test en même temps sans avoir à souder quoi que ce soit. Rien de tel qu'une illustration pour aider à mieux comprendre :
lit

Il existe sur le marché de petites pattes appelées pogo pins permettant de créer ses propres interfaces :
pogo

Ces "lits à clous" servent à réaliser des tests de continuité afin de garantir la qualité des pistes et des soudures (Boundary scan). Aujourd'hui, les cartes et les composants électroniques sont de plus en plus complexes, denses et petits. Quant aux points de soudure, ils sont de plus en plus nombreux et rapprochés. En conséquence, les "lits à clous" ne sont plus toujours suffisants pour valider ou déboguer un circuit imprimé. Pour échapper à cette problématique, les industriels se tournent vers une autre technique, l'inspection par rayons X (par transmission, par tomosynthèse ou par laminographie). Cette technique permet d'analyser la qualité des points de soudure cachés sous les composants et d'identifier chaque piste, y compris celles dissimulées dans un PCB à nombreuses couches.

Cette technique n'est bien entendue pas destinée au grand public. En revanche, pour un circuit à double couche, il est possible d'identifier 1es pistes avec un scanner, ou une bonne lampe et un appareil photo HD. Pour ce faire, il faudra enlever les composants "gênants" la reconstitution du tracé des pistes (une station à air chaud serait donc un énorme plus !), se placer sous une bonne lumière et prendre des photos de chaque côté du circuit imprimé.

Si la désactivation des ports de débogage avant la mise en vente d'un produit fait partie des bonnes pratiques de sécurité. Il n'est pas rare d'en trouver certains toujours actifs. Ils sont accessibles à travers un ensemble de points de test et permettent entres autres :
  • le débogage en live des systèmes (In-Circuit Debugging ou ICD) ;
  • la lecture de mémoires ou encore la (re)programmation d'un firmware ;
  • l'analyse de la séquence de boot et la visualisation des messages de debug ;
  • l'accès au bootloader ;
  • l'interaction avec le système à travers un shell ;
  • etc.
Nous en reparlerons dans de futurs articles traitant de UART et JTAG.