• Aucun résultat trouvé

5.2 Multiplication scalaire avec les EAC sur des courbes munies d’un

5.3.4 Consommation mémoire

Le tableau5.11résume (pour un niveau de sécurité de 128 bits) le nombre de registres nécessaires pour stocker les coordonnées des différents points impliqués dans le calcul de kP ainsi que le nombre de registres auxiliaires utilisés pour les formules d’addition et de doublement (voir algorithme44 et [BLa]).

Notons que pour l’algorithme EAC-Mult, les deux points initiaux en en-trée sont représentés en coordonnées jacobiennes et partagent une coordonnée commune Z. De plus, puisque ces points sont utilisés pour stocker les résul-tats intermédiaires ainsi que les coordonnées du point calculé (algorithmes 45

Algorithme 47 EAC-Mult, Multiplication scalaire avec une EAC

Entrée(s) : c = (c1, . . . , cn) ∈ Mnet P, Q ∈ E(Fp), tels que : Q = φ(P ) = λP , avec ZP = ZQ = 1. Sortie : Q = χ1,λ(c)P 1: for i = 1 to n do 2: SafePerm(P , Q, ci) 3: ZADDb(1) 4: end for 5: ZADDb(1) 6: return Q

et 47), l’implémentation de la procédure ZADDb ne requiert que deux registres supplémentaires.

Pour la méthode SGLV, avec une courbe de Weierstrass, les deux points en entrée sont en coordonnées affines, tandis que les points intermédiaires et le point calculé sont en coordonnées jacobiennes. Pour la méthode TED-SGLV, les deux points en entrée sont en coordonnées affines étendues (x, y, xy, 1), et le point intermédiaire Q est en coordonnées standards ou étendues sur la courbe “twisted” Edwards. Dans les deux cas, les résultats intermédiaires ne peuvent pas être stockés dans les coordonnées des points en entrée, car l’algorithme 43

utilise ces points initiaux à chaque itération de leur boucle principale. Quatre (respectivement deux) registres supplémentaires sont nécessaires pour la multi-plication scalaire avec la méthode SGLV (respectivement TED-SGLV).

Méthode EAC-Mult EAC-Mult (x-only)

Taille des entiers 358 358

Nombre de registres pour les points 5 4

Registres auxiliaires 2 2

Quantité mémoire (bits) 2506 2148

Quantité mémoire (octets) 314 269

Quantité mémoire (32 bits) 79 68

Quantité mémoire (64 bits) 40 34

Méthode SGLV TED-SGLV

Taille des entiers 256 256

Nombre de registres pour les points 7 10

Registres auxiliaires 4 2

Quantité mémoire (bits) 2816 3072 Quantité mémoire (octets) 352 384 Quantité mémoire (32 bits) 88 96 Quantité mémoire (64 bits) 44 48

Table 5.11 – Consommation mémoire en bits/octets/mots de 32 bits/mots de 64 bits, pour un niveau de sécurité de 128 bits.

En résumé, par rapport aux méthodes utilisant au moins un endomorphisme, la méthode EAC-Mult consomme moins de mémoire. Elle est donc adaptée pour

les environnements à mémoire limitée.

5.4 Conclusion et perspectives

Dans ce chapitre, nous avons présenté un contexte mathématique qui per-met d’utiliser les chaînes d’additions euclidiennes pour effectuer la multiplica-tion scalaire sur une courbe munie d’un endomorphisme efficace. Nous avons proposé un algorithme efficace et sûr qui peut être implémenté très facilement. La méthode proposée est moins performante que celles basées sur les courbes possédant deux endomorphismes efficaces (telles que Ted127-glv4 et FourQ), cependant elle est (à notre connaissance) celle qui nécessite la plus petite quan-tité de mémoire parmi toutes les méthodes de multiplication scalaire basées sur des endomorphismes.

Nos résultats expérimentaux ont montré que, sur une plate-forme Android et pour un niveau de sécurité de 128 bits, la méthode présentée dans ce chapitre fournit de meilleures performances que la version régulière de la célèbre méthode GLV (avec un endomorphisme), même lorsque le système de coordonnées étendues sur les courbes “twisted” Edwards (qui est reconnu pour son efficacité) est utilisé.

À niveau de sécurité équivalent, la méthode EAC-Mult nécessite des entiers de taille 1.4 fois plus grande que celle requise pour la méthode SGLV. Comme perspective, il serait intéressant de se pencher sur une éventuelle diminution de ce facteur. Cela aurait pour conséquence de rendre la méthode présentée dans ce chapitre encore plus intéressante autant pour la performance que la consommation mémoire.

Détection de fautes lors de la

multiplication scalaire

Sommaire

6.1 Introduction . . . 151 6.2 La méthode de Pontarelli et al. . . 152 6.2.1 Principe et algorithme . . . 152 6.2.2 Coût et sûreté . . . 153 6.3 La nouvelle proposition . . . 154 6.3.1 Principe et algorithmes . . . 155 6.3.2 Analyse de la solution proposée . . . 157 6.4 Conclusion et perspectives . . . 160

6.1 Introduction

Dans [PCRS09], Pontarelli et al. abordent le problème de la détection d’er-reurs lors de la multiplication scalaire, afin d’éviter l’injection de fautes dans le matériel qui exécute l’algorithme cryptographique sous-jacent. Cette question a déjà été traitée dans plusieurs articles, dont [FRM+08,BMM00,CJ05,BOS06]. Les auteurs de [PCRS09] considèrent un modèle de faute où le résultat d’une opération élémentaire effectuée dans Fp (le corps de base de la courbe) peut être changé de manière arbitraire. Pour détecter ce type de faute, ils proposent une modification de l’algorithme de multiplication scalaire basé sur les chaînes d’additions euclidiennes (EAC), proposé par Meloni dans [Mel07]. Nous ren-voyons le lecteur vers la section 4.2.2.2 où un rappel sur cet algorithme est effectué. Pour rappel, cet algorithme de multiplication scalaire est sûr contre les attaques de type SPA. Des implémentations matérielles sont décrites dans [BCM+07, PVCTM15].

Dans [PCRS09], les auteurs utilisent le système de coordonnées affine pour représenter les points sur les courbes. Ce qui implique le calcul d’une inversion modulaire pour obtenir la somme de deux points. Dans ce chapitre, nous pré-sentons une amélioration de l’algorithme proposé par ces auteurs. Cette

lioration porte à la fois sur les performances, la sûreté ainsi que la capacité de détection de fautes lors de la multiplication scalaire. L’idée principale est de combiner le système de coordonnées jacobien avec les EAC, pour ensuite tirer parti de l’efficace formule d’addition proposée par Goundar et al. dans [GJM+11]. Nous verrons que la méthode présentée est sûre contre un modèle d’attaquant plus avancé et qu’elle est également sûre contre les attaques sur le cache d’instructions et de données. Par rappel, nous avons abordé ces attaques dans la section 5.3.3.

Ce chapitre est organisé comme suit. Nous commençons par présenter la méthode de détection de Pontarelli et al.[PCRS09]. Ensuite, nous présentons une amélioration de leur méthode. Puis, nous effectuons une analyse de notre proposition, suivie d’une comparaison avec la méthode proposée dans [PCRS09]. Enfin, nous terminons par une conclusion et quelques perspectives.

Soient E(Fp) une courbe elliptique définie sur Fp et P ∈ E(Fp) un point de cette courbe.