FR2864649A1 - Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur - Google Patents
Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur Download PDFInfo
- Publication number
- FR2864649A1 FR2864649A1 FR0413842A FR0413842A FR2864649A1 FR 2864649 A1 FR2864649 A1 FR 2864649A1 FR 0413842 A FR0413842 A FR 0413842A FR 0413842 A FR0413842 A FR 0413842A FR 2864649 A1 FR2864649 A1 FR 2864649A1
- Authority
- FR
- France
- Prior art keywords
- random number
- bits
- inverse
- multiplicity
- finite field
- 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
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 11
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims abstract description 5
- 238000004458 analytical method Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 33
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 241000700124 Octodon degus Species 0.000 description 1
- 101001125481 Simulium damnosum Phenoloxidase subunit 1 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/726—Inversion; Reciprocal calculation; Division of elements of a finite field
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
Dans un circuit de calcul d'inverse, un procédé de calcul d'inverse et un support d'enregistrement contenant un code de programme d'ordinateur lisible par ordinateur, un générateur de nombres aléatoires (400) génère un premier nombre aléatoire (R) et un second nombre aléatoire (m); et un inverseur (200) reçoit une multiplicité de premiers bits exprimant un premier élément (a(x)) d'un corps fini, et reçoit une multiplicité de seconds bits exprimant un second élément (p(x)) du corps fini. En réponse aux premier et second nombres aléatoires, l'inverseur fournit en sortie une multiplicité de troisièmes bits exprimant les éléments inverses (r(x)) du premier élément. Le premier nombre aléatoire (R) empêche une attaque de décryptage par analyse de puissance différentielle (DPA), et le second nombre aléatoire (m) empêche une attaque de décryptage par temps de calcul.
Description
La présente invention concerne un circuit d'application cryptographique,
et plus particulièrement un circuit de calcul d'inverse et un procédé de calcul d'inverse qui sont robustes vis-à-vis d'une forme de
décryptage par attaque par temps de calcul et d'une forme de décryptage par attaque par analyse de puissance différentielle (DPA pour "Differential Power Analysis"), et un support d'enregistrement lisible par ordinateur codé avec un code de programme d'ordinateur lisible par ordinateur qui met en uvre le circuit ou le procédé.
La cryptographie a été utilisée à l'origine dans les domaines de la défense et de la diplomatie pour éviter la divulgation de secrets nationaux. A l'ère de l'électronique, des institutions financières utilisent depuis longtemps la cryptographie pour gérer le transfert de fonds électroniques. De plus, depuis le temps auquel la cryptographie est entrée en utilisation à l'origine dans les domaines économiques et financiers, elle a été largement utilisée pour l'authentification d'identifica- tion, la gestion de clés de chiffrement, la signature numérique et la vérification d'identité.
La négligence dans la gestion de clés de déchiffrement, la prédictibilité de mots de passe ou le relevé d'informations introduites par un clavier dans des réseaux de communication peuvent conduire à une brèche de sécurité sous la forme d'un décryptage au profit d'une personne non autorisée. Ici, le décryptage indique une activité dans laquelle on tente de décrypter un texte chiffré pour donner un texte clair en déterminant une clé qui est utilisée à l'origine pour chiffrer le texte, lorsque toute l'information concernant le système, comme le type d'algorithme utilisé pour chiffrer le texte clair et le système d'exploitation employé, est connue, mais seulement la clé utilisée est inconnue, ainsi qu'un procédé pour tenter de décrypter un texte chiffré pour donner un texte clair en disposant seulement du texte chiffré (ce qu'on appelle une "attaque en force").
Des techniques courantes pour le décryptage comprennent l'attaque à texte chiffré seulement, l'attaque à texte clair connu, l'attaque à texte clair choisi, l'attaque à texte clair choisi de façon adaptative, l'attaque par temps de calcul, et l'attaque par analyse de puissance différentielle (DPA).
L'attaque par temps de calcul est un procédé dans lequel on détermine si la valeur d'un bit prédéterminé est 0 ou 1 en utilisant une information liée au temps de calcul d'un algorithme de chiffrement, et on décrypte le texte chiffré sur la base du résultat. L'attaque DPA est un procédé dans lequel conformément à la valeur d'un bit d'entrée, on analyse la quantité de puissance consommée par un algorithme de chiffrement, on obtient les valeurs de bits d'une clé secrète, et ensuite on décrypte le texte chiffré.
La cryptographie sur courbe elliptique définie dans un corps fini binaire GF(2n) peut être décomposée en une cryptographie utilisant des coordonnées affines et une cryptographie utilisant des coordonnées projectives.
Les coordonnées affines expriment une coordonnée sur une courbe elliptique par (x, y) et les coordonnées projectives expriment une coordonnée sur une courbe elliptique par (X, Y, Z). Par conséquent, la relation entre un point sur une courbe elliptique dans les coordonnées affines et un point sur une courbe elliptique dans les coordonnées projectives est exprimée par l'Equation 1 suivante: (1) L'addition et le doublement figurent parmi les types de calculs qu'on peut effectuer sur une courbe elliptique. On utilise l'addition lorsque deux points qui sont additionnés sont différents, tandis qu'on utilise le doublement lorsque deux points qui sont additionnés sont identiques.
Le calcul dans les coordonnées affines définies 5 dans un corps fini binaire (GF(2n)) est exprimé par l'Equation 2 suivante: y2 + xy = x3 + ax2 + b, PO = (x0, Y0). = (xl, Y1), Yo+Yl x0 + xl, si PO P1, = xl + Yl, si PO = P1, xl x2 = a + x2 + x + x0 + xl, Yl = (x1 + x2) x + x2 + Y1 Comme le montre l'Equation 2, l'addition et le doublement sur une courbe elliptique définie dans un corps fini (GF(2n)) sont constitués de calculs (c'est-à-dire l'addition, l'élévation au carré, la multiplication et le calcul d'inverse) de corps fini (GF(2n)). Les nombres et les types de calculs pour effectuer des calculs d'addition et de doublement sur chaque courbe elliptique sont indiqués
dans le Tableau 1:
Tableau 1
Types de calculs Nombre de calculs Addition de points 1I + 2M + 1S Doublement de points 1I + 2M + 1S Ici, I désigne le calcul d'inverse dans un corps fini (GF(2n)), M désigne la multiplication dans un corps fini (GF(2n)), et S désigne l'élévation au carré dans un corps fini (GF(2n)). Du fait que l'addition dans un corps fini (GF(2n)) peut être réalisée par une opération OU-EX bit par bit, la réalisation de l'addition dans un corps fini (GF(2n)) et la vitesse de l'opération d'addition peuvent être négligées, et par conséquent l'opération d'addition dans un corps fini (GF(2n)) n'est pas incluse dans le Tableau 1.
Le calcul d'inverse dans un corps fini (GF(2n)) est une opération qui prend une plus grande partie dans le chiffrement par courbe elliptique, en comparaison avec la multiplication et l'élévation au carré dans un corps fini (GF(2n)). Par conséquent, le calcul dans les coordonnées projectives qui n'exige pas un calcul d'inverse, est quelquefois utilisé pour le chiffrement sur courbe elliptique. Cependant, si l'addition et le doublement sur une courbe elliptique utilisant les coordonnées affines deviennent vulnérables à une attaque par canal latéral, la stabilité du chiffrement par courbe elliptique diminue.
La présente invention procure un circuit de calcul d'inverse robuste visà-vis de l'attaque par temps de calcul et de l'attaque par analyse de puissance différentielle (DPA).
Selon un aspect de la présente invention, celle-ci procure un circuit de calcul d'inverse. Le circuit comprend un générateur de nombres aléatoires qui génère un premier nombre aléatoire et un second nombre aléatoire. Un inverseur reçoit une multiplicité de premiers bits exprimant un premier élément d'un corps fini, en tant que premières informations d'entrée, et reçoit une multiplicité de seconds bits exprimant un second élément du corps fini, en tant que secondes informations d'entrée. En réponse aux premier et second nombres aléatoires, une multiplicité de troisièmes bits exprimant les éléments inverses du premier élément sont fournis en sortie.
Selon un autre aspect de la présente invention, celle-ci procure un procédé de calcul d'inverse comprenant les étapes suivantes on génère un premier nombre aléatoire et un second nombre aléatoire; et on reçoit une multiplicité de premiers bits exprimant un premier élément d'un corps fini, en tant que premières informations d'entrée, on reçoit une multiplicité de seconds bits exprimant un second élément du corps fini en tant que secondes informations d'entrée, et en réponse aux premier et second nombres aléatoires, on fournit en sortie une multiplicité de troisièmes bits exprimant les éléments inverses du premier élément.
Selon encore un autre aspect de la présente invention, celle-ci procure un support d'enregistrement lisible par ordinateur sur lequel se trouve un programme d'ordinateur qui met en oeuvre un procédé de calcul d'inverse, comprenant les étapes suivantes: on génère un premier nombre aléatoire et un second nombre aléatoire; et on reçoit une multiplicité de premiers bits exprimant un premier élément d'un corps fini en tant que premières informations d'entrée, on reçoit une multiplicité de seconds bits exprimant un second élément du corps fini en tant que secondes informations d'entrée, et en réponse aux premier et second nombres aléatoires, on fournit en sortie une multiplicité de troisièmes bits exprimant les éléments inverses du premier élément.
Le premier nombre aléatoire est généré à un moment qui est postérieur au moment auquel le second nombre aléatoire est généré. Le premier nombre aléatoire est formé de 2 bits et le second nombre aléatoire est plus grand que 2n et inférieur à 3n, n étant le degré du corps fini.
Lorsque la multiplicité de premiers bits et la multiplicité de troisièmes bits comprennent n bits, la multiplicité de seconds bits comprend (n+1) bits.
Le premier nombre aléatoire empêche une attaque de décryptage par analyse de puissance différentielle (DPA), et le second nombre aléatoire empêche une attaque de décryptage par temps de calcul.
Les caractéristiques et avantages de la présente invention mentionnés cidessus, ainsi que d'autres, apparaîtront davantage en décrivant en détail des exemples de modes de réalisation de celle-ci, en référence aux dessins annexés dans lesquels: La figure 1 est un schéma synoptique d'un circuit de calcul d'inverse conforme à un mode de réalisation préféré de la présente invention; et La figure 2 est un schéma de circuit d'un inverseur 10 représenté sur la figure 1.
Il est fait référence aux dessins annexés, pour illustrer des modes de réalisation préférés de la présente invention, dans le but de parvenir à une compréhension suffisante de la présente invention, de ses mérites et des objectifs atteints par la mise en oeuvre de la présente invention.
Dans ce qui suit, on décrira en détail la présente invention en expliquant des modes de réalisation préférés de l'invention en référence aux dessins annexés. Dans les dessins, chaque fois que le même élément réapparaît dans des dessins suivants, il est désigné par le même numéro de référence.
Un algorithme d'inverse de Montgomery dans un corps fini (GF(2n)) est suggéré par E. Savas, C.K. Koc dans un article "Architecture for unified field inversion with application in elliptic cryptography", 9th IEEE Internai Conference on Electronics, Circuit and System. Les étapes accomplies par l'algorithme sont les suivantes: Entrée: a(x) et p(x), avec deg (a (x)) < deg (p (x) ) Sortie: r(x) et k, avec r = a(x)-lxk (mod p(x)) et deg (a (x)) S k deg (p (x)) + deg (a (x)) + 1 1: u(x) := p(x), v(x) := a(x), r(x) := 0, et s(x) := 1 2: k 0 3: while (v(x) != 0) 4: if u (0) = 0 then u (x) := u(x)/x, s (x) := x. s (x) 5: else if v(0) = 0 then v(x) := v(x)/x, r(x) := x.r(x) 6: else if deg (u (x)) > deg (v (x)) then u (x) := (u(x) + v (x / x / (x) := r(x) + s(x) s(x) := xs(x) 7: else v(x) := (v(x) + u (x / x s(x) := s(x) + r(x) / (x) := xr(x) 8: k:= k + 1 9: if deg (r (x)) = deg (p (x)) then r(x) := r(x) + p(x) 10: return r(x) et k Ici, a(x) désigne un élément du corps fini (GF (2n)) , et un polynôme de degré (n-1), et p(x) est un polynôme de degré n pour le calcul à modulo. De plus, r(x) est l'élément inverse de a(x) et est un polynôme de degré (n-1). Le degré (deg (a (x))) de a(x) est inférieur au degré (deg (p (x))) de p(x). L'algorithme d'inverse de Montgomery calcule a (x) -lxk en relation avec l'élément a(x) du corps fini (GF (2n)) . A ce moment, la condition pour k est: deg (a (x) S k S deg (p (x)) + deg (a (x) ) + 1 Ainsi, lorsque n est le degré du corps fini (GF(2n)), k 5_2n.
Dans l'algorithme d'inverse de Montgomery, le temps de calcul exigé pour le calcul d'inverse et de k varie en fonction de l'élément a(x) du corps fini (GF (2n)) . Cependant, lorsqu'un élément a(x) d'un corps fini identique (GF(2n)) est appliqué de façon répétée en entrée d'un circuit de calcul d'inverse qui exécute l'algorithme d'inverse de Montgomery, le temps de calcul pour calculer l'inverse de l'élément a(x) est identique. Par conséquent, le circuit de calcul d'inverse est vulnérable à la forme de décryptage par attaque par temps de calcul.
Un algorithme de Montgomery perfectionné (qu'on appelle ci- après "Premier algorithme d'inverse de Montgomery") a amélioré l'algorithme de Montgomery classique pour rendre l'algorithme robuste vis- à-vis de l'attaque par temps de calcul. Les étapes du premier algorithme d'inverse de Montgomery sont les suivantes: 1. Entrée: a(x) et p(x), avec deg (a (x)) < deg (p (x) ) 2. u(x) p(x), v(x) a(x), r(x) 0, et s(x) 1 3. m.- valeur aléatoire, 2n S m S 3n 4. while (k < m) 4. 1 if (v(x) 0) 4.1.1 if (u0 0) u(x) u(x)/x, s(x) x.s(x) 4. 1.2 else if (v0 0) v(x) v(x)/x, r(x) .x.r(x) 4.1.3 else if (deg (u (x)) > deg (v (x))) then u(x) (u(x) + v (x)) /x r(x) r(x) + s(x) s(x) x.s(x) 4.1.4 else v(x) (v(x) + u (x)) /x s(x) .s(x) + r(x) r(x) x.r(x) 4. 2 else 4.2.1 if (rn = 1) r(x) <-- r(x) + p(x) 4.2.2 r(x) x.r(x) 4.3 k.-k+ 1 5. if (deg (r (x)) = deg (p (x))) r(x) r(x) + p(x) 6. SORTIE r (x) , k Le premier algorithme d'inverse de Montgomery, ainsi que le matériel mettant en oeuvre un tel algorithme, introduisent un nombre aléatoire m dans l'algorithme d'inverse de Montgomery. La plage de nombres aléatoires (m) est comprise entre 2n et 3n, et le nombre aléatoire est un nombre arbitraire dans la plage. Ici, n désigne le degré du corps fini (GF (2n)) . L'algorithme d'inverse de Montgomery effectue un calcul d'inverse seulement pendant le temps au cours duquel (v(x) 0). Au contraire, le premier algorithme d'inverse de Montgomery effectue l'étape 4.1 lorsque (v(x) 0), mais si v(x) est égal à 0, le premier algorithme d'inverse de Montgomery effectue l'étape 4.2.
Par conséquent, l'étape 4.2 effectue un calcul d'inverse jusqu'à ce que k soit égal au nombre aléatoire (m) défini à l'étape 4, de façon que dans le premier algorithme d'inverse de Montgomery, le temps pour calculer l'élément inverse pour la valeur d'entrée varie même pour une valeur d'entrée identique (par exemple un élément de corps fini (GF(2'')) dont on désire obtenir les éléments inverses. Par conséquent, le premier algorithme d'inverse de Montgomery est plus robuste contre le décryptage sous la forme d'une attaque par temps de calcul.
A ce moment, dans l'algorithme d'inverse de Montgomery, k de a (x) -1xk est un nombre inférieur à 2n, et dans le premier algorithme d'inverse de Montgomery, k de a(x)-lxm est un nombre inférieur à 3n.
Du fait que dans le premier algorithme d'inverse de Montgomery, l'étape 4. 2 est effectuée seulement après que l'étape 4.1 s'est terminée, la relation entre a(x)-lxk et a (x) -lxm est.
a (x) -1xm = a (x) -lxkx (m-k) Par conséquent, le premier algorithme d'inverse de Montgomery effectue toujours l'étape 4.1 avant que v(x) ne devienne égal à 0. Pour cette raison, le premier algorithme d'inverse de Montgomery est vulnérable à une attaque DPA.
Dans une approche conforme à la présente invention, qu'on appelle ici un "second algorithme d'inverse de Montgomery", le premier algorithme d'inverse de Montgomery est amélioré de façon à être robuste à la fois contre l'attaque par temps de calcul et l'attaque DPA. Dans un mode de réalisation, le second algorithme d'inverse de Montgomery de la présente invention fonctionne de la façon suivante: 1. Entrée a (x) et p (x) , avec deg (a (x)) < deg (p (x) ) 2. u(x) p(x), v(x) a (x) , r(x) 0, et s(x) 1 3. m.- valeur aléatoire, 2n m 3n 4. while (k < m ou v(x) 0) 4.1 R valeur aléatoire, O S R 3 4.2 if (v(x) 0 et R 0) 4.2.1 if (u0 0) u(x) u(x)/x, s(x) x.s(x) 4.2.2 else if (v0 0) v(x) ± v(x)/x, r(x) x.r(x) 4.2.3 else if (deg (u (x)) > deg (v (x))) then u(x) (u(x) + v (x)) /x r(x) r(x) + s(x) s(x) x.s(x) 4.2.4 else v(x) (v(x) + u (x)) /x s(x) s(x) + r(x) r(x) x.r(x) 4.3 else 4.3.1 if (rn = 1) r(x) r(x) + p(x) 4.3.2 r(x) x.r(x) 4.3.3 if (sn = 1) s(x) s(x) + p(x) 4.3.4 s(x) x.s(x) 4.4 k k + 1 5. if (deg (r (x)) = deg (p (x))) r(x) r(x) + p(x) 6 SORTIE r(x), k Le second algorithme d'inverse de Montgomery conforme à la présente invention introduit un nombre aléatoire (R). Le nombre aléatoire (R) a une valeur entière arbitraire entre 0 et 3 à chaque itération. Lorsque v(x) n'est pas égal à 0 et que le nombre aléatoire R n'est pas égal à 0, l'étape 4.2 est effectuée.
De plus, lorsque v(x) n'est pas égal à 0 et que R est égal à 0, l'étape 4. 3 est effectuée. Par conséquent, le second algorithme d'inverse de Montgomery conforme à la présente invention n'effectue pas une opération identique pour une valeur d'entrée identique. Du fait que le nombre aléatoire (R) a une valeur arbitraire entre 0 et 3, et du fait que l'étape 4.3 est effectuée seulement lorsque v(x) n'est pas égal à 0 et que R est égal à 0, la probabilité que l'étape 4.3 soit effectuée est 1/4. Si le nombre aléatoire (R) est choisi de façon à avoir une valeur aléatoire de 0 ou 1, les étapes 4.2 et 4.3 sont effectuées avec une probabilité égale de 1/2.
Le circuit de calcul d'inverse conforme à la présente invention met en oeuvre le second algorithme d'inverse de Montgomery et on va maintenant l'expliquer en détail en référence aux figures 1 et 2.
La figure 1 est un schéma synoptique d'un circuit de calcul d'inverse conforme à un mode de réalisation préféré de la présente invention.
En se référant à la figure 1, on note que le 15 circuit de calcul d'inverse 100 comprend un inverseur 200 et un générateur de nombres aléatoires 400.
Le générateur de nombres aléatoires 400 génère un premier nombre aléatoire (R) et un second nombre aléatoire (m). Le premier nombre aléatoire (R) a pour fonction d'empêcher la forme de décryptage consistant en une attaque DPA. Du fait que, dans cet exemple, la plage du premier nombre aléatoire (R) généré par le générateur de nombres aléatoires 400 conforme à la présente invention va de 0 à 3, la valeur du premier nombre aléatoire (R) peut être exprimée par 2 bits. Cependant, la plage du premier nombre aléatoire (R) conforme à la présente invention n'est pas limitée à la plage de 0 à 3, et par conséquent elle peut comprendre un plus petit nombre ou un plus grand nombre de bits.
Le second nombre aléatoire (m) a pour fonction d'empêcher la forme de décryptage par attaque par temps de calcul. Dans un mode de réalisation, le second nombre aléatoire (m) est supérieur à 2n et inférieur à 3n. Ici, n désigne le degré du corps fini (GF(2n)). Dans un mode de réalisation, le premier nombre aléatoire est généré à un instant qui est postérieur à l'instant auquel le second nombre aléatoire est généré.
L'inverseur 200 reçoit a(x) et p(x) et, en réponse aux premier et second nombres aléatoires (R) et (m), il fournit en sortie r(x). Ici, a(x) désigne un élément du corps fini (GF(2n)) dont on désire obtenir des éléments inverses. a(x) est un polynôme de degré (n-1) et est exprimé par n bits.
p(x) est un polynôme de degré n pour le calcul à modulo et est exprimé par (n+1) bits. r(x) désigne un élément inverse et est un polynôme de degré (n-1) et est exprimé par n bits.
La figure 2 est un schéma de circuit de l'inverseur 200 représenté sur la figure 1. On va maintenant expliquer en détail la structure et le fonctionnement de l'inverseur 200 en référence aux figures 1 et 2, et en référence au second algorithme d'inverse de Montgomery.
Les registres 201, 203, 205 et 207 stockent respectivement u (x) , v (x) , s (x) et r (x) . Chacun des registres à décalage à droite 209, 211 et 213 reçoit des données d'entrée respectives, décale les données d'un bit vers la droite, et stocke un 0 dans des bits les plus significatifs (MSB) respectifs. Par exemple, dans le cas où des données de sortie du registre 201 sont 00011, le registre de décalage à droite 209 reçoit 00011 et fournit en sortie 00001.
Le registre de décalage à droite 215 reçoit des données d'entrée, décale les données d'un bit vers la droite, et stocke un 1 dans le MSB. Par conséquent, si les données de sortie du registre 233 sont 11000, le registre à décalage à droite 215 reçoit 11000 et fournit en sortie 11100.
Les registres de décalage à gauche 217, 219, 221 et 223 reçoivent des données d'entrée respectives, décalent les données d'un bit vers le côté gauche, et stockent 0 dans les bits les moins significatifs (LSB) respectifs.
Chacune des portes OU-EX 225, 227, 231 et 229 effectue une opération OUEX bit par bit entre les deux données d'entrée. Par exemple, la porte OUEX 225 effectue une opération OU-EX bit par bit entre des données émises par le registre 201 et des données émises par le registre 203.
Le registre 233 fonctionne de façon à stocker le degré du corps fini (GF (2n)) , et il est fixé à 1000...0 au stade initial. En supposant que u(x) soit le corps fini (GF (2n)) et que degU(s) soit (degUn, degUn_l, ..., degU1, degUO), alors degUn = 1, et degUn_1 = degU1 = degUo = O. Le circuit ET 235 reçoit les données de sortie des registres 203 et 233, et effectue une opération ET bit par bit entre elles.
Une unité logique de commande 300 génère des signaux de commande sur la base du bit le moins significatif LSB(u0) du registre 201, du bit le moins significatif LSB(vo) du registre 203, du bit le plus significatif MSB(rn) du registre 207, et du signal de sortie du circuit ET 235.
Chacun des signaux de commande est appliqué à une unité correspondante parmi les multiplexeurs 237, 239, 241 et 243, et les registres 201, 203, 205 et 207. Les registres 201, 203, 205 et 207 actualisent des données stockées en réponse à des signaux de commande respectifs.
L'inverseur 200 de la figure 2 met en oeuvre le second algorithme d'inverse de Montgomery et on va maintenant expliquer des étapes respectives et des circuits correspondants.
L'étape 4.2.1 est accomplie par le registre 209 et le multiplexeur 237, et le registre 217 et le multiplexeur 241. L'étape 4.2.2 est accomplie par le registre 213 et le multiplexeur 239, et le registre 219 et le multiplexeur 243.
A l'étape 4.2.3, l'opération u(x) , (u(x) + v(x))/x est réalisée par la porte OU-EX (XOR1) 225, le registre à décalage à droite (RSHT2) 211 et le multiplexeur (MUX1) 237, l'opération r(x) .- r(x) + s(x) est réalisée par la porte OU-EX (XOR2) 227 et le multiplexeur (MUX1) 243, et l'opération s(x) .- x.s(x) est réalisée par le registre à décalage à gauche 217 et le multiplexeur (MUX3) 241.
A l'étape 4.2.4, l'opération v(x) (v(x) + u(x))/x est réalisée par la porte OU-EX (XOR1) 225, le registre à décalage à droite 211 et le multiplexeur (MUX2) 239, l'opération s(x) É- s(x) + r(x) est réalisée par la porte OU-EX (XOR2) 227 et le multiplexeur (MUX3) 241, et l'opération r(x) x.r(x) est réalisée par le registre à décalage à gauche 219 et le multiplexeur (MUX4) 243.
Les étapes 4.3.1 et 4.3.2 sont accomplies par la porte OU-EX (XOR3) 231, le registre à décalage à gauche 219, le registre à décalage à gauche 221 et le multiplexeur (MUX4) 243.
Les étapes 4.3.3 et 4.3.4 sont accomplies par les registres à décalage à gauche 217 et 223, et le multiplexeur (MUX3) 241.
A l'étape 4.2.3, deg (u (x)) > deg (v (x)) est réalisé par le registre 233 et le circuit ET 235, de la manière 20 suivante.
Lorsqu'un calcul commence, des données stockées dans le registre 233 sont 100...0. Chaque fois que l'opération u(x) (u(x) + v (x)) /x de l'étape 4. 2.1 ou de l'étape 4.2.3 est effectuée et des données stockées dans le registre 201 sont actualisées, le degré de u(x) diminue.
Chaque fois que le degré diminue, le registre 233 reçoit et stocke les données de sortie du registre 215. A ce moment, si le degré de u(x) est supérieur au degré de v(x), des données à stocker dans le circuit ET 235 sont 000_0.
Par exemple, en supposant que dans le corps fini (GF(24)), des données stockées dans le registre 233 au stade initial soient (10000) et que v(x) soit (00111), le degré de v(x) est 2.
Si l'étape 4.2.1 est accomplie et les données stockées dans le registre 201 sont actualisées, le degré de u(x) est 3. A ce moment, des données du registre 233 sont (11000). Si une opération ET est effectuée par le circuit ET 235, le résultat est (00000). Dans ce cas, le degré de u(x) est 3, et le degré de v(x) est 2.
Si l'étape 4.2.1 est accomplie à nouveau, le degré de u(x) devient 2, et (11100) est stocké dans le registre 233. A ce moment, (00100) est stocké dans le circuit ET 235. L'unité logique de commande 300 accomplit l'étape 4.2.4 en utilisant l'information stockée.
Le circuit de calcul d'inverse conforme à la présente invention peut être appliqué à n'importe lequel d'un certain nombre d'appareils qui emploient une technologie de chiffrement, comme une carte à puce, ou d'autres formes de supports de stockage.
Comme décrit ci-dessus, le circuit de calcul d'inverse, le procédé de calcul d'inverse et le support d'enregistrement codé avec un programme d'ordinateur lisible par ordinateur conformes à la présente invention sont robustes vis-à-vis à la fois de la forme de décryptage par attaque par temps de calcul et de la forme de décryptage par attaque DPA.
Bien que la présente invention ait été spécialement représentée et décrite en référence à des exemples de modes de réalisation de celle-ci, l'homme de l'art notera que divers changements de forme et de détail peuvent y être apportés sans sortir de l'esprit et du cadre de la présente invention, tels qu'ils sont définis par les revendications suivantes.
Claims (14)
1. Circuit de calcul d'inverse, caractérisé en ce qu'il comprend: un générateur de nombres aléatoires (400) qui génère un premier nombre aléatoire (R) et un second nombre aléatoire (m); et un inverseur (200) qui reçoit une multiplicité de premiers bits exprimant un premier élément (a(x)) d'un corps fini en tant que premières informations d'entrée, et qui reçoit une multiplicité de seconds bits exprimant un second élément (p(x)) du corps fini en tant que secondes informations d'entrée, et qui, en réponse au premier nombre aléatoire (R) et au second nombre aléatoire (m), fournit en sortie une multiplicité de troisièmes bits exprimant des éléments inverses (r(x)) du premier élément.
2. Circuit de calcul d'inverse selon la revendication 1, caractérisé en ce que le premier nombre aléatoire (R) est généré postérieurement à la génération du second nombre aléatoire (m).
3. Circuit de calcul d'inverse selon la revendication 1, caractérisé en ce que le premier nombre 20 aléatoire (R) comprend 2 bits.
4. Circuit de calcul d'inverse selon la revendication 1, caractérisé en ce que le second nombre aléatoire (m) est supérieur à 2n et inférieur à 3n, en désignant par n le degré du corps fini.
5. Circuit de calcul d'inverse selon la revendication 1, caractérisé en ce que la multiplicité de premiers bits et la multiplicité de troisièmes bits comprennent n bits, et la multiplicité de seconds bits comprend (n+1) bits.
6. Circuit de calcul d'inverse selon la revendication 1, caractérisé en ce que le premier nombre aléatoire (R) empêche une attaque de décryptage par analyse de puissance différentielle (DPA), et en ce que le second nombre aléatoire (m) empêche une attaque de décryptage par temps de calcul.
7. Procédé de calcul d'inverse, caractérisé en ce qu'il comprend la génération d'un premier nombre aléatoire (R) et d'un second nombre aléatoire (m); et la réception d'une multiplicité de premiers bits exprimant un premier élément (a(x)) d'un corps fini, en tant que premières informations d'entrée, la réception d'une multiplicité de seconds bits exprimant un second élément (p(x)) du corps fini, en tant que secondes informations d'entrée, et en réponse au premier nombre aléatoire (R) et au second nombre aléatoire (m), l'émission d'une multiplicité de troisièmes bits exprimant des éléments inverses (r(x)) du premier élément (a(x)).
8. Procédé selon la revendication 7, caractérisé en ce que le premier nombre aléatoire (R) empêche une attaque de décryptage par analyse de puissance différentielle (DPA), et en ce que le second nombre aléatoire (m) empêche une attaque de décryptage par temps de calcul.
9. Support d'enregistrement lisible par ordinateur sur lequel est incorporé un programme d'ordinateur qui met en oeuvre un procédé de calcul d'inverse, caractérisé en ce qu'il comprend la génération d'un premier nombre aléatoire (R) et d'un second nombre aléatoire (m); et la réception d'une multiplicité de premiers bits exprimant un premier élément (a(x)) d'un corps fini, en tant que premières informations d'entrée, la réception d'une multiplicité de seconds bits exprimant un second élément (p(x)) du corps fini, en tant que secondes informations d'entrée, et en réponse au premier nombre aléatoire (R) et au second nombre aléatoire (m), l'émission d'une multiplicité de troisièmes bits exprimant des éléments inverses (r (x)) du premier élément (a(x)).
10. Support d'enregistrement lisible par ordinateur selon la revendication 9, caractérisé en ce que le premier nombre aléatoire (R) est généré à un moment qui est postérieur au moment auquel le second nombre aléatoire (m) est généré.
11. Support d'enregistrement lisible par ordinateur selon la revendication 9, caractérisé en ce que le premier nombre aléatoire (R) comprend 2 bits.
12. Support d'enregistrement lisible par ordinateur selon la revendication 9, caractérisé en ce que le second nombre aléatoire (m) est supérieur à 2n et inférieur à 3n, en désignant par n le degré du corps fini.
13. Support d'enregistrement lisible par ordinateur selon la revendication 9, caractérisé en ce que lorsque la multiplicité de premiers bits et la multiplicité de troisièmes bits comprennent n bits, la multiplicité de seconds bits comprend (n+l) bits.
14. Support d'enregistrement lisible par ordinateur selon la revendication 9, caractérisé en ce que le premier nombre aléatoire (R) empêche une attaque de décryptage par analyse de puissance différentielle (DPA), et en ce que le second nombre aléatoire (m) empêche une attaque de décryptage par temps de calcul.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0413842A FR2864649B1 (fr) | 2004-12-23 | 2004-12-23 | Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0413842A FR2864649B1 (fr) | 2004-12-23 | 2004-12-23 | Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2864649A1 true FR2864649A1 (fr) | 2005-07-01 |
FR2864649B1 FR2864649B1 (fr) | 2007-06-01 |
Family
ID=34639834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0413842A Active FR2864649B1 (fr) | 2004-12-23 | 2004-12-23 | Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2864649B1 (fr) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6298135B1 (en) * | 1999-04-29 | 2001-10-02 | Motorola, Inc. | Method of preventing power analysis attacks on microelectronic assemblies |
EP1239364A1 (fr) * | 2001-03-05 | 2002-09-11 | Hitachi, Ltd. | Procédé de mise en oeuvre d'une multiplication modulaire résistent aux manipulations non autorisées |
-
2004
- 2004-12-23 FR FR0413842A patent/FR2864649B1/fr active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6298135B1 (en) * | 1999-04-29 | 2001-10-02 | Motorola, Inc. | Method of preventing power analysis attacks on microelectronic assemblies |
EP1239364A1 (fr) * | 2001-03-05 | 2002-09-11 | Hitachi, Ltd. | Procédé de mise en oeuvre d'une multiplication modulaire résistent aux manipulations non autorisées |
Non-Patent Citations (2)
Title |
---|
AKKAR M-L ET AL: "AN IMPLEMENTATION OF DES AND AES, SECURE AGAINST SOME ATTACKS", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 3RD INTERNATIONAL WORKSHOP, CHES 2001, PARIS, FRANCCE, MAY 14 - 16, 2001 PROCEEDINGS, LECTURE NOTES IN COMPUTER SCIENCE, BERLIN : SPRINGER, DE, vol. VOL. 2162, 2001, pages 309 - 318, XP008002641, ISBN: 3-540-42521-7 * |
SAVAS E ET AL: "Architectures for unified field inversion with applications in elliptic curve cryptography", ELECTRONICS, CIRCUITS AND SYSTEMS, 2002. 9TH INTERNATIONAL CONFERENCE ON SEP. 15-18, 2002, PISCATAWAY, NJ, USA,IEEE, vol. 3, 15 September 2002 (2002-09-15), pages 1155 - 1158, XP010614559, ISBN: 0-7803-7596-3 * |
Also Published As
Publication number | Publication date |
---|---|
FR2864649B1 (fr) | 2007-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1553490A2 (fr) | Dispositif cryptographique, procédé cryptographique, et support de stockage correspondant | |
EP2252932B1 (fr) | Mise en oeuvre de boîte blanche | |
US20060093137A1 (en) | Elliptic curve cryptosystem apparatus, elliptic curve cryptosystem method, elliptic curve cryptosystem program and computer readable recording medium storing the elliptic curve cryptosystem program | |
US7065788B2 (en) | Encryption operating apparatus and method having side-channel attack resistance | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
FR2941342A1 (fr) | Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve. | |
US8300810B2 (en) | Method for securely encrypting or decrypting a message | |
US10158613B1 (en) | Combined hidden dynamic random-access devices utilizing selectable keys and key locators for communicating randomized data together with sub-channels and coded encryption keys | |
US10686764B2 (en) | Executable coded cipher keys | |
EP2103033B1 (fr) | Protection efficace de l'intégrité de données | |
FR2967322A1 (fr) | Protection contre les ecoutes passives | |
JP2004512570A (ja) | 非安全な暗号加速器を用いる方法と装置 | |
CN111712816B (zh) | 使用密码蒙蔽以用于高效地使用蒙哥马利乘法 | |
JP2004054128A (ja) | 暗号化装置 | |
US10623384B2 (en) | Combined hidden dynamic random-access devices utilizing selectable keys and key locators for communicating randomized data together with sub-channels and coded encryption keys | |
US7680272B2 (en) | Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code | |
TWI701931B (zh) | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 | |
FR2864649A1 (fr) | Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur | |
FR2818846A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie | |
Al-Attab et al. | Lightweight effective encryption algorithm for securing data in cloud computing | |
WO1998051038A1 (fr) | Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d'aleas | |
Sadi | Homomorphic encryption | |
CN118784339A (zh) | 基于安全多方计算的条件选择方法和装置 | |
FR2825863A1 (fr) | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique | |
Awulachew et al. | Double Key Pair and Hidden Modulus RSA Cryptosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 12 |
|
PLFP | Fee payment |
Year of fee payment: 13 |
|
PLFP | Fee payment |
Year of fee payment: 14 |
|
PLFP | Fee payment |
Year of fee payment: 16 |
|
PLFP | Fee payment |
Year of fee payment: 17 |
|
PLFP | Fee payment |
Year of fee payment: 18 |
|
PLFP | Fee payment |
Year of fee payment: 19 |
|
PLFP | Fee payment |
Year of fee payment: 20 |