WO2014111647A1 - Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation - Google Patents

Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation Download PDF

Info

Publication number
WO2014111647A1
WO2014111647A1 PCT/FR2014/050054 FR2014050054W WO2014111647A1 WO 2014111647 A1 WO2014111647 A1 WO 2014111647A1 FR 2014050054 W FR2014050054 W FR 2014050054W WO 2014111647 A1 WO2014111647 A1 WO 2014111647A1
Authority
WO
WIPO (PCT)
Prior art keywords
point
scalar
resulting
coordinates
elliptic curve
Prior art date
Application number
PCT/FR2014/050054
Other languages
English (en)
Inventor
Benoît FEIX
Vincent Verneuil
Christophe Clavier
Original Assignee
Inside Secure
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 Inside Secure filed Critical Inside Secure
Priority to EP14703138.9A priority Critical patent/EP2946284B1/fr
Priority to US14/762,010 priority patent/US9772821B2/en
Priority to KR1020157021332A priority patent/KR102136911B1/ko
Priority to CN201480005200.4A priority patent/CN104937537B/zh
Publication of WO2014111647A1 publication Critical patent/WO2014111647A1/fr

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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7252Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction

Definitions

  • the present invention relates to the implementation of elliptic curve cryptography in an electronic device, and more particularly to a method for calculating the result of the multiplication by a scalar of a point belonging to an elliptic curve.
  • This operation is used for example during a signature calculation, or to generate a cryptography key, or to encrypt a message.
  • This operation is implemented by various elliptic curve-based cryptography algorithms, such as the Elliptic Curve Digital Signature Algorithm (ECDSA), Elliptic Curve Diffie- Hellman (ECDH), Elliptic Curve Integrated Encryption Scheme (ECIES). etc.
  • EDSA Elliptic Curve Digital Signature Algorithm
  • ECDH Elliptic Curve Diffie- Hellman
  • ECIES Elliptic Curve Integrated Encryption Scheme
  • the operations between points of an elliptic curve are reduced to operations on the coordinates of these points in Galois bodies of the form F q , q being either a prime number p, or a power of 2 (of the form 2 m ).
  • the scalar multiplication operation is generally decomposed into a series of addition and doubling operations.
  • the algorithm Al is said “from left to right "Because the first steps of the computation loop begin by processing the most significant bits of the scalar number k, to go to the least significant bits.
  • the algorithm ⁇ is said to be "from right to left” because the first steps of the computation loop begin by processing the least significant bits of the scalar number, to go to the most significant bits.
  • These algorithms comprise for each iteration, that is to say each bit of the exponent, an addition of two identical points R of an elliptic curve, and if the bit of the scalar processed by the iteration is equal to 1, an addition of the point R with another point P of the elliptic curve.
  • Different functions are generally used to execute each of these operations, the addition of two identical points being executed by means of a doubling function or "DOUBLE” function, while the addition of two different points is performed. by means of an addition function or "ADD" function.
  • the cryptographic calculation is generally executed by a specific processor, such as an arithmetic coprocessor or a crypto-processor.
  • a specific processor such as an arithmetic coprocessor or a crypto-processor.
  • the fact of alternately using the DOUBLE function or the ADD function as a function of the type of calculation to be performed thus makes it possible to optimize the overall calculation time for encryption, decryption, signature or signature verification.
  • DOUBLE Simple Power Analysis
  • ADD Simple Power Analysis
  • electrical consumption means any observable physical quantity betraying the operation of the electronic component executing the operation, in particular the electric current consumed or the electromagnetic radiation of the component.
  • a DOUBLE operation followed by another DOUBLE operation (step 2.1 followed by another step 2.1) reveals that the bit k s of the scalar number is equal to 0. The bits of the scalar number k can thus be discovered one after the others by a simple observation of the power consumption curve.
  • steps 2.1 and 2.2 of Al and ⁇ algorithms could if possible be performed using the ADD function only, without using the DOUBLE function.
  • a finer analysis of the power consumption would make it possible to distinguish step 2.1 from step 2.2 because the Al or ⁇ algorithm is not regular. Indeed, in this case, the time elapsing between two successive additions is not the same when the two additions correspond to the successive execution of two steps 2.1 (bit k s equal to 0) or correspond to the execution of a step 2.1 followed by a step 2.2 (bit k s to 1).
  • An attacker could thus "zoom" on the part of the consumption curve extending between the additions and observe a time dissymmetry revealing the conditional branching and therefore the value of the bit of the scalar number.
  • the algorithm A2 in Appendix I also allows a scalar multiplication calculation.
  • This algorithm consists in each iteration to perform two additions, one applied at two different points, and the other applied at two identical points and can therefore be performed by an addition or a doubling operation.
  • one of the two registers Ro, Ri receives the sum of the contents of the two registers, and the other of the two registers doubles the content of this register. If the bit k s corresponding to the current iteration, of the scalar number k is 0, the register Ri receives the result of the addition, and the contents of the register Ro are doubled, and conversely if the bit k s is at 1.
  • This algorithm has the advantage of being perfectly regular in that each iteration systematically includes two additions, or an addition and a doubling operation. This advantage is obtained without having to add dummy operation, so without having to increase the calculation time.
  • the representation in Jacobian projective coordinates consists of changing the affine coordinates (x, y) into coordinates of the form (X / Z 2 , Y / Z 3 ), Z being different from 0.
  • Embodiments are directed to a cryptographic data processing method implemented in an electronic device comprising a processor, the method comprising steps of providing a point of an elliptic curve in a Galois body, and a first integer, and calculating a scalar multiplication of the point by the first number, the coordinates of the point and the first number having a size greater than the size of words that can be processed directly by the processor.
  • the scalar multiplication computation of the point by the first number comprises the steps of: storing a series of multiple points each resulting from the scalar product of the point by 2 raised to a power belonging to a series of integers , initializing a resulting point belonging to the elliptic curve, executing several iterations to take into account once each of the bits of the first number, each iteration comprising a calculation of a combination of several bits of the first number, and if the combination is no zero, an addition calculation between the resulting point and one of the stored multiple points corresponding to ranks of the bits of the bit combination of the first number, and outputting the resulting point as a result of the calculation of the scalar multiplication of the point by the first number.
  • the bits of the first number are taken into account in a random or pseudo-random order when calculating the resulting point.
  • the addition calculations between the resulting point and the stored multiples are performed in affine coordinates. According to one embodiment, the addition calculations between the resulting point and the stored results are performed in projective coordinates.
  • the scalar multiples of the point are stored in affine coordinates, and the results obtained are transformed into projective coordinates by adding to the affine coordinates a third coordinate having a value set to one.
  • the first number and the coordinates of the point are coded in NAF, the method comprising for each bit equal to -1 or bit combination less than or equal to -1, of the first number, an addition calculation between the resulting point and the opposite of the stored multiple corresponding to the rank of the bit equal to -1 or the bit combination less than or equal to -1, of the first number.
  • the method comprises a generation stage of a private and public key pair, comprising the steps of: randomly selecting a second number as a private key, choosing as a base point a point d an elliptic curve, the stored multiples having been computed from the base point, and calculating the point resulting from scalar multiplication of the base point by the second number using the stored multiple points, the resulting point or one of its coordinates, being chosen as the public key corresponding to the private key.
  • the method comprises a signature stage of a message, comprising the steps of: randomly selecting a second number, selecting as a base point a point of an elliptic curve, the stored multiples having been calculated from the base point, and calculating the resulting point, derived from the scalar multiplication of the base point by the second number using the stored multiples, applying a hash function to the message to be signed, and calculating the signature of the message by the following equations:
  • Embodiments also relate to an electronic device comprising a processor configured to implement the previously defined method.
  • the device is portable and autonomous, or smart card type.
  • the invention relates to a cryptographic calculation method comprising additions of identical or different points, belonging to an elliptic curve in a Galois body.
  • This method is implemented by an electronic device configured to perform cryptographic calculations, including scalar multiplications of a point by an integer.
  • the method may include a scalar multiplication calculation used by the ECDSA, ECDH, ECIES, etc. algorithms.
  • this method is based on a derivation of the algorithm ⁇ , in which the doubling calculations are performed once, knowing that the point P is not caused to be changed frequently.
  • the point P being the subject of such calculations is in some cases fixed for example as a base point forming part of so-called "domain" parameters of an elliptic curve cryptographic system.
  • the point doubling calculations of an elliptic curve can be performed using an optimized addition taking into account the equality of the operands.
  • the A3 algorithm in Appendix II is an example of a right-to-left scalar multiplication algorithm according to one embodiment.
  • the algorithm A3 uses a table or a set of v DP registers of the size of the point P (that is to say, the size of the coordinates of this point), v being the number of bits of the scalar number k.
  • This algorithm uses another register R also of the size of the point P. Note that the size of the register can vary according to the chosen coordinate system.
  • Step 2 is a loop control on the number v of bits of the scalar number k.
  • the doubling function is called to load in the register DP [i + 1] the value of twice the point contained in the register DP [i].
  • the step 2.2 in the loop is executed if the current bit k i of rank i of the scalar number k is equal to 1. If this is the case, the addition function is called to increment the contents of the register R by the value contained in in the register DP [i].
  • the register R contains the result [k] P of the scalar multiplication operation of the point P by the integer number k.
  • Each register DP [i] of the set of registers DP stores a multiple in 2 'P (for each value of i lying between 0 and v-1) of the point P. In this way, if a new calculation of scalar multiplication must be carried out with a scalar number k 'different from the number k, it is not necessary to recalculate the multiples 2' P of the point P.
  • the algorithm A4 in Appendix II makes it possible to obtain the result [k] P of the multiplication of the scalar number k by the point P only by executing step 2.2 at each iteration.
  • 3 ⁇ ( ⁇ 1 + ⁇ 1 2 ) ⁇ ( ⁇ 1- ⁇ 1 2 ) (5) saving two squares of large integers.
  • the values stored in the DP registers are calculated and stored in affine coordinates and transformed into jacobian or homogeneous projective coordinates by choosing Z equal to 1 during the scalar multiplication.
  • Z the values stored in the DP registers are used for several product calculations by a scalar number
  • an acceptable compromise may consist in calculating these values by affine coordinate calculations, which are more expensive in calculation time, or by calculations. in projective coordinates followed by conversions of points in affine coordinates. It follows that the addition of a point ⁇ ( ⁇ , ⁇ , ⁇ ) with a multiple DP [i] of coordinates (DX, DY, 1) carried out in step 2.2 can be simplified as follows:
  • This embodiment therefore makes it possible to obtain a reduction of three multiplications of large numbers for each addition of points made in step 2.2.
  • Such an addition of points where one of the points is expressed in projective coordinates, the other in affine coordinates (or projective with Z 1) and the result is obtained in projective coordinates, is called "mixed" addition.
  • the algorithm A5 presented in Appendix II is derived from the A4 algorithm by applying a sliding window of two bits, that is to say by treating two bits of the scalar number k at each iteration.
  • the number of iterations to be performed is thus divided by two, using a set R of three registers instead of a single register.
  • the number of registers of all DP registers are halved as compared with the algorithm A4, and each register DP [i] receives the multiple [2l 2] -P.
  • Each iteration of index i comprises two steps 2.1 and 2.2.
  • Step 2.1 consists in calculating an integer u by combining two consecutive bits k 2 i and k 2 i + i of ranks 2i and 2i + 1 of the scalar number k.
  • the step 2.2 which is executed if the number u is not zero, consists in adding to the point in the register R [u] the point DP [i], ie [2 2l ] -P.
  • the result of the scalar multiplication is obtained by combining the values of the registers R [1] [+] 2 -R [2] [+] 3 -R [3].
  • the algorithm A6 presented in Appendix II is a generalization of the algorithm A5 to a sliding window of m values, that is to say by grouping the m-bit processing ki of the scalar number k at each iteration.
  • the application of such a sliding window thus makes it possible to reduce the number of iterations.
  • this decrease is achieved to the detriment of the number of addition and doubling operations performed in step 3 which increases exponentially (in 2 m ).
  • step 2.2 of the A4 algorithm can be performed in any order. So the rank i of the ki bit processed at each iteration can be chosen randomly or pseudo-randomly, since each bit ki of the scalar number k is processed once and only once.
  • the A4 'algorithm presented in Appendix II is derived from the algorithm A4 by adding to it an additional step 2' of applying a random permutation ⁇ to the bits ki of the scalar number k.
  • Step 2.2 is also modified to use the multiple ⁇ [ ⁇ ( ⁇ )] corresponding to the bit k 0 (traotti processed by the current iteration
  • a pseudo-random permutation algorithm is described for example in the document "A New DPA”. Countermeasure Based on Permutation Tables ", Jean-Sébastien Coron, SCN 2008, pp.
  • the groups of bits of the scalar number k processed at each iteration can also be processed in any order, for example chosen randomly.
  • the groups of bits ki treated at each iteration of the algorithms A5 and A6 can therefore be chosen randomly or pseudorandomly, since all the bits of the scalar number k are taken into account in the calculation of the dot product.
  • the algorithms ⁇ 5 ', A6' presented in Appendix II are derived from the algorithms A5 and A6 by adding to each an additional step 2 'of applying a random permutation to the bits of the scalar number k.
  • the steps 2.1 and 2.2 are also modified to take into account the rank of each of the bits ki treated by the current iteration in the calculation of the number u and during the reading of the DP registers.
  • FIG. 1 represents in block diagram form an electronic device DV1 configured to perform a crypto graph calculation including one or more of the algorithms A3, A4, A4 ', A5, A5', A6, A6 'applied to large numbers.
  • the device DV1 may be an integrated circuit on a semiconductor chip arranged on a portable support such as a plastic card, the assembly forming a smart card.
  • the DV1 device can also be any device equipped with a multi-task processor, such as a smart mobile phone ("smartphone"), a media player, a touch pad, or a personal computer.
  • the device DV1 can also be a component of such a device, for example connected to a main processor of the device.
  • the device DV1 comprises a processor PROC, a calculation block AB1 configured to execute an addition of points P and Q belonging to an elliptic curve, a calculation block DB1 configured to execute a doubling of a point P belonging to an elliptical curve, a memory MEM and a communication interface circuit IC.
  • the interface circuit IC may be of the contact or non-contact type, for example an RF or UHF interface circuit operating by inductive coupling or by electrical coupling.
  • the calculation blocks AB1, DB1 may each comprise a coprocessor equipped with a programmable central unit, a fully hardware coprocessor of the state machine type.
  • the calculation blocks AB1, DB1 can simply correspond to a function called by a main program executed notably by the processor PROC.
  • the two calculation blocks AB1, DB1 can also be integrated in the same component (coprocessor or state machine).
  • a variable is said to be "large” when its size (in number of bits) is greater than that of the calculation registers of the processor PROC.
  • the latter itself performs, without using the calculation blocks AB1, DB1, operations of numbers of size less than or equal to that of its computation registers, and makes use of the calculation blocks AB1, DB1 to perform operations.
  • the manipulated variables (elliptic curve point coordinates, p-module parameters, b, n - number of points belonging to the elliptic curve, Gx, Gy - G base point coordinates) can reach several hundred bits (typically 160, 192, 224, 256, 320, 384, 521 bits).
  • the memory MEM is coupled to the processor PROC and allows the device DV1 to store a secret key k.
  • the processor PROC receives, via the interface circuit IC, a message m to be encrypted, decrypted, or signed, or a signature to be verified, and returns an encrypted or decrypted message, or a signature, of the type F k (m), F k being a cryptographic function based on the key k comprising a scalar multiplication computation performed by means of one of the algorithms presented in Appendix II.
  • the processor PROC uses the calculation blocks AB1, DB1, supplying points P, Q to the calculation block AB1 which returns the sum P [+] Q, and supplying a point P to the block DB1 which returns the double [2] -P.
  • Part of the memory MEM can also be used as a buffer to store the contents of the R and DP registers mentioned in the algorithms presented in Appendix II.
  • the device DV1 may also comprise calculation blocks configured to execute a modular multiplication of large numbers and a modular square-scaling of a large number, these calculation blocks being used by the calculation blocks AB1, DB1 for implement equations (1) to (6).
  • v represents the number of bits of the scalar number k
  • M represents the calculation time of a multiplication of large numbers, M also varying according to the number v.
  • Numerical values relating to the execution time given in Table 1 were obtained by considering that the computation time cost of a squared elevation of a large number is 0.8 times that of a multiplication of large numbers, and neglecting the execution time of additions and subtractions of large numbers. Table 1 also mentions the execution time of the addition and doubling operations of a point.
  • the additional term appearing in the columns relating to the execution time represents the computation time taken to execute step 3 relative to the number of bits v. The number of addition and doubling operations performed in step 3 increases rapidly with the value of m.
  • the algorithms presented in Appendix II are suitable for processing scalar numbers coded not in binary but in another form, for example in NAF (Non-Adjacent Form) coding.
  • NAF Non-Adjacent Form
  • each bit of a number may have three states (-1,0,1) and each bit other than 0 of the number is preceded and followed by a bit at 0, the first and last bits of the number may have any value.
  • the average number of bits at 0 of a number goes from half to binary to one third in coding
  • the algorithms A4 ", A5", A6 ", presented in Appendix III are adaptations of the algorithms A4, A5, A6 to a representation of the numbers in NAF coding.In comparison with the algorithms A4, A5, A6, the algorithms A4 ", A5", A6 "include an additional step 2.3 to handle the case where the bit! 3 ⁇ 4 is equal to -1.
  • the multiple DP [i] or DP [u] is subtracted from point R.
  • the operation of subtraction of points consists of an addition, the second operand being changed sign.
  • the change of sign of a point P (x, y) in affine coordinates consists in changing the sign of his second coordinate y.
  • the change of sign of a point P (x, y) in affine coordinates consists in replacing the second coordinate by the sum x + y coordinates of the point.
  • the algorithms A4 ', ⁇ 5', A6 ' can be adapted in a similar way to process numbers in NAF coding, to counter attacks of the SPA and / or DP A type.
  • the algorithms presented in Appendices II and III can be implemented in an ECDSA type public key digital signature algorithm.
  • the ECDSA algorithm consists in choosing an elliptic curve E (a, b) on a Galois field F q , and a base point G (Gx, Gy) of the chosen elliptic curve E (a, b).
  • the next step is to generate a public and private key pair.
  • the private key s can be chosen randomly between 1 and n-1.
  • the public key Q is chosen equal to [s] -G.
  • the point G being fixed, the doubles of the point G can be calculated once and stored in a table.
  • the public key Q can be obtained by the algorithm A3 or by the other algorithms presented in Appendices II and III, if the DP table containing the multiples at 2 1 of the point G has been fulfilled.
  • the signature consists of the pair (x, y).
  • the multiples at 2 1 of the Q point can also be stored in a table if the key pair (s, Q) can be used several times to sign and verify the signature of a message.
  • a private and public key pair (s, Q) can be generated as in the ECDSA algorithm.
  • the condition P ⁇ 0 must be verified.
  • the multiples in 2 1 of the points G and Q can be calculated once and for all and stored in tables.
  • the message m is then encrypted by a symmetric encryption algorithm E using the key Ke.
  • Data d is then computed by applying a hash function to the key Km and to another data item S2 shared with the recipient of the message.
  • the result c of the encryption of the message is transmitted to the recipient of the encrypted message with the data item d and the public key R.
  • the obtained point P must be different from 0.
  • KDM key derivation function
  • Km shared data SI
  • the invention is also not limited to the projective coordinates presented, but applies to any other type of coordinates, the adaptation of the algorithms presented to these other types of coordinates being within the reach of the human being. job.
  • the invention is also not limited to the memorization of all the multiples in 2 1 or 2 mi of the point P subject to a scalar multiplication, up to v or v
  • the missing multiples can be calculated during the iterative calculation of the multiplication result, only if necessary.
  • the algorithms A4, A4 'and A4' only in multiples 2 21 or 2 2l + 1 can be stored, multiple missing can be calculated based on the purpose of calculating scalar multiplication, simply by performing an operation doubling to multiply the multiple DP [i] immediately below by 2.
  • This arrangement can be easily extrapolated to the algorithms A5 and A6 and their derived algorithms It can also be envisaged to memorize only the first multiples in 2 1 or 2 m 1 of the point P, the other multiples being calculated at each iteration as in the algorithm A3.
  • Step 2 For s going from v-1 to 0 do:
  • Step 2 For s going from 0 to v-1 do:
  • Step 2 for s ranging from v-1 to 0
  • Step 2 for i ranging from 0 to v-1 do:
  • a set of v DP registers the size of the point P such that
  • Step 2 for i ranging from 0 to v-1 do:
  • Step 3 Return R Algorithm A5 - Multiplication by a scalar "Doubles Stored & Add Only"
  • a set of DP registers the size of the point P such that
  • Step 2 for i ranging from 0 to -1, do
  • x is the smallest integer greater than or equal to x
  • a set of DP registers the size of the point P such that
  • Step 2 for i ranging from 0 to ⁇ 1, do:
  • Step 3 R [l] [j . R (ADD)
  • Algorithm A4 '- Secured Multiplication by a scalar "Doubles Stored & Add Onlv"
  • Step 2 ' Generate a random permutation ⁇ in ⁇ 0, ..., v- 1 ⁇
  • Step 2 for i ranging from 0 to v-1 do:
  • a set of DP registers the size of the point P such that
  • Step 2 ' Generate a random permutation ⁇ a elements in
  • Step 2 for i going -1, do:
  • a set of DP registers the size of the point P such that
  • Step 2 ' Generate a random permutation ⁇ to elements in
  • Step 2 for i ranging from 0 to ⁇ 1, do:
  • Step 3 R [1] ⁇ [j] - R (ADD)
  • Step 2 for i ranging from 0 to v-1 do:
  • a set of DP registers the size of the point P such that
  • Step 2 for i ranging from 0 to -1, do:
  • Step 2 for i ranging from 0 to ⁇ 1, do:

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Abstract

L'invention concerne un procédé de traitement cryptographique de données, mis en œuvre dans un dispositif électronique (DV1) comprenant un processeur (PROC), le procédé comprenant des étapes de fourniture d'un point d'une courbe elliptique dans un corps de Galois, et d'un nombre entier, et de calcul d'unproduit scalaire du point par le nombre, les coordonnées du point et le nombre ayant une taille supérieure à la taille de mots susceptibles d'être traités directement par le processeur, la multiplication scalaire du point par le nombre, comprenant des étapes consistant à: mémoriser des multiplesscalairesdu point par le nombre 2 élevé à une puissance appartenant à une série de nombres entiers, initialiser un point résultant, pour chaque bit non nul du premier nombre, additionner le point résultant et l'un des points multiples mémorisés, et fournir en sortie du processeur le point résultant en tant que résultat du produit scalaire.

Description

PROCEDE DE CRYPTOGRAPHIE COMPRENANT UNE OPERATION DE MULTIPLICATION PAR UN SCALAIRE OU UNE EXPONENTIATION
La présente invention concerne la mise en œuvre de la cryptographie à courbes elliptiques dans un dispositif électronique, et plus particulièrement un procédé de calcul du résultat de la multiplication par un scalaire d'un point appartenant à une courbe elliptique.
Divers procédés de cryptographie connus basés sur les courbes elliptiques reposent sur l'opération de multiplication scalaire, qui a pour expression mathématique : [k] -P = P [+] P [+] ... [+] P (k fois), P étant un point choisi sur une courbe elliptique, k étant un nombre entier, et "[+]" étant l'opérateur d'addition appliqué à des points de la courbe elliptique. Le nombre k est par exemple une clé privée et le point résultat [k]-P de cette opération, ou l'une des coordonnées affines du point résultat peut être utilisé comme clé publique. En effet, connaissant le résultat [k] -P et les coordonnées du point P, il peut être extrêmement difficile de trouver la valeur du nombre k. Cette opération est utilisée par exemple lors d'un calcul de signature, ou pour générer une clé de cryptographie, ou encore pour chiffrer un message. Cette opération est mise en œuvre par divers algorithmes de cryptographie basés sur les courbes elliptiques, tels que l'algorithme ECDSA ("Elliptic Curve Digital Signature Algorithm"), ECDH (Elliptic Curve Diffie- Hellman), ECIES (Elliptic Curve Integrated Encryption Scheme), etc.
Les opérations entre points d'une courbe elliptique se ramènent à des opérations sur les coordonnées de ces points dans des corps de Galois de la forme Fq, q étant soit un nombre premier p, soit une puissance de 2 (de la forme 2m). L'opération de multiplication scalaire est généralement décomposée en une série d'opérations d'addition et de doublement de points. Ainsi, il est connu d'exécuter un calcul de multiplication scalaire au moyen de l'algorithme "double & add" ("doubler et additionner") Al ou Α figurant en Annexe I. L'algorithme Al est dit "de gauche à droite" car les premières étapes de la boucle de calcul commencent par traiter les bits de poids fort du nombre scalaire k, pour aller vers les bits de poids faible. L'algorithme Α est dit "de droite à gauche" car les premières étapes de la boucle de calcul commencent par traiter les bits de poids faible du nombre scalaire, pour aller vers les bits de poids fort. Ces algorithmes comprennent pour chaque itération, c'est-à-dire chaque bit de l'exposant, une addition de deux points identiques R d'une courbe elliptique, et si le bit du scalaire traité par l'itération est égal à 1 , une addition du point R avec un autre point P de la courbe elliptique. Il est généralement fait appel à des fonctions différentes pour exécuter chacune de ces opérations, l'addition de deux points identiques étant exécutée au moyen d'une fonction de doublement ou fonction "DOUBLE", tandis que l'addition de deux points différents est exécutée au moyen d'une fonction d'addition ou fonction "ADD". Cette distinction est due au fait qu'il est possible de calculer plus rapidement P [+] Q lorsque les points P et Q sont identiques que dans le cas contraire, au moyen de la fonction DOUBLE. Dans certains systèmes de coordonnées, l'addition de deux points identiques peut conduire à une division par zéro. Un autre mode de calcul est donc nécessaire.
Dans un dispositif électronique de type carte à puce, le calcul cryptographique est généralement exécuté par un processeur spécifique, tel un coprocesseur arithmétique ou un crypto-processeur. Le calcul de "[k] -P", et plus particulièrement l'exécution d'additions de points d'une courbe elliptique, occupe la majeure partie du temps de calcul du processeur relativement au temps total de génération d'une clé, de calcul d'une signature, de vérification de signature, ou d'une opération de chiffrement ou de déchiffrement. Le fait d'utiliser alternativement la fonction DOUBLE ou la fonction ADD en fonction du type de calcul à effectuer permet donc d'optimiser le temps de calcul global de chiffrement, de déchiffrement, de signature ou de vérification de signature.
Toutefois, l'utilisation de deux fonctions différentes DOUBLE et ADD conduit à une fuite d'information détectable par analyse SPA ("Simple Power Analysis"), c'est-à-dire par analyse de la consommation électrique de la carte. La fonction DOUBLE ayant un temps d'exécution plus court que la fonction ADD, il est possible de différencier ces deux opérations en observant la courbe de consommation électrique du composant. On entend par "consommation électrique" toute grandeur physique observable trahissant le fonctionnement du composant électronique exécutant l'opération, notamment le courant électrique consommé ou le rayonnement électromagnétique du composant. Ainsi, sur une courbe de consommation électrique d'un composant exécutant l'algorithme Al, il est possible de distinguer le profil de consommation de la fonction DOUBLE et celui de la fonction ADD. Une opération DOUBLE suivie d'une opération ADD (étape 2.1 suivie d'une étape 2.2) révèle que le bit du nombre scalaire k est égal à 1 puisque le branchement conditionnel vers l'étape 2.2 nécessite que la condition ks=l soit réalisée. Inversement, une opération DOUBLE suivie d'une autre opération DOUBLE (étape 2.1 suivie d'une autre étape 2.1) révèle que le bit ks du nombre scalaire est égal à 0. Les bits du nombre scalaire k peuvent ainsi être découverts les uns après les autres par une simple observation de la courbe de consommation électrique.
Pour pallier cet inconvénient, les étapes 2.1 et 2.2 des algorithmes Al et Α pourraient si possible être effectuées au moyen de la fonction ADD uniquement, sans utiliser la fonction DOUBLE. Toutefois, une analyse plus fine de la consommation électrique permettrait de distinguer l'étape 2.1 de l'étape 2.2 car l'algorithme Al ou Α n'est pas régulier. En effet, dans ce cas, le temps s'écoulant entre deux additions successives n'est pas le même lorsque les deux additions correspondent à l'exécution successive de deux étapes 2.1 (bit ks égal à 0) ou correspondent à l'exécution d'une étape 2.1 suivie d'une étape 2.2 (bit ks à 1). Un attaquant pourrait ainsi "zoomer" sur la partie de la courbe de consommation s'étendant entre les additions et observerait une dissymétrie temporelle révélatrice du branchement conditionnel et donc de la valeur du bit du nombre scalaire.
L'algorithme A2 figurant en Annexe I, appelé "Montgomery Ladder", permet également de réaliser un calcul de multiplication scalaire. Cet algorithme consiste à chaque itération à effectuer deux additions, l'une appliquée à deux points différents, et l'autre appliquée à deux points identiques et pouvant donc être effectuée par une addition ou une opération de doublement. A chaque itération, l'un des deux registres Ro, Ri reçoit la somme du contenu des deux registres, et l'autre des deux registres le double du contenu de ce registre. Si le bit ks correspondant à l'itération en cours, du nombre scalaire k est à 0, le registre Ri reçoit le résultat de l'addition, et le contenu du registre Ro est doublé, et inversement si le bit ks est à 1.
Cet algorithme présente l'avantage d'être parfaitement régulier en ce que chaque itération comporte systématiquement deux additions, ou une addition et une opération de doublement. Cet avantage est obtenu sans avoir à ajouter d'opération factice, donc sans avoir à augmenter le temps de calcul.
Il est également possible de réduire le temps de calcul d'un produit par un nombre scalaire par une sélection appropriée d'une représentation de points d'une courbe elliptique. En effet, les opérations de doublement et d'addition en coordonnées affines comportent un calcul d'inversion qui nécessite un temps de calcul correspondant à celui de plusieurs dizaines de multiplications. Il est connu de supprimer ce calcul d'inversion en utilisant une représentation en coordonnées projectives, telles que les coordonnées projectives homogènes ou jacobiennes. La représentation en coordonnées projectives homogènes consiste à changer les coordonnées affines (x, y) en coordonnées de la forme (X/Z,Y/Z), Z étant différent de 0. L'équation de la courbe elliptique de Weierstrass devient alors : Y2Z = X3 + aXZ2 + bZ3. La représentation en coordonnées projectives jacobiennes consiste à changer les coordonnées affines (x, y) en coordonnées de la forme (X/Z2,Y/Z3), Z étant différent de 0. L'équation de la courbe elliptique de Weierstrass devient : Y2 = X3 + aXZ4 + bZ6.
Il pourrait donc être souhaité de réduire davantage le temps de calcul d'un procédé d'exécution d'un calcul de multiplication scalaire appliqué à un point d'une courbe elliptique. Il pourrait être également souhaité de protéger un tel procédé contre les attaques à canal caché mentionnées précédemment, tout en évitant de pénaliser le temps de calcul.
Des modes de réalisation concernent un procédé de traitement cryptographique de données, mis en œuvre dans un dispositif électronique comprenant un processeur, le procédé comprenant des étapes de fourniture d'un point d'une courbe elliptique dans un corps de Galois, et d'un premier nombre entier, et de calcul d'une multiplication scalaire du point par le premier nombre, les coordonnées du point et le premier nombre ayant une taille supérieure à la taille de mots susceptibles d'être traités directement par le processeur. Selon un mode de réalisation, le calcul de multiplication scalaire du point par le premier nombre, comprend des étapes consistant à : mémoriser une série de points multiples résultant chacun du produit scalaire du point par 2 élevé à une puissance appartenant à une série de nombres entiers, initialiser un point résultant appartenant à la courbe elliptique, exécuter plusieurs itérations pour prendre en compte une seule fois chacun des bits du premier nombre, chaque itération comprenant un calcul d'une combinaison de plusieurs bits du premier nombre, et si la combinaison est non nulle, un calcul d'addition entre le point résultant et l'un des points multiples mémorisés correspondant à des rangs des bits de la combinaison de bits du premier nombre, et fournir en sortie du processeur le point résultant en tant que résultat du calcul de multiplication scalaire du point par le premier nombre.
Selon un mode de réalisation, les bits du premier nombre sont pris en compte dans un ordre aléatoire ou pseudo-aléatoire lors du calcul du point résultant.
Selon un mode de réalisation, les calculs d'addition entre le point résultant et les multiples mémorisés sont effectués en coordonnées affines. Selon un mode de réalisation, les calculs d'addition entre le point résultant et les résultats mémorisés sont effectués en coordonnées projectives.
Selon un mode de réalisation, les multiples scalaires du point sont mémorisés en coordonnées affines, et les résultats obtenus étant transformés en coordonnées projectives par ajout aux coordonnées affines, d'une troisième coordonnée ayant une valeur fixée à un.
Selon un mode de réalisation, le premier nombre et les coordonnées du point sont codés en NAF, le procédé comprenant pour chaque bit égal à -1 ou combinaison de bits inférieure ou égale à -1, du premier nombre, un calcul d'addition entre le point résultant et l'opposé du multiple mémorisé correspondant au rang du bit égal à -1 ou de la combinaison de bits inférieure ou égale à -1, du premier nombre.
Selon un mode de réalisation, le procédé comprend une étage de génération d'une paire de clés privée et publique, comportant des étapes consistant à : choisir aléatoirement un second nombre en tant que clé privée, choisir en tant que point de base un point d'une courbe elliptique, les multiples mémorisés ayant été calculés à partir du point de base, et calculer le point résultant de la multiplication scalaire du point de base par le second nombre en utilisant les points multiples mémorisés, le point résultant ou l'une de ses coordonnées, étant choisi en tant que clé publique correspondant à la clé privée.
Selon un mode de réalisation, le procédé comprend une étage de signature d'un message, comportant des étapes consistant à : choisir aléatoirement un second nombre, choisir en tant que point de base un point d'une courbe elliptique, les multiples mémorisés ayant été calculés à partir du point de base, et calculer le point résultant, issu de la multiplication scalaire du point de base par le second nombre en utilisant les multiples mémorisés, appliquer une fonction de hachage au message à signer, et calculer la signature du message par les équations suivantes :
x = i mod n
y = k_1(H(m)+sx) mod n,
dans lesquelles x et y représentent la signature du message m, i étant une coordonnée du point résultant, k étant le second nombre, H(m) la fonction de hachage appliquée au message m, s un nombre utilisé comme clé privée, et n étant le plus petit entier positif tel que le produit scalaire de n par le point de base est égal au point à l'infini de la courbe elliptique. Des modes de réalisation concernent également un dispositif électronique comprenant un processeur configuré pour mettre en œuvre le procédé défini précédemment.
Selon un mode de réalisation, le dispositif est portable et autonome, ou de type carte à puce.
Des exemples de réalisation de l'invention et de mise en œuvre du procédé de l'invention seront décrits dans ce qui suit, à titre non limitatif en relation avec l'unique figure jointe représentant schématiquement un dispositif électronique mettant en œuvre un algorithme de multiplication scalaire selon un mode de réalisation.
L'invention concerne un procédé de calcul cryptographique comportant des additions de points identiques ou différents, appartenant à une courbe elliptique dans un corps de Galois. Ce procédé est mis en œuvre par un dispositif électronique configuré pour exécuter des calculs cryptographiques, incluant des multiplications scalaires d'un point par un nombre entier. Le procédé peut comprendre un calcul de multiplication scalaire utilisé par les algorithmes ECDSA, ECDH, ECIES, etc.
Selon un mode de réalisation, ce procédé se base sur une dérivation de l'algorithme Α , dans lequel les calculs de doublement sont effectués une seule fois, sachant que le point P n'est pas amené à être changé fréquemment. En effet, le point P faisant l'objet de tels calculs est dans certains cas fixé par exemple en tant que point de base faisant partie des paramètres dits de "domaine" d'un système cryptographique à courbe elliptique. Ces paramètres de domaine comprennent notamment les coefficients a et b d'une courbe elliptique dite de Weierstrass de la forme y2 = x3 + ax + b dans un corps Fp, p étant un nombre premier strictement supérieur à 3, avec 4a 3 + 27b 2≠ 0, ou bien de la forme y 2 + xy = x 3 + ax 2 + b dans un corps binaire F2 m. Les calculs de doublement de points d'une courbe elliptique peuvent être effectués en utilisant une addition optimisée tenant compte de l'égalité des opérandes.
L'algorithme A3 figurant en Annexe II est un exemple d'algorithme de multiplication scalaire, de droite à gauche, selon un mode de réalisation. L'algorithme A3 utilise une table ou un ensemble de v registres DP de la taille du point P (c'est-à-dire de la taille des coordonnées de ce point), v étant le nombre de bits du nombre scalaire k. Cet algorithme utilise un autre registre R également de la taille du point P. A noter que la taille du registre peut varier selon le système de coordonnées choisi. A l'étape 1 de cet algorithme, le registre R est initialisé à la valeur du point neutre "0" (tel que P [+] 0 = 0 [+] P = P) et le registre DP[0] reçoit la valeur du point P. L'étape 2 est un contrôle de boucle sur le nombre v de bits du nombre scalaire k. A l'étape 2.1 dans la boucle, la fonction de doublement est appelée pour charger dans le registre DP[i+l] la valeur du double du point contenu dans le registre DP[i]. L'étape 2.2 dans la boucle, est exécutée si le bit courant ki de rang i du nombre scalaire k est à 1. Si tel est le cas, la fonction d'addition est appelée pour incrémenter le contenu du registre R de la valeur contenue dans le registre DP[i]. A la suite de v itérations, le registre R contient le résultat [k] P de l'opération de multiplication scalaire du point P par le nombre entier k. Chaque registre DP[i] de l'ensemble de registres DP mémorise un multiple en 2' P (pour chaque valeur de i comprise entre 0 et v-1) du point P. De cette manière, si un nouveau calcul de multiplication scalaire doit être effectué avec un nombre scalaire k' différent du nombre k, il n'est pas nécessaire de recalculer les multiples 2' P du point P.
Ainsi, l'algorithme A4 figurant en Annexe II permet d'obtenir le résultat [k] P de la multiplication du nombre scalaire k par le point P seulement en exécutant l'étape 2.2 à chaque itération.
Dans une courbe elliptique de Weierstrass (sur un corps de Galois Fp), l'opposé d'un point P de coordonnées (x, y) et le point [-]P de coordonnées (x, -y). La somme de deux points Pl(xl,yl) et P2(x2,y2), avec P2≠±P1) est un point P3(x3,y3) tel que :
x3 = m2 - xl - x2
y3 = m(xl - x3) - yl, avec m = (y2 - yl)/(x2 - xl). (1)
Le double d'un point P(x,y) avec y≠ 0 est un point P4(x4, y4) = [2] - P tel que :
x4 = m - 2x
y4 = m(x - x4) - y, avec m = (3x2 + a)/2y. (2)
Il peut être observé que le calcul du nombre m dans les opérations d'addition et de doublement requiert un calcul d'inversion. Un tel calcul d'inversion s'avère très complexe et coûteux en temps de calcul. Il est possible de supprimer le calcul d'inversion par une sélection appropriée d'une représentation des points d'une courbe elliptique. A cet effet, il est connu d'utiliser une représentation en coordonnées projectives, telle que la représentation en coordonnées projectives homogènes ou jacobiennes. La représentation en coordonnées projectives homogène consiste à remplacer les coordonnées affines (x, y) par les coordonnées (X/Z,Y/Z) Z étant différent de 0. Inversement, il est possible de revenir en coordonnées affines d'un point en remplaçant les coordonnées projectives par les coordonnées (X=x Z,Y=y Z,Z), Z pouvant être choisi égal à 1 ou toute autre valeur non nulle du corps Fp. Le passage de coordonnées affines en coordonnées projectives peut être effectué simplement en choisissant Z égal à 1.
La somme de deux points P1(X1,Y1,Z1) et P2(X2,Y2,Z2) en coordonnées projectives homogènes, avec P2≠[±]P1, ZI≠ 0 et Z2≠0, est un point
Figure imgf000010_0001
B2 X1 Z2(3)
Le doublement d'un point P(X,Y,Z) est un point P4(X4,Y4,Z4) tel que :
X4 = B E A : 3 -X2 + a-Z2
Y4 = A (D - E) - 2 C2 B = 2 Y Z
Z4 = B3 avec C B Y
D 2 C X
E = A2 - 2 D (4) Les opérations ci-dessus sont effectuées dans le corps de Galois Fp, modulo p. Il peut être observé que les équations ci-dessus ne comportent pas d'opérations d'inversion. Ainsi, une opération d'addition en coordonnées projectives homogènes requiert douze multiplications, deux élévations au carré et sept additions, ces opérations étant modulaires et portant exclusivement sur des grands nombres. L'opération de doublement en coordonnées projectives homogènes requiert sept multiplications, cinq élévations au carré et onze additions. Par ailleurs, si a est choisi égal à -3 (comme dans toutes les courbes du standard FIPS 186-3), le nombre A peut être factorisé dans la formule d'addition de la manière suivante :
Α = 3 ·(Χ1+Ζ12)·(Χ1-Ζ12) (5) ce qui permet d'économiser deux élévations au carré de grands nombres entiers.
Selon un mode de réalisation, les valeurs mémorisées dans les registres DP sont calculées et stockées en coordonnées affines et transformées en coordonnées projectives jacobiennes ou homogènes en choisissant Z égal à 1 lors de la multiplication scalaire. En effet, si les valeurs mémorisées dans les registres DP sont utilisées pour plusieurs calculs de produit par un nombre scalaire, un compromis acceptable peut consister à calculer ces valeurs par des calculs en coordonnées affines, plus coûteux en temps de calcul, ou par des calculs en coordonnées projectives suivis de conversions des points en coordonnées affines. Il en résulte que l'addition d'un point ΡΙ(ΧΙ,ΥΙ,ΖΙ) avec un multiple DP[i] de coordonnées (DX,DY,1), effectuée à l'étape 2.2 peut être simplifiée de la manière suivante :
X3 = B C A = DY Z1 - Y1
Y3 = A (B2 X1 - C) -B3 Y1 B = DX Z1 - X1
Z3 = B3 Z1 avec : C = A2 Z1 - B3 - 2 B2 X1
(6)
Ce mode de réalisation permet donc d'obtenir une réduction de trois multiplications de grands nombres pour chaque addition de points effectuée à l'étape 2.2. Une telle addition de points où l'un des points est exprimé en coordonnées projectives, l'autre en coordonnées affines (ou projectives avec Z=l) et le résultat est obtenu en coordonnées projectives, est appelée addition "mixte".
L'algorithme A5 présenté en Annexe II est dérivé de l'algorithme A4 en appliquant une fenêtre glissante de deux bits, c'est-à-dire en traitant deux bits du nombre scalaire k à chaque itération. Le nombre d'itérations à effectuer est donc divisé par deux, en utilisant un ensemble R de trois registres au lieu d'un seul registre. Par ailleurs, le nombre de registres de l'ensemble des registres DP est divisé par deux par comparaison avec l'algorithme A4, et chaque registre DP[i] reçoit le multiple [22l] -P. Chaque itération d'indice i comporte deux étapes 2.1 et 2.2. L'étape 2.1 consiste à calculer un nombre entier u en combinant deux bits consécutifs k2i et k2i+i de rangs 2i et 2i+l du nombre scalaire k. L'étape 2.2 qui est exécutée si le nombre u est non nul, consiste à ajouter au point dans le registre R[u] le point DP[i], soit [22l] -P. Lorsque toutes les itérations ont été effectuées, le résultat de la multiplication scalaire est obtenu par la combinaison des valeurs des registres R[l] [+] 2-R[2] [+] 3 -R[3].
L'algorithme A6 présenté en Annexe II est une généralisation de l'algorithme A5 à une fenêtre glissante de m valeurs, c'est-à-dire en regroupant le traitement de m bits ki du nombre scalaire k à chaque itération. L'application d'une telle fenêtre glissante permet ainsi de diminuer le nombre d'itérations. Cependant cette diminution est réalisée au détriment du nombre d'opérations d'addition et de doublement effectuées à l'étape 3 qui augmente d'une manière exponentielle (en 2m). Il existe donc une valeur optimum de la taille de la fenêtre glissante, en fonction de la taille v du nombre scalaire.
Il peut être observé que l'opération réalisée à l'étape 2.2 de l'algorithme A4, peut être effectuée dans n'importe quel ordre. Ainsi, le rang i du bit ki traité à chaque itération peut être choisi de manière aléatoire ou pseudo-aléatoire, dès lors que chaque bit ki du nombre scalaire k est traité une et une seule fois.
L'algorithme A4' présenté en Annexe II est dérivé de l'algorithme A4 en lui ajoutant une étape supplémentaire 2' d'application d'une permutation aléatoire σ aux bits ki du nombre scalaire k. L'étape 2.2 est également modifiée pour utiliser le multiple ϋΡ[σ(ί)] correspondant au bit k0(^ traité par l'itération courante. Un algorithme de permutation pseudo-aléatoire est décrit par exemple dans le document "A New DPA Countermeasure Based on Permutation Tables", Jean-Sébastien Coron, SCN 2008, p. 278-292. Les attaques SPA et DPA (Differential Power Analysis) peuvent ainsi être neutralisées sans avoir à ajouter d'opérations factices et donc sans pénaliser les performances de calcul. En effet, de telles attaques visent à déterminer à quelles itérations une opération d'addition est effectuée, et à en déduire la valeur du nombre scalaire k, sachant qu'une opération d'addition est effectuée pour chaque bit ki égal à 1 du nombre k. Si les bits ki sont traités dans un ordre aléatoire comme dans l'algorithme A4', une telle attaque permet simplement de déterminer le nombre de bits ki à 1 , mais pas leurs rangs respectifs dans le nombre k.
Dans les algorithmes A5 et A6, les groupes de bits du nombre scalaire k traités à chaque itération, peuvent être également traités dans un ordre quelconque, par exemple choisi aléatoirement. Il en résulte que les groupes de deux ou m bits du nombre k traités à chaque itération ne sont pas nécessairement consécutifs. Les groupes de bits ki traités à chaque itération des algorithmes A5 et A6 peuvent donc être choisis de manière aléatoire ou pseudo-aléatoire, dès lors que tous les bits du nombre scalaire k sont pris en compte dans le calcul du produit scalaire. Ainsi, les algorithmes Α5 ', A6' présentés en Annexe II sont dérivés des algorithmes A5 et A6 en leur ajoutant à chacun une étape supplémentaire 2' d'application d'une permutation aléatoire aux bits du nombre scalaire k. Les étapes 2.1 et 2.2 sont également modifiées pour tenir compte du rang de chacun des bits ki traités par l'itération courante dans le calcul du nombre u et lors de la lecture des registres DP.
La figure 1 représente sous forme de schéma bloc un dispositif électronique DV1 configuré pour exécuter un calcul crypto graphique incluant un ou plusieurs des algorithmes A3, A4, A4', A5, A5 ', A6, A6' appliqués à des nombres de grande taille. Le dispositif DV1 peut être un circuit intégré sur microplaquette de semi-conducteur agencé sur un support portatif comme une carte en matière plastique, l'ensemble formant une carte à puce. Le dispositif DV1 peut également être n'importe quel appareil équipé d'un processeur multi-tâche, tel qu'un téléphone mobile intelligent ("smartphone"), un lecteur multimédia, une tablette tactile, ou un ordinateur personnel. Le dispositif DV1 peut également être un composant d'un tel appareil, par exemple relié à un processeur principal de l'appareil.
Le dispositif DV1 comprend un processeur PROC, un bloc de calcul AB1 configuré pour exécuter une addition de points P et Q appartenant à une courbe elliptique, un bloc de calcul DB1 configuré pour exécuter un doublement d'un point P appartenant à une courbe elliptique, une mémoire MEM et un circuit d'interface de communication IC. Le circuit d'interface IC peut être du type à contact ou sans contact, par exemple un circuit d'interface RF ou UHF fonctionnant par couplage inductif ou par couplage électrique. Les blocs de calcul AB1, DB1 peuvent comprendre chacun un coprocesseur équipé d'une unité centrale programmable, un coprocesseur entièrement hardware de type machine d'état. Les blocs de calculs AB1, DB1 peuvent simplement correspondre à une fonction appelée par un programme principal exécuté notamment par le processeur PROC. Les deux blocs de calcul AB1, DB1 peuvent également être intégrés dans un même composant (coprocesseur ou machine d'état).
De façon en soi classique, une variable est dite "de grande taille" lorsque sa taille (en nombre de bits) est supérieure à celle des registres de calcul du processeur PROC. Ce dernier effectue lui-même, sans faire appel aux blocs de calcul AB1, DB1, des opérations de nombres de taille inférieure ou égale à celle de ses registres de calcul, et fait appel aux blocs de calcul AB1, DB1 pour effectuer des opérations d'addition et de doublement portant sur des points de courbe elliptique présentant des coordonnées de grande taille. Par exemple, si la taille des registres de calcul du processeur PROC est de 32 bits, une variable de grande taille est une variable de plus de 32 bits. En cryptographie basée sur les courbes elliptiques, les variables manipulées (coordonnées des points de courbes elliptiques, paramètres p - module, b, n - nombre de points appartenant à la courbe elliptique, Gx, Gy - coordonnées du point de base G) peuvent atteindre plusieurs centaines de bits (typiquement 160, 192, 224, 256, 320, 384, 521 bits).
La mémoire MEM est couplée au processeur PROC et permet au dispositif DV1 de mémoriser une clé secrète k. Le processeur PROC reçoit, par l'intermédiaire du circuit d'interface IC, un message m à chiffrer, à déchiffrer, ou à signer, ou bien une signature à vérifier, et renvoie un message chiffré ou déchiffré, ou une signature, du type Fk(m), Fk étant une fonction de cryptographie basée sur la clé k comprenant un calcul de multiplication scalaire exécuté au moyen de l'un des algorithmes présentés en Annexe II. Pendant le calcul de multiplication scalaire, le processeur PROC fait appel aux blocs de calcul ABl, DB1, en fournissant des points P, Q au bloc de calcul ABl qui retourne la somme P [+] Q, et en fournissant un point P au bloc de calcul DB1 qui retourne le double [2] -P. Une partie de la mémoire MEM peut également être utilisée comme mémoire tampon pour mémoriser le contenu des registres R et DP mentionnés dans les algorithmes présentés en Annexe II.
Le dispositif DV1 peut également comprendre des blocs de calcul configurés pour exécuter une multiplication modulaire de nombres de grande taille et une élévation au carré modulaire d'un nombre de grande taille, ces blocs de calcul étant utilisés par les blocs de calcul ABl, DB1 pour mettre en œuvre les équations (1) à (6).
Les temps d'exécution par bit du nombre scalaire k et le nombre de registres de grande taille utilisés (c'est-à-dire de points à mémoriser) pour chacun des algorithmes précédemment présentés sont rassemblés dans le tableau 1 suivant :
Tableau 1
Figure imgf000014_0001
Dans le tableau 1 , v représente le nombre de bits du nombre scalaire k, et M représente le temps de calcul d'une multiplication de nombres de grande taille, M variant également en fonction du nombre v. Les valeurs numériques relatives au temps d'exécution figurant dans le tableau 1 ont été obtenues en considérant que le coût en temps de calcul d'une élévation au carré d'un grand nombre est égal à 0,8 fois celui d'une multiplication de grands nombres, et en négligeant le temps d'exécution des additions et soustractions de nombres de grande taille. Le tableau 1 mentionne également le temps d'exécution des opérations d'addition et de doublement d'un point. Dans les algorithmes A5, A6, le terme additionnel figurant dans les colonnes relatives au temps d'exécution, représente le temps de calcul pris pour exécuter l'étape 3 rapporté au nombre de bits v. Le nombre d'opérations d'addition et de doublement effectuées à l'étape 3 augmente rapidement avec la valeur de m.
Il ressort du tableau 1 que les algorithmes A4 à A6 atteignent un temps de calcul par bit du nombre scalaire, sensiblement égal ou inférieur à la moitié du temps de calcul d'une addition de points d'une courbe elliptique.
Selon un mode de réalisation, les algorithmes présentés en Annexe II sont adaptés pour traiter des nombres scalaires codés non pas en binaire mais sous une autre forme, par exemple en codage NAF (Non-Adjacent Form). En codage NAF, chaque bit d'un nombre peut présenter trois états (-1,0,1) et chaque bit différent de 0 du nombre est précédé et suivi d'un bit à 0, les premiers et derniers bits du nombre pouvant avoir n'importe quelle valeur. Il en résulte que le nombre moyen de bits à 0 d'un nombre (poids de Hamming) passe de la moitié en binaire à un tiers en codage
NAF, tandis que le nombre de bits d'un nombre en codage NAF est identique ou augmenté de 1 par rapport à celui de ce même nombre codé en binaire. Ainsi, les algorithmes A4", A5", A6", présentés en Annexe III sont des adaptations des algorithmes A4, A5, A6 à une représentation des nombres en codage NAF. En comparaison avec les algorithmes A4, A5, A6, les algorithmes A4", A5", A6" comprennent une étape supplémentaire 2.3 pour traiter le cas où le bit !¾ est égal à -1.
Dans ce cas, le multiple DP[i] ou DP[u] est retranché du point R. De manière classique, l'opération de soustraction de points consiste en une addition, le second opérande étant changé de signe. Dans le groupe de points d'une courbe elliptique sur un corps de Galois de type Fp, p étant un nombre premier supérieur à 3, le changement de signe d'un point P(x,y) en coordonnées affines consiste à changer le signe de sa seconde coordonnée y. Dans le groupe de points d'une courbe elliptique sur un corps de Galois de type F2 m, le changement de signe d'un point P(x,y) en coordonnées affines consiste à remplacer la seconde coordonnée par la somme x+y des coordonnées du point. Bien entendu, les algorithmes A4', Α5', A6' peuvent être adaptés d'une manière analogue pour traiter des nombres en codage NAF, pour contrer des attaques de type SPA et/ou DP A.
Compte tenu du rapport moyen de bits différents de 0 égal à 1/3, dans un nombre en codage NAF, les temps d'exécution par bit du nombre scalaire k pour chacun des algorithmes A4", A5", A6" sont rassemblés dans le tableau 2 suivant :
Tableau 2
Figure imgf000016_0001
Le nombre de registres de grande taille utilisés par les algorithmes A4", A5", A6" reste inchangé par rapport à ceux utilisés par les algorithmes A4, A5, A6.
Les algorithmes présentés en Annexes II et III peuvent être mis en œuvre dans un algorithme de signature numérique à clé publique de type ECDSA. L'algorithme ECDSA consiste à choisir une courbe elliptique E(a,b) sur un corps de Galois Fq, et un point de base G(Gx,Gy) de la courbe elliptique choisie E(a,b). Le nombre n est le plus petit entier positif tel que [n] -G = 0 (point à l'infini). Il s'agit ensuite de générer une paire de clés publique et privée. La clé privée s peut être choisie aléatoirement entre 1 et n-1. La clé publique Q est choisie égale à [s] -G. Le point G étant fixe, les doubles du point G peuvent être calculés une seule fois et mémorisés dans une table. La clé publique Q peut être obtenue par l'algorithme A3 ou par les autres algorithmes présentés dans les Annexes II et III, si la table DP contenant les multiples en 21 du point G a été remplie.
Pour signer un message m, on choisit de manière aléatoire un nombre k entre 1 et n-1. On calcule les coordonnées du point P(i,j) = [k] -G. Si x = i mod n est égal à
0, il est nécessaire de choisir un autre nombre k. On calcule ensuite le nombre y = k" 1(H(m)+sx) mod n, où H(m) est le résultat d'une fonction de hachage telle que SHA-
1, appliquée au message m. Si le nombre y obtenu est nul, il est nécessaire de recommencer le calcul en choisissant une autre valeur pour le nombre k. La signature est constituée par la paire (x, y).
Pour vérifier la signature (x,y), il faut tout d'abord vérifier que le point Q constituant la clé publique est différent de 0, qu'il appartient à la courbe elliptique E(a,b), que [n] Q = 0 et que x et y sont bien compris entre 1 et n-1. Ensuite, il convient de calculer les coordonnées du point P(i,j) de la manière suivante :
P(i,j) = [H(m)-y_1 mod n] G + [χ-y 1 mod n] Q
et vérifier que x = i mod n. Les multiples en 21 du point Q peuvent également être mémorisés dans une table si la paire de clés (s,Q) peut être utilisée plusieurs fois pour signer et vérifier la signature d'un message.
Les algorithmes présentés en Annexes II et III peuvent également être mis en œuvre dans l'algorithme de chiffrement/déchiffrement ECIES. Une paire de clés privée et publique (s, Q) peut être générée comme dans l'algorithme ECDSA. Pour chiffrer un message m, on choisit aléatoirement un nombre r entre 1 et n-1, et on calcule les points R = [r] G et P(x,y) = [r] -Q, Q étant la clé publique du destinataire du message chiffré. La condition P≠ 0 doit être vérifiée. Ici encore, les multiples en 21 des points G et Q peuvent être calculés une fois pour toutes et mémorisés dans des tables. On utilise ensuite une fonction de dérivation de clé KDF pour générer des clés symétriques Ke, Km, telles que (Ke, Km) = KDF(x,Sl), SI étant une donnée partagée avec le destinataire du message chiffré. Le message m est ensuite chiffré par un algorithme de chiffrement symétrique E utilisant la clé Ke. On calcule ensuite une donnée d en appliquant une fonction de hachage à la clé Km et à une autre donnée S2 partagée avec le destinataire du message. Le résultat c du chiffrement du message est transmis au destinataire du message chiffré avec la donnée d et la clé publique R.
Pour déchiffrer le message chiffré (c,d) le destinataire du message calcule le point P(x,y) = [s] -R (=[r]-Q). Le point P obtenu doit être différent de 0. On utilise ensuite la même fonction de dérivation de clé KDM et la donnée partagée SI, pour générer les clés symétriques Ke, Km. On calcule ensuite le nombre d en utilisant la même formule appliquée à la clé Km et à la donnée partagée S2. Si le nombre d obtenu est identique au nombre d reçu, le message peut être déchiffré en appliquant à la donnée chiffrée c reçue, la fonction de déchiffrement symétrique correspondant à la fonction de chiffrement utilisée, à l'aide de la clé Ke.
Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l'invention n'est pas limitée aux applications présentées, mais s'applique à toute autre application de cryptographie à courbe elliptique dans laquelle les doubles d'un point sont réutilisés plusieurs fois.
L'invention n'est pas non plus limitée aux coordonnées projectives présentées, mais s'applique à n'importe quel autre type de coordonnées, l'adaptation des algorithmes présentés à ces autres types de coordonnées étant à la portée de l'homme du métier.
L'invention n'est pas non plus limitée à la mémorisation de tous les multiples en 21 ou 2m i du point P faisant l'objet d'une multiplication scalaire, jusqu'à v ou v
— , c'est-à-dire le plus petit entier supérieur à v/m. En effet, il peut être souhaité de m
limiter l'espace mémoire occupé par les registres DP. A cet effet, les multiples manquants peuvent être calculés lors du calcul itératif du résultat de la multiplication, seulement si nécessaire. Ainsi, dans les algorithmes A4, A4' et A4", seuls les multiples en 221 ou 22l+1 peuvent être mémorisés, les multiples manquants pouvant être calculés en fonction des besoins du calcul de multiplication scalaire, simplement en effectuant une opération de doublement pour multiplier le multiple DP[i] immédiatement inférieur par 2. Cette disposition peut être aisément extrapolée aux algorithmes A5 et A6 et leurs algorithmes dérivés. Il peut également être envisagé de ne mémoriser que les premiers multiples en 21 ou 2m 1 du point P, les autres multiples étant calculés à chaque itération comme dans l'algorithme A3.
ANNEXE I (Faisant partie intégrante de la description)
Algorithme Al - Multiplication par un scalaire "Double & Add", de gauche à droite"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un registre R de la taille du point P
Sortie : [k]-P
Étape 1 : R = 0
Étape 2 : pour s allant de v-1 à 0 faire :
Étape 2.1 : R = [2] R (DOUBLE) Étape 2.2 : si ks = 1 alors R = R [+] P (ADD)
Étape 3 : Retourner R
Algorithme Al' - Multiplication par un scalaire "Double & Add", de droite à gauche"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : deux registres Ro, Ri de la taille du point P
Sortie : [k]-P
Étape 1 : Ro = 0 ; Ri = P
Étape 2 : pour s allant de 0 à v-1 faire :
Étape 2.1 : si ks = 1 alors Ro = Ro [+] Ri (ADD)
Étape 2.2 : Ri = [2] Ri (DOUBLE) Étape 3 : Retourner Ro
"P[+]Q" représente l'addition de deux points P et Q d'une courbe elliptique
"0" représente l'élément neutre du corps Fq (tel que P[+]0 = 0[+]P = P) Algorithme A2 - "Montgomery Ladder" (de gauche à droite)
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : deux registres Ro, Ri de la taille du point P
Sortie : [k]-P
Étape 1 : Ro = 0 ; Ri = P
Étape 2 : pour s allant de v-1 à 0
Étape 2.1 : b = ks
Étape 2.2 : Ri_b = Ri_b [+] Rb (ADD) Étape 2.3 : Rb = [2] Rb (DOUBLE) Étape 3 : Retourner Ro
ANNEXE II (Faisant partie intégrante de la description)
Algorithme A3 - Multiplication par un scalaire "Double & Add"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un registre R de la taille du point P
Un ensemble de v+1 registres DP de la taille du point P
Sortie : [k]-P
Étape 1 : R = 0 ; DP[0] = P
Étape 2 : pour i allant de 0 à v-1 faire :
Étape 2.1 : DP[i+l] = [2] -DP[i] (DOUBLE)
Étape 2.2 : si k; = 1 alors R = R [+] DP[i] (ADD) Étape 3 : Retourner R
Algorithme A4 - Multiplication par un scalaire "Doubles Stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un registre R de la taille du point P
un ensemble de v registres DP de la taille du point P tels que
DP[i]=[ï]-P, avec 0 < i < v
Sortie : [k]-P
Étape 1 : R = 0
Étape 2 : pour i allant de 0 à v-1 faire :
Étape 2.2 : si k; = 1 alors R = R [+] DP[i] (ADD) Étape 3 : Retourner R Algorithme A5 - Multiplication par un scalaire "Doubles Stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un ensemble R de trois registres de la taille du point P
v
un ensemble de registres DP de la taille du point P tels que
DP[i]=[2zl]-P, avec
Sortie : fkJ-P
Etape 1 : R[l] = 0 ; R[2] = 0 ; R[3] = 0
v
Étape 2 : pour i allant de 0 à -1, faire
Etape 2.1 : u = k2i + 2k2i+i
Étape 2.2 : si u> 1 alors R[u] = R[u] [+] DP[i] (ADD) Etape 3 : R[l] = R[l] [+] R[3] [+] [2] -(R[2] [+] R[3]) (ADD) Étape 4 : Retourner R[l]
x représentant le plus petit nombre entier supérieur ou égal à x
Algorithme A6 - Multiplication par un scalaire "Doubles stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un ensemble R de 2m-l registres de la taille du point P (m>2)
v
un ensemble de registres DP de la taille du point P tels que
m
v
DP[i]=[2m i]-P, pour 0 < i <
m
Sortie : [k]-P
Etape 1 : pour j allant de 1 à 2m-l, faire R[j] = 0
v
Étape 2 : pour i allant de 0 à 1, faire :
m
m-1
Étape 2.1 : u =∑2j k m-i+j
=0 (avec ki = 0 si i > v-1)
Etape 2.2 : si u> 1 alors R[u] = R[u] [+] DP[i] (ADD)
Etape 3 : R[l]
Figure imgf000023_0001
[j. R (ADD)
Etape 4 : Retourner R[l]
représente l'opérateur d'addition de points dans le groupe de points de la courbe elliptique, à coordonnées dans le corps Fq.
Algorithme A4' - Multiplication Sécurisée par un scalaire "Doubles Stored & Add Onlv"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un registre R de la taille du point P
un ensemble de v registres DP de la taille du point P tels que DP[i]=[ï].P, avec 0 < i < v
Sortie : [k]-P Étape 1 : R = 0
Étape 2' : Générer une permutation aléatoire σ dans {0, ... ,v- 1 }
Étape 2 : pour i allant de 0 à v-1 faire :
Étape 2.2 : si k0(i) = 1 alors R = R [+] ϋΡ[σ(ί)] (ADD)
Étape 3 : Retourner R
Algorithme Α5' - Multiplication sécurisée par un scalaire "Doubles Stored & Add Onlv"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un ensemble R de trois registres de la taille du point P
v
un ensemble de registres DP de la taille du point P tels que
DP[i]=[2zl]-P, avec
Sortie : fkJ-P
Étape 1 : R[l] = 0 ; R[2] = 0 ; R[3] = 0
Étape 2' : Générer une permutation aléatoire σ a éléments dans
{0,..., 1 }
Étape 2 : pour i allant -1, faire :
Etape 2.1 : u = k20(i) +
Figure imgf000025_0001
Étape 2.2 : si >= 1 alors R[u] = R[u] [+] DP[o(i)] (ADD)
Etape 3 : R[l] = R[l] [+] R[3] [+] [2] -(R[2] [+] R[3]) (ADD)
Étape 4 : Retourner R[l]
Algorithme A6' - Multiplication par un scalaire "Doubles stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2
Requiert : un ensemble R de 2m-l registres de la taille du point P (m>2)
v
un ensemble de registres DP de la taille du point P tels que
m
v
DP[i]=[2m i]-P, avec 0 < i <
m
Sortie : [k]-P
Etape 1 : pour j allant de 1 à 2m-l, faire R[j] = 0
v
Étape 2' : Générer une permutation aléatoire σ à éléments dans
m
Figure imgf000026_0001
v
Étape 2 : pour i allant de 0 à 1, faire :
m
m-1
Étape 2.1 : u =∑2jkmcj (i)+j
i=0 (avec ki = 0 si i > v-1)
Étape 2.2 : si u> 1 alors R[u] = R[u] [+] DP[o(i)] (ADD)
2m-1
Etape 3 : R[l] Σ [j] - R (ADD)
Etape 4 : Retourner R[l]
ANNEXE III (Faisant partie intégrante de la description)
Algorithme A4" - Multiplication par un scalaire "Doubles Stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2, codé en NAF Requiert : un registre R de la taille du point P
un ensemble de v registres DP de la taille du point P tels que DP[i]=[ï]-P, avec 0 < i < v
Sortie : [k]-P Étape 1 : R = 0
Étape 2 : pour i allant de 0 à v-1 faire :
Étape 2.2 : si k; = 1 alors R = R [+] DP[i] (ADD)
Étape 2.3 : si k; = -1 alors R = R [-] DP[i] (ADD)
Étape 3 : Retourner R
Algorithme A5" - Multiplication par un scalaire "Doubles Stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2, codé en NAF Requiert : un ensemble R de trois registres de la taille du point P
v
un ensemble de registres DP de la taille du point P tels que
DP[i]=[2zl]-P, avec
Sortie : fkJ-P
Étape 1 : R[l] = 0 ; R[2] = 0 ; R[3] = 0
v
Etape 2 : pour i allant de 0 à — -1, faire :
Étape 2.1 : u = k2i + 2k2i+i
Étape 2.2 : si u> 1 alors R[u] = R[u] [+] DP[i] (ADD)
Étape 2.3 : si u< -1 alors R[u] = R[-u] [-] DP[i] (ADD)
Etape 3 : R[l] = R[l] [+] R[3] [+] [2] -(R[2] [+] R[3]) (ADD)
Étape 4 : Retourner R[l]
Algorithme A6" - Multiplication par un scalaire "Doubles stored & Add Only"
Entrée : un point P appartenant à la courbe elliptique E sur le corps de Galois Fq un scalaire k entier de v bits tel que k = (kv.i kv.2.... ko) 2, codé en NAFRequiert : un ensemble R de 2m-l registres de la taille du point P (m>2)
v
un ensemble de \— | registres DP de la taille du point P tels que v
DP[i]=[2m i]-P, avec 0 < i <
m
Sortie : fkJ-P
Etape 1 : pour j allant de 1 à 2m-l, faire R[j] = 0
v
Étape 2 : pour i allant de 0 à 1, faire :
m
m-1
Étape 2.1 : u =∑2j k m-i+j
i=0 (avec ki = 0 si i > v-1)
Étape 2.2 : si u> 1 alors R[u] = R[u] [+] DP[i] (ADD)
Etape 2.3 : si u < alors R[u] = R[-u] [-] DP[i] (ADD)
2m-1
Etape 3 : R[l] =| R (ADD)
Etape 4 : Retourner R[l]

Claims

REVENDICATIONS
1. Procédé de traitement cryptographique de données, mis en œuvre dans un dispositif électronique (DV1) comprenant un processeur (PROC), le procédé comprenant des étapes de fourniture d'un point d'une courbe elliptique dans un corps de Galois, et d'un premier nombre entier, et de calcul d'une multiplication scalaire du point par le premier nombre, les coordonnées du point et le premier nombre ayant une taille supérieure à la taille de mots susceptibles d'être traités directement par le processeur,
caractérisé en ce que le calcul de multiplication scalaire du point par le premier nombre, comprend des étapes consistant à :
mémoriser une série de points multiples résultant chacun du produit scalaire du point par 2 élevé à une puissance appartenant à une série de nombres entiers, initialiser un point résultant appartenant à la courbe elliptique,
exécuter plusieurs itérations pour prendre en compte une seule fois chacun des bits du premier nombre, chaque itération comprenant un calcul d'une combinaison de plusieurs bits du premier nombre, et lorsque la combinaison est non nulle, un calcul d'addition entre le point résultant et l'un des points multiples mémorisés correspondant aux rangs des bits de la combinaison de bits du premier nombre, et
fournir en sortie du processeur le point résultant en tant que résultat du calcul de multiplication scalaire du point par le premier nombre.
2. Procédé selon la revendication 1, dans lequel les bits du premier nombre sont pris en compte dans un ordre aléatoire ou pseudo-aléatoire lors du calcul du point résultant.
3. Procédé selon l'une des revendications 1 à 2, dans lequel les calculs d'addition entre le point résultant et les multiples mémorisés sont effectués en coordonnées affines.
4. Procédé selon l'une des revendications 1 à 2, dans lequel les calculs d'addition entre le point résultant et les résultats mémorisés sont effectués en coordonnées projectives.
5. Procédé selon la revendication 4, dans lequel les multiples scalaires du point sont mémorisés en coordonnées affines, et les résultats obtenus étant transformés en coordonnées projectives par ajout aux coordonnées affines, d'une troisième coordonnée ayant une valeur fixée à un.
6. Procédé selon l'une des revendications 1 à 5, dans lequel le premier nombre et les coordonnées du point sont codés en NAF, le procédé comprenant pour chaque bit égal à -1 ou combinaison de bits inférieure ou égale à -1, du premier nombre, un calcul d'addition entre le point résultant et l'opposé du multiple mémorisé correspondant au rang du bit égal à -1 ou de la combinaison de bits inférieure ou égale à -1, du premier nombre.
7. Procédé selon l'une des revendications 1 à 6, comprenant une étage de génération d'une paire de clés privée et publique, comportant des étapes consistant à :
choisir aléatoirement un second nombre en tant que clé privée,
choisir en tant que point de base un point d'une courbe elliptique, les multiples mémorisés ayant été calculés à partir du point de base, et
calculer le point résultant de la multiplication scalaire du point de base par le second nombre en utilisant les points multiples mémorisés, le point résultant ou l'une de ses coordonnées, étant choisi en tant que clé publique correspondant à la clé privée.
8. Procédé selon l'une des revendications 1 à 7, comprenant une étage de signature d'un message, comportant des étapes consistant à :
choisir aléatoirement un second nombre,
choisir en tant que point de base un point d'une courbe elliptique, les multiples mémorisés ayant été calculés à partir du point de base, et
calculer le point résultant, issu de la multiplication scalaire du point de base par le second nombre en utilisant les multiples mémorisés,
appliquer une fonction de hachage au message à signer, et
calculer la signature du message par les équations suivantes :
x = i mod n
y = k_1(H(m)+sx) mod n, dans lesquelles x et y représentent la signature du message m, i étant une coordonnée du point résultant, k étant le second nombre, H(m) la fonction de hachage appliquée au message m, s un nombre utilisé comme clé privée, et n étant le plus petit entier positif tel que le produit scalaire de n par le point de base est égal au point à l'infini de la courbe elliptique.
9. Dispositif électronique (DV1) comprenant un processeur (PROC), configuré pour mettre en œuvre le procédé selon l'une des revendications 1 à 8.
10. Dispositif selon la revendication 9, caractérisé en ce qu'il est portable et autonome, ou de type carte à puce.
PCT/FR2014/050054 2013-01-18 2014-01-13 Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation WO2014111647A1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP14703138.9A EP2946284B1 (fr) 2013-01-18 2014-01-13 Procédé de cryptographie comprenant une opération de multiplication par un scalaire ou une exponentiation
US14/762,010 US9772821B2 (en) 2013-01-18 2014-01-13 Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
KR1020157021332A KR102136911B1 (ko) 2013-01-18 2014-01-13 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
CN201480005200.4A CN104937537B (zh) 2013-01-18 2014-01-13 包括与标量或求幂的乘法运算的密码学方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1350431A FR3001315B1 (fr) 2013-01-18 2013-01-18 Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation
FR1350431 2013-01-18

Publications (1)

Publication Number Publication Date
WO2014111647A1 true WO2014111647A1 (fr) 2014-07-24

Family

ID=48771551

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2014/050054 WO2014111647A1 (fr) 2013-01-18 2014-01-13 Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation

Country Status (6)

Country Link
US (1) US9772821B2 (fr)
EP (1) EP2946284B1 (fr)
KR (1) KR102136911B1 (fr)
CN (1) CN104937537B (fr)
FR (1) FR3001315B1 (fr)
WO (1) WO2014111647A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10664240B2 (en) 2016-10-07 2020-05-26 Idemia Identify & Security France Cryptographic processing method comprising multiplication of a point of an elliptic curve by a scalar

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
US9635003B1 (en) * 2015-04-21 2017-04-25 The United States Of America As Represented By The Director, National Security Agency Method of validating a private-public key pair
US10372886B2 (en) * 2015-05-05 2019-08-06 Nxp B.V. Protecting the input/output of modular encoded white-box RSA/ECC
US10129026B2 (en) * 2016-05-03 2018-11-13 Certicom Corp. Method and system for cheon resistant static diffie-hellman security
FR3055444B1 (fr) * 2016-08-23 2022-02-04 Maxim Integrated Products Dispositif et procedes de commande de dispositif de cryptage sur courbe elliptique securises
US10673631B2 (en) * 2016-11-07 2020-06-02 Infosec Global Inc. Elliptic curve isogeny-based cryptographic scheme
KR101817879B1 (ko) * 2016-11-18 2018-01-11 부산대학교 산학협력단 고속의 naf 변환 장치 및 고속의 naf 변환 방법
CN108075889B (zh) * 2016-11-18 2021-07-16 腾讯科技(深圳)有限公司 一种降低加解密运算时间复杂度的数据传输方法及系统
CN108242994B (zh) * 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
KR20180089004A (ko) 2017-01-31 2018-08-08 권형석 NFC Tag 식별정보를 통한 다중서비스 제공 시스템 및 이용 방법
EP3579493A1 (fr) * 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
US11251973B1 (en) * 2018-06-11 2022-02-15 Synopsys, Inc. Efficient calculation of ED25519/448 signature verification in an encryption device
IT201900025567A1 (it) 2019-12-24 2021-06-24 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000000886A1 (it) * 2020-01-17 2021-07-17 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000006475A1 (it) 2020-03-27 2021-09-27 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
JP2022045614A (ja) * 2020-09-09 2022-03-22 キオクシア株式会社 演算装置
CN113114462B (zh) * 2021-03-31 2022-10-04 南京航空航天大学 一种应用于ecc安全硬件电路的小面积标量乘电路
GB2615081A (en) * 2022-01-26 2023-08-02 Nchain Licensing Ag Elliptic curve arithmetic in script
GB202200993D0 (en) * 2022-01-26 2022-03-09 Nchain Licensing Ag Elliptic curve arithmetic in script

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090214023A1 (en) * 2008-02-26 2009-08-27 Al-Somani Turki F Method for elliptic curve scalar multiplication

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0804758B1 (fr) * 1994-07-29 2005-11-09 Certicom Corp. Systemes de chiffrement a courbe elliptique
US6088798A (en) * 1996-09-27 2000-07-11 Kabushiki Kaisha Toshiba Digital signature method using an elliptic curve, a digital signature system, and a program storage medium having the digital signature method stored therein
KR100423810B1 (ko) * 2001-12-12 2004-03-22 한국전자통신연구원 타원곡선 암호화 장치
KR100699836B1 (ko) * 2005-03-19 2007-03-27 삼성전자주식회사 스칼라 곱에서 dfa 대책을 위한 장치 및 방법
CN102109974A (zh) * 2009-12-24 2011-06-29 上海华虹集成电路有限责任公司 适用于椭圆曲线密码安全保护的随机点生成方法
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090214023A1 (en) * 2008-02-26 2009-08-27 Al-Somani Turki F Method for elliptic curve scalar multiplication

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DARREL HANKERSON ET AL: "Elliptic curve arithmetic", GUIDE TO ELLIPTIC CURVE CRYPTOGRAPHY, SPRINGER VERLAG, BERLIN, DE, 1 January 2004 (2004-01-01), pages 75 - 113, XP002395321 *
JEAN-SÉBASTIEN CORON: "A New DPA Countermeasure Based on Permutation Tables", SCN, 2008, pages 278 - 292, XP019104377
MICHAEL TUNSTALL ED - COLIN BOYD ET AL: "Random Order m-ary Exponentiation", 1 July 2009, INFORMATION SECURITY AND PRIVACY, SPRINGER BERLIN HEIDELBERG, BERLIN, HEIDELBERG, PAGE(S) 437 - 451, ISBN: 978-3-642-02619-5, XP019120428 *
TRICHINA E ET AL: "IMPLEMENTATION OF ELLIPTIC CURVE CRYPTOGRAPHY WITH BUILT-IN COUNTER MEASURES AGAINST SIDE CHANNEL ATTACKS", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. INTERNATIONALWORKSHOP, XX, XX, 13 August 2002 (2002-08-13), pages 98 - 113, XP001160524 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10664240B2 (en) 2016-10-07 2020-05-26 Idemia Identify & Security France Cryptographic processing method comprising multiplication of a point of an elliptic curve by a scalar

Also Published As

Publication number Publication date
EP2946284A1 (fr) 2015-11-25
US9772821B2 (en) 2017-09-26
US20150339102A1 (en) 2015-11-26
FR3001315B1 (fr) 2016-05-06
CN104937537B (zh) 2017-10-24
EP2946284B1 (fr) 2017-04-26
CN104937537A (zh) 2015-09-23
KR102136911B1 (ko) 2020-07-22
FR3001315A1 (fr) 2014-07-25
KR20150107784A (ko) 2015-09-23

Similar Documents

Publication Publication Date Title
EP2946284B1 (fr) Procédé de cryptographie comprenant une opération de multiplication par un scalaire ou une exponentiation
EP1166494B1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP3117555B1 (fr) Procédé de contremesure pour un composant électronique mettant en oeuvre un algorithme de cryptographie sur une courbe elliptique
EP3287891B1 (fr) Protection d&#39;un calcul modulaire
FR2977953A1 (fr) Protection d&#39;un calcul d&#39;exponentiation modulaire par addition d&#39;une quantite aleatoire
WO2007074149A1 (fr) Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
FR3010210A1 (fr) Protection d&#39;un calcul contre des attaques par 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
FR2941798A1 (fr) Appareil pour calculer un resultat d&#39;une multiplication scalaire
EP1166495A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
FR2888690A1 (fr) Procede cryptographique pour la mise en oeuvre securisee d&#39;une exponentiation et composant associe
EP1291763A1 (fr) Procédé de brouillage d&#39;un calcul à quantité secrète
EP1804161A1 (fr) Détection de perturbation dans un calcul cryptographique
FR2966953A1 (fr) Procede de contremesure cryptographique par derivation d&#39;une donnee secrete
EP2983083A1 (fr) Procede de cryptographie sur courbe elliptique comprenant une detection d&#39;erreur
EP1804160B1 (fr) Protection d&#39;un calcul cryptographique effectué par un circuit intégré
WO2007104706A1 (fr) Procede de securisation d&#39;un calcul d&#39;une exponentiation ou d&#39;une multiplication par un scalaire dans un dispositif electronique
EP3457626A1 (fr) Méthode cryptographique sur courbes elliptiques binaires d&#39;edwards
EP2936302A1 (fr) Generateur de sequences chaotiques
FR2856538A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme cryptographique du type a cle publique
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
FR3010562A1 (fr) Procede de traitement de donnees et dispositif associe
WO2002050658A1 (fr) Procedes de contre-mesure dans un composant electronique mettant en ouvre un algorithme de cryptographie a cle publique de type rsa
EP3716044A1 (fr) Protection d&#39;un calcul itératif
FR2797126A1 (fr) Procede d&#39;amelioration de performance de l&#39;operation de multiplication sur corps fini de caracteristique 2

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14703138

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2014703138

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014703138

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 14762010

Country of ref document: US

ENP Entry into the national phase

Ref document number: 20157021332

Country of ref document: KR

Kind code of ref document: A