Laboratoire d'attaques par analyse de courant Rapport de projet Nicolas MASSÉ ENSICAEN nicolas27.masse@laposte.net Thomas LIMIN ENSICAEN thomas.limin@laposte.net Les fabricants de matériels "sensibles" ont besoin d'outils à même d'évaluer les performances des contre-mesures face aux attaques par canaux secondaires. Ce rapport de projet détaille notre travail autour d'un laboratoire d'attaques par analyse de courant pour la société Ingenico. Mots clés : Analyse de courant, DPA, Side Channel, Laboratoire d'attaques. "Sensitive" hardware's manufacturers need a tool to evaluate the achievement of the countermesures against side channel attacks. This project report details our work about an attack laboratory based on power analysis for the company Ingenico. Remerciements Nous avons bénéficié du soutien et des conseils de nombreuses personnes tout au long de ce projet. Qu'elles en soient ici remerciées. M. NACCACHE, Chief scientist chez Ingénico, notre tuteur entreprise, pour nous avoir confié ce projet passionnant et pour avoir orienté nos recherches. M. OTMANI, professeur à l'ENSICAEN, notre tuteur école, pour ses conseils et le temps qu'il a consacré au suivi du projet. M. CUOZZO et M. PASQUET, professeurs à l'ENSICAEN, pour leur aide précieuse. M. PAILLIER, chercheur chez Gemalto, pour nous avoir fourni des informations et un ensemble de données pour appliquer la DPA et la CPA. M. EL HAIDACHE et M. QEBIBO, élève ingénieurs ENSICAEN, spécialité électronique, pour avoir pris en charge la partie acquisition du laboratoire d'attaques. Introduction La troisième année de cycle ingénieur à l'ENSICAEN nous a offert la possibilité de nous impliquer dans un projet de fin d'étude en lien avec le monde professionnel. Issus de la spécialité monétique et sécurité des systèmes, nous avons travaillé avec la société Ingénico, spécialiste mondial des terminaux de paiement et des transactions sécurisées. Les systèmes dont la sécurité revêt un caractère critique, comme c'est le cas pour les terminaux de paiement électronique doivent, depuis peu, faire face à des attaques qui dépassent le cadre de la cryptanalyse classique. En effet, l'aspect matériel et électronique est pris en compte par les cryptanalystes, par le biais de la mesure du temps d'exécution, de l'électricité consommée ou des émanations électro-magnétiques (voir ). Ces informations issues des "canaux secondaires" divulguent, une fois analysées, une part souvent non négligeable des secrets. Face à cette menace, des contre mesures efficaces doivent être intégrées aux matériels. Ingénico est impliqué dans ce processus, et doit à tout moment s'assurer de l'efficacité de leur parades. Un outil adapté leur étant nécessaire, Ingenico a proposé le développement d'un laboratoire d'attaques par analyse de courant Ce projet a donc pour objectif la réalisation d'un outil permettant d'appliquer des attaques par DPADifferential Power Analysis, attaque par analyse différentielle de courant. Nous approfondirons dans une première partie le sujet, le contexte et l'organisation du projet. La seconde partie sera consacrée aux détails des attaques par canaux secondaires. Elle explicitera les fondements et les principes de base de ces attaques, puis quantifiera leur efficacité. La troisième partie s'appliquera à présenter le travail réalisé et les difficultés surmontées, puis concluera en dressant l'état d'avancement du laboratoire. Présentation du projet Contexte La sécurité des télécommunications repose sur la fiabilité des cryptosystèmes employés et sur la non divulgation des clefs de chiffrement/déchiffrement. Principalement axée sur la recherche des faiblesses intrinsèques des algorithmes utilisés, la cryptanalyse s'intéresse depuis peu au matériel supportant les applications cryptographiques. En effet, bien que souvent considérés comme des environnements clos et dignes de confiance, les composants électroniques peuvent eux aussi laisser échapper des informations concernant les secrets manipulés. Les attaques basées sur ce constat, regroupées sous la dénomination "attaque par canal secondaire" (Side Channel Attack) peuvent mettre à bas des cryptosystèmes pourtant réputés surs. Origine de la proposition Le sujet émane de la société Ingenico, spécialiste mondial des solutions de transactions sécurisées. Créé en France en 1980, le groupe est maintenant implanté dans toute l'Europe de l'ouest, mais aussi aux États-Unis,en Amérique latine, en Chine, au Japon, en Australie et dans de nombreux autres pays d'Europe de l'Est, d'Asie et d'Afrique. Ingenico détient la base installée de terminaux de paiement (plus de 350.000 appareils) la plus importante de France. La fusion-absorption de MoneyLine par Ingenico intervenue le 31 octobre 2006 a fait en outre d'Ingenico le leader des solutions monétiques pour la grande distribution et le commerce organisé. Intérêt du projet Impliqué dans le développement et la fabrication de terminaux de paiement, Ingenico se trouve confronté, en tant que fournisseur de matériels effectuant des opérations cryptographiques sensibles (transactions bancaires), aux éventuelles fuites d'information engendrées par des attaques par canaux secondaires. La mise en place de contremesures est indispensable, tout comme la mesure de leur efficacité en vue d'obtenir les certifications nécessaires.
Place du laboratoire d'attaques dans la chaîne de certification
L'attaque par canal secondaire la plus efficace à ce jour reposant sur une analyse de la consommation électrique des composants, Ingénico doit se doter d'un laboratoire d'attaques par analyse de courant. Ce laboratoire doit être capable d'appliquer les attaques en vue d'apprécier la résistances des contres-mesures, logicielles ou matérielles intégrées aux composants. Disposer en interne d'un tel outil permettra à Ingenico d'effectuer des tests poussés de ses produits avant soumission aux organismes de certification, et ainsi de s'assurer d'obtenir rapidement les autorisations de mise sur le marché. En effet, le processus de certification est un processus qui peut être long et coûteux, d'autant plus en cas de non conformité du produit. Il est donc impératif pour Ingenico de proposer à la certification des produits fortement testés pour réduire le "time to market".
Objectifs du projet Il s'agit de mettre au point un laboratoire de test permettant l'évaluation de la sécurité des composants de terminaux face aux attaques par analyse de courant. La résistance sera évaluée en fonction du nombre de couples données manipulées/traces de consommations nécessaires pour obtenir le secret. Lorsque ce nombre surpasse ce qu'il est possible d'obtenir (cette quantité peut, par exemple, excéder la durée de vie de la carte à puce), alors il est possible de conclure que les contres mesures sont efficaces. Le laboratoire d'attaque peut se décomposer en deux modules distincts Le premier module, appelé "chaîne d'acquisition" devra permettre la capture des consommations électriques d'une maquette équippée d'un microprocesseur ARM. ARM est le type de microprocesseur retenu par Ingenico car c'est la principale architecture embarquée dans les terminaux de paiement électronique. La chaîne d'acquisition se compose: D'un point de mesure de la consommation de courant sur la maquette. Une version simple peut se résumer à une résistance de faible impédance placée entre l'alimentation et la broche Vcc du microprocesseur. La tension mesurée aux bornes de cette résistance permet d'obtenir la consommation. D'un oscilloscope numérique permettant un échantillonnage haute fréquence (de l'ordre de 500 Mhz) et capable de stocker temporairement tous les échantillons D'un ordinateur relié à l'oscilloscope pour récupérer en quasi temps réel les mesures, et programmé pour stocker ces résultats pour exploitation ultérieure (lot de fichiers, type trace001, trace002 etc...) D'une méthode de synchronisation entre l'algorithme de chiffrement s'exécutant sur la maquette et l'oscilloscope, afin d'obtenir des traces de consommation correspondant toutes à la même phase de l'algorithme. Le second module correspond aux attaques cryptanalytiques. Il repose sur l'implémentation d'algorithmes d'attaque. Ces programmes seront exécutés sur une machine distincte et s'appuieront sur les données récoltées par la chaîne d'acquisition pour extraire les secrets de la simple consommation de courant. Les attaques qui seront implémentées s'articuleront autour de: Attaque par analyse différentielle de courant, dite DPA (Differential Power Analysis) Attaque par analyse de la corrélation du courant, dite CPA (Correlation Power Analysis) La réalisation de ce second module est le point central de notre projet. Moyens Étant en filière informatique, nous disposons d'une journée et demi par semaine pour travailler le projet : le lundi et le jeudi matin. Mais suivant par ailleurs les cours de Master Recherche Algorithmes et Modèles de l'Information le lundi, nous sommes obligés de répartir l'équivalent d'une journée de travail sur la semaine. Au total, nous représentons 3 jours-homme par semaine. Le projet s'étalant de la semaine 4 (9 octobre, calendrier ensicaen) à la semaine 17 (5 février, calendrier ensicaen), il est réparti sur 13 semaines. De plus, 5 jours entiers sont dédiés au projet : 8 au 12 janvier 2007 (10 jours-homme). Nous disposons donc, théoriquement pour ce projet de 49 jours hommes. Des modifications d'emploi du temps ont toutefois réduit ce capital. Afin de nous prêter main forte, deux élèves de la filière électronique nous ont rejoint et contribuent au projet à hauteur de 34 jours-homme. Les moyens humains alloués au projet totalisent donc 83 jours-homme. Répartition du travail L'objectif global du projet est de mettre en place un outil qui permet de tester la résistance d'un dispositif cryptographique aux attaques par DPA. Il est divisé en deux sous-objectifs : acquérir les traces de courant (acquisition) et les traiter (traitement). L'aquisition est réalisée par M. EL HAIDACHE et M. QEBIBO, élèves ingénieurs issus de la filière électronique. La réalisation du traitement nous incombe. Afin de permettre un travail délocalisé dans le temps et dans l'espace, nous avons défini en collaboration avec nos collègues les pré-requis et les objectifs de chacun des sous-objectifs.
Répartition du travail
Pré-requis de l'acquisition Pendant la phase d'acquisition, l'expérimentateur a à sa disposition un oscilloscope numérique avec une connexion PC, une sonde et les logiciels adéquats (Matlab / Labview / Mathematica). De plus, on émet l'hypothèse que le calcul cryptographique peut être délimité facilement (utilisation des GPIOGeneral Purpose Input Output. Il est possible de programmer l'algorithme de chiffrement de sorte qu'il envoie une information via ce port de communication au début et à la fin du chiffrement. Cette information peut alors être utilisée pour synchroniser la chaîne d'acquisition. par exemple). Objectif de l'acquisition / pré-requis du traitement Le but de l'acquisition est de fournir des traces de courant associées à leur chiffré (la trace doit être délimitée et utilisable informatiquement). Ces données seront utilisées par la partie traitement. Objectif du traitement La phase de traitement a pour but de déterminer le nombre de traces de courant nécessaires pour trouver la clé d'une opération cryptographique.
Travail effectué Organisation Le projet étant divisé en deux grandes parties (acquisition et traitement), chacune traitée par un groupe de personnes différent, il était primordial de trouver un outil de communication simple et efficace. Nous avons décidé, après étude, d'utiliser le logiciel Trac. C'est une application web de gestion des sources (SCM) et de gestion de projet intégré. Il est très adapté pour les petits projets (quelques dizaines de personnes) et est utilisé par beaucoup de projets Open Source. Il nous permet de travailler de manière désynchronisée dans le temps et dans l'espace avec nos collègues, via l'url . Diagramme de Gantt La présente les différentes tâches de notre projet. La signification des couleurs est la suivante: Le vert correspond aux tâches communes de documentation Le jaune définit les tâches propres à la partie acquisition En bleu sont regroupées les tâches de traitement, c'est le corps de notre travail La barre noire au centre de chaque tâche représente son état d'avancement.
Diagramme de Gantt
Durant l'étape "recherche documentaire" nous avons réalisé une étude approfondie des techniques d'attaque par canaux secondaires, qui comprend les attaques par analyse de courant (SPA, DPA, CPA). Elle fait l'objet du Élaboration du diagramme de Gantt Suite à la spécification des besoins de ce projet, nous nous sommes appliqués à définir une liste précise de tâches finement délimitées et à les échelonner dans le temps en fonction de leurs liens de précédence. Cette approche nous a permis, d'une part, d'évaluer plus précisément le temps nécessaire pour mener à bien le projet. D'autre part, nous avons pu mesurer au fur et à mesure l'avancée du projet, et ainsi éviter l'effet tunnel. Un dernier avantage de ce découpage est qu'il nous a été possible de recetter individuellement les tâches, des tests ayant été écrits pour valider le bon fonctionnement de chaque nouvelle tâche. Suivi des prévisions L'importance que nous avons accordé à la plannification du projet nous a permis de bien démarrer le projet et de pouvoir accorder un temps suffisant à chaque partie, sans craindre la prise de retard. Dans un premier temps, nous avons pu réaliser nos tâches dans le temps imparti, mais les problèmes que nous avons rencontrés, en particulier les soucis autour de la fourniture de la maquette et des algorithmes ont finalement eu raison de notre ponctualité.
Problèmes rencontrés Au fur et à mesure de l'avancement du projet nous avons rencontré un certain nombre de difficultés. Traitement dépendant de l'acquisition Le premier problème auquel nous avons dû faire face est la dépendance des parties acquisition et traitement. En effet, afin de vérifier la validité de nos algorithmes nous avions besoin des données (traces de courant et messages chiffrés) produites par l'équipe travaillant sur la partie acquisition. Il est clair que nous ne pouvions attendre que nos collègues aient fini leur partie pour commencer à travailler. Nous avons alors décidé d'utiliser un modèle mathématique pour générer des traces de courant. Ce modèle étant assez éloigné de la réalité, un second problème s'est alors posé : l'algorithme ne se comportait pas comme prévu, nous obligeant alors à appliquer du traitement de signal à certains moments de l'algorithme. Implémentation sous Mathematica Initialement, le descriptif du projet prévoyait une implémentation des algorithmes sous Mathematica, un langage de calcul formel. L'obtention de ce logiciel nous aurait très certainement posé problème, c'est pouquoi nous lui avons préféré le logiciel de calcul matriciel Matlab, dont une version est fournie par l'école. De plus, ayant déjà utilisé Matlab auparavant, nous n'avions pas à apprendre un nouveau langage. Nous avons mentionné ce point dans le cahier des charges et cela a été validé. Absence de la maquette ARM Dès le début du projet, il a été convenu que nous aurions accès à une maquette de test afin de recueillir les données nécessaires à la validation de notre travail. Cette maquette comporte un microprocesseur de type ARM sur lequel nos collègues auraient pu brancher un oscilloscope numérique et acquérir les traces de courant. Malheureusement, malgré nos demandes répétées et l'intervention de M. CUOZZO auprès d'Ingénico nous n'avons toujours pas reçu cette maquette. Son absence fût fort dommageable pour l'avancement du projet. En effet, sans elle la validation des algorithmes fût lente et difficile. Ne pouvant obtenir la maquette auprès d'Ingénico, nous nous sommes alors tournés vers Pascal PAILLIER, chercheur chez Gemalto, lors de son intervention à l'université de CAEN. Il nous a aimablement fourni des informations et un ensemble de données permettant de tester nos implémentations. Ces données comprennent : 40 traces d'émanation radio-fréquence (100 µs échantillonnées à 500 MHz) d'une carte à puce exécutant un DES, 5000 traces de courant d'une carte à puce exécutant une exponentiation modulaire RSA. État d'avancement Comme convenu dans le cahier des charges, nous avons implémenté les algorithmes nécessaires à la mise en place du laboratoire d'attaques. Néanmoins les tâches nécessitant la maquette ARM n'ont pu être menées à terme (benchmarking d'algorithmes, prise en main de la plateforme ARM, tests et validation). Au vu de l'avancement du projet et du temps restant, nous avons choisi de ne pas débuter la phase d'implémentation. De plus, les algorithmes n'ayant pas pu être validés rigoureusement, il serait futile de vouloir les transcrire dans un langage bas niveau, toute correction ou amélioration impliquant de très lourdes modifications dans le code transcrit. Afin de palier à l'absence de validation rigoureuse (due à l'absence de la maquette) et d'implémentation dans un langage bas niveau, nous proposons à Ingénico de procéder à la validation des algorithmes au sein de leur laboratoire, d'y appliquer les éventuelles modifications et enfin d'utiliser l'outil Matlab CompilerMatlab Compiler permet de traduire automatiquement du code Matlab en C/C++, Java ou .Net afin de transcrire automatiquement le code Matlab dans un langage bas niveau. Le code résultant peut ensuite être intégré à une application métier. Descriptif du produit livré Le produit que nous livrons à Ingénico est composé de deux ensembles : les algorithmes du laboratoire d'attaques et une documentation. Les algorithmes sont implémentés à l'aide de Matlab. Ils comprennent une implémentation du DES, de la DPA, de la CPA et un modèle de consommation de courant. La documentation détaillée des attaques par analyse de courant est présentée . Elle est aussi disponible en ligne La documentation est accessible via , ce présent rapport et une soutenance orale la complètant. Résultats obtenus L'objectif du laboratoire d'attaque est de tester l'efficacité des contremesures. Ainsi il doit être en mesure de trouver le secret (en totalité ou en partie) utilisé lors d'une opération cryptographique. Cet objectif est atteint. En effet, notre implémentation de l'algorithme de la DPA a, avec succès, retrouvé une sous-clé DES (48 bits) en utilisant environ 200 traces de courant, et ce en 10 minutes sur un PC personnel. Notre implémentation de l'algorithme de la CPA a quant à elle retrouvé une sous-clé DES en utilisant 40 traces d'émanations radio-fréquence, et ce en 20 minutes sur un PC personnel.
Analyse de courant Traditionnellement, les cryptanalystes se basent sur les propriétés mathématiques des algorithmes cryptographiques pour en trouver les faiblesses, mais depuis peu sont apparues de nouvelles méthodes de cryptanalyse, visant non plus les propriétés mathématiques mais leur implémentation. Cette nouvelle approche rassemble les attaques par canal secondaire. On dit qu'une telle attaque est possible lorsqu'un attaquant a accès à de l'informations fournie à son insu par l'implémentation d'un algorithme cryptographique. Ces informations ne sont ni le texte clair ni le texte chiffré, c'est pour cette raison que l'on parle de canal secondaire. (cf. et )
Principe des canaux secondaires
Il existe plusieurs canaux secondaires : la consommation de courant les radiations électromagnétiques les sons (pour les systèmes mécaniques) les informations temporelles (cf. ) En 1998 Paul Kocher a annoncé une nouvelle méthode de cryptanalyse : l'attaque par analyse de courant. Cette attaque repose sur le fait que les circuits intégrés sont composés de portes logiques qui, lorsqu'elles changent d'état, consomment une certaine quantité de courant. En mesurant cette consommation et en la mettant en rapport avec certains bits des données de la clé secrète, on peut retrouver cette dernière. Par exemple, il peut arriver que lors de l'exécution d'un algorithme, la condition d'un branchement s'appuie sur la valeur d'un bit d'une information secrète, comme la clef par exemple. Les sauts engendrant des différences importantes dans la consommation de courant, il est relativement trivial de détecter si le saut a eu lieu, et donc d'obtenir de l'information sur la valeur utilisée dans la condition du branchement. Il existe différents types d'attaques, que l'on peut classer en deux catégories : les attaques simples et les attaques différentielles. Modèle de fuite La est un modèle simplifié d'une carte à puce qui permet de mieux comprendre l'origine des fuites d'information. La carte est normalement alimentée en 5V entre Vdd et Vss mais si l'on place une faible résistance (quelques Ohms) entre Vdd et la masse, on peut mesurer la consommation de courant à l'aide d'un oscilloscope. Dans un circuit CMOS la consommation de courant a majoritairement lieu lors des changements d'état. Lorsque Vgate change de voltage, les transistors Q1 et Q2 sont tous les deux conducteurs pendant un très court instant, créant ainsi une légère surconsommation de courant. Pendant ce temps, le condensateur Cload est déchargé (ou chargé) diminuant (ou augmentant) la consommation de courant. Il y a ainsi deux types de fuite d'information : celles liées au poids de Hamming (état de Cload) et celles liées au nombre de transitions (changement d'état de Vgate).
Mesure de la consommation de courant
Une grande partie des fuites d'information est due aux bus de communication du microprocesseur. Il est intéressant de noter que les bus préchargés (cf. ) sont très intéressants lors des attaques par analyse de courant. En effet, avec ce type de bus on connait toujours la valeur présente sur ce dernier avant une transition. Ainsi, le nombre de zéros chargés sur le bus détermine la quantité de courant déchargée (l'état de Cload est la source de courant prédominante). Lorsque le système analysé n'utilise pas les bus préchargés, il est fort probable que la valeur précédente du bus soit une constante (une adresse mémoire par exemple). On peut alors déterminer par mesure du courant le nombre de changements d'état sur le bus (le changement d'état de Vgate est la source de courant prédominante). Pour de plus amples détails, voir .
Attaques par analyse simple de courant Dans les attaques par SPA, on mesure le courant consommé de manière très précise dans le temps (haute fréquence d'échantillonnage) puis, visuellement, on identifie les différentes parties de l'algorithme et enfin on analyse les différentes opérations effectuées afin d'en déduire des informations sur le secret. Par exemple, la forme de la courbe de courant sur la permet de retrouver tous les bits de la clé secrète d utilisée lors d'une signature RSA. En effet, l'exponentiation modulaire s = md mod e est souvent implémentée à l'aide de l'algorithme Carré-Multiplier ("Square and Multiply" en anglais). Ce dernier consiste, pour chacun des bits de l'exposant d (la clé secrète), à mettre la variable s au carré et si et seulement si ce bit vaut 1, la multiplier par m. Ainsi, il suffit d'observer la trace de courant pour différencier les carrés (ils sont identiques) des multiplications (elles ne se ressemblent pas et sont toujours suivies d'un carré). Il également intéressant de noter que le premier bit valant toujours 1, les deux premières opérations sont toujours un carré puis une multiplication.
Attaque par SPA sur une exponentiation modulaire RSA
Cette attaque a l'avantage d'être simple, mais elle a de nombreux inconvénients : elle nécessite une haute fréquence d'échantillonnage, elle est difficilement automatisables et ses contremesures sont simples.
Attaques par analyse différentielle de courant Cette attaque s'appuie sur des relevés de consommation, tout comme la SPA, mais un traitement statistique approprié permet de glaner de l'information à partir de relevés moins précis.
Extraction de la clé
Le traitement statistique s'appuie sur le maximum de vraisemblance d'une hypothèse pour obtenir le secret. Dans un premier temps, une analyse de l'algorithme attaqué est nécessaire pour découper le problème en sous problèmes plus petits, problèmes dont on connait soit l'entrée, soit la sortie, et qui utilise un secret (méthode "diviser pour regner"). Pour chaque sous problème, une hypothèse est faite quand au secret qu'il manipule, puis les données connues (entrée ou sortie) sont fournies à un oracle qui sépare en deux groupes les relevés de consommation associés. Considérant que le secret manipulé influe sur la consommation de courant, il est possible de constater le bien fondé de l'hypothèse en mesurant l'écart entre les 2 groupes de traces formés. En effet, si l'hypothèse est correcte, l'oracle a séparé les traces en fonction de la valeur des données inconnues (test sur un bit: 0 ou 1 en entrée ou sortie selon la donnée connue). La différence entre la moyenne des 2 ensembles correspond à l'influence des données traitées (du moins un bit des données) sur la consommation. Dans le cas où l'hypothèse est fausse, l'oracle ne peut déterminer la donnée inconnue, et donc ne peux classer les traces en fonction. La séparation en 2 ensembles est quasi-aléatoire, par conséquent leur moyenne ne présente pas de différence notable. En testant successivement toutes les hypothèses possibles concernant un sous problème (recherche exhaustive sur ensemble très réduit), il est possible de détecter l'hypothèse la plus vraisemblable, celle qui correspond à la séparation en 2 sous ensembles très différents et d'en déduire la valeur du secret manipulé. Appliquée à chaque sous problème, cette méthode permet d'extraire, selon l'algorithme, tout ou partie du secret manipulé.
La consommation varie en fonction du clair
Dans le cas d'un chiffrement DES, on peut s'intéresser à la consommation de courant durant le 16ème tour. Chaque tour utilise une sous clef (48b) dérivée de la clef maitre (56b). La sous clef est elle même découpée en 8 morceaux de 6 bits, qui sont utilisés pour produire les données de sortie du tour, qui correspond, dans le cas du dernier tour, au message chiffré. La corrélation existant entre les données en entrée, restreintes à un bit b impliquant le morceau de sous clef cherché et la consommation va permettre de deviner la clef. En effet, la fonction permettant de retrouver le bit source à partir du chiffré utilise le morceau de sous clef cherché. En premier lieu, il est nécessaire de récupérer des traces de consommation électrique (consommation en fonction du temps), associées au chiffré obtenu. Ensuite on choisit une valeur K pour le morceau de sous clef à trouver. Cette valeur permet, à l'aide d'une fonction permettant d'inverser l'effet du dernier tour de DES, de trouver une partie de la valeur d'entrée de ce tour, dont le bit b. On sépare les traces suivant que ce bit est estimé a 0 ou 1. On calcule la trace moyenne pour chaque groupe, puis la différence des 2 traces moyennes. A partir de la trace différentielle, il est possible de voir si la valeur K de la clé choisie est correcte. Explications: si K est faux, la probabilité que le bit b, calculé à partir de K et du chiffré, soit exacte est environ 1/2. Dans ce cas, la séparation faite entre les traces de consommation est aléatoire, les moyennes effectuées dans chaque sous groupe n'ont pas de raison de différer, la trace différentielle est donc proche de 0 (présence de bruit). Par contre, si la valeur de K est correcte, alors b est calculé correctement, et les sous groupes sont bien classés en fonction de l'entrée. Dans ce cas la trace différentielle présente des pics aux endroits où la valeur de b influe sur la consommation electrique (car la consommation est liée aux valeurs d'entrée).
Différence caractéristique et validité de la clé
Un morceau de sous clef ne comportant que 6 bits, il est nécessaire de tester 64 possibilités pour découvrir un morceau de sous clef. En appliquant cette méthode pour chacun des 8 morceaux de sous clef, il est possible de la deviner avec un nombre d'opérations finalement assez restreint. On peut ensuite en déduire la clef maitresse, par force brute par exemple.
Attaque par corrélation L'attaque par DPA permet de trouver la clé, mais elle nécessite un nombre élevé de traces de mesures. En effet, c'est l'influence d'un seul bit sur la consommation qui est prise en compte. L'influence des autres bits est alors considérée comme du bruit, qui se résorbe avec l'augmentation du nombre de courbes. Par ailleurs, la détection des pics au cours de la DPA est rendue difficile par l'apparition fréquente de "pics fantômes". Ces pics se manifestent à coté du pic principal, ou bien apparaissent même si l'hypothèse sur la clé est fausse. La hauteur de ces pics peut dépasser celle du pic principal, engendrant des erreurs dans l'interprétation du résultat. L'efficacité de la DPA repose en fait sur l'indépendance du bit obsvervé avec les autres bits du même mot, et sur l'absence de lien entre la consommation et le bit observé, sauf au moment ou celui ci est effectivement observé. Or il apparait que ces pré-requis ne sont pas respectés. Les valeurs des bits ne sont pas indépendantes, car elle sont assujetties au design des S-Box (dans le cas du DES), et sont donc possiblement corrélées. Par ailleurs, les bits ne sont pas manipulés qu'une seule fois, et leur influence se diffuse dans le temps. Ces raisons expliquent la présence des pics fantômes. Pour parer ce phénomène particulièrement génant a été introduit le concept de CPA, ou Correlation Power Analysis (voir ). L'idée est de mieux exploiter le modèle de fuite, en remarquant que celui-ci crée une relation linéaire liant la consommation et la distance de hamming entre les données manipulées et une valeur constante, cette constante dépendant de l'architecture. La prise en compte de cette linéarité autorise la détection de la bonne hypothèse de sous clé (le fonctionnement global de la DPA est inchangé) simplement par l'observation du coefficient de corrélation maximum. L'application de la CPA suit les étapes suivantes, lorsqu'elle est appliquée à l'algorithme DES: Choix d'un tour (généralement le premier ou le dernier, selon que l'on dispose de l'accès aux messages clairs ou aux messages chiffrés) et d'une S-Box Énumération des hypothèses concernant la valeur d'une sous clé pour ce tour. Prendre une valeur de sous clé, calculer la valeur des données manipulées en fonction de cette hypothèse, puis la distance de Hamming entre cette valeur et la constante. On obtient alors une distance Di pour chaque courbe i. Calculer, pour chaque instant t, le coefficient de corrélation entre les Di et les valeurs des courbes i à cet instant t. Le maximum de la courbe des coefficients de corrélation en fonction du temps est alors associé à l'hypothèse. Lorsque chaque hypothèse a été traitée, l'hypothèse qui est associée au coefficient de corrélation le plus élevé est considérée comme la bonne hypothèse. Un morceau de sous clé est alors trouvé. Les morceaux de sous clé restants sont obtenus en réitérant les précédentes étapes sur les autres S-Box, tout comme dans le cas de la DPA. La CPA est une approche qui permet de réduire la quantité de courbes nécessaire tout en facilitant la détection des bonnes hypothèses, c'est pourquoi nous avons souhaité l'introduire dons notre laboratoire d'attaques.
Conclusion A l'issue de ce projet, nous pouvons mettre à la disposition d'Ingenico notre étude documentaire, ainsi qu'une implémentation sous le logiciel Matlab des attaques par DPA et CPA. Cet ensemble représente une part non négligeable du laboratoire d'attaques, mais il doit toutefois, pour son utilisation en production, être associé à la chaine d'acquisition réalisée par la seconde équipe d'élèves ingénieurs, et disposer d'une interface de commande, qu'il reste à développer. Ce projet de fin d'étude a été pour nous l'occasion de nous investir une nouvelle fois dans un projet dont l'envergure dépasse celle des incontournables (mais néanmoins formateurs) travaux pratiques. Au contact d'une entreprise, nous avons dû faire montre, en plus de nos compétences techniques, de qualité d'organisation et de communication. Via la mise en place des outils de travail collaboratif, la rédaction d'un cahier des charges précis et le suivi régulier de la documentation et des réunions, nous avons fait preuve du sérieux et du professionnalisme qu'Ingenico était en droit d'attendre de notre part. En outre, et concernant plus particulièrement le sujet de ce projet, nous avons découvert un pan entier de la cryptanalyse que nous ne connaissions pas. En tant qu'étudiant spécialisé dans la sécurité des systèmes, cela représentait un manque flagrant, surtout lorsque l'on prend en compte l'efficacité de ces attaques par canaux secondaires. Grâce à ce projet, nous avons pu nous documenter et implémenter nous même avec succès quelques unes de ces attaques. Retrouver une clé DES 56 bits en seulement vingt minutes est une expérience qui aiguisera notre perception de la sécurité globale d'un système, et nous rappelera le soin qu'il est nécessaire d'apporter, dans ce domaine, à tous les détails. Bibliographie Ci-dessous la liste des références utilisées lors de notre projet. KOCHER P. , JAFFE J. , JUN B. <emphasis>Differential Power Analysis.</emphasis> Cryptography Research Inc. [en ligne]. 1998. http://www.cryptography.com/resources/whitepapers/DPA.pdf KELSEY J., SCHNEIER B., WAGNER D., HALL C.. <emphasis>Side Channel Cryptanalysis of Product Ciphers.</emphasis> [en ligne]. 2000. http://www.schneier.com/paper-side-channel.html BAR-EL H. <emphasis>Introduction to Side Channel Attacks.</emphasis> Discretix. [en ligne]. 2000. http://www.hbarel.com/publications/Introduction_To_Side_Channel_Attacks.pdf PERCIVAL C. <emphasis>Cache missing for fun and profit.</emphasis> [en ligne]. http://www.daemonology.net/papers/htt.pdf MESSERGES T. S., DABBISH Ezzy A., SLOAN R. H.. <emphasis>Investigations of Power Analysis Attacks on Smartcards.</emphasis> [en ligne]. 1999. http://www.usenix.org/events/smartcard99/full_papers/messerges/messerges.pdf BRIER E., CLAVIER C., OLIVIER F.. Gemplus Card International France Security Technology Department. <emphasis>Correlation Power Analysis with a Leakage Model.</emphasis> [en ligne]. 2004. https://projects.itix.fr/studies/DPA/files/springerCryptoHardwareAndEmbeddedSystemsCHES2004.pdf Schémas électroniques Sur la les broches du port B sont préchargées par l'utilisateur à une valeur de son choix. (Source: http://www.fairchildsemi.com/ms/MS/MS-523.pdf)
Bus préchargé
Glossaire La plupart de ces définitions sont tirées du projet Wikipedia (). Analyse de courant En cryptanalyse de matériel cryptographique, l'analyse de consommation consiste à étudier les courants et tensions entrants et sortants d'un circuit dans le but de découvrir des informations secrètes comme la clé de chiffrement. ARM Les processeurs ARM, Acorn RISC Machines, sont basés sur une architecture RISC 32 bits. C'est une architecture simple et performante qui a été développée par la société ARM Ltd.. Attaque par canal secondaire Les attaques par canaux secondaires font partie d'une vaste famille de techniques cryptanalytiques qui exploitent des propriétés inattendues d'un algorithme de cryptographie lors de son implémentation logicielle ou matérielle. Cf. . CPA Correlation Power Analysis (Analyse de courant par corrélation, en français). Cf. . DPA Differential Power Analysis (Analyse différentielle de courant, en français). Cf. . Power analysis Voir Side Channel Attack Voir . SPA Simple Power Analysis (Analyse simple de courant). Cf. . Ce document a été rédigé avec l'éditeur de texte Emacs en utilisant le langage de description de publication Docbook, version 4.2 XML . Les différents documents ou publications en résultant ont été générés grâce, entre autres, aux logiciels libres suivants: Apache-Xerces , un analyseur XML Apache-Xalan , un processeur de transformation XSLT Apache-Fop , un outil de rendu dirigé par XSL Ainsi que d'autres bibliothèques du groupe de projets XML d'Apache