FR2829646A1 - Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant - Google Patents

Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant Download PDF

Info

Publication number
FR2829646A1
FR2829646A1 FR0111602A FR0111602A FR2829646A1 FR 2829646 A1 FR2829646 A1 FR 2829646A1 FR 0111602 A FR0111602 A FR 0111602A FR 0111602 A FR0111602 A FR 0111602A FR 2829646 A1 FR2829646 A1 FR 2829646A1
Authority
FR
France
Prior art keywords
algorithms
exponentiation
calculation
algorithm
bits
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
FR0111602A
Other languages
English (en)
Other versions
FR2829646B1 (fr
Inventor
Marc Joye
Karine Gandolfi Villegas
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 FR0111602A priority Critical patent/FR2829646B1/fr
Priority to PCT/FR2002/002963 priority patent/WO2003025739A1/fr
Publication of FR2829646A1 publication Critical patent/FR2829646A1/fr
Application granted granted Critical
Publication of FR2829646B1 publication Critical patent/FR2829646B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/556Indexing scheme relating to group G06F7/556
    • G06F2207/5561Exponentiation by multiplication, i.e. calculating Y**INT(X) by multiplying Y with itself or a power of itself, INT(X) being the integer part of X

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

L'invention concerne un procédé sécurisé de mise en oeuvre, dans un composant électronique, d'un algorithme de cryptographie utilisant des moyens de calcul destinés à effectuer des opérations d'exponentiation à la puissance d d'un nombre y (yd), d étant un nombre entier de taille déterminée. Il consiste à mémoriser plusieurs algorithmes de calcul d'exponentiation dans ledit composant électronique préalablement au premier calcul de yd , et à réaliser les étapes suivantes à chaque calcul de la valeur yd : a) on décompose le nombre d en n blocs D i de r i bits, i variant de 0 à n-1, n et les r i étant des entiers aléatoires, 1<n<=taille de d, r0+... + rn-1 = taille de d et on considère parmi les algorithmes de calcul d'exponentiation mémorisés, une chaîne de n algorithmes A i, b) on effectue au moyen d'un algorithme A0 et à partir des r0 premiers bits de d et de y, le calcul S0 = yDD et on mémorise le résultat S0 , c) on effectue au moyen d'un algorithme A j et à partir des r j bits suivants de d, d'une fonction de S0 et/ ou... et/ ou de S j-1 , et de y, j variant de 1 à n-1, le calcul S j = y D0|...|Dj et on mémorise le résultat S j , le résultat de yd correspondant à la valeur Sn-1obtenue.

Description

<Desc/Clms Page number 1>
PROCÉDÉ SÉCURISÉ DE MISE EN OEUVRE D'UN ALGORITHME DE
CRYPTOGRAPHIE ET COMPOSANT CORRESPONDANT
La présente invention concerne un procédé sécurisé de mise en oeuvre, dans un composant électronique, d'un algorithme de cryptographie utilisant le calcul d'exponentiation à la puissance d d'un nombre y.
L'invention se rapporte également au composant électronique correspondant.
De tels composants sont utilisés dans des applications où l'accès à des services ou à des données est sévèrement contrôlé. Ils ont une architecture formée autour d'un microprocesseur et de mémoires, dont une mémoire programme de type ROM ("Read Only Memory" en anglais) qui contient le (s) nombre (s) secret (s) d.
Ces composants sont utilisés dans des systèmes informatiques, embarqués ou non ; ils sont notamment utilisés dans les cartes à puce, pour certaines applications de celles-ci. Ce sont par exemple des applications d'accès à certaines banques de données, des applications bancaires, des applications de télépéage, par exemple pour la télévision, la distribution d'essence ou encore le passage de péages d'autoroutes.
Ces composants ou ces cartes mettent donc en oeuvre un algorithme de cryptographie pour assurer le chiffrement de données émises et/ou le déchiffrement de données reçues lorsque celles-ci doivent demeurer confidentielles.
De manière générale et succincte, ces algorithmes cryptographiques ont notamment pour fonction le chiffrement ou la signature numérique d'un message
<Desc/Clms Page number 2>
appliqué en entrée (à la carte) par un système hôte (serveur, distributeur bancaire...) et de nombreux secrets contenus dans la carte, et de fournir en retour au système hôte ce message chiffré ou signé, ce qui permet par exemple au système hôte d'authentifier le composant ou la carte, d'échanger des données,....
Les caractéristiques des algorithmes de cryptographie sont connues : calculs effectués, paramètres utilisés. La seule inconnue est le ou les nombres secrets contenus en mémoire programme. Toute la sécurité de ces algorithmes de cryptographie tient dans ce (s) nombre (s) secret (s) contenu (s) dans la carte et inconnu (s) du monde extérieur à cette carte. Ce nombre secret ne peut être déduit de la seule connaissance du message appliqué en entrée et du message chiffré fourni en retour.
Or il est apparu que des attaques externes basées sur des grandeurs physiques mesurables à l'extérieur du dispositif de calcul lorsque celui-ci est en train de dérouler l'algorithme de cryptographie, permettent à des tiers mal intentionnés de trouver le (s) nombre (s) secret (s) contenu (s) dans cette carte. Ces attaques sont appelées attaques à canaux cachés ("Side channel attacks"en anglais) ; on distingue parmi ces attaques à canaux cachés, les attaques SPA acronyme anglo-saxon pour Single Power Attack et les attaques DPA, acronyme anglo-saxon pour Differential Power Analysis.
Le principe de ces attaques à canaux cachés repose par exemple sur le fait que la consommation en courant du microprocesseur exécutant des instructions varie selon l'instruction ou la donnée manipulée.
<Desc/Clms Page number 3>
Notamment, quand une instruction exécutée par le microprocesseur nécessite une manipulation d'une donnée ou d'une instruction bit par bit, on a deux profils de courant différents selon que ce bit vaut" 1" ou "0". Typiquement, si le microprocesseur manipule un"0", on a à cet instant d'exécution une première amplitude du courant consommé et si le microprocesseur manipule un "1", on a une deuxième amplitude du courant consommé, différente de la première.
Ainsi les attaques à canaux cachés exploitent dans ce cas la différence du profil de consommation en courant dans la carte pendant l'exécution d'une instruction suivant la valeur du bit manipulé. Pour une description plus détaillée des attaques à canaux cachés, on se reportera à la publication de Paul Kocher "Advances in Cryptology-CRYPTO'99", vol. 1666 of Lectures Notes in Computer Science, pp 388-397, Springer Verlag 1999.
Ce type d'attaque est notamment envisageable avec l'algorithme RSA du nom de ses auteurs (Rivest, Shamir et Adleman), sur lequel sont basés de nombreux algorithmes de cryptographie. La sécurité de l'algorithme RSA est basée sur la difficulté de factoriser de grands nombres. Ces algorithmes utilisent notamment des calculs d'exponentiation à la puissance d, d étant un nombre secret.
On rappelle brièvement les principales étapes de l'algorithme RSA.
On établit un nombre N qui est le produit de deux nombres premiers p et q (N=p. q), ainsi qu'un exposant
<Desc/Clms Page number 4>
Figure img00040001

public ou clé publique e et un exposant privé ou clé privée ou secrète d, satisfaisant la relation :
Figure img00040002

e. d = 1 (module À (N)),
Figure img00040003

Â. (.) étant la fonction de Carmichael.
Selon un premier mode de fonctionnement de l'algorithme RSA dit classique, les paramètres publics sont (N, e) et les paramètres privés sont (N, d). Etant donné x compris dans l'intervalles 0, N [, l'opération publique sur x qui peut être par exemple le chiffrement du message x ou encore la vérification de la signature
Figure img00040004

x, consiste à calculer :
Figure img00040005

y = Xe module N
Figure img00040006

L'opération privée correspondante qui peut être par exemple le déchiffrement du message chiffré y ou la génération d'une signature x, est alors :
Figure img00040007

x = yd module N
Un autre mode de fonctionnement dit mode CRT car basé sur le théorème des restes chinois ("Chinese Remainder Theorem"ou CRT en anglais) est quatre fois plus rapide que celui de l'algorithme RSA classique.
Selon ce RSA mode CRT, on n'effectue pas directement les calculs modulo N mais on effectue d'abord les calculs modulo p et modulo q.
Les paramètres publics sont (N, e) mais les paramètres privés sont (p, q, d) ou (p, q, dp, dq, iq) avec
Figure img00040008

dp = d modulo (p-1), dq = d modulo (q-1) et iq= q' module p.
Figure img00040009
L'opération publique s'effectue de la même façon que pour le mode de fonctionnement classique ; par contre pour l'opération privée, on calcule d'abord :
Figure img00040010

x-y"modp et dq odq
<Desc/Clms Page number 5>
Ensuite, par application du théorème des restes chinois, on obtient x = yd mod N par :
Figure img00050001

x = xq+q[iq (xp-xq) modulo p]
Ainsi en mesurant la consommation en courant de la carte par exemple, lors de ces calculs d'exponentiation à la puissance d, un fraudeur peut déduire la suite de bits composant la clé d à partir de multiples mesures.
Les procédés de contre-mesure permettant de parer ce type d'attaque consistent à ne pas manipuler directement la clé secrète d.
Selon une première contre-mesure, on décompose d sous la forme suivante d = (d+a)-a et l'on calcule alors y (d+a) puis y'. Mais a et d étant de même ordre de grandeur, le temps de calcul est alors doublé.
Une autre contre-mesure seulement utilisable en mode CRT et décrite dans le brevet WO n 9935782 consiste à exprimer l'exposant privé dp sous la forme aléatoire suivante : dp* = dp+r. (p-1), r étant un nombre aléatoire.
Mais cette contre-mesure ne peut s'appliquer au mode RSA classique.
Une troisième contre-mesure consiste à représenter l'exposant d par une chaîne d'addition. Par exemple, une chaîne d'addition possible du nombre 10 est (1,2, 3,5, 8,10). Pour calculer ylO, on calcule R1=y. y=y2
Figure img00050002

2 3 3 2= 5 puis R2=Rl. y=y2. y=y3 puis R3=R2. R1=y3. l=y5 puis 5 3 8 2= 10 R4=R3. R2=y\y et enfin R5=R4. R1=y8. y2=ylO. Bien sûr dans la réalité la clé secrète d est un nombre beaucoup plus grand, de 512 bits ou plus.
<Desc/Clms Page number 6>
Pour une description plus détaillée des représentations d'un nombre par chaînes d'addition, on peut se reporter à la publication de C. Clavier et de M. Joye CHESS'01 "Universal exponentiation algorithm : a first step toward provable SPA resistance".
Dans ce cas de contre-mesure, la taille des données à garder en mémoire en l'occurrence la chaîne d'addition, est doublée.
Le but de la présente invention est donc de protéger le nombre secret'd contre les attaques à canaux cachés intervenant lorsque d est utilisé dans des calculs d'exponentiation, sans pour autant être pénalisé au niveau du temps de calcul, de l'emplacement mémoire ou encore limité dans le choix de l'algorithme de cryptographie.
L'invention a pour objet un procédé sécurisé de mise en oeuvre, dans un composant électronique, d'un algorithme de cryptographie utilisant des moyens de calcul destinés à effectuer des opérations d'exponentiation à la puissance d d'un nombre y (yd), d étant un nombre entier de taille déterminée, caractérisé en ce qu'on mémorise plusieurs algorithmes de calcul d'exponentiation dans ledit composant électronique préalablement au premier calcul de la valeur yd, et en ce qu'il consiste à réaliser les étapes suivantes à chaque calcul de la valeur yd : a) on décompose le nombre d en n blocs Di de ri bits, i variant de 0 à n-1, n et les ri étant des entiers aléatoires, l < n < =taille de d, ro+... +rn-i=taille de d et on considère parmi les algorithmes de calcul
<Desc/Clms Page number 7>
Figure img00070001

d'exponentiation mémorisés, une chaîne de n algorithmes Ai, b) on effectue au moyen d'un algorithme Ao et à partir des ro premiers bits de d et de y, le calcul
Figure img00070002

et on mémorise le résultat So, c) on effectue au moyen d'un algorithme Aj et à partir des rj bits suivants de d, d'une fonction de So et/ou... et/ou de Sj-i, et de y, j variant de 1 à n-1, le calcul
Figure img00070003

et on mémorise le résultat Sj, le résultat de yd correspondant à la valeur Sn-i obtenue.
Selon une caractéristique de l'invention, parmi la chaîne des n algorithmes Ai, certains desdits algorithmes sont identiques.
La chaîne des n algorithmes Ai i variant de 0 à n- 1, est de préférence établie de manière aléatoire.
La chaîne des n algorithmes Ai i variant de 0 à n- 1, peut être prédéterminée.
Selon un mode de réalisation de l'invention, l'algorithme de cryptographie est du type RSA classique ou en mode CRT.
L'invention a également pour objet un composant électronique de sécurité, comprenant des moyens de calcul, une mémoire de programme et une mémoire de travail et des moyens de communication de données, caractérisé en ce qu'il met en oeuvre le procédé de
<Desc/Clms Page number 8>
contre-mesure selon l'une quelconque des revendications précédentes, et en ce qu'il comprend un générateur de nombres aléatoires et en ce que la mémoire de programme comporte plusieurs algorithmes de calcul d'exponentiation.
L'invention concerne aussi une carte à puce comprenant un composant électronique tel que décrit précédemment.
D'autres particularités et avantages de l'invention apparaîtront clairement à la lecture de la description faite à titre d'exemple non limitatif et en regard de la figure 1 annexée qui représente schématiquement les éléments d'une carte à puce apte à mettre en oeuvre l'invention.
Les modes de réalisation sont décrits dans le cadre de cartes à puce, mais peuvent bien entendu s'appliquer à tout autre dispositif ou composant électronique de sécurité doté de moyens de calculs cryptographiques.
Ainsi que le montre la figure 1, la carte à puce 1 comprend un microprocesseur 2 couplé à une mémoire figée (ROM) 3 et à une mémoire vive (RAM) 4, le tout formant un ensemble permettant, entre autres, l'exécution d'algorithmes cryptographiques. Plus précisément, le microprocesseur 2 comporte les moyens de calcul arithmétiques nécessaires à l'algorithme, ainsi que des circuits de transfert de données avec les mémoires 3 et 4. La mémoire figée 3 contient le programme exécutoire de l'algorithme cryptographique sous forme de code source, alors que la mémoire vive 4
<Desc/Clms Page number 9>
comporte des registres pouvant être mis à jour pour le stockage de résultats des calculs.
La carte à puce 1 comporte aussi une interface de communication 5 reliée au microprocesseur 2 pour permettre l'échange de données avec l'environnement extérieur. L'interface de communication 5 peut être du type"à contacts", étant dans ce cas formée d'un ensemble de plots de contacts destinés à se connecter à un contacteur d'un dispositif externe, tel qu'un lecteur de cartes, et/ou du type"sans contact". Dans ce dernier cas, l'interface de communication 5 comporte une antenne et des circuits de communication par voie hertzienne permettant un transfert de données par liaison sans fil. Cette liaison peut aussi permettre un transfert d'énergie d'alimentation des circuits de la carte 1.
Le procédé selon l'invention consiste à calculer yd au moyen d'une chaîne de n algorithmes d'exponentiation appliqués à n blocs de bits de d. On entend par algorithme de calcul d'exponentiation, une suite d'instructions permettant d'effectuer ce calcul ; comme on le verra par la suite dans un exemple, il y a plusieurs algorithmes possibles.
Cette chaîne de n algorithmes d'exponentiation Ai (i variant de 0 à n-1) est établie à partir de plusieurs algorithmes d'exponentiation que l'on met en mémoire préalablement au premier calcul de yd. Les algorithmes Ai ne sont pas nécessairement tous différents : certains peuvent être identiques.
A chaque calcul de la valeur yd, par exemple à chaque fois que l'on effectue l'opération privée
<Desc/Clms Page number 10>
décrite précédemment pour l'algorithme RSA, on découpe comme représenté ci-dessous la clé d comportant K bits (la taille de d est K), en n blocs Di (i varie de 0 à n- 1) de ri bits (0 ou 1), n et ri étant des nombres entiers aléatoires, 1 < n < =K générés par exemple par la carte à puce au moyen d'un générateur 6 de nombres aléatoires représenté figure 1 :
Figure img00100001

d = dk............... dj......... do (représentation binaire de d) 1-1 ro... r[... rn-l (nombre de bits de chaque bloc D) Do... D,... Dn-l
Figure img00100002

avec Douro premiers bits de d, Dl=rl bits suivant ceux du bloc Do, ....
Di= ri bits suivant ceux des blocs Doll.. J 1 Di-l, ..., Dn-i= rn-i derniers bits de d, avec d= Doll.. J 1 Dn-l, le symbole # signifiant concaténé.
Les blocs Di qui se suivent sont contigus.
La clé d est lue de gauche à droite ; on peut bien sûr tout aussi bien la lire de droite à gauche. De même on peut lire les bits d'un bloc de gauche à droite et ceux d'un autre bloc de droite à gauche.
On effectue ensuite le calcul d'exponentiation yd au moyen de la chaîne de n algorithmes : on calcule au moyen d'un algorithme Ao le calcul d'exponentiation de y à partir des ro premiers bits de d et de y pour obtenir So que l'on mémorise :
Figure img00100003
<Desc/Clms Page number 11>
on calcule au moyen d'un algorithme Ai le calcul d'exponentiation de y à partir des ri bits suivants de d, d'une fonction de So et de y pour obtenir
Figure img00110001

Si que l'on mémorise :
Figure img00110002
Figure img00110003

--y on calcule au moyen d'un algorithme Ai le calcul d'exponentiation de y à partir des ri bits suivants de d, d'une fonction de So et/ou de Si et/ou
Figure img00110004

..., et/ou de Spi1, et de y pour obtenir Si que l'on mémorise :
Figure img00110005
Figure img00110006

'"/ on calcule au moyen d'un algorithme A le calcul d'exponentiation de y à partir des rn-i derniers bits de d, d'une fonction de So et/ou de Si et/ou..., et/ou de Sn-2, et de y pour obtenir Sn-1, le résultat recherché, que l'on mémorise :
Figure img00110007
Selon l'algorithme Ai mis en oeuvre, le calcul de Si s'effectue à partir notamment d'une fonction du résultat Si-i de l'algorithme précédent sans utiliser toute la chaîne So,..., Si-2 des résultats précédents (ou d'une fonction des résultats précédents), ou encore à
<Desc/Clms Page number 12>
partir de quelques uns de ces résultats (ou d'une fonction de ces résultats).
Par ailleurs, la chaîne d'algorithme est de préférence déterminée de manière aléatoire pour chaque calcul de yd ; elle peut cependant être prédéterminée.
Ce procédé permet ainsi de se protéger dans le cas de la mise en oeuvre d'un algorithme de cryptographie basé sur un calcul d'exponentiation du type yd.
En effet, les attaques à canaux cachés qui sont réalisées au terme de multiples mesures, consistent dans un premier temps, lors d'une phase d'apprentissage à identifier l'algorithme d'exponentiation utilisé. Pour ce faire, le fraudeur relance l'algorithme en changeant la clé. Connaissant cet algorithme, il peut alors identifier les bits de la véritable clé d.
Selon l'invention, le calcul de yd n'est pas effectué de la même manière d'une fois sur l'autre : la décomposition de d en blocs Di est déterminée de façon aléatoire d'une fois sur l'autre car le nombre n de blocs et leur taille ri sont des entiers aléatoires, les algorithmes de calcul d'exponentiation diffèrent les uns des autres (même si certains sont identiques, il y en a au moins deux qui diffèrent) et éventuellement, la chaîne d'algorithmes d'exponentiation varie également de façon aléatoire d'un calcul de yd à l'autre.
Il devient ainsi beaucoup plus difficile voire impossible d'identifier l'algorithme d'exponentiation utilisé et par conséquent de déterminer l'exposant secret.
On va à présent illustrer le procédé précédemment décrit par l'exemple suivant qui consiste à réaliser le
<Desc/Clms Page number 13>
calcul d'exponentiation modulaire suivant : yd modulo p, d étant une clé de k bits et p étant un nombre premier.
On décompose la clé d en 2 blocs (n=2), un bloc Do de k-r bits et un bloc Dl de r bits (d=DID1).
Le calcul"yd modulo p"va donc s'effectuer au moyen de deux algorithmes Ao et Ai permettant d'obtenir respectivement So et Si avec Si=y module p.
L'algorithme choisi pour Ao est l'algorithme "Square and Always Multiply"qui consiste à élever au carré et à multiplier dans tous les cas. Il s'agit, pour des exposants de même taille, d'un algorithme à temps constant et à code constant c'est-à-dire qui exécute toujours les mêmes instructions, quelle que soit la valeur de l'exposant manipulé ; il n'inclut pas d'instructions de test pouvant donner une information sur la valeur manipulée. Un tel algorithme à temps constant et à code constant est bien sécurisé mais il est coûteux en temps de calcul car il exécute parfois des opérations inutiles.
L'algorithme choisi pour Ai est l'algorithme "Square and Multiply"qui consiste à élever au carré et à multiplier. Il ne s'agit pas d'un algorithme à temps constant, ni à code constant sauf si l'on rajoute artificiellement une instruction comme on le verra plus loin. C'est donc un algorithme moins sécurisé que le précédent mais plus rapide.
On calcule donc d'abord So au moyen de Ao à partir de 1, y, des k-r premiers bits de d et de p selon la suite d'instructions suivante :
<Desc/Clms Page number 14>
Figure img00140001

RO=l Pour i=k-1 à r par pas de (-1) R1=R02 modulo p RO=Rl*y RO=R [complément de di] FinPour So=RO
Figure img00140002

On rappelle que si di=O, le complément de di est 1 et R [complément de di] =Rl, et que si di=l, le complément de di est 0 et R [complément de di] =RO.
On enchaîne ensuite avec le calcul de Si (c'est-àdire yd modulo p) au moyen de Ai à partir de So, y, des r bits suivants de d et de p selon la suite d'instructions suivante :
Figure img00140003

RO==So Pour i=r-1 à 0 par pas de (-1) R1=R02 si di=l alors RO=Rl*y modulo p sinon RO=R1 FinPour Sl=RO
Figure img00140004

Pour que l'algorithme Al soit à code constant, il suffit de remplacer l'instruction RO=R1 par : RO=R1*1 modulo p.
L'invention est valable pour les algorithmes cryptographiques utilisant des calculs d'exponentiation comme par exemple le calcul d'exponentiation modulaire (yd modulo p) dans le cas de l'algorithme de type RSA ou encore le calcul d'exponentiation sur une courbe elliptique où il est d'usage d'écrire l'exponentiation
<Desc/Clms Page number 15>
Figure img00150001

de façon additive. L'exponentiation se nomme alors multiplication scalaire : b yb=y*... *y (b fois) devient b*y=y+... +y (b fois).

Claims (8)

REVENDICATIONS
1. Procédé sécurisé de mise en oeuvre, dans un composant électronique, d'un algorithme de cryptographie utilisant des moyens de calcul destinés à effectuer des opérations d'exponentiation à la puissance d d'un nombre y (yd), d étant un nombre entier de taille déterminée, caractérisé en ce qu'on mémorise plusieurs algorithmes de calcul d'exponentiation dans ledit composant électronique préalablement au premier calcul de la valeur yd, et en ce qu'il consiste à réaliser les étapes suivantes à chaque calcul de la valeur yd : a) on décompose le nombre d en n blocs Di de ri bits, i variant de 0 à n-1, n et les ri étant des entiers aléatoires, l < n < =taille de d, ro+... +rn-i=taille de d et on considère parmi les algorithmes de calcul d'exponentiation mémorisés, une chaîne de n algorithmes
Figure img00160001
Ai, b) on effectue au moyen d'un algorithme Ao et à partir des ro premiers bits de d et de y, le calcul
Figure img00160002
et on mémorise le résultat So, c) on effectue au moyen d'un algorithme Aj et à partir des rj bits suivants de d, d'une fonction de So et/ou... et/ou de Sj-i, et de y, j variant de 1 à n-1, le calcul
<Desc/Clms Page number 17>
et on mémorise le résultat Sj, le résultat de yd correspondant à la valeur Sn-i obtenue.
Figure img00170001
2. Procédé selon la revendication précédente, caractérisé en ce que parmi la chaîne des n algorithmes Ai, certains desdits algorithmes sont identiques.
3. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la chaîne des n algorithmes Ai i variant de 0 à n-1, est établie de manière aléatoire.
4. Procédé selon l'une quelconque des revendications 1 à 2, caractérisé en ce que la chaîne des n algorithmes Ai i variant de 0 à n-1, est prédéterminée.
5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que l'algorithme de cryptographie est du type RSA.
6. Procédé selon la revendication précédente, caractérisé en ce que l'algorithme de type RSA est du type CRT.
7. Composant électronique de sécurité, comprenant des moyens de calcul (2), une mémoire de programme (3) et une mémoire de travail (4) et des moyens de
<Desc/Clms Page number 18>
communication de données (5), caractérisé en ce qu'il met en oeuvre le procédé de contre-mesure selon l'une quelconque des revendications précédentes, et en ce qu'il comprend un générateur (6) de nombres aléatoires et en ce que la mémoire de programme (3) comporte plusieurs algorithmes de calcul d'exponentiation.
8. Carte à puce comprenant un composant électronique selon la revendication précédente.
FR0111602A 2001-09-07 2001-09-07 Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant Expired - Fee Related FR2829646B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0111602A FR2829646B1 (fr) 2001-09-07 2001-09-07 Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant
PCT/FR2002/002963 WO2003025739A1 (fr) 2001-09-07 2002-08-29 Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0111602A FR2829646B1 (fr) 2001-09-07 2001-09-07 Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant

Publications (2)

Publication Number Publication Date
FR2829646A1 true FR2829646A1 (fr) 2003-03-14
FR2829646B1 FR2829646B1 (fr) 2004-01-16

Family

ID=8867069

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0111602A Expired - Fee Related FR2829646B1 (fr) 2001-09-07 2001-09-07 Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant

Country Status (2)

Country Link
FR (1) FR2829646B1 (fr)
WO (1) WO2003025739A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864390A1 (fr) * 2003-12-19 2005-06-24 Gemplus Card Int Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa.

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064740A (en) * 1997-11-12 2000-05-16 Curiger; Andreas Method and apparatus for masking modulo exponentiation calculations in an integrated circuit
WO2000067410A1 (fr) * 1999-04-29 2000-11-09 Motorola Inc. Procede pour prevenir les attaques par analyse de puissance sur des ensembles microelectroniques

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064740A (en) * 1997-11-12 2000-05-16 Curiger; Andreas Method and apparatus for masking modulo exponentiation calculations in an integrated circuit
WO2000067410A1 (fr) * 1999-04-29 2000-11-09 Motorola Inc. Procede pour prevenir les attaques par analyse de puissance sur des ensembles microelectroniques

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MENEZES ALFRED J ET AL: "Handbook of Cryptography", HANDBOOK OF APPLIED CRYPTOGRAPHY, CRC PRESS SERIES ON DISCRETE MATHEMATICES AND ITS APPLICATIONS, BOCA RATON, FL, CRC PRESS, US, 1997, pages 613 - 629, XP002188328, ISBN: 0-8493-8523-7 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864390A1 (fr) * 2003-12-19 2005-06-24 Gemplus Card Int Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa.
WO2005069122A3 (fr) * 2003-12-19 2006-06-01 Gemplus Card Int Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa

Also Published As

Publication number Publication date
FR2829646B1 (fr) 2004-01-16
WO2003025739A1 (fr) 2003-03-27

Similar Documents

Publication Publication Date Title
EP0766894A1 (fr) Procede de generation de signatures electroniques notamment pour cartes a puces
CA2712178A1 (fr) Procede et dispositifs de contre-mesure pour cryptographie asymetrique
EP1652336B1 (fr) Procede pour la mise en oeuvre securisee d&#39;un algorithme de cryptographie de type rsa et composant correspondant
CA2732444A1 (fr) Circuit integre protege contre une analyse par canal auxiliaire horizontale
WO2011144554A1 (fr) Procédé d&#39;obtention de clés de chiffrement, terminal, serveur, et produits programmes d&#39;ordinateurs corresupondants.
WO2001028153A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
EP1421473A1 (fr) Procede de calcul universel applique a des points d&#39;une courbe elliptique
EP1086547B1 (fr) Procede de securisation d&#39;un ou plusieurs ensembles electroniques mettant en oeuvre un algorithme crytographique avec cle secrete, et l&#39;ensemble electronique
EP1994465A1 (fr) Procede de securisation d&#39;un calcul d&#39;une exponentiation ou d&#39;une multiplication par un scalaire dans un dispositif electronique
EP1419434A1 (fr) Procede securise de realisation d&#39;une operation d&#39;exponentiation modulaire
EP1254408B1 (fr) Procede de calcul d&#39;exponentation modulaire dans un composant electronique mettant en oeuvre un algorithme de chiffrement a cle publique
EP1433282B1 (fr) Procede de mise en oeuvre, dans un composant electronique, d&#39;un algorithme de cryptographie permettant de trouver l&#39;exposant public
FR2829646A1 (fr) Procede securise de mise en oeuvre d&#39;un algorithme de cryptographie et composant correspondant
FR2808360A1 (fr) Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit
EP0980607A1 (fr) Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d&#39;aleas
FR2888690A1 (fr) Procede cryptographique pour la mise en oeuvre securisee d&#39;une exponentiation et composant associe
FR2818846A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie
EP1839125A1 (fr) Procédé d&#39;exponentiation sécurisée et compacte pour la cryptographie
FR2831739A1 (fr) Procede de mise en oeuvre securisee d&#39;un module fonctionnel, dans un composant electronique et composant correspondant
FR2818473A1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
WO2003069841A1 (fr) Procede de detection des attaques par mise en defaut contre les algorithmes cryptographiques
FR2903258A1 (fr) Systeme et procede cryptographique a cle publique pour l&#39;authentification d&#39;une premiere entite par une seconde entite
FR2733378A1 (fr) Procede de generation de signatures numeriques de messages
FR2986884A1 (fr) Procede de generation securise d&#39;un nombre premier, produit programme d&#39;ordinateur et composant electronique correspondants
WO2002082257A1 (fr) Dispositif destine a realiser des calculs d&#39;exponentiation securisee et utilisation d&#39;un tel dispositif

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20100531