• Aucun résultat trouvé

Insertion d’un CTM apr` es Placement et Routage

3.5 Logiciels utilis´ es

3.5.2 Insertion d’un CTM apr` es Placement et Routage

Comme ´enonc´e dans le chapitre pr´ec´edent, notre choix porte sur la d´etection de CTM par des m´ethodes non destructives via l’´etude des temps de calcul internes. Ce chapitre pr´esente les outils qui sont utilis´es au cours de ces travaux de recherche.

Dans un premier temps, le principe de fonctionnement d’un circuit synchrone et les violations de contraintes temporelles sont introduits.

Ensuite, le support FPGA utilis´e est d´ecrit ainsi que les deux implantations choisies (AES et XOR) qui servent de support `a la d´etection de CTM.

Enfin, une pr´esentation des outils logiciels et le protocole exp´erimental sont d´etaill´es.

3.1 Les contraintes temporelles

La plupart des circuits int´egr´es fonctionnent `a un rythme impos´e par une horloge afin de cadencer toutes leurs op´erations internes : on parle de circuits synchrones. Il existe ´

egalement des circuits qui n’utilisent pas de signal d’horloge global pour synchroniser leurs diff´erents ´el´ements : ce sont les circuits asynchrones. Le march´e de la s´ecurit´e utilise principalement les circuits synchrones. C’est pour cela que l’on choisit de consid´erer ces circuits au cours de ces travaux.

3.1.1 Fonctionnement d’un circuit synchrone

Un circuit synchrone est compos´e de blocs de logiques combinatoires encadr´es par des registres (cf figure 3.1). Horloge Q Di+1 i Q i+1 Horloge Data_in Logique combinatoire D Q D Q Data_out Horloge D clock -> Q D tMax t setup t hold T clock i i i+1 i+1 i D clock -> Q i+1 Registre R 1 Registre R2 ’1’

3.1. Les contraintes temporelles

A chaque coup d’horloge, les donn´ees D en entr´ee des registres sont enregistr´ees et rem- placent les anciennes valeurs qui sont relˆach´ees par les sorties Q. Ces derni`eres progressent `

a travers la logique combinatoire avant d’ˆetre enregistr´ees par les registres suivants au coup d’horloge suivant. Afin que les calculs de la logique combinatoire se d´eroulent dans de bonnes conditions, des contraintes temporelles sont `a respecter, `a savoir :

– Tclock est la dur´ee d’une p´eriode de l’horloge,

– Dclock−>Qi d´esigne le d´elai entre le front montant de l’horloge et la mise `a jour de

la sortie d’un registre,

– DtM ax est le temps maximal que va prendre une donn´ee pour se propager `a travers toute la logique combinatoire en sortie du registre,

– Tskew repr´esente le d´ecalage temporel qui peut exister entre les deux signaux d’une mˆeme horloge aux entr´ees de deux registres diff´erents,

– thold est la dur´ee minimale pendant laquelle la donn´ee doit ˆetre stable apr`es le front montant d’horloge,

– tsetup d´esigne le temps minimum avant le front montant de l’horloge durant lequel la donn´ee doit rester stable.

Le temps de transit de la donn´ee Tdata incorrespond au temps n´ecessaire pour traverser le registre R1 ainsi que la logique combinatoire et arriver au registre R2.

Tdata in = Dclock−>Qi+ DtM ax (3.1)

Tneed est le temps maximal requis par la donn´ee pour que cette op´eration se d´eroule sans erreur :

Tneed = Tclock+ Tskew− tsetup (3.2)

Pour que la donn´ee soit stable `a l’entr´ee d’un registre, il faut donc respecter la contrainte suivante (cf figure3.2) :

On a ainsi :

Tclock> Dclock−>Qi + DtM ax− Tskew+ tsetup (3.4)

clock -> Q clock T D - T i + D Période

tMax skew + t setup

Figure 3.2 – Chronogramme des contraintes temporelles sur un cycle d’horloge

3.1.2 Violations des contraintes temporelles

Modifier l’horloge interne d’un circuit est un moyen r´epandu d’injection de fautes (cf section 2.4.2.1 et article [107]). Le principe repose sur les violations de ses contraintes temporelles. Le but est de faire en sorte que le registre enregistre une valeur erron´ee.

Une violation de contrainte temporelle se produit lorsque le dernier signal de transition d’une donn´ee est trop proche du front montant de l’horloge (cf3.1.2) : on parle de violation de temps de setup.

Tclock≈ Dclock−>Qi + DtM ax− Tskew+ tsetup (3.5)

Pour r´ealiser ces violations de contraintes temporelles, l’horloge est diminu´ee progres- sivement jusqu’`a arriver dans une configuration o`u la donn´ee est ´echantillonn´ee `a l’instant mˆeme o`u elle change de valeur : le registre peut enregistrer indiff´eremment une valeur ´

3.1. Les contraintes temporelles

(pr´esence d’oscillations) durant le temps de hold thold ou le temps de setup tsetup, la sortie du registre se trouve dans un ´etat m´etastable [95]. Diminuer l’effet de la m´etastabilit´e permet de s’assurer de la r´ep´etabilit´e des mesures effectu´ees. Un exemple de violations de contraintes temporelles est illustr´e `a la figure 3.3.

En continuant de diminuer l’horloge, la donn´ee n’a pas le temps d’atteindre sa valeur finale : une faute stable apparait (cf figure3.4).

Horloge Q Di+1 i Q i+1 Horloge Logique combinatoire D Q D Q Horloge D clock -> Q D tMax t setup t hold T clock i i i+1 i+1 i D clock -> Q i+1 ’0’ ou ’1’ ? Registre R 1 Registre R2 Data_in Data_out

Figure 3.3 – ´Etat m´etastable d’une violation de contraintes temporelles

Horloge Q Di+1 i Q i+1 Horloge Logique combinatoire D Q D Q Horloge D clock -> Q D tMax t setup t hold T clock i i i+1 i+1 i D clock -> Q i+1 ’0’ Registre R 1 Registre R2 Data_in Data_out

Le chemin critique d´esigne le chemin ayant le plus long temps de calcul : c’est lui qui d´etermine la fr´equence maximum de fonctionnement du circuit. Lorsque l’on diminue progressivement une p´eriode d’horloge, le chemin critique est celui impact´e en premier. Si un CTM -ou une partie de ce CTM- est connect´e `a ce chemin critique, le d´elai de ce dernier sera augment´e et le CTM rep´er´e. C’est pour cela que les attaquants visent plutˆot les chemins non critiques (appel´es aussi chemins sous critiques) afin de minimiser les chances que leurs modifications soient d´etect´ees.

Pour impacter les chemins non critiques, il est n´ecessaire de r´eduire davantage la p´e- riode d’horloge.

Afin de maximiser les chances de d´etection d’un CTM, les travaux porteront sur l’´etude des chemins critiques et sous critiques.

3.2 Injection de fautes par modification transitoire de la fr´e-

quence d’horloge

Le travail de cette th`ese repose sur la modification de la fr´equence normale de fonc- tionnement normale du circuit. Il existe deux approches dans la litt´erature :

– la premi`ere consiste `a modifier de fa¸con globale la p´eriode durant tout le fonction- nement du circuit cible : on parle de modification statique ou “d’overclocking” (cf partie3.2),

– la seconde est plus cibl´ee, car on choisit de n’affecter qu’une p´eriode d’horloge : on parle de glitchs d’horloge. Seul un moment pr´ecis de l’ex´ecution du syst`eme vis´e est perturb´e (comme expliqu´e dans [8]). Notre choix d’´etude porte sur cette technique.

3.2.1 Description du banc de glitchs d’horloge

Le circuit ´etudi´e est implant´e sur un FPGA aliment´e sous une tension nominale de 1,2 V. Ce dernier est cadenc´e par une horloge externe g´en´er´ee par un second FPGA, comme illustr´e sur la photo3.5. Cette horloge externe a une p´eriode de 10 ns et permet d’injecter un glitch d’horloge au moment voulu `a l’aide d’un d´eclencheur (trigger ). Elle est diminu´ee par pas de 35 ps. On parlera du stress appliqu´e.

`

A chaque pas de d´ecr´ementation de la p´eriode d’horloge, il est possible d’alt´erer un, voire plusieurs bits de la logique combinatoire. On dira que l’on a d´etect´e ou faut´e les bits. Ces bits sont d´etermin´es en analysant la r´eponse en sortie du montage ´etudi´e [8]. Le temps de calcul correspond `a la dur´ee d’une p´eriode d’horloge diminu´ee du temps d´ecr´ement´e n´ecessaire pour fauter le bit concern´e. Cette approche permet donc de choisir l’intensit´e de la perturbation en jouant sur le nombre de stress que l’on veut appliquer et le moment pr´ecis o`u on veut l’ex´ecuter.

3.2. Injection de fautes par modification transitoire de la fr´equence d’horloge

Horloge externe

Circuit étudié

Horloge Déclencheur du glitch d’horloge

Figure 3.5 – Photo du montage exp´erimental

Cette m´ethode ne n´ecessite qu’un acc`es `a l’horloge du circuit vis´e, ainsi qu’`a ses en- tr´ees/sorties. L’ajout de circuit additionnel n’est pas requis.

Ce g´en´erateur de glitch d’horloge a ´et´e construit selon [33], [8] et [37]. Cette horloge modifi´ee Clk0 est fabriqu´ee `a l’aide des DLL (Delay Locked Loop) disponibles dans les FPGA Xilinx Virtex 5. L’horloge principale Clk permet de g´en´erer deux horloges secon- daires (Clk1 et Clk2 ) retard´ees chacune d’une phase r´eglable δ comme illustr´e sur la figure3.6. Le signal Clk0 provient d’un ET logique entre les deux horloges secondaires. Un trigger permet d’injecter l’horloge Clk0 `a la place du signal d’horloge d’origine Clk. La combinaison des DLL permet ainsi de g´en´erer un cycle plus ou moins court.

Sur l’exemple de la figure 3.6, la nouvelle horloge g´en´er´ee Clk0 est construite `a partir de Clk1 et Clk2. Si Clk2 est retard´ee de 2 unit´es δ, Clk1 sera retard´ee de 2∗δ2 , soit d’une unit´e δ.

Prenons l’exemple d’un bit α pour lequel il a fallu faire N diminutions de la p´eriode d’horloge pour y injecter une faute. On dira que l’on a d´etect´e (ou faut´e) le bit α. Son temps de calcul Tα (en ps) est d´efini par l’´equation 3.6. On choisit de stresser le dernier tour de calcul du circuit cible afin de pouvoir retrouver ais´ement les bits qui ont ´et´e faut´es `

a partir du r´esultat en sortie, car les r´esultats alt´er´es ne repassent pas dans la logique combinatoire.

2 Clk Clk Clk Clk’ 1 2 Clk T - 2 Clk T

Figure 3.6 – Construction de l’horloge ”glitch´ee”

Tα = Tclock− N ∗ 35 (3.6)

50 000 acquisitions ont ´et´e effectu´ees sur un oscilloscope en mode pertinence afin d’´etu- dier la stabilit´e de la diminution d’une p´eriode au regard du ph´enom`ene de gigue de l’hor- loge (variation dans le temps d’un ´ev´enement p´eriodique) pour 2 valeurs de stress. Cette ´

etude permet de justifier l’importance de r´eit´erer les mˆemes mesures un grand nombre de fois et v´erifie aussi que le pas de diminution est bien de 35 ps.

Les figures3.7et3.8illustrent le ph´enom`ene de gigue d’horloge pour 100 et 110 dimi- nutions. Les r´esultats sont r´esum´es dans le tableau 3.1. Malgr´e une amplitude de 380 ps, les 50 000 acquisitions ont permis de calculer les valeurs moyennes du front montant de l’horloge. En comparant ces deux r´esultats, on obtient une diff´erence de 350 ps pour 10 stress : le pas de diminution correspond bien `a 35 ps. N´eanmoins, pour respecter ce pas, il convient d’effectuer un grand nombre de mesures. La mˆeme approche a ´et´e effectu´ee pour 1 000 acquisitions : un pas de 35 ps fut ´egalement mesur´e. Lors des ´etudes `a venir, le nombre de r´ep´etition sera fix´e `a 1 000.

Nombre Amplitude Valeur moyenne

de stress appliqu´es de la gigue (en ps) du front montant de l’horloge (en ps)

100 380 96 100

110 380 95 750

3.2. Injection de fautes par modification transitoire de la fr´equence d’horloge

Figure 3.7 – Ph´enom`ene de gigue d’horloge pour 100 stress

Figure 3.8 – Ph´enom`ene de gigue d’horloge pour 110 stress

3.2.2 Approche de d´etection

La figure3.9permet d’illustrer l’impact que peut avoir un CTM sur les temps de calcul. On prend l’exemple d’un circuit compos´e de 3 signaux internes (a, b, c). Comme d´ecrit dans la section 3.1.2, les d´elais de ces bits sont mesur´es en diminuant la p´eriode horloge de fa¸con progressive.

Des mesures identiques sont effectu´ees sur une puce fiable afin d’obtenir les temps de calcul des bits non perturb´es par la pr´esence du CTM (chronogramme en trait continu noir sur la figure).

Diminution de la période d’horloge par pas de 35 ps a b c Période Da D b Dc : temps supplémentaire dû à la présence d’un CTM T clock

Figure 3.9 – Impact d’un CTM sur les temps de calcul

CTM (entour´ees en rouge sur la figure3.9). Dans cet exemple, seuls les bits a et c sont impact´es par la pr´esence du CTM (partie rouge en pointill´e).

3.2.3 Protocole exp´erimental

Un code en Perl permet d’automatiser la communication entre l’ordinateur, la carte `a traiter et l’horloge externe.

Algorithme 1 Proc´edure d’injection de glitch d’horloge

1: for texte P allant de 1 `a NP do

2: Envoi du texte P et de la cl´e

3: Premier chiffrement dans les conditions nominales de fonctionnement

4: R´ecup´eration du chiffr´e correct (Ccorrect) qui servira de r´ef´erence

5: for Diminution d’une p´eriode d’horloge allant de 1 `a Nstress do

6: Augmentation du stress appliqu´e au circuit cible

7: for N allant de 1 `a Nmax do

8: Chiffrement

9: R´ecup´eration du chiffr´e (Ctemp)

10: D´etermination des temps de calcul des bits faut´es

11: end for

12: end for

13: end for

Les donn´ees manipul´ees ont de l’influence sur le temps de calcul internes d’un bit α. `

A chaque r´eduction d’horloge effectu´ee, plusieurs bits sont faut´es. Les donn´ees r´ecup´er´ees correspondent aux temps de calcul des bits qui ont ´et´e faut´es. Toutes les dur´ees ne peuvent ˆ

3.3. FPGA

est perturb´ee `a son tour, ce qui engendre une interruption du fonctionnement global du circuit ´etudi´e. Par cons´equent, tous les temps de calcul ne peuvent ˆetre mesur´es (cf figure

5.1). Chaque bit d´etect´e est alors associ´e au nombre de diminutions qu’il a fallu pour le corrompre. Cela permet de calculer la longueur de son temps de calcul (cf section 3.2). Pour un texte P consid´er´e, si un bit n’a pas ´et´e faut´e, alors la valeur de son d´elai est d´efini `

a la valeur NaN (pour ”Not a Number”) dans la matrice des mesures. Cet ´el´ement ne sera alors pas consid´er´e dans les calculs suivants.

Afin de r´eduire l’incertitude li´ee `a la m´etastabilit´e (cf section3.1.2), les mesures sont r´ep´et´ees plusieurs fois (cf indice N dans l’´equation 1). Les distributions de d´elais obtenues sont approxim´ees en consid´erant la moyenne de ces donn´ees.

3.3 FPGA

Le travail a ´et´e r´ealis´e sur des circuits int´egr´es de type FPGA (Field-Programmable Gate Array) afin de valider exp´erimentalement les hypoth`eses ´emises ainsi que les mod`eles propos´es. Ces circuits ont l’avantage d’ˆetre compos´es de r´eseaux de portes logiques pro- grammables, contrairement aux ASIC qui sont des circuits int´egr´es con¸cus pour r´ealiser des fonctions pr´ecises et sp´ecifiques. Les cartes FPGA ´emulent le comportement des ASIC `

a moindre coˆut.

Les FPGA offrent des avantages int´eressants d’un point de vue du test. Le routage ainsi que les fonctionnalit´es du circuit ´emul´e peuvent ˆetre facilement modifi´es, allant d’alt´era- tions importantes aux plus minimes. Cette reconfiguration `a souhait des FPGA permet de simuler le comportement d’un grand nombre de CTM, comme ´etudi´e dans [24]. Ils font appel `a la technologie Complementary Metal Oxide Semi-conductor (CMOS).

CLB I O B I O B CLB SM CLB CLB SMSM SM I O B I O B CLB CLB SM Bloc de logique configurable

(Configurable Logic Bloc)

Bloc d’entrée/sortie (In/Out Bloc) I O B SM SMSM Matrice de connexions configurables (Switching Matrix) Canaux de routage

Sch´ematiquement, les FPGA sont compos´es d’une matrice de blocs logiques configu- rables (CLB) qui permettent de r´ealiser des fonctions s´equentielles et combinatoires. Ces blocs sont compos´es de slices (appel´es ainsi chez Xilinx, l’entreprise qui a invent´e la tech- nologie FPGA). Le nombre de slices d´epend du type de FPGA.

L’ensemble des travaux exp´erimentaux ont ´et´e effectu´es sur des cartes Spartan 3AN [105] (XC3S700AN) qui comprennent 4 slices par CLB, deux slices de type L et deux de type M. Une slice est compos´ee de 2 Look Up Tables (LUT, compos´ees chacune de 4 entr´ees pour programmer des fonctionnalit´es dans le FPGA), de bascules D en sortie pour assurer une bonne synchronisation des signaux, de multiplexeurs et d’une chaine de propagation rapide de retenue. La diff´erence entre ces slices M et L r´eside dans le fait que lorsque la LUT pour les slices M n’est pas employ´ee pour impl´ementer une fonction, elle peut ˆetre utilis´ee comme une m´emoire. Au total, ces FPGA sont compos´es de 1 472 CLB, soit de 5 888 slices. Certains FPGA, tels que les Spartan 6, disposent de slices compos´ees de 4 LUT, ayant chacune 6 entr´ees. Dans ce cas, il est possible de r´eduire en termes de slices occup´ees la taille du CTM, car la logique pourra ˆetre condens´ee plus ais´ement. N´eanmoins, le ratio de la taille du CTM par rapport `a celle du circuit ne va pas diminuer.

L’interface avec les modules ext´erieurs est assur´ee par des blocs d’entr´ee/sortie (IOB) situ´es tout autour des CLB et des “matrices d’interconnexions” (SM) ´etablissent la connexion entre les lignes.

3.4 Cibles ´etudi´ees

Notre choix d’´etude porte sur deux implantations d´etaill´ees dans ce paragraphe : – le circuit XOR qui permet de comprendre les modifications que peuvent subir les

temps de calcul de bits soumis `a des violations de contraintes temporelles,

– le circuit AES qui repr´esente un cas concret d’impl´ementation d’un algorithme cryp- tographique de r´ef´erence.

3.4.1 Circuit XOR

Le circuit XOR (pr´esent´e sur la figure 3.11) mod´elise une implantation de faible com- plexit´e. Ce circuit a ´et´e mis au point afin d’´etudier pr´ecis´ement son comportement sous l’effet de violations de contraintes temporelles. Son implantation permet de se focaliser sur les ´el´ements ext´erieurs pouvant modifier le d´elai d’un bit par exemple.

L’implantation est compos´ee de deux tours, chacun comprenant un bloc de retard suivi d’un “ou-exclusif” dont les entr´ees sont une cl´e et un texte clair (on le d´esignera par plaintext ) sur 4 bits. Le bloc de retard est constitu´e de suiveurs qui n’ont pas d’effet sur la donn´ee manipul´ee. Compte tenu de cette implantation, le texte en sortie est identique

3.4. Cibles ´etudi´ees XOR Plaintext Clé XOR Résultat : un bit Retard Retard

Figure 3.11 – Montage XOR

au texte clair dans les conditions normales de fonctionnement.

Plaintext S1 S2 Sa S1 S2 Sb S1 S2 Sc S1 S2 Sd Clé Résultat pour une opération

XOR

: un bit S : une unité de retard (suiveur)

Retard

Figure 3.12 – D´etail d’un tour du montage XOR

Les hardmacros permettent de d´ecrire une fonction en indiquant la fa¸con dont les ´el´ements logiques sont connect´es entre eux, les chemins physiques emprunt´es ainsi que les motifs de cˆablages. On utilise des hardmacros de suiveurs afin d’augmenter les temps de travers´e de la logique combinatoire. Au niveau du code VHDL (cf section3.5), le nombre de suiveurs peut ˆetre modifi´e pour chaque bit du plaintext (repr´esent´e par a, b, c et d sur la figure3.12). Cela permet de moduler la dur´ee du retard impos´e.

3.4.2 Circuit AES

L’AES (Advanced Encrytion Standard) est un algorithme de chiffrement sym´etrique con¸cu par Joan Daemen et Vincent Rijmen. Il est ´egalement connu sous le nom de Rijndael. Laur´eat du concours lanc´e par le NIST [29] en 1997, il a ´et´e d´efini comme standard de

r´ef´erence en 2000. Cet algorithme `a cl´e secr`ete est organis´e en blocs de matrices de 4*4 octets, ici not´ees ai,j. Il permet de produire un texte chiffr´e (128 bits) `a partir d’une cl´e (de 128, 192 ou 256 bits) et d’un plaintext (de 128 bits). L’algorithme est compos´e de tours (ou rondes) dont le nombre de tours d´epend de la taille de la cl´e (10 pour 128 bits, 12 pour 192 et 14 pour 256 bits). Dans notre cas d’´etude, un AES avec une taille de cl´e de 128 bits est utilis´e.

On distingue quatre ´etapes (ou transformations) dans cet algorithme s’effectuant `a chaque tour (except´e sur le dernier) comme illustr´e sur la figure 3.13:

– AddRoundKey : ajout de la cl´e de tour, – SubBytes : substitution non lin´eaire, – ShiftRows : d´ecalage de lignes, – MixColumns : mixage des colonnes.

AddRoundKey SubBytes ShiftRows MixColumns AddRoundKey SubBytes ShiftRows AddRoundKey Nombre de tour < 10 Nombre de tour = 10 Nombre de tour + 1