FR2843507A1 - Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes - Google Patents

Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes Download PDF

Info

Publication number
FR2843507A1
FR2843507A1 FR0210197A FR0210197A FR2843507A1 FR 2843507 A1 FR2843507 A1 FR 2843507A1 FR 0210197 A FR0210197 A FR 0210197A FR 0210197 A FR0210197 A FR 0210197A FR 2843507 A1 FR2843507 A1 FR 2843507A1
Authority
FR
France
Prior art keywords
register
ryj
mod
processor
multiplier
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
FR0210197A
Other languages
English (en)
Other versions
FR2843507B1 (fr
Inventor
Marc Joye
Sung Ming Yen
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.)
Gemplus SA
Original Assignee
Gemplus Card International SA
Gemplus SA
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 Gemplus Card International SA, Gemplus SA filed Critical Gemplus Card International SA
Priority to FR0210197A priority Critical patent/FR2843507B1/fr
Publication of FR2843507A1 publication Critical patent/FR2843507A1/fr
Application granted granted Critical
Publication of FR2843507B1 publication Critical patent/FR2843507B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/723Modular exponentiation
    • 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

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)
  • Storage Device Security (AREA)

Abstract

L'invention concerne un procédé de réalisation d'une exponentiation modulaire de type X^Y mod Z, à l'aide de deux processeurs pouvant fonctionner en parallèle, Y étant un exposant. Au cours du procédé, un premier processeur réalise l'étape ET1 suivante :ET1 : multiplication modulo Z (R/YJ.RYJ mod Z) du contenu d'un registre de multiplicateur (R/YJ) par le contenu d'un registre de multiplicande (RYJ), et mémorisation d'un résultat dans le registre de multiplicateur (R/YJ),Selon l'invention, en fonction d'un bit de rang J de l'exposant Y, on utilise :- un premier registre (R0) comme registre de multiplicateur (R/YJ) et un deuxième registre (R1) comme registre de multiplicande (RYJ), ou- le deuxième registre (R1) comme registre de multiplicateur (R/YJ) et le premier registre (R0) comme registre de multiplicande (RYJ).Applications à la cryptographie à clé publique.

Description

<Desc/Clms Page number 1>
PROCEDE SECURISE DE REALISATION PARALLELE D'UNE
EXPONENTIATION MODULAIRE.
PROCEDE CRYPTOGRAPHIQUE ET CIRCUIT DE CALCUL ASSOCIES
L'invention concerne un procédé sécurisé pour réaliser une exponentiation modulaire du type S = X^Y mod Z; X, Y, Z et S étant respectivement une base, un exposant, un module et un résultat de m bits.
Le procédé selon l'invention peut être mis en #uvre dans un circuit de exponentiation comprenant deux registres et deux processeurs travaillant en parallèle.
Le procédé selon l'invention est également sécurisé contre les attaques à canaux cachés, notamment en courant, et les attaques par fautes. Il est de ce fait notamment intéressant pour réaliser des opérations dans le cadre de procédés cryptographiques à clé publique.
L'invention peut être mise en #uvre par exemple dans des cartes à puce.
Les procédés de cryptographie à clé publique sont généralement basés sur des algorithmes d'exponentiation modulaire, de type c = md mod N, où m est selon le cas un message clair, un message chiffré, un message signé ou un message à signer, c est un message chiffré, un message clair, un message à signer ou un message signé et où d et N sont des éléments d'une clé publique ou d'une clé privée associée.
Un premier critère de choix d'un algorithme cryptographique est le temps d'exécution de l'algorithme, qui ne doit pas être prohibitif, notamment lorsque des clés de grandes tailles sont utilisées.
Un deuxième critère de choix d'un algorithme est sa sécurité (c'est-à-dire sa capacité à maintenir secrètes les clés qu'il utilise, et plus généralement toutes les données qu'il manipule) vis-à-vis d'une attaque
<Desc/Clms Page number 2>
extérieure visant à casser l'algorithme (c'est-à-dire à trouver les dites clés). Pour des raisons de sécurité, les éléments des clés publiques ou privées sont en général de grands nombres, par exemple des nombres de 1024 bits.
Les algorithmes d'exponentiation modulaire utilisés en cryptographie décomposent en général les données qu'ils utilisent en mots de petite taille, exécutent ensuite une série de multiplications modulaires élémentaires sur des mots appropriés et dans un ordre approprié pour produire des résultats partiels, puis recombinent les résultats partiels obtenus pour fournir le résultat de l'exponentiation réalisée.
Une multiplication modulaire élémentaire est une opération de type S = A. B mod Z, où A est un multiplicateur et B est un multiplicande, Z est un module et S est un résultat, tous de même taille m. m est la taille en bits des mots manipulés dans l'algorithme et correspond en pratique à la taille des registres du circuit de multiplication utilisé.
Un algorithme connu pour réaliser une exponentiation modulaire à partir de telles multiplications modulaires élémentaires est l'algorithme de Montgomery parallèle qui réalise l'opération :
S = f(X,Y,Z) = X^Y mod Z
L'algorithme d'exponentiation de Montgomery, est décrit dans [P. Montgomery, Speeding the Pollard and elliptic curve methods of factorization Mathematics of Computation, vol. 48, no. 477, pages 243-267, 1987]. Le fait que cet algorithme puisse être exécuté en parallèle a été noté par plusieurs auteurs ; notamment dans [W.
Fischer, C. Giraud, E. W. Knudsen et J.-P. Seifert, Parallel scalar multiplication on general elliptic curves over Fp hedged against non differential side-channel attacks, Report 2002/007, Cryptology ePrint Archive,
<Desc/Clms Page number 3>
January 2002 ; disponible à l'URL http://eprint.iacr.org/]. L'algorithme est décrit en termes de courbes elliptiques mais s'applique trivialement à n'importe quel autre groupe abélien. Dans notre cas, nous décrivons l'algorithme parallèle de Montgomery pour le groupe multiplicatif des entiers modulo Z.
L'algorithme est dit parallèle car on exécute deux multiplications modulaires en parallèle. Ceci est possible car l'exécution de l'une des instructions n'est pas liée par le résultat de l'autre.
Dans un exemple d'utilisation de l'algorithme de Montgomery, Y et Z sont des nombres de m bits d'une clé publique ou privée, X est un nombre de m bits d'un message chiffré, à chiffrer, signé ou à signer, et l'opération S = f(X,Y,Z)= X^Y mod Z est l'opération de base nécessaire pour obtenir un résultat final du type c = m^d mod N.
L'algorithme de Montgomery parallèle réalisant S = X^Y mod Z peut s'écrire sous la forme mathématique suivante :
Ro <- 1 ; R1 <- X pour J descendant de m-1 à 0 faire si Yj = 0 alors /* processeur 1*/ /* processeur 2*/
Figure img00030001

RI <- Ra.RI mod Z Ro <- Ra.Ra mod Z sinon, si Yj = 1 /* processeur 1*/ /* processeur 2*/
Figure img00030002

Ro <- Ro-Ri mod Z RI <- R1. Rl mod Z renvoyer Ro algorithme 1
<Desc/Clms Page number 4>
Le symbole " <- " signifie mémoriser un nombre dans un registre. Par exemple, R1 <- A signifie mémoriser le nombre A dans le registre R1.
L'instruction Ra <- Rb.Rc mod Z signifie multiplier, modulo Z, le contenu du registre Rb (appelé registre de gauche ou registre de multiplicateur) avec le contenu du registre Rc (appelé registre de droite ou registre de multiplicande) et mettre le résultat dans le registre Ra, avec a, b, c égaux à 0 ou 1 dans les instructions cidessus.
On rappelle que si les opérations Rb.Rc mod Z et Rc.Rb mod Z produisent des résultats identiques, les algorithmes permettant de les réaliser et les circuits utilisés pour mettre en #uvre les algorithmes sont différents.
L'algorithme de Montgomery parallèle peut également s'écrire de manière plus générale, mais équivalente :
Ro <- 1 ; Rl <- X pour J descendant de m-1 à 0 faire processeur 1 processeur 2
Figure img00040001

R/YJ <- " Ro # Rl mod Z Ryj <- Ryj. Ryj mod Z renvoyer Ro algorithme 2
R/yj est le registre d' indice /Yj, où Yj est le bit de rang J de l'exposant Y, /Yj étant le bit complémentaire du bit Yj. Par exemple, si Yj = 0 alors /Yj = 1, le registre R/yj est le registre R1 et le registre Ryj est le registre Ro.
Mettre en #uvre l'algorithme de Montgomery parallèle nécessite un circuit d'exponentiation comprenant deux processeurs travaillant en parallèle, et réalisant notamment en parallèle des opérations de multiplication de contenus de registres. Cet algorithme est notamment apprécié car il est rapide (de par la
<Desc/Clms Page number 5>
présence de deux processeurs travaillant en parallèle) et car il utilise seulement deux registres de calcul Ro et R1 pour réaliser une exponentiation modulaire.
S'il est rapide, l'algorithme de Montgomery parallèle connu n'est cependant pas sûr, car il est notamment sensible à une attaque particulière, que nous appellerons "attaque M neutre".
De manière générale, une attaque vise à découvrir des données confidentielles, en l'occurrence les éléments d'une clé privée, manipulées dans des traitements effectués par le circuit de calcul. Dans le cas particulier de l'algorithme de Montgomery utilisé dans un procédé cryptographique, une attaque vise à obtenir une information sur les bits de l'exposant Y, qui peut représenter un élément d'une clé privée.
L'attaque M neutre consiste à introduire une erreur de registre dans un calcul en cours, c'est-à-dire à modifier, à un instant approprié, la valeur d'un ou plusieurs bits d'un registre de calcul, et à exploiter ensuite les conséquences de l'erreur introduite.
L'attaque M neutre et ses effets sont détaillés dans les quelques exemples suivants.
On considère dans un premier exemple l'opération
Figure img00050001

Ri <- Ro # Ri mod Z et on suppose qu'un attaquant modifie la valeur du
Figure img00050002

bit Ri, de rang I du registre de multiplicande Ri avant utilisation de ce bit pour calculer Ra. Rl mod Z et donc avant mémorisation du résultat de cette opération dans le registre R1.
Comme le bit R1,I est faux (i.e. il est égal à la valeur complémentaire fixée par l'attaquant et non à la valeur attendue par l'utilisateur légitime réalisant l'opération) au moment de son utilisation pour calculer
<Desc/Clms Page number 6>
Figure img00060001

Ro.Ri mod Z, le résultat de l'opération RO.RL mod Z est également faux. Le contenu actualisé du registre R1, après
Figure img00060002

mémorisation du résultat de l'opération Ra. Rl mod Z est donc faux. L'erreur introduite par l'attaquant va donc se propager si un calcul suivant est réalisé sur la base du contenu du registre R1.
On considère dans un deuxième exemple l'opération :
Figure img00060003

Rl <- Ra.Rl mod Z et on suppose qu'un attaquant modifie la valeur du
Figure img00060004

bit Ri, de rang I du registre Ri de multiplicande après utilisation de ce bit pour calculer Ra. Rl mod Z et avant mémorisation du résultat de cette opération dans le registre R1.
Comme le bit R1,I est juste (i.e. il est égal à la valeur attendue par l'utilisateur légitime et non à la valeur fixée par un attaquant) au moment de son
Figure img00060005

utilisation pour calculer RO.RL mod Z, le résultat de l'opération Ro.Rl mod Z est également juste. Le contenu actualisé du registre R1, après mémorisation du résultat de l'opération R0.R1 mod Z est donc juste. L'erreur introduite par l'attaquant est donc effacée lors de la mise à jour du registre R1 et elle ne se propage pas si un calcul suivant est réalisé en utilisant le contenu du registre R1.
On considère dans un troisième exemple l'opération :
Ro <- R0.R1 mod Z et on suppose qu'un attaquant modifie la valeur du bit R1,I de rang I du registre de multiplicande R1 après utilisation de ce bit pour calculer R0.R1 mod Z et avant mémorisation du résultat de cette opération dans le registre Ro.
Comme le bit R1,I est juste au moment de son utilisation pour calculer R0.R1 mod Z, le résultat de
<Desc/Clms Page number 7>
l'opération Ro.Rl mod Z est également juste. Le contenu actualisé du registre Ro, après mémorisation du résultat de l'opération R0.R1 mod Z est donc juste. Par contre, le contenu du registre R1 n'étant pas actualisé à la fin de l'opération Ro.Rl mod Z, l'erreur introduite sur le bit R1,I n'est pas effacée et elle se propage si un calcul suivant est réalisé en utilisant le contenu du registre Ri.
On considère dans un quatrième exemple l'opération : si Yj = 0 faire R1 <- R0.R1 mod Z si Yj = 1 faire Ro <- R0.R1 mod Z et on suppose qu'un attaquant modifie la valeur du bit R1,I de rang I du registre R1 après utilisation de ce bit pour calculer Ro.Rl mod Z et avant mémorisation du résultat de cette opération, dans le registre Ro ou dans le registre R1, selon la valeur de Yj.
Comme le bit R1,I est juste au moment de son utilisation pour calculer R0.R1 mod Z, le résultat de l'opération Ro.Rl mod Z est également juste.
Si Yj = 0, alors le registre R1 est actualisé par le résultat de la multiplication et l'erreur est effacée (cf. 2ème exemple) Par contre, si Yj = 1, alors le contenu du registre R1 n'est pas actualisé et l'erreur va se propager si le registre Ri est utilisé dans une opération suivante (cf. 3ème exemple) .
On considère enfin l'algorithme de Montgomery parallèle dans un cinquième et dernier exemple :
<Desc/Clms Page number 8>
Ro <- 1 ; R1 <- X pour J descendant de m-1 à 0 faire processeur 1 processeur 2
Figure img00080001

R/YJ <- Ro- Ri mod Z Ryj < - Ryj. Ryj mod Z renvoyer Ro et on suppose qu'un attaquant modifie la valeur du bit R1,I de rang I du registre R1 au cours de l'itération J = K, après utilisation de ce bit pour calculer Ro.Ri mod Z et avant mémorisation du résultat de cette opération dans le registre R/YJ, qui est soit le registre Ro soit le registre R1, selon la valeur de Yj.
Comme, dans l'itération J = K, le bit R1,I est juste au moment de son utilisation pour calculer R0.R1 mod Z, le résultat de l'opération R0.R1 mod Z est également juste.
Si Yj = 0, alors le registre R1 est actualisé par le résultat de la multiplication à la fin de l'itération J = K, l'erreur est ainsi effacée (cf. 2ème exemple) et ne se propage pas à l'itération suivante J = K-1 suivante. Le résultat final, à la fin de l'itération J = 0 sera donc juste, c'est-à-dire égal au résultat légitime attendu.
Par contre, si Yj = 1, alors le contenu du registre R1 n'est pas actualisé à la fin de l'itération J = K et l'erreur va se propager à l'itération suivante J = K-1 (cf. 1er et 3ème exemples) . Le résultat final, à la fin de l'itération J = 0 sera donc faux, c'est-à-dire différent du résultat légitime attendu.
A noter que quand le bit YJ vaut 0, l'étape RYJ <-
RYJ RYJ mod Z est insensible à une erreur sur le registre R1, puisque le registre R1 n'est pas utilisé dans cette étape.
En résumé, si on modifie un bit du registre de multiplicande R1 à un instant approprié, alors, à la fin de l'algorithme, le résultat final de l'exponentiation modulaire renvoyé dans le registre R0 est juste ou faux,
<Desc/Clms Page number 9>
selon la valeur du bit Yj associé à l'instant auquel on a modifié le contenu du registre R1. On en déduit immédiatement la valeur du bit Yj.
Dans le cas de l'algorithme de Montgomery parallèle, comme on l'a vu dans les exemples précédents, l'instant approprié est, au cours de la réalisation d'une opération de multiplication de contenus de registres, compris entre la fin de l'utilisation du bit qu'on souhaite modifier et le début de la mémorisation du résultat obtenu.
Dans la plupart des algorithmes de multiplication modulaire [voir A.J Menezes, P. C. van Oorschot et S. A.
Vanstone, Handbook of Applied Cryptography, CRC Press, 1997, chapitre 14.], la multiplication est entrelacée avec la réduction modulaire pour accélérer les calculs.
Dans le calcul d'une multiplication de type A. B mod Z, le multiplicande B est découpé en mots de w bits ; ces mots sont ensuite multipliés par le multiplicateur A, réduits modulo Z et ajoutés au résultat courant pour finalement donner la valeur de A. B mod Z. Dans ce type d'algorithme, les mots du multiplicande B ne sont utilisés qu'une seule fois. Cela permet à un attaquant d'introduire une erreur de type M-neutre dans un tel mot après qu'il ait été utilisé par l'algorithme de multiplication modulaire.
Pour déterminer si un résultat est juste ou faux, pour un nombre X donné, il est possible par exemple d'effectuer d'abord une première opération X^Y mod Z, pour un nombre X donné, et obtenir un résultat SI ; d'effectuer ensuite une deuxième opération XY mod Z, pour le même nombre X, en modifiant à un instant approprié un bit du registre R1, et obtenir un résultat S2 ; puis finalement de comparer les deux résultats obtenus.
Lorsque l'exponentiation modulaire est utilisée pour une opération secrète avec le cryptosystème RSA (déchiffrement ou signature) , il est possible de vérifier l'exactitude de cette exponentiation modulaire avec la
<Desc/Clms Page number 10>
clé publique correspondante. Enfin, nous notons que la plupart des systèmes cryptographiques vérifient automatiquement l'exactitude des résultats retournés et renvoie un code d'erreur en cas de faute.
Comme on vient de le voir, notamment dans le sème exemple ci-dessus, l'algorithme parallèle de Montgomery connu est sensible aux attaques M neutres.
Un but de l'invention est de proposer une variante de l'algorithme parallèle de Montgomery, insensible aux attaques M neutre.
Avec cet objectif en vue, l'invention a pour objet un procédé de réalisation d'une exponentiation modulaire de type S = X^Y mod Z où Y est un exposant, à l'aide de deux processeurs pouvant fonctionner en parallèle. Au cours du procédé un premier processeur réalise l'étape ET1 suivante :
ET1 : multiplication modulo Z (R/yj.Ryj mod Z) du contenu d'un registre de multiplicateur (R/yj) par le contenu d'un registre de multiplicande (Ryj), et mémorisation d'un résultat dans le registre de multiplicateur (R/yj).
Selon l'invention, en fonction d'un bit de rang J de l'exposant Y, on utilise : - le premier registre Ro comme registre de multiplicateur (R/yj) et le deuxième registre R1 comme registre de multiplicande (Ryj) , ou - le deuxième registre R1 comme registre de multiplicateur (R/yj) et le premier registre Ro comme registre de multiplicande (Ryj).
Ainsi, avec l'invention, quelle que soit la valeur du bit considéré de l'exposant, le registre contenant le multiplicande n'est jamais remis à jour à la fin de l'étape ET1.
<Desc/Clms Page number 11>
En langage mathématique, l'étape ET1 peut s'écrire simplement :
Figure img00110001

R/yj <- R/YJ RYJ mod Z ou, en fonction de la valeur du bit Yj considéré : si Yj = 0 R1 <- Ri.Ro mod Z si Yj = 1 Ro <- R0.R1 mod Z
Le procédé selon l'invention est sécurisé contre les attaques M neutres. En effet, même si on modifie un bit du registre de multiplicande après son utilisation pour réaliser la multiplication modulo Z du contenu du registre de multiplicateur R/yj par le contenu du registre de multiplicande Ryj, l'erreur n'est jamais effacée à la fin de l'étape ET1, puisque le contenu du registre de multiplicande, qui contenait une erreur, n'est pas remis à jour lors de la mémorisation du résultat, et ce qu'elle que soit la valeur du bit Yj de l'exposant.
L'erreur va alors se propager aux étapes suivantes, donnant lieu au final à une exponentiation modulaire dont le résultat sera faux, quelque soit la valeur du bit Yj.
Il n'est donc pas possible de réaliser une attaque M neutre sur le registre de multiplicande au cours d'une étape ET1 dans le but de découvrir la valeur d'un bit de Y.
De préférence, le procédé de l'invention comprend également l'étape ET2 suivante, effectuée parallèlement par un deuxième processeur:
ET2 : multiplication (Ryj.Ryj mod Z) du contenu du registre de multiplicateur (Ryj) par le contenu du registre de multiplicande (Ryj), et mémorisation d'un résultat dans le même registre (Ryj),
Une telle étape ET2 est également insensible aux attaques M neutres, puisqu'une éventuelle modification d'un bit du registre de multiplicande à un instant approprié au cours de la réalisation de la multiplication
<Desc/Clms Page number 12>
Ryj.Ryj mod Z n'est jamais effacée lors de la mémorisation du résultat dans le registre Ryj car le registre Ryj est également utilisé comme multiplicateur ; la multiplication sera donc toujours incorrecte.
Plus généralement, un procédé selon l'invention comprend les étapes suivantes :
EO : mémorisation du nombre "1" dans le premier registre (Ro) et mémorisation du nombre X dans le deuxième registre (R1),
El : pour J descendant de m-1 à 0, réalisation de l'étape ET1 et de l'étape ET2 en fonction du bit Yj de rang J du multiplicateur Y, respectivement, par un processeur 1 et un processeur 2,
E2 : production du résultat S contenu dans le premier registre (R0).
Ceci peut s'écrire, en langage mathématique de la manière suivante :
Ro <- 1 ; R1 <- X pour J descendant de m-1 à 0 faire processeur 1 processeur 2
Figure img00120001

R/yj <- R/YJ RYJ mOd Z RyJ <- RYJ RYJ mod Z renvoyer Ro algorithme 3
Les étapes ET1, ET2 sont réalisées en parallèle, respectivement par un premier processeur et un deuxième processeur du circuit de multiplication, le premier processeur et le deuxième processeur utilisant tous deux le premier registre Ro et le deuxième registre R1 du circuit d'exponentiation.
L'invention a également pour objet un procédé cryptographique, par exemple à clé publique, au cours
<Desc/Clms Page number 13>
duquel met en #uvre un procédé de réalisation d'une exponentiation modulaire tel que décrit ci-dessus.
L'invention a encore pour objet un circuit d'exponentiation comprenant un premier registre Ro, un deuxième registre R1, un premier processeur et un deuxième processeur agencés pour mettre en #uvre un procédé de réalisation d'une exponentiation modulaire ou un procédé cryptographique tels que décrit ci-dessus.
Enfin, l'invention a pour objet une carte à puce, comprenant un tel circuit d'exponentiation.

Claims (7)

REVENDICATIONS
1. Procédé de réalisation d'une exponentiation modulaire de type XY mod Z dans un circuit de calcul comprenant un premier processeur et un deuxième processeur, Y étant un exposant, procédé au cours duquel le premier processeur réalise l'étape ET1 suivante :
ET1 : multiplication modulo Z (R/yj.Ryj mod Z) du contenu d'un registre de multiplicateur (R/yj) par le contenu d'un registre de multiplicande (Ryj), et mémorisation d'un résultat dans le registre de multiplicateur (R/yj) , le procédé étant caractérisé en ce que, en fonction d'un bit de rang J de l'exposant Y, on utilise : - un premier registre (Ro) comme registre de multiplicateur (R/yj) et un deuxième registre (R1) comme registre de multiplicande (Ryj), ou - le deuxième registre (R1) comme registre de multiplicateur (R/yj) et le premier registre (Ro) comme registre de multiplicande (Ryj).
2. Procédé selon la revendication 1, au cours duquel le deuxième processeur réalise parallèlement l'étape ET2 suivante :
ET2 : multiplication (Ryj.Ryj mod Z) du contenu du registre de multiplicande (Ryj) par le contenu du registre de multiplicande (Ryj) en fonction du bit (Yj) de rang J de l'exposant Y, et mémorisation d'un résultat dans le registre de multiplicande (Ryj),
3. Procédé selon la revendication 2, au cours duquel on réalise les étapes suivantes :
EO : mémorisation du nombre "1" dans le premier registre (R0) et mémorisation du nombre X dans le deuxième registre (R1),
<Desc/Clms Page number 15>
El : pour J descendant de m-1 à 0, réalisation de l'étape ET1 et de l'étape ET2 en fonction du bit Yj de rang J du multiplicateur Y, les étapes ET1 et ET2 étant réalisées en parallèle, respectivement par un premier processeur et un deuxième processeur du circuit d'exponentiation, le premier et le deuxième processeur utilisant tous deux le premier registre (RO) et le deuxième registre (RI) du circuit d'exponentiation.
E2 : production du résultat S contenu dans le premier registre (Ro) .
4 Procédé de calcul cryptographique, au cours duquel on met en #uvre un procédé de réalisation d'une exponentiation modulaire selon l'une des revendications 1 à 3.
5 Circuit de calcul comprenant un premier registre (Ro), un deuxième registre (R1), un premier processeur et un deuxième processeur agencés pour mettre en #uvre un procédé selon l'une des revendications 1 à 3.
(RO), un deuxième registre (R1), un premier processeur et un deuxième processeur agencés pour mettre en #uvre un procédé cryptographique selon la revendication 4.
Figure img00150001
6 Circuit de calcul comprenant un premier registre
7 Carte à puce comprenant un circuit de calcul selon la revendication 5 ou la revendication 6.
FR0210197A 2002-08-12 2002-08-12 Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes Expired - Fee Related FR2843507B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0210197A FR2843507B1 (fr) 2002-08-12 2002-08-12 Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0210197A FR2843507B1 (fr) 2002-08-12 2002-08-12 Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes

Publications (2)

Publication Number Publication Date
FR2843507A1 true FR2843507A1 (fr) 2004-02-13
FR2843507B1 FR2843507B1 (fr) 2004-10-29

Family

ID=30471064

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0210197A Expired - Fee Related FR2843507B1 (fr) 2002-08-12 2002-08-12 Procede securise de realisation parallele d'une exponentiation modulaire, procede cryptographique et circuit de calcul associes

Country Status (1)

Country Link
FR (1) FR2843507B1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3136227A1 (fr) * 2015-08-27 2017-03-01 Stmicroelectronics (Rousset) Sas Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
US10229264B2 (en) 2015-08-27 2019-03-12 Stmicroelectronics (Rousset) Sas Protection of a modular exponentiation calculation

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
J. LOPEZ ET AL.: "FAST MULTIPLICATION ON ELLIPTIC CURVES OVER GF(2**M) WITHOUT PRECOMPUTATION", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 1ST INTERNATIONAL WORKSHOP, CHES'99. WORCESTER, MA, USA, AUG. 12 - 13, 1999 PROCEEDINGS, LNCS 1717, 12 August 1999 (1999-08-12), Springer Verlag, Berlin (DE), pages 316 - 327, XP000989331, ISBN: 3-540-66646-X *
T. KATO ET AL.: "A DESIGN FOR MODULAR EXPONENTIATION COPROCESSOR IN MOBILE TELECOMMUNICATION TERMINALS", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 2ND INTERNATIONAL WORKSHOP, CHES 2000, WORCHESTER, MA, USA, AUG. 17 - 18, 2000 PROCEEDINGS, LNCS 1965, 17 August 2000 (2000-08-17), Springer Verlag, Berlin (DE), pages 216 - 228, XP001049135, ISBN: 3-540-41455-X *
W. FISCHER ET AL.: "Parallel scalar multiplication on general elliptic curves over Fp hedged against Non-Differential Side-Channel", CRYPTOLOGY EPRINT ARCHIVE: REPORT 2002/007, 9 January 2002 (2002-01-09), XP002241975, Retrieved from the Internet <URL:http://eprint.iacr.org/2002/007/> [retrieved on 20030515] *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3136227A1 (fr) * 2015-08-27 2017-03-01 Stmicroelectronics (Rousset) Sas Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
FR3040511A1 (fr) * 2015-08-27 2017-03-03 Stmicroelectronics Rousset Verification de la sensibilite d'un circuit electronique executant un calcul d'exponentiation modulaire
US10209961B2 (en) 2015-08-27 2019-02-19 Stmicroelectronics (Rousset) Sas Verification of the sensitivity of an electronic circuit executing a modular exponentiation calculation
US10229264B2 (en) 2015-08-27 2019-03-12 Stmicroelectronics (Rousset) Sas Protection of a modular exponentiation calculation

Also Published As

Publication number Publication date
FR2843507B1 (fr) 2004-10-29

Similar Documents

Publication Publication Date Title
EP3188001B1 (fr) Procédé et dispositif de multiplication modulaire
WO2007074149A1 (fr) Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
EP1166494B1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
US7908641B2 (en) Modular exponentiation with randomized exponent
US8300810B2 (en) Method for securely encrypting or decrypting a message
US20080044010A1 (en) Cryptographic system and method for encrypting input data
EP2162820A1 (fr) Mise a la puissance modulaire selon montgomery securisee contre les attaques a canaux caches
CN101371285B (zh) 加密处理装置、加密处理方法
Lu et al. Cryptanalysis of an RSA variant with moduli N= prql
FR2809893A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique
CA2409200C (fr) Methode et appareil de cryptographie
FR2941798A1 (fr) Appareil pour calculer un resultat d&#39;une multiplication scalaire
WO2000059157A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
Schinianakis et al. Residue number systems in cryptography: Design, challenges, robustness
EP1804161B1 (fr) Détection de perturbation dans un calcul cryptographique
WO2006070092A1 (fr) Procede de traitement de donnees et dispositif associe
Aoki et al. Elliptic curve arithmetic using SIMD
EP1804160B1 (fr) Protection d&#39;un calcul cryptographique effectué par un circuit intégré
EP2369568B1 (fr) Multiplicateur scalaire et programme de multiplication scalaire
US20100146029A1 (en) Method and apparatus for modular operation
Oonishi et al. Attacking noisy secret CRT-RSA exponents in binary method
FR2843507A1 (fr) Procede securise de realisation parallele d&#39;une exponentiation modulaire, procede cryptographique et circuit de calcul associes
EP1839125A1 (fr) Procédé d&#39;exponentiation sécurisée et compacte pour la cryptographie
CN116132050A (zh) 一种消息处理方法、系统、设备及计算机可读存储介质
EP1639451A2 (fr) Procédé de contre-mesure par masquage de l&#39;accumulateur

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20070430