FR2825863A1 - Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique - Google Patents
Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique Download PDFInfo
- Publication number
- FR2825863A1 FR2825863A1 FR0107472A FR0107472A FR2825863A1 FR 2825863 A1 FR2825863 A1 FR 2825863A1 FR 0107472 A FR0107472 A FR 0107472A FR 0107472 A FR0107472 A FR 0107472A FR 2825863 A1 FR2825863 A1 FR 2825863A1
- Authority
- FR
- France
- Prior art keywords
- bit
- indexed
- value
- algorithm
- exponentiation
- 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
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/723—Modular exponentiation
-
- 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/725—Finite field arithmetic over elliptic curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7261—Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
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
Un procédé de sécurisation d'un calcul d'exponentiation du type y=xr , où x est un élément d'un ensemble noté de façon multiplicative et r est un nombre prédéterminé, au moins un bit ou chiffre r i dudit nombre r étant traité à chaque itération, un index i sur le nombre r étant prévu, consiste à la fin de chaque itération, à incrémenter ou décrémenter l'index i selon la valeur du bit ou chiffre indexé r i et réécrire à zéro le bit ou chiffre indexé r i .
Description
<Desc/Clms Page number 1>
PROCEDE DE SECURISATION D'UN CALCUL D'EXPONENTIATION
DANS UN DISPOSITIF ELECTRONIQUE
La présente invention concerne un procédé de sécurisation d'un calcul d'exponentiation, avec application notamment dans le domaine de la cryptologie. L'invention s'applique en particulier à des algorithmes cryptographiques mis en oeuvre dans des dispositifs électroniques tels que des cartes à puce.
DANS UN DISPOSITIF ELECTRONIQUE
La présente invention concerne un procédé de sécurisation d'un calcul d'exponentiation, avec application notamment dans le domaine de la cryptologie. L'invention s'applique en particulier à des algorithmes cryptographiques mis en oeuvre dans des dispositifs électroniques tels que des cartes à puce.
De nombreux algorithmes cryptographiques sont basés sur des calculs d'exponentiation du type y = xr, où x est un élément d'un ensemble noté de façon multiplicative et r un nombre prédéterminé, qui codent une valeur y. Ceci est notamment le cas avec l'algorithme du type RSA (Rivest, Shamir et Adleman). La valeur y peut correspondre par exemple à un texte chiffré, une donnée signée ou vérifiée.... On rappellera que sur un ensemble noté additivement, tel une courbe elliptique, l'exponentiation devient une multiplication scalaire du type Q=d. P, où P et Q sont des éléments de l'ensemble noté additivement (courbe elliptique) et d un nombre scalaire. Dans la suite, on se place dans le cas général, conventionnel, ce qui veut dire que l'on utilisera la notation multiplicative, sauf mention explicite contraire.
Il existe différents types d'algorithmes d'exponentiation. On connaît notamment la méthode binaire de type"élévation au carré et multiplication", plus habituellement connue sous la terminologie anglosaxonne"square and multiply" (acronyme anglais SAM),
<Desc/Clms Page number 2>
Ces algorithmes doivent inclure des contre-mesures adaptées contre des attaques visant à découvrir des informations contenues et manipulées dans des traitements effectués par le dispositif de calcul.
Notamment, des contre-mesures sont prévues contre les attaques dites à canaux cachés, simples ou différentielles. On entend par attaque à canal caché simple ou différentielle, une attaque basée sur une grandeur physique mesurable de l'extérieur du dispositif, et dont l'analyse directe (attaque simple) ou l'analyse selon une méthode statistique (attaque différentielle) permet de découvrir des informations contenues et manipulées dans des traitements réalisés dans le dispositif. Ces attaques peuvent ainsi permettre de découvrir des informations confidentielles. Ces attaques ont notamment été dévoilées par Paul Kocher (Advances in Cryptology- CRYPTO'99, vol. 1666 of Lecture Notes in Computer Science, pp. 388-397. Springer-Verlag, 1999). Parmi les grandeurs physiques qui peuvent être exploitées à ces fins, on peut citer la consommation en courant, le champ électromagnétique... Ces attaques sont basées sur le fait que la manipulation d'un bit, c'est à dire son traitement par une instruction particulière a une empreinte particulière sur la grandeur physique considérée selon sa valeur.
Les algorithmes d'exponentiation précités ont dû inclure des contre-mesures pour empêcher de telles attaques de prospérer.
<Desc/Clms Page number 3>
Une parade efficace aux attaques de type différentiel est de rendre aléatoire les entrées et/ou les sorties de l'algorithme d'exponentiation utilisé pour calculer y=xr. En d'autres termes, il s'agit de rendre aléatoires l'opérande x et/ou l'exposant r.
En ce qui concerne les attaques de type simple, on sait sécuriser ces algorithmes en supprimant tous les branchements conditionnels à la valeur de la donnée traitée, branchements par lesquels une opération différente est exécutée.
Si on prend l'exemple de la méthode la plus couramment utilisée dans les systèmes cryptographiques à clé publique, la méthode binaire, aussi désignée par méthode (ou algorithme) SAM (pour"square and multiply"), deux variantes de mise en oeuvre existent, selon que les bits du nombre r sont balayés de la droite vers la gauche ou de la gauche vers la droite.
Dans le premier cas (balayage droite vers gauche), l'algorithme SAM peut s'écrire de la façon suivante : Entrées de l'algorithme : x, r= (ru1, rm-2,..., ro) 2 Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, Ri.
Initialisation : Ro < -1 ; Ri < -x.
Pour i=0 à m-1, faire : Si ri=l, alors Ro- < -Ro. R1 Ri < - (Ri)' Retourner Ro.
Dans le deuxième cas (balayage gauche vers droite), l'algorithme SAM peut s'écrire de la façon suivante : Entrées de l'algorithme : x, r= (rm-i, rm-2,..., ro) 2 Sortie de l'algorithme : Y=Xr.
<Desc/Clms Page number 4>
Registre temporaire utilisé : Ro.
Initialisation : Ro < -1
Pour i= m-1 à 0, faire : Ro < - (Ro)
Si ri=l, alors Ro- < -Ro. x Retourner Ro.
Pour i= m-1 à 0, faire : Ro < - (Ro)
Si ri=l, alors Ro- < -Ro. x Retourner Ro.
En considérant qu'une multiplication est aussi coûteuse qu'une élévation au carré, les deux algorithmes nécessitent en moyenne (3/2). m multiplications.
Pour sécuriser ces algorithmes vis à vis des attaques à canaux cachés de type simple, la méthode généralement utilisée est de supprimer les branchements conditionnels à la valeur du nombre r (la clé secrète), en sorte que l'on obtienne un algorithme à code constant.
La méthode binaire sécurisée, devient ainsi la méthode dite "square and multiply always", ou algorithme SMA, c'est à dire une méthode dans laquelle une multiplication et une élévation au carré sont systématiquement réalisées.
Dans le cas d'un balayage gauche vers droite, l'algorithme SMA sécurisé peut s'écrire comme suit : Entrées de l'algorithme : x, r= (rm-i, rm-2,..., ro) 2 Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, Ri.
Variable utilisée : b Initialisation : Ro < -1
Pour i= m-1 à 0, faire : Ro < - (Ro) b=-, ri ; Rb < -Rb. x ; Ro--Rb
Pour i= m-1 à 0, faire : Ro < - (Ro) b=-, ri ; Rb < -Rb. x ; Ro--Rb
<Desc/Clms Page number 5>
Retourner Ro.
On rappelle que la notation ri signifie valeur complémentaire de ri, (également appelée négation booléenne). Ainsi, si ri vaut 1, ri vaut 0 et si ri vaut 0, -, ri vaut 1.
Dans cet algorithme, une multiplication inutile est réalisée, lorsque le bit ri du nombre r vaut 0. Les performances de l'algorithme sécurisé résultant en termes de nombre de multiplications à effectuer tombent alors à 2. m.
D'une manière générale, la sécurisation des algorithmes d'exponentiation vis à vis des attaques de type simple affecte les performances de ces algorithmes de manière non négligeable.
Un objet de l'invention est un procédé de sécurisation d'un calcul d'exponentiation, notamment pour empêcher des attaques à canaux cachés simples de prospérer.
Un autre objet de l'invention est un procédé de sécurisation permettant d'aboutir à un algorithme d'exponentiation performant en termes de nombre d'opérations.
Un autre objet de l'invention est un procédé de sécurisation simple à implémenter.
Telle que caractérisée, l'invention concerne donc un procédé de sécurisation d'un calcul d'exponentiation du type y=xr, où x est un élément d'un ensemble noté de façon multiplicative et r est un nombre prédéterminé, au moins un bit ou chiffre dudit nombre r étant traité à chaque itération, un index sur le nombre r étant prévu, caractérisé en ce qu'à la fin de chaque itération, ledit index est incrémenté ou décrémenté
<Desc/Clms Page number 6>
selon la valeur du bit ou chiffre indexé et le bit ou chiffre indexé est réécrit à zéro.
Selon l'invention, au moins deux registres de calcul étant utilisés pour effectuer ledit calcul d'exponentiation, la valeur du bit ou chiffre indexé est utilisée pour indexer au moins un des registres à utiliser dans l'itération correspondante.
Le procédé de sécurisation selon l'invention peut être mis en oeuvre dans un dispositif électronique apte à effectuer des calculs du type avec ou sans résultat en place. Il s'applique à des dispositifs électroniques mettant en oeuvre au moins un calcul d'exponentiation, notamment dans des cartes à puce ou autres systèmes cryptographiques.
L'invention et les avantages qui en découlent apparaîtront plus clairement à la lecture de la description qui suit et des exemples de réalisation donnés à titre purement indicatif, par référence à la figure unique en annexe. Celle-ci est un organigramme des éléments principaux d'un dispositif électronique, par exemple une carte à puce, permettant de mettre en oeuvre l'invention.
La figure 1 représente sous forme de schéma bloc un dispositif électronique apte à réaliser des calculs d'exponentiation. Dans l'exemple, ce dispositif est une carte à puce destinée à exécuter un programme cryptographique. A cette fin, le dispositif 1 réunit dans une puce des moyens de calcul programmés, composés d'une unité centrale (UC) 2 reliée fonctionnellement à un ensemble de mémoires dont :
<Desc/Clms Page number 7>
- une mémoire 4 accessible en lecture seulement, dans l'exemple du type ROM masque, aussi connue sous l'appellation anglaise"mask read-only memory (mask ROM)", - une mémoire 6 reprogrammable électriquement, dans l'exemple du type EEPROM (de l'anglais "electrically erasable programmable ROM"), et - une mémoire de travail 8 accessible en lecture et en écriture, dans l'exemple du type RAM (de l'anglais"random access memory"). Cette mémoire comprend notamment les registres utilisés par le dispositif 1.
Le code exécutable correspondant à l'algorithme d'exponentiation est contenu en mémoire programme. Ce code peut en pratique être contenu en mémoire 4, accessible en lecture seulement, et/ou en mémoire 6, réinscriptible.
L'unité centrale 2 est reliée à une interface de communication 10 qui assure l'échange de signaux vis-àvis de l'extérieur et l'alimentation de la puce. Cette interface peut comprendre des plots sur la carte pour une connexion dite"à contact"avec un lecteur, et/ou une antenne dans le cas d'une carte dite"sans contact".
L'une des fonctions du dispositif 1 est de crypter et décrypter des données confidentielles respectivement transmises vers, et reçues de, l'extérieur. Ces données peuvent concerner par exemple des codes personnels, des informations médicales, une comptabilité sur des transactions bancaires ou commerciales, des autorisations d'accès à certains services restreints, etc. Une autre fonction consiste
<Desc/Clms Page number 8>
dans le calcul d'une signature numérique ou dans sa vérification.
A cette fin, l'unité centrale 2 exécute un algorithme cryptographique à partir de données de programmation qui stockées dans les parties ROM masque 4 et/ou EEPROM 6.
L'algorithme cryptographique peut être basé par exemple sur un algorithme RSA (Rivest, Shamir et Adleman), ce qui implique un calcul d'exponentiation modulaire du type y = xr, où x est une valeur prédéterminée et r, un nombre entier qui constitue une clé. Le nombre y ainsi obtenu constitue une donnée chiffrée, déchiffrée, signée ou vérifiée.
Le nombre r (la clé) est stocké dans une portion de mémoire ré-inscriptible 6, de type EEPROM dans l'exemple.
Lorsque le dispositif 1 de calcul d'exponentiation est sollicité pour un calcul d'exponentiation de type y=xr, l'unité centrale mémorise le nombre x, transmis par l'interface de communication 10, en mémoire de travail 8, dans un registre de calcul. Dans un mode de réalisation courante, l'unité centrale va lire la clé r contenue en mémoire ré-inscriptible 6, pour la mémoriser temporairement, le temps du calcul d'exponentiation, dans un registre de calcul de la mémoire de travail. L'unité centrale lance alors l'algorithme d'exponentiation.
D'une manière générale, un algorithme d'exponentiation balaye tous les bits (ou chiffres) du nombre r pour effectuer l'exponentiation, par itérations successives. A chaque itération, il traite au moins un bit (ou chiffre) du nombre r. A cet effet,
<Desc/Clms Page number 9>
un index i sur le nombre r est prévu, incrémenté ou décrémenté d'une unité à la fin de chaque itération.
Selon l'invention, on prévoit qu'au lieu d'incrémenter ou décrémenter cet index d'une unité à la fin de chaque itération, on l'incrémente ou on le décrémente selon la valeur du bit (ou chiffre) indexé, et que ce bit (ou chiffre) indexé est réécrit à zéro.
De cette façon, on traite tous les bits (ou chiffres) du nombre r sans faire de tests sur leurs valeurs et sans aucune multiplication inutile.
Si on prend le cas d'une méthode binaire, le nombre r est représenté en binaire : r= (ri ro) 2. A chaque itération, un bit du nombre r est traité. Ce bit vaut soit 0 soit 1. Si le bit indexé vaut 1, à la fin de l'itération, l'index se retrouve incrémenté (ou décrémenté) de la valeur complémentaire, c'est à dire 0. Ainsi, à l'itération suivante, l'index i pointe toujours sur le même bit du nombre r, qui vaut alors 0.
A la fin de cette itération, l'index i est incrémenté (ou décrémenté) de la valeur complémentaire du bit indexé, c'est à dire d'une unité. Ainsi, on traite le bit suivant du nombre r.
Avec un tel procédé, si un bit indexé vaut 1, l'index pointe deux fois de suite au même endroit, pour traiter d'abord le bit égal à 1, puis le bit égal à zéro.
Avantageusement, la valeur du bit indexé est alors utilisée pour indexer au moins un des registres de calcul utilisés par l'algorithme d'exponentiation. C'est l'indexation du ou des registres par le bit indexé du nombre r qui détermine implicitement si c'est une multiplication par l'autre registre qui doit être
<Desc/Clms Page number 10>
effectuée ou une multiplication avec le même registre, dans l'itération concernée.
On notera qu'avec un procédé selon l'invention, un seul calcul multiplicatif est effectué à chaque itération : une multiplication avec l'autre registre ou une multiplication avec le même registre.
Si le nombre r est représenté en binaire signé, on a r= (rm-l,..., ro) sD2, où ri est un chiffre dans {-1, 0, 1}
représenté par deux bits : un bit de signe riH et un bit de valeur riL représentant sa valeur absolue 0 ou 1.
représenté par deux bits : un bit de signe riH et un bit de valeur riL représentant sa valeur absolue 0 ou 1.
L'index i pointe alors sur un chiffre du nombre r. Selon l'invention, il est incrémenté ou décrémenté de la valeur complémentaire du bit de valeur riL. La valeur riH+riL est elle utilisée pour indexer le ou les registres de calcul.
L'invention présente d'autres avantages, qui seront détaillés plus loin, dans des exemples pratiques d'implémentation du procédé de l'invention. Parmi ces avantages, le registre de calcul utilisé pour contenir la valeur du nombre r est entièrement réécrit à zéro à la fin du calcul d'exponentiation, ce qui est particulièrement intéressant sur le plan sécuritaire.
En outre, l'invention ne nécessite pas de moyens complexes de calcul, en tous cas pas plus que ceux mis en oeuvre pour les algorithmes de l'état de la technique.
Dans la suite, on va donner quelques exemples de mise en oeuvre de l'invention.
Un premier exemple de mise en oeuvre de l'invention concerne la méthode binaire avec balayage de droite à gauche. Avec un procédé de sécurisation selon
<Desc/Clms Page number 11>
l'invention, un algorithme binaire avec balayage de droite à gauche peut s'écrire de la manière suivante :
Entrées de l'algorithme : x, r= (rmi, rm-2,..., ro) 2
Sortie de l'algorithme : y=xr.
Entrées de l'algorithme : x, r= (rmi, rm-2,..., ro) 2
Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, Ri. variables utilisées : i, b
Initialisation : Ro < -1 ; Ri < -x ; i 0 Tant que i m-1, faire : b ±ri R~ri # R~ri.R1 ; r1 # 0 ; i < -i+b
Retourner Ro.
Initialisation : Ro < -1 ; Ri < -x ; i 0 Tant que i m-1, faire : b ±ri R~ri # R~ri.R1 ; r1 # 0 ; i < -i+b
Retourner Ro.
On notera qu'avec cet algorithme, à la fin du calcul d'exponentiation, le nombre x mémorisé à l'initialisation dans le registre R1, est perdu, puisque les registres Ro et Ri sont utilisés pour contenir les résultats intermédiaires.
Un deuxième exemple de mise en oeuvre de l'invention concerne la méthode binaire avec balayage de gauche à droite. Avec un procédé selon l'invention, un algorithme binaire d'exponentiation sécurisée avec balayage de gauche à droite peut s'écrire de la manière suivante :-
Entrées de l'algorithme : x, r= (rm-i, rm-2, ..., r0)2
Sortie de l'algorithme : y=xr.
Entrées de l'algorithme : x, r= (rm-i, rm-2, ..., r0)2
Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, Ri. variables utilisées : i, b
Initialisation : R0 # 1 ; Ri # x ; i # m-1
Tant que il, faire : b < --. ri R0 # R0. Rri ; ri # 0 ; i # i-b
Si razz alors Ro < -Ro. Rl
Initialisation : R0 # 1 ; Ri # x ; i # m-1
Tant que il, faire : b < --. ri R0 # R0. Rri ; ri # 0 ; i # i-b
Si razz alors Ro < -Ro. Rl
<Desc/Clms Page number 12>
Retourner Ro.
Cet algorithme est un peu moins simple que le précédent, parce que dans l'algorithme de base, non protégé, avec balayage du nombre r de gauche à droite (confère description supra), l'opération indépendante de la valeur du bit du nombre r, c'est à dire la multiplication du registre Ro avec lui-même, est effectuée avant l'opération dépendante de la valeur du bit, c'est à dire la multiplication par le registre Ri qui contient x.
Dans l'exemple de mise en oeuvre de l'invention décrit ci-dessus, on conserve donc un unique test, sur la valeur du dernier bit ro du nombre r.
Cependant, si on considère une application aux systèmes cryptographiques de type RSA, la valeur de ro est toujours 1, même dans le cas où le nombre r est rendu aléatoire (contre-mesure contre les attaques de type différentiel). Ainsi, la dernière ligne de l'algorithme précédent devient une simple opération de multiplication. On a un algorithme à code constant, comme dans le premier exemple de réalisation, sécurisé implicitement contre les attaques à canaux cachés de type simple.
En outre, il est toujours possible de supprimer le test, par exemple, en remplaçant la dernière ligne de l'algorithme, par l'opération systématique suivante, utilisant la valeur du bit ro et son complément-pro pour
indexer les registres Ro et Ri : R, ro R-irO RrO Retourner Ro.
indexer les registres Ro et Ri : R, ro R-irO RrO Retourner Ro.
<Desc/Clms Page number 13>
Dans ce cas, si ro vaut 0, on effectue une multiplication inutile. On notera que dans ce cas, on perd aussi la valeur du nombre x, mémorisée initialement dans le registre Ri.
Enfin, dans certaines applications, on peut admettre un test sur le seul bit ro, selon le degré de sécurité recherché.
Les exemples qui viennent d'être donnés sont particulièrement simples à mettre en oeuvre car ils n'utilisent que deux registres de calcul, Ro et Ri et que l'on a supposé que le dispositif de calcul
autorise les calculs avec résultats en place ("result in place" dans la littérature anglo-saxonne), ce qui n'est pas toujours le cas. On entend par résultat en place, la possibilité d'écrire dans un registre le résultat d'une opération (multiplication ici) effectuée avec le contenu même de ce registre, c'est à dire des opérations du type Ro < -Ro. Ri ou Ro < -Ro. Ro
Si les opérations du type résultat en place ne sont par permises, les algorithmes précédents doivent être modifiés en conséquence. Notamment, plus de deux registres sont nécessaires.
autorise les calculs avec résultats en place ("result in place" dans la littérature anglo-saxonne), ce qui n'est pas toujours le cas. On entend par résultat en place, la possibilité d'écrire dans un registre le résultat d'une opération (multiplication ici) effectuée avec le contenu même de ce registre, c'est à dire des opérations du type Ro < -Ro. Ri ou Ro < -Ro. Ro
Si les opérations du type résultat en place ne sont par permises, les algorithmes précédents doivent être modifiés en conséquence. Notamment, plus de deux registres sont nécessaires.
Si on considère le deuxième exemple présenté cidessus d'algorithme binaire sécurisé selon l'invention, du type à balayage du nombre r de la gauche vers la droite, un algorithme correspondant dans le cas où les résultats en place ne sont pas permis, peut s'écrire :
Entrées de l'algorithme : x, r= (rm-i, rm-2,..., ro) 2
Sortie de l'algorithme : y=xr.
Entrées de l'algorithme : x, r= (rm-i, rm-2,..., ro) 2
Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, R1, R2.
Variables utilisées : i, b
<Desc/Clms Page number 14>
Initialisation : R0 # 1 ; R1 # 1 ; R2 # x ; i # m-1 ; t # 0 ;
Tant que i > l, faire : b < --iri ; t < --it R-, t- < - Rt. Pzri+tb ; ri f- 0 ; i < -i-b Rt # R~t.R2
Retourner R-, taro.
Tant que i > l, faire : b < --iri ; t < --it R-, t- < - Rt. Pzri+tb ; ri f- 0 ; i < -i-b Rt # R~t.R2
Retourner R-, taro.
On rappelle que la notation ? représente l'opération booléenne du OU exclusif (XOR en anglais).
Dans cet algorithme, à chaque itération, les registres Ro et Ri contiennent successivement le résultat de la multiplication effectuée, puisqu'à chaque itération, la variable t prend la valeur complémentaire de l'itération précédente : t < --. t.
Par ailleurs, lorsque le bit indexé ri vaut 0, alors (2ri+tb) est égal à t, (avec t = 0 ou 1, selon l'itération), et c'est une multiplication du registre Rt
avec lui-même qui est réalisée : R-, t -Rt. Rt.
avec lui-même qui est réalisée : R-, t -Rt. Rt.
Lorsque le bit indexé ri vaut 1, alors (2ri +tb) est égal à 2 et c'est une multiplication par le registre R2 qui contient x qui est effectuée : R~t # Rt. R2 (avec t = 0 ou 1, selon l'itération).
Finalement, si ro vaut 0, le résultat final est contenu dans R-, t sinon (ro=l), il faut effectuer la multiplication : R~t.R2.
On remarquera que dans cette implémentation, le dernier bit ro du nombre r n'est pas mis à zéro et le registre R2 contient toujours le nombre x à la fin du calcul d'exponentiation.
<Desc/Clms Page number 15>
Les mêmes principes peuvent être appliqués pour adapter l'algorithme donné dans le premier exemple d'implémentation à un dispositif n'acceptant pas les résultats en place.
Un quatrième exemple d'implémentation d'un algorithme d'exponentiation sécurisée selon l'invention va être donné, correspondant aux méthodes binaires signées (représentation binaire signée, notée so2, du nombre r). Ces méthodes sont plus particulièrement utilisées sur les ensembles notés additivement, tels les courbes elliptiques. En effet, il est bien connu que sur de tels ensembles, les inverses sont peu coûteux à obtenir.
Dans les méthodes binaires signées, le nombre r est donné dans une représentation binaire signée, chaque chiffre du nombre r pouvant prendre une des trois valeurs suivantes : 0, 1 ou-1, généralement codées sur deux bits, soit respectivement 00,01, 11.
Le bit de poids (rang) le plus faible est noté rL et représente la valeur du chiffre, 0 ou 1, et le bit de poids le plus élevé est noté rH et représente le signe du chiffre.
Ainsi, à chaque chiffre ri du nombre r, correspond un couple de bits (r, riL).
Dans le cas où les opérations de type résultat en place sont permises, un algorithme sécurisé selon l'invention peut s'écrire :
Entrées de l'algorithme : x, r= (ru1, rm-2,..., ro) SD2
Sortie de l'algorithme : y=xr.
Entrées de l'algorithme : x, r= (ru1, rm-2,..., ro) SD2
Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, Rl'R2.
Variables utilisées : i, b
Initialisation : Ro # 1 ; R1 # x ; R2 # x-1 ;
Initialisation : Ro # 1 ; R1 # x ; R2 # x-1 ;
<Desc/Clms Page number 16>
i # m-1 Tant que i#1, faire :
b F rit Ro < -Ro. RriH+ riL ; ri f- 0 ; i < -i-b R2 Ro. RrOn+rOL Retourner R2rOL.
b F rit Ro < -Ro. RriH+ riL ; ri f- 0 ; i < -i-b R2 Ro. RrOn+rOL Retourner R2rOL.
Cet algorithme nécessite en moyenne 4/3. m multiplications. Il peut être amélioré sur le plan de l'espace mémoire nécessaire (nombre de registres), en utilisant le même registre pour contenir x et x-1. Ceci n'est intéressant que si le passage de x à x-1 est peu coûteux, ce qui est généralement le cas avec les ensembles notés additivement, tels les courbes elliptiques.
Un exemple de mise en oeuvre de l'amélioration proposée est donné, dans le cas où les opérations de type résultat en place sont permises, par l'algorithme sécurisé suivant :
Entrées de l'algorithme : x, r= (ri1, rm-2...., ro) SD2
Sortie de l'algorithme : y=xr.
Entrées de l'algorithme : x, r= (ri1, rm-2...., ro) SD2
Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, R1, R2.
Variables utilisées : i, b, t, g
Initialisation : R1 # 1 ; R2 # x ; i < -m-1
Tant que i# 1, faire : b < --iL ; t # ~t
g- < -2. riH±it.-. rjH ; Rg- < - (Rg)' R, t'"Rt'P2riL+tb g < -2. ri, + t.-in ; Rg < - (Rg) r1 f- 0 ; i i-b
Initialisation : R1 # 1 ; R2 # x ; i < -m-1
Tant que i# 1, faire : b < --iL ; t # ~t
g- < -2. riH±it.-. rjH ; Rg- < - (Rg)' R, t'"Rt'P2riL+tb g < -2. ri, + t.-in ; Rg < - (Rg) r1 f- 0 ; i i-b
<Desc/Clms Page number 17>
g f- 2. rOH + t. roH ; Rg < - (Rg)' R-t t R2rOL+tb ; g -2. roH ±. t.-. roH ; Rg < - (Rg)'
Retourner R~t# r0L.
Dans cet algorithme, si ri=-l, alors on remplace la valeur du registre R2 par son inverse, c'est à dire x-1. Sinon, on inverse le contenu du registre qui va être réécrit. Ensuite, après la multiplication, on réécrit x dans le registre R2, et ceci, à chaque itération.
Un dernier exemple de mise en oeuvre de l'invention est donné, appliqué aux méthodes dites kaires, dans lesquels k bits du nombre r (en représentation binaire) sont traités dans une itération. Un algorithme correspondant sécurisé avec balayage de gauche à droite selon l'invention peut s'écrire :
Entrées de l'algorithme : x, r= (rm-1'rm-2,..., ro)/
Sortie de l'algorithme : y=xr.
Entrées de l'algorithme : x, r= (rm-1'rm-2,..., ro)/
Sortie de l'algorithme : y=xr.
Registres temporaires utilisés : Ro, R1, R2, Rk-
Variables utilisées : i, b, t, j Initialisation : R0 # 1 ; R1 # x ; R2 # x2 ; ...
Variables utilisées : i, b, t, j Initialisation : R0 # 1 ; R1 # x ; R2 # x2 ; ...
Rk # xk ; t # 0 ; i # m-1 ;
Tant que i#1, faire :
b < - (ri =0) ; t < -t+b ; j < -i Rof-Ro. Rri ; ri f- 0 ; i < -i- (t=k) ; t < - (j=i). t si (r0 # 0) alors R0 # R0.Rr0 Retourner Ro.
Tant que i#1, faire :
b < - (ri =0) ; t < -t+b ; j < -i Rof-Ro. Rri ; ri f- 0 ; i < -i- (t=k) ; t < - (j=i). t si (r0 # 0) alors R0 # R0.Rr0 Retourner Ro.
<Desc/Clms Page number 18>
Cet algorithme sécurisé selon l'invention, est basé sur un algorithme k-aire issu d'une généralisation classique de l'algorithme de la méthode binaire avec balayage de gauche à droite. Dans ce cas d'une généralisation k-aire, les puissances successives de x (x, x,.... Xk) sont précalculées et placées dans les registres R2, R3, Rk respectivement. Ensuite chaque chiffre ri de la représentation de l'exposant en base 2k (c'est à dire un élément de {0, 1,... 2k-1}) est balayé de la gauche vers la droite. La variable booléenne b vaut 1 lorsque le chiffre balayé est 0 et vaut 1 sinon. La variable t conserve le nombre de multiplications à effectuer pour un même chiffre balayé et la variable j est une variable qui permet de remettre la valeur de t à 0 avant le traitement d'un nouveau chiffre à balayer.
Comme dans le deuxième exemple de réalisation vu précédemment, cet algorithme n'est pas à code constant car il comprend un test sur le bit ro. Mais les remarques faites à ce sujet dans le cas du deuxième exemple s'appliquent de la même façon ici.
On comprendra que l'invention se prête à de nombreuses variantes de mise en oeuvre. En particulier, seulement quelques exemples d'application ont été donnés ici, correspondant aux méthodes d'exponentiation couramment employées. L'homme du métier saura adapter les principes de l'invention à toute méthode d'exponentiation.
La description a été donnée dans le cadre d'un dispositif électronique de type carte à puce. Il est cependant clair que les enseignements se transposent à
<Desc/Clms Page number 19>
toutes autres applications, telles que dans les terminaux informatiques, de communication sur réseau ou autre, et dans tout autre dispositif électronique qui fait appel à des calculs de codage ou de décodage.
Claims (14)
1. Procédé de sécurisation d'un calcul d'exponentiation du type y=xr, où x est un élément d'un ensemble noté de façon multiplicative et r est un nombre prédéterminé, au moins un bit ou chiffre (ri) dudit nombre r étant traité à chaque itération, un
1 index (i) sur le nombre r étant prévu, caractérisé en ce qu'à la fin de chaque itération, ledit index (i) est incrémenté ou décrémenté selon la valeur du bit ou chiffre indexé (ri) et le bit ou chiffre indexé (ri) est réécrit à zéro.
2. Procédé selon la revendication 1, au moins deux registres de calcul (Ro, R1) étant utilisés pour effectuer ledit calcul d'exponentiation, caractérisé en ce que la valeur du bit ou chiffre indexé (ri) est utilisée pour indexer au moins un des registres à utiliser dans l'itération correspondante.
3. Procédé selon la revendication 2, caractérisé en ce qu'il est mis en oeuvre dans un dispositif électronique apte à effectuer des calculs du type avec ou sans résultat en place.
4. Procédé selon la revendication 3, appliqué à un algorithme d'exponentiation selon une méthode binaire ou k-aire avec balayage des bits ou chiffres (ri) du nombre r de gauche à droite, caractérisé en ce que ledit index de registre est obtenu à partir de la valeur du bit ou chiffre indexé (ri).
5. Procédé selon la revendication 3, appliqué à un algorithme d'exponentiation selon une méthode binaire avec balayage des bits du nombre r de droite à
<Desc/Clms Page number 21>
gauche, caractérisé en ce que ledit index de registre est obtenu à partir du complément (--ri) de la valeur du bit indexé.
6. Procédé selon la revendication 3, appliqué à un algorithme d'exponentiation selon une méthode binaire signée, caractérisé en ce que ledit index de registre est obtenu selon les valeurs des bits de la représentation du chiffre indexé (ri).
7. Procédé selon la revendication 6, caractérisé en ce que le chiffre indexé est représenté par un bit de signe (riH) et un bit de valeur (ri
8. Procédé selon les revendications 6 ou 7, caractérisé en ce que le même registre est utilisé pour contenir une valeur et sa valeur inverse.
9. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que lesdits calculs d'exponentiation sont appliqués à des éléments d'un ensemble noté de façon additive.
10. Procédé selon la revendication 9, caractérisé en ce que ledit ensemble est une courbe elliptique.
11. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que le nombre r représente une clé secrète.
12. Dispositif comprenant des moyens de calcul programmés (2) et des éléments mémoire, permettant de réaliser un calcul d'exponentation du type y=xr, notamment dans l'exécution d'un algorithme cryptographique, x étant un élément d'un ensemble noté de façon multiplicative et r, un nombre prédéterminé, au moins un bit ou chiffre (ri) du nombre r étant traité à chaque itération, caractérisé en ce qu'il comprend des moyens pour indexer les bits dudit nombre
<Desc/Clms Page number 22>
r suivant un procédé selon l'une quelconque des revendications 1 à 11.
13. Carte à puce, caractérisée en ce qu'elle intègre un dispositif selon la revendication 12.
14. Système cryptographique basé sur un algorithme cryptographique faisant intervenir au moins un calcul d'exponentiation sécurisé par un dispositif selon la revendication 12.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0107472A FR2825863B1 (fr) | 2001-06-07 | 2001-06-07 | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique |
PCT/FR2002/001945 WO2002099624A1 (fr) | 2001-06-07 | 2002-06-06 | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0107472A FR2825863B1 (fr) | 2001-06-07 | 2001-06-07 | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2825863A1 true FR2825863A1 (fr) | 2002-12-13 |
FR2825863B1 FR2825863B1 (fr) | 2003-09-19 |
Family
ID=8864068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0107472A Expired - Fee Related FR2825863B1 (fr) | 2001-06-07 | 2001-06-07 | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR2825863B1 (fr) |
WO (1) | WO2002099624A1 (fr) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2838210B1 (fr) * | 2002-04-03 | 2005-11-04 | Gemplus Card Int | Procede cryptographique protege contre les attaques de type a canal cache |
US8150029B2 (en) | 2005-12-29 | 2012-04-03 | Proton World International N.V. | Detection of a disturbance in a calculation performed by an integrated circuit |
US9313027B2 (en) | 2005-12-29 | 2016-04-12 | Proton World International N.V. | Protection of a calculation performed by an integrated circuit |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000025204A1 (fr) * | 1998-10-28 | 2000-05-04 | Certicom Corp. | Cryptographie resistant aux attaques contre la signature electrique |
-
2001
- 2001-06-07 FR FR0107472A patent/FR2825863B1/fr not_active Expired - Fee Related
-
2002
- 2002-06-06 WO PCT/FR2002/001945 patent/WO2002099624A1/fr not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000025204A1 (fr) * | 1998-10-28 | 2000-05-04 | Certicom Corp. | Cryptographie resistant aux attaques contre la signature electrique |
Non-Patent Citations (1)
Title |
---|
HASAN M A: "POWER ANALYSIS ATTACKS AND ALGORITHMIC APPROACHES TO THEIR COUNTERMEASURES FOR KOBLITZ CURVE CRYPTOSYSTEMS", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 2ND INTERNATIONAL WORKSHOP, CHES 2000, WORCHESTER, MA; LECTURE NOTES IN COMPUTER SCIENCE 1965, 17 August 2000 (2000-08-17) - 18 August 2000 (2000-08-18), Springer-Verlag, Berlin, DE, pages 93 - 108, XP001027949 * |
Also Published As
Publication number | Publication date |
---|---|
WO2002099624A1 (fr) | 2002-12-12 |
FR2825863B1 (fr) | 2003-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2031792B1 (fr) | Exponentiation modulaire sécurisée avec minimisation de fuite pour cartes à puce et autres systèmes cryptographiques | |
EP0800691B1 (fr) | Procede pour la mise en oeuvre d'un protocole de communication a cle secrete entre deux dispositifs de traitement | |
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 | |
EP1358732B2 (fr) | Procede de cryptage securise et composant utilisant un tel procede de cryptage | |
EP1553490A2 (fr) | Dispositif cryptographique, procédé cryptographique, et support de stockage correspondant | |
WO2002065692A1 (fr) | Procede de securisation d'un ensemble electronique mettant en oeuvre un algorithme cryptographique utilisant des operations booleennes et des operations arithmetiques, et systeme embarque correspondant | |
JP4199937B2 (ja) | 耐タンパー暗号処理方法 | |
Abdeldaym et al. | Modified RSA algorithm using two public key and Chinese remainder theorem | |
WO2009091746A1 (fr) | Changement de représentation d'un point sur une courbe elliptique | |
EP1421473B1 (fr) | Procédé de calcul universel appliqué à des points d'une courbe elliptique | |
EP1381936A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme cryptographique du type a cle publique sur une courbe elliptique | |
FR2949886A1 (fr) | Procede de traitement cryptographique de donnees | |
WO2007104706A1 (fr) | Procede de securisation d'un calcul d'une exponentiation ou d'une multiplication par un scalaire dans un dispositif electronique | |
WO2006067057A1 (fr) | Procede d'exponentiation securisee et compacte pour la cryptographie | |
FR2825863A1 (fr) | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique | |
EP1818810B1 (fr) | Circuit et procédé pour multiplier les valeurs entières | |
KR102491902B1 (ko) | 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 | |
FR2804225A1 (fr) | Algorithme d'exponentiation modulaire dans un composant electrique mettant en oeuvre un algorithme de chiffrement a cle publique | |
EP1530753A2 (fr) | Procede de calcul universel applique a des points d'une courbe elliptique | |
FR2818846A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie | |
EP4372548A1 (fr) | Protection des opérations cryptographiques contre les attaques d'analyse par canaux latéraux horizontal | |
EP1348275B1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete | |
WO2002082257A1 (fr) | Dispositif destine a realiser des calculs d'exponentiation securisee et utilisation d'un tel dispositif | |
Montoya | Embedded lattice-based cryptography | |
WO2002093411A1 (fr) | Dispositif destine a realiser des calculs d"exponentiation appliques a des points d"une courbe elliptique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20100226 |