EP1994465A1 - Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device - Google Patents

Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device

Info

Publication number
EP1994465A1
EP1994465A1 EP07726722A EP07726722A EP1994465A1 EP 1994465 A1 EP1994465 A1 EP 1994465A1 EP 07726722 A EP07726722 A EP 07726722A EP 07726722 A EP07726722 A EP 07726722A EP 1994465 A1 EP1994465 A1 EP 1994465A1
Authority
EP
European Patent Office
Prior art keywords
value
register
initial
component
calculation
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.)
Withdrawn
Application number
EP07726722A
Other languages
German (de)
French (fr)
Inventor
Marc Joye
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales DIS France SA
Original Assignee
Gemplus SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gemplus SA filed Critical Gemplus SA
Publication of EP1994465A1 publication Critical patent/EP1994465A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Definitions

  • the present invention relates to a method of calculating an exponentiation or a multiplication by a scalar, with particular application in the field of cryptology.
  • the invention applies in particular to cryptographic algorithms implemented in electronic devices such as smart cards.
  • y x r
  • x an element of a set multiplicatively noted
  • r a predetermined number, which encode a value y.
  • the value y may correspond, for example, to an encrypted text or to a signed or verified data item.
  • the SAM algorithm can be written in the following way:
  • the method generally used is to remove conditional branching at the value of the number r (the secret key), so that an algorithm can be obtained. constant code.
  • the secure binary method thus becomes the "square and multiply always" method, or SMA algorithm, that is to say a method in which a multiplication and a squared elevation are systematically performed.
  • a first object of the invention is to provide a scalar multiplication calculation method which is relatively protected against single-channel hidden attacks and "safe-error" type attacks.
  • Another object of the invention is to provide a method of calculating the multiplication by a scalar that is unconditional.
  • Another object of the invention is to provide a scalar multiplication calculation method that is relatively efficient in terms of the number of operations.
  • Another object of the invention is to provide a scalar multiplication calculation method that is relatively efficient in terms of the types of operations to be implemented.
  • Another object of the invention is to provide a scalar multiplication calculation method that is relatively efficient in terms of used memory space.
  • Another object of the invention is to perform a multiplication calculation by a scalar by performing only type 2A + B doubling and adding operations.
  • the invention which firstly relates to a method for calculating a multiplication of an element of a group that is additionally denoted by a scalar, said scalar being decomposed into a representation comprising a plurality of components, each of said components taking a component value from at least a first component value and a second component value, said method being intended to be implemented in an electronic device, said electronic device comprising at least one memory comprising at least a first register and a second register, said first register storing a first register value, said second register storing a second register value characterized in that said method comprises the steps of:
  • the register value corresponding to the current value of the register at each iteration, is modified for example according to a formula of the type Rb ⁇ - 2.Rb + Rkj if kj is the binary value of the component of the representation during the iteration, b being 1 -kj.
  • the operations performed at each step on registers Ro and Ri are therefore of the type 2.R 0 + Ri or 2.Ri + R 0 at each iteration.
  • said memory may comprise a third register, said third register storing a third register value
  • the aforementioned method may comprise the steps of: assigning to said third registering a third initial register value as a third register value, said second initial register value depending on said first initial register value and said second initial register value; said iteration comprising steps of: when said component is equal to said first component value, Calculating a first calculation value equal to said first register value added to said third register value;
  • a third register R2 is introduced, and the calculation at each iteration of the value 2.Ro + Ri (respectively 2.R1 + R 0 ) is performed by an intermediate calculation of the type Ro + R2 (respectively Ri + R 2 ), the register R 2 keeping as third register value, the value R 0 + Ri equal to the first register value added to the second register value.
  • This embodiment may be advantageous if only the addition operation is implemented in the electronic device on which the method according to the invention is implemented.
  • said representation comprises an initial component taking an initial component value from a first initial component value and a second component value.
  • initial component and the aforementioned method may comprise, following said iteration, steps of:
  • said group comprises a neutral element
  • said first initial register value may be equal to said neutral element and said second initial register value may be equal to said element.
  • said first initial register value may be equal to said element and said second initial register value may be equal to said element, and said third initial register value may be twice that of said element.
  • the invention also relates to a cryptographic device for calculating a multiplication of an element of a group noted additionally by a scalar, said scalar being decomposed into a representation comprising a plurality of components each of said components taking a component value from at least a first component value and a second component value, wherein said device comprises calculating means and at least one memory, said memory comprising at least : a first register; a second register; and wherein said calculating means is adapted to perform the aforementioned process steps.
  • said memory may comprise a third register and said calculation means may be able to carry out the aforementioned method steps, especially when a third register is used.
  • the invention also relates to a smart card comprising a device as described above.
  • It also relates to a cryptographic system based on a cryptographic algorithm involving at least one calculation of a multiplication of an element of a group noted additionally by a scalar said calculation being performed by a device as described above.
  • FIG. 1 is a flowchart of the main elements of an electronic device, for example a smart card, to implement the invention
  • FIG. 2 represents a diagram of the method implemented in the calculation of a multiplication by a scalar according to a first embodiment of the invention
  • FIG. 3 represents a diagram of the method implemented in the calculation of a multiplication by a scalar according to a second embodiment of the invention.
  • FIG. 4 represents a general diagram of the method implemented in the present invention.
  • FIG. 1 represents, in block diagram form, an electronic device capable of performing multiplication calculations by a scalar.
  • this device is a smart card for executing a cryptographic program.
  • the device 1 combines in a chip programmed computing means, composed of a central unit 2 operatively connected to a set of memories including: - a memory 4 accessible in read only, in the example of the type ROM mask also known as "mask Read-Only Memory” or “mask ROM”,
  • an electrically reprogrammable memory 6 in the example of the EEPROM type (of the English “Electrically Erasable Programmable ROM”), and
  • This memory 8 comprises in particular the registers used by the device 1.
  • the executable code corresponding to the multiplication algorithm is contained in program memory. This code can in practice be stored in memory 4, read-only, and / or memory 6, rewritable.
  • the central unit 2 is connected to a communication interface 10 which ensures the exchange of signals vis-à-vis the outside and the supply of the chip.
  • This interface may include pads on the card for a so-called “contact” connection with a reader, and / or an antenna in the case of a so-called “contactless” card.
  • One of the functions of the device is to encrypt and decrypt confidential data respectively transmitted to and received from outside. These data may concern, for example, personal codes, medical information, accounting on banking or commercial transactions, or access authorizations to certain restricted services. Another function is the calculation of a digital signature or its verification.
  • the central unit 2 executes a cryptographic algorithm from programming data stored in the ROM mask 4 and / or EEPROM 6 portions.
  • the number y thus obtained is a piece of data encrypted, decrypted, signed or verified.
  • the number r (the key) is stored in a portion of memory writable 6, EEPROM type in the example.
  • the central unit stores the number x, transmitted by the communication interface 10, to working memory 8, in a calculation register.
  • the central unit will read the key r contained in rewritable memory 6, for the temporary storage, the exponentiation calculation time, in a calculation register of the working memory. The central unit then launches the exponentiation or multiplication algorithm with a scalar according to the invention.
  • the multiplication algorithm with a scalar is implemented as follows in pseudo language:
  • the method according to the invention thus comprises a step of initialization of two registers Ro and Ri, an iteration step on the components ki of the scalar k, in which if ki is 0, calculates 2.Ri + R 0 and we replace Ri by this value and if ki is 1, we calculate 2.R 0 + Ri and we replace Ro by this value.
  • the value of the register Ro is then returned.
  • the + sign is used to denote the addition in a group noted additionally or to designate the addition between two scalars;
  • the sign - is used to designate the subtraction in a group noted additionally or to designate the subtraction between two scalars;
  • the notation A ⁇ -a denotes the operation of assigning to the variable A the value a. It also refers to the operation of assigning to the register A, the value a.
  • an algorithm is provided that still only performs operations of type 2.A + B, but using only additions, and avoiding the use of computation of a doubling.
  • FIG. 3 The steps of this algorithm ALGORITHM 2 are illustrated schematically FIG. 3.
  • first registers Ro, Ri and R2 are initialized respectively with the values P, P and 2.P.
  • An iteration is then performed on the binary decomposition of k for k ranging from 1 to t-1.
  • the values of the binary decomposition, 0 or 1 are stored for example in a temporary variable b equal to 1 -ki for each component ki of the scalar k. If b is 0, then calculate the value 2. R 0 + Ri and replace Ro with this value. If b is 1, then calculate the value 2.R1 + Ro and replace Ri by this value. This calculation is performed via the register R2 to which a value equal to Ro + Ri is assigned.
  • the register Ro always contains odd multiples of P.
  • the register R2 always contains a multiple of P by a power of 2 for j strictly less than 1-1.
  • Rb is always different from R2 for j between 1 and I-2.

Abstract

The invention relates to a method for calculating a multiplication of an element (P) of an additively denoted group (G) by a scalar (K). According to an embodiment of the invention, one carries out a step of initializing two registers R0 and R1, a step of iterating over the components ki of the scalar k, in which if ki equals 0, then one calculates 2. R1+ R0 and one replaces R1 by this value, and if ki equals 1, one calculates 2. R0 + R1 and one replaces R0 by this value. At the end of the algorithm, the value of the register R0 is then returned. This method possesses the advantage of carrying out a calculation of multiplying by a scalar by carrying out only doubling and adding operations of the type 2.A + B.

Description

PROCÉDÉ DE SÉCURISATION D'UN CALCU L D'UNE METHOD FOR SECURING A CALCU L OF A
EXPONENTIATION OU D'UN E MULTIPLICATION PAR UNEXPONENTIATION OR MULTIPLICATION BY ONE
SCALAIRE DANS U N DISPOSITIF ÉLECTRONIQUESCALER IN AN ELECTRONIC DEVICE
La présente invention concerne un procédé de calcul d'une exponentiation ou d'une multiplication par un scalaire, avec application notamment dans le domaine de la cryptologie.The present invention relates to a method of calculating an exponentiation or a multiplication by a scalar, with particular application in the field of cryptology.
L'invention s'applique en particulier à des algorithmes cryptographiques mis en œuvre dans des dispositifs électroniques tels que des cartes à puce.The invention applies in particular to cryptographic algorithms implemented in electronic devices such as smart cards.
De nombreux algorithmes cryptographiques sont basés sur des calculs d'exponentiation du type y = xr, où x est un élément d'un ensemble noté de façon multiplicative et r un nombre prédéterminé, qui codent une valeur y. Ceci est notamment le cas avec l'algorithme du type RSA (Rivest, Shamir et Adleman). La valeur y peut correspondre par exemple à un texte chiffré ou à une donnée signée ou vérifiée.Many cryptographic algorithms are based on exponentiation calculations of the type y = x r , where x is an element of a set multiplicatively noted and r a predetermined number, which encode a value y. This is particularly the case with the RSA type algorithm (Rivest, Shamir and Adleman). The value y may correspond, for example, to an encrypted text or to a signed or verified data item.
II existe différents types d'algorithmes d'exponentiation . On connaît notamment là méthode binaire de type "élévation au carré et multiplication", plus habituellement connue sous la terminologie anglo-saxonne "square and multiply" (acronyme anglais SAM), la méthode de Yacobi, dite MM3 ou la méthode des fenêtres glissantes.There are different types of exponentiation algorithms. This is known in particular binary method of "squaring and multiplication" type, more usually known in the English terminology "square and multiply" (acronym SAM), the Yacobi method, called MM3 or the sliding windows method.
Ces algorithmes doivent inclure des contre-mesures adaptées contre des attaques visant à découvrir des informations contenues et manipulées dans des traitements effectués par le dispositif de calcul . Notamment, des contre-mesures sont prévues contre les attaques dites à canaux cachés, simples ou différentielles. On entend par attaque à canal caché simple ou différentielle, une attaque basée sur une grandeur physique mesurable de l'extérieur du dispositif, et dont l'analyse directe (attaque simple) ou l'analyse selon une méthode statistique (attaque différentielle) permet de découvrir des informations contenues et manipulées dans des traitements réalisés dans le dispositif. Ces attaques peuvent ainsi permettre de découvrir des informations confidentielles. Ces attaques ont notamment été divulguées par Paul Kocher (Advances in Cryptology - CRYPTO '99, vol . 1666 of Lecture Notes in Computer Science, pp. 388-397. Springer-Verlag, 1999). Parmi les grandeurs physiques qui peuvent être exploitées à ces fins, on peut citer la consommation en courant, le champ électromagnétique... Ces attaques sont basées sur le fait que la manipulation d'un bit, c'est- à-dire son traitement par une instruction particulière a une empreinte particulière sur la grandeur physique considérée selon sa valeur.These algorithms must include suitable countermeasures against attacks aimed at discovering information contained and manipulated in processing performed by the computing device. In particular, countermeasures are provided against attacks called hidden channels, simple or differential. Simple or differential hidden channel attack is understood to mean an attack based on a measurable physical quantity from outside the device, and whose direct analysis (single attack) or statistical analysis (differential attack) makes it possible to discover information contained and manipulated in treatments performed in the device. These attacks can thus reveal confidential information. These attacks have been disclosed by Paul Kocher (Advances in Cryptology - CRYPTO '99, 1666 of Lecture Notes in Computer Science, pp. 388-397, Springer-Verlag, 1999). Among the physical quantities that can be exploited for these purposes are current consumption, the electromagnetic field ... These attacks are based on the fact that the handling of a bit, that is to say its treatment by a particular instruction has a particular imprint on the physical quantity considered according to its value.
Les algorithmes d'exponentiation précités ont dû inclure des contre- mesures pour empêcher de telles attaques de prospérer.The aforementioned exponentiation algorithms had to include countermeasures to prevent such attacks from flourishing.
Une parade efficace aux attaques de type différentiel est de rendre aléatoire les entrées et/ou les sorties de l'algorithme d'exponentiation utilisé pour calculer y=xr. En d'autres termes, il s'agit de rendre aléatoires l'opérande x et/ou l'exposant r.An effective defense to differential type attacks is to randomize the inputs and / or outputs of the exponentiation algorithm used to compute y = x r . In other words, it is a question of making the operand x and / or the exponent r random.
En ce qui concerne les attaques de type simple, on sait sécuriser ces algorithmes en supprimant tous les branchements conditionnels à la valeur de la donnée traitée ou les branchements par lesquels une opération différente est exécutée. Si on prend l'exemple de la méthode la plus couramment utilisée dans les systèmes cryptographiques à clé publique, la méthode binaire, aussi désignée par méthode SAM (pour "square and multiply"), deux variantes de mise en œuvre existent, selon que les bits du nombre r sont balayés de la droite vers la gauche ou de la gauche vers la droite.With regard to simple type attacks, it is possible to secure these algorithms by deleting all the conditional branches to the value of the processed data or the connections by which a different operation is executed. If we take the example of the most commonly used method in public key cryptographic systems, the binary method, also called SAM (for "square and multiply"), two implementation variants exist, depending on whether bits of the number r are scanned from right to left or from left to right.
Dans le premier cas, pour un balayage de la droite vers la gauche, l'algorithme SAM peut s'écrire de la façon suivante:In the first case, for a scan from right to left, the SAM algorithm can be written in the following way:
Entrées de l'algorithme: x, r=(rm.1; rm.2,..., r0) en base 2. Sortie de l'algorithme: y=xr. Registres temporaires utilisés: Ro, Ri- Initialisation: Ro<- 1 (élément neutre de la multiplication); R1 <-x. Pour i=0 à m-1 , faire:Inputs of the algorithm: x, r = (r m, 1, r m , 2 , ..., r 0 ) in base 2. Output of the algorithm: y = x r . Temporary registers used: Ro, Ri- Initialisation: Ro <- 1 (neutral element of the multiplication); R 1 <-x. For i = 0 to m-1, do:
Si r,= 1 , alors Ro<- Ro-Ri Ri <-(R i)2 Fin pour Retourner Ro.If r, = 1, then R o <- Ro-Ri Ri <- (R i) 2 End to Return Ro.
Dans le deuxième cas pour un balayage de la gauche vers la droite, l'algorithme SAM peut s'écrire de la façon suivante:In the second case for a scan from left to right, the SAM algorithm can be written as follows:
Entrées de l'algorithme: x, r=(rm-i, rm.2, ..., r.2) en base 2. Sortie de l'algorithme: y=xr.Inputs of the algorithm: x, r = (r m -i, r m 2 , ..., r 2 ) in base 2. Output of the algorithm: y = x r .
Registres temporaires utilisés: Ro-Temporary registers used: Ro-
Initialisation: Ro<- 1 (élément neutre de la multiplication);Initialization: Ro <- 1 (neutral element of the multiplication);
Pour i=m-1 à 0, faire:For i = m-1 to 0, do:
Ro<-(Ro)2 Si n= 1, alors Ro<- Ro.xRo <- (Ro) 2 If n = 1, then R o <- Ro.x
Fin pourEnd for
Retourner R0. Ces algorithmes possèdent toutefois l'inconvénient de mettre en œuvre une condition sur la valeur des bits r,, ce qui les rendent sensibles à des attaques à canaux cachés.Return R 0 . These algorithms, however, have the disadvantage of implementing a condition on the value of the bits r ,, which makes them sensitive to hidden channel attacks.
Pour sécuriser ces algorithmes vis-à-vis des attaques à canaux cachés de type simple, la méthode généralement utilisée est de supprimer les branchements conditionnels à la valeur du nombre r (la clé secrète), de sorte que l'on obtienne un algorithme à code constant. La méthode binaire sécurisée, devient ainsi la méthode dite " square and multiply always", ou algorithme SMA, c'est-à-dire une méthode dans laquelle une multiplication et une élévation au carré sont systématiquement réalisées.To secure these algorithms against simple-type hidden-channel attacks, the method generally used is to remove conditional branching at the value of the number r (the secret key), so that an algorithm can be obtained. constant code. The secure binary method thus becomes the "square and multiply always" method, or SMA algorithm, that is to say a method in which a multiplication and a squared elevation are systematically performed.
Dans le cas d'un balayage gauche vers droite, l'algorithme SMA sécurisé peut s'écrire comme suit:In the case of left-to-right scanning, the secure SMA algorithm can be written as follows:
Entrées de l'algorithme: x, r=(rm.1; rm.2, ..., r0) en base 2. Sortie de l'algorithme: y=xr. Registres temporaires utilisés : Ro, Ri Variable utilisée : bInputs of the algorithm: x, r = (r m, 1, r m , 2 , ..., r 0 ) in base 2. Output of the algorithm: y = x r . Temporary registers used: Ro, Ri Variable used: b
Initialisation: Ro<- 1 (élément neutre de la multiplication); Pour i=m-1 à 0, faire:Initialization: Ro <- 1 (neutral element of the multiplication); For i = m-1 to 0, do:
Ro<-(Ro)2 b = 1-r, ;Ro <- (Ro) 2 b = 1-r,;
Rb<- R0. x Fin pour Retourner Ro.R b <- R 0 . x End to Return Ro.
Dans cet algorithme, une multiplication inutile est réalisée, lorsque le bit n du nombre r vaut 0. Les performances de l'algorithme sécurisé résultant en termes de nombre de multiplications à effectuer sont donc réduites.In this algorithm, an unnecessary multiplication is performed, when the bit n of the number r is 0. The performance of the resulting secure algorithm in terms of number of multiplications to perform are therefore reduced.
D'une manière générale, la sécurisation des algorithmes d'exponentiation par ajout d'opérations factices vis-à-vis des attaques de type simple affecte les performances de ces algorithmes de manière non négligeable.In general, securing the exponentiation algorithms by adding dummy operations to simple type attacks affects the performance of these algorithms in a significant way.
Par ailleurs, les algorithmes incluant des opérations factices sont sensibles aux attaques de type safe-error. En effet, en injectant une faute à un instant précis lors des calculs, il est possible de détecter si une opération est factice ou non, et de la sorte déduire un secret. Ce type d'attaque de type « safe-error » a par exemple été décrit dans la publication de MM Yen et Joye « Checking before output may not be enough against fault based cryptanalysis » dans le journal I EEE « Transcations on Computers », 49(9) :967-970, 2000.In addition, algorithms that include dummy operations are sensitive to safe-error attacks. Indeed, by injecting a fault at a precise moment during the calculations, it is possible to detect if an operation is dummy or not, and thus to deduce a secret. This type of "safe-error" attack has, for example, been described in the publication by Messrs. Yen and Joye "Checking before output may be based on fault based cryptanalysis" in the I EEE journal "Transcations on Computers", 49 (9): 967-970, 2000.
Enfin, il doit être entendu aux fins de la demande que les calculs d'exponentiation dans des groupes multiplicatifs sont équivalents à des multiplications par un scalaire dans des groupes notés additivement. Dans la suite de la présente demande, et sauf indication du contraire, on utilisera une notation additive, telle qu'utilisée par exemple dans les courbes elliptiques. Cette notation ne doit en aucun être considérée comme une limitation à l'invention .Finally, it must be understood for the purposes of the application that the exponentiation calculations in multiplicative groups are equivalent to multiplications by a scalar in groups noted additionally. In the remainder of the present application, and unless otherwise indicated, an additive notation will be used, as used for example in elliptic curves. This notation should in no way be considered as a limitation to the invention.
L'invention a notamment pour objectif de pallier les inconvénients de l'art antérieur dans le calcul d'une multiplication par un scalaire lors de calculs cryptographiques, notamment lors d'un calcul de clés cryptographiques. En particulier, un premier but de l'invention est de fournir une méthode de calcul de la multiplication par un scalaire qui soit relativement protégée contre les attaques à canaux cachés, simples et les attaques de type « safe-error » .The invention particularly aims to overcome the disadvantages of the prior art in calculating a multiplication by a scalar during cryptographic calculations, especially during a cryptographic key calculation. In particular, a first object of the invention is to provide a scalar multiplication calculation method which is relatively protected against single-channel hidden attacks and "safe-error" type attacks.
Un autre but de l'invention est de fournir une méthode de calcul de la multiplication par un scalaire qui soit non conditionnelle.Another object of the invention is to provide a method of calculating the multiplication by a scalar that is unconditional.
Un autre but de l'invention est de fournir une méthode de calcul de la multiplication par un scalaire qui soit relativement performante en terme de nombre d'opérations.Another object of the invention is to provide a scalar multiplication calculation method that is relatively efficient in terms of the number of operations.
Un autre but de l'invention est de fournir une méthode de calcul de la multiplication par un scalaire qui soit relativement performante en terme de types d'opérations à implémenter.Another object of the invention is to provide a scalar multiplication calculation method that is relatively efficient in terms of the types of operations to be implemented.
Un autre but de l'invention est de fournir une méthode de calcul de la multiplication par un scalaire qui soit relativement performante en termes d'espace mémoire utilisé.Another object of the invention is to provide a scalar multiplication calculation method that is relatively efficient in terms of used memory space.
Un autre but de l'invention est de réaliser un calcul de multiplication par un scalaire en ne réalisant que des opérations de doublement et d'addition de type 2.A + B.Another object of the invention is to perform a multiplication calculation by a scalar by performing only type 2A + B doubling and adding operations.
Au moins un de ces buts est atteint par l'invention qui a d'abord pour objet un procédé pour le calcul d'une multiplication d'un élément d'un groupe noté additivement par un scalaire, ledit scalaire étant décomposé en une représentation comprenant une pluralité de composantes, chacune desdites composantes prenant une valeur de composante parmi au moins une première valeur de composante et une deuxième valeur de composante, ledit procédé étant destiné à être mis en œuvre dans un dispositif électronique, ledit dispositif électronique comprenant au moins une mémoire comprenant au moins un premier registre et un deuxième registre, ledit premier registre stockant une première valeur de registre, ledit deuxième registre stockant une deuxième valeur de registre caractérisé en ce que ledit procédé comprend des étapes consistant à :At least one of these objects is achieved by the invention, which firstly relates to a method for calculating a multiplication of an element of a group that is additionally denoted by a scalar, said scalar being decomposed into a representation comprising a plurality of components, each of said components taking a component value from at least a first component value and a second component value, said method being intended to be implemented in an electronic device, said electronic device comprising at least one memory comprising at least a first register and a second register, said first register storing a first register value, said second register storing a second register value characterized in that said method comprises the steps of:
- affecter audit premier registre une première valeur de registre initiale en tant que première valeur de registre, ladite première valeur de reg istre initiale dépendant dudit élément ; - affecter audit deuxième registre une deuxième valeur de registre initiale en tant que deuxième valeur de registre, ladite deuxième valeur de registre initiale dépendant dudit élément ;assigning to said first register a first initial register value as the first register value, said first initial register value depending on said element; assigning to said second register a second initial register value as a second register value, said second initial register value depending on said element;
- réaliser une itération sur ladite pluralité de composantes de ladite représentation , ladite itération comprenant des étapes consistant à , pour chacune des composantes de ladite représentation : o lorsque ladite composante est égale à ladite première valeur de composante, • calculer une première valeur de calcul égale au double de ladite première valeur de registre additionné à ladite deuxième valeur de registre ;performing an iteration over said plurality of components of said representation, said iteration comprising steps consisting of, for each of the components of said representation: when said component is equal to said first component value, calculating a first equal calculation value twice said first register value added to said second register value;
• affecter ladite première valeur de calcul audit premier registre en tant que première valeur de registre; o lorsque ladite composante est égale à ladite deuxième valeur de composante,Assigning said first calculation value to said first register as the first register value; when said component is equal to said second component value,
• calculer une deuxième valeur de calcul égale au double de ladite deuxième valeur de registre additionné à ladite première valeur de registre ; • affecter ladite deuxième valeur de calcul audit deuxième registre en tant que deuxième valeur de registre;Calculating a second calculation value equal to twice said second register value added to said first register value; Assigning said second calculation value to said second register as a second register value;
- suite à ladite itération, retourner au moins une valeur de registre parmi ladite première valeur de registre et ladite deuxième valeur de registre.following said iteration, returning at least one register value among said first register value and said second register value.
De la sorte, à chaque itération sur les composantes de la représentation du scalaire, seul un des deux registres est modifié. Pour ce registre modifié, la valeur de registre, correspondant à la valeur courante du registre à chaque itération, est modifiée par exemple selon une formule du type Rb <- 2.Rb + Rkj si kj est la valeur binaire de la composante de la représentation lors de l'itération, b valant 1 -kj. Les opérations effectuées à chaque étape sur des registres Ro et Ri sont donc du type 2.R0 + Ri ou 2.Ri + R0 à chaque itération . Ainsi, on calcule une multiplication en n'utilisant que des opérations de doublement et d'addition à chaque itération .In this way, at each iteration on the components of the representation of the scalar, only one of the two registers is modified. For this modified register, the register value, corresponding to the current value of the register at each iteration, is modified for example according to a formula of the type Rb <- 2.Rb + Rkj if kj is the binary value of the component of the representation during the iteration, b being 1 -kj. The operations performed at each step on registers Ro and Ri are therefore of the type 2.R 0 + Ri or 2.Ri + R 0 at each iteration. Thus, a multiplication is calculated using only doubling and adding operations at each iteration.
Selon un mode particulier de réalisation permettant de ne réaliser que des additions à chaque itération, ladite mémoire peut comprendre un troisième registre, ledit troisième registre stockant une troisième valeur de registre, et le procédé susmentionné peut comprendre des étapes consistant à : - affecter audit troisième registre une troisième valeur de registre initiale en tant que troisième valeur de registre, ladite deuxième valeur de registre initiale dépendant de ladite première valeur de registre initiale et de ladite deuxième valeur de registre initiale; - ladite itération comprenant des étapes consistant à : o lorsque ladite composante est égale à ladite première valeur de composante, • calculer une première valeur de calcul égale à ladite première valeur de registre additionné à ladite troisième valeur de registre ;According to a particular embodiment making it possible to carry out only additions at each iteration, said memory may comprise a third register, said third register storing a third register value, and the aforementioned method may comprise the steps of: assigning to said third registering a third initial register value as a third register value, said second initial register value depending on said first initial register value and said second initial register value; said iteration comprising steps of: when said component is equal to said first component value, Calculating a first calculation value equal to said first register value added to said third register value;
• affecter ladite première valeur de calcul audit premier registre en tant que première valeur de registre; o lorsque ladite composante est égale à ladite deuxième valeur de composante,Assigning said first calculation value to said first register as the first register value; when said component is equal to said second component value,
• calculer une deuxième valeur de calcul égale à ladite deuxième valeur de registre additionné à ladite troisième valeur de registre ;Calculating a second calculation value equal to said second register value added to said third register value;
• affecter ladite deuxième valeur de calcul audit deuxième registre en tant que deuxième valeur de registre; o calculer une troisième valeur de calcul égale à ladite première valeur de registre additionnée à ladite deuxième valeur de registre ; o affecter ladite troisième valeur de calcul audit troisième registre en tant que troisième valeur de registre.Assigning said second calculation value to said second register as a second register value; calculating a third calculation value equal to said first register value added to said second register value; assigning said third calculation value to said third register as a third register value.
Selon ce mode de réalisation, on introduit un troisième registre R2, et le calcul à chaque itération de la valeur 2.Ro + Ri (respectivement 2.R1 + R0) est réalisé par un calcul intermédiaire du type Ro + R2 (respectivement Ri + R2), le registre R2 gardant comme troisième valeur de registre, la valeur R0 + Ri égale à la première valeur de registre additionnée à la deuxième valeur de registre. On évite ainsi un calcul de doublement lors de l'itération . Ce mode de réalisation peut être avantageux si seule l'opération d'addition est implémentée dans le dispositif électronique sur lequel est mis en œuvre le procédé selon l'invention . Toujours dans ce mode de réalisation , afin de tenir compte de la parité du scalaire par lequel on multiplie l'élément du groupe, ladite représentation comprend une composante initiale prenant une valeur de composante initiale parmi une première valeur de composante initiale et une deuxième valeur de composante initiale, et le procédé susmentionné peut comprendre, suite à ladite itération , des étapes consistant à :According to this embodiment, a third register R2 is introduced, and the calculation at each iteration of the value 2.Ro + Ri (respectively 2.R1 + R 0 ) is performed by an intermediate calculation of the type Ro + R2 (respectively Ri + R 2 ), the register R 2 keeping as third register value, the value R 0 + Ri equal to the first register value added to the second register value. This avoids a doubling calculation during the iteration. This embodiment may be advantageous if only the addition operation is implemented in the electronic device on which the method according to the invention is implemented. Still in this embodiment, in order to take into account the parity of the scalar by which the element of the group is multiplied, said representation comprises an initial component taking an initial component value from a first initial component value and a second component value. initial component, and the aforementioned method may comprise, following said iteration, steps of:
- lorsque ladite composante initiale a une valeur de composante initiale égale à ladite première valeur de composante initiale ; o calculer une quatrième valeur de calcul égale à ladite première valeur de registre soustraite d'une valeur finale dépendant dudit élément ; o affecter ladite quatrième valeur de calcul audit premier registre en tant que première valeur de registre.when said initial component has an initial component value equal to said first initial component value; calculating a fourth calculation value equal to said first register value subtracted from a final value dependent on said element; assigning said fourth calculation value to said first register as the first register value.
Selon l'invention , il est possible d'ajuster les valeurs initiales des registres permettant de réaliser la multiplication . Ainsi , selon un mode de réalisation , ledit groupe comprend un élément neutre, et ladite première valeur de registre initiale peut être égale audit élément neutre et ladite deuxième valeur de registre initiale peut être égale audit élément.According to the invention, it is possible to adjust the initial values of the registers for carrying out the multiplication. Thus, according to one embodiment, said group comprises a neutral element, and said first initial register value may be equal to said neutral element and said second initial register value may be equal to said element.
Selon un autre mode de réalisation de l'invention , ladite première valeur de registre initiale peut être égale audit élément et ladite deuxième valeur de registre initiale peut être égale audit élément, et ladite troisième valeur de registre initiale peut être égale au double dudit élément.According to another embodiment of the invention, said first initial register value may be equal to said element and said second initial register value may be equal to said element, and said third initial register value may be twice that of said element.
L'invention concerne également un dispositif cryptographique pour le calcul d'une multiplication d'un élément d'un groupe noté additivement, par un scalaire, ledit scalaire étant décomposé en une représentation comprenant une pluralité de composantes chacune desdites composantes prenant une valeur de composante parmi au moins une première valeur de composante et une deuxième valeur de composante, dans lequel ledit dispositif comprend des moyens de calcul et au moins une mémoire, ladite mémoire comprenant au moins: un premier registre; un deuxième registre; et dans lequel lesdits moyens de calculs sont aptes à réaliser les étapes de procédé susmentionné.The invention also relates to a cryptographic device for calculating a multiplication of an element of a group noted additionally by a scalar, said scalar being decomposed into a representation comprising a plurality of components each of said components taking a component value from at least a first component value and a second component value, wherein said device comprises calculating means and at least one memory, said memory comprising at least : a first register; a second register; and wherein said calculating means is adapted to perform the aforementioned process steps.
Selon un mode de réalisation, ladite mémoire peut comprendre un troisième registre et lesdits moyens de calculs peuvent être aptes à réaliser les étapes de procédé susmentionné, notamment lorsqu'un troisième registre est utilisé.According to one embodiment, said memory may comprise a third register and said calculation means may be able to carry out the aforementioned method steps, especially when a third register is used.
L'invention concerne également une carte à puce comprenant un dispositif tel que décrit précédemment.The invention also relates to a smart card comprising a device as described above.
Elle concerne également un système cryptographique basé sur un algorithme cryptographique faisant intervenir au moins un calcul d'une multiplication d'un élément d'un groupe noté additivement, par un scalaire ledit calcul étant réalisé par un dispositif tel que décrit précédemment.It also relates to a cryptographic system based on a cryptographic algorithm involving at least one calculation of a multiplication of an element of a group noted additionally by a scalar said calculation being performed by a device as described above.
L'invention et les avantages qui en découlent apparaîtront plus clairement à la lecture de la description qui suit et des exemples de réalisation donnés à titre purement indicatif, par référence aux figures annexées où :The invention and the advantages derived therefrom will appear more clearly on reading the description which follows and the exemplary embodiments given purely by way of indication, with reference to the appended figures in which:
- la figure 1 est un organigramme des éléments principaux d'un dispositif électronique, par exemple une carte à puce, permettant de mettre en œuvre l'invention ;FIG. 1 is a flowchart of the main elements of an electronic device, for example a smart card, to implement the invention;
- la figure 2 représente un schéma du procédé mis en œuvre dans le calcul d'une multiplication par un scalaire selon un premier mode de réalisation de l'invention ; - la figure 3 représente un schéma du procédé mis en œuvre dans le calcul d'une multiplication par un scalaire selon un second mode de réalisation de l'invention .FIG. 2 represents a diagram of the method implemented in the calculation of a multiplication by a scalar according to a first embodiment of the invention; FIG. 3 represents a diagram of the method implemented in the calculation of a multiplication by a scalar according to a second embodiment of the invention.
- la figure 4 représente un schéma général du procédé mis en œuvre dans la présente invention .FIG. 4 represents a general diagram of the method implemented in the present invention.
La figure 1 représente sous forme de schéma bloc un dispositif électronique apte à réaliser des calculs de multiplication par un scalaire. Dans l'exemple, ce dispositif est une carte à puce destinée à exécuter un programme cryptographique.FIG. 1 represents, in block diagram form, an electronic device capable of performing multiplication calculations by a scalar. In the example, this device is a smart card for executing a cryptographic program.
A cette fin, le dispositif 1 réunit dans une puce des moyens de calcul programmés, composés d'une unité centrale 2 reliée fonctionnellement à un ensemble de mémoires dont: - une mémoire 4 accessible en lecture seulement, dans l'exemple du type ROM masque, aussi connue sous l'appellation anglaise « mask Read-Only Memory » ou « mask ROM »,To this end, the device 1 combines in a chip programmed computing means, composed of a central unit 2 operatively connected to a set of memories including: - a memory 4 accessible in read only, in the example of the type ROM mask also known as "mask Read-Only Memory" or "mask ROM",
- une mémoire 6 reprogrammable électriquement, dans l'exemple du type EEPROM (de l'anglais "Electrically Erasable Programmable ROM"), etan electrically reprogrammable memory 6, in the example of the EEPROM type (of the English "Electrically Erasable Programmable ROM"), and
- une mémoire de travail 8 accessible en lecture et en écriture, dans l'exemple du type RAM (de l'anglais "random access memory"). Cette mémoire 8 comprend notamment les registres utilisés par le dispositif 1 .a working memory 8 accessible for reading and writing, in the example of the RAM ("random access memory") type. This memory 8 comprises in particular the registers used by the device 1.
Le code exécutable correspondant à l'algorithme de multiplication est contenu en mémoire programme. Ce code peut en pratique être contenu en mémoire 4, accessible en lecture seulement, et/ou en mémoire 6, réinscriptible.The executable code corresponding to the multiplication algorithm is contained in program memory. This code can in practice be stored in memory 4, read-only, and / or memory 6, rewritable.
L'unité centrale 2 est reliée à une interface de communication 10 qui assure l'échange de signaux vis-à-vis de l'extérieur et l'alimentation de la puce.The central unit 2 is connected to a communication interface 10 which ensures the exchange of signals vis-à-vis the outside and the supply of the chip.
Cette interface peut comprendre des plots sur la carte pour une connexion dite "à contact" avec un lecteur, et/ou une antenne dans le cas d'une carte dite "sans contact".This interface may include pads on the card for a so-called "contact" connection with a reader, and / or an antenna in the case of a so-called "contactless" card.
L'une des fonctions du dispositif est de crypter et décrypter des données confidentielles respectivement transmises vers, et reçues de, l'extérieur. Ces donnés peuvent concerner par exemple des codes personnels, des informations médicales, une comptabilité sur des transactions bancaires ou commerciales, ou des autorisations d'accès à certains services restreints. Une autre fonction consiste dans le calcul d'une signature numérique ou dans sa vérification .One of the functions of the device is to encrypt and decrypt confidential data respectively transmitted to and received from outside. These data may concern, for example, personal codes, medical information, accounting on banking or commercial transactions, or access authorizations to certain restricted services. Another function is the calculation of a digital signature or its verification.
A cette fin, l'unité centrale 2 exécute un algorithme cryptographique à partir de données de programmation qui sont stockées dans les parties ROM masque 4 et/ou EEPROM 6.For this purpose, the central unit 2 executes a cryptographic algorithm from programming data stored in the ROM mask 4 and / or EEPROM 6 portions.
L'algorithme cryptographique peut être basé par exemple sur un algorithme RSA (Rivest, Shamir et Adleman), ce qui implique un calcul d'exponentiation modulaire du type y = xr, où x est une valeur prédéterminée et r, un nombre entier qui constitue une clé. Le nombre y ainsi obtenu constitue une donnée chiffrée, déchiffrée, signée ou vérifiée.The cryptographic algorithm can be based for example on an RSA algorithm (Rivest, Shamir and Adleman), which implies a modular exponentiation calculation of the type y = x r , where x is a predetermined value and r is an integer which is a key. The number y thus obtained is a piece of data encrypted, decrypted, signed or verified.
Le nombre r (la clé) est stocké dans une portion de mémoire ré- inscriptible 6, de type EEPROM dans l'exemple.The number r (the key) is stored in a portion of memory writable 6, EEPROM type in the example.
Lorsque le dispositif 1 de calcul d'exponentiation est sollicité pour un calcul d'exponentiation de type y=xr, l'unité centrale mémorise le nombre x, transmis par I' interface de communication 10, en mémoire de travail 8, dans un registre de calcul.When the exponentiation calculation device 1 is requested for an exponentiation calculation of the type y = x r , the central unit stores the number x, transmitted by the communication interface 10, to working memory 8, in a calculation register.
Dans un mode de réalisation courante, l'unité centrale va lire la clé r contenue en mémoire ré-inscriptible 6, pour la mémoriser temporairement, le temps du calcul d'exponentiation, dans un registre de calcul de la mémoire de travail. L'unité centrale lance alors l'algorithme d'exponentiation ou de multiplication par un scalaire selon l'invention .In a current embodiment, the central unit will read the key r contained in rewritable memory 6, for the temporary storage, the exponentiation calculation time, in a calculation register of the working memory. The central unit then launches the exponentiation or multiplication algorithm with a scalar according to the invention.
On décrit maintenant un premier mode de réalisation d'un procédé de calcul d'une multiplication par un scalaire selon l'invention en référence à la figure 2.We now describe a first embodiment of a method of calculating a multiplication by a scalar according to the invention with reference to FIG.
Selon ce mode de réalisation, l'algorithme de multiplication par un scalaire est réalisé comme suit en pseudo langage :According to this embodiment, the multiplication algorithm with a scalar is implemented as follows in pseudo language:
ALGORITHME 1 .ALGORITHM 1.
Entrées de l'algorithme: P, k=(kt-i, kt-2,..., ko) 2.Input of the algorithm: P, k = (k t -i, k t -2, ..., ko) 2.
Sortie de l'algorithme: Q=k.P Registres temporaires utilisés : Ro, RiOutput of the algorithm: Q = k.P Temporary registers used: Ro, Ri
Initialisation: R0<-0 Ri<-P;Initialization: R 0 <-0 Ri <-P;
Pour j=0 à t-1, faire: b = 1-kj ; Rb<- 2.Rb+ Rkj For j = 0 to t-1, do: b = 1-kj; R b <- 2.R b + R kj
Fin pour Retourner Ro.End to Return Ro.
De la sorte, à chaque itération sur les kj, on ne calcu le qu'une 5In this way, at each iteration on kj, we calculate only one 5
opération de doublement et une addition, sans nécessiter de condition, contrairement aux algorithmes de type « square and multiply » ou « add and double » de l'art antérieur et sans réaliser d'opérations factices.doubling operation and an addition, without requiring a condition, unlike the "square and multiply" or "add and double" type algorithms of the prior art and without performing dummy operations.
En effet, selon cet algorithme, lors de l'itération, on calcule seulement soit 2.R0 + Ri , soit 2.Ri + R0, et si kj vaut 1 , on remplace la valeur de Ro par 2.R0 + Ri , et, si kj vaut 0, on remplace la valeur de Ri par 2.Ri + R0.Indeed, according to this algorithm, during the iteration, we calculate only either 2.R 0 + Ri, or 2.Ri + R 0 , and if kj is 1, we replace the value of Ro by 2.R 0 + Ri, and, if kj is 0, we replace the value of Ri by 2.Ri + R 0 .
Les étapes de cet algorithme ALGORITHME 1 sont illustrées schématiquement figure 2. Comme illustré sur cette figure, on initialise d'abord les registres Ro et Ri respectivement avec les valeurs 0 et P. On réalise ensuite une itération sur la décomposition binaire de k. Les valeurs de la décomposition binaire, 0 ou 1 , sont stockées par exemple dans une variable temporaire b égale à 1 -ki pour chaque composante ki du scalaire k. Si b vaut 0, on calcule alors la valeur 2. Ro + Ri et on remplace Ro par cette valeur. Si b vaut 1 , on calcule alors la valeur 2. Ri + Ro et on remplace Ri par cette valeur.The steps of this algorithm ALGORITHM 1 are illustrated schematically in FIG. 2. As illustrated in this figure, the registers Ro and Ri are initialized respectively with the values 0 and P. An iteration is then carried out on the binary decomposition of k. The values of the binary decomposition, 0 or 1, are stored for example in a temporary variable b equal to 1 -ki for each component ki of the scalar k. If b is 0, then calculate the value 2. Ro + Ri and replace Ro with this value. If b is 1, then calculate the value 2. Ri + Ro and replace Ri by this value.
Comme illustré figure 4 de façon plus générale, le procédé selon l'invention comprend donc une étape d'initialisation de deux registres Ro et Ri , une étape d'itération sur les composantes ki du scalaire k, dans laquelle si ki vaut 0, on calcule 2.Ri + R0 et on remplace Ri par cette valeur et si ki vaut 1 , on calcule 2.R0 + Ri et on remplace Ro par cette valeur. En fin d'algorithme, on rend alors la valeur du registre Ro.As illustrated in FIG. 4 more generally, the method according to the invention thus comprises a step of initialization of two registers Ro and Ri, an iteration step on the components ki of the scalar k, in which if ki is 0, calculates 2.Ri + R 0 and we replace Ri by this value and if ki is 1, we calculate 2.R 0 + Ri and we replace Ro by this value. At the end of the algorithm, the value of the register Ro is then returned.
On démontre maintenant que l'algorithme proposé ci-dessus permet bien de réaliser une multiplication d'un élément P d'un groupe par un nombre k. Pour ce faire, on utilisera la notation additive. Dans les calculs ci- dessous, nous utiliserons les opérations mathématiques suivantes :It is now shown that the algorithm proposed above makes it possible to perform a multiplication of an element P of a group by a number k. To do this, we will use the additive notation. In the calculations below, we will use the following mathematical operations:
- SU M(Ai, 0, n) désigne la somme pour i allant de 0 à n des A,, soit n en notation courante : SU M (A1, 0, n) = χ^Λ-t ;- SU M (Ai, 0, n) denotes the sum for i ranging from 0 to n of A ,, ie n in current notation: SU M (A 1 , 0, n) = χ ^ Λ- t ;
*=o* = O
- le signe + est utilisé pour désigner l'addition dans un groupe noté additivement ou pour désigner l'addition entre deux scalaires;the + sign is used to denote the addition in a group noted additionally or to designate the addition between two scalars;
le signe - est utilisé pour désigner la soustraction dans un groupe noté additivement ou pour désigner la soustraction entre deux scalaires;the sign - is used to designate the subtraction in a group noted additionally or to designate the subtraction between two scalars;
- le signe * est utilisé pour désigner une multiplication entre deux scalaires ;- the sign * is used to designate a multiplication between two scalars;
le signe . est utilisé pour désigner la multiplication par un scalaire dans un groupe noté additivement. La notation k. P désigne donc la somme P + P + ... + P k fois ;the sign . is used to denote multiplication by a scalar in a group noted additionally. The notation k. P therefore denotes the sum P + P + ... + P k times;
- La notation k=(kt-i , .. , ko)2 désigne la décomposition d'un scalaire k en binaire en notation vectorielle. Cette notation est équivalente à la notation sous la forme d'une somme k=SU M(kj * 2J, 0, t-1 ) ;- The notation k = (k t- i, .., k o ) 2 denotes the decomposition of a scalar k into binary in vector notation. This notation is equivalent to the notation in the form of a sum k = SU M (k j * 2 J , 0, t-1);
la notation A<-a désigne l'opération consistant à affecter à la variable A, la valeur a . Elle désigne également l'opération consistant à affecter au registre A, la valeur a .the notation A <-a denotes the operation of assigning to the variable A the value a. It also refers to the operation of assigning to the register A, the value a.
Soit donc G un groupe abélien additif d'élément neutre 0. Soit P 7Let G be an additive abelian group of neutral element 0. Let P be 7
dans G, et k, un entier codé sur t bits en binaire. On cherche donc à calculer, dans cette notation additive, la multiplication par un scalaire Q=k.P, c'est-à-dire P + P+ ...+ P k fois.in G, and k, an integer coded on t bits in binary. We therefore try to calculate, in this additive notation, the multiplication by a scalar Q = k.P, that is to say P + P + ... + P k times.
Soit k= SUM(kj * 2j, 0, t-1), avec k, appartenant à l'ensemble {0, 1}.Let k = SUM (kj * 2 j , 0, t-1), with k, belonging to the set {0, 1}.
On a Q = SUM((kj * 2j).P, 0, t-1) = SUM (kj.Bj, 0, t-1) avec Bj = 2j.P ;Then Q = SUM ((kj * 2 j) .P, 0, t-1) = SUM (kj.Bj, 0, t-1) with Bj = 2 j .P;
Soit alors Sj=SUM(ki.Bi, 0, j) et Tj=Bj+i - Sj ;Let S j = SUM (ki.Bi, 0, j) and T j = B j + i - S j ;
Avec ces notations, il vient : Sj = SUM(ki.Bi, 0, j) = kj.Bj + Sj-I = kj.CSj-i+Tj-i) + Sj-i = (1+kj).Sj.i + kj. Tj-I ;With these notations, it comes: Sj = SUM (ki.Bi, 0, j) = kj.Bj + Sj-I = kj.CSj-i + Tj-i) + Sj-i = (1 + kj) .S j .i + kj. Tj-I;
De la même façon,In the same way,
η = Bj + I-Sj = 2.Bj - (kj.Bj + Sj-i) = (2 - kj).Bj - SM = = (2 - kj).TH + (1 - kj).SH ,η = B j + IS j = 2.B j - (k j .B j + S j -i) = (2 - k j ) .B j - S M = = (2 - kj) .T H + ( 1 - kj) .S H,
Ainsi, pour tous les j supérieurs ou égaux à 0, on a :So, for all j's greater than or equal to 0, we have:
Sj = Sj-i si kj=OSj = Sj-i if kj = O
= 2.SH + Tj-I si kj = 1 ;2S = T H + j- if I k j = 1;
etand
Tj = Sj-i + 2.Tj-I si kj = OT j = S j -i + 2.T j- I if k j = O
= Tj-I si kj=1 ;= T j- I if k j = 1;
Comme Q=k.P=St-i, ceci démontre que l'algorithme ALGORITHME 1 retourne bien la valeur de Q en sortie. On note également qu'à chaque itération de la boucle en j, les registres Ro et Ri contiennent respectivement les valeurs Sj et Tj.Since Q = kP = S t- i, this demonstrates that the algorithm ALGORITHM 1 returns the value of Q at the output. We also note that each iteration of the loop in j, the registers Ro and Ri respectively contain the values Sj and Tj.
L'algorithme ALGORITH ME 1 ci-dessus permet donc bien de calculer la multiplication Q=k.P, et ce en n'utilisant que des opérations de type 2.A + B en notation additive.The algorithm ALGORITH ME 1 above thus makes it possible to calculate the multiplication Q = k.P, and this only using operations of type 2.A + B in additive notation.
On décrit maintenant d'autres modes de réalisation particuliers de l'invention .Other particular embodiments of the invention will now be described.
Selon un second mode de réalisation de l'invention , on fournit un algorithme ne réalisant toujours que des opérations de type 2.A + B, mais en n'utilisant que des additions, et en évitant le recours au calcul d'un doublement.According to a second embodiment of the invention, an algorithm is provided that still only performs operations of type 2.A + B, but using only additions, and avoiding the use of computation of a doubling.
II en résulte un algorithme ALGORITHME 2 correspondant à une variante de l'algorithme 1 . Cet algorithme peut se décrire comme suit :This results in an algorithm ALGORITHM 2 corresponding to a variant of the algorithm 1. This algorithm can be described as follows:
ALGORITHME 2ALGORITHM 2
Entrées de l'algorithme: P, k=(kt-i, kt-2, ..., ko)2-Input of the algorithm: P, k = (k t -i, k t -2, ..., ko) 2 -
Sortie de l'algorithme: Q=k.POutput of the algorithm: Q = k.P
Registres temporaires utilisés : Ro, Ri, R2 Initialisation: Ro<-P ; Ri<-P; R2<-2PTemporary registers used: Ro, Ri, R2 Initialization: R o <-P; Ri <P; R 2 <-2P
Pour j= 1 à t-1, faire: b= 1-kj ; Rb<- Rb+ R2 For j = 1 to t-1, do: b = 1-kj; R b <- R b + R 2
Fin pour End for
Retourner R0. Les étapes de cet algorithme ALGORITHME 2 sont illustrées schématiquement FIG. 3. Comme illustré sur cette figure, on initialise d'abord des registres Ro, Ri et R2 respectivement avec les valeurs P, P et 2.P. On réalise ensuite une itération sur la décomposition binaire de k pour k allant de 1 à t-1 . Les valeurs de la décomposition binaire, 0 ou 1 , sont stockées par exemple dans une variable temporaire b égale à 1 -ki pour chaque composante ki du scalaire k. Si b vaut 0, on calcule alors la valeur 2. R0 + Ri et on remplace Ro par cette valeur. Si b vaut 1 , on calcule alors la valeur 2.R1 + Ro et on remplace Ri par cette valeur. Ce calcul est réalisé par l'intermédiaire du registre R2 auquel on affecte une valeur valant Ro+Ri . Ainsi, en calculant Ro+R2 ou R1 + R2, seul le calcul des valeurs 2. Ro+Ri ou 2.Ri + Ro est réalisé, conformément à l'invention . Enfin, si k0 vaut 0, on remplace en fin de boucle la valeur de Ro par Ro-P.Return R 0 . The steps of this algorithm ALGORITHM 2 are illustrated schematically FIG. 3. As illustrated in this figure, first registers Ro, Ri and R2 are initialized respectively with the values P, P and 2.P. An iteration is then performed on the binary decomposition of k for k ranging from 1 to t-1. The values of the binary decomposition, 0 or 1, are stored for example in a temporary variable b equal to 1 -ki for each component ki of the scalar k. If b is 0, then calculate the value 2. R 0 + Ri and replace Ro with this value. If b is 1, then calculate the value 2.R1 + Ro and replace Ri by this value. This calculation is performed via the register R2 to which a value equal to Ro + Ri is assigned. Thus, by calculating Ro + R2 or R1 + R2, only the calculation of the values 2. Ro + Ri or 2.Ri + Ro is carried out, in accordance with the invention. Finally, if k 0 is 0, we replace at the end of the loop the value of Ro by Ro-P.
On démontre maintenant que l'algorithme ALGORITHME 2 proposé ci-dessus permet bien de réaliser une multiplication d'un élément P d'un groupe par un scalaire k. Les notations précédentes sont également utilisées ci-dessous.It is now shown that the algorithm ALGORITHM 2 proposed above makes it possible to perform a multiplication of an element P of a group by a scalar k. The previous notations are also used below.
En utilisant ces notations, on sait que Bj+I = Sj + Tj Le registre R2 alors un registre intermédiaire servant à stocker une variable représentative de cette valeur Bj+i .By using these notations, it is known that Bj + I = Sj + Tj The register R2 then an intermediate register serving to store a variable representative of this value B j + i.
Pour prouver que l'algorithme ALGORITHME 2 réalise bien le calcul de Q=k.P, supposons que k est impair, c'est-à-dire que ko= 1 . On suppose également que k est strictement inférieur à l'ordre de P dans le groupe additif G.To prove that the algorithm ALGORITHM 2 realizes the computation of Q = kP, suppose that k is odd, that is to say that k o = 1. It is also assumed that k is strictly less than the order of P in the additive group G.
Soit kμi le bit le plus élevé non nul dans la décomposition de k, c'est-à-dire kμi = 1 et kj=O pour j compris entre I et t-1 . Dans ce cas, comme k est impair, le registre Ro contient toujours des multiples impairs de P. De la même façon, comme Tj = 2j+ 1.P - Sj, le registre Ri contient toujours des multiples impairs de P pour j strictement inférieur à 1-1 . Enfin, le registre R2 contient toujours un multiple de P par une puissance de 2 pour j strictement inférieur à 1-1 .Let kμi be the highest nonzero bit in the decomposition of k, that is, kμi = 1 and kj = O for j between I and t-1. In this case, since k is odd, the register Ro always contains odd multiples of P. In the same way, since Tj = 2 j + 1 .P-Sj, the register Ri always contains odd multiples of P for j strictly lower. at 1-1. Finally, the register R2 always contains a multiple of P by a power of 2 for j strictly less than 1-1.
Ainsi, dans le calcul de Rb<-Rb+ R2, on a toujours Rb différent de R2 pour j compris entre 1 et I-2.Thus, in the calculation of R b <-Rb + R2, Rb is always different from R2 for j between 1 and I-2.
De même, dans le calcul de R2<-Ro + Ri , on a toujours Ro différent de Ri pour j compris entre 1 et I-2.Similarly, in the calculation of R2 <-Ro + Ri, Ro is always different from Ri for j between 1 and I-2.
Enfin, quand j est égal à 1-1 , le registre Ro prend la valeur k. P, et n'est plus modifié pour j compris entre I et t-1 .Finally, when j is equal to 1-1, the register Ro takes the value k. P, and is no longer modified for j between I and t-1.
L'algorithme ALGORITHME 2 permet donc bien de réaliser le calcul de la valeur Q=k.P.The algorithm ALGORITHM 2 therefore makes it possible to calculate the value Q = k.P.
On note enfin que l'évaluation initiale de la valeur 2P à stocker dans le registre R2 peut ne pas nécessiter de doublement. En effet, la valeur 2.P peut être précalculée ou évaluée à partir de la formule 2.P = (P + A) + (P-A) pour un élément A du groupe additif G.Finally, it should be noted that the initial evaluation of the value 2P to be stored in the register R2 may not require doubling. Indeed, the value 2.P can be precalculated or evaluated from the formula 2.P = (P + A) + (P-A) for an element A of the additive group G.
De la sorte, on peut implémenter l'algorithme ALGORITHME 2 sans nécessiter de doublement en notation additive, ou d'élévation au carré en notation multiplicative.In this way, we can implement the algorithm ALGORITHM 2 without requiring doubling in additive notation, or squaring in multiplicative notation.
Ceci permet notamment d'économiser l'implémentation du doublement dans un dispositif électronique, ou d'utiliser l'algorithme dans un dispositif électronique sur lequel ne serait pas implémenté le doublement, mais seulement l'addition .This notably makes it possible to save the implementation of the doubling in an electronic device, or to use the algorithm in an electronic device on which it would not be possible. implemented the doubling, but only the addition.
On note par ailleurs que par construction, on a Bj+i = Sj + Tj = 2.Bj. Ceci permet donc d'implémenter l'algorithme ALGORITH ME 2 en se passant du registre R2 et en utilisant seulement les deux registres R0 et Ri comme dans l'algorithme ALGORITHME 1 .Note also that by construction, we have B j + i = Sj + Tj = 2.Bj. This therefore makes it possible to implement the algorithm ALGORITH ME 2 by passing from the register R2 and using only the two registers R 0 and R 1 as in the algorithm ALGORITHME 1.
Ceci fournit un algorithme ALGORITHME 3 défini comme suit :This provides an algorithm ALGORITHM 3 defined as follows:
ALGORITHME 3. Entrées de l'algorithme: P, k=(kt-i, kt-2,..., ko) 2.ALGORITHM 3. Inputs of the algorithm: P, k = (kt-i, kt-2, ..., ko) 2.
Sortie de l'algorithme: Q=k.POutput of the algorithm: Q = k.P
Registres temporaires utilisés : Ro, RiTemporary registers used: Ro, Ri
Initialisation: R0<-0 Ri<-P;Initialization: R 0 <-0 Ri <-P;
Pour j=0 à t-1, faire: b = 1-kj ; Rb<- 2. Rb Fin pour Retourner Ro.For j = 0 to t-1, do: b = 1-kj; R b <- 2. R b End to Return Ro.
On démontre facilement que cet algorithme permet le calcul de Q=k.P à l'aide des formules données pour l'algorithme ALGORITHME 1 et de la relation Bj+i = Sj + Tj = 2.Bj.It is easily demonstrated that this algorithm allows the calculation of Q = kP using the formulas given for algorithm ALGORITHM 1 and the relation B j + i = Sj + Tj = 2.Bj.
La description a été donnée dans le cadre d'un dispositif électronique de type carte à puce. I l est cependant clair que les enseignements se transposent à toutes autres applications, telles que dans les terminaux informatiques, de communication sur réseau ou autre, et dans tout autre dispositif électronique qui fait appel à des calculs de codage ou de décodage. The description has been given in the context of an electronic device of the smart card type. However, it is clear that the teachings are applicable to all other applications, such as in computer terminals, network communication or other, and in any other electronic device that uses coding or decoding calculations.

Claims

REVEN DICATIONS REVEN DICATIONS
1 . Procédé pour le calcul d'une multiplication d'un élément (P) d'u n groupe (G) noté additivement par un scalaire (k), ledit scalaire étant décomposé en une représentation ((kt-i , ... , k0); (kt-i , ... , ki )) comprenant une pluralité de composantes, chacune desdites composantes prenant une valeur de composante parmi au moi ns une première valeur de composante et une deuxième valeur de composante, ledit procédé étant destiné à être mis en œuvre dans un dispositif électronique, ledit dispositif électronique comprenant au moins une mémoire (8) comprenant au moins un premier registre (Ro) et un deuxième registre (Ri ), une ledit premier registre stockant une première valeur de registre, ledit deuxième registre stockant une deuxième valeur de registre caractérisé en ce que ledit procédé comprend des étapes consistant à :1. A method for calculating a multiplication of an element (P) of a n group (G) additionally denoted by a scalar (k), said scalar being decomposed into a representation ((k t- i, ..., k 0 ); (k t- i, ..., ki)) comprising a plurality of components, each of said components taking a component value among e ns a first component value and a second component value, said method being intended to be implemented in an electronic device, said electronic device comprising at least one memory (8) comprising at least a first register (Ro) and a second register (Ri), a said first register storing a first register value, said second register storing a second register value characterized in that said method comprises steps of:
- affecter audit premier registre (Ro) une première valeur de registre initiale (0) en tant que première valeur de registre, ladite première valeur de registre initiale dépendant dudit élément ; - affecter audit deuxième registre (Ri ) une deuxième valeur de registre initiale (P) en tant que deuxième valeur de registre, ladite deuxième valeur de registre initiale dépendant dudit élément ;- assigning to said first register (Ro) a first initial register value (0) as the first register value, said first initial register value depending on said element; assigning to said second register (Ri) a second initial register value (P) as a second register value, said second initial register value depending on said element;
- réaliser une itération sur ladite pluralité de composantes de ladite représentation , ladite itération comprenant des étapes consistant à, pour chacune (ki) des composantes de ladite représentation : o lorsque ladite composante (ki) est égale à ladite première valeur de composante, • calculer une première valeur de calcul égale au double de ladite première valeur de registre additionné à ladite deuxième valeur de registre ; • affecter ladite première valeur de calcul audit premier registre en tant que première valeur de registre; o lorsque ladite composante (ki) est égale à ladite deuxième valeur de composante,performing an iteration on said plurality of components of said representation, said iteration comprising steps consisting of, for each (ki) components of said representation: when said component (ki) is equal to said first component value, a first calculation value equal to twice said first register value added to said second register value; Assigning said first calculation value to said first register as the first register value; when said component (ki) is equal to said second component value,
• calculer une deuxième valeur de calcul égale au double de ladite deuxième valeur de registre additionnée à ladite première valeur de registre ;Calculating a second calculation value equal to twice said second register value added to said first register value;
• affecter ladite deuxième valeur de calcul audit deuxième registre en tant que deuxième valeur de registre;Assigning said second calculation value to said second register as a second register value;
- suite à ladite itération , retourner au moins une valeur de registre parmi ladite première valeur de registre et ladite deuxième valeur de registre.following said iteration, returning at least one register value among said first register value and said second register value.
2. Procédé selon la revend ication 1 , dans lequel ladite mémoire comprend un troisième registre (R2), ledit troisième registre stockant une troisième valeur de registre, ledit procédé comprenant des étapes consistant à : - affecter audit troisième registre (R2) une troisième valeu r de registre initiale (P) en tant que troisième valeur de registre, ladite deuxième valeur de registre initiale dépendant de ladite première valeur de registre initiale et de ladite deuxième valeur de registre initiale; - ladite itération comprenant des étapes consistant à : o lorsque ladite composante (ki) est égale à ladite première valeur de composante,2. The method according to claim 1, wherein said memory comprises a third register (R2), said third register storing a third register value, said method comprising the steps of: assigning said third register (R2) a third value; r of initial register (P) as a third register value, said second initial register value depending on said first initial register value and said second initial register value; said iteration comprising steps of: o when said component (ki) is equal to said first component value,
• calculer une première valeur de calcu l (Ro+R2) égale à ladite première valeur de registre additionné à ladite troisième valeur de registre ; • affecter ladite première valeur de calcul audit premier registre en tant que première valeur de registre; o lorsque ladite composante (ki) est égale à ladite deuxième valeur de composante,Calculating a first calcu l value (Ro + R2) equal to said first register value added to said third register value; Assigning said first calculation value to said first register as the first register value; when said component (ki) is equal to said second component value,
• calculer une deuxième valeur de calcul (R1 + R2) égale à ladite deuxième valeur de registre additionné à ladite troisième valeur de registre ;Calculating a second calculation value (R1 + R2) equal to said second register value added to said third register value;
• affecter ladite deuxième valeur de calcul audit deuxième registre en tant que deuxième valeur de registre; o calculer une troisième valeur de calcul (Ro+Ri ) égale à ladite première valeur de registre additionnée à ladite deuxième valeur de registre ; o affecter ladite troisième valeur de calcul audit troisième registre en tant que troisième valeur de registre.Assigning said second calculation value to said second register as a second register value; calculating a third calculation value (Ro + Ri) equal to said first register value added to said second register value; assigning said third calculation value to said third register as a third register value.
3. Procédé selon la revendication 2, dans lequel ladite représentation comprend une composante initiale prenant une valeur de composante initiale parmi une première valeur de composante initiale et une deuxième valeur de composante initiale, et ledit procédé comprend , suite à ladite itération , des étapes consistant à :The method according to claim 2, wherein said representation comprises an initial component taking an initial component value from a first initial component value and a second initial component value, and said method comprises, following said iteration, steps of at :
- lorsque ladite composante initiale a une valeur de composante initiale égale à ladite première valeur de composante initiale ; o calculer une quatrième valeur de calcul égale à ladite première valeur de registre soustraite d'une valeur finale dépendant dudit élément ; o affecter ladite quatrième valeur de calcul audit premier registre en tant que première valeur de registre. 5when said initial component has an initial component value equal to said first initial component value; calculating a fourth calculation value equal to said first register value subtracted from a final value dependent on said element; assigning said fourth calculation value to said first register as the first register value. 5
4. Procédé selon la revendication 1 , dans lequel ladite première valeur de registre initiale est égale à l'élément neutre et dans lequel ladite deuxième valeur de registre initiale est égale audit élément.The method of claim 1, wherein said first initial register value is equal to the neutral element and wherein said second initial register value is equal to said element.
5. Procédé selon l'une des revendications 2 à 3, dans lequel ladite première valeur de registre initiale est égale audit élément et dans lequel ladite deuxième valeur de registre initiale est égale audit élément, et dans lequel ladite troisième valeur de registre initiale est égale au double dudit élémentThe method according to one of claims 2 to 3, wherein said first initial register value is equal to said element and wherein said second initial register value is equal to said element, and wherein said third initial register value is equal to double the said element
6. Dispositif cryptographique pour le calcul d'une multiplication d'un élément (P) d'un groupe noté additivement, par un scalaire (k), ledit scalaire étant décomposé en une représentation comprenant une pluralité de composantes ((kt-i , ... , k0); (kt-i , ... , ki )), chacune desdites composantes prenant une valeur de composante parmi au moins une première valeur de composante et une deuxième valeur de composante, dans lequel ledit dispositif comprend des moyens de calcul (2, 4, 6) et au moins une mémoire (8), ladite mémoire (8) comprenant au moins: un premier registre (Ro); un deuxième registre (Ri ); et dans lequel lesdits moyens de calculs (2, 4, 6) sont aptes à réaliser les étapes de procédé selon la revendication 1 .A cryptographic device for calculating a multiplication of an element (P) of a group that is additionally denoted by a scalar (k), said scalar being decomposed into a representation comprising a plurality of components ((k t- , ..., k 0 ); (k t- i, ..., ki)), each of said components taking a component value from at least a first component value and a second component value, wherein said device comprises calculation means (2, 4, 6) and at least one memory (8), said memory (8) comprising at least: a first register (Ro); a second register (Ri); and wherein said calculating means (2, 4, 6) is adapted to perform the method steps of claim 1.
7. Dispositif selon la revendication 6, dans lequel ladite mémoire comprend un troisième registre et dans lequel lesdits moyens de calculs sont aptes à réaliser les étapes de procédé selon l'une des revendications 1 à 5. 7. Device according to claim 6, wherein said memory comprises a third register and wherein said calculating means are able to carry out the method steps according to one of claims 1 to 5.
8. Carte à puce comprenant un dispositif selon l'une des revendications 6 ou 7.A chip card comprising a device according to one of claims 6 or 7.
9. Système cryptographique basé sur un algorithme cryptographique faisant intervenir au moins un calcul d'une multiplication d'un élément (P) d'un groupe noté additivement, par un scalaire (k) ledit calcul étant réalisé par un dispositif selon l'une des revendications 6 ou 7. Cryptographic system based on a cryptographic algorithm involving at least one calculation of a multiplication of an element (P) of an additively-valued group by a scalar (k), said calculation being carried out by a device according to one of claims 6 or 7.
EP07726722A 2006-03-16 2007-03-08 Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device Withdrawn EP1994465A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0650884 2006-03-16
PCT/EP2007/052197 WO2007104706A1 (en) 2006-03-16 2007-03-08 Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device

Publications (1)

Publication Number Publication Date
EP1994465A1 true EP1994465A1 (en) 2008-11-26

Family

ID=37232970

Family Applications (1)

Application Number Title Priority Date Filing Date
EP07726722A Withdrawn EP1994465A1 (en) 2006-03-16 2007-03-08 Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device

Country Status (3)

Country Link
US (1) US8065735B2 (en)
EP (1) EP1994465A1 (en)
WO (1) WO2007104706A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2972064B1 (en) * 2011-02-25 2013-03-15 Inside Secure CRYPTOGRAPHY METHOD COMPRISING AN EXPONENTIATION OPERATION
EP2523096A1 (en) * 2011-05-11 2012-11-14 Thomson Licensing Modular exponentiation and device resistant against side-channel attacks
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
FR3040512B1 (en) * 2015-08-27 2017-09-08 Stmicroelectronics Rousset PROTECTION OF A MODULAR EXPONENTIATION CALCULATION
FR3040511B1 (en) * 2015-08-27 2017-09-08 Stmicroelectronics Rousset VERIFYING THE SENSITIVITY OF AN ELECTRONIC CIRCUIT EXECUTING A MODULAR EXPONENTIATION CALCULATION

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2252078C (en) 1998-10-28 2009-02-17 Certicom Corp. Power signature attack resistant cryptographic system
EP1548687B1 (en) 2002-12-18 2013-01-09 Fujitsu Limited Tamper-resistant elliptical curve encryption using secret key

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2007104706A1 *

Also Published As

Publication number Publication date
US20090175455A1 (en) 2009-07-09
US8065735B2 (en) 2011-11-22
WO2007104706A1 (en) 2007-09-20

Similar Documents

Publication Publication Date Title
EP2946284B1 (en) Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
CN107040362B (en) Modular multiplication apparatus and method
WO2000059156A1 (en) Countermeasure procedures in an electronic component implementing an elliptical curve type public key encryption algorithm
EP2005291A2 (en) Decryption method
EP1239365A2 (en) Tamper-resistant processing method
WO2007104706A1 (en) Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device
EP1381936B1 (en) Countermeasure method in an electronic component using a public key cryptographic algorithm on an elliptic curve
CA2732444C (en) Integrated circuit protected against a horizontal auxiliary channel analysis
EP1421473B1 (en) Universal calculation method applied to points on an elliptic curve
WO2000059157A1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
FR2828608A1 (en) Integrated circuit card fraud resistant encryption algorithm having exponential operation U=VW modulo X where U,V and X are whole numbers and W random/masked and fractional number formed.
EP1224765A1 (en) Countermeasure method in an electronic component which uses an rsa-type public key cryptographic algorithm
EP1839125A1 (en) Secure and compact exponentiation method for cryptography
EP1254408B1 (en) Modular exponential algorithm in an electronic component using a public key encryption algorithm
FR2848753A1 (en) Cryptographic operation performing procedure for chip card, involves hiding specific number by definite times of random number before doing division and/or modular reduction and subtracting random number from division result
EP1530753A2 (en) Method for universal calculation applied to points of an elliptic curve defined by a quartic, related cryptographic method and electronic component
Lee et al. A practical collision-based power analysis on RSA prime generation and its countermeasure
WO2002099624A1 (en) Method for making secure computation of an exponentiation in an electronic device
FR2856538A1 (en) COUNTERMEASURE METHOD IN AN ELECTRONIC COMPONENT USING A CRYPTOGRAPHIC ALGORITHM OF THE PUBLIC KEY TYPE
FR3010562A1 (en) DATA PROCESSING METHOD AND ASSOCIATED DEVICE
FR2818473A1 (en) COUNTERMEASURE METHODS IN AN ELECTRONIC COMPONENT USING AN RSA-TYPE KEY CRYPTOGRAPHY ALGORITHM
WO2002082257A1 (en) Device for performing secure exponentiation calculations and use thereof
WO2002093411A1 (en) Device used to perform exponentiation calculations applied to points on an elliptical curve
EP1350161A1 (en) Device for producing exponentiation calculations, and method for programming and using same
FR2854997A1 (en) Chip card counter measure having two random numbers providing isomorphic elliptical curve/point coordinates and exponential algorithm applied providing second point coordinates

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20080812

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC MT NL PL PT RO SE SI SK TR

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: GEMALTO SA

17Q First examination report despatched

Effective date: 20100211

DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20130813