Brevet FR2947647A1 — publié le 20110107

L'invention concerne un procédé de traitement, de préférence cryptographique, de données, par exemple mis en oeuvre au sein d'une entité électronique, et un dispositif associé (par exemple cette entité électronique). Dans le domaine du traitement des données (ces données pouvant représenter par exemple un message à échanger ou une clé cryptographique de chiffrement d'un message de ce type), on utilise les propriétés des courbes elliptiques sur les corps finis lors des calculs cryptographiques impliqués par le traitement des données, par exemple pour signature d'un message ou échange de clés entre partenaires. Pour mettre en pratique ces traitements, de manière générale dans une entité électronique, on utilise une représentation particulière des points de la courbe elliptique au moyen par exemple d'une pluralité d'éléments d'un corps de Galois (formant les coordonnées du point), telle que par exemple la représentation projective jacobienne (représentation par un triplet de points du corps de Galois Fp) ou une représentation projective jacobienne modifiée (au moyen de quatre éléments ou coordonnées du corps de Galois Fp), comme décrit par exemple dans l'article "Efficient elliptic curve exponentiation using mixed coordinate" de H. Cohen, T. Ono, and A. Miyaji, in K. Ohta and P. Dinggyi, editors, Advances in Cryptology ù ASIACRYPT '98, volume 1514 of Lecture Notes in Computer Science, pages 51-65. Springer, 1998. Les opérations sur la courbe elliptique se ramènent alors en effet à des opérations dans le corps de Galois Fp. Ainsi par exemple une addition ou un doublement sur la courbe elliptique (opérations qui permettent par composition de réaliser la multiplication par un scalaire sur la courbe elliptique comme décrit par exemple dans l'article précité) sont réalisés par la mise en oeuvre d'opérations dans le corps de Galois Fp sur les coordonnées du ou des points concernés (ces opérations dans le corps de Galois devant typiquement résulter en des additions, des soustractions, des multiplications et des élévations à une puissance 2, 3 ou 4). Afin de se protéger des attaques par canal auxiliaire (en anglais "Side Channel Attacks") telles que l'observation de la consommation énergétique de l'entité électronique afin de tenter de déterminer les opérations qui y sont mises en oeuvre, il a été proposé de réaliser les opérations susmentionnées dans le corps de Galois parmi un ensemble plus large d'opérations, dont certaines sont par conséquent factices, de telle sorte que la suite des types d'opérations successives forme une répétition périodique d'un nombre de types prédéterminé, et ce, quelle que soit l'opération sur la courbe elliptique concernée. Cette technique est décrite de manière générale dans la demande de brevet FR 2 838 210 et dans son application aux courbes elliptiques dans l'article "Low-cost Solutions for Preventing Simple Side-Channel Analysis : Side-Channel Atomicity" de B. Chevallier-Mames, M. Ciet, and M. Joye, IEEE Transactions on Computers, 53(6) : 760-768, 2004 (voir également "Aspects of Fast and Secure Arithmetics for Elliptic Curve Cryptography" de M. Ciet, thèse de doctorat, Université catholique de Louvain, juin 2003). Dans cet article, on propose ainsi de mettre en oeuvre la répétition d'un bloc élémentaire (dit bloc atomique) formé par la succession d'une multiplication, d'une addition, d'une opposition et d'une nouvelle addition (toutes ces opérations étant considérées dans le corps de Galois Fp). Comme déjà indiqué, quelle que soit l'opération (doublement ou addition) réalisée sur la courbe elliptique, cette opération est mise en oeuvre pratiquement dans l'entité électronique par la répétition de blocs élémentaires du même type (10 blocs dans le cas du doublement et 16 blocs dans le cas de l'addition), les données manipulées variant par contre d'un bloc élémentaire à l'autre. La mise en oeuvre systématique de multiplications par l'entité électronique (à l'aide par exemple d'une instruction de multiplication au sein d'un microprocesseur de l'entité électronique), dans les cas où les deux opérandes sont distincts comme dans celui où les deux opérandes sont identiques, permet dans ce contexte d'utiliser fréquemment des opérations du même type (ici des multiplications) et participent donc à la possibilité de définir le bloc élémentaire à répéter. Dans ce contexte, l'invention propose un procédé de traitement cryptographique de données mis en oeuvre au sein d'une entité électronique, dans lequel on détermine, à partir d'un premier point sur une courbe elliptique représenté au moyen d'au moins trois premiers éléments d'un corps de Galois, un second point sur la courbe elliptique représenté au moyen d'au moins trois seconds éléments du corps de Galois, chacun des seconds éléments étant obtenu à partir des premiers éléments au moyen d'un premier ensemble d'opérations comprenant des multiplications et des additions, dans lequel on met en oeuvre un second ensemble d'opérations successives ayant chacune un type, la suite des types des opérations successives du second ensemble formant une répétition périodique d'une pluralité de types d'opération incluant au moins une multiplication et une addition dans le corps de Galois, le second ensemble d'opérations comprenant le premier ensemble d'opérations, caractérisé en ce que la pluralité de types d'opération comprend une mise au carré dans le corps de Galois. L'utilisation d'une opération de mise au carré, dont la mise en oeuvre est plus rapide qu'une multiplication (notamment pour un microprocesseur d'une entité électronique), permet de réduire le temps de mise en oeuvre des opérations sur la courbe elliptique, sans toutefois compromettre la possibilité d'effectuer ces opérations par la répétition de blocs élémentaires à types d'opération prédéfinis, contrairement à ce qui pouvait paraître souhaitable comme indiqué ci-dessus. Lesdits trois premiers éléments sont par exemple des coordonnées projectives jacobiennes du premier point et lesdits trois seconds éléments par exemple des coordonnées projectives jacobiennes du second point. Selon un mode de réalisation envisagé plus loin dans la description, le second point est le produit scalaire du premier point par un entier ; ce produit scalaire peut faire partie d'un algorithme cryptographique de signature (par exemple selon le protocole ECDSA) ou d'échange de clés cryptographiques (par exemple selon le protocole ECDH). Un tel produit scalaire est par exemple mise en oeuvre au moyen d'additions en coordonnées projectives jacobiennes et de doublements en coordonnées projectives jacobiennes modifiées, ce qui limite le nombre de multiplications à effectuer. En variante, le second point peut être la somme du premier point et d'un troisième point de la courbe elliptique. La courbe elliptique peut en pratique avoir pour équation projective jacobienne de Weierstrass Y2 = X3 + aXZ4 + bZ6, où a et b sont des éléments du corps de Galois et 4a3 + 27b2 n'est pas l'élément nul. Selon un mode de réalisation envisageable, l'entité électronique peut être un microprocesseur, auquel cas chacune desdites opérations correspond à une instruction du microprocesseur. En variante, l'entité électronique peut être une carte à microcircuit intégrant un processeur apte à exécuter des instructions correspondant auxdites opérations. L'invention propose également une entité électronique de traitement cryptographique de données comprenant des moyens de traitement aptes à déterminer, à partir d'un premier point sur une courbe elliptique représenté au moyen d'au moins trois premiers éléments d'un corps de Galois, un second point sur la courbe elliptique représenté au moyen d'au moins trois seconds éléments du corps de Galois, chacun des seconds éléments étant obtenu à partir des premiers éléments au moyen d'un premier ensemble d'opérations comprenant des multiplications et des additions, les moyens de traitement étant apte à mettre en oeuvre un second ensemble d'opérations successives ayant chacune un type, la suite des types des opérations successives du second ensemble formant une répétition périodique d'une pluralité de types d'opération incluant au moins une multiplication et une addition dans le corps de Galois, le second ensemble d'opérations comprenant le premier ensemble d'opérations, caractérisé en ce que la pluralité de types d'opération comprend une mise au carré dans le corps de Galois. D'autres caractéristiques et avantages de l'invention apparaîtront à lumière de la description qui suit. Le procédé de traitement de données (par exemple de message ou de clé cryptographique) décrit ci-après est mis en oeuvre au sein d'une entité électronique, par exemple une entité électronique, telle qu'une carte à microcircuit, comprenant un microprocesseur auquel cas le procédé est mis en oeuvre par l'exécution d'instructions au sein du microprocesseur et les opérations effectuées sur les données traitées sont réalisées par de telles instructions. En variante, l'entité électronique pourrait être réalisée en logique câblée, tel que c'est le cas pour un coprocesseur cryptographique. Dans le présent mode de réalisation, on considère une courbe elliptique c d'équation affine : y'=x3+ax+b et donc d'équation projective jacobienne de Weierstrap l'équation : Y~=X3+aXZ4+bZ6, où a, b E FI, et 4a3 + 27b2 ~ O. On rappelle qu'un point P de coordonnées affines (x, y) a pour coordonnées projectives jacobiennes homogènes (X: Y. Z)=(x : y : 1). Réciproquement, un point de coordonnées projectives jacobiennes (X: Y: Z) a pour coordonnées affines : (x, y)= (X/Z, Y/(Z2)). Sauf mention expresse, on utilise dans la suite les coordonnées projectives jacobiennes. L'opposé d'un point (X: Y: Z) est (X: -Y: Z) et le point à l'infini est représenté par (1 : 1 : 0). La somme de P = (XI : Y : Z,) et Q=(X2 : Y2 : Z2), où P,Q ≠ O et P ~ � Q, est le point P+Q=(X3 : Y3 : Z3) tel que : A= XiZ22 B=X2Z2 X3 =F2 ùE3 -2AE2 C=YZ Y3 =F(AE2 ùX3)ùCE3 avec z3 3 Z3 = ZIZ2E D = Y2Z~ E=BùA F=DùC Le double d'un point P = (XI : Y est le point 2P = (X3 :Y3 :Z3) tel que : X3 = B2 -2A Y3 =B(A-X3)-8Y4 Z3 = 2YZl A=4XIY2 B=3X12+aZ~4 avec Afin de réduire le nombre d'opérations (de multiplication) nécessaires à la détermination du double d'un point, on utilise la représentation projective jacobienne modifiée, comme expliqué par exemple dans l'article "Efficient elliptic curve exponentiation using mixed coordinate" déjà mentionné. Un point P de coordonnées projectives jacobiennes (X: Y: Z) a pour coordonnées projectivesjacobiennes modifiées (X: Y: Z. aZ4). Dans cette représentation, le double d'un point P = (XI : Y : Zl :W) est le point 2P = (X3 : Y3 :Z3 :W3) tel que : X3=A2ù2C A=3X2+W Y3 =A(CùX3)ù8B avec B=Y4 Z3 =2YZI C=2((X~+Y2)2-X12ùB) W3 =16BW On propose ici de mettre en oeuvre l'addition en coordonnées projectives jacobiennes (X3 : Y3 : Z3) 4- (X1 :Y : ZI)+(X2 :Y2 :Z2) définie ci-dessus au moyen des opérations suivantes : Tl Z2 Tl X2 0 0 0 Y1 ùY T2 4-Y1. Z2 T4 4-Y1.T1 O O A. B. Y1 4-Y2.Z1 0 /T3 4- T1 .T2 0l O T4 4- Z1 0 /T2 4- Yl . T4 O T3 4- -T3 T2 4- T2 + T3 . /Y1 T1X1 0l 0l O X1 ~ X2 .T4 Y1 ùY1 X1 ~X1+Y1 Y 4ù T1 . X1 0 T1 Z1 . 0X1 O X1 4- T2 X1 ùX1 Zl4-T1.Z2 Tl T4 + T4 O X1 X1 + Tl T1 Y1 . T3 X1~Y1+XI Tl E- -1 T4 4-T4 +X1 T3 4- T4 . T2 X1 ùX1 Y1 4- T3 +T 1 X3 4-X1, Y3 ,Z3 4-Z1. Le doublement en coordonnées jacobiennes modifiées (X : Y : Z :W) 4_ 2* (X : Y : Z :W) défini ci-dessus est quant à lui mis en oeuvre au moyen des opérations suivantes : X2 T2 4-Y+Y 0 Z 4- T2.Z T4 4- T1 + T1 T3 4- T2 . Y Y 4- T3 + T3 T2 4- Y.T3 T1 T4 + T1 T1 T1 + W /T3 1'12 O T44-Y.X X4-W+W T4 4- -T4 T3 4- T3 + T4 W4-T2.X X 4- T3 + T4 T2 4- -T2 Y4-T4+X T4 4- Y . T1 T4 4- -T4 Y4-T4+T2 Les symboles 0 représentent des opérations factices qui ne manipulent pas les données mentionnées ci-dessus, mais travaillent avec 5 d'autres registres (ou mémoires) dédiées à la mise en oeuvre de ces opérations factices 0. Les opérations factices 0 peuvent ainsi être choisies de telle sorte que la suite des types d'opérations (ou patron d'atomicité) est identique pour les séries d'opérations A, B et C. Par exemple, la seconde opération de la série C 10 étant une addition, les secondes opérations (factices) des séries A et B sont des additions. 8 C. On rappelle que le symbole - représente le remplacement de la donnée (en général du registre) précédant le symbole - par le résultat de l'opération indiquée après le symbole ~. Les opérations d'addition et de doublement décrites ci-dessus sont par exemple mises en oeuvre au sein de l'entité électronique pour la réalisation d'un produit scalaire sur la courbe elliptique, c'est-à-dire le produit d'un entier d par un point P de la courbe elliptique E. Le produit scalaire par un entier peut en effet toujours être ramené à des doublements et des additions du fait de la décomposition de l'entier en base 2, comme dans le cadre de l'algorithme couramment utilisé dénommé "double and adcf' ou dans le cadre d'algorithmes plus évolués, comme par exemple dans l'article "Efficient elliptic curve exponentiation using mixed coordinate" précité ou dans l'article "Fast point multiplication on elliptic curves without precomputation" de M. Joye in 2nd International Workshop on the Arithmetic of Finite Fields (WAIFI 2008), 07 2008. Le produit scalaire est par exemple utilisé lorsque l'entité électronique doit effectuer une signature en utilisant le protocole ECDSA ("Elliptic Curve Digital Signature Algorithm", utilisé dans différentes normes) qui nécessite le calcul du produit scalaire k.P, k étant un nombre aléatoire, ou bien lorsque l'entité électronique permet d'effectuer un échange de clé entre deux partenaires via le protocole ECDH (pour "Elliptic Curve Diffie-Hellman") qui nécessite le calcul du produit scalaire dA.P (dA étant un entier choisi par le premier partenaire, le produit scalaire devant alors être envoyé au second partenaire), ou le calcul du produit scalaire dA.(dB.P) (le point dB.P étant le point reçu du second partenaire par le premier partenaire), la clé secrète partagée étant alors déterminée à partir de la coordonnée affine x du point dA.(dB.P). La détermination du produit scalaire est ainsi réalisée par la mise en oeuvre successive d'opérations de type A et B d'une part et C d'autre part, succession qui dépend de l'opérande entier (respectivement d, k et dA dans les exemples ci-dessus). Toutefois, du fait que la suite des types des opérations de chacune des séries d'opérations A, B, C est identique et que les types d'opération mises en oeuvre pour réaliser un produit scalaire (composé d'opérations de types A, B et C) forme donc une répétition périodique d'une pluralité de types d'opération, il ne sera pas possible à un attaquant extérieur observant l'entité électronique de déterminer dans quel ordre les séries d'opérations A, B, C sont réalisées et l'attaquant n'aura pas accès à l'opérande entier. Par ailleurs, chacune des séries A, B, C utilise deux opérations de mise au carré, préalablement mises en oeuvre par des multiplications, et on obtient ainsi un gain en temps de calcul de l'ordre de quelques pourcents. On remarque que, par rapport à la solution décrite dans l'article "Low cost solutions for preventing simple side channe/ analysis: side-channel atomicity'' précité, les séries d'opérations A, B, C ci-dessus sont obtenues en regroupant huit blocs atomiques tels que proposés dans l'article (chaque groupe de huit blocs formant un "patron d'atomicité"), en modifiant deux de ces blocs atomiques par le remplacement d'une multiplication par une mise au carré (d'où un premier gain en temps de calcul), puis par la suppression de certaines opérations du patron d'atomicité qui ne sont utilisées dans aucun cas (d'où un second gain en temps de calcul). Le regroupement de blocs atomiques est notamment rendu possible du fait que le nombre de blocs atomiques nécessaires à l'addition en coordonnées projectives jacobiennes et le nombre de blocs atomiques nécessaires au doublement en coordonnées projectives jacobiennes modifiées ont un plus petit multiple commun strictement supérieur à1. En variante, on aurait pu former un patron d'atomicité à partir de quatre blocs atomiques tels que décrit dans l'article et modifier seulement le premier bloc atomique de chaque patron d'atomicité (remplacement dans ce bloc de la multiplication par une mise au carré). Le patron d'atomicité obtenu selon cette variante est à répéter deux fois pour un doublement et quatre fois pour une addition, avec les mêmes avantages en temps de calcul que décrit précédemment. Les exemples qui précèdent ne sont que des modes possibles de mise en oeuvre de l'invention qui ne s'y limite pas. REVENDICATIONS1. Procédé de traitement cryptographique de données mis en oeuvre au sein d'une entité électronique, dans lequel on détermine, à partir d'un premier point sur une courbe elliptique représenté au moyen d'au moins trois premiers éléments d'un corps de Galois, un second point sur la courbe elliptique représenté au moyen d'au moins trois seconds éléments du corps de Galois, chacun des seconds éléments étant obtenu à partir des premiers éléments au moyen d'un premier ensemble d'opérations comprenant des multiplications et des additions, dans lequel on met en oeuvre un second ensemble d'opérations successives ayant chacune un type, la suite des types des opérations successives du second ensemble formant une répétition périodique d'une pluralité de types d'opération incluant au moins une multiplication et une addition dans le corps de Galois, le second ensemble d'opérations comprenant le premier ensemble d'opérations, caractérisé en ce que la pluralité de types d'opération comprend une mise au carré dans le corps de Galois. 2. Procédé selon la revendication 1, caractérisé en ce que lesdits 20 trois premiers éléments sont des coordonnées projectives jacobiennes du premier point. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que lesdits trois seconds éléments sont des coordonnées projectives jacobiennes 25 du second point. 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que le second point est le produit scalaire du premier point par un entier. 30 5. Procédé selon la revendication 4, caractérisé en ce que le produit scalaire est mise en oeuvre au moyen d'additions en coordonnées projectives jacobiennes et de doublements en coordonnées projectives jacobiennes modifiées. 6. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que le second point est la somme du premier point et d'un troisième point de la courbe elliptique. 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que la courbe elliptique a pour équation projective jacobienne de Weierstrass Y2= X3 + aXZ4 + bZ6, où a et b sont des éléments du corps de Galois et 4a3 + 27b2 n'est pas l'élément nul. 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que l'entité électronique est un microprocesseur et en ce que chacune desdites opérations correspond à une instruction du microprocesseur. 9. Entité électronique de traitement cryptographique de données comprenant des moyens de traitement aptes à déterminer, à partir d'un premier point sur une courbe elliptique représenté au moyen d'au moins trois premiers éléments d'un corps de Galois, un second point sur la courbe elliptique représenté au moyen d'au moins trois seconds éléments du corps de Galois, chacun des seconds éléments étant obtenu à partir des premiers éléments au moyen d'un premier ensemble d'opérations comprenant des multiplications et des additions, les moyens de traitement étant apte à mettre en oeuvre un second ensemble d'opérations successives ayant chacune un type, la suite des types des opérations successives du second ensemble formant une répétition périodique d'une pluralité de types d'opération incluant au moins une multiplication et une addition dans le corps de Galois, le second ensemble d'opérations comprenant le premier ensemble d'opérations, caractérisé en ce que la pluralité de types d'opération comprend une mise au carré dans le corps de Galois.