Suite au développement des objets connectés, les systèmes électroniques embarqués deviennent de plus en plus complexes et intelligents. Problème : une mauvaise implémentation d'un système cryptographique peut empêcher l'atteinte de l'objectif de sécurité initial (confidentialité, intégrité, authentification, etc.) et introduire des failles exploitables par un attaquant. Les attaques peuvent soit être de nature passive, en analysant la consommation électrique ou le rayonnement électromagnétique, soit de nature active par injection de « fautes », c'est-à-dire en provoquant volontairement des comportements erronés.
Or une compromission des SI embarqués posent problème. Tout d'abord en raison de la nature des données qu'ils renferment : à savoir pour la plupart des informations personnelles comme les données bancaires, biométriques ou de santé. Dans le but d’assurer la confidentialité et l’intégrité de ces données, les informations sensibles sont protégées par des systèmes cryptographiques. Paradoxalement, si l'implémentation logicielle et matérielle du système cryptographique n'est pas effectuée avec une grande prudence, l'utilisation d'algorithmes de chiffrement rend les composants embarqués sensibles à de nombreuses attaques. Parmi ces attaques, une famille d'attaques appelée attaques par canaux auxiliaires, aussi connues sous leur appellation anglaise Side-Channel Attacks (SCA), littéralement, attaques par canaux cachés), exploite les grandeurs physiques (consommation de courant, émissions électromagnétiques, émissions lumineuses, etc.) observables lors de l’exécution d’un algorithme cryptographique par le circuit intégré afin d’en extraire de l’information sur le secret manipulé.
Des attaques plus ou moins invasives
Cette approche offensive de la sécurité permet de retrouver les clefs secrètes utilisées par des cryptosystèmes pourtant prouvés mathématiquement sûrs et réputés incassables. Les implémentations sur circuits intégrés induisent des fuites liées au traitement des données. Ainsi, les portes logiques telles qu’elles sont actuellement conçues (technologie CMOS) dissipent de l’énergie, de façon corrélée avec la séquence de données manipulées. Afin d’exploiter ce phénomène et de mesurer cette dissipation, les attaques par canaux auxiliaires nécessitent un minimum de matériel pour l’acquisition des signaux et la minimisation de l'impact des bruits parasites sur les grandeurs physiques.
Ces attaques peuvent être invasives, par l’isolation du composant électronique et la mise à nu du circuit physiquement, semi-invasives, par la perturbation temporaire de la cible embarquée durant son fonctionnement, ou non-invasives, par la mesure de paramètres physiques extérieurs au matériel pendant son activité, sans toucher à son intégrité physique. Toutes se basent généralement sur une connaissance approfondie de l’architecture du matériel et portent sur 4 différents types de données.
Les 4 types d'attaques au crible
- L’attaque par temps de calcul consiste à mesurer et analyser le temps mis pour effectuer certaines opérations cryptographiques dans le but de découvrir des informations secrètes. Par exemple, cette attaque est utilisée pour trouver la clé privée du système RSA. Dans ce cas-là, les calculs effectués comportent une exponentiation modulaire, c’est-à-dire le calcul d’une puissance C^e modulo n, où e est la clé secrète. Si l’algorithme d’exponentiation modulaire est mal programmé, son temps d’exécution est fortement corrélé avec la valeur de la clé secrète e. L’analyse du temps de calcul de C^e, pour quelques valeurs de C, permet donc de trouver e ;
- L'attaque par mesure de la consommation électrique (Power Analysis Attack) se base sur la consommation d’énergie des dispositifs attaqués afin de retrouver des informations sensibles. En effet, la consommation de courant d’un appareil varie en fonction des instructions qu’il exécute, mais également des données que ces instructions manipulent ;
- L'attaque par analyse des émanations électromagnétiques est basée sur le fait qu'une particule chargée de grande énergie émet un rayonnement électromagnétique. Ces variations d’intensité des champs induits sont analysées pour déduire l'information secrète ;
- L'attaque par injection de fautes consiste à interagir avec l'appareil afin de provoquer volontairement des comportements erronés permettant de déduire des informations sur son état, ses données ou autre. L’objectif étant de forcer le système à fonctionner en-dehors de ses conditions nominales de fonctionnement et de modifier le flot d’exécution d’un programme embarqué.
Des contre-mesures de type hidding ou masking
De cette façon, il existe un grand nombre d'attaques par canaux auxiliaires et donc d’autres sources d’information qu’un acteur malveillant est susceptible d’exploiter. Les attaques physiques peuvent être divisées en deux catégories : profilées et non-profilées, selon qu'elles requièrent une phase d'apprentissage sur un échantillon de courbes afin de caractériser le circuit cible (comme les attaques par templates, les attaques stochastiques, les attaques utilisant des techniques d'apprentissage automatique...) ou qu'elles ne nécessitent pas une telle étape (comme les attaques temporelles, les analyses simples de consommation, les analyses différentielles de consommation, les analyses par corrélation, les attaques par analyse de l'information mutuelle...).
Les contre-mesures qui permettent de lutter contre les SCA avancées peuvent être divisées en deux catégories principales :
- Contre-mesures de type hidding: techniques visant à diminuer le rapport signal-bruit des observations ;
- Contre-mesures de type masking: consistent à masquer les valeurs intermédiaires manipulées.
Mieux cerner les attaques pour bien se protéger
Les contre-mesures de la première catégorie peuvent agir à différents niveaux : directement au niveau matériel par l'utilisation de circuits limitant les fuites par leur conception telle que la logique dual-rail, ou simplement par l'ajout de bruit. Au niveau logiciel, le rapport signal-bruit peut-être également diminué par l'implémentation de techniques visant à désynchroniser les observations des grandeurs physiques dans le domaine temporel. Cela est habituellement implémenté sous forme de délais aléatoires, ou bien, si le contexte le permet, l’exécution des instructions dans un ordre aléatoire. Cette dernière technique peut éventuellement être utilisée en conjonction avec des opérations factices pour cacher une vraie opération parmi n fausses.
En revanche, les méthodes de masquage des données consistent à partager le secret en plusieurs morceaux. Ceci oblige l'attaquant à obtenir de l'information sur plusieurs variables s'il veut retrouver le secret et puisque les informations sur chaque variable sont bruitées, il devient plus difficile d’identifier le secret manipulé par le système-cible.
Pour conclure, même si la sécurité d’un système cryptographique est mathématiquement prouvée, son implémentation matérielle peut être sujette à des fuites d'information. D’où l’importance d’avoir une bonne connaissance de l’ensemble des attaques qui pourraient menacer les algorithmes cryptographiques et ce, dans le but de renforcer la sécurité du système embarqué en combinant intelligemment plusieurs contre-mesures.