FR2941798A1 - Appareil pour calculer un resultat d'une multiplication scalaire - Google Patents
Appareil pour calculer un resultat d'une multiplication scalaire Download PDFInfo
- Publication number
- FR2941798A1 FR2941798A1 FR1000432A FR1000432A FR2941798A1 FR 2941798 A1 FR2941798 A1 FR 2941798A1 FR 1000432 A FR1000432 A FR 1000432A FR 1000432 A FR1000432 A FR 1000432A FR 2941798 A1 FR2941798 A1 FR 2941798A1
- Authority
- FR
- France
- Prior art keywords
- point
- auxiliary
- result
- scalar multiplication
- processor
- 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
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000006870 function Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 240000005020 Acaciella glauca Species 0.000 description 1
- 201000004569 Blindness Diseases 0.000 description 1
- 239000008000 CHES buffer Substances 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000036039 immunity Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 235000003499 redwood Nutrition 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- 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/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7261—Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique comprend un sélecteur de point et un processeur. Le sélecteur de point est configuré pour sélectionner de manière aléatoire ou pseudo- aléatoire un point auxiliaire sur la courbe elliptique. Le processeur est configuré pour calculer le résultat de la multiplication scalaire avec un processus `double-and-always-add' à l'aide du point auxiliaire.
Description
Appareil pour Calculer un Résultat d'une Multiplication Scalaire
Historique Les modes de réalisation de l'invention concernent un appareil ou un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique. 10 L'utilisation de courbes elliptiques remplace de plus en plus le procédé RSA (procédé de Rivest-Shamir-Adleman) dans les systèmes de cryptographie à clé publique. La cryptographie pour courbes elliptiques a été proposée par 15 V. Miller dans "Victor S. Miller. Use of Elliptic Curves in Cryptography. Dans Hugh C. Williams, editor, CRYPTO, volume 218 of Lecture Notes in Computer Science, pages 417-426. Springer, 1985" et N. Koblitz dans "Neil Koblitz. Elliptic Curve Cryptosystems. Mathematics of 20 Computation, 48:203-209, 1987".
La litérature d'introduction relative aux courbes elliptiques et leur cryptographie comprend, par exemple, les livres de texte "Henri Cohen and Gerhard Frey, 25 editors. Handbook of Elliptic and Hyperelliptic curve Cryptography. Chapman & Hall/CRC, 2006." et "Ian Blake, Gadiel Seroussi et Nigel Smart. Advances in Elliptic Curve Cryptography (London Mathematical Society Lecture Note Series). Cambridge University Press, New York, NY, 30 USA, 2005," Un bon article d'un bref aperçu est, par exemple, "Alfred Menezes and Scott A. Vanstone. Elliptic Curve Cryptosystems and Their Implementations. J. Cryptology, 6(4):229-224, 1993". Etant donné que les courbes elliptiques ont été étudiées par les 35 mathématiciens déjà au 19ème siècle et avant, la litérature générale dans cette direction est ingérable, mais ne peut le plus souvent être lue que par les mathématiciens.5 Tandis que dans RSA, l'étape cruciale pour le cryptage et le décryptage ou pour la génération d'une signature et la vérification d'une signature est l'élévation à une puissance md mod N d'un message m modulo un grand nombre N qui est le produit de deux grands nombres premiers secrets, le processus crucial de la cryptographie de courbes elliptiques est la multiplication scalaire d'un nombre par un point sur la courbe.
Une courbe elliptique E: = E(F) sur un champ fini F est un groupe commutatif (Abélien) fini. Les éléments de ce groupe sont une solution d'une équation du troisième degré dans ce champ, par exemple: E(F) = {(x,y) E FxF : y2=x3+ax+b}U{O}
ou, plus généralement, E(F) = { (x,y) e FxF : y2+dxy+ey = x3+ax2+cx+b}U{O}
où a, b, c, d, e sont des éléments de F qui doivent remplir certaines propriétés. Par ailleurs, un point artificial O est ajouté. Sur cet ensemble est définie une addition, ce qui signifie que deux points P, Q de E(F) peuvent être ajoutés (et également soustraits), de sorte que soit créé un nouveau point R=P+Q sur cette courbe. Les lois suivantes sont valides: 1. Associativité: (P+Q)+R=P+(Q+R). 2. L'existence d'un élément d'identité: O+P=P, 3. L'existence des éléments inverses (-P) à p, de sorte que: (-P)+P'=0. 4. Commutativité: P+Q=Q+P. Ces lois font de la courbe elliptique un groupe Abélien. Dans un tel groupe, une multiplication scalaire kP est automatiquement définie par:35 kP = P+P+ . . +P (k fois)
où k est un nombre entier parmi Z et P est un point sur la courbe. Cette multiplication scalaire est l'opération centrale dans la cryptographie de courbes elliptiques. Le plus souvent, le scalaire k est l'un des secrets.
Aussi, la multiplication scalaire doit être mise en œuvre de manière sécurisée, de sorte que la chance de découvrir le scalaire k, par exemple, par attaques par canal latéral telles que SPA ou DPA, par attaques par faute ou attaques par erreur de sauvegarde, soit aussi réduite que possible.
Les attaques par canal latéral sont, par exemple, des attaques de mises en œuvre de systems cryptographiques qui utilisent des observations de timings, de consommation d'énergie ou de radiation électromagnétique, pour obtenir les informatios secrètes qui sont originalement supposées être mémorisées de manière sûre. Dans l'analyse d'énergie simple (SPA), un attaqueur observe directement la consommation d'énergie du dispositif. Par exemple, la quantité d'énergie consommée par le dispositif varie en fonction des données opérées sur et des instructions exécutées pendant les différentes parties d'une exécution de l'algorithme.
L'analyse d'énergie différentielle (DPA) exploite le comportement caractéristique (par exemple, le comportement de consommation d'énergie de transistors et de portes logiques). La DPA utilise un modèle d'attaque et une analyse statistique pour extraire les informations cachées d'un grand échantillon de traces d'énergie obtenues pendant le calcul cryptographique contrôlé. L'utilisation de procédés statistiques dans un environnement DPA contrôlé permet d'identifier de petites différences de consommation d'énergie qui peuvent être utilisées, par exemple, pour récupérer des informations spécifiques, telles que des bits individuels dans une clé secrète.
Les attaques par erreur sont, par exemple, des attaques par erreur de sauvegarde de calcul (attaques par erreur de sauvegarde C) ou des attaques par erreur de sauvegarde en mémoire (attaques par erreur de sauvegarde M). L'attaque par erreur de sauvegarde de calcul peut être développée en induisant toute erreur de calcul aléatoire temporaire dans l'unité logique arithmétique (ALU). Une attaque par erreur de sauvegarde en mémoire requiert d'induire une erreur de mémoire temporaire dans un registre ou un emplacement de mémoire.
Une mise en œuvre sécurisée de cette multiplication scalaire dans des systèmes cryptographiques tels que, par exemple, cartes intelligentes, PC ou autres produits de sécurité est d'une grande importance. Cela inclut une protection, par exemple, contre les attaques par canal latéral, telle que SPA (analyse d'énergie simple) et DPA (analyse d'énergie différentielle), les attaques par erreur et les attaques par erreur de sauvegarde.
Par exemple, un procédé aisé pour la mise en œuvre d'une multiplication scalaire dP est le soi-disant procédé `Double-and-Add' (= Doubler et Additionner): entrée: d= (dn_1 .. d1 do) 2 nombre entier, P Point sur la courbe sortie: d*P Q:=0; pour (i:=n-1) à 0 par -1 do Q , 2*Q si (di=1), puis Q Q+P // est maintenant (D D i*P, D _ (dn-1 di+1 di) 2 fin fin retour Q
C'est le procédé le plus connu. Malheureusement, il n'est pas sécurisé contre SPA et DPA, parce que le doublage est habituellement calculé par des formules autres que l'addition de deux points sur la courbe. Ces deux procédés peuvent habituellement être surveillés par la caractéristique de courant et la clé secrète peut aisément être déterminée.
Aussi, un procédé `Double-and-always-Add' (= Doubler et toujours Additionner) est souvent proposé: entrée: d= (dn_1 ... d~ do) 2 nombre entier, P Point sur la courbe sortie: d*P Q:=0; pour (i:=n-1) à 0 par -1 do Q E- 2 * Q si (di=1) , puis QQ+P autrement T F- Q+P fin // est maintenant Q = Di*P, Di= (dä_1 ... di+1 di) 2 fin retour Q La caractéristique de courant est ainsi équilibrée et une telle attaque n'est plus possible. D'autre part, cette mise en oeuvre ouvre la porte pour les attaques par erreur de sauvegarde (voir par exemple "Sung-Ming Yen and Marc Joye. Checking Before Output May Not Be Enough Against Fault-Based Cryptoanalysis. IEEE Trans. Computers, 49(9):967-90, 2000"). Etant donné que le deuxième trajet de l'instruction si/autrement peut être interrompu sans modifier la sortie, un attaqueur peut en extraire des 5 informations su le scalaire secret.
Les deux procédés présentent également l'inconvénient de ne pas être sécurisés contre DPA et d'autres attaques par erreur s'ils sont mis en oeuvre de manière naïve.
Un autre procédé pour amener le problème de SPA sous contrôle est l'échelle de Montgomery: entrée: d= (dn_1 .. d1 do) 2 nombre entier, P Point sur la courbe sortie: d*P Qo =0 ; Q1 =P; pour (i:=n-1) à 0 par -1 do (Q1-di, Qdi) F- (Qo+Q1, 2*Qdi) // est maintenant Qb = (Di+b) *P, Di= (dn_1 ... di+1 di) 2 fin fin retour Qo Ici, chaque passage consiste également en une addition et un doublage et est, de ce fait, sécurisé contre SPA. Le problème de DPA continue à exister. Ce procédé peut calculer l'addition plus rapidement que les autres algorithmes montrés dans "Wieland Fischer, Christophe Giraud, Erik Woodward Knudsen and Jean-Pierre Seifert. Parallel scalar multiplication on general elliptic curves over Fp hedged against Non-Differential Side-Channel Attacks. IACR, Cryptology ePrint Archive, (007), janvier 2007. Disponible sur http://eprint.iacr.orq/2002/007". "Tetsuya Izu and Tsuyoshi Takagi. A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks. Dans David Naccache and Pascal Paillier, editors Public Key Cryptography, volume 2274 de Lecture Notes in Computer Science, pages 280-296. Springer, 2002." et "Marc Joye and Sung.Ming Yen. The Montgomery Powering Ladder. Dans Burton S. Kaliski Jr., C etin Kaya Ko c and Christof Paar, editors. Cryptographic Hardware and Embedded Systems - CHES 2002, 41h International Workshop, Redwood Shores, CA, USA, 13-15 août 2002, Revised Paper, volume 2523 de Lecture Notes in Computer Science. Springer, 2003., pages 291-302.". Brève Description des Dessins
Ci-après sont expliqués plus en détail des modes de réalisation selon l'invention, en référence aux figures 10 jointes en annexe, dans lesquelles:
la figure 1 est un schéma-bloc d'un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une 15 courbe elliptique;
la figure 2 est un schéma-bloc d'un système cryptographique;
20 la figure 3 est un schéma opérationnel d'un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique; et
25 la figure 4 est un schéma opérationnel d'un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique.
30 Description Détaillée de Modes de Réalisation
La figure 1 illustre un schéma-bloc d'un appareil 100 pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur 35 une courbe elliptique selon un mode de réalisation de l'invention. L'appareil 100 comprend un sélecteur de point 110 relié à un processeur 120.5 Le sélecteur de point 110 est configuré pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire 112 sur la courbe elliptique.
Le processeur 120 est configuré pour calculer le résultat de la multiplication scalaire par un processus `doubleand-always-add' à l'aide du point auxiliaire 112.
Le point auxiliaire 112 peut être sélectionné indépendamment du point de référence ou peut être sélectionné sur base d'une fonction de mélange appliquée au point de référence. Une fonction de mélange du point de référence peut, par exemple, être une fonction stochastique qui génère un nombre aléatoire sur base du point de référence. Le point auxiliaire 112 peut être basé sur le nombre aléatoire. Alternativement, la fonction de mélange peut être une fonction déterministe du point de référence utilisant un nombre aléatoire ou pseudo-aléatoire.
En calculant le résultat de la multiplication scalaire par un processus `double-and-always-add' à l'aide du point auxiliaire 112, le calcul peut être masqué par le point auxiliaire. Le fait de masquer le calcul et du résultat de la multiplication scalaire et d'utiliser un processus `double-and-always-add' peut résulter en une mise en oeuvre résistant à SPA, DPA et à l'attaque par erreur de sauvegarde du calcul du résultat de la multiplication scalaire.
Le processeur 120 peut être configuré pour calculer un résultat d'une addition du point auxiliaire 112 avec lui-même et de la soustraction du point auxiliaire 112 d'un point intermédiaire ou d'une addition du point auxiliaire négatif et du point intermédiaire. La soustraction du point auxiliaire ou l'addition du point auxiliaire négatif donne le même résultat, mais la mise en oeuvre peut être différente. 29417.98 9 Par ailleurs, si le processeur 120 est configuré pour calculer le résultat de la multiplication scalaire sans utilisation d'instructions factices, le calcul du 5 résultat peut être protégé contre des attaques par erreur de sauvegarde. Les instructions factices concernent, par exemple, les instructions qui sont basées sur un paramètre secret de la multiplication scalaire (par exemple le nombre de référence) et n'ont pas d'influence 10 sur le résultat de la multiplication scalaire.
Le calcul du résultat de la multiplication scalaire peut être immun aux attaques par erreur de sauvegarde. Immun, dans ce cas, signifie que la multiplication est protégée 15 le mieux possible. Il est probable qu'une immunité à 100% ne puisse jamais être obtenue.
Par ailleurs, le processeur 120 peut être configuré pour exécuter une boucle. La boucle peut être exécutée N fois, 20 où N est un nombre de bits que le nombre de référence comprend dans une représentation binaire. Par exemple, si le nombre de référence est égal à 9, la représentation binaire du nombre de référence serait 1001 et le nombre de bits que le nombre de référence comprend serait égal à 25 4. Alternativement, le nombre de bits que le nombre de référence comprend peut être défini par les bits pertinents du nombre de référence. Par exemple, si le nombre de référence est égal à 9, la représentation binaire du nombre de référence serait 1001, mais le 30 nombre de référence peut être représenté par 8 bits (par exemple du fait d'une grandeur de registre) et, de ce fait, 00001001. Les zéros initiaux peuvent alors ne pas faire partie des bits pertinents. Par ailleurs, certains bits peuvent être traités pendant un prétraitement et, de 35 ce fait, le nombre de bits que le nombre de référence comprend peut être égal au nombre de bits non prétraités. Par exemple, si le nombre de référence en représentation binaire était 1001 et que le premier bit était traité pendant un prétraitement, le nombre de bits que le nombre de référence comprend serait égal à 3. Un exemple peut consister à initialiser le point intermédiaire par un point obtenu autrement en exécutant la boucle la première fois.
De plus, le processeur 120 peut être configuré pour calculer un point intermédiaire actuel en fonction d'une valeur d'un nombre de référence. Par exemple, si la valeur d'un bit du nombre de référence est égale à 1, le point de référence est additionné et le point auxiliaire est soustrait du point intermédiaire, pour obtenir un point intermédiaire actuel. Autrement, si la valeur du bit du nombre de référence est égale à o, seul le point auxiliaire 112 est soustrait du point intermédiaire, pour obtenir le point intermédiaire actuel.
Par ailleurs, le processeur 120 peut être configuré pour calculer le point intermédiaire actuel pendant l'exécution de la boucle. Le point intermédiaire calculé peut être basé sur le point auxiliaire 112. En d'autres termes, le point intermédiaire peut être masqué par le point auxiliaire 112.
Dans certains modes de réalisation selon l'invention, tous les points intermédiaires calculés pendant l'exécution de la boucle peuvent être basés sur le point auxiliaire 112. En d'autres termes, toute l'exécution de la boucle peut être masquée par le point auxiliaire 112.
De plus, le processeur 120 peut être configuré pour régler ou initialiser un point intermédiaire égal au point auxiliaire.
Le processeur 120 peut calculer le résultat de la multiplication scalaire su base du point intermédiaire. En d'autres termes, pendant le calcul, il peut être calculé un point intermédiaire qui est égal au résultat masqué de la multiplication scalaire. Sur base de ce résultat masqué peut être déterminé le résultat de la multiplication scalaire. De cette manière, tout le calcul peut être masqué par le point auxiliaire 112 jusqu'à ce que le résultat soit indirectement disponible en termes de résultat masqué.
Certains modes de réalisation selon l'invention concernent un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique comprenant un moyen pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire et un moyen pour calculer le résultat de la multiplication scalaire par un processus `double-and-always-add' à l'aide du point auxiliaire.
Le moyen pour sélectionner le point auxiliaire peut correspondre au sélecteur de point précité et peut, par exemple, être un processeur, une CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique), un processeur cryptographique, un circuit raccordé fixe ou un programme de logiciel à exécuter par une CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique) ou un processeur cryptographique d'un système cryptographique.
Le moyen pour calculer le résultat de la multiplication scalaire peut correspondre au processeur précité et peut être la CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique), un processeur cryptographique, un circuit raccordé fixe ou un programme de logiciel à exécuter par une CPU (central processing unit = unité de traitement centrale) d'un ordinateur, une ALU (arithmetic logic unit = unité logique arithmétique) ou un processeur cryptographique d'un système cryptographique.
Le moyen pour sélectionner le point auxiliaire et le moyen pour calculer le résultat de la multiplication scalaire peuvent tous deux être un programme de logiciel à exécuter par la même CPU (central processing unit = unité de traitement centrale) d'un ordinateur, ALU (arithmetic logic unit = unité logique arithmétique) ou processeur cryptographique d'un système cryptographique.
La figure 2 illustre un schéma-bloc d'un système cryptographique 200 avec un appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique selon un mode de réalisation de l'invention. Le système cryptographique 200 comprend le sélecteur de point 110, le processeur 120, une mémoire 220, une interface entrée-sortie 230 et un générateur de nombre aléatoire 240.
Le système cryptographique 200 peut être mis en œuvre, par exemple, dans une carte intelligente 210, une carte à puce ou un ordinateur.
La mémoire 220 est reliée au processeur 120 et configurée pour mémoriser, par exemple, le nombre de référence, le point de référence sur la courbe elliptique, la courbe elliptique elle-même ou les paramètres de la courbe elliptique, le point auxiliaire et/ou le point intermédiaire.
L'interface entrée-sortie 230 est reliée au processeur 120 et configurée pour fournir les données de sortie 232 vers l'extérieur et les données d'entrées 232 de l'extérieur au processeur 120. De plus, un générateur de nombre aléatoire 240 peut être relié au sélecteur de point 110. Le générateur de nombre aléatoire 240 peut fournir un nombre aléatoire, par exemple, indépendant du point de référence. Le générateur de nombre aléatoire 240 peut être un générateur de vrai nombre aléatoire déterminant le nombre aléatoire, par exemple sur base d'une propriété d'une boucle à phase verrouillée (PLL) ou d'un trafic de bus dans le système cryptographique, ou un générateur de nombre pseudoaléatoire tel que par exemple un registre à décalage de rétroaction linéaire ou non linéaire. Le sélecteur de point 110 peut sélectionner le point auxiliaire sur base du nombre aléatoire.
La figure 3 illustre un schéma opérationnel d'un procédé 300 pour calculer le résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique selon un mode de réalisation de l'invention. Le procédé 300 comprend la sélection 310 de manière aléatoire ou pseudo-aléatoire d'un point auxiliaire sur la courbe elliptique et le calcul 320 du résultat de la multiplication scalaire par un processus `double-and-always-add' à l'aide du point auxiliaire.
La figure 4 illustre une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique selon un mode de réalisation de l'invention.
Tout d'abord, le point auxiliaire B est sélectionné comme décrit plus haut (illustré au numéro de repère 310) et un point intermédiaire Q est réglé égal au point auxiliaire (illustré au numéro de repère 410).
Ensuite, un compteur i est réglé égal au nombre de bits que le nombre de référence comprend dans une représentation binaire (illustré au numéro de repère 420).
Dans la boucle, tout d'abord, le compteur i est décrémenté de 1 (illustré au numéro de repère 430), suivi du doublage 440 du point intermédiaire.
L'étape suivante dépend de la valeur d'un bit actuel di du nombre de référence (illustré au numéro de repère 450). Un bit actuel est le bit du nombre de référence qui est associé à la valeur actuelle du compteur i. Par exemple, si la représentation binaire du nombre de référence est 1000 et que la boucle est exécutée jusqu'à ce que le compteur i soit égal à 0, le bit à la valeur 1 correspond à un compteur actuel égal à 3.
Si la valeur du bit actuel di du nombre de référence est égal à 1, le point intermédiaire est égal au point intermédiaire plus le point de référence moins le point auxiliaire (Q=Q+(P-B), illustré au numéro de repère 460). Autrement, si la valeur du bit actuel di du nombre de référence est égal à 0, le point intermédiaire est réglé au point intermédiaire moins le point auxiliaire (Q=Q+(-B), illustré au numéro de repère 470).
Après cela, la boucle est exécutée une nouvelle fois si le compteur i est supérieur à 0 (illustré au numéro de repère 480). Autrement, si le compteur i est égal à 0, le résultat de la multiplication scalaire est calculé par soustraction du point auxiliaire du point intermédiaire (Q-Q+(-B), illustré au numéro de repère 490).
L'algorithme du procédé illustré 400 peut également être représenté de la manière suivante:
entrée: d= (dn_1 ... d~ do) 2 nombre entier, P Point sur la courbe sortie: d*P choisir le point aléatoire B sur la courbe; Q:=B; pour (i:=n-1) à o par -1 do Q<-2*Q // est maintenant Q = 2*Di+1*P + 2*B, si (di=l) Q <- Q+(P-B) // est maintenant Q = (2*Di+1+l)*P + B, autrement Q<--Q+(-B) // est maintenant Q = 2*Di+1*P + B, fin // est maintenant Q = Di*P + B, fin Q<- Q+ (-B) retour Q Dans cet exemple, d est la représentation binaire du nombre de référence à numéros de bit commençant par 0 pour le dernier bit important et le numéro le plus élevé pour le bit le plus important. Par ailleurs, P représente le point de référence, B le point auxiliaire, Q le point intermédiaire et i le compteur. Di indique un nombre égal à une valeur représentée par des bits du nombre de référence commençant par les (n-i) bits les plus importants. Par exemple, si le nombre de référence en représentation binaire est 1010, D3 serait égal à 1, D2 serait ègal à 10 en représentation binaire et 2 en représentation décimale, DI serait égal à 101 en représentation binaire et 5 en représentation décimale et Do serait égal à 1010 en représentation binaire et 10 en représentation décimale.
Tel qu'illustré dans cet exemple, tout le calcul est masqué par le point auxiliaire. Ce n'est que lorsque le résultat final de la multiplication scalaire est calculé avec la dernière étape 490 que le masquage est enlevé.
Pendant le calcul, un point intermédiaire peut être recouvert par un nouveau point intermédiaire, alternativement, plusieurs points intermédiaires différents peuvent être utilisés.
Le procédé décrit peut également être appelé procédé "blended double-and-always-add" (= mélangé doubler et toujours additionner).
Certains modes de réalisation selon l'invention concernent un procédé qui utilise le fait que l'inverse additif d'un point sur une courbe elliptique peut être calculé de manière triviale et/ou qu'une soustraction de deux points peut requérir les mêmes efforts qu'une addition.
Le procédé décrit peut permettre de réaliser une multiplication scalaire dans laquelle tous les points intermédiaires sont randomisés (du fait du calcul à base d'un point auxiliaire). Aussi, le procédé est, en principe, resistant à DPA. Par ailleurs, le procédé comprend un cours continu "double-and-always-add" qui fournit une sécurité SPA. Par ailleurs, une attaque par erreur de sauvegarde ne peut plus être possible, parce qu'il n'existe pas d'instruction factice.
Dans certains modes de réalisation selon l'invention, une sécurité DPA peut être établie en calculant avec un scalaire randomisé ou en calculant en soi-disant coordonnées projectives. Celles-ci peuvent être aisément randomisées.
Certains modes de réalisation selon l'invention concernent une mise en œuvre d'une multiplication scalaire sur un dispositif tel que, par exemple, une carte à puce, une carte intelligente, un ordinateur ou un autre système cryptographique par un procédé aussi efficace que possible. Etant que ces puces sont par ailleurs conçues comme unités sécurisées, la multiplication scalaire devrait être protégée contre un 15 20 tas d'attaques par canal latéral différentes telles que, par exemple, SPA et DPA, attaques par erreur et attaques par erreur de sauvegarde.
Certains autres modes de réalisation selon l'invention concernent un procédé `double-and-add' dans lequel un point intermédiaire est toujours masqué par un point choisi de manière aléatoire sur la même courbe: Di * P + B, avec di= (dn_1 ... di+1 d di) 2.
Un aspect est le fait que, pendant chaque exécution de la boucle, une étape d'addition suit chaque doublage. Du fait du doublage est obtenue la valeur suivante:
2*Di*P + 2*B.
Mais, après tout, la valeur suivante devrait être obtenue: (2*Di +b) * P + B, avec = 2 * Di + b,
où B est la valeur du bit associé du nombre de référence. Aussi, soit -B (moins le point auxiliaire), soit P - B 25 (le point de référence moins le point auxiliaire) doit être additionné. Ainsi, il n'y a pas de nécessité d'une addition factice et le procédé est sécurisé contre des attaques par erreur de sauvegarde.
30 Certains modes de réalisation selon l'invention concernent une multiplication scalaire sur des courbes elliptiques avec aveuglement additif, sécurisée contre SPA, DPA et attaques par erreur de sauvegarde.
35 En général, les points sur la courbe elliptique, tels que par exemple le point de référence, le point auxiliaire et le point intermédiaire, peuvent être représentés par leurs coordonnées (par exemple coordonnées cartésiennes ou coordonnées projectives) pendant le calcul. Il peut également être possible de représenter un point sur la courbe elliptique par uniquement l'une des coordonnées (par exemple uniquement la coordonnée x du point) pendant le calcul.
Dans la présente demande, les mêmes numéros de repère sont partiellement utilisés pour des objets et unités fonctionnelles ayant des propriétés fonctionnelles identiques ou similaires.
Bien que certaines revendications ne soient en rapport qu'avec une seule autre revendication, une combinaison avec d'autres revendications peut également être possible.
En particulier, il est souligné que, en fonction des conditions, le schéma de l'invention peut également être mis en œuvre en logiciel. La mise en œuvre peut être sur un support de mémoire numérique, en particulier une disquette ou un CD avec des signaux de commande pouvant être lus électroniquement à même de coopérer avec un système d'ordinateur programmable de sorte que soit réalisé le procédé correspondant. En général, l'invention consiste donc également en un programme d'ordinateur avec un code de programme mémorisé sur un support lisible en machine pour réaliser le procédé de l'invention lorsque le programme d'ordinateur est exécuté sur un ordinateur. Dit en d'autres termes, l'invention peut donc également être réalisée comme programme d'ordinateur avec un code de programme pour réaliser le procédé lorsque le programme d'ordinateur est exécuté sur un ordinateur.
Certains modes de réalisation selon l'invention concernent un procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique. Le procédé comporte la sélection de manière aléatoire ou pseudo- aléatoire d'un point auxiliaire sur la courbe elliptique, dans lequel le point auxiliaire est sélectionné indépendamment du point de référence; le réglage d'un point intermédiaire égal au point auxiliaire; l'exécution d'une boucle, où la boucle est exécutée N fois, où N est un nombre de bits que le nombre de référence comprend dans une représentation binaire; et le calcul du résultat de la multiplication scalaire sur base d'une soustraction du point auxiliaire du point intermédiaire ou d'une addition du point auxiliaire négatif et du point intermédiaire. L'exécution de la boucle comporte le calcul d'un résultat d'une addition du point intermédiaire avec lui-même; et le calcul d'un point intermédiaire actuel en fonction d'une valeur d'un bit actuel du nombre de référence, où le nombre de référence est représenté de manière binaire, où le point intermédiaire actuel est égal au point intermédiaire plus le point de référence moins le point auxiliaire si la valeur du bit actuel est égale à 1 ou où le point intermédiaire actuel est égal au point intermédiaire actuel moins le point auxiliaire si la valeur du bit actuel est égale à O.
Claims (21)
- Revendications1. Appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: un sélecteur de point configuré pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et un processeur configuré pour calculer le résultat de la multiplication scalaire par un processus `double-andalways-add' à l'aide du point auxiliaire. 15
- 2. Appareil selon la revendication 1, dans lequel le sélecteur de point est configuré pour sélectionner le point auxiliaire indépendamment du point de référence ou dans lequel le point auxiliaire est sélectionné sur base d'une fonction de mélange appliquée au point de 20 référence.
- 3. Appareil selon la revendication 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire d'une manière qui est immune 25 contre les attaques par erreur de sauvegarde.
- 4. Appareil selon la revendication 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sans utilisation d'une opération 30 factice.
- 5. Appareil selon la revendication 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base d'une boucle qui, par 35 exécution, fonctionne sur un point intermédiaire, et configuré pour régler le point intermédiaire égal au point auxiliaire avant une première exécution de la boucle, où la boucle est exécutée N fois, où N est un 2010nombre de bits que le nombre de référence comprend dans une représentation binaire.
- 6. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer le résultat d'une addition du point intermédiaire avec lui-même, où l'addition du point intermédiaire avec lui-même fait partie de la boucle.
- 7. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer le résultat d'une soustraction du point auxiliaire du point intermédiaire, où la soustraction fait partie de la boucle, ou dans lequel le processeur est configuré pour calculer le résultat d'une addition du point auxiliaire négatif et du point intermédiaire, où l'addition fait partie de la boucle.
- 8. Appareil selon la revendication 7, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base de l'addition du point auxiliaire auxiliaire l'addition l'addition avec du du du lui-même et la soustraction du point point intermédiaire ou sur base de point auxiliaire avec lui-même et de point auxiliaire négatif et du point intermédiaire.
- 9. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer un point intermédiaire actuel en fonction d'une valeur d'un bit du nombre de référence, où le nombre de référence est représenté de forme binaire.
- 10. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer un point intermédiaire actuel pendant l'exécution de la boucle, ou le point intermédiaire actuel est basé sur le point auxiliaire.
- 11. Appareil selon la revendication 10, dans lequel tous les points intermédiaires calculés pendant l'exécution de la boucle sont basés sur le point auxiliaire.
- 12. Appareil selon la revendication 5, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base du point intermédiaire. 10
- 13. Appareil selon la revendication 1, comprenant: une mémoire couplée au processeur et configurée pour mémoriser le nombre de référence, le point de référence sur la courbe elliptique, le courbe elliptique elle-même 15 ou les paramètres de la courbe elliptique, et/ou le point auxiliaire; et un générateur de nombre aléatoire couplé au sélecteur de point et configuré pour fournir un nombre aléatoire, où 20 le nombre aléatoire est utilisé par le sélecteur de point pour sélectionner le point auxiliaire sur la courbe elliptique.
- 14. Appareil selon la revendication 5, comprenant par 25 ailleurs: une mémoire couplée au processeur et configurée pour mémoriser le nombre de référence, le point de référence sur la courbe elliptique, la courbe elliptique elle-même 30 ou les paramètres de la courbe elliptique, le point auxiliaire et/ou le point intermédiaire; et un générateur de nombre aléatoire couplé au sélecteur de point et configuré pour fournir un nombre aléatoire, où 35 le nombre aléatoire est utilisé par le sélecteur de point pour sélectionner le point auxiliaire sur la courbe elliptique. 35
- 15. Appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: un moyen pour sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et un moyen pour calculer le résultat de la multiplication scalaire avec un processus `double-and-always-add' à l'aide du point auxiliaire.
- 16. Appareil pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: un sélecteur de point configuré pour sélectionner un point auxiliaire aléatoire ou pseudo-aléatoire sur la courbe elliptique, où le point auxiliaire est sélectionné indépendamment du point de référence; et un processeur configuré pour régler un point intermédiaire égal au point auxiliaire et configuré pour exécuter une boucle, où la boucle est exécutée N fois, où N est un nombre de bits que le nombre de référence comprend dans une représentation binaire, et où le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base d'une soustraction du point auxiliaire du point intermédiaire ou d'une addition du point auxiliaire négatif et du point intermédiaire.
- 17. Apparatus selon la revendicationim 1, dans lequel le processeur est configuré pour calculer le résultat de la multiplication scalaire sur base de l'algorithme suivant: choisir le point aléatoire B sur la courbe; Q:=B; pour (i:=n-l) à 0 par -1 do 24Q4-2*Q si (di=l) Q (- Q+(P-B) autrement Q~-Q+(-B) fin fin Q û Q+ (-B) retour Q, où Q est auxiliaire, actuel du référence. un point intermédiaire, B est le point i est un compteur, di est une valeur d'un bit nombre de référence et P est le point de
- 18. Système cryptographique, comprenant l'appareil selon la revendication 1.
- 19. Système cryptographique selon la revendication 18, 20 dans lequel le système cryptographique est une carte intelligente.
- 20. Procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un 25 point de référence sur une courbe elliptique, comprenant: sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et 30 calculer le résultat de la multiplication scalaire avec un processus `double-and-always-add' à l'aide du point auxiliaire.
- 21. Programme d'ordinateur avec un code de programme 35 pour réaliser le procédé pour calculer un résultat d'une multiplication scalaire d'un nombre de référence par un point de référence sur une courbe elliptique, comprenant: 10 15sélectionner de manière aléatoire ou pseudo-aléatoire un point auxiliaire sur la courbe elliptique; et calculer le résultat de la multiplication scalaire avec 5 un processus `double-and-always-add' à l'aide du point auxiliaire.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/366,222 US8542820B2 (en) | 2009-02-05 | 2009-02-05 | Apparatus for calculating a result of a scalar multiplication |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2941798A1 true FR2941798A1 (fr) | 2010-08-06 |
FR2941798B1 FR2941798B1 (fr) | 2016-07-22 |
Family
ID=42338893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1000432A Active FR2941798B1 (fr) | 2009-02-05 | 2010-02-03 | Appareil pour calculer un resultat d'une multiplication scalaire |
Country Status (3)
Country | Link |
---|---|
US (2) | US8542820B2 (fr) |
DE (1) | DE102010001289B4 (fr) |
FR (1) | FR2941798B1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3055444A1 (fr) * | 2016-08-23 | 2018-03-02 | Maxim Integrated Products, Inc | Dispositif et procedes de commande de dispositif de cryptage sur courbe elliptique securises |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012090284A1 (fr) * | 2010-12-27 | 2012-07-05 | 三菱電機株式会社 | Dispositif arithmétique, procédé de multiplication scalaire elliptique et programme de multiplication scalaire elliptique pour dispositif arithmétique, procédé d'opération multiplicative et programme d'opération multiplicative pour dispositif arithmétique, et procédé de détermination de zéro et programme de détermination de zéro pour dispositif arithmétique |
FR3016987B1 (fr) * | 2014-01-29 | 2017-07-21 | Morpho | Echelle de montgomery desequilibree |
US9419789B2 (en) | 2014-09-05 | 2016-08-16 | Umm Al-Qura University | Method and apparatus for scalar multiplication secure against differential power attacks |
US9590805B1 (en) * | 2014-12-23 | 2017-03-07 | EMC IP Holding Company LLC | Ladder-based cryptographic techniques using pre-computed points |
FR3033965B1 (fr) | 2015-03-18 | 2018-12-07 | Maxim Integrated Products, Inc. | Systèmes et procédés de commande de dispositifs de cryptage sur courbe elliptique sécurisés |
US9531531B2 (en) | 2015-05-06 | 2016-12-27 | Qualcomm Incorporated | Methods and devices for fixed execution flow multiplier recoding and scalar multiplication |
US10270598B2 (en) | 2016-08-26 | 2019-04-23 | Intel Corporation | Secure elliptic curve cryptography instructions |
US11146397B2 (en) * | 2017-10-31 | 2021-10-12 | Micro Focus Llc | Encoding abelian variety-based ciphertext with metadata |
CN112422288B (zh) * | 2020-10-26 | 2023-06-27 | 中国科学院大学 | 一种抗能量分析攻击的基于sm2算法的两方协同签名方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3821631B2 (ja) * | 2000-05-30 | 2006-09-13 | 株式会社日立製作所 | 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体 |
JP4067818B2 (ja) * | 2001-12-10 | 2008-03-26 | 富士通株式会社 | 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法 |
JP4034585B2 (ja) * | 2002-01-28 | 2008-01-16 | 松下電器産業株式会社 | 楕円曲線演算装置及び楕円曲線演算方法 |
WO2004055756A1 (fr) * | 2002-12-18 | 2004-07-01 | Fujitsu Limited | Codage d'une courbe elliptique inviolable |
WO2005015526A1 (fr) * | 2003-08-06 | 2005-02-17 | Fujitsu Limited | Dispositif, procede et programme de codage de courbe elliptique, et support d'enregistrement lisible par ordinateur enregistrant un tel programme |
DE602005015157D1 (de) * | 2004-05-11 | 2009-08-13 | St Microelectronics Sa | Verzweigungsschutz in einem Programm |
JP4668931B2 (ja) * | 2005-01-24 | 2011-04-13 | 富士通株式会社 | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 |
US7602907B2 (en) * | 2005-07-01 | 2009-10-13 | Microsoft Corporation | Elliptic curve point multiplication |
JP4513752B2 (ja) * | 2006-01-16 | 2010-07-28 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
US7864951B2 (en) * | 2006-07-10 | 2011-01-04 | King Fahd University Of Petroleum And Minerals | Scalar multiplication method with inherent countermeasures |
KR20080012633A (ko) * | 2006-08-04 | 2008-02-12 | 삼성전자주식회사 | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 |
KR100867989B1 (ko) * | 2006-12-06 | 2008-11-10 | 한국전자통신연구원 | 단순전력분석에 안전한 Left-to-Right방향으로 리코딩과 스칼라 곱셈을 동시에 수행하는 스칼라곱셈 방법 |
US7983415B2 (en) | 2006-12-19 | 2011-07-19 | King Fahd University Of Petroleum And Minerals | Method for performing iterative scalar multiplication which is protected against address bit attack |
CA2593723C (fr) * | 2007-06-27 | 2016-04-19 | Certicom Corp. | Echelles de montgomery multidimensionnelles pour courbes elliptiques |
US7991154B2 (en) * | 2008-05-14 | 2011-08-02 | Univeristy of Castilla-La Mancha | Exponentiation method using multibase number representation |
US8369517B2 (en) * | 2008-08-12 | 2013-02-05 | Inside Secure | Fast scalar multiplication for elliptic curve cryptosystems over prime fields |
US9400636B2 (en) * | 2011-02-11 | 2016-07-26 | Infineon Technologies Ag | Apparatus and method for calculating a result in a scalar multiplication |
-
2009
- 2009-02-05 US US12/366,222 patent/US8542820B2/en active Active
-
2010
- 2010-01-27 DE DE102010001289.0A patent/DE102010001289B4/de active Active
- 2010-02-03 FR FR1000432A patent/FR2941798B1/fr active Active
-
2013
- 2013-08-22 US US13/973,360 patent/US8879726B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3055444A1 (fr) * | 2016-08-23 | 2018-03-02 | Maxim Integrated Products, Inc | Dispositif et procedes de commande de dispositif de cryptage sur courbe elliptique securises |
US10680819B2 (en) | 2016-08-23 | 2020-06-09 | Maxim Integrated Products, Inc. | Systems and methods for operating secure elliptic curve cryptosystems |
Also Published As
Publication number | Publication date |
---|---|
US20130346461A1 (en) | 2013-12-26 |
DE102010001289B4 (de) | 2024-03-14 |
DE102010001289A1 (de) | 2010-08-19 |
FR2941798B1 (fr) | 2016-07-22 |
US8879726B2 (en) | 2014-11-04 |
US8542820B2 (en) | 2013-09-24 |
US20100195821A1 (en) | 2010-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR2941798A1 (fr) | Appareil pour calculer un resultat d'une multiplication scalaire | |
EP1166494B1 (fr) | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique | |
CA2614120C (fr) | Multiplication de points d'une courbe elliptique | |
CN106664205B (zh) | 生成数字签名的***和方法、非瞬时计算机可读存储介质 | |
US7908641B2 (en) | Modular exponentiation with randomized exponent | |
EP2946284A1 (fr) | Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation | |
EP3117555B1 (fr) | Procédé de contremesure pour un composant électronique mettant en oeuvre un algorithme de cryptographie sur une courbe elliptique | |
FR2895609A1 (fr) | Procede cryptographique comprenant une exponentiation modulaire securisee contre les attaques a canaux caches, cryptoprocesseur pour la mise en oeuvre du procede et carte a puce associee | |
EP2162820A1 (fr) | Mise a la puissance modulaire selon montgomery securisee contre les attaques a canaux caches | |
FR2809893A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique | |
WO2009109715A2 (fr) | Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature | |
Yi et al. | On the importance of checking multivariate public key cryptography for side-channel attacks: the case of enTTS scheme | |
EP1166495A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique | |
KR20200059600A (ko) | 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법 | |
FR3024808A1 (fr) | Procede de cryptographie sur courbe elliptique comprenant une detection d’erreur | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
Zhou et al. | A third is all you need: extended partial key exposure attack on CRT-RSA with additive exponent blinding | |
EP1639451A2 (fr) | Procédé de contre-mesure par masquage de l'accumulateur | |
Feng et al. | Efficient comb elliptic curve multiplication methods resistant to power analysis | |
Shim et al. | Lite-Rainbow: lightweight signature schemes based on multivariate quadratic equations and their secure implementations | |
WO2002001343A1 (fr) | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique de koblitz | |
FR2856538A1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme cryptographique du type a cle publique | |
EP1222528B1 (fr) | Procede d'amelioration de performance de l'operation de multiplication sur un corps fini de caracteristique 2 | |
Kasiri et al. | A Novel Algebraic Approach to Power Analysis Attack-Resistant Countermeasure for Koblitz Curve Cryptosystems in Mobile Devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |
|
PLFP | Fee payment |
Year of fee payment: 9 |
|
PLFP | Fee payment |
Year of fee payment: 11 |
|
PLFP | Fee payment |
Year of fee payment: 12 |
|
PLFP | Fee payment |
Year of fee payment: 13 |
|
PLFP | Fee payment |
Year of fee payment: 14 |
|
PLFP | Fee payment |
Year of fee payment: 15 |