• Aucun résultat trouvé

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

8.4 Attaque temporelle contre l'évaluation du PLE

L'objectif de l'attaquant est de trouver la permutation privée P par une attaque temporelle sur l'évaluation du PLE, en cherchant les éléments 0 et 1 permutés puis le reste par force brute.

Identication de la fuite : Une fuite est identiée à la ligne 4 de l'algorithme de Patterson (Algorithme 38), sur l'évaluation du PLE. Nous rappelons que le PLE est noté σ. L'attaque est basée sur le fait que la forme du polynôme dière en fonction de l'élément à décoder. Nous prouvons que la complexité de l'algorithme est fortement liée aux coecients de σ(X). Nous eectuons ensuite une attaque temporelle sur l'évaluation du PLE et contrôlons les valeurs des coecients de σ(X) (pour les codes de Goppa : Euclide étendu, Berlekamp-Massey, Patterson).

Motivations de notre attaque : L'une des principales motivations de notre at-taque est qu'elle peut opérer sur toutes les implantations existantes d'un décodeur alternant général. Elle opère sur l'évaluation du PLE, étape qui doit être calculée dans tout algorithme de décodage résolvant l'équation-clé.

Nous donnons deux algorithmes de base pour l'évaluation du PLE avec quelques améliorations et montrons que même avec les améliorations publiées, notre attaque est un succès. Nous choisissons l'évaluation polynomiale de droite à gauche (l'algo-rithme simple) et de gauche à droite (le schéma de Runi-Horner), comme présenté dans la Section 8.2. Supposons que le polynôme soit de degré t. Le premier algo-rithme calcule le résultat en 3t − 1 opérations (t additions et 2t − 1 multiplications) tandis que le second le calcule en 2t opérations (t additions et t multiplications). Il a été prouvé en 1966 [Pan66] que le schéma de Runi-Horner [Hor19] est optimal en terme de complexité.

Notre attaque fonctionne dans le cas du premier algorithme. Nous donnons une amé-lioration pour un calcul plus rapide de cet algorithme mais il reste vulnérable à notre attaque. Pour le second algorithme, l'attaque est encore un succès avec une condi-tion supplémentaire : l'attaquant doit être capable de détecter si à chaque étape l'algorithme calcule le même nombre d'opérations ou moins. Si cette condition est vériée, l'attaque fonctionne comme dans le premier cas.

L'idée principale de l'amélioration est d'utiliser le fait que certains éléments du sup-port ont des propriétés particulières (e.g. 0 et 1). Sachant qu'un coecient égal à zéro accélère l'algorithme pour des opérations comme la multiplication ou que la

8.4. ATTAQUE TEMPORELLE CONTRE L'ÉVALUATION DU PLE TR somme a une valeur xe si zéro est pris comme l'un des termes, la même chose se passe avec la multiplication par un. Donc nous exploitons ces propriétés dans le but d'améliorer notre implantation. Chaque fois qu'un coecient vaut 1 ou 0, il sera stocké dans une table spéciale utilisée après par la multiplication ou l'addition. Le cas où un coecient vaut zéro est rare et sa probabilité a été étudiée dans la Sec-tion 8.3.

Néanmoins, chaque fois qu'il y a un coecient égale à zéro, nous ne le multiplions pas l'élément correspondant puisque le produit vaut zéro. Donc nous utilisons les tables prédénies pour nous débarrasser des opérations inutiles. Nous procédons exactement de la même manière lorsque la multiplication d'un élément doit être faite lorsqu'un terme vaut 1. Donc chaque fois que nous avons un terme valant 0, en utilisant nos tables prédénies, nous nous débarrassons de deux opérations (une addition et une multiplication).

Scenario : Le scenario de l'attaque est le même que dans l'attaque présentée au Chapitre 7, excepté pour la dernière étape. En eet, l'attaquant obtient le temps d'exécution pour l'évaluation du PLE dans le cas présent, à la place de celui de la détermination du PLE.

Idée : Pour wH(E) = 2, l'attaquant trouve les positions de P(0) et P(1) (les permutations de 0 et 1). Après susamment d'itérations, il xe ces deux positions et répète cette attaque avec wH(E) = 3 et trouve ensuite la permutation privée P (en utilisant la recherche exhaustive pour les positions restantes).

Conditions : Les hypothèses sont les mêmes que dans l'attaque développée dans le Chapitre 7, excepté que l'attaquant ne connaît pas l'ordre des éléments du support.

8.4.1 Probabilité de succès

Comme nous l'avons dit, dans cette attaque nous considérons seulement les po-lynômes avec un degré plus petit que trois. Pour le cas wH(E) = 3, nous donnons la table complète des probabilités. Nous commençons avec le problème général suivant : Problème : Soit σ(X) un polynôme unitaire de degré t, avec t racines distinctes sur F2m. Quelle est la probabilité que tous ses coecients soient diérents de zéro ? Les résultats de ce problème, traité dans la Section 8.3, montrent que la probabilité peut être bornée. Pour les paramètres classiques du cryptosystème de McEliece, c'est-à-dire pour n = 2048 et t ≤ 50, on obtient :

P ≥ 0.95. Le cas t = 3 :

Réponse : Soit σ(X) un polynôme unitaire de degré 3 avec trois racines distinctes sur F2m et m ≡ 1 mod 2.

La probabilité Pt=3 que tous ses coecients soient diérents de zéro satisfait : Pt=3 = 1 − 5

8.4.2 Recherche de la permutation des éléments zéro et un

du support

1. Considérons les vecteurs erreurs Ei avec wH(Ei) = 1.

Dans ce cas, le polynôme localisateur d'erreurs a la forme suivante : σ(X) = X ⊕ αi, avec αi ∈L = {0, 1, α, . . . , αn−2}. Si αi 6= 0, il y a une addition (⊕) dans l'évaluation de σ(X). 2. Considérons les vecteurs erreurs Ei avec wH(Ei) = 2.

Dans ce cas, le polynôme localisateur d'erreurs a la forme suivante : σ(X) = X2⊕ σ2

1· X ⊕ σ2

2, avec σ2

1 = αi⊕ αj et σ2

2 = αi· αj. Nous distinguons deux cas possibles :

(a) σ(X) = X2 ⊕ σ2

1 · X ⊕ σ2

2 si αi· αj 6= 0 (b) σ(X) = X2 ⊕ σ2

1 · X si αi· αj = 0

Le cas (b) ci-dessus mène au calcul de l'évaluation polynomiale avec une addition supplémentaire ⊕ et les temps révèlent tous les couples (αi, 0). Nous pouvons supposer maintenant que la position de P(0) est connue.

3. Nous xons sa position et nous cherchons la position de P(1). Comme le polynôme σ(X) = X2⊕ σ2

1· X, l'évaluation la plus rapide est obtenue pour le couple (P(0), P(1)) puisqu'il y a seulement une addition ⊕ et une élévation au carré.

8.4.3 Scenario de l'attaque lorsque t = 3

Nous considérons les vecteurs erreurs de poids de Hamming valant 3. Le poly-nôme σ(X) correspondant a toujours l'une des huit représentations suivantes :

1 σ(X) = X3⊕ σ3 1 · X2⊕ σ3 2· X ⊕ σ3 3 si σ3 1 · σ3 2 · σ3 0 6= 0 2 σ(X) = X3⊕ σ3 1 · X2⊕ σ3 2· X si σ3 3 = 0 et σ3 1 · σ3 2 6= 0 3 σ(X) = X3⊕ σ3 1 · X2⊕ σ3 3 si σ3 2 = 0 et σ3 1 · σ3 3 6= 0 4 σ(X) = X3⊕ σ3 2 · X ⊕ σ3 3 si σ3 1 = 0 et σ3 2 · σ3 3 6= 0 5 σ(X) = X3⊕ σ3 1 · X2 si σ3 1 6= 0 et σ3 2 = 0 et σ3 3 = 0 6 σ(X) = X3⊕ σ3 2 · X si σ3 2 6= 0 et σ3 1 = 0 et σ3 3 = 0 7 σ(X) = X3⊕ σ3 3 si σ3 3 6= 0 et σ3 1 = 0 et σ3 2 = 0 8 σ(X) = X3 si σ3 1 = 0 et σ3 2 = 0 et σ3 3 = 0 Nous obtenons alors les probabilités suivantes :

(a) σ(X) = X3⊕ σ3 1 · X2⊕ σ3 2· X ⊕ σ3 3 si σ3 1· σ3 2 · σ3 3 6= 0 et P = n−5 n (b) σ(X) = X3⊕ σ3 1 · X2⊕ σ3 2· X si σ3 3 = 0 et σ3 1 · σ3 2 6= 0 et P = 3 n (c) σ(X) = X3⊕ σ3 1 · X2⊕ σ3 3 si σ3 2 = 0 et σ3 1 · σ3 3 6= 0 et P = 1 n (d) σ(X) = X3⊕ σ3 2 · X ⊕ σ3 3 si σ3 1 = 0 et σ3 2 · σ3 3 6= 0 et P = 1 n

Plusieurs cas peuvent être éliminés en considérant le fait que nous accomplissons la première étape de l'attaque et que nous connaissons donc la position de P(0). Si nous considérons tous les vecteurs erreurs où αi 6= 0, ∀i ∈ {1, 2, . . . , n − 1} (c'est-à-dire que 0 n'est pas l'une des racines de σ(X)), nous réduisons les possibilités pour σ(X). La nouvelle forme du système est la suivante :

   σ(X) = X3 ⊕ σ3 1 · X2⊕ σ3 2 · X ⊕ σ3 3 si σ3 1· σ3 2 · σ3 0 6= 0 σ(X) = X3 ⊕ σ3 1 · X2⊕ σ3 3 si σ3 2 = 0 et σ3 1· σ3 3 6= 0 σ(X) = X3 ⊕ σ3 2 · X ⊕ σ3 3 si σ3 1 = 0 et σ3 2· σ3 3 6= 0

8.4. ATTAQUE TEMPORELLE CONTRE L'ÉVALUATION DU PLE TR Dans tous les cas, X3doit être calculé donc nous ne considérons pas cette partie dans les diérences de temps. Dans la structure qui calcule l'évaluation du polynôme, la plus rapide est la dernière. Mais ce cas est eectué seulement lorsque σ3

1 = 0.

8.4.4 Recherche des positions de deux éléments tels que

P(α

j

)P(α

k

) = 1

Dans le but d'augmenter le nombre d'équations dans notre système, nous exploi-tons le fait que (F2m) est cyclique.

Rappel : nous connaissons les positions de P(0), P(1) et P(α1)⊕P(α2)⊕Π(α3) = 0. Sans perdre de généralité, nous choisissons de xer "P(0)" sur la première position et choisissons deux autres positions telles que la somme soit diérente de 1.

Nous sommes capables de faire cela parce que nous connaissons la position de "P(1)" et les couples (α1, α2)tels que 1⊕α1⊕ α2 = 0. Nous obtenons deux nouvelles positions b1 et b2 telles que b1+ b2 6= 1. Le polynôme évaluateur d'erreurs est : σ(X) = X3⊕σ3

1·X2⊕σ3

2·X. Pour b1b2 = 1, nous obtenons σ(X) = X3⊕σ3

1·X2⊕X. Cette forme est la plus rapide à être calculée comme il y a moins de multiplications comparé aux autres cas.

8.4.5 Résolution du système

Nous donnons les nombres d'équations linéaires et quadratiques obtenues par l'attaquant.

La recherche des positions de P(0) et P(1) réduit l'ensemble de recherche à (n − 2)éléments.

• Le premier ensemble d'équations linéaires :

Type d'équation (1) : P(αj)P(αk) = 1 ⇒ ]eq. = n−22

La dernière équation est déterminée par toutes les autres parce que pour le dernier couple seulement une solution possible reste valable. Par exemple, si l'attaquant trouve (n−2

2 −1)équations diérentes, alors la dernière équation peut être déterminée directement.

• Le deuxième ensemble d'équations linéaires :

Type d'équation (2) : P(αj) + P(αk) = 1 ⇒ ]eq. = n−22 .

Comme le premier ensemble, la dernière peut être déterminée par toutes les autres. Cela vient du fait que pour les trois positions, nous avons xé la position de P(1) comme la première. Donc nous avons (n − 2) possibilités sur la seconde position. Mais il y a deux répétitions pour chaque vecteur (P(1), P(αj), P(αk)).

• Le troisième ensemble d'équations quadratiques :

Type d'équation (3) : P(αi) + P(αj) + P(αk) = 0 ⇒ ]eq. = (n−2)(n−4)6

Le nombre total d'équations pour P(αi) + P(αj) + P(αk) = 0 incluant le second ensemble est égal à (n − 1)(n − 2), comme la troisième position est xée et les deux autres sont libres et diérentes. Ici, le nombre de répétitions est égal à six. Donc nous obtenons (n−2)(n−1)

6n−2

8.5 Conclusion et perspectives

En ce qui concerne l'implantation matérielle il faut, soit repenser l'attaque an qu'elle devienne un succès, soit la proposer comme solution ecace de contre-mesure à une attaque temporelle sur l'évaluation du polynôme localisateur d'erreurs. Une amélioration envisagée est de combiner l'algorithme de Horner à la recherche de Chien (et pas seulement Horner pour la version "[L2R]").

Nous avons pour objectif de reprendre les travaux correspondants à [DCCR13] an de proposer une version étendue de cet article, en espérant éclaircir certaines zones d'ombre. Ce problème peut-être intéressant également pour d'autres applications que la cryptographie.

Enn, l'attaque temporelle n'étant plus forcément d'actualité par rapport à [BCS13], il serait intéressant de tester cette attaque par analyse de consommation.

Chapitre 9

De la connaissance de la matrice de

permutation à la découverte du

polynôme de Goppa

Ce chapitre correspond aux travaux eectués pour la sous-section IV.C de [PRD+15], puis la sous-section 3.3 de [PRD+16b]. La première proposition

provient d'un échange avec Alain Couvreur. La seconde fait suite aux commentaires de Jean-Pierre Tillich et Pascal Véron.

Countermeasure against the SPA Attack on an Embedded McEliece Cryptosystem

avec Martin Petrvalský, Milo² Drutarovský, Pierre-Louis Cayrel et Viktor Fischer RadioElektronika 2015, p. 462-466, IEEE.

Low-complexity CBDPA Countermeasure for Resource-Constrained Embedded McEliece Cryptosystem

avec Martin Petrvalský, Milo² Drutarovský, Pierre-Louis Cayrel et Viktor Fischer en préparation pour RadioEngineering 2016.

Un article est en préparation, suite à de nombreuses discussions sur ce sujet avec Pascal Véron :

Goppa polynomial recovering in the McEliece PKC avec Pascal Véron et Pierre-Louis Cayrel

en préparation.