Sécurisation de programmes assembleur face aux attaques visant les processeurs embarqués

La sécurité des systèmes embarqués représente un enjeu majeur voire critique pour un grand nombre de secteurs de l’industrie ou d’organisations étatiques. Ce sousdomaine du vaste ensemble qu’est la sécurité des systèmes d’informations s’intéresse au cas particulier de la protection des systèmes embarqués face aux attaques dont ils peuvent faire l’objet. De par leur statut d’embarqués, les systèmes à protéger peuvent se retrouver entre les mains d’éventuels attaquants, qui chercheront à porter atteinte à la confidentialité, à l’intégrité ou à l’authenticité de données protégées. De tels systèmes peuvent alors être l’objet d’attaques dites physiques qui visent à exploiter des faiblesses dans leur implémentation.

Le principal marché concerné par les problématiques liées à la sécurité des systèmes embarqués est pour l’instant celui de la carte à puce, avec ses nombreuses déclinaisons comme les cartes de paiement, les cartes SIM ou la télévision à péage (Pay-TV). De par l’utilisation de la carte à puce dans des domaines toujours plus nombreux, d’après (EUROSMART, 2012) les ventes de carte à puce devraient atteindre 7 milliards d’unités en 2013, soit une croissance de 8% par rapport à leur niveau de 2012, avec une croissance de 25% en ce qui concerne les cartes à puce munies d’une technologie sans contact.

Toutefois, la carte à puce n’est pas le seul secteur pour lequel une vulnérabilité matérielle peut s’avérer critique : l’utilisation d’attaques physiques a montré son efficacité dans le débridage (plus connu sous le nom anglais de jailbreak) de produits grand public comme l’iPhone d’Apple  ou la console XBOX 360 de Microsoft  , pouvant ainsi entraîner des préjudices financiers importants aux industriels dont les produits présentent des vulnérabilités exploitables.

À ces besoins en systèmes sécurisés sont venus s’ajouter d’autres utilisations des cartes à puce ces dernières années, avec la généralisation de l’ajout de composants électroniques sécurisés aux documents d’identité. En France, cette numérisation des pièces justificatives d’identité a d’abord commencé avec l’utilisation de la carte à puce comme document pour l’assurance maladie (Carte Vitale, 1998). Plus tard, les passeports (2005) et permis de conduire (2013) ont également été numérisés et utilisent des circuits sécurisés proches de ceux de la carte à puce. Enfin, les cartes nationales d’identité devraient également être concernées par cette numérisation dans les prochaines années.

Principes généraux des attaques physiques

Tous les algorithmes cryptographiques reposent sur des propriétés mathématiques qui ramènent la cryptanalyse à un problème reconnu comme mathématiquement difficile. Ce type de construction garantit ainsi la sécurité théorique des données chiffrées. Toutefois, la résistance théorique d’un algorithme ne garantit pas l’absence de failles concernant le circuit sur lequel il est implémenté. Dans cette thèse, on utilisera pour désigner les attaques qui exploitent ce type de vulnérabilités les expressions d’attaques par canaux auxiliaires ou d’attaques physiques. Le but de ces attaques physiques est généralement d’obtenir une donnée secrète comme une clé de chiffrement, ou bien d’obtenir des informations sur un circuit dans un but de rétro-ingéniérie, ou encore de contourner une protection comme un contrôle d’accès. Certaines attaques nécessitent également la réalisation préalable d’une étape de préparation du composant. Celle-ci consiste généralement en une ouverture du boîtier à l’aide d’acide. Selon le type d’attaque qui sera réalisé ensuite, la préparation peut également impliquer la pose de micro-sondes ou encore l’ouverture du boîtier en face arrière.

Cryptographie embarquée

La cryptologie se définit étymologiquement comme la science du secret. Elle regroupe deux disciplines liées : la cryptographie, étudiant l’écriture de messages secrets, et la cryptanalyse, visant au déchiffrement de messages secrets sans posséder la clé de chiffrement. La cryptographie est utilisée depuis l’antiquité, bien qu’elle soit restée principalement dans le domaine militaire jusqu’au milieu du vingtième siècle (STERN, 1998). A titre d’exemple, en France la cryptographie a été considérée comme une arme jusqu’à très récemment : il a fallu attendre 1999 pour que son usage soit autorisé aux particuliers. La deuxième moitié du vingtième siècle a vu l’émergence de nouveaux principes cryptographiques sur lesquels reposent les algorithmes modernes. Parmi ceux-ci, on peut notamment citer la sécurité théorique absolue (SHANNON, 1949), les protocoles d’échanges de clés (DIFFIE et HELLMAN, 1976) ou la cryptographie à clé publique (RIVEST et al., 1978).

La cryptographie moderne utilise plusieurs types de briques de base qui sont utilisées dans des cryptosystèmes plus complexes. Parmi ces briques de base, on peut mentionner les fonctions de hachage, les générateurs de nombres aléatoires, les algorithmes de chiffrements dits à clé secrète (également appelés algorithmes symétriques) et ceux dits à clé publique (également appelés algorithmes asymétriques). Certains algorithmes ont acquis à la suite de concours internationaux le statut de standard (DES, AES, DSA, SHA-3), mais beaucoup d’autres algorithmes non-standardisés ont été publiés et sont couramment utilisés (RC4, RSA, MD5, SHA-1, . . . ). Néanmoins, un grand nombre d’algorithmes propriétaires dont la sécurité repose en partie sur la non-connaissance de l’algorithme par un attaquant sont encore largement utilisés.

Canaux auxiliaires et grandeurs observables

Les attaques physiques exploitent les failles dans le circuit sur lequel est implémenté un algorithme. Pour cela, elles se basent sur la mesure par un attaquant d’une grandeur relative aux données manipulées par le circuit. Dans la suite de cette thèse, on utilisera pour désigner cette grandeur les termes de grandeur observable ou de grandeur mesurable. La consommation de courant ou encore un résultat fauté après une injection de fautes peuvent par exemple être des grandeurs observables. De même, les données internes au circuit auquel l’attaquant n’a pas d’accès direct seront appelées grandeurs internes. La notion de canal auxiliaire indique l’existence d’une relation entre une grandeur interne visée par un attaquant et une grandeur observable. Cette relation n’a pas forcément une expression mathématique et peut être dépendante du circuit visé ou des conditions expérimentales dans lesquelles l’attaque est réalisée. Elle peut néanmoins être approchée à l’aide de modèles. Ces modèles sont utilisés par un attaquant pour représenter le lien entre les grandeurs observables à sa disposition et les grandeurs internes visées par l’attaque. Ensuite, une technique d’exploitation du canal auxiliaire basée sur ce modèle est utilisée afin d’extraire les grandeurs internes visées.

Attaques par observation et contre-mesures

La notion d’attaque par observation a été introduite dans la communauté scientifique à la fin des années 1990, d’abord en utilisant le temps d’exécution d’un programme (KOCHER, 1996) comme canal auxiliaire, puis la consommation de courant (KOCHER et al., 1999). Si certaines attaques par observation peuvent nécessiter une décapsulation préalable du circuit, la majorité de celles présentées dans la littérature ne requiert aucune modification, diminuant donc le coût de ces attaques et les rendant donc possibles pour un plus grand nombre d’attaquants potentiels.

Données observables par un attaquant

Sondage d’une donnée

La mesure directe par l’attaquant d’une donnée sur un des fils du circuit est appelée sondage, mais l’expression micro-probing est couramment utilisée. Dans ce type de procédé expérimental, l’attaquant vient placer une aiguille métallique sur un ou plusieurs des fils du circuit attaqué (généralement sur les bus) afin de pouvoir directement obtenir les valeurs logiques qui y transitent (ANDERSON et M. KUHN, 1996 ; KÖMMERLING et M. G. KUHN, 1999).

Consommation de courant

La mesure de la consommation de courant peut se faire en insérant une résistance de shunt (dont la valeur est connue) en série avec le composant entre celui-ci et la masse. La tension entre les bornes de cette résistance, qui peut être mesurée par un oscilloscope, est ainsi directement proportionnelle à l’intensité du courant consommé par celui-ci. Une grande majorité des circuits intégrés actuels sont fabriqués à l’aide de la technologie Complementary Metal-Oxyde Semiconductor (CMOS). En technologie CMOS, la porte logique élémentaire NOT est réalisée à l’aide de deux transistors, un transistor NMOS et un transistor PMOS. En régime statique, cette porte logique a une consommation de courant Istat. Le fait de positionner un 1 logique en entrée d’une telle porte met le transistor PMOS à l’état bloqué et le NMOS à l’état passant, reliant donc la sortie à l’état logique bas correspondant à la valeur 0. Inversement, dans le cas d’un 0 logique en entrée, l’état logique haut correspondant à un 1 logique se retrouve relié à la sortie. Toutefois, la transition entre un état logique et son complémentaire peut entraîner un léger pic sur la consommation de courant, comme expliqué dans (GUILLEY, HOOGVORST et al., 2004). Ce pic peut être la conséquence de deux courants :
— Un courant de court-circuit Icc
— Un courant de charge de ligne Icl

Au cours d’une transition de la sortie d’une porte logique, il existe un très bref instant pendant lequel les deux transistors laissent passer du courant, entraînant donc un léger court-circuit dû au passage d’un courant entre Vdd et la masse. Ce courant est appelé Icc. Il apparaît indifféremment pour les deux types de transitions possibles. La connexion entre la sortie de la porte NOT et une éventuelle porte suivante, ainsi que la proximité des lignes de connexion entraîne l’apparition de phénomènes capacitifs généralement modélisés par un condensateur parasite en sortie de l’inverseur.

Lors d’une transition entre un 0 et un 1 logique sur la sortie Vout, ce condensateur se retrouve connecté au Vdd et se charge, entraînant une légère surconsommation de courant. Ainsi, au niveau d’une porte CMOS élémentaire, un attaquant capable de mesurer la consommation de courant globale de la porte est également capable :
— de distinguer une transition d’une absence de changement sur la sortie
— de distinguer une transition de 0 vers 1 d’une transition de 1 vers 0
Un circuit intégré étant constitué d’un ensemble de portes logiques, la consommation instantanée de courant du circuit est la somme des consommations de courants de chacune de ses portes logiques.

Rayonnements électromagnétiques 

Les rayonnements électromagnétiques émis par un circuit peuvent être mesurés en champ proche. (GANDOLFI et al., 2001) et (QUISQUATER et SAMYDE, 2001) ont été les premiers articles à obtenir des résultats expérimentaux qui utilisent ce type de canal auxiliaire. La mesure des rayonnements électromagnétiques permet d’obtenir des mesures physiques plus localisées par rapport à la mesure de courant, mais cet effet localisé de l’analyse ajoute une contrainte liée au positionnement de la sonde électromagnétique. Pour définir quelles parties du circuit émettent des rayonnements électromagnétiques pouvant être utilisés pour une attaque, l’attaquant doit réaliser des cartographies spatiales en faisant varier la position de la sonde (DEHBAOUI, ORDAS et al., 2010), comme illustré sur la figure 1.2. Cette figure représente une cartographie des rayonnements électromagnétiques pour différents circuits intégrés. Elle montre également que les rayonnements mesurés sont liés à la position des blocs fonctionnels du circuit visé.

L’émission de rayonnement électromagnétique est une conséquence de plusieurs phénomènes, notamment la commutation des portes logiques. Celle-ci suit la loi de Lenz-Faraday. La rapide variation du courant s’accompagne d’une variation du champ magnétique (qui entraîne elle-même une variation du champ électrique) mesurable par l’attaquant en champ proche. Pour réaliser ces mesures, la littérature scientifique propose l’utilisation de sondes électromagnétiques qui peuvent être des boucles (PEETERS et al., 2007) ou des solénoïdes (MOUNIER et al., 2012).

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

Introduction générale
1 Contexte et motivations
1.1 Introduction
1.2 Principes généraux des attaques physiques
1.2.1 Cryptographie embarquée
1.2.2 Canaux auxiliaires et grandeurs observables
1.2.3 Canaux auxiliaires utilisés pour la réalisation d’attaques
1.3 Attaques par observation et contre-mesures
1.3.1 Données observables par un attaquant
1.3.2 Modèles de consommation
1.3.3 Exploitation des données obtenues
1.3.4 Rétro-ingéniérie
1.3.5 Contre-mesures
1.4 Attaques par injection de faute et contre-mesures
1.4.1 Moyens d’injection de faute
1.4.2 Modèles de fautes
1.4.3 Exploitation des données obtenues
1.4.4 Contre-mesures
1.5 Objectifs de la thèse et approche choisie
1.5.1 Objectifs
1.5.2 Approche choisie
1.6 Conclusion
2 Conception d’un banc d’injection de fautes pour processeur ARM CortexM3
2.1 Introduction
2.2 Processeur ARM Cortex-M3
2.2.1 Jeu d’instructions
2.2.2 Registres
2.2.3 Modes d’exécution
2.2.4 Exceptions matérielles
2.2.5 Pipeline et exécution des instructions
2.2.6 Mémoires d’instructions et de données
2.2.7 Bus de données et d’instructions
2.2.8 Préchargement d’instructions depuis la mémoire
2.2.9 Chaîne de compilation
2.3 Dispositif expérimental d’injection de fautes
2.3.1 Montage expérimental d’injection
2.3.2 Processus expérimental
2.3.3 Bilan sur le dispositif expérimental utilisé
2.4 Expérimentations sur une implémentation de l’algorithme AES
2.4.1 Advanced Encryption Standard (AES)
2.4.2 Attaque sur l’incrémentation du compteur de ronde
2.4.3 Attaque sur la fonction d’addition de clé de ronde
2.5 Conclusion
3 Validation d’un modèle de fautes au niveau assembleur
3.1 Introduction
3.2 Étude expérimentale des paramètres d’injection de fautes
3.2.1 Répétabilité des fautes injectées
3.2.2 Instant d’injection
3.2.3 Position de l’antenne d’injection
3.2.4 Tension d’injection
3.3 Corruptions de données et d’instructions
3.3.1 Simulation de corruption d’instructions
3.3.2 Résultats expérimentaux
3.3.3 Besoin d’une analyse à un niveau RTL (Register-Transfer Level)
3.4 Modèle de fautes au niveau RTL
3.4.1 Chargement d’instructions
3.4.2 Chargement de données
3.4.3 Validation expérimentale de ce modèle RTL
3.5 Modèle de fautes au niveau assembleur
3.5.1 Validité du modèle de saut d’instruction
3.5.2 Hypothèses pour expliquer les effets de sauts d’instructions
3.6 Conclusion et perspectives
Conclusion générale

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *