Sie sind auf Seite 1von 45

Universit de Bordeaux 1 UFR de Mathmatiques Matre de stage : Cdric Mesnil Tuteur universitaire : Olivier Ly

SIMULATEUR DATTAQUES HARDWARE ` SUR CARTES A PUCE


Oriane Agostini

Versailles, le 21 septembre 2009

Table des matires


Remerciements Introduction 1 Prsentation de lentreprise 1.1 1.2 Gnralit et historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activit de Trusted Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 2 Les cartes puces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les terminaux professionnels et mobiles . . . . . . . . . . . . . . . . . . . tudes scuritaires et tests . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 5 5 6 6 7 7 9 9 9 10 10 11 12 13 14 15 15 15 15 16 17 18 18 19 19 20

Les micro-contrleurs 2.1 Gnralits sur les micro-contrleurs . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 2.2.3 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gros plan sur le processeur . . . . . . . . . . . . . . . . . . . . . . . . . . Les diffrents types de mmoire . . . . . . . . . . . . . . . . . . . . . . . Les diffrents registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les modes dadressage . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Le 8051 dIntel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Les algorithmes de chiffrement DES et AES 3.1 DES : Data Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.2 Le chiffrement DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le passage dans les sbox . . . . . . . . . . . . . . . . . . . . . . . . . . . La gnration des clefs de tour . . . . . . . . . . . . . . . . . . . . . . . . La fonction AddRoundKey . . . . . . . . . . . . . . . . . . . . . . . . . . La gnration des clefs de tour . . . . . . . . . . . . . . . . . . . . . . . .

AES : Advanced Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . .

Les principales attaques physiques sur cartes puce 4.1 4.2 SPA : Simple Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DPA : Differential Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3

Les attaques par injection de fautes . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 4.3.2 DFA : Differential Fault Analysis . . . . . . . . . . . . . . . . . . . . . . CFA : Collision Fault Analysis . . . . . . . . . . . . . . . . . . . . . . . .

22 22 22 23 24 24 24 25 25 26 27 28 29 29 31 31 34 36 37 37 38 38 39 40 41 43 44

4.4 4.5 5

CPA : Correlation Power Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Travail effectu 5.1 5.2 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Etude du micro-contrleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 5.2.2 5.2.3 5.2.4 5.3 5.4 5.5 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mise en place des outils . . . . . . . . . . . . . . . . . . . . . . . . . . . Le simulateur de carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le modle de consommation de courant . . . . . . . . . . . . . . . . . . .

Implmentation du modle de consommation de courant . . . . . . . . . . . . . . Premiers rsultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les tests dattaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.1 5.5.2 5.5.3 5.5.4 Simulation dune attaque DPA sur le DES . . . . . . . . . . . . . . . . . . Simulation dune attaque SPA sur le DES . . . . . . . . . . . . . . . . . . Simulation dattaque DPA sur lAES . . . . . . . . . . . . . . . . . . . . . Simulation dattaque SPA sur lAES . . . . . . . . . . . . . . . . . . . . . Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modulation des facteurs pris en compte . . . . . . . . . . . . . . . . . . . Variation des paramtres du modle . . . . . . . . . . . . . . . . . . . . .

5.6

Problmes rencontrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.1 5.6.2 5.6.3

Conclusion Rfrences A Zoom sur le DES B Zoom sur lAES

R EMERCIEMENTS
Je tiens remercier mon matre de stage, Cdric Mesnil, pour mavoir permis deffectuer mon stage sur un sujet des plus intressants, pour ses conseils aviss et son aide tout au long de ces 6 mois. Je remercie galement Olivier Tomaz pour le temps quil a consacr maider dans mes recherches. Merci mon professeur, Emmanuel Fleury, de mavoir permis dcrire un article pour le MISC. Enn, je remercie Aurlie, Guillaume et Toni , ainsi que tous les employs de Trusted Logic pour leur accueil.

Introduction
De nos jours, les cartes puces sont des outils indispensables ; elles stockent des donnes condentielles (sant, bancaire, identit), ce qui en font des cibles de choix pour les attaquants et pirates de tout bord. Paradoxalement, lutilisation dalgorithmes de chiffrement les rend sensibles de nombreuses attaques. En effet, ces derniers ncessitent dtre implments avec une grande prudence. Il est donc important dprouver la rsistance dune carte puce face grande diversit dattaques, dont une famille particulirement redoutable : les attaques par canaux cachs. La principale problmatique est de dtecter la prsence de ces canaux cachs. Pour cela, nous disposons de plusieurs mthodes, tout dabord lapproche la plus logique, lespionnage de la grandeur physique qui nous intresse (consommation de courant (DPA/SPA), perturbations electronmagntiques (EMA), ...). Cependant, cette solution, bien que trs efcace, impose une grande matrise de lenvironnement dacquisition (oscilloscope, sonde, amplicateur dinstrumentation ...) ainsi quune grande exprience pour la mise en place de cet environnement. Une autre voie existe, bien moins explore dans la littrature, il sagit de la simulation des canaux cachs. Cette mthode rpose sur lhypothse quil est toujours possible, avec plus ou moins de prcision, de corrler les instructions excutes par un microcontroleur avec la grandeur physique qui nous intresse pour lattaque considre. Un avantage de cette technique est quil est trs simple de lautomatiser, elle ne ncessite que la connaissance de lattaque et aucune des moyens despionnage physique. Linconvnient majeur est quil faut interprter les donnes de la simulation en modlisant la transformation entre lexcution simule et la grandeur physique considre. Le projet SAS (Security Analysis by Simulation), sur lequel jai travaill lors de mon stage de n dtudes, est un simulateur de carte puce, plus prcisment de micro-contrleur, reproduisant lexcution dun programme, en vue de la ralisation dattaques physiques. Ce simulateur produit une trace dexcution simule qui rassemble toutes les informations ncessaires pour mener ces attaques. Lobjectif de mon stage est de raliser un modle de consommation de courant an dinterprter cette trace. Ma mission a t, dans un premier temps, de me familiariser avec les attaques physiques et les micro-contrleurs, puis dtablir un modle de consommation de courant adapt au processeur vis par les attaques, dimplmenter et vrier ce modle, et nalement, de mener des attaques physiques, en particulier SPA et DPA sur le DES. Aprs avoir prsent la socit Trusted Logic, jeffectuerai un rappel sur les microcontrleurs, les algorithmes de chiffrement DES et AES, et les attaques physiques. Puis je prsenterai le travail que jai effectu en expliquant chaque tape et les problmes rencontrs.

1
1.1

Prsentation de lentreprise
Gnralit et historique

Trusted Logic est une socit spcialise dans le dveloppement de composants scuriss pour systmes JAVATM embarqus, et offre galement des prestations reconnues en matire dvaluation scuritaire. Cre en 1999, lissue dun projet de recherche et dveloppement men conjointement par lINRIA et Bull/CP8, la socit compte une centaine de personnes rparties sur cinq sites : Versailles (Yvelines, France), qui sont les locaux de la maison mre Sophia Antipolis (Alpes Maritimes, France) Dublin (Irlande) Singapour (Asie), qui sont des bureaux commerciaux Afrique du Sud, o des bureaux commerciaux ont t crs cette anne.

La mission principale de Trusted Logic tait de devenir leader sur le march des logiciels scuriss et sur les services daccompagnement pour les systmes embarqus. Aprs dix annes dexprience, Trusted Logic a acquis une notorit internationale, reconnue et rcompense de plusieurs Awards prestigieux, dans le domaine des cartes puce et de lexpertise scuritaire pour systmes embarqus. Ses principaux clients sont : Des fabricants de puces : ARM, Atmel, Inneon, Renesas, STMicroelectronics, Texas Instruments Des fabricants de cartes : Gemalto, Incard (STM), Sony Des fabricants de terminaux : Gemalto Terminals, Ingenico, Sagem, Thales, Wave Systems, Xiring Des consortiums : GlobalPlatform, STIP, GIE Sesam-Vitale, GIP CPS Des oprateurs bancaires et tlcoms : MasterCard International, Visa International, BMS, Carte Bleue, Crdit Agricole, GIE Cartes Bancaires, SFR Des fournisseurs de systmes et dapplications : Datacard, Proton World (STM), Sun R Microsystems, Viaccess. Trusted Logic a cr, en 2005, la liale Trusted Labs, base Versailles. Cette liale est spcialise dans les prestations dexpertise en scurit informatique. Elle offre des services danalyse de risque, de rdaction de documents scuritaires (prols de protection, politique de scurit, ...), dvaluation de systmes scuriss, darchitecture et de conception, de choix technologiques, etc. Trusted Logic a fusionn, il y a deux ans, avec Bantry, un partenaire de longue date. Cette fusion rapproche Trusted Logic de son objectif initial en protant de la notorit de Bantry dans le domaine des applications scuriss sur carte SIM. Cette anne, Trusted Logic a t rachet par Gemalto, devenant ainsi une liale du leader mondial de la scurit numrique.

1.2

Activit de Trusted Logic


Trusted Logic compte quatre grands domaines dactivits : les cartes puces et token scuriss les terminaux professionnels (ceux de paiement majoritairement) les terminaux mobiles et les systmes scuriss grand public le conseil en scurit. Les cartes puces

1.2.1

Cest lactivit dveloppe depuis la cration de Trusted Logic et cest aussi celle qui lui a permis de se faire connatre des grandes entreprises internationales. La Business Unit SST (Smart card and Secure Token) offre un ensemble doutils et de services pour le dveloppement dapplications scurises en environnement Java CardTM reposant sur jTOP, la plate-forme de dveloppement de Trusted Logic. Ces applications tant destines tre embarques sur cartes puces et donc utilises dans un contexte hostile, elles doivent rpondre de nombreuses et contraignantes exigences en matire de scurit et de performance : rapidit, empreinte mmoire, robustesse, abilit, rsistance aux attaques. Voici un schma reprsentant la BU SST :

Lactivit carte puce Au coeur de larchitecture de loffre gure la plate-forme jTOP (JavaTM Trusted OpenPlatform). Sa conception hautement scurise lui permet de satisfaire aux exigences trs strictes des applications sensibles dployes sur les cartes bancaires ou les cartes SIM. La plate-forme jTOP rpond galement toutes les caractristiques dun systme ouvert (standardisation, introprabilit, versatilit ...). Cela lui confre des facilits dvolution et surtout une grande adaptabilit envers les applications quelle accueille. Loffre jTOP est compatible avec les cartes du mme type dautres constructeurs et passe avec succs les tests de conformit mis au point par Sun R Microsystems, propritaire des spcications Java CardTM . Larchitecture TF4C offrant des fonctionnalits avances par rapport aux spcications Java Card , loffre inclut un convertisseur dapplet au format de la carte, un vrieur de code embarqu, un vrieur de code hors carte, des outils de chargement de code, de scripting, doptimisation, un
TM

environnement de dbug embarqu, un simulateur Java CardTM , ... La plupart des composants sont lobjet de plusieurs brevets qui font de la plate-forme TF4C une offre innovante et dactualit. 1.2.2 Les terminaux professionnels et mobiles

En 2001, Trusted Logic a tendu son activit aux dveloppements pour terminaux. La Business Unit PCD (Professionnal and Consumer Devices) est illustre ci-aprs ; la technologie jTOP for Terminals est au coeur de celle-ci. Elle intgre des fonctionnalits spciques du march des terminaux sensibles (isolation des applications, intgration de priphriques de scurit, ...). La plate-forme TF4T se compose doutils de simulation et daide au dveloppement (convertisseurs et vrieurs de bytecode). Elle peut se prvaloir aujourdhui dune conformit certie avec des standards ouverts comme JEFF, STIP et FINREAD.

La plate-forme TF4T Loffre technologique TF4T est complte par une offre de services de portages et dintgration, mais aussi danalyse de risque pour terminaux. Cette offre est galement lobjet de plusieurs brevets. 1.2.3 tudes scuritaires et tests

Cette liale de Trusted Logic est spcialise dans le conseil, lvaluation et la formation dans le domaine de la scurit, notamment dans lindustrie des cartes puce, des terminaux de paiement et des dispositifs mobiles. Toutes ces activits sont ralises laide doutils spciques dvelopps par Trusted Labs.

Activit de la liale Trusted Labs Trusted Labs assiste ses clients dans leurs projets dvaluation Critres Communs, participant la production de prols de protection, de cibles de scurit et de documents dvaluation et assurant la relation avec les valuateurs. Pour dmontrer la conformit des produits aux plus hauts niveaux dassurance, Trusted Labs applique avec succs les mthodes formelles, notamment lanalyse statique et la preuve formelle. Aussi, Trusted Labs dveloppe et maintient des outils qui permettent la spcication formelle des produits et la gnration automatique de suites de tests partir des spcications. Trusted Labs effectue des tests fonctionnels, des tests de scurit et lanalyse statique des codes et simule des attaques logiques ou physiques.

Les micro-contrleurs

Lors de mon stage, jai d tudier et analyser un micro-contrleur Inneon, de la famille SLE66, dont la nature et structure sont trs proches du 8051 dIntel. Dans un soucis de condentialit, je prsenterai mon travail sur le 8051.

2.1
2.1.1

Gnralits sur les micro-contrleurs


Prsentation

Un micro-contrleur (gure 1) est, par dnition, un circuit lectronique miniaturis qui regroupe tous les lments de base dun ordinateur, savoir : le processeur, ou unit centrale, permettant dexcuter les instructions et de traiter les donnes du programme les mmoires : la ROM (Read Only Memory ou mmoire morte) qui permet de stocker les programmes excuter, lEEPROM (Electrically Erasable Programmable Read-Only Memory) qui a la mme fonction que la ROM la diffrence quelle est re-programmable, et la RAM (Random Access Memory ou mmoire vive) qui est ncessaire pour stocker les donnes et calculs intermdiaires les units priphriques, comme le CRC (Cyclic Redundancy Check) 1 ou le RNG (Random Number Generator) 2 les interfaces dentres-sorties, cest dire les changes entre le processeur et les priphriques qui lui sont associs. Les micro-contrleurs sont utiliss, entre autre, dans les cartes puce, ce qui implique quils doivent pouvoir assurer la condentialit des donnes.
1. Il sagit dune fonction de hashage utilise pour produire un checksum dans le but de dtecter des errreurs dans les donnes stockes ou transmises, et ainsi pouvoir vrier lintgrit des valeurs 2. Cest un appareil logiciel ou matriel, permettant de gnrer des squences de nombres alatoires

10

F IGURE 1: structure dun micro-contrleur 2.1.2 Structure

Le coeur du micro-contrleur (ainsi que de tout systme informatique) est le processeur, qui permet lexcution des programmes. Cependant, il ne peut tre efcace sans certains outils complmentaires. Par exemple, chaque instruction excute va ltre sur un certain nombre de cycle dhorloge ; il est donc ncessaire dintgrer une horloge an de permettre le cadencement. En outre, pour que le systme ne soit pas ferm , il faut quil puisse tre capable de communiquer avec le monde extrieur ; cest le rle des priphriques. Pour naliser le tout, et donc former un micro-contrleur, tous ces lments doivent tre relis entre eux. Cela est fait par le biais de trois sortes de bus : le bus dadressage, qui permet daccder la case mmoire ou au priphrique sur lequel on veut lire/crire les donnes le bus de donnes, qui permet le transfert dinformation le bus de contrle, qui permet davoir des prcisions sur le programme (lecture/criture, demande dinterruption..).

Un micro-contrleur va donc pouvoir excuter une grande partie des instructions machines habituelles, et ce de faon scurise. 2.1.3 Gros plan sur le processeur

Comme nous lavons dit prcdemment, llment le plus important du micro-contrleur est le processeur (gure 2). En effet, il lance lexcution des instructions stockes dans la mmoire morte, 11

cest dire quil permet aux programmes dtre excuts. Il opre sur des mots binaires dont la taille est, en gnral, celle du bus de donnes. Un processeur est constitu des lments suivants : des registres accumulateurs, permettant de stocker temporairement les oprandes ainsi que les rsultats des oprations des registres auxiliaires, relayant les accumulateurs des registres dindex pour le mode dadressage indirect un compteur de programme, pointant ladresse de la prochaine instruction excuter une unit arithmtique et logique, effectuant les oprations entre laccumulateur et les oprandes un registre code condition indiquant, par exemple, la prsence dune retenue, ou tout autre condition particulire.

F IGURE 2: structure dun processeur

2.2

Le 8051 dIntel

Le 8051 est un micro-contrleur 8 bits, mais traite les adresses sur 16 bits, ce qui permet dtendre son espace dadressage. Comme tous les micro-contrleurs, il possde diffrents types de mmoire, registres et mode 12

dadressage, an de pouvoir stocker et rcuprer les donnes propres aux programmes quil excute. 2.2.1 Les diffrents types de mmoire

Le 8051 dIntel possde plusieurs mmoires : les RAM interne et externe, et la ROM. Les deux types de RAM ont la mme fonction, cest dire stocker des donnes lors de leur traitement, mais le fait davoir une RAM externe (ou off-chip memory) permet de gagner en quantit. En effet, mme si la mmoire externe est plus difcile daccs et, par consquent, plus lente, elle permet de stocker jusqu 64 ko de donnes, alors que la RAM interne (on-chip memory) ne peut recevoir que 128 octets. Cependant, il est noter que le 8051 possde des registres mmoire particuliers, appels SFR (Special Function Register). Ces registres permettent de contrler certaines spcicits du 8051. La mmoire code, ou ROM, contient les instructions du programme sur le point dtre excut, ainsi que les valeurs immdiates . Sa taille maximale est de 64 ko. Elle est adresse soit par le compteur ordinal, soit par certaines instructions par le biais du data pointeur (DPTR). Parfois, il est possible de trouver une EEPROM plutt quune ROM ; la diffrence est que lEEPROM est effaable et modiable par lutilisateur. La mmoire interne (gure 3) contient 4 bancs, que lon appelle bancs de registres, euxmmes diviss en registres. Ainsi, lorsquune instruction fait appel lun de ces registres, il est ncessaire de donner le numro du banc contenant le registre concern. Nous pouvons galement trouver la mmoire bits, qui permet de stocker la valeur de certains bits particuliers, comme par exemple des ags. La mmoire externe contient toutes les valeurs qui ne peuvent tre contenues en interne. Sa taille maximale est de 64 ko, et elle ne sera accessible quen mode dadressage indirect.
0x00 0x08 0x10 0x18 0x20 0x28 0x30 R0 R0 R0 R0 00 08 R1 R1 R1 R1 10 18 R2 R2 R2 R2 20 28 R3 R3 R3 R3 30 38 R4 R4 R4 R4 40 48 R5 R5 R5 R5 50 58 R6 R6 R6 R6 60 68 R7 R7 R7 R7 70 78 banc de registre 0 banc de registre 1 banc de registre 2 banc de registre 3 bits 0x00->0x3F bits 0x40->0x7F

IRAM : 80 octets disponibles (0x30->0x7F)

0x7F 0x80 Special Function Register (SFR) (0x80->0xFF) 0xFF

F IGURE 3: Structure de la RAM interne

13

2.2.2

Les diffrents registres

Comme tout micro-contrleur, le 8051 possde des registres permettant de stocker des donnes, et lutilisation de ces registres dpend de linstruction excute. En effet, lutilisation des registres nest pas laisse au hasard, et chacun dentre eux a des fonctions qui lui sont propres. Les principaux registres sont : Laccumulateur A, permet de stocker les rsultats de nombreuses instructions. Il peut contenir des valeurs codes sur un octet. Par exemple, lors dune addition entre deux nombres, le rsultat est stock dans laccumulateur ; puis soit le rsultat continue dtre utilis, soit il est stock en mmoire. Il sagit donc dun registre temporaire, permettant de garder des donnes qui sont susceptibles dtre utilises rapidement Les registres Ri de la RAM Le registre B peut tre considr comme un complment de laccumulateur. Il peut lui aussi contenir des valeurs de 8 bits, et nest utilis que par les instructions MUL AB et DIV AB, qui permettent deffectuer respectivement une multiplication et une division rapide de A par B Le Data Pointer (DPTR) est un registre de deux octets (16 bits). Il est utilis pour pointer une donne, ou plus prcisment pour accder la mmoire externe, ladresse indique par la valeur de DPTR. Mais il est noter que ce registre est souvent utilis pour stocker des valeurs de 16 bits, an dviter de les stocker dans deux registres diffrents Le Compteur Ordinal (PC pour Program Counter) est une adresse de deux octets correspondant la prochaine instruction excuter. Au commencement de lexcution, PC vaut 0x0000 et il est incrment, chaque excution dinstruction, par le nombre doctets codant cette instruction Le Pointeur de Pile (SP pour Stack Pointer) est un registre de 8 bits permettant dindiquer le sommet de la pile, cest dire, la dernire information enregistre. Les deux seules instructions permettant de modier la pile sont PUSH et POP, qui, respectivement, ajoute et retire un lment de la pile Les Special Function Registers (SFR) (gure 4), sont des registres de la mmoire qui contrlent certaines spcicits du 8051, comme par exemple laccs aux lignes dentres/sorties, la lecture ou lcriture dans le port de srie... Les SFR sont dnis de ladresse 0x80 ladresse 0xFF, ce qui laisse penser que lon a 128 adresses supplmentaires, mais en fait, seul 21 de ces 128 adresses sont dnis comme zones adressable. Le reste gnrera une erreur ou une valeur inattendue.

14

0x80 0x88 0x90 0x98 0xA0 0xA8 0xB0 0xB8 0xC0 0xC8 0xD0 0xD8 0xE0 0xE8 0xF0 0xF8

P0 TCON P1 SCON P2 IE P3 IP

SP TMOD

DPL TL0

DPH TL1 TH0 TH1

PCON

SBUF

PSW

ACC

0x87 0x8F 0x97 0x9F 0xA7 0xAF 0xB7 0xBF 0xC7 0xCF 0xD7 0xDF 0xE7 0xEF 0xF7 0xFF

F IGURE 4: Special Function Registers 2.2.3 Les modes dadressage

Le microcontrleur 8051 possde diffrents modes dadressage, cest dire que la localisation mmoire peut tre accde de diffrentes manires selon linstruction excute. Il en existe six : Ladressage immdiat donne directement la valeur traiter. Cette valeur est rcupre dans la ROM, et se trouve directement aprs le code de linstruction. Par exemple, linstruction MOV A,#20h copie la valeur 20h dans laccumulateur. Ce mode est trs rapide puisque la valeur se trouve dans le code de linstruction Ladressage direct prcise ladresse de la donne rcuprer ; par exemple, linstruction MOV A,35h va copier la valeur se trouvant ladresse 35h dans laccumulateur. Les adresses sont rcupres en interne, do la faible perte de vitesse par rapport ladressage immdiat. Les zones accder vont dpendre de la valeur de ladresse ; en effet, une adresse se trouvant entre 00h et 7Fh se rfre lIRAM (RAM interne), et une adresse entre 80h et FFh se rfre au SFR Ladressage indirect donne un registre dans lequel se trouve ladresse de la donne manipuler ; par exemple, linstruction MOV A,@R0 copie la valeur se trouvant ladresse pointe par R0 dans laccumulateur Ladressage mmoire externe opre de la mme manire que ladressage direct, la diffrence quil accde aux zones de mmoire externes. Il nexiste que deux instructions utilisant ce mode dadressage : MOVX A,@DPTR et MOVX @DPTR,A Ladressage index calcule ladresse de la donne en additionnant les contenu de lAccumulateur et du pointeur de programme (Acc + PC) ou du pointeur de donnes (Acc + DPTR). Ladressage bit permet de traiter directement les bits (ags).

15

Les algorithmes de chiffrement DES et AES

An de valider le modle de consommation de courant du micro-contrleur, et de vrier sil tait possible de mener des attaques par consommation de courant avec cet outil, il a fallu le tester sur des algorithmes de chiffrement. Nous avons choisi de mener des attaques sur les algorithmes DES et AES. Les attaques sappliquent des portions particulires des algorithmes, dont le dtail est explicit dans ce chapitre.

3.1
3.1.1

DES : Data Encryption Standard


Le chiffrement DES

Le DES [16] est un algorithme de chiffrement par bloc, symtrique, standardis en 1976 par la NSA. Il nest plus le standard actuel de chiffrement, mais est toujours utilis, tel quel ou en 3-DES 3 . Le DES opre sur des blocs de 64 bits, qui donneront des chiffrs de la mme taille, et utilise des clefs de 56 bits, ce qui en donne un espace plutt restreint, do sa vulnrabilit. Ces clefs sont reprsentes sous forme de bloc de 64 bits, en ajoutant un bit de parit tous les 8 bits (en gnral, en parit impaire), mais il est la plupart du temps ignor. En rsum, le chiffrement DES seffectue de la manire suivante : 1. Dcouper le message en blocs de 64 bits 2. Effectuer la permutation initiale PI sur un bloc 3. Dcouper le rsultat obtenu en 2 blocs de 32 bits (Di et Gi ) 4. Pour chaque ronde : Extension du bloc de droite Di en un bloc de 48 bits Calculer R = Di Ki , o Ki est la clef de tour Calculer S = Sbox(R), o S sera un bloc de 32 bits Effectuer la permutation P sur S Calculer Di+1 = P (S) Gi Gi+1 = Di 5. Effectuer la permutation nale (P I)1 Le DES a pour but de coder un message grce une clef de chiffrement. Cependant, le message nest pas chiffr dans son intgralit en une seule fois ; il est dabord dcoup en blocs de 64 bits, grce des algorithmes de type ECB, qui seront ensuite soumis au chiffrement DES. Enn, les diffrents blocs chiffrs sont fusionns pour navoir quun seul bloc, de la taille du message en clair. 3.1.2 Le passage dans les sbox

La partie de lalgorithme qui nous intresse pour lattaque DPA est le passage dans les sbox, lors du premier tour. Cette opration est effectue dans chaque ronde, aprs une extension et le xor avec la clef de tour. An dillustrer cette tape, nous allons prsenter le calcul sur un exemple.
3. Le 3-DES revient faire trois chiffrements DES avec deux ou trois clefs diffrentes

16

Supposons quaprs les premires tapes de lalgorithme, nous ayons le bloc de 48 bits suivant : 100101 111010 010001 110000 000011 010010 110100 001110 Chacun des 8 blocs de 6 bits va passer dans la sbox correspondante, sachant qu chaque bloc est attribue une sbox. Leur fonctionnement est le suivant : entre : bloc de 6 bits selection du premier et du dernier bit, et lecture du nombre dcimal obtenu : il correspond la ligne l de la sbox lecture du nombre obtenu avec les 4 bits restants : il sagit de la colonne c de la sbox rcupration du nombre se trouvant lintersection de la ligne l et de la colonne c transformation en un binaire de 4 bits. Le premier bloc va donc subir une substitution par la premire sbox (gure 5) et le rsultat obtenu sera 1 0 0 0. 0 1 2 3 0 1 14 4 0 15 4 1 15 12 2 13 7 14 8 3 1 4 8 2 4 5 6 2 15 11 14 2 13 13 6 2 4 9 1 7 8 9 8 3 10 1 10 6 11 15 12 7 5 11 10 6 12 9 3 11 12 12 5 11 9 7 3 14 10 13 14 15 9 0 7 5 3 8 10 5 0 0 6 13

F IGURE 5: Premire sbox 3.1.3 La gnration des clefs de tour

Lors du chiffrement DES, la clef secrte est utilise pour gnrer 16 clefs de tour (une pour chaque ronde de lalgorithme). Elles sont calcules grce un algorithme, sensible lattaque SPA, dont voici le dtail : 1. Effectuer la permutation PC-1 de la clef K, donnant un bloc de 56 bits 2. Sparer ce bloc en deux sous-blocs de 28 bits 3. Effectuer des dcalages gauche sur chaque bloc (le nombre de dcalages dpend du numro de tour et est donn par une table) 4. Concatner les deux blocs obtenus 5. Effectuer la permutation PC-2 , qui donnera un bloc de 48 bits correspondant la clef de tour 17

Lors de la permutation PC-1, la clef de chiffrement est manipule en clair, et cest donc cette tape qui sera exploitable pour lattaque SPA.

3.2

AES : Advanced Encryption Standard

LAES [15] est, depuis 1997, lactuel standard de chiffrement symtrique. Il a t conu an de remplacer le DES, considr trop vulnrable aux attaques modernes. Il est issu de lalgorithme Rijndael, mis au point par Joan Daemen et Vincent Rijmen, qui permet de travailler avec des blocs et des clefs de taille 128, 192 et 256 bits, alors que lAES nest utilisable quavec des blocs de 128 bits. LAES se compose de plusieurs rondes, selon la taille de la clef, savoir 10 pour une clef de 128 bits, 12 pour une clef de 192 bits, et 14 pour une clef de 256 bits. Chaque ronde se compose de plusieurs oprations nommes SubByte, ShiftRow, MixColumn et AddRoundKey. LAES opre de la manire suivante : 1. Ajout de la clef de chiffrement au bloc message de 128 bits : state = message+key 2. Pour chacune des Nr 1 premires rondes : state = SubByte(state) state = Shif tRows(state) state = M ixColumn(state) state = AddRoundKey(state) 3. state = SubByte(state) 4. state = Shif tRows(state) 5. state = AddRoundKey(state) Tout dabord, le bloc message de 128 bits est xor avec la clef de chiffrement. Puis, dans les Nr 1 premires rondes 4 , les fonctions prcises ci-dessus sont appliques, et la dernire ronde ne prsente pas lopration MixColumn. Le message ltat initial et aux tats intermdiaires est reprsent par une matrice 4*4, dont chaque case reprsente un octet (gure 6). S0,0 S1,0 S2,0 S3,0 S0,1 S1,1 S2,1 S3,1 S0,2 S1,2 S2,2 S3,2 S0,3 S1,3 S2,3 S3,3

F IGURE 6: Matrice reprsentative du bloc message


4. Par convention, on note Nr le nombre de rondes ; Nb est la taille en octet-mot du message (128 bits = 4 octetsmots), donc Nb = 4 ; et Nk est la taille en octets-mots de la clef de chiffrement, do Nk = 4, 6 ou 8 selon la taille de la clef.

18

LAES nutilise pas les rseaux de Feistel, ce qui le rend plus facile implmenter. De plus, les fonctions qui le composent assurent la diffusion 5 et la confusion 6 . La fonction SubByte est responsable de la confusion et les fonctions ShiftRow et MixColumn engendrent la diffusion. 3.2.1 La fonction AddRoundKey

Il sagit dun xor entre ltat intermdiaire et la clef de tour, obtenue par une diversication de la clef de chiffrement. Ainsi :

[s0 , s1 , s2 , s3 ] = [s0 , s1 , s2 , s3 ] [WroundNb +c ] o les Wi sont les mots de la clef (ou de la clef de tour). Lattaque DPA sur lAES peut tre mene sur le premier appel la fonction AddRoundKey, qui effectue le xor entre la clef de chiffrement pure et le message en clair. 3.2.2 La gnration des clefs de tour

Les clefs de tour sont un ensemble de quatre mots, reprsentes sous forme de matrice tout comme le bloc message. Elle sont gnres partir de la clef de chiffrement, et chacune dpend de la prcdente. Cest sur cette tape de lAES quil est possible de mener une attaque SPA. Lalgorithme KeyExpansion, permettant de gnrer les clefs de tour, agit sur les mots de 32 bits de la clefs de chiffrement et des clefs de tour. Il y a 1 clef de tour de plus que le nombre de rondes, donc le nombre doctets-mots sera N b (Nr + 1). Chaque octets-mots sera not w[i]. Lalgorithme agit donc de la manire suivante : 1. La premire clef de tour est la clef de chiffrement : K1 = K et i = Nk 2. Tant que (i < N b (N r + 1)) tmp = w[i 1] si i mod Nk = 0 alors temp = SubW ord(RotW ord(temp)) xor Rcon[i/N k] sinon si (N k > 6andimodN k = 4) temp = SubW ord(temp) w[i] = w[i N k] xor temp i=i+1 La fonction SubWord prend en entre 4 octets, et applique la Sbox chacun dentre eux. La fonction RotWord prend un mot de 4 octets [a0 , a1 , a2 , a3 ], et lui applique une permutation pour donner le mot [a1 , a2 , a3 , a0 ]. Le tableau Rcon contient des mots constants pour chaque ronde, dnis par [xi1 , 00, 00, 00].
5. La diffusion est le fait que les bits du clair soient disperss dans le chiffr 6. La confusion reprsente la non trivialit de la relation entre le clair et le chiffr

19

Les principales attaques physiques sur cartes puce

De nos jours, les cartes puce sont des outils fortement rpandus, et utiliss par tous. En effet, elles sont prsentes dans les cartes de crdit, mais aussi les cartes SIM des tlphones, les cartes vitales... Leurs principaux buts sont dassurer la condentialit et lintgrit des donnes, ainsi que lauthentication et lidentication. Le fait quelles scurisent laccs aux donnes les rend fortement sujettes aux tentatives dattaques. Malgr une grande avance dans le monde de la cryptologie, les algorithmes de chiffrement utiliss dans les cartes puce ne sont pas incassables, mme si trs rsistants beaucoup dattaques. En effet, ces algorithmes ne sont plus, en gnral, sensibles la cryptanalyse traditionnelle, mais dautres attaques, appeles attaques physiques ou attaques par canaux cachs [2], ont t dcouvertes, et sont trs efcaces. Elles prennent en compte les fuites dinformation, de type rayonnement lectromagntique, temps dexcution ou encore consommation de courant. Les attaques physiques ont t introduite par Paul Kocher [1], en 1998. Il avait montr lefcacit dune attaque DPA sur le DES, pour retrouver la clef de chiffrement. Puis ces attaques se sont tendues aux autres algorithmes, et dautres mthodes ont t dcouvertes. Nous allons prsenter quelques-unes de ces attaques.

4.1

SPA : Simple Power Analysis

La SPA [1], ou Simple Power Analysis, est une attaque sur la consommation de courant qui permet, partir dune unique trace de consommation de lalgorithme, de retrouver des informations. Il peut sagir dinformations directes sur la clef, ou encore de prcisions sur les rondes de lalgorithme. Lexemple le plus courant de lapplication de la SPA est lalgorithme Square and Multiply. La valeur du bit trait est facilement retrouvable, tant donn que le traitement dun 1 ncessite une opration de plus quun 0. Algorithm 1 Square and Multiply Require: n, x, m N result = 1 while n = 0 do if n is odd then result = result x mod m n = 1 end if result = result2 mod m n/ = 2 end while return result Lorsque lon traite un 1 dans la dcomposition binaire de n, comme on effectue une multiplication en plus du carr, la consommation de courant sera plus importante dans ce cas. 20

Une possibilit pour contrer lattaque SPA est deffectuer dans tous les cas une multiplication. On obtiendra alors lalgorithme suivant, appel Square and Multiply always : Algorithm 2 Square and Multiply always Require: n, x, m N result = 1 while n = 0 do if n is odd then result = result x mod m n = 1 else cpt = cpt x mod m end if result = result2 mod m n/ = 2 end while return result Quelle que soit la valeur du bit trait, on effectue un carr et une multiplication ; la courbe de consommation de courant ne dvoilera donc pas dinformation dans le cadre dune attaque SPA. Cependant, il a t prouv que cet algorithme est vulnrable lattaque par injection de fautes. Le bruit peut perturber lexcution de lalgorithme, et rendre la trace de consommation peu lisible. Dans ce cas, on utilise plusieurs courbes du mme droulement de lalgorithme an de rduire le bruit. Si ces courbes restent tout de mme inexploitables, alors, il faut considrer dautres attaques, comme la DPA.

4.2

DPA : Differential Power Analysis

La DPA [1][7][12] est une attaque se basant sur lanalyse statistique de plusieurs courbes, et permettant de retrouver la clef secrte utilise par lalgorithme de chiffrement. Il existe plusieurs versions de la DPA, mais le principe gnral reste celui mis en place par Paul Kocher. Le droulement de la DPA seffectue en plusieurs tapes : Dclaration dune fonction de slection f , utilise pour trier les courbes de consommation de courant. Dans notre cas, elle se base sur la valeur dun bit, appel bit de slection ou bit cible, qui correspond lun des bit de sortie de Sbox dans le cas du DES, et un bit du rsultat du premier AddRoundKey pour lAES. Ce bit ne doit dpendre que du message dentre et de la sous-clef Rcupration de plusieurs courbes de consommation, an de pouvoir mener correctement lanalyse statistique Dbut de recherche de la clef : elle seffectue octet par octet, on appelle chaque octet une sous-clef. Pour chaque valeur possible de la sous-clef, on trie les courbes grce la fonction de slection, et on cre alors deux ensembles, nots M0 et M1 . M0 contient les courbes pour lesquelles le bit de slection est 0, et M1 celles dont le bit est 1 21

Calcul de la moyenne de chacun de ces deux ensembles : on obtient alors deux ensembles de points, nots M0 et M1 . Si la supposition de la sous-clef est la bonne, le bit cible dans M0 est toujours 0, donc la moyenne de toutes ces courbes formera un creux 7 . Il en est de mme pour lensemble M1 , la diffrence que lon aura un pic Calcul de la diffrence des moyennes : on calcul lensemble M = |M0 M1 |. Si la supposition de la sous-clef est la bonne, en soustrayant le pic et le creux, on obtiendra un pic plus grand, appel pic de DPA. Si la sous-clef est incorrecte, la courbe de DPA ne prsentera pas de pic. Lensemble M pour lequel le pic est le plus grand est considr comme celui validant lhypothse que la sous-clef correspondante est la bonne sous-clef. On effectue ces tapes pour toutes les sous-clefs, et on pourra ainsi retrouver la clef de chiffrement complte.

Il est possible, lors dune attaque DPA, de constater plus dun pics [5]. Il existe deux cas : Plusieurs pics sont visibles sur la mme courbe de DPA (pour la bonne supposition de la sous-clef). Cela est d au fait que le bit de slection peut tre utilis ailleurs dans lalgorithme, et il sera donc mis en vidence. Cela nest cependant pas gnant pour lattaque puisquil sagit de la bonne valeur de la sous-clef Plusieurs courbes de DPA contiennent un pic. Cela est d la non-linarit, qui rend possible une corrlation entre le bit de sortie et deux entres diffrentes. Ainsi, certaines attaques DPA ncessitent plus de courbes que dautres, an de ltrer ces pics.

La DPA tant une attaque redoutable, il a fallu trouver rapidement des contre-mesures an dempcher toute tentative de rcupration de la clef par ce moyen. En voici quelques exemples : Les masquages, qui consistent par exemple effectuer un OU-exclusif entre la donne concerne et un nombre alatoire La dsynchronisation, qui permet de dcaler certaines valeurs de lalgorithme, et qui rend la DPA impossible dans le sens o les donnes tudies pour mener cette attaque ne sont pas traites au mme instant Lajout de bruit, permettant de fausser les rsultats obtenus lors du relev de consommation de courant, et rendant priori toute attaque plus difcile mener Les ltres, permettant de lisser les variations de consommation de courant du composant.

Ces contre-mesures ont prouv leur efcacit ; cependant, certaines dentre elles ne sont pas efcaces face de nouvelles attaques, comme la DPA dordre suprieure (HODPA). Ces attaques ont t spcialement conues pour dvier les contre-mesures mise en place.
7. On suppose ici quon est dans le cas o un 0 consomme moins de courant quun 1.

22

4.3

Les attaques par injection de fautes

Le principe des attaques par injections de fautes [6] repose sur le fait quil est possible de perturber le droulement dun algorithme, dans le but de retrouver des informations sur la clef. Il existe deux types de fautes : Les fautes permanentes, qui modient de manire dnitive le circuit Les fautes transitoires, qui modient par exemple une valeur, sachant que cet effet est rversible et que lalgorithme redeviendra normal par la suite. Les fautes peuvent tre provoques de diffrentes manires, comme, par exemple, par une intense source lumineuse, par une modication de la frquence dhorloge, ou encore par une valeur anormale de la tension. Les injections de fautes peuvent se manifester de plusieurs faons : par une modication alatoire, cest dire quune donne sera modie de manire alatoire et inconnue de lattaquant. Dans ce cas, soit un mot machine entier est modi, soit un unique bit par un crasement, qui modie une donne pour lui affecter une valeur xe (en gnral 0) par un droutement, qui correspond une modication de la squence dinstruction. Par exemple, un saut dinstruction peut tre ignor et le processus continuera linstruction suivante. Il existe de nombreuses mthodes permettant de mener une attaque par injection de fautes, mais les plus connues sont la DFA et la CFA, que nous allons brivement prsenter. 4.3.1 DFA : Differential Fault Analysis

Le principe de la DFA est de perturber le droulement de lalgorithme, et de comparer les rsultats obtenus dans les deux cas (algorithme rel et algorithme erron). Ainsi, il sera possible de retrouver des informations sur la clef, et en particulier sur les bits affects par cette faute. Notons c le message en clair, d le message chiffr par lalgorithme de base et d le chiffr erron. Le but est de calculer la diffrentielle de d et d , qui donnera des informations sur la clef. An dillustrer ce principe, reprenons lalgorithme modi du square and multiply, tel que nous lavons vu prcdemment. Lalgorithme effectue une multiplication et un carr chaque tape. Cependant, si lon mne une attaque par injection de faute sur la multiplication, on saperoit que dans le cas o lon a un 0, la sortie nest pas errone. En dautres termes, lalgorithme neffectue pas les modications escomptes. Il est alors trivial de retrouver les bits composant la clef : si lerreur attendue est prsente, il sagit dun 1, sinon, il sagit dun 0. 4.3.2 CFA : Collision Fault Analysis

La CFA consiste produire une collision entre une sortie errone de lalgorithme et une correcte. On rappelle quune collision est le fait, pour deux clairs distincts, davoir le mme chiffr en sortie.

23

Lattaque commence par la recherche du chiffr d , produit par lalgorithme erron, et ayant pour clair le message c. Puis il faut chercher un message c qui donne naturellement le chiffr d (cest dire, avec lalgorithme non erron). En observant la collision entre le chiffrement de c et c , il est possible de rcuprer des informations sur la clef.

4.4

CPA : Correlation Power Analysis

La CPA [4] est une amlioration de la DPA du premier ordre. Elle permet de trouver une partie de la clef en tablissant une corrlation entre le poids de Hamming dune donne et la consommation de courant associe. Cette donne est une fonction de la supposition de la sous-clef et du message en clair. Pour dterminer la clef de tour, il faut trouver une corrlation entre le poids de Hamming dune donne et la trace de consommation correspondante. Introduisons avant tout quelques notations : Pi = (pi (t1 ), pi (t2 ), ..., pi (tm )) sont des traces de consommation de courant contenant m points Nous sommes dans le cas de cryptosystmes symtriques utilisant des Sbox : on note alors nsb le nombre de Sbox dans une ronde key(sb) sera la sous-clef issue de la Sbox sb nkey est le nombre de valeur possible pour chaque sous-clef Finalement, la CPA se droule comme suit : Algorithm 3 Correlation Power Analysis for 1 sb < nsb do for 0 key(sb) < nkey 1 do compute de the correlation cpa(key(sb), tj ) if cpa(key(sb), tj ) = max(sb) then store key(sb) return to the rst for condition end if end for end for return key(1), key(2), ..., key(nsb )

24

Le calcul de la corrlation est donn par la formule : cpa(key(sb), tj ) = 1 nh (sb)p (tj )


n

(hsb hsb )(pi (tj) p(tj )) i


i=1

(1)

hsb est le poids de Hamming de la donne sensible i x est la dviation standard de la variable x x est la moyenne de x hsb 1 = n
n n

hsb , h (sb) i
i=1

1 n1 1 n1

(hsb hsb )2 i
i=1 n

(2)

1 p(tj ) = n

pi (tj ), p (tj ) =
i=1

(pi (tj ) p(tj ))2


i=1

(3)

4.5

Bilan

Finalement, ces attaques sont possibles car, lors de lexcution des instructions, le microprocesseur consomme du courant, et cette consommation va dpendre des donnes manipules. En effet, traiter un 0 (en lecture ou en criture) naura pas le mme cot que traiter un 1, donc pour une mme instruction, si seulement un bit dune des donnes est diffrent, la consommation diffrera. Les attaques physiques sont de plus en plus nombreuses et efcaces, mais, an de lutter contre ces attaques, les contremesures ne cessent galement de se dvelopper. Ces attaques sont donc une vritable menace pour la scurit des informations et la condentialit car il est galement possible de les combiner entre elles, ou avec des mthodes de cryptanalyse classique, ce qui tend les possibilits dattaques.

5
5.1

Travail effectu
Prsentation

Le but de ce stage a t, tout dabord, de trouver un modle de consommation de courant dune carte puce, partir des rsultats dun simulateur de carte. Puis, nous avons test ce modle, sur des algorithmes de chiffrements, et avec diffrentes attaques. La courbe de consommation de courant gnrale est la somme de consommation de courant de tous les modules du micro-contrleur. Pour le moment, nous navons pas pris en compte les actions des co-processeurs. Larchitecture du modle de consommation de courant est la suivante :

25

F IGURE 7: Architecture du programme de consommation de courant Nous allons expliquer, au cours de ce chapitre, le rle des diffrents paramtres, la mise en place du programme et lapplication qui en a t faite.

5.2
5.2.1

Etude du micro-contrleur
Notations

An dtablir un modle de consommation de courant, je me suis tout dabord familiariser, de manire gnrale, avec les micro-contrleurs. Ainsi, jen ai appris la structure, le mode de fonctionnement, et jen ai tudi le jeu dinstruction. Jai ensuite dcompos le cheminement de chaque instruction dans le micro-contrleur, ce qui a engendr la mise en place de quelques notations, en particulier quant aux zones du microcontrleur : CPU dsigne la zone processeur, cest--dire laccumulateur, le registre B, le compteur ordinal et le pointeur de donnes IRAM correspond la RAM interne, les registres Ri et les SFR XDATA liste les zones de mmoire externes, savoir la RAM externe et lEEPROM SFR fait rfrence aux SFR externes BIT dsigne les ags. 26

5.2.2

Mise en place des outils

Lorsquun programme est excut, un processeur consomme du courant, selon les instructions, les oprandes associes et les valeurs et/ou adresses manipules. Chaque appel dune instruction un module mmoire, un registre, ou tout autre composant du micro-contrleur, est prendre en compte dans le calcul de consommation de courant. Pour chaque instruction, nous avons list le nombre dappel lunit arithmtique et logique (car les oprations ont un certain cot), le nombre dappels la ROM (car lire en mmoire code consomme du courant), et le nombre dappels ventuels aux zones ag. A titre dexemple, voici quelques lignes du chier listant ces appels en fonction de linstruction (on y fera rfrence plus tard comme chier dinstructions) : num instruction ROM add 1 ADD 2 1 6 ADD 2 1 3 ADD 1 1 5 ADD 2 1 sub 0 0 0 0 xor not 0 0 0 0 0 0 0 0 or 0 0 0 0 and div mul eq 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 CPU_R CPU_W 1 1 1 1 1 1 1 1

La premire colonne correspond au numro de linstruction, la deuxime son nom (mais aussi son action), et les autres reprsentent le nombre dappels la ROM, au CPU (en lecture R ou en criture W) et lUAL en fonction de lopration effectue. Prenons un exemple, an de prsenter la faon dont ce chier a t cr. Soit linstruction suivante : Nom MOV Oprandes A,@DPTR+off6 code hxadcimal 0xF1,0x80+off6

Cette instruction effectue une copie de la valeur pointe par DPTR+off6 dans laccumulateur. Son cheminement est le suivant : Elle est code sur deux octets donc effectue deux lectures (R, pour Reading) dans la ROM La premire oprande est A, laccumulateur, qui se trouve dans le processeur. Comme linstruction stocke le rsultat de la deuxime oprande dans laccumulateur, on aura une criture dans le CPU (W, pour Writing), mais aussi une lecture car toute criture est couple dune lecture du registre Elle effectue une addition sur la deuxime oprande, lors du calcul de 0x80+off6 ; elle fait donc appel une fois lUAL en mode addition Elle utilise le pointeurs de donnes DPTR, qui se trouve dans le processeur, et off6, qui est une constante donne par le code hxadcimal ; on aura donc une lecture de plus dans la zone CPU La valeur pointe par DPTR+off6 se trouve en RAM externe (adressage indirecte), on aura donc une lecture en XDATA.

27

Comme prcis prcdemment, la consommation de courant dpend galement des valeurs manipules. Or, le programme est trait en binaire, donc la consommation dpend de la valeur des bits manipuls. Ainsi, la prise en compte des valeurs se fait par le poids de Hamming. Nous avons list dans un chier, appel chier de cots, le cot de lecture ou criture selon les zones, et selon que lon traite un 0 ou un 1. Voici le dbut de ce chier, donnant le cot dun 0 et dun 1, ainsi que les diffrents cots pour lIRAM : CONSO_0 0.001 CONSO_1 0.03 IRAM_R0 0.05 IRAM_W0 0.07 IRAM_R1 1.5 IRAM_W1 1.7 Cost of a 0 Cost of a 1 Cost of reading a 0 in IRAM Cost of writing a 0 in IRAM Cost of reading a 1 in IRAM Cost of writing a 1 in IRAM

Il est noter que, quelle que soit linstruction excute, le processeur procde toujours quelques calculs constants, savoir : chargement de ladresse de linstruction envoie de linstruction de la ROM au processeur incrmentation du compteur ordinal, une fois linstruction excute. Ces oprations ont donc galement un cot ; cependant, comme elles sont communes toutes les instructions, on peut les ignorer dans le calcul de consommation de courant. Mais dans un soucis de ralisme, on peut galement dnir un cot xe, qui correspondra au cot de toutes ces actions. partir de ce modle, la simulation de consommation de courant est possible, car nous avons toutes les informations ncessaires dont dpend la consommation. 5.2.3 Le simulateur de carte

Maintenant que nous avons tabli toutes les dpendances entre lexcution du programme et la consommation de courant, il est possible den faire le calcul, condition davoir le dtail des instructions. Pour ce faire, un simulateur de carte avait t auparavant mis en place par lquipe de Trusted Logic. Il sagit dune machine virtuelle simulant les actions dun micro-contrleur 8051, et fournissant en sortie un chier, le chier log, contenant toutes les instructions excutes, ainsi que leurs cheminements dans les diffrentes zones. Il prcise galement les valeurs et adresses manipules, le nombre de bits sur lequel elles sont codes, sil sagit dune lecture ou dune criture, et dans le cas dune criture, la valeur prcdente est prcise, an de pouvoir calculer la diffrence de Hamming. Cest en dnissant les chiers dinstructions et de cots que nous avons pu dnir le format du chier log. Ainsi, pour une instruction excute, on aura la ligne suivante : Cycle dhorloge 0x00018A24 PC 0x0C38 Nom CLR_41 28 Numero 41

Diffrente zones ncessaires lexcution de linstruction R/CPU/B0x00/W0x0C38 R/ROM/W0x0C38/B0xE4 W/CPU/B0x00/W0x0C39/W0x0C38 W/BIT/B0xD0/B0x01.1/B0x01 W/CPU/B0xE0/B0x00/B0x00 La reprsentation des zones donne les informations suivantes : R ou W : Lecture ou criture Zone utilise lors de lexcution (ROM, CPU, BIT...) Nombre de bits codant ladresse (B pour Byte (8 bits) et W pour Word (16 bits)) et adresse en hxadcimal Nombre de bits codant la valeur, et valeurs en hxadcimal Dans le cas dune criture, valeur prcdente et nombre de bit la codant. 5.2.4 Le modle de consommation de courant

Aprs avoir gnr ces diffrents chiers, jai pu mettre en forme un modle de consommation de courant. Rappelons que ce modle doit prendre en compte linstruction (appels ROM, UAL...), le poids de Hamming des valeurs manipules pour chaque zone utilise par lexcution, et le cot de lecture/criture selon les zone et la valeur du bit. Pour avoir une courbe de consommation de courant, il faut calculer le cot pour chaque instruction du chier log, de la manire suivante : Rcuprer dans le chier dinstructions les caractristiques de linstruction en cours Pour chaque zone, rcuprer le poids de Hamming de la valeur, et calculer son complmentaire (car les 0 ont aussi un cot) calculer, grce au chier de cots, la consommation lie chaque valeur et la consommation lie linstruction. Exemple: Si on a linstruction ADD_1 et la zone R/CPU/B0x00/W0x0C38, alors le calcul sera: C1 = 2*Cot_en_ROM + 1*Cot_UAL_add | + Cot_CPU_W + Cot_CPU_R |--> instruction 0x0C38 donne en binaire 0000110000111000 (cod sur 16 bits). Le poids de Hamming est 5 et son complmentaire est 11. Donc le cot de cette valeur sera: C2 = 5*Cot_CPU_W1 + 11*Cot_CPU_W0 |--> valeur Et la consommation totale sera: C = C1 + C2

Il est entendu que les valeurs des cots ne sont pas reprsentatives des valeurs relles de 29

consommation de courant ; cependant, limportant pour le projet nest pas davoir des valeurs correctes mais plutt un aspect de la courbe reprsentatif des diffrentes tapes de lalgorithme.

5.3

Implmentation du modle de consommation de courant

Aprs avoir tabli la formule de consommation de courant, nous lavons implment an de pouvoir tracer les courbes de consommation de courant du micro-contrleur, partir des traces gnres par le simulateur. Ce programme, cod en C, prend en paramtre trois chiers : le chier dinstructions, le chier de cots et le chier log. Tout dabord, il faut charger ces chiers en mmoire, car lire en mmoire est moins coteux que de lire dans un chier. Jai donc cr 3 structures : lune destine rcuprer tous les cots, la deuxime permettant de rcuprer les informations sur les instructions du processeur, mais aussi pour rcuprer les donnes de linstruction en cours de traitement, et la dernire pour rcuprer les traces du chier log. Puis, pour chaque instruction, le cot est calcul avec la formule explicite prcdemment ; on applique donc cet algorithme an de calculer la consommation de courant. Le rsultat est renvoy sur la sortie standard, mais lors de lexcution, on utilise une redirection an de rcuprer les rsultats dans un chier. Pour chaque instruction, on obtient une abscisse et une ordonne : les abscisses correspondent aux cycles courants dexcution, et les ordonnes la consommation de courant lie linstruction. La collection de toutes ces valeurs donnera la courbe de consommation de courant de lalgorithme, et chaque point correspond la consommation dune instruction. Le temps dexcution du programme va dpendre de limplmentation de lalgorithme. Sur limplmentation du DES que nous avons utilise, le programme est excut en moins de 28 secondes, et pour lAES, il lest en moins de 4 secondes. Pour mener une attaque DPA, plusieurs courbes sont ncessaires. Jai donc cr un script shell permettant dexcuter le modle de consommation sur toutes les courbes dun dossier. Il permet galement de ne slectionner que la partie de lalgorithme ncessaire aux attaques, et ce en prcisant le code assembleur des instructions conserver (nous expliquerons les raisons de cette slection dans la partie 5.5).

5.4

Premiers rsultats

Nous avons ensuite trac les courbes de consommation de courant, an de visualiser laspect des courbes et pouvoir dans un premier temps valider ou amliorer le modle. En effet, les courbes de consommation des algorithmes cryptographiques sont, en gnral, parlantes puisquon peut y apercevoir (avec plus ou moins de prcisions selon limplmentation) les diffrentes tapes de calcul. Pour ce faire, jai utilis le logiciel gnuplot, qui permet de tracer une courbe avec des donnes se trouvant dans un chier. On peut voir que la courbe de consommation de lalgorithme DES (gure 8) et celle de lAES (gure 9) sont plutt dles la ralit, et que des attaques par consommation sont alors envisageables avec ce modle. La courbe du DES prsente bien les 16 rondes de lalgorithme, et il possible de voir diff30

rents niveaux de consommation, correspondant aux diffrents calculs (permutations, extensions...). Lannexe A montre des zooms sur des tapes du DES, permettant ainsi de mieux les distinguer.

F IGURE 8: Chiffrement DES La courbe de lAES montre galement les rondes de lalgorithme, mais aussi le calcul des clefs de tour. Ainsi, les premier pics reprsente lexcution du key schedule (on observe 10 pics, car 10 clefs de tour sont gnres pour une clef initiale de 128 bits) et la seconde srie de pics est lexcution des 10 rondes de lAES. Lannexe B prsente des zooms sur lAES, permettant davoir plus de dtails sur chaque ronde.

F IGURE 9: Chiffrement AES

31

5.5

Les tests dattaques

La premire validation du modle tait visuelle, dans le sens o lon a trac les courbes an dobserver si le comportement des algorithmes tait raliste. Dans un second temps, nous avons test le modle de faon concrte, cest dire que nous avons appliqu des attaques physiques (DPA et SPA) pour vrier sa validit. 5.5.1 Simulation dune attaque DPA sur le DES

An de tester le modle de consommation, cest dire de voir sil permet dentreprendre des attaques physiques, nous avons pris une implmentation nave du DES (donc vulnrable aux attaques physiques), et lui avons appliqu une attaque DPA. Limplmentation de cette attaque a t faite partir dun code de rfrence, pris sur le site DPAContest [17], qui est un concours dattaques physiques. Ce programme est cod en python, et se divise en plusieurs tapes dexcution : Tout dabord, il faut atteindre un seuil ditrations ; en dautres termes, il faut charger un nombre minimal de courbes de consommation avant de commencer toute attaque. En effet, lattaque DPA ncssite un grand nombre de courbes pour tre efcace, et il est inutile de commencer lanalyse statistique avec trop peu de donnes Lorsque le seuil ditration est atteint, la recherche des clefs commence. Il sagit dune attaque DPA sur le premier round du DES, lattaque concerne donc la premire clef de tour, au moment du passage dans les Sbox. Pour trouver chaque sous-clef de Sbox, on numre les 64 possibilits (chaque sous-clef est en effet sur 6 bits, donc 26 possibilits). Ensuite, pour chaque valeur possible de la sous-clef, on spare les courbes en deux ensembles, selon le rsultat de la fonction de slection dnie au chapitre 4.2, on calcule la moyenne de ces deux courbes, et enn on calcule leur diffrence pour obtenir la courbe de DPA. Labsence de pic sur les courbes de DPA signie quil ny a pas assez de courbes de consommation de courant pour mettre en vidence la corrlation ; il suft alors den ajouter une et de recommencer les tapes prcdentes jusqu lobtention dun pic. Dans le cas o plusieurs courbes de DPA prsentent un pic, celui considr comme correct est le plus haut Lorsque lon a obtenu un rsultat pour chaque chaque sous-clef, on recommence cette recherche avec un courbe supplmentaire jusqu ce que lon obtienne 100 fois le mme rsultat. Cela prouve en effet la stabilit des sous-clefs, et lon peut donc supposer sans trop de risques que ces rsultats sont corrects Une fois la stabilit atteinte, on cherche donc la clef de chiffrement en effectuant les oprations inverses de la gnration des clefs de tour DES, et en faisant une attaque brute de force sur les 8 derniers bits. Aprs avoir rcupr les 8 bits manquant, on obtient une clef de 56 bits. On rappelle que la clef DES est code sur 64 bits mais que sa taille relle est de 56 bits puisque les bits de parit ne servent pas dans le chiffrement. La clef est donc retrouve intgralement. Il est noter que lors dune attaque physique (DPA, SPA ou autre) non simule, il est beaucoup trop contraignant dattaquer sur tout lalgorithme. En gnral, lattaquant repre, lors de lexcution, la partie de limplmentation sur laquelle il veut mener lattaque, et ne mesure le courant que sur 32

cette partie de lalgorithme, an davoir des courbes de consommation moins bruites. Ainsi, lors de la simulation, il est possible deffectuer la mme chose. En effet, nous avons accs au code source et aux instructions assembleur, donc il est possible de ne slectionner que la partie du code qui nous intresse. Dans le cas de la DPA sur le DES, lattaque se fait sur la sortie des Sbox, lors de la premire ronde. Nous avons donc slectionn uniquement la fonction se chargeant de ce calcul. Les tests ont donc t mens de trois faons : En ne traitant que les sorties de Sbox du premier tour, cest dire que nous obtenions des courbes de 8 points (gure 10 et 11) En traitant le calcul entier des sbox du premier tour (gure 12 et 13) En traitant le premier tour entier du DES. La premire mthode a permis deffectuer les tests rapidement lors de la correction du modle, an de comprendre do venait lerreur sans perdre trop de temps. En effet, vu que le bit de slection est le bit de poids fort des sorties de SBox, nous avons isol les seuls points qui nous intressaient. La clef a pu tre retrouve avec environ 5800 courbes

F IGURE 10: Courbe de DPA

F IGURE 11: Courbe de DPA

La deuxime mthode a permis de tester la validit du modle ; en effet, le fait que la DPA fonctionne sur les sorties des Sbox ne nous permettait pas dafrmer quelle marcherait sur lensemble de lalgorithme. Plus prcisemment, nous ne pouvions pas prvoir dventuelles corrlations caches, qui auraient fauss la recherche de la clef. Finalement, cette tape a t valide : la clef DES a t retrouve avec environ le mme nombre de courbes que ltape prcdente.

33

F IGURE 12: Courbe de DPA

F IGURE 13: Courbe de DPA

La troisime mthode est en fait un test nal. En tudiant limplmentation en C du DES, il est ressorti quil y avait une dsynchronisation entre deux messages diffrents. Cela est d la prsence de conditions, dans limplmentation du DES, qui sont ou non excutes. Lors du passage dans lune ou plusieurs de ces conditions, le nombre dinstructions excutes augmente, ce qui crer une diffrence entre deux courbes. En superposant les courbes de lexcution du premier tour du DES (gure 14), on voit nettement la dsynchronisation entre les diffrentes Sbox des deux messages, ce qui engendre, lors de lattaque DPA, une mauvaise analyse statistique puisque les sorties de Sbox ne sont pas forcment additionnes entre elles, et lattaque ne peut pas tre mene bien.

F IGURE 14: Dsynchronisation due limplmentation du DES Lattaque ncessite moins de 6000 courbes pour retrouver la clef correcte, sachant que la clef de tour est retrouve presque intgralement au bout de 2000 courbes. Il existe cependant des corrlations caches qui font que certaines parties de la sous clef se retrouvent moins rapidement que dautres. En effet, les courbes de DPA obtenues pour la bonne valeur de la sous-clef prsentent un pic distinct, mais pour certaines suppositions de sous clefs incorrectes, nous constatons galement 34

un pic, tout aussi important.

F IGURE 15: Courbe de DPA

F IGURE 16: Courbe de DPA

Dans les gures 15 et 16, premire vue, il est impossible de constater une quelconque diffrence entre la valeur des deux pics. Ce nest quen faisant un zoom que lon remarque une diffrence minime, et cela explique le nombre de courbes ncessaires pour trouver la bonne sous-clef. 5.5.2 Simulation dune attaque SPA sur le DES

Lattaque SPA permet de retrouver des informations directement sur une courbe de consommation. Selon limplmentation choisie du DES, il est possible de mener une attaque SPA sur certaines parties de cet algorithme [10]. Le DES effectue plusieurs oprations, au cours des 16 rondes qui le composent, mais il nous faut rcuprer le calcul qui pourra donner le plus dinformation sur la clef. Ainsi, lors de la gnration des clefs de tour, la clef de chiffrement est manipule au moins une fois en clair . En rcuprant le bout de code correspondant ce passage, il est possible de lire les informations directement sur une courbe de consommation. La possibilit de rcuprer directement la clef va dpendre galement de limplmentation utilise ; dans notre cas, la clef nest pas manipule telle quelle, mme lors de la gnration de la premire sous-clef, puisque les bits sont traits dans lordre de la permutation considre. Il faudra donc procder un calcul de permutation inverse an de retrouver la clef. Comme il sagit de la premire opration de la gnration des clefs de tour, savoir PC-1, il sufra de calculer la permutation inverse de PC-1 partir de la clef retrouve pour en dduire la clef DES. Cette attaque a t mene de deux manires diffrentes : lune pour tester la possibilit de lire des informations sur une seule courbe, en ne prenant en compte que deux instructions. La seconde analyse le calcul entier de la premire permutation des clefs de tour, car en attaque non simule, il est possible disoler des tapes de lalgorithme mais pas des instructions. Cette mthode permet de raliser une simulation dattaque plus raliste. La premire version est une attaque sur deux instructions, correspondant au rsultat de la fonction GETBIT et lappel la fonction SETBIT. GETBIT dtermine si le bit, dont lindice est donn dans la matrice de permutation, est 1, et si cette fonction est vrie, SETBIT mettra 35

le bit de la clef de tour 1. La courbe de consommation (gure 17) montre alors des diffrences bien visibles : les pics haut correspondent des 0 et les pics bas des 1. En effet, dans notre cas, la diffrence nest prsente que sur une instruction, JNB, correspondant un saut si la valeur vaut 0. Donc dans le cas o GETBIT vaut 0, linstruction aura des tapes supplmentaire, ce qui augmente forcment la consommation de courant puisque notre modle dpend galement du nombre dtapes de chaque instruction. Le rsultat obtenu correspond bien au rsultat de la permutation PC-1.

F IGURE 17: Test de SPA sur des instructions sensibles La deuxime version ncessite toutes les instructions correspondant la permutation PC-1. Ainsi, ltude en est plus raliste car il serait trop compliqu de ne rcuprer quune instruction la fois lors dune attaque physique non simule. Cependant, la courbe de consommation (gure 18) reste explicite ; en effet, il est possible de distinguer, comme sur la gure 17, les diffrences de consommation selon la valeur du bit, la diffrence que dans ce cas, ce sont les 1 qui prsentent une plus grande consommation de courant. On retrouve galement la clef aprs la permutation PC-1.

36

F IGURE 18: SPA sur la premire permutation de la gnration des clefs de tour Nous retrouvons ainsi la clef de tour 00 3F 7F 72 24 64 4D 54, et aprs lui avoir appliqu la permutation inverse, nous obtenons la clef 6A 64 78 6A 64 78 6A 64, qui correspond bien la clef de chiffrement utilise. 5.5.3 Simulation dattaque DPA sur lAES

partir de limplmentation de DPA sur le DES, jai implment, en python, un programme de DPA visant attaquer lalgorithme de chiffrement AES [11]. Le principe de base est le mme que pour le DES, savoir que lon trie les courbes selon le rsultat de la fonction de slection. La clef est retrouve octet par octet, et pour chaque supposition de sous-clef, on a 28 = 256 possiblits. Mais lattaque DPA de lAES ne se fait pas en sortie de Sbox. En effet, le but est de trouver la partie de lalgorithme la plus vulnrable, mais aussi celle qui permettra de retrouver la clef avec le moins de calculs. Le droulement de lAES est tel que la clef de chiffrement et les clefs de tour sont utilises dans le key schedule 8 et dans la fonction AddRoundKey. Le premier appel cet fonction se fait avant le dbut des rondes, et effectue un xor entre la clef de chiffrement pure et le message en clair. Ainsi, il est possible de mener une attaque DPA sur cette partie de lAES, car elle ne dpend que du message dentre et de la clef. Le rsultat obtenu grce lattaque sera : state = message key, 9 et pour retrouver la bonne clef, il suft de faire lopration : key = state message,
8. algorithme de gnration des clefs de tour 9. Lopration reprsente un ou exclusif

37

ce qui est possible dans le cas de notre attaque DPA puisque les messages en clair sont connus de lattaquant. On effectue lattaque uniquement sur cette tape de lAES (gure 19), pour les mmes raisons que lors de lattaque DPA sur le DES. Les tests sont en cours dexcution, et ce moment du stage, il ny a pas encore de rsultats concrets.

F IGURE 19: Etape AddRoundKey de lAES 5.5.4 Simulation dattaque SPA sur lAES

Il existe galement des mthodes de SPA sur lAES [8][9]. De la mme faon que pour le DES, une SPA sur lalgorithme entier nest pas envisageable cause des diffrentes rondes et oprations associes. Cependant, en russissant rcuprer lexcution du key schedule de lAES, il est possible de tenter une SPA. Rappelons que lAES opre sur des blocs doctets, et non pas sur les bits directement. La visualisation dune courbe de consommation de courant de lAES ne pourra donc pas dvoiler la clef de chiffrement (ou une clef de tour). La mthode de SPA sur lAES consiste dduire de la courbe de consommation (uniquement de la fonction KeyExpansion), non pas la valeur des bits mais la valeur des poids de Hamming pour chaque octet trait. Ainsi, il sera possible de rduire le nombre de sous-clefs possibles et de procder une attaque brute force. De mme que pour la DPA sur lAES, nous navons pas encore de rsultat pour ce type dattaque.

5.6

Problmes rencontrs

Le problme majeur a t rencontr lors de la validation du modle. En effet, une fois implment, des attaques DPA ont t menes an de vrier la abilit du modle. Les tests de validation 38

ont t mens en tentant une attaque DPA sur le DES. Les premiers tests se sont avrs infructueux : la courbe de consommation obtenue avec notre modle montrait bien les diffrentes rondes de lalgorithme, mais lattaque ne donnait aucun rsultat. Nous avons donc tabli des mthodes, an de tester les diffrents calculs du modle et identier lerreur. 5.6.1 Interpolation

Rappelons que la courbe de consommation de courant a pour abscisse le cycle courant dexcution. Ainsi, si la premire instruction est sur un cycle, la deuxime sur trois cycles et la troisime sur deux cycles, nous nobtenons que trois points, aux abscisses 0,1 et 4, au lieu des cinq attendus. Nous nous sommes alors demand si ces points omis ntaient pas importants pour mener bien une attaque DPA. Cest pourquoi nous avons cr un programme dinterpolation, visant calculer toutes les abscisses manquantes, et nous avons ainsi recalcul toutes nos courbes de consommation. Les tests effectus sur ces courbes nont cependant pas permis de retrouver la clef secrte. partir de ce programme dinterpolation, nous avons implment un programme de moyenne dont le but tait de calculer tous les points manquants de la courbe, puis de les moyenner par paquet (de 10, 20, 50, 100 ...). Les tests ont donc t excuts plus rapidement, puisque les courbes prsentaient moins de points. Cest donc la suite de ces tests que nous avons reconsidr les paramtres pris en compte. 5.6.2 Modulation des facteurs pris en compte

La premire intuition, quant la consommation de courant, est quelle dpend des valeurs manipules, des adresses, des instructions excutes, et des valeurs intermdiaires (reprsentables par la distance de Hamming). Notre premier modle tenait compte de toutes ces caractristiques. Or, il se peut que seulement certains paramtres jouent vraiment sur la consommation de courant. Nous avons alors test le modle en liminant certains facteurs de dpendance. Aprs de nombreux essais, il sest avr que seules les valeurs (donc le poids de Hamming) et les instructions taient importantes dans le modle de consommation de courant. Les autres paramtres napportaient aucune information supplmentaire. Nous avons constat que la modulation des facteurs pris en compte au sein du modle navait aucun impact sur sa abilit, mais cela a contribu rduire la taille du programme ainsi que le temps de calcul ncessaire. Puisque ni les points manquants, ni les facteurs de consommation de courant ntaient la cause de lchec de lattaque, nous nous sommes penchs sur la valeur des cots que nous avions attribus laccs chacun des types de mmoire du micro-contrleur.

39

5.6.3

Variation des paramtres du modle

Comme certaines instructions navaient manifestement pas assez ou trop de poids sur la consommation, nous avons revu notre chier de cots, plusieurs reprises, an de trouver un modle qui retait au mieux la ralit. Limpact de chaque zone du micro-contrleur sur le cot de consommation a donc t r-tudi. Par exemple, le cot daccs en RAM externe est plus lev que laccs en RAM interne, cause de lactivation des bus. Mais laccs deux zones diffrentes dans le processeur nont pas forcment le mme cot, et il en est de mme pour les appels lUAL, selon le type dopration excute. Notre premier chier de cots donnait seulement le cot de consommation de courant de chaque zone, selon quil sagissait dune lecture ou dune criture. Lors du calcul de consommation, nous multipliions le poids de Hamming (resp. son complmentaire) de la valeur traite par le cot de traitement dun 1 (resp. dun 0), puis par le cot de la zone (en lecture ou en criture selon le cas). Or, traiter un 1 (ou un 0) na pas le mme cot selon la zone, cest pourquoi nous avons tabli le chier dcrit dans la partie 5.1.2. la suite de ces modications, lattaque DPA ne donnait toujours aucun rsultat, malgr lamlioration du modle, cest pourquoi nous avons cr un chier test de cots, avec toutes les valeurs 0, sauf celle de lecture et criture en RAM interne. En effet, lattaque DPA sur le DES se mne sur les Sbox du premier tour, et en analysant le code assembleur de lexcution du DES, nous nous sommes aperu que le rsultat des Sbox tait stock dans cette zone. Les courbes de consommation ainsi obtenues ntaient pas trs parlantes, car la RAM interne tait utilise par dautres instructions, et lattaque ne fonctionnait toujours pas. Cest ainsi que nous avons dcid de faire les tests dattaques uniquement sur les instructions concernes (cest dire, les huit MOV correspondant la copie des rsultats de sbox dans la RAM). En traant les courbes de consommation de courant, nous pouvions voir les diffrences de consommation selon le rsultat du calcul, lattaque DPA a permis de retrouver la clef de chiffrement. En reprenant notre chier de cots classique, lattaque marchait tout aussi bien (chapitre 5.4.1). Au lieu de revenir directement la DPA sur lalgorithme entier, nous avons effectu une tape de plus, savoir tester lattaque sur le calcul entier des sbox (chapitre 5.4.1). Lattaque a galement fonctionn, et nous en avons conclu que le problme venait de limplmentation de lalgorithme DES. En effet, la dsynchronisation (explique au chapitre 5.4.1) ne permettait pas forcment davoir le rsultat des sbox aux mmes abscisses, do limpossibilit de mener correctement une attaque DPA.

40

Conclusion
En conclusion, nous avons cr un modle permettant dune part de simuler lexcution des programmes lors de lutilisation des cartes puce, et dautre part de simuler la consommation de courant et dexploiter les rsultats obtenus pour simuler des attaques physiques. Grce ces rsultats, nous avons men avec succs des attaques permettant de retrouver la clef de chiffrement de lalgorithme DES. Nous avons donc tabli quil tait possible de tester, uniquement via simulation, la abilit de composants scuriss de manire logicielle. Le modle a t test sur le DES, en menant des attaques SPA et DPA. Ces attaques ont fonctionn mais uniquement sous certaines conditions. En effet, dans le cas de la DPA, lattaque ne fonctionne pas sur le premier tour complet, cause dune dsynchronisation entre les diffrentes traces. Une solution possible serait de ltrer les appels aux conditions qui font que les courbes diffrent en taille selon le message dentre. Ce modle de consommation a t excut sur des algorithmes nafs, le but tait de sassurer que le modle tait fonctionnel. Mais pour tre amlior, il doit tre test avec des implmentations des algorithmes modernes (utilisant des contre-mesures) et dautres types dattaques plus puissantes comme la CPA ou la HODPA. Il est galement possible de lutiliser pour les attaques par injection de fautes, en ajoutant du code permettant de modier un bit un instant choisi. Une autre amlioration serait de prendre en compte les appels lUAL directement dans la trace gnre par le simulateur de carte, an de simplier le modle et donc damliorer son temps dxcution. Enn, les tests du modle doivent tre tendus lAES. Ce stage ma permis dapprofondir mes connaissances dans le domaine des algorithmes de chiffrement, de mieux comprendre le fonctionnement des attaques physiques, plus particulirement la DPA, et de dcouvrir le fonctionnement des microcontrleurs. De plus, jai pu appliquer les notions tudies lors de mon parcours universitaire. Enn, ce stage ouvre maintenant la voie de nouvelles mthodes pour tester la scurit de composants.

41

Rfrences

[1] KOCHER Paul, JAFFE Joshua, JUN Benjamin, Cryptography Research, Differential Power Analysis, http://www.cryptography.com/resources/whitepapers/DPA.pdf [2] AIGNER Manfred, OSWALD Elisabeth, Institute of Applied Information Processing and Communication, Power Analysis Tutorial, http://www.iaik.tugraz.at/content/research/implementation_ attacks/introduction_to_impa/dpa_tutorial.pdf [3] KOEUNE Franois, UCL Crypto Group, STANDAERT Franois-Xavier, K2Crypt, A Tutorial On Physical Security and Side-Channel Attacks [4] KOMANO Yuichi, SHIMIZU Hideo, KAWAMURA Shinichi, Toshiba Corporation, Build-in Determined Sub-key Correlation Power Analysis, http://eprint.iacr.org/2009/161.pdf [5] CANOVAS Ccile, CLEDIERE Jessy, CEA-LETI, What do S-boxes Say in Differential Side Channel Attack ?, http://eprint.iacr.org/2005/311.pdf [6] GIRAUD Christophe, Thse luniversit de Versailles Saint-Quentin-en-Yvelines, Attaques de Cryptosystmes Embarqus et Contre-mesures Associes, Octobre 2007, http://www.prism.uvsq.fr/fileadmin/CRYPTO/TheseCG-new.pdf [7] GERMAIN Fabien, Thse lEcole Polytechnique, Scurit Cryptographique par la Conception Spcique de Circuits Intgrs, Juin 2006, http://www.imprimerie.polytechnique.fr/Theses/Files/Germain.pdf [8] BIHAM Eli, Computer Science Department, Isral Institute of Technology, SHAMIR Adi, Department of Applied Mathematics and Computer Science, The Weizmann Institute of Science, Power Analysis of the Key Scheduling of the AES Candidates [9] MANGARD Stefan, Institute for Applied Information Processing and Communications, Graz University of Technology, A Simple Power Analysis Attack on Implementation of the AES Key Expansion, Octobre 2007, http://www.prism.uvsq.fr/fileadmin/CRYPTO/TheseCG-new.pdf [10] LASH Tom, George Mason University, A Study of Power Analysis and the Advanced Encryption Standard [11] HOLLESTELLE Gijs, BURGERS Wouter, Eindhoven University of Technology Power Analysis on Smartcards Algorithms Using Simulation [12] DUFFLOT Loc, Projet, Juin 2003 Differential Power Analysis [13] GUILLEY Sylvain, Thse lENST - COMELEC Communication et Electronique, Contre-mesures Gomtriques aux attaques exploitant les canaux cachs, Janvier 2007, http://perso.telecom-paristech.fr/~guilley/phd/phd.pdf 42

[14] DEN BOER Bert, LEMKE Kerstin, WICKE Guntram, T-Systems ISS GmbH, A DPA Attack against the Modular Reduction within a CRT Implementation of RSA [15] NIST, Announcing the Advanced Encryption Standard (AES), Novembre 2001, http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf [16] NIST, Announcing the standard for Data Encryption Standard (DES), Dcembre 1993, http://www.itl.nist.gov/fipspubs/fip46-2.htm [17] DPAContest WebSite, http://www.dpacontest.org/ [18] Atmel 8051 Microcontrollers Hardware Manual, http://www.atmel.com/dyn/resources/prod_documents/doc4316.pdf [19] High-Speed Microcontroller Users Guide, http://www.phytec.com/pdf/datasheets/DS80C3xx_UM.pdf

43

Zoom sur le DES

F IGURE 20: Sbox du DES

F IGURE 21: Premire ronde du DES

44

Zoom sur lAES

F IGURE 22: Gnration des clefs de tour de lAES

F IGURE 23: Une ronde de lAES

45