• Aucun résultat trouvé

Exemple 2 : Le code de Hamming de paramètres [7, 4, 3] 2

5.2 Attaque par DPA

La première analyse du calcul de la permutation faite d'un point de vue canal auxiliaire a été proposée dans [HMP10]. Les auteurs y ont énoncé quatre prols correspondants à quatre manières diérentes d'envisager une implantation de la première étape du déchirement de McEliece (permutation du texte chiré) et de la première étape du décodage des codes de Goppa (calcul du syndrome) selon qu'elles soient fusionnées ou non. En eet, comme ces deux étapes sont consécutives, on peut les voir comme un seul bloc ou non. Ces prols sont expliqués dans la Sous-section 4.2.2 de cette thèse. Pour l'attaque proposée ici, nous avons supposé que nous étions dans le cadre d'une implantation du type "Prole I" ou "Prole II", c'est-à-dire que l'on permute le texte chiré en le multipliant par la matrice de permutation. Nous rappelons que la diérence entre ces deux prols se fait sur la manière d'appréhender le calcul du syndrome et que ce dernier n'était pas notre cible pour cette attaque.

5.2.1 Opération sensible

Dans l'Algorithme 23, l'opération sensible se situe à la ligne 15 (en rouge). En eet, pour h allant de 0 à j − 1, ˜Cpi sera nul ; et pour h allant de j à n − 1, ˜Cpi sera égal à µ, autrement dit ˜Ch. En d'autres termes, le jèmebit de ˜Cdeviendra le ièmebit de ˜Cp (c'est-à-dire P−1( ˜Cj) = ˜Cpi). Ce changement de valeur s'eectue uniquement lorsque j = h (c'est-à-dire s = 00 . . . 0) et aucun changement n'est opéré dans les autres cas (c'est-à-dire s 6= 00 . . . 0). Cette propriété nous a permis de déployer une attaque par analyse diérentielle de consommation (Dierential Power Analysis (DPA) en Anglais) sur une implantation de cet algorithme. En eet, via une attaque par DPA, nous sommes capables de détecter l'instant exact de cette aectation de valeur (c'est-à-dire ˜Cpi = µ) et ainsi de révéler une ligne correspondante dans la matrice de permutation.

5.2.2 Implantation attaquée

Une implantation logicielle de l'Algorithme 23 a été réalisée sur un microcon-trôleur du type STM32F103 de chez STMicroelectronics16 . Ce microcontrôleur est un système embarqué composé d'un microprocesseur ARM Cortex-M3 de 32 bits

5.2. ATTAQUE PAR DPA TR cadencé à 72MHz. Un schéma du banc d'attaque est donné dans la Figure 5.3. Nous avons récupéré les traces de consommation d'énergie de manière instantanée en me-surant la tension aux bornes d'une résistance de 1Ω, en série entre la prise terre de la carte et celle du sol. Le système embarqué utilisé pour l'attaque a été spécialement développé pour des attaques par canaux auxiliaires. Cela permet d'obtenir une fuite d'information nette.

Figure 5.3  Schéma du banc d'attaque par DPA

Ordinateur Oscilloscope

Carte

STM32F103 ARM Cortex-M3

Conguration Récupération des traces

Déclencheur Traces de consommation Commandes/Données

Réponses

Les traces de consommation ont été acquises en utilisant deux (des quatres) canaux analogiques d'un oscilloscope de chez Agilent Technologies [Agi]. Toutes les traces nécessaires à l'attaque ont été acquises au rythme de 250×106 mesures échan-tillonnées par seconde. Deux sondes de 500MHz ont été connectées directement à la carte attaquée contenant le microcontrôleur pour eectuer ces mesures. L'acquisi-tion des données a été contrôlée par un programme exécuté tournant sur l'ordinateur inclus dans l'oscilloscope. Ce programme a servi à la fois à envoyer les textes chirés au microcontrôleur et à récupérer les traces de consommation à la n de chaque acquisition.

Le système embarqué envoyait un signal pour débuter les mesures à l'oscilloscope (déclencheur) et commençait le déchirement du texte chiré. L'oscilloscope mesu-rait la consommation d'énergie durant la première étape du déchirement : le calcul de la permutation. Une fois l'acquisition pour un texte chiré terminée, la trace était envoyée à l'ordinateur, qui la stockait sur son disque dur. Le processus de mesure fût répété ainsi pour le nombre de traces voulues (500 fois pour l'exemple qui suit). La Figure 5.4 représente les principales étapes de l'attaque par DPA sur le calcul de la permutation du texte chiré. Ces traces furent ensuite analysées et interprétées an de reconstruire entièrement la matrice de permutation.

Figure 5.4  Exemple pour l'attaque par DPA

5.2.3 Analyse des traces

Commençons par rappeler le principe d'une attaque par DPA. En tant qu'atta-quant, pour eectuer une analyse diérentielle de consommation, nous avons besoin de plusieurs traces pour une même clé privée. La récupération de celles-ci a été dé-crite dans la sous-section précédente. La partie de la clé privée que nous avons ciblée était la matrice de permutation. Donc, l'idée est que, pour une même hypothèse de clé privée (et diérents textes chirés), on eectue plusieurs mesures de la consom-mation, pour ensuite en faire une moyenne. Cette moyenne sert à minimiser le bruit qui dissimule l'information intéressante pour l'attaque (la consommation au cours de l'opération sensible).

Une fois les traces de consommation récupérées, nous avons utilisé le coecient de corrélation de Pearson [BCO04] pour le texte chiré connu en entrée. Nous avons appliqué le poids de Hamming au modèle de fuite des bits individuellement (Hi ∈ {0, 1}). Pour l'analyse de corrélation17 , nous avons ensuite utilisé

l'équa-17. Attention, les notations dans cette formule n'ont rien à voir avec les notations choisies dans cette thèse, notamment pour la théorie des codes.

5.2. ATTAQUE PAR DPA TR tion 5.1 : rH,X(η) = N X i=1 [(Xi(η) − ¯X(η))(Hi− ¯H)] v u u t N X i=1 [Xi(η) − ¯X(η)]2 N X i=1 (Hi− ¯H)2 , (5.1)

où rH,X(η)est le coecient de corrélation de Pearson pour le ηèmeéchantillon mesuré lors de l'exécution du calcul de la permutation du texte chiré, N est le nombre de traces mesurées, Xi(η) est une valeur du ηème échantillon mesuré durant la ième

mesure (ièmetrace), ¯X(η)est la valeur moyenne des ηèmeséchantillons correspondants (pour toutes les traces), Hi est une hypothèse de consommation de courant pour un bit de la donnée en entrée correspondant à la ième mesure (ième trace) et ¯H est une valeur moyenne de toutes les hypothèses Hi.

Nous avons eectué cette analyse de corrélation n fois (où n est la longueur du code, 64 fois pour l'exemple qui suit) pour chaque bit de l'entrée. Nous avons obtenu les positions des bits permutés en cherchant des pics de corrélation durant les analyses, comme dans la Figure 5.6. En comparant les positions des bits permutés aux bits des textes chirés pris en entrée, nous avons pu reconstruire la matrice de permutation. Cette attaque par DPA est dite de premier ordre puisqu'elle analyse la consommation de courant pour une seule variable intermédiaire (ici ˜Cpi).

5.2.4 Exemple

Eectuons cette attaque pour un code binaire de longueur n = 64 et visant une matrice de permutation P−1 dans Mn,n(F2). La Figure 5.5 est un exemple de trace de consommation. La durée moyenne pour obtenir une trace au rythme de 9 × 105

mesures échantillonnées par seconde est de 1, 5 seconde. Sur la trace de la Figure 5.5, nous pouvons distinguer quatre motifs de variation d'amplitude, notamment dans la moitié négative. Ces motifs sont causés par l'implantation, qui stocke les 64 bits du texte chiré dans quatre mots de 16 bits. Cela nous permet de distinguer et d'attaquer (puis protéger) chaque mot de manière indépendante. Tout ceci peut bien évidemment être généralisé pour toute longueur de code.

Figure 5.5  Exemple de trace de consommation

Des résultats pour cet exemple sont donnés dans la Figure 5.6. Ce sont quatre analyses de corrélation en utilisant 500 traces. Nous pouvons clairement distinguer l'instant (marqué par une èche) où un bit des textes chirés est manipulé pour la première fois durant le calcul de la permutation. Puisque nous connaissons la position de chaque bit des textes chirés pris en entrée de l'algorithme (CCA), et la position des mêmes bits dans les textes chirés devinés à partir des analyses de corrélation, nous pouvons reconstruire la matrice de permutation P−1. Notons que la matrice de permutation P n'est autre que la transposée de P−1, donc si on a l'une, on a l'autre sans calcul supplémentaire. Cette attaque a pris plusieurs minutes (entre 15 et 20 environ) avec 500 traces sur un processeur Intel Core i7 cadencé à 2,4 GHz.

5.3. CONTRE-MESURE TR