FR2819320A1 - Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif - Google Patents
Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif Download PDFInfo
- Publication number
- FR2819320A1 FR2819320A1 FR0100296A FR0100296A FR2819320A1 FR 2819320 A1 FR2819320 A1 FR 2819320A1 FR 0100296 A FR0100296 A FR 0100296A FR 0100296 A FR0100296 A FR 0100296A FR 2819320 A1 FR2819320 A1 FR 2819320A1
- Authority
- FR
- France
- Prior art keywords
- algorithm
- exponent
- exponentiation
- type
- execute
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/556—Logarithmic or exponential functions
-
- 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/556—Indexing scheme relating to group G06F7/556
- G06F2207/5561—Exponentiation 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)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
L'invention concerne un dispositif de calcul d'exponentiation, ainsi qu'un procédé de programmation et d'utilisation de ce dernier, avec application notamment dans le domaine de la cryptologie où l'on utilise des algorithmes cryptographiques dans des dispositifs électroniques tels que des cartes à puce.Elle met en oeuvre des moyens de calcul (2) configurés pour réaliser les calculs d'exponentiation à partir d'une chaîne d'addition-soustraction C (e) élaborée pour l'exposant e, cette chaîne d'addition-soustraction étant stockée dans une portion de mémoire (6) inscriptible après sa fabrication.De cette manière, on peut effectivement établir l'algorithme à partir des composantes de la chaîne d'addition-soustraction, par programmation après fabrication, sans modifier la partie de calcul d'exponentiation qui peut être figée dans une mémoire masque. On diminue ainsi les risques d'avoir à procéder un remasquage.
Description
<Desc/Clms Page number 1>
DISPOSITIF DESTINE A REALISER DES CALCULS D'EXPONENTIATION, ET PROCEDE DE PROGRAMMATION ET
D'UTILISATION DU DISPOSITIF
La présente invention concerne un dispositif de calcul d'exponentiation, ainsi qu'un procédé de programmation et d'utilisation de ce dernier, avec application notamment dans le domaine de la cryptologie où l'on met en oeuvre des algorithmes cryptographiques dans des dispositifs électroniques tels que des cartes à puce.
D'UTILISATION DU DISPOSITIF
La présente invention concerne un dispositif de calcul d'exponentiation, ainsi qu'un procédé de programmation et d'utilisation de ce dernier, avec application notamment dans le domaine de la cryptologie où l'on met en oeuvre des algorithmes cryptographiques dans des dispositifs électroniques tels que des cartes à puce.
De nombreux algorithmes cryptographiques sont basés sur des calculs d'exponentiation du type R = xe, où x et e sont des nombres prédéterminés qui codent une valeur R. Ceci est notamment le cas avec l'algorithme du type RSA (Rivert, Shamir et Adleman). La valeur R peut correspondre par exemple à un texte chiffré, un code confidentiel, une clé publique ou privée de cryptage ou de décryptage, etc.
Un dispositif électronique prévu pour exécuter un tel algorithme doit contenir en mémoire d'une part la partie exécutoire pour élever x à la puissance de e, et d'autre part les valeurs x et e.
Dans l'art antérieur, lorsque l'on doit effectuer une telle exponentiation, on utilise différents types d'algorithmes possibles : la méthode dite d'élever au carré et multiplier, connu sous le terme anglo-saxon de "square and multiply" (SAM), la méthode M, M3, des fenêtres glissantes, etc. Chaque fois qu'une telle méthode est mise en oeuvre, elle est intégralement codée en dur. Cela veut dire qu'elle est codée suivant une technique de masquage en mémoire non réinscriptible du type ROM ("read-only memory"en anglais), et ensuite exécutée. On rappelle qu'une ROM
<Desc/Clms Page number 2>
masque est une mémoire dont les données enregistrées sont physiquement inscrites lors de la réalisation matérielle du microcircuit, au niveau de la conception des masques utilisés pour la fabrication.
Ces algorithmes sont complexes et leurs programmes d'exécution ne sont pas toujours totalement vérifiables avant une série de tests réalisés directement à partir de la ROM masque en fin de fabrication. S'il s'avère que le programme est erroné pour une raison ou une autre, les corrections nécessaires entraînent une révision complète de l'ensemble des masques utilisés pour la fabrication de la ROM. Ce"remasquage"implique des surcoûts considérables tant en ressources industrielles qu'en temps de développement d'une nouvelle mémoire.
Au vu de ce problème, un objet de l'invention est de permettre de décomposer un algorithme, notamment pour la cryptographie, en une partie constante, relativement simple à programmer, et une partie variable en fonction de la valeur codée et d'un paramétrage de l'algorithme. Cette disposition permet de stocker la partie constante dans une ROM masque pour bénéficier de l'avantage de cette technologie, et la partie variable dans une mémoire ré-inscriptible, ou tout simplement programmable après sa fabrication. On réduit donc considérablement les risques d'erreurs au niveau de la partie ROM masque. En cas d'erreur dans le paramétrage de l'algorithme, ou en cas de changement de la clé, il suffit seulement de reprogrammer la mémoire ré-inscriptible. Cette opération n'intervient que sur le plan fonctionnel, s'agissant par exemple seulement de modifier un programme devant être chargé dans la mémoire.
Plus particulièrement, l'invention concerne, selon un premier aspect, un dispositif destiné à
<Desc/Clms Page number 3>
réaliser des calculs d'exponentiation du type R = xe où x et e sont des nombres prédéterminés, comprenant des moyens de calcul et des moyens de mémorisation, caractérisé en ce que les moyens de calcul sont configurés pour réaliser les calculs d'exponentiation à partir d'une chaîne d'addition-soustraction C (e) élaborée pour l'exposant e, et en ce que la chaîne d'addition-soustraction C (e) est stockée dans une portion de mémoire inscriptible après sa fabrication, par exemple une mémoire du type électriquement programmable (EPROM) ou du type électriquement programmable et effaçable (EEPROM).
Les moyens de calcul peuvent être configurés pour exécuter ledit calcul d'exponentiation, à partir de ladite chaîne d'addition-soustraction C (e), suivant un algorithme d'exponentiation stocké dans une portion de mémoire du type mémoire figée codée par masquage (ROM masque).
Les moyens de calcul peuvent être configurés pour exécuter un algorithme d'exponentiation du type universel à partir de la chaîne d'addition-soustraction présentée sous la forme C (e) = {e, e (l),..., e (r)}, avec la condition e = = e (j pour tout 1 i sr, dans laquelle à l'étape i, on évalue une multiplication x exposant e (i) = x exposant e(j(i)), x exposant (k(i)), le dispositif comprenant des premier et deuxième registres Ra (i) et Rss (i) respectivement pour le stockage des valeurs de x exposant e et de x exposant e, et un troisième registre Rj.) pour le stockage du résultat de ladite multiplication.
Dans ce cas, l'exposant e peut-être représenté par la séquence de registres suivante :
r (e) = { (y (i) : a (i), ss (i))} i. < = , signifiant que Ry (i) = Ra (i). Rss (i), les moyens de calcul
r (e) = { (y (i) : a (i), ss (i))} i. < = , signifiant que Ry (i) = Ra (i). Rss (i), les moyens de calcul
<Desc/Clms Page number 4>
étant configurés pour exécuter l'algorithme d'exponentiation (pour e > l) :
Initialiser Ra (i) < -x ; Ra (i) -x
pour i = 1 à r, exécuter Ry (i) F R (i). Rss (i) émettre en sortie R = RY (r)-
Les moyens de calcul peuvent aussi être configurés pour exécuter un algorithme d'exponentiation du type universel à partir d'une chaîne d'additionsoustraction du type étoile (en anglais"star chains"), présentée sous la forme C (e) = {e(0),e(1),...,e(r)} avec la condition e (i) = e ') + e (k (i)), pour tout 1 < i r, le dispositif comprenant un premier registre Rss (i) et un second registre Ry (i) pour représenter e, avec la condition a (i) = y (i-l) pour tout 1 i r.
Dans ce cas, les moyens de calcul peuvent être configurés pour réaliser une séquence de registres
donnée par : dz (e) = { (y (i) : B (i))} 1 : ; s rf et pour exécuter l'algorithme d'exponentiation :
Initialiser Ry (o) < -x ; Ra (i) -x
pour i = 1 à r, exécuter
Ry (i) F (i-l). Rss (i)
émettre en sortie R = R, (r).
donnée par : dz (e) = { (y (i) : B (i))} 1 : ; s rf et pour exécuter l'algorithme d'exponentiation :
Initialiser Ry (o) < -x ; Ra (i) -x
pour i = 1 à r, exécuter
Ry (i) F (i-l). Rss (i)
émettre en sortie R = R, (r).
Ainsi, les moyens de calcul peuvent par exemple être utilisés pour effectuer un algorithme selon une méthode binaire avec la représentation binaire de e donnée par e = (et-i,..., eO) 2 et en réalisant un balayage de l'exposant e de la droite vers la gauche pour obtenir l'expression
xe = (xr (x''r (x... (x'"')'-'.
xe = (xr (x''r (x... (x'"')'-'.
Dans un mode de réalisation, le dispositif utilise pour cet algorithme un premier registre (Rl) destiné à contenir les valeurs successives de x et un registre courant (RO), les moyens de calcul étant
<Desc/Clms Page number 5>
actifs pour exécuter un algorithme d'exponentiation"de droite à gauche" :
RO < -1 ; Rl < -x
pour i = 0 à (t-1), exécuter si (ei = 1), alors RO < -RO. R1 Rl v R12 émettre en sortie R = RO.
RO < -1 ; Rl < -x
pour i = 0 à (t-1), exécuter si (ei = 1), alors RO < -RO. R1 Rl v R12 émettre en sortie R = RO.
Les moyens de calcul peuvent aussi effectuer un algorithme selon une méthode binaire avec la représentation binaire de e donnée par e = (et-i,..., eO) 2 et en réalisant un balayage de l'exposant e de la
gauche vers la droite pour obtenir l'expression xe = (... ( (x'-')'x) 2.. xe') 2x.
gauche vers la droite pour obtenir l'expression xe = (... ( (x'-')'x) 2.. xe') 2x.
Dans un mode de réalisation, le dispositif utilise pour cet algorithme un premier registre (R1) et un registre courant (RO), les moyens de calcul étant
actifs pour exécuter un algorithme d'exponentiation"de gauche à droite" :
RO < -1 ; RI < -x
pour i = (t-1) en descendant à 0, exécuter
RO ± RO2
si (ei = 1) alors RO < -RO. R1 émettre en sortie R = RO.
actifs pour exécuter un algorithme d'exponentiation"de gauche à droite" :
RO < -1 ; RI < -x
pour i = (t-1) en descendant à 0, exécuter
RO ± RO2
si (ei = 1) alors RO < -RO. R1 émettre en sortie R = RO.
Un autre exemple d'utilisation des moyens de calcul consiste à effectuer un algorithme selon une méthode 2k-aire, où on traite un nombre k de bits à chaque itération.
Dans un mode de réalisation, les moyens de calcul sont alors prévus pour réaliser le précalcul des
valeurs de x2-pour tout 1 j (2-1), le dispositif comprenant un premier, deuxième et troisième registres (RI, R2 et R3), les moyens de calcul étant actifs pour exécuter un algorithme d'exponentiation selon une méthode quaternaire, avec k = 2 :
Précalculer x3
valeurs de x2-pour tout 1 j (2-1), le dispositif comprenant un premier, deuxième et troisième registres (RI, R2 et R3), les moyens de calcul étant actifs pour exécuter un algorithme d'exponentiation selon une méthode quaternaire, avec k = 2 :
Précalculer x3
<Desc/Clms Page number 6>
RO < -1, RI < < -x ; R2 < -x3 ;
pour i = 2[log4 e] en descendant à 0 par sauts de - 2, exécuter cas (ei+,, ei) de
(0, 0) : RO < -RO ; RO < -R02 (0, 1) : RO ± R02 ; RO < -RO2 ; RO < -RO. R1 (j 0). Ro < ~ R02 2 (1, 0) : RO f-RO2 RO < -RO. R1 ; RO < -RO (1, 1) : RO ±RO2 ; RO ±RO2 ; RO ±RO. R2
Emettre en sortie R = RO. Avantageusement, le dispositif est mis en oeuvre dans un système cryptographique basé sur un algorithme cryptographique faisant intervenir au moins une exponentiation du type R = xe, s'agissant par exemple d'un algorithme du type Rivert, Shamir, Adleman (RSA).
Selon le mode de mise en oeuvre choisi, la chaîne d'addition-soustraction peut être simplement une chaîne
d'additions présentée sous la forme : C (e) {e' ', e'",..., e'"}, avec la condition e'"= e"""+ e (k (l)), pour tout 1 i < r.
d'additions présentée sous la forme : C (e) {e' ', e'",..., e'"}, avec la condition e'"= e"""+ e (k (l)), pour tout 1 i < r.
Selon un deuxième aspect, l'invention concerne une carte à puce, caractérisée en ce qu'elle intègre un dispositif du type précité.
Selon un troisième aspect, l'invention concerne l'utilisation d'un dispositif du type précité pour réaliser un calcul d'exponentiation, notamment dans l'éxécution d'un algorithme cryptographique.
Selon un quatrième aspect, l'invention concerne un dispositif de calcul d'exponentiation du type R = xe où x et e sont des nombres prédéterminés, utilisant des moyens de calcul et des moyens de mémorisation destinés à stocker un algorithme d'exponentiation, caractérisé en ce qu'il comprend les étapes de : - sélectionner une valeur d'exposant e ; - exprimer la valeur de l'exposant e par une chaîne d'addition-soustraction C (e) choisie ;
<Desc/Clms Page number 7>
- inscrire ladite chaîne d'addition-soustraction dans une portion de moyens de mémorisation qui est inscriptible après sa fabrication.
Les caractéristiques optionnelles présentées dans le cadre du dispositif précité s'appliquent mutatis mutandis à ce procédé.
Selon un cinquième aspect, l'invention concerne l'utilisation du procédé précité pour la mise en oeuvre dans un système de cryptographie basé sur un algorithme de cryptographie faisant intervenir au moins une exponentiation du type R = xe.
L'invention et les avantages qui en découlent apparaîtront plus clairement à la lecture de la description qui suit d'un mode de réalisation préféré, donné purement à titre d'exemple non-limitatif, 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.
Avant d'aborder la mise en oeuvre matérielle de l'invention, il sera décrit les caractéristiques des calculs d'exponentiation au moyen de chaînes d'addition-soustraction utilisées dans ce cadre par les algorithmes cryptographiques. L'exponentiation est du type R = xe, où x est un nombre prédéterminé et e est un entier qui correspond, par exemple, à une clé privée.
Une chaîne d'addition-soustraction permet d'arriver au résultat R de l'exponentiation par des successions de multiplications entre des paires de nombres préalablement calculés ou induits, ces nombres étant eux-mêmes égaux à x élevé à une puissance inférieure à e. Plus particulièrement, on exploite le fait que pour deux nombres a et b choisis pour que a + b = e, la valeur de xe peut s'exprimer comme xa. xb.
<Desc/Clms Page number 8>
L'objet de la chaîne d'additions est de produire une suite de nombres, à partir de 1, destinés à servir d'indices de puissance de sorte que le calcul d'élévation de x à ces indices soit réalisable en multipliant des résultats de calculs précédents.
Un cas particulier des chaînes d'additionsoustraction est la chaîne d'additions. Celle-ci est une suite qui a la propriété que chacun de ses éléments est la somme de deux éléments précédents. Le premier élément de la suite vaut 1, et le dernier élément est égal à l'exposant e.
Pour calculer la valeur xe, on peut donc établir une chaîne d'additions pour l'exposant e (quelque chose qui passe de 1 à e). Or, puisque chaque élément i (hormis le premier) de cette chaîne est égal à deux éléments précédents, on a toujours xe (i) = xe(j(i)).xe(k(i)), en posant la condition que e (i) = e (j (i) ) + e (k (i)).
Dans un langage plus formel, une chaîne d'additions pour un nombre e est définie comme la séquence C (e) = {e, e,..., e}, qui satisfait les conditions :
(Cl) e (o) = 1, e (r) = e, et (C2) pour tout 1 < i r, il existe j (i), k (i) < i de sorte que e (i) = e + e .
(Cl) e (o) = 1, e (r) = e, et (C2) pour tout 1 < i r, il existe j (i), k (i) < i de sorte que e (i) = e + e .
On peut ainsi aisément obtenir R = xe en calculant pour i = 1 à r : x puissance e = x puissance e(j(i)). x puissance e (k (, et en fixant R = x puissance e (r).
Par exemple, pour e = 5, on peut élaborer la chaîne d'additions C (5) = {1, 2,3, 5}. Cette chaîne commence par 1 et se termine par 5, et chaque élément de la suite est égal à la somme de deux éléments précédents. Par exemple, le nombre 2 est formé par 1+1, 3 est formé par 2+1,5 est formé par 3+2. Pour
<Desc/Clms Page number 9>
calculer x exposant 5, on calcule d'abord xl, ensuite 2 1 1 x2 en prenant x. xl, l'indice 2 étant formé par la somme 1+1. On calcule ensuite x3 en prenant la somme 2 1 des indices 1 et 2, donnant x2. x, et enfin on calcule x5 en prenant la somme des indices 3 et 2, donnant 3 2 x3. x2.
Le calcul d'exponentiation est alors réalisé 1 2 1 1 3 2 1 avec : x = x, x2 = xl. x\ x3 = x2. x\ et enfin in = 3 2 x3. x2.
Une fois que l'on dispose d'une chaîne d'addition, l'algorithme pour calculer x exposant e est rendu plus facile. Il suffit de parcourir la chaîne en multipliant simplement.
Une forme plus générale de la chaîne est la chaîne dite d'addition-soustraction, où chaque élément e (i) de la suite est égal à plus ou moins un élément précédent e (j), plus ou moins un autre élément e (k). On peut donc prendre en compte soit un élément, soit son opposé.
Il existe une variante, dénommée chaîne étoile, qui est une chaîne d'additions telle que chaque élément e est égal à l'élément immédiatement précédent e (i-l) plus un autre élément précédent e (k). Le cas ci-dessus pour c (5) est donc un exemple de chaîne étoile.
L'exponentiation avec une telle chaîne permet de mettre en oeuvre un algorithme dit d'élever au carré et multiplier, dénommé ci-après SAM (de l'anglais"square- and-multiply").
De ce qui précède, on constate que chaque algorithme a une chaîne d'additions correspondante.
Autrement dit, la chaîne d'additions, de par le choix des valeurs intermédiaires qui la constituent, donne un algorithme. Ainsi, d'autres algorithmes issus de chaînes d'additions différentes peuvent être utilisés pour parvenir à un même résultat de calcul. Par
<Desc/Clms Page number 10>
5 exemple, dans le cas précédent de x5, on peut aussi prendre les valeurs 1, 2, 4 et 5. Cela donne lieu à une autre chaîne d'additions, et donc à un autre algorithme. Plus l'exposant est grand, plus les possibilités d'envisager d'autres algorithmes sont importantes.
Avantageusement, on utilise la notation multiplicative. En notation additive, l'exponentiation devient une multiplication. Cette notion est particulièrement avantageuse pour la cryptographie basée sur les courbes elliptiques lorsqu'on sait que les points d'un groupe elliptique forment un groupe additif, c'est-à-dire abélien.
La figure 1 représente sous forme de schéma bloc un dispositif 1 programmé conformément à l'invention, en l'occurrence une carte à puce destinée à exécuter un programme cryptographique. Le dispositif met en oeuvre une chaîne d'additions C (e) stockée dans une portion de mémoire ré-inscriptible, et l'algorithme de multiplication est stocké dans une mémoire ROM masque. Ce dernier peut être basé sur un algorithme RSA (Rivert, Shamir et Adleman) qui implique un calcul d'exponentiation du type R = xe, où x est une valeur prédéterminée et e est un nombre entier qui constitue une clé. Le nombre R ainsi obtenu constitue une donnée chiffrée, déchiffrée, signée ou vérifiée.
A cette fin, le dispositif 1 réunit dans une puce des moyens programmés pour l'exécution de calculs (moyens de calcul), composé d'une unité centrale (UC) 2 reliée fonctionnellement à un ensemble de mémoires dont : - une mémoire accessible en lecture seulement, du type ROM masque 4, aussi connue sous l'appellation anglaise"mask read-only memory (mask ROM)",
<Desc/Clms Page number 11>
- une mémoire reprogrammable électriquement, du type EEPROM 6 (de l'anglais"electrically erasable programmable ROM"), et - une mémoire accessible en lecture et en écriture du type RAM 8 (de l'anglais"random access memory").
L'ensemble de ces mémoires 4,6 et 8, ainsi que l'unité centrale 2, peuvent être réalisés sur une seule puce.
L'unité centrale 2 est également 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 être sous forme de plots sur la carte pour une connexion dite"à contact"avec un lecteur, et/ou d'une antenne dans le cas d'une carte dite"sans contact".
L'une des fonctions des moyens de calcul 1 est de crypter et de 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 au calcul d'une signature numérique ou de sa vérification.
A cette fin, l'unité centrale 2 exécute l'algorithme cryptographique à partir de données de programmation qui, conformément à l'invention, sont stockées dans les parties ROM masque 4 et EEPROM 6.
Dans la mémoire EEPROM 6 est inscrite la chaîne d'additions C (e), qui servira dans sa fonction générale à extraire les multiplicandes successifs à l'algorithme de multiplication contenu dans la ROM masque 4 et, dans sa fonction de codage, à coder l'algorithme
<Desc/Clms Page number 12>
d'exponentiation par les choix spécifiques des valeurs intermédiaires e pour cette chaîne.
Selon cette approche, une fois que l'on dispose d'une chaîne d'additions en dehors de la ROM masque 4, il est seulement nécessaire de coder dans cette dernière un algorithme universel d'exponentiation, qui est basé sur de simples règles de multiplication, et la valeur de x. De la sorte, la programmation de la partie ROM masque 4 est aisée et comporte peu de risques d'erreur.
Un tel algorithme de multiplication se définit comme suit. soit une chaîne d'additions
C (e) {e, e,..., e} qui est fournie à partir de la portion EEPROM 6 pour un exposant e. Ainsi, pour tout 1 : 9 i : gr, ona e (ì) = e e < . A l'étape i, on évalue x exposant e = x exposant e. x exposant < < ). on suppose que x exposant e et x exposant e (i)) appartiennent respectivement à des premier et deuxième registres Ra (i) et Rss (i), et que le résultat est inscrit dans un troisième registre Ry (i). Ces registres peuvent être contenus dans la partie RAM 8.
C (e) {e, e,..., e} qui est fournie à partir de la portion EEPROM 6 pour un exposant e. Ainsi, pour tout 1 : 9 i : gr, ona e (ì) = e e < . A l'étape i, on évalue x exposant e = x exposant e. x exposant < < ). on suppose que x exposant e et x exposant e (i)) appartiennent respectivement à des premier et deuxième registres Ra (i) et Rss (i), et que le résultat est inscrit dans un troisième registre Ry (i). Ces registres peuvent être contenus dans la partie RAM 8.
Il sera maintenant décrit un exemple de codage de la représentation en chaîne d'additions. La chaîne
doit permettre d'exprimer non seulement les valeurs de calcul, mais aussi comment on y aboutit, c'est-à-dire le chemin qui permet d'arriver à ces valeurs.
doit permettre d'exprimer non seulement les valeurs de calcul, mais aussi comment on y aboutit, c'est-à-dire le chemin qui permet d'arriver à ces valeurs.
De manière remarquable, lorsque l'on réalise des multiplications, on déclare simplement qu'un registre contient le produit des deux autres. Par exemple, à l'étape de calcul du iième élément de la chaîne
d'additions, le registre Rr (i) sera déclaré comme étant égal au contenu du registre Ra (i) fois le contenu du registre Rss (i). L'avantage est que si on dispose, par
d'additions, le registre Rr (i) sera déclaré comme étant égal au contenu du registre Ra (i) fois le contenu du registre Rss (i). L'avantage est que si on dispose, par
<Desc/Clms Page number 13>
exemple, de quatre registres, seulement deux bits sont nécessaires pour coder chacun des registres.
L'algorithme va alors transmettre les valeurs aux registres Rγ(i), Rα(i) et Rss(i).
L'exposant e peut donc être représenté par la séquence de registre suivante :
r (e) = { (y (i) : a (i), B (i))} i < i < r, ce qui veut dire que y (i) = Rc ( (i)-RB (i)' Par convention, la valeur e=l est représentée par F (l) = {}.
r (e) = { (y (i) : a (i), B (i))} i < i < r, ce qui veut dire que y (i) = Rc ( (i)-RB (i)' Par convention, la valeur e=l est représentée par F (l) = {}.
De ce qui précède, on obtient l'algorithme d'exponentiation suivant (pour e > l) :
Initialiser Ra (l) f-x ; Rss (i) x
pour i = 1 à r, exécuter
Ry (i) Rot (i). RB (i)
émettre en sortie R = Ry (r)' Cet algorithme est désigné algorithme universel d'exponentiation.
Initialiser Ra (l) f-x ; Rss (i) x
pour i = 1 à r, exécuter
Ry (i) Rot (i). RB (i)
émettre en sortie R = Ry (r)' Cet algorithme est désigné algorithme universel d'exponentiation.
On note que Ra (i) et Rss (l) sont initialisés avec la valeur x, car le deuxième terme de chaque chaîne d'additions est toujours e = 2. On note également que l'on peut avoir a (1) = ss (l), et plus généralement a (i) = ss (i).
Si on veut économiser de l'espace mémoire, on peut utiliser des chaînes étoiles, car dans ces dernières il est préétabli par convention que le contenu du registre Ra (i) est égal au contenu au stade précédent du registre Ry (i-l). L'exploitation de cette identité des contenus autorise un gain d'espace d'environ 1/3.
Pour des chaînes étoiles, on a donc la condition e(i) = e(i-1) + e(k(i)). Dans ce cas, il suffit de prévoir des paires de registres pour représenter e, en posant la condition a (i) = y (i-1) pour tout 1 < i < r.
La séquence de registres est donc donnée par : r* (e) = {(γ (i) : ss (i))} i < i. .
<Desc/Clms Page number 14>
L'algorithme d'exponentiation correspondant est :
Initialiser Ry/o) x ; R (i) < -x
pour i = 1 à r, exécuter
Ry (i) R7 (i-l). R3 (i)
émettre en sortie R = Ry(r)Les principes de l'invention peuvent s'appliquer à tous types d'algorithmes d'exponentiation, notamment les méthodes"binaires"et du type 2k-aire.
Selon la méthode binaire, on effectue un balayage de l'exposant de la droite vers la gauche. Soit e = (etc,..., 0) 2 la représentation binaire de e.
On peut donc écrire : x = X.) O (X-) I (X-) 2. (x 1-1.
Un registre de la mémoire RAM 8 (que l'on désignera RI) contient les valeurs successives de 22 x, et lorsque ei = 1, la valeur du contenu de ce registre est multipliée dans le registre courant (que l'on désignera Rad), également dans la mémoire RAM 8.
L'algorithme d'exponentiation"de droite à gauche"s'exprime alors comme suit :
RO < -1 ; RI < -x
pour i = 0 à (t-1), exécuter si (ei = 1), alors RO < -RO. R1
Rl F R12
émettre en sortie R = RO.
RO < -1 ; RI < -x
pour i = 0 à (t-1), exécuter si (ei = 1), alors RO < -RO. R1
Rl F R12
émettre en sortie R = RO.
A titre d'exemple, supposons que e = 87 = (1, 0, 1, 0, 1, 1, 1) 2. Une chaîne d'additions qui correspond à l'algorithme"de droite à gauche" est Cdg2 (87) = {1, 2,3, 4,7, 8,16, 23,32, 64, 87}. En utilisant la représentation
r (e) = { (y (i) : a (i), B (i))} i. < , on a rdg2 (87) = { (O : 0, 1), (1 : 1, 1), (0 : 0, 1), (1 : 1, 1), (0 : 0, 1), (1 : 1, 1), (1 : 1, 1), (0 : 0, 1), (1 : 1, 1), (0 : 0, 1)}, où RO et RI où RO et Rl sont tous les deux initialisés à x.
r (e) = { (y (i) : a (i), B (i))} i. < , on a rdg2 (87) = { (O : 0, 1), (1 : 1, 1), (0 : 0, 1), (1 : 1, 1), (0 : 0, 1), (1 : 1, 1), (1 : 1, 1), (0 : 0, 1), (1 : 1, 1), (0 : 0, 1)}, où RO et RI où RO et Rl sont tous les deux initialisés à x.
Une autre façon de calculer R = xe consiste à balayer les bits de e de gauche à droite.
<Desc/Clms Page number 15>
L'algorithme qui en résulte est la méthode SAM (élever au carré et multiplier). Cet algorithme découle de l'expression : X = (... ( (X) 'X2) 2... XX.
L'algorithme d'exponentiation SAM s'exprime alors comme suit :
RO < -1 ; RI < -x
pour i = (t-1) en descendant à 0, exécuter RO < -RO2
i si (e = 1) alors RO < -RO. R1
émettre en sortie R = Ru.
RO < -1 ; RI < -x
pour i = (t-1) en descendant à 0, exécuter RO < -RO2
i si (e = 1) alors RO < -RO. R1
émettre en sortie R = Ru.
Toujours avec le même exemple, une chaîne d'additions correspondante pour e = 87 est donnée par Cgd2 (87) = {1, 2, 4, 5, 10, 20, 21, 42, 43, 86, 87}. Du fait que les algorithmes SAM produisent des chaînes d'additions de type étoile, on peut utiliser la représentation étoile r* (e) = { (y (i) : ss (i))} 1 l 1 : 5 i : g ri et ainsi obtenir r*gd2 (87) = { (0 : 0), (0 : 0), (0 : l), (0 : 0), (0 : 0), (0 : l), (0 : 0), (0 : 1), (0 : 0), (0 : 1)}, où RO et R1 sont tous les deux initialisés à x.
Selon la méthode 2k-aire, on traite un nombre k de bits à chaque itération. Il est à noter que dans ce cas, l'algorithme"de gauche à droite"a un meilleur rendement, car c'est seulement dans ce sens que l'on peut utiliser des valeurs précalculées.
Pour tout 1 j (2k-l - 1), on précalcule les valeurs de x2j+l et on les mémorise dans des registres. Il n'est pas nécessaire de précalculer les puissances paires, puisqu'elles peuvent être incorporées dans les opérations d'élever au carré.
L'algorithme pour k = 2 selon la méthode quaternaire est la suivante : Précalculer x3
RO < -1, RI < -x ; R2 < -x3 ;
RO < -1, RI < -x ; R2 < -x3 ;
<Desc/Clms Page number 16>
pour i = 2 [log4 e] en descendant à 0 par sauts de - 2, exécuter cas (ei+,, ei) de
(0, 0) : RO < -RO2 ; RO < -RO2 (0, 1) : RO < -RO2 ; RO < -RO2 ; RO < -RO. R1 (1, 0) : RO < -RO2 ; RO < -RO. R1 ; RO < -RO2 (1, 1) : RO < -RO2 ; RO < -RO2 ; RO < -RO. R2
Emettre en sortie R = RO Cet algorithme nécessite (11/8) log2 (e) = 1, 3751zog2 (e) multiplications en moyenne, comparé à 1, 51sog2 (e) multiplications en moyenne pour l'algorithme SAM d'élever au carré et multiplier. Il est cependant possible de diminuer la complexité à (4/3) log2 (e) = 1, 3331log2 (e) multiplications en moyenne. La méthode est due à Yacobi et est désignée l'algorithme (M, M3).
Pour e = 87, la méthode d'exponentiation
quaternaire donne Cgd4 (87) = {1, 2, 4, 5, 10, 20, 21, 42, 84, 87}, et donc r gd4 (87) = { (0 : 0), (0 : 0), (0 : 1), (0 : 0), (0 : 0), (0 : 1), (0 : 0), (0 : 0), (0 : 2)} ; où RO et Rl sont 3 initialisés à x, et R2 est initialisé à x3.
quaternaire donne Cgd4 (87) = {1, 2, 4, 5, 10, 20, 21, 42, 84, 87}, et donc r gd4 (87) = { (0 : 0), (0 : 0), (0 : 1), (0 : 0), (0 : 0), (0 : 1), (0 : 0), (0 : 0), (0 : 2)} ; où RO et Rl sont 3 initialisés à x, et R2 est initialisé à x3.
On comprendra de l'ensemble de la description du mode de réalisation, que ce qui est codé dans la portion ROM masque 4 est un algorithme qui parcourt une chaîne (ou suite) contenue par exemple dans la portion EEPROM 6 qui multiplie simplement les éléments donnés par celle-ci. Ce type d'algorithme est très facile à programmer en ROM masque 4. Ce qui est mis en EEPROM 6 est non pas la clé (c'est-à-dire l'exposant), ce qui est fait habituellement, mais une représentation de cette clé par une chaîne d'additions spécifique. En cas d'erreur dans l'élaboration ou dans la programmation de la chaîne, ou encore de modification de la clé, il suffit de programmer les nouvelles données qui conviennent dans la portion EEPROM 6
<Desc/Clms Page number 17>
seulement. En effet, une erreur d'algorithme inscrit dans la mémoire EEPROM équivaudrait à une erreur dans l'écriture d'une chaîne d'additions. Le programme de multiplication stocké dans la portion ROM masque 4 reste inchangé.
Ce codage dans la chaîne d'additions en mémoire ré-inscriptible est donc avantageux par rapport à la technique habituelle de mettre l'intégralité de l'algorithme (par exemple du type SAM) en ROM masque, ce qui oblige de procéder à un remasquage en cas d'erreur. Par ailleurs, l'algorithme SAM utilisé classiquement dans ces conditions est relativement difficile à mettre en oeuvre, notamment en raison des contremesures à installer, ce qui augmente le risque d'erreur.
Dans le mode de réalisation préféré, au lieu de coder la clé sous sa forme binaire, on garde en mémoire sa représentation sous forme de triplets. On parcourt la chaîne et on multiplie le premier registre au second, et on met le résultat dans le troisième. Ceci est sensiblement tout ce qu'il y a d'exécutoire de programmé dans le dispositif, par exemple la carte à puce, pour réaliser de l'exponentiation. Avec cette approche, il est possible de mettre en oeuvre n'importe quel algorithme : il suffit de changer la chaîne d'additions de manière correspondante. Donc, le remasquage de la partie ROM masque 4 n'est pas nécessaire dans de tels cas.
Par ailleurs, le temps d'exécution est beaucoup plus rapide car la chaîne d'additions peut être traitée par des algorithmes efficaces, permettant de descendre à 1,3 voire 1, 2x n multiplications, pour un module de n bits.
Lorsque l'on utilise pour la clé (c'est-à-dire l'exposant) codée non pas sa représentation binaire,
<Desc/Clms Page number 18>
mais une suite de registres, on peut prendre pour exposant une chaîne plus courte, ce qui implique une plus grande rapidité d'exécution de l'algorithme d'exponentiation.
En plus, l'invention peut servir de protection contre les attaques dites SPA (de l'anglais"simple power analysis"), ou de manière plus générale contre les attaques dites SSLA (de l'anglais"simple secretleakage analysis").
Par ailleurs, la diversité des chemins de calcul d'exponentiation pour une valeur de e donnée, grâce au choix des valeurs intermédiaires e (i) dans les chaînes d'additions, permet d'éviter des attaques dites "différentielles". Ces attaques sont basées par exemple sur une analyse de la moyenne du courant consommé par une unité centrale. En effet, le calcul de xe, typiquement employé pour le codage RSA, peut être réalisé à chaque fois d'une façon différente, ce qui ne permet pas de réaliser des moyennes sur des éléments similaires. Or, l'attaque nécessite de calculer cette moyenne, sinon on obtient seulement une moyenne sur du bruit et l'information disparaît.
On comprendra que l'invention se prête à de nombreuses variantes, tant au niveau des modes de réalisation matériels que de l'élaboration des algorithmes et de leurs chaînes d'additions.
La description est donnée dans le cadre d'un processeur intégré dans une carte à puce. Il est cependant clair que les enseignements se transposent à 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 (29)
- REVENDICATIONS 1. Dispositif (1) destiné à réaliser des calculs d'exponentiation du type R = xe, où x et e sont des nombres prédéterminés, comprenant des moyens de calcul (2) et des moyens de mémorisation (4,6, 8), caractérisé en ce que les moyens de calcul (2) sont configurés pour réaliser les calculs d'exponentiation à partir d'une chaîne d'addition-soustraction C (e) élaborée pour l'exposant e, et en ce que ladite chaîne d'addition-soustraction C (e) est stockée dans une portion de mémoire (6) inscriptible après sa fabrication.
- 2. Dispositif selon la revendication 1, caractérisé en ce que ladite chaîne d'addition-soustraction C (e) est stockée dans une portion de mémoire figée inscriptible, du type électriquement programmable (EPROM) (6).
- 3. Dispositif selon la revendication 1, caractérisé en ce que ladite chaîne d'addition-soustraction C (e) est stockée dans une portion de mémoire figée réinscriptible, du type électriquement programmable et effaçable (EEPROM) (6).
- 4. Dispositif selon l'une quelconque des revendications 1 à 3, caractérisé en ce que les moyens de calcul (2) sont configurés pour exécuter ledit calcul d'exponentiation, à partir de ladite chaîne d'additionsoustraction C (e), suivant un algorithme d'exponentiation stocké dans une portion de mémoire (4) du type mémoire figée codée par masquage (ROM masque).
- 5. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les moyens de calcul (2)<Desc/Clms Page number 20>sont configurés pour exécuter un algorithme d'exponentiation du type universel à partir de ladite chaîne d'addition-soustraction présentée sous la forme C (e) = {e (O)/e (l),..., e (r)}, avec la condition e (i) = + e (-)) e, pour tout 1 i < r, dans lequel à l'étape i, on évalue une multiplication x exposant e (ì) = x exposant e. x exposant e, le dispositif comprenant un premier et deuxième registres Ra (i) et Rss (i) respectivement pour le stockage des valeurs de x exposant e et de x exposant e (k (i 1 et un troisième registre Ry (i) pour le stockage du résultat de ladite multiplication.
- 6. Dispositif selon la revendication 5, caractérisé en ce que l'exposant e est représenté par la séquence de registre suivante :r (e) = { (y (i) : cc (i) 1 13 (i) r i signif iant que Ry (i) = Ra (i). RB (i), les moyens de calcul (2) étant configurés pour exécuter l'algorithme d'exponentiation (pour e > l) :Initialiser Rct (i) -x ; P r) xpour i = 1 à r, exécuterRy (i) "Ra (i). Rj3 (i)émettre en sortie R = Ry/r)-
- 7. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les moyens de calcul (2) sont configurés pour exécuter un algorithme d'exponentiation du type universel à partir d'une chaîne d'addition-soustraction du type étoile, présentée sous la forme c(e) = {e(0),e(1),...,e(r)} avec la condition e(i) = ~ e(i-1) ~ e(k(i)), pour tout 1 i r, le dispositif comprenant un premier registre Rss (i) et un second registre Ry (i) pour représenter e, avec la condition α (i) = y (i-1) pour tout 1 < i < r.<Desc/Clms Page number 21>émettre en sortie R = Rr).Ry (i) Ry (i-l). (i)pour i = 1 à r, exécuterInitialiser Ro) < -x ; Ra (i) < -x
- 9. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les moyens de calcul (2) effectuent un algorithme selon une méthode binaire avec la représentation binaire de e donnée par e = (et-1, ..., eo 2 et en réalisant un balayage de l'exposant e de la droite vers la gauche pour obtenir l'expressionxe = (x (x' (X2... (x'"'r'-'.
- 10. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les moyens de calcul (2) effectuent un algorithme selon une méthode binaire avec la représentation binaire de e donnée par e = (et-l,..., eo) 2 et en réalisant un balayage de l'exposant e de la gauche vers la droitepour obtenir l'expression xe = (... ( (x''-') 2x''-2) 2... xe') 2xe.
- 11. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que les moyens de calcul (2) effectuent un algorithme selon uneméthode 2k-aire, où on traite un nombre k de bits à chaque itération, les valeurs de x ('l") pour tout 1 2 (k-1 étant précalculées.<Desc/Clms Page number 22>
- 12. Dispositif selon l'une quelconque des revendications 1 à 11, caractérisé en ce que ladite chaîne d'addition-soustraction est une chaîne d'additions présentée sous la forme : C (e) = {e ", e'",..., e'}, avec la condition e (l) = e " + e (k (l)), pour tout 1 sis r.
- 13. Dispositif selon l'une quelconque des revendications 1 à 12, caractérisé en ce qu'il est mis en oeuvre dans un système cryptographique basé sur un algorithme cryptographique faisant intervenir au moins une exponentiation du type R = xe.
- 14. Dispositif selon la revendication 13, caractérisé en ce que l'algorithme cryptographique est du type Rivert, Shamir, Adleman (RSA).
- 15. Carte à puce, caractérisée en ce qu'elle intègre un dispositif (1) selon l'une quelconque des revendications 1 à 14.
- 16. Utilisation du dispositif selon l'une quelconque des revendications 1 à 15 pour réaliser un calcul d'exponentiation, notamment dans l'exécution d'un algorithme cryptographique.
- 17. Procédé de programmation d'un dispositif de calcul d'exponentiation du type R = xe, où x et e sont des nombres prédéterminés, utilisant des moyens de calcul (2) et des moyens de mémorisation (4,6, 8) destinés à stocker un algorithme d'exponentiation, caractérisé en ce qu'il comprend les étapes de : - sélectionner une valeur d'exposant e ; - exprimer la valeur de l'exposant e par une chaîne d'addition-soustraction C (e) choisie ;<Desc/Clms Page number 23>- inscrire ladite chaîne d'addition-soustraction dans une portion (6) de moyens de mémorisation (4, 6, 8) qui est inscriptible après sa fabrication.
- 18. Procédé selon la revendication 17, caractérisé en ce que l'on stocke ladite chaîne d'additionsoustraction C (e) dans une portion de mémoire figée inscriptible, du type électriquement programmable (EPROM) (6).
- 19. Procédé selon la revendication 17, caractérisé en ce que l'on stocke ladite chaîne d'additionsoustraction C (e) dans une portion de mémoire figée réinscriptible, du type électriquement programmable et effaçable (EEPROM) (6).
- 20. Procédé selon l'une quelconque des revendications 17 à 19, caractérisé en ce que l'on inscrit un algorithme d'exponentiation dans une portion de mémoire (4) du type mémoire figée codée par masquage (ROM masque), l'algorithme fonctionnant à partir de ladite chaîne d'addition-soustraction C (e).
- 21. Procédé selon l'une quelconque des revendications 17 à 20, caractérisé en ce que l'on configure les moyens de calcul (2) pour exécuter un algorithme d'exponentiation du type universel à partir de ladite chaîne d'addition-soustraction présentée sous la formeC (e) = (O), e (l),.... e (r) , avec la condition e = e ] (i)) + e (k (i)), pour tout 1 : i < r, dans lequel à l'étape i, on évalue une multiplication x exposant e = x exposant e (i (i)). x exposant (k (i)), et en ce que l'on prévoit un premier et deuxième registres R, (i) et Rss (i) respectivement pour le stockage des valeurs de x exposant e et de x exposant e (i)), et un<Desc/Clms Page number 24>troisième registre R, (i) pour le stockage du résultat de ladite multiplication.
- 22. Procédé selon la revendication 21, caractérisé en ce que l'exposant e est représenté par la séquence de registre suivante : r (e) = { (y (i) : a (i), B (i))} i < i < r. signifiant que Ry (i) = Ra (i). RB (i), et en ce que l'on configure les moyens de calcul (2) pour exécuter l'algorithme d'exponentiation (pour e > l) :Initialiser Ra (i) < -x ; Rfl) xpour i = 1 à r, exécuterRY (i) Ra (i). Rss (i)émettre en sortie R = Ry (r).
- 23. Procédé selon l'une quelconque des revendications 17 à 20, caractérisé en ce que l'on configure les moyens de calcul (2) pour exécuter un algorithme d'exponentiation du type universel à partir d'une chaîne d'addition-soustraction du type étoile, présentée sous la forme C (e) = {e (O), e (l),..., e (r)} avec la condition e (i) = e' e < , pour tout 1 < i r, et en ce que l'on prévoit un premier registre Rss (i) et un second registre Ry(i) pour représenter e, avec la condition a (i) = y (i-l) pour tout 1 < i < r.
- 24. Procédé selon la revendication 23, caractérisé en ce que l'on configure les moyens de calcul (2) pour réaliser une séquence de registres donnée par : F* (e) = { (y (i) : B (i))} i i r, et pour exécuter l'algorithme d'exponentiation :Initialiser Ry (0) x ; Rss (l) Xpour i = 1 à r, exécuterRe F Re Rss (i)émettre en sortie R = RY (r).<Desc/Clms Page number 25>
- 25. Procédé selon l'une quelconque des revendications 17 à 20, caractérisé en ce que les moyens de calcul (2) effectuent un algorithme selon une méthode binaire avec la représentation binaire de e donnée par e = (et-i, eo) 2 et en réalisant un balayage de l'exposant e de la droite vers la gauche pour obtenir l'expressionxe = (x) r (x2' (x... (x2"'-; r'-'.
- 26. Procédé selon l'une quelconque des revendications 17 à 20, caractérisé en ce que les moyens de calcul (2) effectuent un algorithme selon une méthode binaire avec la représentation binaire de e donnée par e = (et-i, ..., e0) 2 et en réalisant un balayage de l'exposant ede la gauche vers la droite pour obtenir l'expression xe = (... ( (xel-l) 2xe'-2) 2... xel) 2xeo.
- 29. Utilisation du procédé selon l'une quelconque des revendications 17 à 28 pour la mise en oeuvre dans un système cryptographique basé sur un algorithme<Desc/Clms Page number 26>cryptographique faisant intervenir au moins une exponentiation du type R = xe.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0100296A FR2819320B1 (fr) | 2001-01-11 | 2001-01-11 | Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif |
PCT/FR2001/004182 WO2002056171A1 (fr) | 2001-01-11 | 2001-12-21 | Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif |
EP01995782A EP1350161A1 (fr) | 2001-01-11 | 2001-12-21 | Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0100296A FR2819320B1 (fr) | 2001-01-11 | 2001-01-11 | Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2819320A1 true FR2819320A1 (fr) | 2002-07-12 |
FR2819320B1 FR2819320B1 (fr) | 2003-08-08 |
Family
ID=8858678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0100296A Expired - Fee Related FR2819320B1 (fr) | 2001-01-11 | 2001-01-11 | Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1350161A1 (fr) |
FR (1) | FR2819320B1 (fr) |
WO (1) | WO2002056171A1 (fr) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101764735B (zh) * | 2008-12-25 | 2011-12-07 | 凌阳电通科技股份有限公司 | 通信系统的传输区块长度计算方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5235538A (en) * | 1990-09-07 | 1993-08-10 | Hitachi, Ltd. | Semiconductor operation device with memory for storing operation codes connected from coefficients prior to performing an operation on an input signal |
US5987131A (en) * | 1997-08-18 | 1999-11-16 | Picturetel Corporation | Cryptographic key exchange using pre-computation |
-
2001
- 2001-01-11 FR FR0100296A patent/FR2819320B1/fr not_active Expired - Fee Related
- 2001-12-21 EP EP01995782A patent/EP1350161A1/fr not_active Withdrawn
- 2001-12-21 WO PCT/FR2001/004182 patent/WO2002056171A1/fr not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5235538A (en) * | 1990-09-07 | 1993-08-10 | Hitachi, Ltd. | Semiconductor operation device with memory for storing operation codes connected from coefficients prior to performing an operation on an input signal |
US5987131A (en) * | 1997-08-18 | 1999-11-16 | Picturetel Corporation | Cryptographic key exchange using pre-computation |
Non-Patent Citations (4)
Title |
---|
BERNSTEIN R: "MULTIPLICATION BY INTEGER CONSTANTS", SOFTWARE PRACTICE & EXPERIENCE, JOHN WILEY & SONS LTD. CHICHESTER, GB, vol. 16, no. 7, 1 July 1986 (1986-07-01), pages 641 - 652, XP000743393, ISSN: 0038-0644 * |
BOS J ET AL: "ADDITION CHAIN HEURISTICS", ADVANCES IN CRYPTOLOGY. SANTA BARBARA, AUG. 20 - 24, 1989, PROCEEDINGS OF THE CONFERENCE ON THEORY AND APPLICATIONS OF CRYPTOLOGY, NEW YORK, SPRINGER, US, vol. CONF. 9, pages 400 - 407, XP000135674 * |
MENEZES A J ET AL: "HANDBOOK OF APPLIED CRYPTOGRAPHY", CRC PRESS, BOCA RATON, FL, USA, ISBN: 0-8493-8523-7, XP000764820 * |
SAUERBREY J ET AL: "Resource requirements for the application of addition chains in modulo exponentiation", ADVANCES IN CRYPTOLOGY - EUROCRYPT '92. WORKSHOP ON THE THEORY AND APPLICATIONS OF CRYPTOGRAPHIC TECHNIQUES. PROCEEDINGS, BALATONFURED, HUNGARY, 24-28 MAY 1992, 1993, Berlin, Germany, Springer-Verlag, Germany, pages 174 - 182, XP001030139, ISBN: 3-540-56413-6 * |
Also Published As
Publication number | Publication date |
---|---|
WO2002056171A1 (fr) | 2002-07-18 |
FR2819320B1 (fr) | 2003-08-08 |
EP1350161A1 (fr) | 2003-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2842232B1 (fr) | Procédé de contrôle de redondance cyclique protégé contre une attaque par canal auxiliaire | |
EP2380305B1 (fr) | Circuit de cryptographie, protégé notamment contre les attaques par observation de fuites d'information par leur chiffrement | |
EP1421473B1 (fr) | Procédé de calcul universel appliqué à des points d'une courbe elliptique | |
EP1832974A1 (fr) | Protection EMA d'un calcul par un circuit électronique | |
EP2166696A1 (fr) | Protection de l'intégrité de données chiffrées en utilisant un état intermédiare de chiffrement pour générer une signature | |
EP1804161A1 (fr) | Détection de perturbation dans un calcul cryptographique | |
EP3502899B1 (fr) | Procédé de détermination d'une somme d'intégrité, programme d'ordinateur et entité électronique associés | |
EP1715410B1 (fr) | Protection d'un calcul effectué par un circuit intégré | |
EP2284690A2 (fr) | Brouillage d'un calcul effectué selon un algorithme RSA-CRT | |
WO2007104706A1 (fr) | Procede de securisation d'un calcul d'une exponentiation ou d'une multiplication par un scalaire dans un dispositif electronique | |
EP1904928A2 (fr) | Integrite materielle permanente des donnees | |
EP1538508A1 (fr) | Procédé et dispositif de chiffrement et dechiffrement à la volée | |
WO2003014916A1 (fr) | Procede securise de realisation d'une operation d'exponentiation modulaire | |
EP1721246B1 (fr) | Procede et dispositif pour accomplir une operation cryptographique | |
FR2819320A1 (fr) | Dispositif destine a realiser des calculs d'exponentiation, et procede de programmation et d'utilisation du dispositif | |
EP1279141B1 (fr) | Procede de contre mesure dans un microcircuit et carte a puce comportant ledit microcircuit | |
EP2315388A1 (fr) | Procédé sécurisé de calcul cryptographique et composant électronique correspondant. | |
EP0778518B1 (fr) | Procédé de production d'un paramètre J0 associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery | |
WO2004017193A2 (fr) | Procede de calcul universel applique a des points d'une courbe elliptique | |
FR2823327A1 (fr) | Dispositif destine a realiser des calculs d'exponentiation securisee et utilisation d'un tel dispositif | |
WO2002099624A1 (fr) | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique | |
FR3145222A1 (fr) | Protection contre les attaques par canal auxiliaire d’un algorithme cryptographique impliquant une table de substitution | |
EP4270855A1 (fr) | Protection contre les attaques par canal auxiliaire a l aide d'un masquage carre | |
EP1891769A1 (fr) | Protection d'un calcul d'exponentiation modulaire effectue par un circuit integre | |
WO2003069841A1 (fr) | Procede de detection des attaques par mise en defaut contre les algorithmes cryptographiques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20091030 |