Ingénierie Cryptographique Implantations Sécurisées

Les attaques par canaux cachés

Historique Dans les années 70, la télévision commençait à envahir tous les foyers américains. Très rapidement la publicité est apparue pour financer ce média. La publicité ponctuait donc les émissions américaines. A cette époque, les directeurs de chaînes n’avaient pas les moyens actuellement mis en place par les instituts de sondage pour évaluer l’audimat. Il fallait pourtant trouver un moyen efficace pour évaluer l’impact d’une émission sur la population. C’est ainsi que l’idée est venue d’observer les variations de la consommation en eau d’une grande ville comme celle de New-York pendant les pauses publicitaires. Aux moments des pauses publicitaires des chaînes les plus regardées, il fût observé des variations importantes de la demande en eaux et en électricité. Ainsi, il était possible de mesurer indirectement le succès d’une émission de télévision grâce à un canal caché. C’est par Paul Kocher que le principe est arrivé dans les cartes à puces. En 1995, Paul Kocher travaille sur une attaque en exploitant les variations du temps de calcul (Timing Attack) dans l’implémentation d’une exponentiation modulaire [74]. Pour la première fois, une cryptanalyse basée sur la prise en compte d’autres éléments d’information que les résultats issus du procédé de chiffrement est publiée. C’est très certainement en cherchant à appliquer ses travaux aux cartes à puce et en tentant de mesurer précisément les temps de réponse de la carte avec un oscilloscope qu’il prend conscience du formidable canal d’information que constitue le courant consommé par la carte. Les dates de ses premiers dépôts de brevets attestent que très rapidement, après la publication de l’attaque `Timing Attack’, Paul et ses collègues, Joshua Jae et Benjamin Jun, travaillent sur une attaque qui allait susciter de nombreux dépôts de brevets et des travaux de recherche qui perdurent aujourd’hui dans l’industrie de la carte à puce (il suffit, pour s’en convaincre, de regarder le nombre des publications sur ce sujet durant ces dix dernières années). Avec une technique similaire à celle qui permet d’exploiter l’information portée par le canal temporel, le canal consommation est exploité pour découvrir la clé secrète de chiffrement de l’algorithme le plus utilisé dans les cartes à puce : le DES [86]. Poussé par la communauté américaine, Paul et ses collègues rendent cette attaque publique [71] et convoquent les plus grands acteurs du petit monde de la carte à puce quelques mois plus tard, à Chicago, pour leur expliquer ses travaux avant leur publication dans [72]. En fait, depuis plusieurs années déjà, la carte à puce est la cible d’attaques basées sur l’observation de sa consommation. Les laboratoires spécialisés la pratiquaient dans le cadre des évaluations ITSEC (Information Technology Security Evaluation Criteria, ou en français, Critères d’Evaluation de la Sécurité des Systèmes Informatiques) mais avec une approche directe, que Paul Kocher baptisera SPA (Simple Power Analysis). Il s’agit d’atteindre directement les données manipulées par les instructions du micro-contrôleur. En particulier, certains laboratoires avaient déjà développé des circuits électroniques spécifiques afin de déduire le code exécuté, lui même un secret que la carte doit protéger, à partir de la consommation du composant. Des contre-mesures telles que des horloges instables ou autres brouilleurs de consommation étaient déjà mises en oeuvre sur certains composants afin de contrer ces attaques. Telle fût l’une des raisons pour laquelle l’annonce de P. Kocher a été, dans un premier temps, relativement négligée par les fabricants de semi-conducteurs. Ce qui rend l’approche de [72] plus dangereuse que les attaques pratiquées jusqu’alors c’est d’une part l’aspect statistique qui permet d’extraire l’information malgré un bruit relativement important et d’autre part la connaissance des algorithmes de cryptographie que ces laboratoires spécialisés ignoraient. Ainsi les contre-mesures existantes ne font que rajouter une difficulté à l’attaque décrite dans [72] sans toutefois la rendre impossible. De plus, un des aspects caractéristiques de cette attaque, est qu’elle ne nécessite que très peu de connaissance de l’implémentation pour pouvoir être appliquée. Si aucune protection n’est mise en place, il suffit généralement de connaître l’algorithme utilisé sans aucun détail sur le hardware ou le software qui constitue l’implémentation, pour pouvoir l’attaquer. Contrairement aux fabricants de semi-conducteurs, les sociétés qui développent les applications sur les cartes à puce comme Bull CP8, IBM, Schlumberger, Gemplus, Delarue C&S, Sagem …, plus au fait des techniques de cryptanalyse, tentent de trouver des parades au travers de contre-mesures que nous appellerons algorithmiques. Jacques Patarin et Louis Goubin, à l’époque employés de BULL CP8, sont les premiers à publier [53] une méthode de protection dite de duplication et tentent de dénir les premiers éléments d’une théorie de la protection en énonçant l’hypothèse fondamentale qui conditionne la faisabilité de l’attaque DPA : Hypothèse fondamentale de Goubin-Patarin : il existe une variable intermédiaire, qui est calculée lors de l’exécution de l’algorithme, telle que connaissant quelques bits de clé (en pratique moins de 32 bits) il est possible de décider si deux entrées (respectivement deux sorties) donnent ou ne donnent pas la même valeur à cette variable. Nous retiendrons de cette approche que les données traitées par l’algorithme portent une information que l’on peut rendre inexploitable grâce à l’introduction de quantités aléatoires. Ainsi, s’il est possible de rendre aléatoires toutes les variables intermédiaires traitées par l’algorithme, une fuite relative aux données sur un canal quelconque ne devrait procurer à l’attaquant aucune information exploitable. Cependant, il faut aussi prendre en compte le fait que l’attaquant peut essayer de relier une combinaison de ces variables à l’information qu’il peut tirer d’un ou de plusieurs canaux cachés. Ces méthodes d’attaque, que nous présentons en fin de la section 2.2.2, sous le nom de Ho-DPA, sont en pratique particulièrement difficiles à réaliser car elles nécessitent une connaissance approfondie des détails de l’implémentation. L’introduction d’aléa dans les données traitées nécessite de disposer d’un générateur aléatoire (ou pseudo-aléatoire) au sein du composant, an que l’attaquant ne puisse pas prédire la transformation opérée sur les données. Encore une fois en cryptographie, la qualité statistique du générateur aléatoire joue un rôle important dans la protection contre les attaques. Cependant, nous ne disposons pas aujourd’hui d’outils de mesure de cette qualité pour ce problème spécifique. Ce problème ouvert est aujourd’hui très peu étudié dans la littérature bien qu’il constitue une des principales faiblesse des protections de type randomisation. Pendant la même période, la plupart des acteurs du monde de la carte à puce élaborent des contre-mesures de type algorithmique elles aussi basées sur l’utilisation de quantités aléatoires an de rendre les données traitées indépendantes des données accessibles à l’attaquant [30], [37], [73]. Comme axiome de base, ces contre-mesures, pour atteindre cette indépendance, partent du principe qu’une seule exécution de l’algorithme ne suffit pas pour extraire suffisamment d’information sur la clé. Ainsi, chaque calcul effectué par le composant attaqué, peut être vu comme la réalisation d’une variable aléatoire indépendante des calculs intermédiaires. Ainsi, ces implémentations sont inattaquables par une simple attaque DPA, dans la mesure où ils ne satisfont pas l’hypothèse fondamentale de GoubinPatarin. Même s’il paraît aujourd’hui évident que l’attaque s’applique aux algorithmes, qu’ils s’exécutent de manière logicielle, matérielle, ou par combinaison des deux,peu de cellules hardwares incluant des contre-mesures de type logique sont disponibles actuellement. C’est pourtant dans cette direction, coûteuse en terme de silicium, que s’est lancé STMicroelectronics avec une cellule DES, appelée E-DES (Enhanced-DES)(c.f. figure 2.1) inventée par Fabrice Romain et Yannick Teglia [101], pour laquelle la résistance réside sur une technique de contre-mesure logique basée sur des quantités aléatoires, fournies par un générateur aléatoire interne. Un exemple de protection similaire sur l’algorithme AES est présentée au chapitre 5. Parallèlement à l’évolution des attaques basées sur l’observation les canaux cachés pour extraire de l’information, l’exploitation d’un autre canal caché se mettait progressivement en place, mesurant les effets des perturbations d’un composant de sécurité : le canal faute.

Le courant

   Une carte à puce a une taille maximale de 28 à 30 mm2 imposée par le procédé d’encartage et par les contraintes mécaniques d’utilisation. Ainsi, son alimentation en courant doit être externalisée. Il est facile de la mesurer au moyen d’un oscilloscope 2.15 et d’obtenir une vision détaillée de son activité 2.4. C’est généralement au travers du canal consommation que l’on obtient le canal temps. Comme le montre la figure 2.4, il est simple de mesurer le temps de réponse d’une carte au travers du canal d’entrée/sortie. Une analyse plus rapprochée de la consommation permet d’obtenir facilement le nombre des opérations élémentaires effectuées par le composant, ou d’analyser la contribution des données comme l’illustre la figure 2.5. Il est possible, lorsque le prix et la taille du composant l’autorisent,de rendre impossible l’observation de l’activité du composant depuis une mesure externe grâce au procédé breveté par Hervé Chabanne et Nicolas Tissot dans [29], publié plus tard par Adi Shamir [106]. Le fait que l’on observe des variations de la consommation, permettant d’accéder à une information, est dû à la technologie CMOSFET (Complementary Metal Oxide Semiconductor Field Eet Transistor) utilisée et à ses principes de fonctionnement. Pour illustrer comment l’information peut être véhiculée par la consommation d’un composant, nous pouvons examiner l’activité d’une des briques élémentaires de tout composant : l’inverseur logique. Un inverseur est construit à partir de deux transistors, un Pmos (P pour Positive”) et un Nmos (N pour “Negative”) dont les caractéristiques varient d’une technologie à l’autre mais dont les fonctions principales sont conservées. Le transistor Pmos est passant lorsque sa grille n’est pas chargée alors que le transistor Nmos est passant lorsque sa grille est chargée. Ainsi l’inverseur fonctionne de la façon suivante : comme le montre la gure 2.6, une charge étant appliquée en entrée (état logique 1) le courant ne passe pas au travers du transistor Nmos, le transistor Pmos par contre est passant et la sortie de l’inverseur est reliée à la masse donc pas alimentée (état logique 0).

Attaque directe sur le secret

   Tout algorithme de cryptographie met en oeuvre, à un moment donné, des quantités secrètes. Le principe de l’attaque va consister à exploiter l’information que va pouvoir porter le canal caché lors de la manipulation d’une quantité secrète. Un exemple simple dans le cadre du RSA, est d’essayer d’utiliser directement le traitement fait sur l’exposant de l’exponentiation pour en déduire sa valeur. Bien que nous reverrons une illustration particulière de cette attaque dans le cadre des fautes (c.f. Ÿ2.2.6 1), il s’agit ici de chercher à obtenir une information directe sur la clé secrète au moment de sa manipulation. Typiquement, le parcours d’un exposant bit-à-bit peut être réalisé par des shifts successifs de chacun de ces octets en récupérant sa valeur dans la retenue C, ce qui donne l’algorithme 1. A l’étape 2 correspondante au shift si un canal quelconque fuit une information relative à la valeur de la retenue résultante du shift, la quantité secrète se trouve directement exposée. Mais cet algorithme présente bien d’autres défauts vis-à-vis des analyses directes des canaux cachés : la présence d’un test sur la valeur de la retenue, deux traitements distincts suivant la valeur du bit secret, même si les opcodes utilisés sont identiques leurs adresses à l’exécution dièrent. Tous ces défauts sont susceptibles d’être exploités par l’attaquant.

Attaque par observation des collisions ou “Collision  Attack”

   L’analyse des collisions au sein d’un algorithme est un outil de cryptanalyse classique des fonctions de hachage. Pour des messages différents et une même clé une collision totale ou partielle au sein d’un l’algorithme peut être observée et exploitée en comparant la fuite des deux opérations au travers d’un canal caché [105], [75]. Une collision dans le cadre de cette attaque signifie qu’à un instant donné de l’algorithme, les traitements relatifs aux deux messages qui présentent une collision, sont identiques ou partiellement identiques. Cet effet remarquable peut alors être observé au travers du canal caché. L’attaque originale a été récemment améliorée par Frédéric Valette dans [114] et ne nécessite que très peu de messages pour obtenir la clé.

Attaques par modification temporaire

1. Dégradation des paramètres de sécurité – Cette attaque est initialement apparue sur les courbes elliptiques. Le principe de cette attaque est, qu’une faute induite lors du calcul de kP revient à changer de courbe elliptique en cours de calcul pour une courbe quelconque. La probabilité que cette courbe présente des paramètres tels que le problème du logarithme discret soit encore difficile sur cette courbe est quasi nulle. Ainsi, retrouver k le secret du protocole devient un problème facile.
2. Faute sur une partie active des calculs – En 1997, D. Boneh, R. A. DeMillo, R. J. Lipton [24] illustrait la première attaque en faute sur la version de l’algorithme RSA utilisant le théorème des restes chinois (CRT) sur la décomposition en produit de deux nombres premiers du modulo. Le CRT permet, grâce à la connaissance des facteurs du modulo, de ramener le calcul de l’exponention modulaire à plusieurs calculs d’exponentiation sur des tailles moindres. Une version générale de cet algorithme d’exponentiation peut être trouvée dans[79] algorithme 14.71. Pour le RSA, cet algorithme se traduit en deux exponentiations modulo chacun des deux nombres premiers et une combinaison de leurs résultats pour obtenir le résultat final. Si le résultat de l’une des deux exponentiations est incorrect, alors il est très facile [24, 65] de déterminer la factorisation du modulo et donc la clé secrète.
3. Faute sur du code inutilisée – An de protéger une exponentiation modulaire des attaques simples (SPA) et notamment de celle décrite en Ÿ2.2.5, une solution évidente consiste à insérer de fausses opérations comme le montre l’algorithme 2. Dans cet algorithme, contrairement à l’algorithme 1, l’opération produit (étape 4) est faite pour chaque bit de l’exposant, indépendamment de sa valeur. Par contre le résultat de cette opération n’est pris en compte (étape 6) pour les étapes suivantes que si le bit courant de l’exposant vaut 1. Supposons qu’une faute soit injectée par un attaquant à l’étape 4, alors si le bit de l’exposant en cours vaut 1 le résultat du calcul sera erroné, mais si le bit vaut 0 le déroulement du calcul ne sera pas affecté. Ainsi, il est possible en injectant des erreurs à des moments bien choisis de distinguer si chaque bit de l’exposant secret vaut 0 ou 1. L’algorithme 3 issu de [64] montre comment un simple changement dans l’algorithme 2 permet d’adresser ce type de faute.
4. L’attaque par déroutement – Consiste simplement à obtenir du composant une exécution qui ne correspond pas au déroulement attendu du programme (Saut non effectué, variable non initialisée, …). Un exemple pratique consiste simplement à perturber l’étape de contrôle de fin de boucle de l’algorithme 3, pour terminer la boucle prématurément. Cette perturbation sera opérée pour i = k−2, puis i = k−3, … jusqu’à i = 1. Dans chaque cas, si le résultat obtenu pour cet exposant tronqué est le carré modulo N de celui obtenu lors de la perturbation précédente, alors le dernier bit traité est un 0, sinon il s’agit d’un 1.

Résumé de l’article publié à la conférence

  Cet article présente les premiers développements de recherche d’une arithmétique résistante aux fuites effectués en collaboration avec Jean-Claude Bajard et Laurent Imbert du LIRMM, et Yannick Teglia d’STMicroelectronics. Les fondements de cet article reposent sur la capacité d’introduire de l’aléa dans les données traitées, grâce au choix arbitraire d’une représentation des nombres parmi une famille de représentation, et sur le développement d’un algorithme de produit modulaire permettant de changer de représentation sans le passage par une représentation connue d’un éventuel l’attaquant. L’idée d’utiliser les RNS en faisant varier la base pour contrer les attaques à canaux cachés a été originalement brevetée pour STMicroelectronics en 2002 [97]. Cet article s’appuie aussi sur les développements récents des systèmes de résidus pour l’arithmétique modulaire [8] et aboutit à la construction d’une arithmétique adaptée à la problématique des fuites au travers des canaux cachés. Pour cela, il introduit un algorithme inédit d’exponentiation modulaire mettant en oeuvre un procédé apportant de l’aléa au sein de l’arithmétique modulaire grâce à l’utilisation des RNS. Après un rappel des principaux algorithmes permettant une exponentiation modulaire en RNS, nous introduisons une arithmétique résistante aux fuites (LRA). En particulier, nous traitons les differents problèmes que soulève l’introduction d’aléa dans la représentation RNS. Finalement, l’aspect implémentation est abordé à partir d’une proposition d’architecture d’implémentation. Afin de poser le cadre théorique de l’article, nous introduisons dans un premier temps les systèmes RNS de représentations de nombres selon leurs résidus. Puis nous rappelons l’algorithme RNS de multiplication modulaire de Montgomery avec un modulo N de [7] dans sa version la plus récente [8]. Cet algorithme sert de base dans la suite de l’article pour construire un algorithme protégé. Il constitue la brique fondamentale d’une arithmétique résistante aux fuites. Un point important de l’approche RNS, à la fois du point de vue de la performance et de celui de la mise en oeuvre d’une protection, réside dans les deux changements de base des étapes 3 et 5 de l’algorithme 4. Plusieurs approches sont possibles ( références [24],[17],[25],[3]et [11] de l’article correspondant aux références [85], [68], [96], [7] et [49]). Le choix de la méthode dépend clairement de l’application et des ressources disponibles pour l’implémentation. Dans notre cadre, nous avons choisi l’approche “Mix Radix System” développée dans [49] ou [69] car elle permet l’introduction d’aléa dans la représentation des données avec des performances réalistes sans nécessiter une capacité de stockage importante.Finalement, nous rappelons que la représentation RNS et l’algorithme 4, de la même façon que la multiplication de Montgomery originale, peuvent être facilement utilisés pour réaliser une exponentiation modulaire. En RNS, comme dans le cas classique, avant d’opérer l’algorithme d’exponentiation modulaire XE mod N basé sur le produit modulaire de Montgomery, il est nécessaire de convertir la donnée en entrée X dans la représentation dite de Montgomery en faisant intervenir une constante déterminée par le modulo et la représentation choisie (les produits des moduli relatifs à l’une des bases dans le cas des RNS). Une fois l’exponentiation terminée on sort de la représentation de Montgomery par un simple produit avec 1.

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 rapport-gratuit.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

1 Introduction 
2 État de l’art 
2.1 Les attaques par canaux cachés
2.1.1 Historique
2.1.2 Les canaux cachés et leurs caractéristiques principales
2.1.3 Le temps
2.1.4 Le courant
2.1.5 Les rayonnements induits
2.1.6 Le canal test
2.1.7 Le son
2.1.8 Les fautes
2.2 Les grandes classes d’attaques
2.2.1 Attaque directe sur le secret
2.2.2 Attaque par analyse diérentielle ou Dierential Power Analysis et attaque par correlation ou Correlation Power Analysis
2.2.3 Attaque par observation des collisions ou Collision Attack
2.2.4 Attaque par caractérisation du bruit ou Template Attack
2.2.5 Utilisation de messages choisis
2.2.6 Attaques en fautes
2.3 Se protéger
2.3.1 Méthodologie et connaissance des attaques
2.3.2 Modèles et simulations
2.3.3 conclusion
3 Protection au niveau hardware 
3.1 Introduction
3.2 Résumé de l’article publié à la conférence DCIS’04 
3.3 Quelques résultats et perspectives relatifs à l’article 
3.4 Quelques innovations
3.5 En pratique
3.6 Publication à la conférence DCIS’04 
4 Robustesse au niveau mathématique 
4.1 Introduction 
4.2 Résumé de l’article publié à la conférence CHES’04 
4.3 Quelques perspectives de recherches
4.4 Publication à la conférence CHES’04
5 Robustesse au niveau algorithmique 
5.1 Introduction 
5.2 Résumé de l’article publié à la conférence CHES’00 
5.3 Quelques résultats relatifs à l’article 
5.4 Publication à la conférence CHES’00
6 Se protéger contre les fautes 
6.1 Introduction
6.1.1 Protection des composants
6.1.2 Protection des algorithmes
6.2 Quelques innovations
6.3 Publication à la conférence FDTC’04 
7 Conclusion et perspectives 
8 Annexe 
Bibliographie

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 *