FR2977954A1 - Protection d'un calcul sur courbe elliptique - Google Patents

Protection d'un calcul sur courbe elliptique Download PDF

Info

Publication number
FR2977954A1
FR2977954A1 FR1156373A FR1156373A FR2977954A1 FR 2977954 A1 FR2977954 A1 FR 2977954A1 FR 1156373 A FR1156373 A FR 1156373A FR 1156373 A FR1156373 A FR 1156373A FR 2977954 A1 FR2977954 A1 FR 2977954A1
Authority
FR
France
Prior art keywords
variable
block
bits
bit
random
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1156373A
Other languages
English (en)
Other versions
FR2977954B1 (fr
Inventor
Yannick Teglia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1156373A priority Critical patent/FR2977954B1/fr
Priority to US13/543,053 priority patent/US8873745B2/en
Publication of FR2977954A1 publication Critical patent/FR2977954A1/fr
Application granted granted Critical
Publication of FR2977954B1 publication Critical patent/FR2977954B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Complex Calculations (AREA)

Abstract

L'invention concerne un procédé de protection d'un calcul sur courbe elliptique, par un circuit électronique, dans lequel un point (P) d'une courbe elliptique est multiplié par une quantité numérique (h), comportant les étapes suivantes : initialiser (44) une première variable (T) avec une valeur fonction d'une quantité aléatoire (r) ; initialiser (41) au moins une deuxième variable (P) avec une valeur fonction de ladite quantité numérique ; au moins pour un bit (h ) valant 1 de la quantité numérique, la première variable est mise à jour par : a) la soustraction d'un multiple (65) de ladite quantité aléatoire (r) ; et b) l'ajout (64) du contenu de la deuxième variable ; et une fois tous les bits de la quantité numérique traités (60), soustraire (48) de la première variable le produit du point par ladite quantité aléatoire pour fournir le résultat (49).

Description

B11191 - 11-RO-0577FR01 1 PROTECTION D'UN CALCUL SUR COURBE ELLIPTIQUE
Domaine de l'invention La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits exécutant, de façon matérielle ou logicielle, des algorithmes de signature ou de chiffrement mettant en oeuvre des exponentiations modulaires ou des produits sur courbes elliptiques. Des exponentiations modulaires sont mises en oeuvre, par exemple, par des algorithmes de type RSA et des opérations sur courbes elliptiques se retrouvent, par exemple, dans la cryptographie à clé publique. L'invention s'applique plus particulièrement à la protection d'informations manipulées par ces calculs contre des attaques par canaux cachés. Exposé de l'art antérieur Pour protéger des informations (typiquement des quantités secrètes) manipulées par des calculs d'exponentiation modulaire ou sur courbes elliptiques contre des attaques par canaux cachés, par exemple des attaques de type DPA (Differential Power Analysis), on utilise généralement des nombres aléatoires pour masquer les quantités manipulées par l'algorithme.
B11191 - 11-RO-0577FR01
2 On protège efficacement le calcul en masquant le message (la donnée) ou le point de la courbe à soumettre au calcul pour que son opération avec la quantité secrète soit protégée.
Toutefois, en fin de calcul, il est nécessaire de démasquer le résultat, c'est-à-dire de supprimer la contribution de la quantité aléatoire sur ce résultat (message chiffré, signature, etc.), faute de quoi le résultat est inexploitable. Dans les circuits usuels, le démasquage coûte cher en ressources du circuit (énergie, temps de calcul, etc.). Résumé Un objet d'un mode de réalisation de la présente invention est de pallier tout ou partie des inconvénients des solutions usuelles de protection de calculs d'exponentiations modulaire ou sur courbes elliptiques. Un autre objet d'un mode de réalisation de la présente invention est de réduire les ressources nécessaires au calcul, démasquage inclus. Un autre objet d'un mode de réalisation de la présente invention selon un premier aspect est de proposer une solution plus particulièrement destinée aux calculs d'exponentiations modulaires. Selon ce premier aspect, un autre objet d'un mode de réalisation de la présente invention est de proposer une solution particulièrement adaptée aux algorithmes de type RSA. Un autre objet d'un mode de réalisation de la présente invention selon un deuxième aspect est de proposer une solution plus particulièrement destinée aux calculs sur courbes elliptiques.
Selon ce deuxième aspect, un autre objet d'un mode de réalisation de la présente invention est de proposer une solution particulièrement adaptée à la cryptographie asymétrique utilisant des courbes elliptiques. Pour atteindre tout ou partie de ces objets ainsi que 35 d'autres, on prévoit un procédé de protection d'un calcul sur B11191 - 11-RO-0577FR01
3 courbe elliptique, par un circuit électronique, dans lequel un point d'une courbe elliptique est multiplié par une quantité numérique, comportant les étapes suivantes : initialiser une première variable avec une valeur 5 fonction d'une quantité aléatoire ; initialiser au moins une deuxième variable avec une valeur fonction de ladite quantité numérique ; au moins pour un bit valant 1 de la quantité numérique, la première variable est mise à jour par : 10 a) la soustraction d'un multiple de ladite quantité aléatoire ; et b) l'ajout du contenu de la deuxième variable, une fois tous les bits de la quantité numérique traités, soustraire de la première variable le produit du point 15 par ladite quantité aléatoire pour fournir le résultat. Selon un mode de réalisation de la présente invention, l'étape a) est effectuée pour tous les bits de la quantité numérique et est effectuée avant l'étape b), les bits de la quantité numérique étant traités successivement à partir du bit 20 de poids faible et la deuxième variable contenant la valeur du point de la courbe elliptique. Selon un mode de réalisation de la présente invention, le contenu de ladite première variable est multiplié par deux avant l'étape a), l'étape a) correspondant à une soustraction de 25 la quantité aléatoire du contenu de la première variable. Selon un mode de réalisation de la présente invention, l'étape a) est effectuée après l'étape b), la première variable n'étant mise à jour que pour les bits de la quantité numérique valant 1, les bits de la quantité numérique étant traités 30 successivement à partir du bit de poids fort et la deuxième variable étant initialisée avec la valeur du point de la courbe elliptique majorée de la quantité aléatoire. Selon un mode de réalisation de la présente invention, pour chaque bit de l'exposant : B11191 - 11-RO-0577FR01
4 le contenu de la deuxième variable est multiplié par deux ; puis la quantité aléatoire est retranchée du contenu de la deuxième variable.
Selon un mode de réalisation de la présente invention, si le bit de l'exposant vaut 0, une troisième variable est mise à jour au moins par le contenu de la première variable majoré de celui de la deuxième. Selon un mode de réalisation de la présente invention : les bits de l'exposant sont traités successivement par groupes de bits ; l'étape a) est effectuée pour chaque groupe de bits et correspond à soustraire de la première variable un multiple, égal au nombre de bits du groupe plus un, de la quantité aléatoire ; l'étape a) est effectuée avant l'étape b) ; et l'étape b) est effectuée pour tous les groupes incluant au moins un bit valant 1.
Selon un mode de réalisation de la présente invention, l'étape b) consiste à mettre à jour la première variable en lui ajoutant la valeur du point de la courbe elliptique, un nombre de fois correspondant à la valeur décimale représentée par les bits du groupe.
Selon un mode de réalisation de la présente invention, si tous les bits du groupes valent 0, une troisième variable est mise à jour par le contenu de la première variable majoré de la valeur du point. On prévoit également un circuit électronique adapté à 30 la mise en oeuvre du procédé ci-dessus. Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif 35 en relation avec les figures jointes parmi lesquelles : B11191 - 11-RO-0577FR01
la figure 1 est un organigramme simplifié d'un exemple usuel de calcul protégé d'exponentiation modulaire ; la figure 2 est un organigramme d'un mode de réalisation d'un calcul d'exponentiation modulaire ; 5 la figure 2A est un organigramme d'une variante du mode de réalisation de la figure 2 ; la figure 2B est un organigramme d'une autre variante du mode de réalisation de la figure 2 ; la figure 3 illustre un autre mode de réalisation d'un 10 calcul d'exponentiation modulaire ; la figure 3A illustre une variante du mode de réalisation de la figure 3 ; la figure 4 est un organigramme simplifié d'un exemple usuel de calcul sur courbes elliptiques ; 15 la figure 5 illustre un mode de réalisation appliqué à un calcul sur courbes elliptiques ; la figure 5A est un organigramme d'une variante du mode de réalisation de la figure 5 ; et la figure 5B est un organigramme d'une autre variante 20 du mode de réalisation de la figure 5. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation 25 décrits ont été représentés et seront détaillés. En particulier, l'origine et la destination des quantités numériques manipulées n'ont pas été détaillées, les modes de réalisation étant compatibles avec les utilisations usuelles de telles quantités numériques. 30 La figure 1 est un organigramme illustrant un exemple usuel de calcul d'exponentiation modulaire appliqué à un algorithme de type RSA. On souhaite calculer une grandeur Md mod n, où M représente le message ou la quantité à chiffrer ou déchiffrer, d 35 représente la quantité secrète et n le modulo de l'opération.
B11191 - 11-RO-0577FR01
6 Dans l'algorithme RSA, ce modulo correspond à un produit de nombres premiers p et q représentant les facteurs du module de chiffrement (n = p.q). L'exposant de chiffrement d est, dans l'algorithme RSA, un entier choisi pour être premier avec l'indicatrice d'Euler (p(n) du module de chiffrement n. On note généralement e la clé de chiffrement et d la clé de déchiffrement. Le couple (n, e) représente la clé publique et le couple (n, d) représente la clé privée. D'autres notations peuvent bien entendu intervenir. De façon plus générale, une exponentiation modulaire d'un message ou d'une donnée M, par un exposant d représentant une quantité secrète et modulo un nombre n, peut être utilisée dans divers algorithmes de chiffrement ou de signature (par exemple, Gamal, DSA, Diffie-Hellman). Pour protéger les calculs et notamment la quantité secrète représentée par l'exposant lors de l'exponentiation modulaire, on effectue généralement, comme l'illustre la figure 1, un masquage du message à chiffrer par une quantité aléatoire r. Ce masquage consiste à multiplier (bloc 10, M = M.r) le 20 message M par la quantité r. D'habitude, ce masquage par un nombre aléatoire est effectué avant l'introduction de la quantité à traiter dans la cellule de calcul par exponentiation modulaire. Le message masqué est introduit (bloc 11, INPUT), dans la cellule de 25 calcul, avec la quantité n représentant le modulo et la quantité d représentant l'exposant. Les opérandes de l'exponentiation modulaire sont (bloc 13, A = M.r et h = d), l'exponentiation modulaire consistant à calculer la valeur Ah mod n. Une variable T est initialisée avec la valeur A (bloc 12, T = A). En 30 variante, la variable T est directement initialisée à la valeur M.r à l'étape 13. Puis, on entre dans une boucle itérative de calcul sur tous les bits hi de l'exposant h, identifiées par un indice i. Les bits de l'exposant sont traités successivement (i allant de 35 0 à m-1, où m représente le nombre de bits de l'exposant). 15 B11191 - 11-R0-0577FR01
7 Dans chaque itération, une première étape consiste (bloc 51, T = T2) en une élévation au carré de la variable T. Puis, on teste (bloc 53, hi = 1 ?) l'état du bit courant hi de l'exposant. Si ce bit est égal à 1 (sortie Y du bloc 53), le contenu de la variable T est mis à jour en étant multiplié par la grandeur A (bloc 54, T = T.A). Dans le cas contraire (sortie N du bloc 53), une variable inutile T' reçoit le produit T.A (bloc 54', T' = T.A). Effectuer une opération inutile lorsque le bit courant de l'exposant est à l'état 0 améliore le masquage du calcul en empêchant un attaquant de détecter l'état du bit de l'exposant par une analyse par canaux cachés. En effet, la consommation ou le rayonnement du circuit devient alors identique dans la mesure où les mêmes opérations sont effectuées. Tant que tous les bits de l'exposant h n'ont pas été traités (sortie N du bloc 60, ALL BITS OF h PROC. ?), on passe au bit suivant (bloc 61, NEXT i) de l'exposant et on revient à l'entrée de l'étape 51. Une fois que tous les bits de l'exposant ont été traités, la quantité Ah mod n est contenue dans la variable T. Cette quantité représente la valeur (M.r)d mod n. On transfère alors ce résultat dans une variable de résultat intermédiaire C' (bloc 15, C' = T). Puis, on effectue une deuxième exponentiation modulaire ayant pour objectif de faire disparaître la dérive introduite par la quantité aléatoire r, c'est-à-dire de démasquer le résultat. Pour cela, on place (bloc 13', A = r ; h = -d) la quantité aléatoire r (que l'on a donc préalablement mémorisé) dans la variable A, et l'opposé (-d) de la quantité d dans la variable d'exposant h. L'opposé -d correspond à une valeur arithmétiquement liée à d, telle que Md.M-d = MO = 1.
Cette valeur opposée correspond, par exemple, à une inversion un à un de l'état de chaque bit de l'exposant. Selon un autre exemple, la valeur -d a tous ses bits identiques à la valeur d, à l'exception d'un bit de signe. Un deuxième calcul d'exponentiation modulaire Ah mod n est alors effectué (bloc 16) B11191 - 11-RO-0577FR01
8 sur la base de ces variables. Ce calcul revient à calculer la quantité r-d mod n. Le résultat est contenu dans la variable T. On effectue enfin un produit (bloc 18, C = C'.T.r-d) de la valeur calculée précédemment (M.r)d mod n par la quantité que l'on vient de calculer r-d mod n. Le résultat donne l'exponentiation modulaire Md mod n qui est fourni (bloc 19, RETURN C) comme résultat de calcul. Le calcul de la figure 1 requiert en fait deux exponentiations modulaires. Une première exponentiation sert à calculer le résultat (M.r)d mod n, masqué par la quantité aléatoire r, ce qui représente 2m multiplications (bloc 51, et blocs 54 ou 54', pour chaque bit de l'exposant d). Une seconde exponentiation modulaire est requise pour éliminer la contribution de la quantité aléatoire r (bloc 16). Ce calcul requiert là encore 2m multiplications. De surcroît, la quantité d est exposée à chaque calcul. A la fin du calcul, on peut soit effectuer une inversion modulaire (rd)-1 mod n que l'on multiplie par (M.r)d, soit utiliser -d pour effectuer l'opération Mrd.r-d, et fournir le résultat.
La figure 2 est un organigramme simplifié d'un mode de réalisation selon le premier aspect, d'un calcul d'exponentiation modulaire. La figure 2 illustre un calcul d'exponentiation modulaire dans lequel les bits de l'exposant sont traités de gauche à droite (du bit de poids fort vers le bit de poids faible). Selon ce mode de réalisation, les données introduites dans la cellule de calcul (bloc 21, INPUT M, h, n) sont le message ou la donnée M à soumettre à l'exponentiation modulaire, l'exposant h de cette exponentiation modulaire et son modulo n.
Par rapport à l'exemple de la figure 1, on note déjà une différence qui est que les données introduites dans la cellule de calcul ne sont pas masquées par un nombre aléatoire. Une première étape 22, on sélectionne une valeur aléatoire r. Cette sélection est, par exemple, directement un tirage aléatoire, ou une sélection aléatoire dans une table de B11191 - 11-RO-0577FR01
9 nombres, etc. Le nombre r n'est pas nul et est premier avec le modulo n. Puis (bloc 24, T = r), on initialise une (arbitrairement première) variable T avec cette quantité r.
On entre ensuite dans une boucle de calcul itératif sur les bits i de l'exposant h. Une première étape 51 (T = T2) de cette boucle consiste à élever au carré le contenu de la variable T. Puis (bloc 25, T=T/r), le contenu de la variable T est divisé par la quantité aléatoire r, l'inverse (1/r) de la quantité r étant l'inverse modulo n, de préférence, pré-calculé. On effectue ensuite un test 53 (hi = 1 ?) sur la valeur du bit courant hi de l'exposant et, selon cette valeur, on multiplie (bloc 54, T = T.M) la variable T par la donnée M (nommée arbitrairement deuxième variable) ou on utilise une variable factice T' (arbitrairement troisième), qui n'est pas prise en compte dans le résultat et que l'on met à jour par le même calcul (bloc 54', T' = T.M). L'utilisation de la variable factice T', bien qu'optionnelle, est préférée. Tant que tous les bits de l'exposant h n'ont pas été traités (sortie N du bloc 60, ALL BITS OF h PROC. ?), on passe au bit suivant (bloc 61, NEXT i) et on revient en entrée du bloc 51. Une fois que tous les bits de l'exposant ont été traités, on effectue une dernière division de la variable T par la quantité aléatoire r (bloc 28, T = T/r). La variable T contient alors le résultat Mh mod n et ce résultat est retourné comme valeur de l'exponentiation modulaire (bloc 29, RETURN T). Le fait de faire intervenir la quantité aléatoire dans la boucle d'exponentiation modulaire permet de borner la dérive liée à l'intervention de la quantité aléatoire à chaque tour.
Dans l'exemple de la figure 1, à chaque tour la dérive introduite par le nombre aléatoire croît jusqu'à atteindre une puissance h de cette dérive, ce qui nécessite la deuxième exponentiation modulaire de démasquage. Or, pour l'efficacité de la protection, il faut qu'il y ait un aléa lors du calcul mais B11191 - 11-RO-0577FR01
10 il n'est pas nécessaire pas la dérive introduite par cet aléa croisse au cours des itérations. Par rapport à l'exemple de la figure 1, un seul calcul d'exponentiation est donc désormais suffisant. Ce calcul faisant intervenir à chaque tour la division par la quantité aléatoire (bloc 25), donc une multiplication, le nombre total de multiplications est 3m pour parvenir au résultat. L'économie en termes de ressources est donc de 25 par rapport à la solution de la figure 1.
Selon un mode particulier de réalisation, la quantité aléatoire r est sélectionnée pour correspondre à une puissance de 2 (r = 2k). Cela permet d'effectuer en parallèle les étapes 25 et 53 si les étapes 25 et 53 sont exécutées par deux processeurs distincts. En effet, l'étape 25 revient à un décalage des bits et prend un peu de temps. Réaliser le test 53 pendant ce temps permet de compenser. La figure 2A illustre un calcul similaire à celui de la figure 2, mais effectué de droite à gauche, c'est-à-dire du bit de poids faible vers le bit de poids fort (en décrémentant le rang i de l'exposant au lieu de l'incrémenter - bloc 61A, PREV i). Par rapport à l'exposé de la figure 2 : - une (arbitrairement deuxième) variable U est initialisée (bloc 23, U = M.r) avec le produit de la quantité r par le message M - en variante, les calculs sur la variable U sont directement effectués dans la variable contenant le message M ; - les étapes 51 et 25 sont remplacées par des étapes de mise à jour similaires (bloc 71, U = U2 et 75, U = U/r) de la variable U, reportées avant l'étape 60, après les opérations conditionnées par le test 53 ; - l'étape 54 est remplacée par une étape 54A (T = T.U) prenant en compte la variable U au lieu de la donnée M et, dans le cas d'une utilisation de la (arbitrairement troisième) variable T', une mise à jour factice similaire (bloc 54A', T' = T.U) est effectuée ; et B11191 - 11-RO-0577FR01
11 - l'étape 54A est suivie d'une étape identique à l'étape 25 (bloc 25A, T = T/r) et, dans le cas d'une utilisation de la variable T', une mise à jour similaire (bloc 25A', T' = T/r) est effectuée après l'étape 54A'. La figure 2B illustre une autre variante du mode de réalisation de la figure 2, dans lequel les bits de l'exposant ne sont pas traités un par un, mais par groupes (fenêtres) d'un nombre s de bits. La figure 2B illustre un exemple de fenêtres de 2 bits (s = 2). Par rapport à la figure 2 : - deux variables U1 et U2 sont pré-calculées (bloc 231, U1 = M2 et bloc 232, U2 = M.U1) et contiennent respectivement le carré m2 et le cube m3 de la donnée M - plus généralement, on pré-calcule s variables Uj (j étant compris 15 entre 1 et s) contenant respectivement la valeur M7 ; - l'étape 51 est remplacée par une étape (bloc 51B, T = T2s) d'élévation à la puissance 2.s, soit T4 dans cet exemple ; - l'étape 25 est remplacée par une étape (bloc 25B, 20 T = T/r(s+1)) de division de la variable T par une puissance s+1, soit 3 dans cet exemple, de la quantité aléatoire r ; - le test 53 est remplacé par un test 531 (hi = 1 ?) de la valeur du premier bit (de poids faible) du groupe de bits et des tests 532 (hi+1 = 1 ?) de la valeur du deuxième bit du groupe 25 de bits - plus généralement on effectue une sélection de l'étape de mise à jour de la variable T qui suit en fonction de la valeur de la fenêtre de bits considérée (pour une fenêtre de deux bits, il faut un test 531 et deux tests 532, pour une fenêtre de trois bits, il faut un test 531, deux test 532 et 30 quatre tests sur l'état du bit hi+2, etc.) ; - selon le résultat des tests 531 et 532, on met à jour la variable T avec : pour une paire de bits hi hi+1 valant 11, le produit (bloc 542, T = T.U2) du contenu de la variable T par la variable U2, pour une paire valant 10, son produit (bloc 35 541, T = T.U1) par la variable U1, pour une paire valant 01, son 10 B11191 - 11-RO-0577FR01
12 produit (bloc 54, T = T.M) par la donnée M, et pour une paire valant 00, on met à jour la variable T' (étape 54') - plus généralement, la variable T est mise à jour par son produit par une puissance de la donnée M, fonction de la valeur décimale représentée par les valeurs de la fenêtre de bits considérée ; et - l'étape 61 est remplacée par une étape 61B (i = i + s) incrémentant le rang de l'exposant de la taille s de la fenêtre de bits traités à chaque itération.
La figure 3 est un organigramme illustrant un autre mode de réalisation selon le premier aspect. Comme dans le mode de réalisation de la figure 2, la cellule de calcul d'exponentiation modulaire reçoit (bloc 21) la donnée M à soumettre à l'exponentiation modulaire), l'exposant h et le modulo n. La figure 3 expose un calcul effectué de gauche à droite (en incrémentant le rang i du bit de l'exposant). On commence (bloc 32, r = 2k) par sélectionner un nombre aléatoire, de préférence mais non nécessairement, pour qu'il corresponde à une puissance de 2.
On initialise ensuite (bloc 34, T = 1+r ; bloc 74, V = 2.T.r et bloc 33 ; U = r.M) trois variables T (arbitrairement première), V, et U (arbitrairement deuxième), respectivement avec l'addition de l'unité (1) à la quantité r, le produit de cette valeur de la variable T par le double de la quantité r, et le produit des quantités r et M. Puis, on effectue des itérations en boucle sur les différents bits hi de l'exposant. Pour chaque bit, on commence par (bloc 51, T = T2) élever au carré la variable T. Puis, on effectue une opération (bloc 35, T = T - V + r2 + r) consistant à soustraire de la variable T issue de l'étape précédente la valeur de la variable V et à y ajouter le carré (pré-calculé) de la valeur r, et la valeur r. On effectue alors le test 53 (hi = 1 ?) sur l'état du bit de l'exposant. Si celui-ci vaut 1 (sortie Y du bloc 53), la variable T est mise à jour (bloc 54, T = T.M) par le produit par B11191 - 11-R0-0577FR01
13 la donnée M (arbitrairement troisième variable), mise à jour (bloc 36, T = T - U + r) en lui soustrayant le produit de la donnée M par la quantité aléatoire r (pré-calculé) et en lui ajoutant la quantité r, et le résultat est multiplié (bloc 37, V = 2.r.T) par le double de la quantité r (pré-calculé) et copié dans la variable V (arbitrairement quatrième variable). Dans le cas où le bit de l'exposant vaut 0 (sortie N du bloc 53), on effectue les mêmes opérations (blocs 54', T' = T.M, 36', T' = T - U + r, et 37, V = 2.r.T) en mettant à jour, pour les étapes 54' et 36', une variable T' (arbitrairement cinquième) qui n'est pas prise en compte dans le résultat, puis la variable V comme à l'étape 37 de l'autre branche. L'utilisation de la variable factice T' (étapes 54' et 36'), bien qu'optionnelle, est préférée.
A l'étape 35, l'opération réalisée consiste à éliminer la dérive introduite par le tour précédent tandis qu'aux étapes 36 et 37, on réintroduit cette dérive de façon à maintenir la protection. Tant que tous les bits i de l'exposant h n'ont pas été traités (sortie N du bloc 60, ALL BITS OF h PROC. ?), on passe au bit suivant (bloc 61, NEXT i) et on revient en entrée du bloc 51. Une fois que tous les bits ont été traités (sortie Y du bloc 60), on soustrait la quantité aléatoire r au résultat T (bloc 38, T = T-r). Le résultat obtenu (bloc 39, RETURN T) contient la valeur Mh mod n. Un mode de réalisation consistant à additionner la quantité aléatoire comme décrit en relation avec la figure 3 ne requiert qu'un calcul d'exponentiation modulaire et minimise le nombre de multiplications sur des "grands" nombres (typiquement le message est d'au moins 2048 bits), couteuses en ressources, en le limitant à m (nombre de bits de l'exposant h) multiplications (blocs 54, 54'). Les multiplications par 2.r aux blocs 37 et 37' sont moins gênantes car elle concerne des multiplications par un "petit" nombre (par exemple 128 bits) par B11191 - 11-RO-0577FR01
14 rapport à la taille du message. Effectuer des additions est en effet beaucoup plus simple que des multiplications. Pour une addition, il suffit d'utiliser, par exemple, des portes de type OU-Exclusif.
En outre, le mode de réalisation de la figure 3 permet d'effectuer en parallèle la multiplication du bloc 51 avec les termes variables du bloc 36, c'est-à-dire la multiplication de V.r. On gagne ainsi du temps. Prendre en compte la quantité aléatoire dans les 10 itérations (annuler la dérive liée au tour précédent) permet d'utiliser une addition plutôt qu'une multiplication. La figure 3A illustre une variante dans laquelle le calcul est effectué de gauche à droite (en décrémentant le rang i du bit de l'exposant vers le bit de poids faible - bloc 61A, 15 PREV i). Par rapport à l'exposé de la figure 3 : - une (arbitrairement troisième) variable W est initialisée (bloc 74, W = M) avec la valeur de la donnée M - en variante, les calculs sur la variable W sont directement effectués dans la variable contenant le message M ; 20 - l'étape 51 est remplacée par une étape 51A de mise à jour similaire (W = W2) d'élévation au carrée de la valeur de la variable W, reportée avant l'étape 60, après les opérations conditionnées par le test 53 ; - l'étape 54 est remplacée par une étape 54A (T = T.W) 25 prenant en compte la variable W au lieu de la donnée M et, dans le cas d'une utilisation de la variable T', une mise à jour factice similaire (bloc 54A', T' = T.W) est effectuée ; et - l'étape 35 est remplacée par une étape 35A (U = r.W), reportée entre les étapes 51A et 60, et dans laquelle 30 la variable U est mise à jour par le produit du contenu de la variable W par la quantité aléatoire r. Selon un deuxième aspect, on prévoit d'appliquer un principe similaire à celui de la figure 2 à un calcul sur des courbes elliptiques.
B11191 - 11-RO-0577FR01
15 La figure 4 est un organigramme illustrant un exemple usuel de calcul sur une courbe elliptique. L'objectif est de calculer un produit h.P où P représente l'équivalent du message à chiffrer et h une quantité secrète. Dans une application à la cryptographie sur les courbes elliptiques, le message correspond à un point P de la courbe et la quantité h à un entier par lequel est multiplié ce point. Dans une cryptographie asymétrique, cette quantité h n'est connue que d'une des deux parties. On cherche à calculer le produit P.h en protégeant la quantité h. Pour cela, comme l'illustre la figure 4, la cellule de calcul reçoit (bloc 41, INPUT P, h) les grandeurs P et h à soumettre à l'algorithme. Puis (bloc 42), une quantité aléatoire r est tirée ou sélectionnée et une variable T est initialisée (bloc 44, T = P + r) par l'addition de cette quantité r au point P de la courbe elliptique. On entame alors une boucle itérative dans laquelle, pour chaque bit hi de la quantité secrète h, on commence par calculer (bloc 62, T = 2.T) le double de la quantité T. Ensuite, selon l'état du bit de la quantité secrète (bloc 53, hi = 1 ?), on effectue de façon similaire aux modes de réalisation du premier aspect, un calcul utile ou un calcul factice. Si le bit hi de la quantité h vaut 1 (sortie Y du bloc 53), la variable T est mise à jour par l'addition du point P (bloc 64, T = T + P). Dans le cas contraire (sortie N du bloc 53), on met à jour une variable T', inutile au résultat, par la même opération (bloc 64', T' = T + P). Là encore, ce calcul factice bien qu'optionnel est préférable et améliore la protection.
Tant que tous les bits de la quantité h n'ont pas été traités (sortie N du bloc 60, ALL BITS OF h PROC. ?), on passe au bit suivant (bloc 61, NEXT i) et on revient en entrée du bloc 62. Une fois que tous les bits ont été traités (sortie Y du bloc 60), on doit effectuer deux opérations, à savoir une multiplication (bloc 47, -r.h) de la quantité aléatoire par la B11191 - 11-RO-0577FR01
16 clé h, puis une soustraction (bloc 48, T = T-(-r.h)) du résultat de cette multiplication du contenu de la variable T, pour éliminer la contribution de la quantité aléatoire r. On fournit enfin le résultat contenu dans la variable T (bloc 49, RETURN T). Ce résultat correspond à l'opération sur les courbes elliptiques, notée h.P. La figure 5 est un organigramme illustrant un mode de réalisation d'un calcul sur courbes elliptiques. La figure 5 expose un calcul effectué de gauche à droite (l'étape 61 correspond à incrémenter le rang i du bit de l'exposant vers le bit de poids fort). L'objectif est là encode de calculer un produit h.P où P représente l'équivalent du message à chiffrer et h une quantité secrète.
Comme précédemment, la cellule de calcul reçoit (bloc 41, INPUT P, h) les grandeurs P et h à soumettre à l'algorithme. Puis (bloc 42), une quantité aléatoire r est tirée ou sélectionnée et une variable T (arbitrairement première) est initialisée (bloc 44, T = P + r) par l'addition de cette quantité r au point P de la courbe elliptique. On entame alors une boucle itérative dans laquelle, pour chaque bit hi de la quantité secrète h, on commence par calculer (bloc 62, T = 2.T) le double de la quantité T, puis (bloc 65, T = T - r) la variable T est mise à jour en lui soustrayant la quantité aléatoire r. Ensuite, selon l'état du bit de la quantité secrète (bloc 53, hi = 1 ?), on effectue de façon similaire aux modes de réalisation du premier aspect, un calcul utile ou un calcul factice. Si le bit hi de la quantité h vaut 1 (sortie Y du bloc 53), la variable T est mise à jour par l'addition du point P (bloc 64, T = T + P). Dans le cas contraire (sortie N du bloc 53), on met à jour une variable T', inutile au résultat, par la même opération (bloc 64', T' = T + P). Là encore, ce calcul factice bien qu'optionnel est préférable et améliore la protection.
B11191 - 11-R0-0577FR01
17 Tant que tous les bits de la quantité h n'ont pas été traités (sortie N du bloc 60, ALL BITS OF h PROC. ?), on passe au bit suivant (bloc 61, NEXT i) et on revient en entrée du bloc 62. Une fois que tous les bits ont été traités (sortie Y du bloc 60), on effectue une dernière opération (bloc 48, T = T - r) pour éliminer la dernière contribution de la quantité aléatoire r et on fournit le résultat contenu dans la variable T (bloc 49, RETURN T). Ce résultat correspond à l'opération sur les courbes elliptiques, notée h.P.
Comme pour les autres aspects, faire intervenir la quantité aléatoire au niveau du calcul itératif et éliminer progressivement la dérive, simplifie les calculs et est moins gourmand en terme de ressources énergétiques et temporelles. La figure 5A illustre une variante dans laquelle le calcul est effectué de gauche à droite (en décrémentant le rang i du bit de l'exposant vers le bit de poids faible - bloc 61A, PREV i). Par rapport à l'exposé de la figure 5 : - la variable T est initialisée (bloc 44A) avec la quantité aléatoire r ; - une variable X (arbitrairement deuxième) est initialisée (bloc 45, X = P + r) par la somme du point P et de la quantité aléatoire r - en variante, on utilise la variable P elle-même (P = P + r) ; - les étapes 62 et 65 sont remplacées par des étapes de mise à jour similaires (X = 2.X et X = X - r) de la variable X, reportées avant l'étape 60, après les opérations conditionnées par le test 53 ; et - l'étape 64 est modifiée en étape 64A (T = T + X) où la variable P est remplacée par la variable X et est suivie d'une étape 65A identique à l'étape 65 (T = T - r), et dans le cas d'une utilisation de la variable T', des opérations similaires (blocs 64A', T' = T + X et 65A', T' = T - r) sont effectuées sur celle-ci. La figure 5B illustre une autre variante du mode de 35 réalisation de la figure 5, dans lequel les bits de l'exposant B11191 - 11-RO-0577FR01
18 ne sont pas traités un par un, mais par groupes (fenêtres) d'un nombre s de bits. La figure 5B illustre un exemple de fenêtres de 2 bits (s = 2). Par rapport à la figure 5 : - l'étape 44 est remplacée par l'étape 44A (figure 5A) ; - deux variables U1 et U2 sont pré-calculées (bloc 451, U1 = 2.P et bloc 452, U2 = 3.P) et contiennent respectivement le double 2.P et le triple 3.P de la valeur du point P - plus généralement, on pré-calcule s variables Uj (j étant compris entre 1 et s) contenant respectivement la valeur (j+1) .P - l'étape 62 est remplacée par une étape (bloc 62B, T = 2.s.T) de multiplication par 2.s, soit 4 dans cet exemple ; - l'étape 65 est remplacée par une étape (bloc 65B, T = T - (1+s).r) de soustraction du produit par 1+s, soit 3 dans cet exemple, de la quantité aléatoire r ; - le test 53 est remplacé par un test 531 (hi = 1 ?) de la valeur du premier bit (de poids faible) du groupe de bits et des tests 532 (hi+1 = 1 ?) de la valeur du deuxième bit du groupe de bits - plus généralement on effectue une sélection de l'étape de mise à jour de la variable T qui suit en fonction de la valeur de la fenêtre de bits considérée comme pour le mode de réalisation de la figure 2B ; - selon le résultat des tests 531 et 532, on met à jour la variable T avec : pour une paire de bits hi ; hi+1 valant 11, la somme (bloc 642, T = T + U2) du contenu de la variable T et de celui de la variable U2, pour une paire valant 10, sa somme (bloc 641, T = T + U1) par le contenu de la variable U1, pour une paire valant 01, son addition (bloc 64, T = T + P) au point P, et pour une paire valant 00, on met à jour la variable T' (étape 64') - plus généralement, la variable T est mise à jour en lui additionnant le point P un nombre de fois fonction de la valeur décimale représentée par les valeurs de la fenêtre de bits considérée ; et B11191 - 11-RO-0577FR01
19 - l'étape 61 est remplacée par une étape 61B (i = i + s) incrémentant le rang de l'exposant de la taille s de la fenêtre de bits traités à chaque itération. Un avantage des modes de réalisation décrits qu'il s'agisse du premier ou second aspect est que la quantité secrète h n'est plus exposée directement à une éventuelle attaque. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, la mise en oeuvre des modes de réalisation décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus et en utilisant des outils usuels. Le nombre d'éléments de mémorisation temporaire (registres et analogues) à utiliser dépend des possibilités du circuit de même que l'exécution de certaines opérations en parallèle. La taille des variables et des données dépend des algorithmes mis en oeuvre. De plus, bien que les modes de réalisation aient été décrits en faisant plus référence à un vocabulaire logiciel, la mise en oeuvre de ces modes de réalisation s'effectue, au moins au niveau de la cellule de calcul de l'opération d'exponentiation modulaire, de préférence sous forme matérielle en utilisant une même cellule de calcul. Les opérations de multiplication et de carré modulaire sont câblées et leur utilisation est contrôlée par un programme.

Claims (10)

  1. REVENDICATIONS1. Procédé de protection d'un calcul sur courbe elliptique, par un circuit électronique, dans lequel un point (P) d'une courbe elliptique est multiplié par une quantité numérique (h), comportant les étapes suivantes : initialiser (44) une première variable (T) avec une valeur fonction d'une quantité aléatoire (r) ; initialiser (41 ; 45 ; 451, 452) au moins une deuxième variable (P ; X ; U1, U2) avec une valeur fonction de ladite quantité numérique ; au moins pour un bit (hi) valant 1 de la quantité numérique, la première variable est mise à jour par : a) la soustraction d'un multiple (65 ; 65A ; 65B) de ladite quantité aléatoire (r) ; et b) l'ajout (64 ; 64A ; 64, 641, 642) du contenu de la 15 deuxième variable, une fois tous les bits de la quantité numérique traités (60), soustraire (48) de la première variable le produit du point par ladite quantité aléatoire pour fournir le résultat (49). 20
  2. 2. Procédé selon la revendication 1, dans lequel l'étape a) (65) est effectuée pour tous les bits de la quantité numérique (h) et est effectuée avant l'étape b) (64), les bits de la quantité numérique étant traités successivement à partir du bit de poids faible et la deuxième variable (P) contenant la 25 valeur du point de la courbe elliptique.
  3. 3. Procédé selon la revendication 2, dans lequel le contenu de ladite première variable (T) est multiplié par deux (62) avant l'étape a), l'étape a) correspondant à une soustraction (65) de la quantité aléatoire du contenu de la 30 première variable.
  4. 4. Procédé selon la revendication 1, dans lequel l'étape a) (65A) est effectuée après l'étape b) (64A), la première variable (T) n'étant mise à jour que pour les bits de la quantité numérique valant 1, les bits de la quantité 10B11191 - 11-RO-0577FR01 21 numérique étant traités successivement à partir du bit de poids fort et la deuxième variable (X) étant initialisée (45) avec la valeur du point de la courbe elliptique (P) majorée de la quantité aléatoire (r).
  5. 5. Procédé selon la revendication 4, dans lequel, pour chaque bit de l'exposant : le contenu de la deuxième variable (X) est multiplié par deux (62A) ; puis la quantité aléatoire (r) est retranchée du contenu de 10 la deuxième variable.
  6. 6. Procédé selon l'une quelconque des revendications 2 à 5, dans lequel si le bit de l'exposant vaut 0, une troisième variable (T') est mise à jour (64' ; 64A') au moins par le contenu de la première variable (T) majoré de celui de la 15 deuxième (P ; X).
  7. 7. Procédé selon la revendication 1, dans lequel : les bits de l'exposant sont traités successivement par groupes de bits ; l'étape a) (65B) est effectuée pour chaque groupe de 20 bits et correspond à soustraire de la première variable un multiple, égal au nombre de bits du groupe plus un, de la quantité aléatoire (r) ; l'étape a) est effectuée avant l'étape b) (64, 641, 642) ; et 25 l'étape b) est effectuée pour tous les groupes incluant au moins un bit valant 1.
  8. 8. Procédé selon la revendication 7, dans lequel l'étape b) (64, 641, 642) consiste à mettre à jour la première variable (T) en lui ajoutant la valeur du point de la courbe 30 elliptique, un nombre de fois correspondant à la valeur décimale représentée par les bits du groupe.
  9. 9. Procédé selon la revendication 7 ou 8, dans lequel si tous les bits du groupes valent 0, une troisième variable (T') est mise à jour (64') par le contenu de la première 35 variable (T) majoré de la valeur du point (P).B11191 - 11-RO-0577FR01 22
  10. 10. Circuit électronique adapté à la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes.
FR1156373A 2011-07-13 2011-07-13 Protection d'un calcul sur courbe elliptique Expired - Fee Related FR2977954B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1156373A FR2977954B1 (fr) 2011-07-13 2011-07-13 Protection d'un calcul sur courbe elliptique
US13/543,053 US8873745B2 (en) 2011-07-13 2012-07-06 Protection of a calculation on an elliptic curve

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1156373A FR2977954B1 (fr) 2011-07-13 2011-07-13 Protection d'un calcul sur courbe elliptique

Publications (2)

Publication Number Publication Date
FR2977954A1 true FR2977954A1 (fr) 2013-01-18
FR2977954B1 FR2977954B1 (fr) 2015-06-26

Family

ID=44897914

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1156373A Expired - Fee Related FR2977954B1 (fr) 2011-07-13 2011-07-13 Protection d'un calcul sur courbe elliptique

Country Status (2)

Country Link
US (1) US8873745B2 (fr)
FR (1) FR2977954B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3010210A1 (fr) * 2013-08-29 2015-03-06 St Microelectronics Rousset Protection d'un calcul contre des attaques par canaux caches

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408075B1 (en) * 1998-11-30 2002-06-18 Hitachi, Ltd. Information processing equipment and IC card
US20070177721A1 (en) * 2003-07-22 2007-08-02 Fujitsu Limited Tamper-proof elliptic encryption with private key

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW586086B (en) * 2002-12-27 2004-05-01 Ind Tech Res Inst Method and apparatus for protecting public key schemes from timing, power and fault attacks
CN101213513B (zh) 2005-06-29 2013-06-12 爱迪德艾恩德霍芬公司 保护数据处理装置免受密码攻击或分析的设备和方法
US8775813B2 (en) * 2010-02-26 2014-07-08 Certicom Corp. ElGamal signature schemes
US8572406B2 (en) * 2010-03-31 2013-10-29 Inside Contactless Integrated circuit protected against horizontal side channel analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408075B1 (en) * 1998-11-30 2002-06-18 Hitachi, Ltd. Information processing equipment and IC card
US20070177721A1 (en) * 2003-07-22 2007-08-02 Fujitsu Limited Tamper-proof elliptic encryption with private key

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHANGKYUN KIM ET AL: "A Secure and Practical CRT-Based RSA to Resist Side Channel Attacks", ICCSA 2004,LNCS, vol. 3043, 23 April 2004 (2004-04-23), SPRINGER-VERLAG, BERLIN DE, pages 150 - 158, XP019006751, ISBN: 978-3-540-22054-1 *
MENEZES ALFRED J ET AL: "Handbook of Applied Cryptography", 1997, CRC PRESS, BOCA RATON, FL, ÉU, ISBN: 978-0-8493-8523-0, pages: 613 - 629, XP002188328 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3010210A1 (fr) * 2013-08-29 2015-03-06 St Microelectronics Rousset Protection d'un calcul contre des attaques par canaux caches

Also Published As

Publication number Publication date
FR2977954B1 (fr) 2015-06-26
US20130016827A1 (en) 2013-01-17
US8873745B2 (en) 2014-10-28

Similar Documents

Publication Publication Date Title
FR2977953A1 (fr) Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire
FR2977952A1 (fr) Protection d'un calcul d'exponentiation modulaire par multiplication par une quantite aleatoire
EP2946284B1 (fr) Procédé de cryptographie comprenant une opération de multiplication par un scalaire ou une exponentiation
EP3287891B1 (fr) Protection d'un calcul modulaire
EP3117555B1 (fr) Procédé de contremesure pour un composant électronique mettant en oeuvre un algorithme de cryptographie sur une courbe elliptique
FR2791497A1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique
EP3287892B1 (fr) Protection d'un calcul d'exponentiation modulaire
EP1368747B1 (fr) Procede et dispositif pour reduire le temps de calcul d'un produit, d'une multiplication et d'une exponentiation modulaire selon la methode de montgomery
FR3010210A1 (fr) Protection d'un calcul contre des attaques par canaux caches
EP2492804A1 (fr) Procédé de cryptographie comprenant une opération d'exponentiation
EP1166495A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP1493078B1 (fr) Procédé cryptographique protégé contre les attaques de type à canal caché
EP3136226B1 (fr) Protection d'un calcul d'exponentiation modulaire
EP1804160B1 (fr) Protection d'un calcul cryptographique effectué par un circuit intégré
EP3136227B1 (fr) Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
FR2977954A1 (fr) Protection d'un calcul sur courbe elliptique
EP3435585B1 (fr) Protection d'un calcul itératif contre des attaques horizontales
EP3457626A1 (fr) Méthode cryptographique sur courbes elliptiques binaires d'edwards
WO2004111831A2 (fr) Procede de contre-mesure par masquage de l'accumulateur
FR2856538A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme cryptographique du type a cle publique
FR2880148A1 (fr) Procede d'exponentiation securisee et compacte pour la cryptographie
FR2810821A1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique de koblitz
FR3010562A1 (fr) Procede de traitement de donnees et dispositif associe
EP3579493A1 (fr) Protection d'un calcul itératif
FR2864390A1 (fr) Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa.

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 10

ST Notification of lapse

Effective date: 20220305