FR2888690A1 - Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe - Google Patents
Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe Download PDFInfo
- Publication number
- FR2888690A1 FR2888690A1 FR0507519A FR0507519A FR2888690A1 FR 2888690 A1 FR2888690 A1 FR 2888690A1 FR 0507519 A FR0507519 A FR 0507519A FR 0507519 A FR0507519 A FR 0507519A FR 2888690 A1 FR2888690 A1 FR 2888690A1
- Authority
- FR
- France
- Prior art keywords
- mod
- calculate
- message
- modular exponentiation
- calculating
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
L'invention concerne un procédé cryptographique asymétrique appliqué à un message M, caractérisé en ce qu'il comprend une opération privée consistant à signer ou déchiffrer le message M pour obtenir un message signé ou déchiffré s, l'opération privée étant définie à partir d'au moins une exponentiation modulaire EM de la forme EM = M<A> mod B, A et B étant respectivement l'exposant et le module de l'exponentiation modulaire EM, et l'opération privée comprenant les étapes consistant à :- Calculer un module intermédiaire B*, un message intermédiaire M* et un exposant intermédiaire A*, en fonction de B, M et/ou A; le module intermédiaire B* étant calculé de façon déterministe et le message intermédiaire M* étant calculé de façon aléatoire ;- Calculer une exponentiation modulaire intermédiaire EM*=M*<A*> mod B*;- Calculer le message signé ou déchiffré s à partir de l'exponentiation modulaire intermédiaire EM*.L'invention concerne également un composant électronique comprenant des moyens pour la mise en oeuvre de ce procédé cryptographique.
Description
Procédé cryptographique pour la mise en oeuvre sécurisée
d'une exponentiation et composant associé DOMAINE DE L'INVENTION La présente invention concerne un procédé cryptographique permettant la mise en oeuvre sécurisée d'une exponentiation dans un composant électronique, cette mise en oeuvre étant plus particulièrement utilisée dans le cadre d'un algorithme cryptographique asymétrique, par exemple de type RSA.
L'invention concerne également le composant électronique comprenant les moyens pour la mise en oeuvre de ce procédé.
ETAT DE LA TECHNIQUE
Les composants électroniques mettant en oeuvre des algorithmes de cryptographie sont en général utilisés dans des applications où l'accès à des services ou à des données est sévèrement contrôlé. Ils ont une architecture telle qu'elle leur permet d'exécuter n'importe quel type d'algorithme.
Ces composants peuvent notamment être utilisés dans les cartes à puce, 25 pour certaines applications de celles-ci.
Ainsi, de tels composants électroniques mettent en oeuvre un algorithme de cryptographie qui permet d'assurer le chiffrement de données émises et/ou le déchiffrement de données reçues, la signature numérique d'un message et/ou la vérification de cette signature.
En effet, à partir d'un message appliqué par un système hôte à l'entrée du composant électronique, et à partir de nombres secrets contenus dans le composant électronique, le composant électronique fournit en retour au système hôte le message signé, ce qui permet par exemple au système hôte d'authentifier le composant électronique.
De manière analogue, à partir d'un message chiffré appliqué par un système hôte à l'entrée du composant électronique, et à partir de nombres secrets contenus dans le composant électronique, le composant 10 électronique déchiffre le message.
Les caractéristiques des algorithmes de cryptographie peuvent être connues, comme les calculs effectués ou les paramètres utilisés. La sécurité de ces algorithmes de cryptographie repose en effet essentiellement dans le ou les nombres secrets utilisés dans l'algorithme. Ce ou ces nombres secrets sont contenus dans le composant électronique et sont totalement inconnus du milieu extérieur.
Ils ne peuvent être déduits de la seule connaissance du message appliqué en entrée et du message chiffré fourni en retour. En effet, les algorithmes cryptographiques de type RSA reposent sur un problème mathématique jugé complexe d'un point de vue calculatoire pour des nombres suffisamment grands, à savoir la factorisation.
Pour trouver ce ou ces nombres secrets, des attaques consistant à agir physiquement sur le composant électronique ou la carte à puce ont été développées et ainsi, un certain nombre de techniques de protection appropriées ont vu le jour de façon à contrer ces attaques physiques.
Toutefois, il est apparu que le ou les nombres secrets contenus dans la carte pouvaient être percés par le biais d'attaques non invasives. Ces attaques, dites à canaux cachés, permettent à une personne extérieure de déterminer le ou les nombres secrets contenus dans le composant électronique à partir de grandeurs physiques mesurables à l'extérieur du composant lorsque celui-ci est en train d'exécuter l'algorithme de 5 cryptographie.
Le principe de ces attaques à canaux cachés repose sur le fait que certains paramètres caractérisant le microprocesseur varient selon l'instruction exécutée ou la donnée manipulée. L'analyse de la consommation en courant, des temps de calcul ou encore des rayonnements électromagnétiques permettent par exemple de découvrir le ou les nombres secrets.
Ces attaques dites à canaux cachés sont notamment envisageables avec les algorithmes de cryptographie du type RSA (du nom de ses inventeurs Rivest, Shamir et Adelman), qui est celui le plus utilisé en cryptographie, en particulier dans le domaine des cartes à puce.
Un certain nombre de techniques de protection pour empêcher ces attaques externes sont connues. On peut par exemple utiliser un dispositif d'alimentation comprenant des condensateurs aptes à masquer les fluctuations dans la consommation de courant. Les dispositifs de calcul peuvent aussi être enfermés dans des boîtiers de protection blindés confinant les rayonnements électromagnétiques.
Néanmoins, de telles techniques ne sont pas totalement infaillibles et une personne extérieure expérimentée pourra éventuellement déterminer le ou les nombres secrets en utilisant par exemple des techniques de signaux amplifiés, ou encore en filtrant le bruit en faisant une moyenne des données collectées sur plusieurs mesures.
En outre, dans des dispositifs tels que les cartes à puce, ces contremesures sont souvent inapplicables ou insuffisantes du fait des différentes contraintes physiques de ces dispositifs, comme notamment la dépendance vis-à-vis des sources de puissance externes, l'impossibilité d'utilisation de blindage, etc. D'autres méthodes mathématiques sont connues pour empêcher les attaques basées sur la mesure des temps de calcul des différentes opérations. Néanmoins, elles ne permettent pas de se protéger contre les attaques plus complexes comme celles basées sur l'analyse de la consommation de courant.
Une autre méthode de protection contre les attaques dites à canaux cachés a été présentée dans la demande de brevet WO 99/35782. Ce document présente en effet une méthode de protection utilisable dans un algorithme de cryptographie de type RSA, que ce soit en mode standard ou en mode CRT, cette méthode de protection étant principalement basée sur la génération de nombres aléatoires permettant une redéfinition des paramètres de calcul. Ainsi, les calculs de l'opération privée de l'algorithme de cryptographie de type RSA sont rendus entièrement aléatoires. Cette méthode de contre-mesure a toutefois l'inconvénient d'augmenter sensiblement les temps de calculs.
Un but de la présente invention est donc de fournir un procédé cryptographique de type RSA et un composant électronique associé qui permettent de contrer les attaques de type à canaux cachés (qu'elles soient simples ou différentielles) de façon plus rapide et plus efficace.
EXPOSE DE L'INVENTION 2888690 A cet effet on prévoit, selon l'invention, un procédé cryptographique asymétrique appliqué à un message M, caractérisé en ce qu'il comprend une opération privée consistant à signer ou déchiffrer le message M pour obtenir un message signé ou déchiffré s, l'opération privée étant définie à partir d'au moins une exponentiation modulaire EM de la forme EM = M A mod B, A et B étant respectivement l'exposant et le module de l'exponentiation modulaire EM, mod dénotant l'opération modulo, et l'opération privée comprenant les étapes consistant à : - Calculer un module intermédiaire B*, un message intermédiaire M* et un exposant intermédiaire A*, en fonction de B, M et/ou A; le module intermédiaire B* étant calculé de façon déterministe et le message intermédiaire M* étant calculé de façon aléatoire; - Calculer une exponentiation modulaire intermédiaire EM*=M*A* mod B *; Calculer le message signé ou déchiffré s à partir de l'exponentiation modulaire intermédiaire EM*.
Selon un aspect préféré mais non limitatif du procédé cryptographique asymétrique selon l'invention, l'étape consistant à calculer le message signé ou déchiffré s est réalisée par réduction de EM*, résultat de l'exponentiation modulaire intermédiaire.
Selon un premier mode de réalisation de l'invention, on prévoit un procédé cryptographique caractérisé en ce qu'il utilise une clé publique et une clé privée, la clé publique étant composée d'un module N de type RSA et d'un exposant public e, et la clé privée étant composée du module N de type RSA et d'un exposant privé d, tel que e.d = l mod (N) , q étant la fonction indicatrice d'Euler, et en ce que l'opération privée est définie à partir de l'exponentiation modulaire s = M d mod N, d et N 2888690 6 correspondant respectivement à l'exposant A et au module B de l'exponentiation modulaire EM, et comprend les étapes consistant à : a) Calculer un module intermédiaire N* de façon déterministe, tel que N* = xN.N avec XN une valeur publique dépendant de N et M; b) Calculer un message intermédiaire M* de façon aléatoire, tel que M* = M + xM.N avec xM une valeur aléatoire telle que xN et xM soient premiers entres eux; c) Calculer une exponentiation modulaire intermédiaire s* = M * mod N * , d* correspondant à l'exposant intermédiaire A * ; d) Réduire l'exponentiation modulaire intermédiaire s* afin d'obtenir le message signé ou déchiffré s.
Des aspects préférés mais non limitatifs de l'invention selon ce premier 15 mode de réalisation sont les suivants: l'étape a) consistant à calculer un module intermédiaire N* de façon déterministe comprend les étapes consistant à : a1) Calculer une valeur A telle que A= f (M, N) , avec f une 20 fonction déterministe et publique; a2) Calculer la valeur publique xN telle que xN = À2.T, avec T un coefficient de normalisation de la multiplication modulaire; a3) Calculer le module intermédiaire N* tel que N* = xN.N.
- l'étape b) consistant à calculer un message intermédiaire M* de façon aléatoire comprend les étapes consistant à : b1) Tirer un nombre aléatoire ri; b2) Calculer xM = 1+ Â.r1.T; b3) Calculer le message intermédiaire M* = M + xM.N.
l'étape a1) consistant à calculer la valeur comprend les étapes consistant à : a11) Décomposer M et N tels que M = M; 2N" et N = E N.2".
avec w un entier non nul; a l2) Construire la valeur Â. telle que /1=1 0z, (Mi) + 6z, (Ni avec a une fonction appartenant au groupe de l'ensemble des permutations S de longueur a, et avec z. =M. + j + z/_, +N. mod 2w, zo pouvant être fixé à une valeur quelconque.
l'exposant intermédiaire d* est tel que d* = d + r2.(1- e.d) , avec r2 un nombre tiré aléatoirement; l'exposant intermédiaire d* peut 15 aussi être tel que d* = d.
Selon un deuxième mode de réalisation de l'invention, on prévoit un procédé cryptographique caractérisé en ce qu'il utilise une clé publique et une clé privée, la clé publique étant composée d'un module N de type RSA, produit de deux grands nombres premiers p et q, et d'un exposant public e, et la clé privée étant composée du quintuplet (p, q, d p, dq, iq) avec d p = d mod(p -1), dq = d mod(q -1) , et iq = q-' mod p, d étant tel que e.d = l mod q5(N) , q5 étant la fonction indicatrice d'Euler, et en ce que l'opération privée est définie à partir de l'exponentiation modulaire sp = M dp mod p, dp et p correspondant respectivement à l'exposant A et au module B de l'exponentiation modulaire EM, et comprend les étapes consistant à : a1) Calculer un module intermédiaire p* de façon déterministe, tel que p* = xp.p, avec xp une valeur publique dépendant de N et M; a2) Calculer un message intermédiaire Mp* de façon aléatoire, tel que Mp * = [(M mod p*) + xMM. p] mod p * , avec xmp une valeur aléatoire telle que xp et xMp soient premiers entres eux; a3) Calculer une exponentiation modulaire intermédiaire sp* telle que sp * = Mp *dp* mod p * , dP* correspondant à l'exposant intermédiaire A*.
Des aspects préférés mais non limitatifs de l'invention selon ce deuxième mode de réalisation sont les suivants: l'étape a2) est remplacée par l'étape a2') consistant à calculer un message intermédiaire Mp* tel que Mp* = [M + xMp.191 mod p * , avec xMp une valeur aléatoire telle que xp et xMp soient premiers entres eux.
- l'étape a1) consistant à calculer un module intermédiaire p* de façon déterministe comprend les étapes consistant à : a11) Calculer une valeur Â,p telle que /p = f p (M, N mod 2k) , avec f p une fonction déterministe et publique, et k un nombre entier positif non nul; a12) Calculer la valeur publique xp telle que xp = ),p.T, avec T un coefficient de normalisation de la multiplication modulaire; a13) Calculer le module intermédiaire p*.
- l'étape a2) consistant à calculer un message intermédiaire Mp* de façon aléatoire comprend les étapes consistant à : a21) Tirer un nombre aléatoire r, ; a22) Calculer la valeur aléatoire xAp telle que x,tip = 1+ Ap.i.T; a23) Calculer le message intermédiaire Mp*.
l'exposant intermédiaire dp* est tel que d p * = + ,dp.(p -1) , avec /1dp tel que fdp = fdp (M, N mod 2k) , fdp étant une fonction déterministe et publique, distincte de f p, et k étant un entier positif non nul; l'exposant intermédiaire dp* pourra aussi être tel que dp*=dp.
- l'opération privée est en outre définie à partir de l'exponentiation modulaire sq = M dq mod q, et comprend les étapes supplémentaires consistant à : b1) Calculer un module intermédiaire q* de façon déterministe, tel que q* = xq.q, avec xq une valeur publique dépendant de N et M; b2) Calculer un message intermédiaire Mq* de façon aléatoire, tel que Mq * = [(M mod q*) + xMq.q] mod q, avec xMq une valeur aléatoire telle que xq et xMq soient premiers entres eux; b3) Calculer une exponentiation modulaire intermédiaire sq* telle que sq * = Mq *de mod q, avec dq* un exposant intermédiaire.
- l'étape b2) est remplacé par l'étape b2') consistant à calculer un message intermédiaire Mq* tel que Mq * = [M + xMq.q] mod q * , avec x.eaq une valeur aléatoire telle que xq et xjq soient premiers entres eux.
l'étape b1) consistant à calculer un module intermédiaire q* de façon déterministe, comprend les étapes consistant à : b11) Calculer une valeur /1q telle que 2î,q = fq (M, N mod 2k) , avec fq une fonction déterministe et publique, et k un nombre entier positif non nul; b12) Calculer la valeur publique xq telle que xq = ).q.T, avec T un coefficient de normalisation de la multiplication modulaire; b13) Calculer le module intermédiaire q*.
l'étape b2) consistant à calculer un message intermédiaire Mq* de façon aléatoire comprend les étapes consistant à : b21) Tirer un nombre aléatoire r2; b22) Calculer la valeur aléatoire xmq telle que xMq = 1 + 2, q.r2.T; b23) Calculer le message intermédiaire Mq*.
- l'exposant intermédiaire dq* est tel que dq * = dq + Â.dq.(q -1) , avec 11dq tel que Â,dq = fdq (M, N mod 2 k) , fdq étant une fonction déterministe et publique, distincte de fq, et k étant un nombre entier positif non nul; l'exposant intermédiaire dq* pourra aussi être tel que dq*=dq.
- le nombre k est inférieur à 128.
- l'opération privée comprend en outre l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir de sp* et sq*.
- l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir de sp* et sq* comprend les étapes consistant à : ^ Recombiner sp* et sq* tels que: s* = sq * +q.((iq (s p * sq *)) mod p*) ^ Réduire s* en s.
- l'étape consistant à réduire s* en s est effectuée selon la réduction modulaire s = s * mod N. - l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir de sp* et sq* comprend les étapes consistant à : ^ Recombiner sp* et sq* tels que: s* _ [Xq.sq * +q * .((iq. (S), * sq *)) mod p*)] s * mod(xq.N) l'exponentiation modulaire s = M d mod N à partir de sp* et sq* comprend les étapes consistant à : ^ Réduire l'exponentiation modulaire sp* afin de déterminer l'exponentiation modulaire sp; ^ Réduire l'exponentiation modulaire sq* afin de déterminer l'exponentiation modulaire sq; ^ Recombiner sp et sq tels que: ^ Calculer s = xq 2888690 12 s = sq + q.((iq.(s p sq)) mod p) Selon un autre mode de réalisation de l'invention, on prévoit un procédé cryptographique asymétrique appliqué à un message M à signer ou déchiffrer en un message signé ou déchiffré s, caractérisé en ce que le procédé cryptographique utilise une clé publique et une clé privée, la clé publique étant composée d'un module N de type RSA, produit de deux grands nombres premiers p et q, et d'un exposant public e, et la clé privée étant composée du quintuplet (p,q,dp,dq,iq) avec d p = d mod(p -1) , dq = d mod(q -1) , et iq = q-1 mod p, d étant tel que e.d = 1 mod O(N) , étant la fonction indicatrice d'Euler, et comprend une opération privée définie à partir des exponentiations modulaires sp et sq telles que s p = M dp mod p et sq = M dq mod q, l'opération privée comprenant les étapes consistant à : Calculer un module intermédiaire p* à partir de p et un module intermédiaire q* à partir de q; Calculer les exponentiations modulaires intermédiaires sp* et Sq*, sp* et sq* étant calculés respectivement à partir des modules p* et q* ; - Calculer le message signé ou déchiffré s en combinant sp* et sq*.
Des aspects préférés mais non limitatifs de l'invention selon cet autre mode de réalisation, sont les suivants: - le message signé ou déchiffré s est calculé suivant les étapes 25 consistant à : ^ Recombiner sp* et sq* tels que: s* = sq * +q.((iq (s p * sq*)) mod p*) ^ Réduire s* en s.
2888690 13 l'étape consistant à réduire s* en s est effectuée selon la réduction modulaire s = s * modN.
le module intermédiaire q* est calculé de telle sorte que q* = K.q, avec K une valeur déterministe ou aléatoire, et le message signé ou déchiffré s est calculé suivant les étapes consistant à : ^ Recombiner sp* et sq* tels que: s* = [K.sq * +q * .((iq.(sp * sq *)) mod p*)] s * mod(K.N) On prévoit en outre selon l'invention un composant électronique comprenant des moyens pour la mise en oeuvre du procédé cryptographique selon les différents modes de réalisation de l'invention. Le composant électronique comprend par exemple un moyen de traitement programmé, tel qu'un microprocesseur, pour mettre en oeuvre le procédé cryptographique selon l'invention.
On prévoit enfin une carte à puce comprenant un tel composant 20 électronique.
DESCRIPTION DES FIGURES
D'autres caractéristiques et avantages de l'invention ressortiront encore de 25 la description qui suit, laquelle est purement illustrative et non limitative et doit être lue en regard des dessins annexés, sur lesquels: ^ Calculer s = K la figure 1 est un diagramme schématique du procédé cryptographique de type RSA en mode standard selon un aspect préféré de l'invention; - la figure 2 est un diagramme schématique du procédé cryptographique de type RSA en mode CRT selon un autre aspect préféré de l'invention; la figure 3 est un diagramme schématique du procédé 10 cryptographique de type RSA en mode CRT selon encore un autre aspect de l'invention.
DESCRIPTION D'UN MODE DE REALISATION DE L'INVENTION Fonctionnement des algorithmes de cryptographie de type RSA On rappelle ci-après brièvement les principales caractéristiques du système cryptographique de type RSA.
La première réalisation de schéma de chiffrement et de signature à clé publique fut mise au point par Rivest, Shamir et Adleman, qui ont inventé le système cryptographique de type RSA. Ce système est le système cryptographique à clé publique le plus utilisé.
Il peut être utilisé comme procédé de chiffrement ou comme procédé de signature.
Le système cryptographique de type RSA utilise des calculs 30 d'exponentiation modulaire. Il consiste d'abord à générer la paire de clés RSA qui seront utilisées pour ces exponentiations modulaires.
Ainsi, chaque utilisateur crée une clé publique RSA et une clé privée correspondante, selon le procédé suivant en 5 étapes: 1) Générer deux nombres premiers distincts p et q; 2) Calculer N = p.q et /(N) = (p 1). (q -1) , ( étant la fonction indicatrice d'Euler) ; 3) Sélectionner un entier e tel que 1 < e < (N) et tel que e et O(N) soient premiers entre eux, e étant choisi aléatoirement ou non; 4) Calculer un entier d tel que 1 < d < O(N) et tel que e.d = l modç(N) [on notera que dans l'ensemble du texte on désigne l'opération modulo k par mod k ] 5) La clé publique est le couple (N, e) et la clé privée est le couple (N,d).
Les entiers e et d sont appelés respectivement exposant public et exposant privé. L'entier N est appelé module RSA.
Ainsi, une fois les paramètres publics et privés définis, étant donné x, avec 0 < x < N, il est possible d'appliquer le procédé de chiffrement ou de 20 signature à x.
Dans le procédé de chiffrement, l'opération publique sur x, qui est appelée chiffrement du message x, consiste à calculer l'exponentiation modulaire: y=xemodN Dans ce cas, l'opération privée correspondante est l'opération de déchiffrement du message chiffré y, et consiste à calculer l'exponentiation modulaire: y d modN Dans le cas d'un procédé de signature, la première opération effectuée est l'opération privée, ou signature du message x, et consiste à calculer: y=xd modN L'opération publique correspondante, appelée vérification de la signature y, utilise la clé publique (N, e) et les valeurs x et y et consiste à vérifier si l'égalité x = ye mod N est vraie.
Le mode présenté ci-dessus est appelé mode standard.
Nous allons présenter maintenant un autre mode de fonctionnement de l'algorithme de cryptographie RSA dit mode CRT car basé sur le théorème des restes Chinois ( Chinese Reminder Theorem ou CRT en anglais). Ce mode de fonctionnement dit CRT est beaucoup plus rapide que le mode standard. Selon ce mode CRT, l'exponentiation modulaire n'est pas directement calculée modulo N, mais on effectue d'abord deux calculs d'exponentiation modulaire, respectivement modulo p et modulo q.
Les paramètres publics sont toujours représentés par le couple (N, e) mais les paramètres privés sont dans ce mode représentés par le triplet (p, q, d) ou le quintuplet (p, q, d p, d q, iq) avec: d p = d mod(p - 1) dq = d mod(q -1) q-' modp Par la relation e.d = 1 mod ç(N) , on obtient: e.d p = 1 mod(p -1) , et e.dq = l mod(q -1) L'opération publique s'effectue de la même façon que pour le mode de fonctionnement standard. En revanche, pour l'opération privée on calcule d'abord les exponentiations modulaires: yp =xdnmodp, et yq = xdq modq Ensuite, par application du théorème des restes chinois, on obtient y = xd mod N, en utilisant par exemple la formule de Garner: y = yq + qÉ((iq.(Y, yq)) mod p) Comme il a déjà été rappelé plus haut, les caractéristiques des algorithmes de cryptographie sont généralement connues, et la sécurité de ces algorithmes repose donc essentiellement sur le ou les nombres secrets qui sont utilisés.
Il apparaît donc de ce qui précède que dans un algorithme de cryptographie de type RSA, l'opération qui doit nécessairement être protégée est l'opération dite privée. En effet, l'opération privée est la seule opération de l'algorithme de cryptographie qui utilise des nombres privés non connus du milieu extérieur, à savoir l'exposant privé d dans le cas d'un algorithme de cryptographie RSA en mode standard, et les nombres p, q, dp, dq et iq formant les éléments privés dans le cas d'un algorithme de cryptographie RSA en mode CRT.
2888690 18 Les attaques de type à canaux cachés, qu'elles soient simples ou différentielles, se basent sur une analyse des calculs effectués pendant l'algorithme de cryptographie.
La contre-mesure proposée dans ce document est donc un procédé pour la mise en oeuvre sécurisée d'une exponentiation qui empêche la détection externe du ou des nombres privés utilisé dans l'algorithme de cryptographie de type RSA, notamment pendant l'opération privée.
Dans tout algorithme de cryptographie de type RSA, que ce soit en mode standard ou en mode CRT, l'opération privée appliquée sur un message M, est toujours définie à partir d'au moins une exponentiation modulaire EM de type EM = M A mod B. Dans cette exponentiation modulaire, M, A et B sont respectivement appelés la base, l'exposant et le module.
Dans le cas du mode standard, l'opération privée sera définie à partir d'une exponentiation modulaire unique: s = M d mod N Dans le mode CRT, l'opération privée sera définie à partir de deux exponentiations modulaires, à savoir: sp = M' mod p, et sq = M dq mod q Selon l'invention, le déroulement de l'opération privée se base sur l'utilisation de paramètres intermédiaires, issus des paramètres de calculs A, B, ou M et peut donc se faire selon les étapes consistant à : Calculer un module intermédiaire B*, un message intermédiaire M*, et un exposant intermédiaire A*, le module intermédiaire 8* et le message intermédiaire M* étant respectivement calculés de façon déterministe et aléatoire; Calculer une exponentiation modulaire intermédiaire EM*=M*9*modB*; Calculer le message signé ou déchiffré s à partir de l'exponentiation modulaire intermédiaire EM*.
L'exposant intermédiaire A* est calculé de façon aléatoire ou déterministe. L'exposant intermédiaire A* pourra par exemple être tel que A* = A. Les calculs des paramètres intermédiaires B*, M*, et A*, peuvent être fait dans un ordre différent, la seule contrainte étant qu'ils doivent être calculés avant le calcul de l'exponentiation modulaire EM*.
Procédé cryptographique de type RSA en mode standard.
Le procédé de mise en oeuvre sécurisée de l'algorithme de cryptographie de type RSA en mode standard est décrit ci-dessous en référence à la 20 figure 1.
Le mode de réalisation de l'invention présenté ci-dessous est relatif à l'algorithme de cryptographie de type RSA en mode standard dans le cas d'une opération de signature.
Néanmoins, l'invention n'est pas limitée à un tel procédé de signature et pourra être utilisée également dans le cadre d'un procédé de chiffrement d'un message.
Considérons dès lors un message M à signer, un module N de type RSA, un exposant public e et un exposant privé d.
2888690 20 Le procédé décrit ci-dessous permet de réaliser une opération privée totalement sécurisée, c'est-à-dire une génération sécurisée d'une signature s, telle que s -= Md modN.
Une façon de sécuriser cette opération privée est d'effectuer une transformation des paramètres de calcul utilisés pour calculer s. Cette transformation des paramètres doit être telle que tout ou partie des paramètres utilisés pour le calcul de s soient en tout ou en partie modifiés à chaque exécution de l'algorithme de cryptographie.
La première étape du procédé de mise en oeuvre sécurisé selon l'invention consiste à transformer le module N de type RSA en un module intermédiaire N*.
N*est tel que N* = xN.N avec xN une valeur publique dépendant à la fois de N et de M et qui permet la normalisation éventuelle de module N de type RSA.
On pourra prendre par exemple xN telle que xN = Â.Z.T Dans ce cas), est telle que /1 = f (M, N) avec f une fonction qui est déterministe et publique. Un exemple de réalisation de cette fonction f est présenté plus loin dans ce document. Il est à noter que, la fonction f étant déterministe et publique, et M et N étant également publiques, la valeur /1 est elle aussi publique.
Quant à la valeur T, elle correspond au coefficient de normalisation que l'on peut utiliser parfois dans certains types d'algorithmes de multiplication 2888690 21 modulaire, comme par exemple la multiplication de Quisquater. Dans le cas où la normalisation du module n'est pas nécessaire, alors le coefficient T est pris égal à 1.
Ainsi dans cet exemple, on a un paramètre intermédiaire N* tel que N* _ Â, 2.T.N.
La deuxième étape consiste à transformer M en un message intermédiaire M*.
On prendra M* tel que M* = M + xM.N, avec xM une valeur aléatoire telle que XN et xM soient des nombres premiers entre eux. On pourra prendre par exemple xM telle que xM = 1 + /1.r1.T.
Les paramètres /1 et T sont identiques aux paramètres ii et T pris pour calculer le module intermédiaire N*. ri est quant à lui un nombre entier pris de façon aléatoire selon un
procédé de tirage d'aléa quelconque.
Ainsi la valeur xM telle que xM = 1 + /î.fl.T est bien une valeur aléatoire qui n'a aucun facteur commun avec la valeur xN =,x,2.T Une fois ces paramètres intermédiaires N*et M* calculés, il reste à calculer un exposant intermédiaire d*.
On peut calculer un exposant intermédiaire d* de façon aléatoire tel que: d* = d + i2.(1- e.d) Dans cette formule, e et d sont respectivement les exposants public et privé de l'algorithme de cryptographie RSA et r2 est un nombre entier tiré de façon aléatoire selon une méthode de tirage d'aléa quelconque.
Une fois tous les paramètres intermédiaires calculés, il reste à calculer l'exponentiation modulaire intermédiaire s* = M *d* mod N * . L'étape finale consiste à réduire l'exponentiation modulaire intermédiaire s* afin d'obtenir la valeur signée s.
On pourra par exemple procéder à une réduction modulaire pour calculer s à partir de s* selon la formule s = s * mod N Selon un autre mode de réalisation de l'invention, l'exposant intermédiaire d* peut être tel que d* = d.
Selon ce mode de réalisation, l'étape consistant à calculer l'exponentiation 20 modulaire intermédiaire s* diffère légèrement puisque s* sera définie par l'exponentiation modulaire suivante: s* = M *d mod N * L'étape consistant à réduire s* afin d'obtenir la valeur signée s reste la 25 même.
Il est important de noter que les étapes consistant à calculer les valeurs intermédiaires N*, M* et d*, peuvent être réalisées dans un ordre différent. La seule contrainte est que chacune de ces deux ou trois valeurs intermédiaires soient déterminées pour le calcul final de l'exponentiation modulaire menant à s*.
Selon ce procédé de calcul, l'opération privée consistant à générer une signature s à partir d'un message M est beaucoup plus sécurisée du fait du changement des valeurs intermédiaires utilisées au cours de l'algorithme de cryptographie de type RSA.
En effet, le paramètre intermédiaire M* change à chaque exécution de l'algorithme de cryptographie RSA en mode standard. En outre, quand le paramètre d* n'est pas pris égal à d, il change également de valeur à chaque exécution de l'algorithme.
Le paramètre intermédiaire N* change quant à lui à chaque fois que le 15 message M à signer varie.
Ainsi, les analyses successives des paramètres de calcul ne permettront pas de déterminer le ou les indices secrets, ceci s'expliquant par le fait que les paramètres de calcul ne sont pas constants d'une exécution de l'algorithme à une autre.
En outre, cette méthode n'utilise qu'un seul nombre aléatoire ri (voire un deuxième si le paramètre intermédiaire d* n'est pas égal à d), ce qui permet, entre autres, une économie dans la consommation de courant mais aussi dans les temps de calcul.
Comme il a été écrit plus haut, la valeur a. est obtenue à partir d'une fonction f que l'on choisit déterministe et publique. La valeur iî est donc obtenue de manière déterministe et publique comme une fonction du 2888690 24 message à signer M et du module N de type RSA. La méthode pour obtenir la valeur 2, peut par exemple être la suivante.
On décompose le paramètre M et le paramètre N de la façon suivante: 5 M = EMi 2't" et N = E Ni 2"'.i Dans cette décomposition, la valeur de w dépend de l'architecture du microprocesseur avec lequel les calculs de l'algorithme sont réalisés. On pourra prendre par exemple w parmi les valeurs 8, 16, 32, ou 64.
L'étape suivante consiste à construire la valeur = E Mi)+o- Dans cette formule, 0-a est par exemple une rotation, ou plus généralement une fonction appartenant au groupe de l'ensemble des permutations S de longueur a.
On prendra par exemple z; tel que: zi =M. + j+z +Ni mod2w zo peut être fixé à n'importe quelle valeur.
Procédé cryptographique de type RSA en mode CRT.
Le procédé cryptographique de type RSA en mode CRT est décrit ci-dessous en référence à la figure 2.
De la même façon que dans le mode standard, le procédé de mise en oeuvre sécurisé d'un algorithme de cryptographie de type RSA en mode 25 CRT peut être utilisé aussi bien dans un procédé de signature que dans un procédé de chiffrement d'un message.
Nous nous limitons à la description du mode de réalisation consistant à 5 signer un message M, le mode de réalisation consistant à déchiffrer un message M étant identique.
Soit un module de type RSA N tel que N = pÉq, avec p et q deux grands nombres premiers qui doivent rester secrets. On considère également une clé privée d sous la forme d'un quintuplet (p,q,dp,dq,iq) avec d p = d mod(p -1) , dq = d mod(q -1) et iq étant l'inverse de q modulo p c'està-dire iq = q 1 mod p. On rappelle que calculer s = M d mod N revient à calculer: s p = M dp mod p, et sq = M dq mod q, puis s = sq + q.((iq.(s p sq)) mod p) . Il est à noter que d'autres recombinaisons sont possibles pour calculer s à 20 partir de sp et sq.
Une fois encore, l'opération privée en mode CRT sera sécurisée, le procédé de calcul selon l'invention se basant uniquement sur des paramètres intermédiaires et pas sur les paramètres classiquement utilisés.
En effet, le fait que, à chaque exécution, tout ou partie des paramètres utilisés dans l'algorithme de cryptographie aient des valeurs ayant été modifiées empêche la détermination du ou des nombres secrets par le biais d'analyses externes.
En outre, un nombre de tirages d'aléas limité permettra de réduire la 5 consommation en courant et le temps d'exécution.
De la même manière que nous avions calculé l'exponentiation modulaire intermédiaire s* dans le cas du mode standard, il s'agit, dans le mode CRT, de calculer l'exponentiation modulaire intermédiaire sp* et l'exponentiation modulaire intermédiaire sq*.
Le calcul de l'exponentiation modulaire intermédiaire sp* comprend les étapes suivantes.
La première étape du procédé de mise en oeuvre sécurisé selon l'invention consiste à transformer le module p en un module intermédiaire p*.
p* est tel que p* = xp.p avec xp une valeur publique dépendant à la fois de N et de M et qui permet la normalisation éventuelle du module p de type 20 RSA.
On pourra prendre par exemple xp telle que xp = /.p.T.
Dans ce cas, Àp est une valeur telle que Â,p = f p (M, N mod 2k) avec f p une fonction déterministe et publique, f p étant une fonction comparable à la fonction f utilisée dans le cas du mode standard. k est quant à lui un entier positif non nul.
Néanmoins, /II, ne dépend pas de N mais dépend de N mod 2k. En effet, le calcul de /II, à partir de N mod 2k permet de ne pas reconstruire tout le module N qui n'est pas à notre disposition, seules les valeurs p et q étant connues.
Il est à noter que N mod 2k peut être recalculé de manière très simple par la formule suivante: Nmod2k =(pmod2k).(gmod2k).mod2k En définitive, est déterminée à partir des k bits de poids faible du module N. Dans un mode préféré, k est inférieur à 128, on prendra par exemple k=64.
Par construction, 2p est donc une valeur déterministe et publique.
De la même façon que dans le cas du mode standard, le coefficient T correspond au coefficient de normalisation parfois utilisé dans certains types d'algorithmes de multiplication modulaire. Si la normalisation n'est pas nécessaire alors T est pris égal à 1.
Il convient ensuite de calculer un paramètre intermédiaire Mp* tel que: Mp*=[M+xMp.p]modp* Une variante de calcul de Mp* serait de calculer: 25 M p * = [(M mod p*) + xMp.p] mod p * En effet, la réduction de M par p* permet de travailler avec des éléments de taille similaire, et d'optimiser ainsi la gestion de la mémoire de calcul.
xMP une valeur aléatoire prise de telle sorte que xp et xMP sont des nombres premiers entre eux.
On pourra prendre par exemple xMP telle que: xMP =1+a,P.r.T.
Dans cette formule ri est un nombre entier tiré de façon aléatoire selon un procédé de tirage d'aléa quelconque et À,P est telle que définie cidessus.
Une fois ces paramètres intermédiaires p*et Mp* calculés, il reste à calculer un exposant intermédiaire dp*.
On peut par exemple calculer un exposant intermédiaire dp* de façon 15 déterministe tel que: dP*=dp+Â,dd.(p-1) Le calcul de cette valeur intermédiaire Â'dp est réalisé de manière analogue au calcul de À,P tel que décrit ci-dessus. Néanmoins, fdd est une fonction 20 distincte de fp, de sorte que Adp est une valeur distincte de 2.P.
Il convient enfin de calculer l'exponentiation modulaire intermédiaire sp* à partir des différentes valeurs intermédiaires calculées, sp* étant telle que: sp * = MP *dP* mod p * Selon un autre aspect de l'invention, on prendra l'exposant intermédiaire dp* tel que dp* = dp. Pour calculer sp*, il conviendra donc de calculer: sp*=Mp *dp mod p * II est important de noter que les étapes consistant à calculer les valeurs intermédiaires Mp*, p* et dp*, peuvent être réalisées dans un ordre différent.
La seule contrainte est que chacune de ces deux ou trois valeurs intermédiaires soient déterminées pour le calcul final de l'exponentiation modulaire menant à sp*.
Le calcul de sq* s'effectue de façon analogue au calcul de sp*.
Enfin, il convient de calculer le message signé s à partir des exponentiations intermédiaires sp* et sq* qui viennent d'être calculées.
La première façon de calculer s à partir de sp* et sq* est de les réduire afin 15 d'obtenir respectivement sp et sq.
Après avoir déterminé sp et sq, il conviendra de les recombiner à l'aide du théorème des restes Chinois, ou une version légèrement modifiée, pour obtenir le message signé s, en utilisant par exemple la formule de Garner: S = Sq + q.((iq.(s p sq))modp) Une autre façon de calculer le message signé s est de recombiner directement les exponentiations intermédiaires sp* et sq*.
On pourra par exemple dans un premier temps calculer s* selon la formule suivante: s* = sq * +q.((iq (sp * s,*)) mod p*) Il suffit ensuite de réduire s* pour obtenir le message signé ou déchiffré s. 30 Cette réduction peut être une réduction modulaire, comme par exemple: s=s*modN Cette recombinaison particulière permet notamment une économie de temps de mémoire et de temps de calcul.
Un autre calcul de s directement à partir de sp* et sq* consiste dans un premier temps à calculer s* selon la formule: s* = [xq.Sq *+q * .((iq.(s p * sq *))mod p*)] II reste ensuite à réduire s* en s. Cette réduction pourra s'écrire par exemple: s * mod(xq.N) s= Xq Cette dernière variante de calcul sera préférée car elle ne nécessite pas de conserver p et q en mémoire. En outre, p et q n'auront ni besoin d'être manipulés ni calculés, ce qui permet d'accroître la sécurité du procédé de mise en oeuvre de l'algorithme de cryptographie.
En outre, le calcul du message signé s consistant à recombiner directement les exponentiations modulaires intermédiaires sp* et sq* comme ci-dessus peut être utilisé dans tout autre procédé cryptographique de type RSA, en mode CRT, qui utilise des exponentiations modulaires intermédiaires sp* et sq* calculés respectivement à partir des modules intermédiaires p* et q* (qui sont eux-mêmes respectivement issus des modules p et q).
On pourra par exemple calculer s* selon la formule: s* = sq * +q.((iq (sp * sq *)) mod p*) Puis réduire s* en s, en utilisant par exemple la réduction modulaire: s=s*modN En effet, l'utilisation de cette recombinaison particulière permettra un gain de mémoire et de temps de calcul.
En outre, comme illustré à la figure 3, si le module intermédiaire q* est calculé de telle sorte que q* = K.q, avec K une valeur quelconque (déterministe ou aléatoire), alors on pourra calculer le message signé ou déchiffré s à partir de sp* et sq* en calculant dans un premier temps s* selon 10 la formule: s* = [K.sq * +q *.((iq.(sp * sq *)) mod p*)] La réduction de s* permet d'obtenir le message signé ou déchiffré s. On pourra par exemple utiliser la réduction modulaire suivante: s * mod(K.N) s=
K
Dans ce cas, l'économie de mémoire et de temps de calcul sera augmentée puisque p et q ne seront pas manipulés, ce qui renforce la sécurité.
Le lecteur aura compris que de nombreuses modifications peuvent être apportées sans sortir matériellement des nouveaux enseignements et des avantages décrits ici. Par conséquent, toutes les modifications de ce type sont destinées à être incorporées à l'intérieur de la portée du procédé cryptographique selon l'invention et des composants électroniques permettant de mettre en oeuvre ce procédé.
Claims (32)
1. Procédé cryptographique asymétrique appliqué à un message M, caractérisé en ce qu'il comprend une opération privée consistant à signer ou déchiffrer le message M pour obtenir un message signé ou déchiffré s, l'opération privée étant définie à partir d'au moins une exponentiation modulaire EM de la forme EM = M A mod B, A et B étant respectivement l'exposant et le module de l'exponentiation modulaire EM, et l'opération privée comprenant les étapes consistant à : Calculer un module intermédiaire B*, un message intermédiaire M* et un exposant intermédiaire A*, en fonction de B, M et/ou A; le module intermédiaire B* étant calculé de façon déterministe et le message intermédiaire M* étant calculé de façon aléatoire; Calculer une exponentiation modulaire intermédiaire EM*=M *A* modB* ; - Calculer le message signé ou déchiffré s à partir de l'exponentiation modulaire intermédiaire EM*.
2. Procédé selon la revendication 1, caractérisé en ce que l'étape consistant à calculer le message signé ou déchiffré s est réalisée par réduction de l'exponentiation modulaire intermédiaire EM*.
3. Procédé selon la revendication 2, caractérisé en ce qu'il utilise une clé publique et une clé privée, la clé publique étant composée d'un module N de type RSA et d'un exposant public e, et la clé privée étant composée du module N de type RSA et d'un exposant privé d, tel que e.d = l mod ç(N) , étant la fonction indicatrice d'Euler, et en ce que l'opération privée est définie à partir de l'exponentiation modulaire s = Md mod N, d et N correspondant respectivement à l'exposant A et au module B de l'exponentiation modulaire EM, et comprend les étapes 30 consistant à : a) Calculer un module intermédiaire N* de façon déterministe, tel que N* = xN.N avec xN une valeur publique dépendant de N et M; b) Calculer un message intermédiaire M* de façon aléatoire, tel que M* = M + x,ti1.N avec xM une valeur aléatoire telle que XN et xM soient premiers entres eux; c) Calculer une exponentiation modulaire intermédiaire s* = M * mod N * , d* correspondant à l'exposant intermédiaire A * ; d) Réduire l'exponentiation modulaire intermédiaire s* afin d'obtenir le message signé ou déchiffré s.
4. Procédé selon la revendication 3, caractérisé en ce que l'étape a) consistant à calculer un module intermédiaire N* de façon déterministe comprend les étapes consistant à : a1) Calculer une valeur /i, telle que /1= f (M, N) , avec f une fonction déterministe et publique; a2) Calculer la valeur publique xN telle que xN = 2 2.T, avec T un coefficient de normalisation de la multiplication modulaire; a3) Calculer le module intermédiaire N* tel que N* = xN.N.
5. Procédé selon la revendication 4, caractérisé en ce que l'étape b) consistant à calculer un message intermédiaire M* de façon aléatoire comprend les étapes consistant à : b1) Tirer un nombre aléatoire r1; b2) Calculer xM = 1 + 2.r1.T; b3) Calculer le message intermédiaire M* = M + xM.N.
6. Procédé selon l'une quelconque des revendications 4 ou 5, caractérisé en ce que l'étape a1) consistant à calculer la valeur /, comprend les étapes consistant à : a11) Décomposer M et N tels que M = E M, 2 w et N = E Nl w.
avec w un entier non nul; a12) Construire la valeur /1, telle que = (Mi) + (Ni) avec 6a une fonction appartenant au groupe de l'ensemble des permutations S de longueur a, et avec z1 = M1 + j +z+ N mod2" , zo pouvant être fixé à une valeur quelconque.
7. Procédé selon l'une quelconque des revendications 3 à 6, caractérisé en ce que l'exposant intermédiaire d* est tel que d* = d + r2.(1 e.d) , avec r2 un nombre tiré aléatoirement.
8. Procédé selon l'une quelconque des revendications 3 à 6, caractérisé en ce que l'exposant intermédiaire d* est tel que d* = d.
9. Procédé selon la revendication 1, caractérisé en ce qu'il utilise une clé publique et une clé privée, la clé publique étant composée d'un module N de type RSA, produit de deux grands nombres premiers p et q, et d'un exposant public e, et la clé privée étant composée du quintuplet (p,q,dp,dq,iq) avec d p = d mod(p -1) , dq = d mod(q -1) , et iq = q ' mod p, d étant tel que e.d =1 mod ç(N) , q étant la fonction indicatrice d'Euler, et en ce que l'opération privée est définie à partir de l'exponentiation modulaire s p = M dp mod p, d, et p correspondant respectivement à l'exposant A et au module B de l'exponentiation modulaire EM, et comprend les étapes consistant à : a1) Calculer un module intermédiaire p* de façon déterministe, tel que p* = xf,.p, avec xp une valeur publique dépendant de N et M; a2) Calculer un message intermédiaire Mp* de façon aléatoire, tel que m p * = [(M mod p*) + xMp.p] mod p * , avec xMP une valeur aléatoire telle que x, et xMP soient premiers entres eux; a3) Calculer une exponentiation modulaire intermédiaire sp* telle que s p * = M p *dP* mod p * , dp* correspondant à l'exposant intermédiaire A*.
10. Procédé selon la revendication 9, caractérisé en ce que l'étape a2) est remplacée par l'étape a2') consistant à calculer un message intermédiaire Mp* tel que Mp * = [M + xMp.p] mod p * , avec xMP une valeur aléatoire 15 telle que xp et xMP soient premiers entres eux.
11. Procédé selon l'une quelconque des revendications 9 ou 10, caractérisé en ce que l'étape a1) consistant à calculer un module intermédiaire p* de façon déterministe comprend les étapes consistant à : a11) Calculer une valeur /IP telle que Â,P = f p (M, N mod 2 k) , avec fp une fonction déterministe et publique, et k un nombre entier positif non nul a12) Calculer la valeur publique xp telle que xp = /1,p.T avec T un coefficient de normalisation de la multiplication modulaire; 25 a13) Calculer le module intermédiaire p*.
36 2888690
12. Procédé selon la revendication 11, caractérisé en ce que l'étape a2) consistant à calculer un message intermédiaire Mp* de façon aléatoire comprend les étapes consistant à : a21) Tirer un nombre aléatoire ri; a22) Calculer la valeur aléatoire xMP telle que xn,, =1 + . 11,.i; .T; a23) Calculer le message intermédiaire Mp*.
13. Procédé selon l'une quelconque des revendications 9 à 12, caractérisé en ce que l'exposant intermédiaire dp* est tel que dP * = dP + Y,dp.(p -1) , 10 avec dp tel que dp == fdp (M, N mod 2k) , 4, étant une fonction déterministe et publique, distincte de fP, et k étant un entier positif non nul.
14. Procédé selon l'une quelconque des revendications 9 à 12, caractérisé 15 en ce que l'exposant intermédiaire dp* est tel que dp* =: dp.
15. Procédé selon l'une quelconque des revendications 9 à 14, caractérisé en ce que l'opération privée est en outre définie à partir de l'exponentiation modulaire sq = M dq mod q, et comprend les étapes supplémentaires 20 consistant à : b1) Calculer un module intermédiaire q* de façon déterministe, tel que q* = xq.q, avec xq une valeur publique dépendant de N et M; b2) Calculer un message intermédiaire Mq* de façon aléatoire, tel que Mq * _ [(M mod q*) + xMq.q] mod q, avec xMq une valeur aléatoire telle que xq et xMq soient premiers entres eux; b3) Calculer une exponentiation modulaire intermédiaire sq* telle que sq * = Mq *dq* mod q * , avec dq* un exposant intermédiaire.
16. Procédé selon la revendication 15, caractérisé en ce que l'étape b2) est remplacé par l'étape b2') consistant à calculer un message intermédiaire Mq* tel que Mq * = [M + xMq.q] mod q * , avec xMq une valeur aléatoire 5 telle que xq et xMq soient premiers entres eux.
17. Procédé selon l'une quelconque des revendications 15 ou 16, caractérisé en ce que l'étape b1) consistant à calculer un module intermédiaire q*de façon déterministe, comprend les étapes consistant à : b11) Calculer une valeur 2q telle que /.q = fq (M, N mod 2k) , avec fq une fonction déterministe et publique, et k un nombre entier positif non nul; b12) Calculer la valeur publique xq telle que xq = q.T, avec T un coefficient de normalisation de la multiplication modulaire; 15 b13) Calculer le module intermédiaire q*.
18. Procédé selon la revendication 17, caractérisé en ce que l'étape b2) consistant à calculer un message intermédiaire Mq'k de façon aléatoire comprend les étapes consistant à : b21) Tirer un nombre aléatoire r2; b22) Calculer la valeur aléatoire xMq telle que xMq = 1 +)1q.r2.T; b23) Calculer le message intermédiaire Mq*.
19. Procédé selon l'une quelconque des revendications 15 à 18, 25 caractérisé en ce que l'exposant intermédiaire dq* est tel que dq*=dq +) dq.(q 1), avec 2L,dq tel que)dq = .fdq (M, N mod 2 k) , fdq étant une fonction déterministe et publique, distincte de fq, et k étant un nombre entier positif non nul.
2888690 38
20. Procédé selon l'une quelconque des revendications 15 à 18, caractérisé en ce que l'exposant intermédiaire dq* est tel que dq* = dq.
21. Procédé selon l'une quelconque des revendications 11 à 20, caractérisé en ce que le nombre k est inférieur à 128.
22. Procédé selon l'une quelconque des revendications 9 à 21, caractérisé en ce que l'opération privée comprend en outre l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir de sp* et sq*.
23. Procédé selon la revendication 22, caractérisé en ce que l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir de sp* et sq* comprend les étapes consistant à : 15 - Recombiner sp* et sq* tels que: s* = sq * +q.((iq (si, * sq *)) mod p*) Réduire s* en s.
24. Procédé selon la revendication 23, caractérisé en ce que l'étape 20 consistant à réduire s* en s est effectuée selon la réduction modulaire s=s *mod N.
25. Procédé selon la revendication 22, caractérisé en ce que l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir 25 de sp* et sq* comprend les étapes consistant à : Recombiner sp* et sq* tels que: s* = [xq.sq *+q* . iq.(sp * sq*))mod p*)] s * mod(xq.N) Calculer s = xq
26. Procédé selon la revendication 22, caractérisé en ce que l'étape consistant à calculer l'exponentiation modulaire s = M d mod N à partir de sp* et sq* comprend les étapes consistant à : Réduire l'exponentiation modulaire sp* afin de déterminer l'exponentiation modulaire sp; Réduire l'exponentiation modulaire sq* afin de déterminer l'exponentiation modulaire sq; - Recombiner sp et sq tels que: s = sq + q. ((iq.(s p sq)) mod p)
27. Procédé cryptographique asymétrique appliqué à un message M à signer ou déchiffrer en un message signé ou déchiffré s, caractérisé en ce que le procédé cryptographique utilise une clé publique et une clé privée, la clé publique étant composée d'un module N de type RSA, produit de deux grands nombres premiers p et q, et d'un exposant public e, et la clé privée étant composée du quintuplet (p,q,dp,dq,iq) avec d p = d mod(p -1) , dq = d mod(q -1) , et iq = q--' mod p, d étant tel que e.d = l mod q(N) , Ç étant la fonction indicatrice d'Euler, et comprend une opération privée définie à partir des exponentiations modulaires sp et sq telles que sp = M jp mod p et: sq = M dq mod q, l'opération privée comprenant les étapes consistant à : Calculer un module intermédiaire p* à partir de p et un module intermédiaire q* à partir de q; Calculer les exponentiations modulaires intermédiaires sp* et sq*, sp* et sq* étant calculés respectivement à partir des modules p* et q* ; Calculer le message signé ou déchiffré s en combinant sp* et sq*.
28. Procédé selon la revendication 27, caractérisé en ce que le message signé ou déchiffré s est calculé suivant les étapes consistant à : Recombiner sp* et sq* tels que: s* = sq * +q.((iq (s p * sq *)) mod p*) Réduire s* en s.
29. Procédé selon la revendication 28, caractérisé en ce que l'étape consistant à réduire s* en s est effectuée selon la réduction modulaire s =s*modN.
30. Procédé selon la revendication 27, caractérisé en ce que le module intermédiaire q* est calculé de telle sorte que q* = K.q, avec K une valeur déterministe ou aléatoire, et en ce que le message signé ou déchiffré s est calculé suivant les étapes consistant à : - Recombiner sp* et sq* tels que: s* _ [K.sq * +q *.((iq.(sp * sq*))mod p*)]
31. Composant électronique caractérisé en ce qu'il comprend des moyens 20 pour la mise en oeuvre du procédé cryptographique selon l'une quelconque des revendications précédentes.
32. Carte à puce comprenant un composant électronique selon la revendication précédente.
s * mod(K.N) - Calculer s =
K
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0507519A FR2888690A1 (fr) | 2005-07-13 | 2005-07-13 | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
US11/988,750 US20090122980A1 (en) | 2005-07-13 | 2006-07-13 | Cryptographic Method for Securely Implementing an Exponentiation, and an Associated Component |
EP06764162A EP1904921A1 (fr) | 2005-07-13 | 2006-07-13 | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
PCT/EP2006/064228 WO2007006810A1 (fr) | 2005-07-13 | 2006-07-13 | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0507519A FR2888690A1 (fr) | 2005-07-13 | 2005-07-13 | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2888690A1 true FR2888690A1 (fr) | 2007-01-19 |
Family
ID=36103656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0507519A Pending FR2888690A1 (fr) | 2005-07-13 | 2005-07-13 | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
Country Status (4)
Country | Link |
---|---|
US (1) | US20090122980A1 (fr) |
EP (1) | EP1904921A1 (fr) |
FR (1) | FR2888690A1 (fr) |
WO (1) | WO2007006810A1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2605444A1 (fr) * | 2011-12-16 | 2013-06-19 | Gemalto SA | Procédé pour la signature ou le déchiffrement d'un message à l'aide d'un algorithme de type CRT RSA résistant aux attaques par canaux cachés différentielles |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8280041B2 (en) * | 2007-03-12 | 2012-10-02 | Inside Secure | Chinese remainder theorem-based computation method for cryptosystems |
EP2154604A1 (fr) * | 2008-08-06 | 2010-02-17 | Gemalto SA | Contre-mesure pour sécuriser la cryptographie à base d'exponentiation |
EP2401734B1 (fr) * | 2009-02-27 | 2016-04-20 | Certicom Corp. | Système et procédé de réalisation d'exponentiation dans un système cryptographique |
US8572406B2 (en) * | 2010-03-31 | 2013-10-29 | Inside Contactless | Integrated circuit protected against horizontal side channel analysis |
JP5848106B2 (ja) * | 2011-11-28 | 2016-01-27 | ルネサスエレクトロニクス株式会社 | 半導体装置及びicカード |
TW201810989A (zh) * | 2016-05-18 | 2018-03-16 | 納格維遜股份有限公司 | 用以保護密碼指數的方法及系統 |
CN110730072B (zh) * | 2019-10-22 | 2023-02-03 | 天津津航计算技术研究所 | 针对rsa密码应用的抗侧信道攻击方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2399904A (en) * | 2003-03-28 | 2004-09-29 | Sharp Kk | Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption. |
FR2858496A1 (fr) * | 2003-07-31 | 2005-02-04 | Gemplus Card Int | Procede pour la mise en oeuvre securisee d'un algorithme de cryptographie de type rsa et composant correspondant |
FR2864390A1 (fr) * | 2003-12-19 | 2005-06-24 | Gemplus Card Int | Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa. |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10143728B4 (de) * | 2001-09-06 | 2004-09-02 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation |
JP2004226674A (ja) * | 2003-01-23 | 2004-08-12 | Renesas Technology Corp | 情報処理方法 |
-
2005
- 2005-07-13 FR FR0507519A patent/FR2888690A1/fr active Pending
-
2006
- 2006-07-13 WO PCT/EP2006/064228 patent/WO2007006810A1/fr active Application Filing
- 2006-07-13 EP EP06764162A patent/EP1904921A1/fr not_active Withdrawn
- 2006-07-13 US US11/988,750 patent/US20090122980A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2399904A (en) * | 2003-03-28 | 2004-09-29 | Sharp Kk | Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption. |
FR2858496A1 (fr) * | 2003-07-31 | 2005-02-04 | Gemplus Card Int | Procede pour la mise en oeuvre securisee d'un algorithme de cryptographie de type rsa et composant correspondant |
FR2864390A1 (fr) * | 2003-12-19 | 2005-06-24 | Gemplus Card Int | Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa. |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2605444A1 (fr) * | 2011-12-16 | 2013-06-19 | Gemalto SA | Procédé pour la signature ou le déchiffrement d'un message à l'aide d'un algorithme de type CRT RSA résistant aux attaques par canaux cachés différentielles |
Also Published As
Publication number | Publication date |
---|---|
EP1904921A1 (fr) | 2008-04-02 |
WO2007006810A1 (fr) | 2007-01-18 |
US20090122980A1 (en) | 2009-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2946284B1 (fr) | Procédé de cryptographie comprenant une opération de multiplication par un scalaire ou une exponentiation | |
EP2215768B1 (fr) | Procede et dispositifs de protection d'un microcircuit contre des attaques visant a decouvrir une donnee secrete | |
EP1166494B1 (fr) | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique | |
FR2888690A1 (fr) | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe | |
EP1151576B1 (fr) | Procede cryptographique a cles publique et privee | |
EP1969459A1 (fr) | Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée | |
EP2162820A1 (fr) | Mise a la puissance modulaire selon montgomery securisee contre les attaques a canaux caches | |
WO2009109715A2 (fr) | Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature | |
WO2009112686A2 (fr) | Procede et dispositifs de contre-mesure pour cryptographie asymetrique | |
EP1895404B1 (fr) | Brouillage d'un calcul effectué selon un algorithme RSA-CRT | |
EP1804161B1 (fr) | Détection de perturbation dans un calcul cryptographique | |
EP2983083B1 (fr) | Procede de cryptographie sur courbe elliptique comprenant une detection d'erreur | |
EP1224765B1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa | |
CA2257907A1 (fr) | Procede de cryptographie a cle publique | |
FR2818846A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie | |
WO1998051038A1 (fr) | Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d'aleas | |
FR3004042A1 (fr) | Procedes de generation et d'utilisation de cles cryptographiques privees pour le rsa-crt ou les variantes du rsa-crt | |
EP4404501A1 (fr) | Protection contre les attaques par canal auxiliaire d'un algorithme cryptographique impliquant une table de substitution | |
EP1695204A2 (fr) | Procede d'exponentiation modulaire protege contre les attaques du type dpa | |
EP4270855A1 (fr) | Protection contre les attaques par canal auxiliaire a l aide d'un masquage carre | |
FR3010562A1 (fr) | Procede de traitement de donnees et dispositif associe | |
WO2002050658A1 (fr) | Procedes de contre-mesure dans un composant electronique mettant en ouvre un algorithme de cryptographie a cle publique de type rsa | |
FR3013476A1 (fr) | Securisation de procede de cryptographie sur courbes elliptiques | |
WO2006064112A2 (fr) | Procédé de traitement de données utilisant une fonction de couplage et dispositif associé | |
FR2878390A1 (fr) | Systeme et procede cryptographiques pour chiffrer des donnees d'entree |