EP4525353A1 - Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d' ordinateur associés - Google Patents
Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d' ordinateur associés Download PDFInfo
- Publication number
- EP4525353A1 EP4525353A1 EP24190159.4A EP24190159A EP4525353A1 EP 4525353 A1 EP4525353 A1 EP 4525353A1 EP 24190159 A EP24190159 A EP 24190159A EP 4525353 A1 EP4525353 A1 EP 4525353A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- polynomial
- index
- ranging
- intermediate result
- multiplication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
Definitions
- the invention relates to the field of computer cryptography. It relates more particularly to a method for secure multiplication between a sparse polynomial and a dense polynomial in a cryptographic algorithm.
- the invention also relates to an associated electronic device and computer program.
- a cryptographic algorithm can be used to encrypt, decrypt, sign or verify the signature of data.
- a cryptographic algorithm is, for example, an asymmetric key cryptographic algorithm implemented by an electronic device, typically an RSA algorithm or an elliptic curve algorithm implemented by the chip of a smart card.
- NIST National Institute of Standards and Technology
- the invention proposes a computer program comprising instructions executable by a processor and adapted to implement a secure multiplication method as defined previously, when these instructions are executed by the processor.
- the present invention may take the form of an all-hardware embodiment, an all-software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be collectively referred to herein as a "module.”
- This electronic device can be configured to implement each of the embodiment possibilities envisaged for the secure multiplication method as defined above.
- the different characteristics, variants and embodiments of the invention can be associated with each other in various combinations to the extent that they are not incompatible or mutually exclusive.
- FIG. 1 schematically represents an electronic device 2 comprising a processor 4 (for example a microprocessor), a storage block 6, a RAM 8 and a communication block 10.
- a processor 4 for example a microprocessor
- storage block 6 for example a hard disk drive
- RAM 8 for example a hard disk drive
- the RAM 8 and the storage block 6 are each linked to the processor 4 so that the processor 4 can read or write data to the storage block 6 and/or the RAM 8.
- the storage block 6 stores computer program instructions, some of which are designed to implement a secure multiplication method as described with reference to the Figure 2 or to the Figure 3 , when these instructions are executed by processor 4.
- the storage block 6 is, for example, a hard disk or non-volatile memory, possibly rewritable, for example of the EEPROM type (for "Electrically Erasable and Programmable Read-Only Memory” according to the commonly used English term).
- EEPROM Electrically Erasable and Programmable Read-Only Memory
- the RAM 8 can store at least some of the elements (in particular intermediate result polynomials and/or other intermediate polynomials as described with reference to the Figure 2 or to the Figure 3 ) handled during the various treatments carried out during one of the processes described below.
- any one of the storage block 6 and the RAM 8 is called memory.
- the electronic device 2 also comprises several modules (not shown). Typically, the electronic device 2 comprises for any k ranging from 0 to d, with d being a non-zero natural integer, an initialization module of an intermediate result polynomial of index k, an initialization module of w + 1 other intermediate polynomials, with w a non-zero natural integer strictly less than n and n a non-zero natural integer, a polynomial multiplication module and a module for updating the intermediate result polynomial of index k.
- the electronic device 2 may further comprise a renewal module and/or a module for calculating a final result polynomial.
- each module has a functionality described in the method according to the invention and described below with reference to the Figure 2 or to the Figure 3 .
- the electronic device 2 stores, for example, software instructions executable by the processor 4 of the electronic device 2 in order to use a hardware element (for example a communication interface or a memory) and thus implement the functionality offered by the module.
- a hardware element for example a communication interface or a memory
- the computer program instructions stored in the storage block 6 have for example been received (typically from a remote computer) during an operating phase of the electronic device 2 prior to the method described with reference to the Figure 2 or to the Figure 3 .
- the communication block 10 is connected to the processor 4 so as to allow the processor 4 to receive data from another electronic device (not shown) and/or to transmit data to another electronic device (not shown).
- the processor 4 can thus receive data m from the other electronic device and/or transmit other data, for example computer program instructions.
- the electronic device 2 can take many forms (not shown).
- the electronic device is a smart card, such as an identity card, a bank card or a universal integrated circuit card (also known as a UICC card for “Universal Integrated Circuit Card” in English terminology).
- a smart card such as an identity card, a bank card or a universal integrated circuit card (also known as a UICC card for “Universal Integrated Circuit Card” in English terminology).
- the electronic device is a secure element, such as a secure microcontroller that is integrated into another electronic device, typically a communications terminal or a car.
- the electronic device is a USB key, or an identity document, such as an electronic passport.
- FIG. 2 illustrates in the form of a flowchart the main steps of a secure multiplication method according to the invention.
- the process of the Figure 2 aims to implement a secure multiplication between a sparse polynomial f and a dense polynomial g in a quotient ring formed by dividing a ring of polynomials with an indeterminate X and coefficients in a finite field K, by the ideal generated by a polynomial X n - c where n and c are non-zero natural integers.
- K represents a finite field, that is, a set equipped with four operations: addition, subtraction, multiplication, and division.
- a common example of finite fields is the integers modulo a prime number.
- the ring of polynomials with an indeterminate X and coefficients in a finite field K is designated K[X]. It consists of all polynomials with coefficients belonging to the finite field K.
- the elements, that is, the polynomials, of K[X] are expressions of the form a 0 + a 1 X ... + a m -1 X m -1 + a m X m , where m is a non-zero natural integer and for any integer i between 0 and m , a i belongs to the finite field K.
- the ideal generated by the polynomial X n - c in the ring of polynomials K [ X ] is denoted ⁇ X n - c ⁇ .
- the ideal ⁇ X n - c ⁇ is the set of all polynomials in K[X] that can be obtained by multiplying X n - c by any polynomial in K[X].
- K [ X ]/ ⁇ X n - c ⁇ represents the quotient ring obtained by dividing the polynomial ring K [ X ] by the ideal ⁇ X n - c ⁇ .
- the quotient ring K [ X ]/ ⁇ X n - c ⁇ is the set of all equivalence classes of polynomials in K [ X ] , where two polynomials are considered equivalent if their difference lies in the ideal ⁇ X n - c ⁇ .
- the quotient ring K [ X ]/ ⁇ X n - c ⁇ therefore represents the ring of polynomials modulo the polynomial Xn - c.
- a sparse polynomial is a polynomial containing very few non-zero monomials.
- a sparse polynomial has 66 non-zero monomials when n is 17669, 100 non-zero monomials when n is 35851, or 131 non-zero monomials when n is 57637.
- the non-zero coefficients of the sparse polynomial f are public, which is the case when the cryptographic algorithm is one of the Hamming Quasi-Cyclic algorithm, the Bit Flipping Key Encapsulation algorithm, and the Number Theory Research Unit algorithm, for each non-zero coefficient of the sparse polynomial f, at most one multiplicative part of the non-zero coefficient concerned has a value other than 1.
- the non-zero coefficients of the sparse polynomial f are not public so as not to obtain information on the non-uniformity of the additive maskings. In this case, it is necessary to mask each non-zero coefficient of the sparse polynomial, and thus for each non-zero coefficient of the sparse polynomial, at least a multiplicative part of the non-zero coefficient concerned is generated randomly or pseudo-randomly.
- a first index initialization step step E2
- the processor 4 initializes an integer k to the value 0.
- the reference polynomial r is a polynomial of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- the initialization of the intermediate result polynomial is thus simplified. The process thus makes it possible to further limit the calculation times.
- step E6 If the answer is yes at the first test step (step E6), the method continues with a second index initialization step (step E10), during which the processor 4 resets the integer k to the value 0.
- Each other intermediate polynomial is a polynomial of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- the initialization step of w + 1 other intermediate polynomials is typically implemented by the initialization module of w + 1 other intermediate polynomials of the electronic device 2.
- Processor 4 determines, in a second test step (step E14), whether the integer k has reached the value d.
- step E16 the integer k is incremented by 1 in a second incrementation step (step E16) and the method loops to the initialization step of w + 1 other intermediate polynomials (step E12) to perform a next round.
- step E12 the step of initializing w + 1 other intermediate polynomials (step E12) is thus executed for all k ranging from 0 to d.
- the process thus initializes ( d + 1) ⁇ ( w + 1) other intermediate polynomials u (0,0) , ..., u (0, w ) , u (1,0) , ... , u (1, w ) , ..., u ( d , 0 ) , ... , u ( d,w ) .
- step E14 If yes at the second test step (step E14), the method continues with a third index initialization step (step E18), during which the processor 4 resets an integer j to the value 1.
- the method then comprises a fourth index initialization step (step E20), during which the processor 4 resets the integer k to the value 0.
- step E12 the result of the sum of the d +1 other intermediate polynomials u (0, i ) , ... , u ( d , i ) at the end of the d +1 initialization steps of w + 1 other intermediate polynomials (steps E12), is therefore identical to the result of the sum of the d +1 other intermediate polynomials u (0, i ) ... u ( d , i ) at the end of the renewal step (step E28).
- several coefficients among the coefficients of the d +1 other intermediate polynomials u (0, i ) ... u ( d , i ) have been changed by the renewal step (step E28).
- the polynomial multiplication step is typically implemented by the polynomial multiplication module of the electronic device 2.
- Processor 4 determines, in a fourth test step (step E24), whether the integer k has reached the value d.
- step E26 the integer k is incremented by 1 in a fourth incrementation step (step E26) and the method loops to the polynomial multiplication step (step E22) to perform a next round.
- the polynomial multiplication step (step E22) of index j i.e. having the integer j as index, is thus executed for all k ranging from 0 to d.
- step E24 determines, at a third test step (step E30), whether the integer j has reached the value q.
- step E32 the integer j is incremented by 1 in a third incrementation step (step E32) and the method loops to the fourth index initialization step (step E20) to perform a next round.
- the result of the sum of the d + 1 other intermediate polynomials u (0, i ) , ..., u ( d , i ) at the end of the d + 1 executions of the polynomial multiplication step (step E22) of index j is therefore identical to the result of the sum of the d + 1 other intermediate polynomials u (0, i ) ... u ( d , i ) at the end of the renewal step (step E28) which follows said d + 1 executions of the polynomial multiplication step (step E22) of index j.
- several coefficients among the coefficients of the d + 1 other intermediate polynomials u (0, i ) ... u ( d , i ) have been changed by the renewal step (step E28).
- step E30 If yes at the third test step (step E30), the method continues with a fifth index initialization step (step E32), during which the processor 4 resets the integer k to the value 0.
- the method then comprises a step of updating the intermediate result polynomial (step E34) of index k during which the processor 4 updates the intermediate result polynomial of index k by adding to said intermediate result polynomial of index k, the w + 1 other intermediate polynomials having respective double indices ranging from k, 0 to k, w.
- the step of updating the intermediate result polynomial of index k is typically implemented by the module for updating the intermediate result polynomial of index k of the electronic device 2.
- Processor 4 determines, in a fifth test step (step E36), whether the integer k has reached the value d.
- step E38 the integer k is incremented by 1 in a fifth incrementation step (step E38) and the method loops to the step of updating the intermediate result polynomial (step E34).
- step E34 the integer k is incremented by 1 in a fifth incrementation step.
- step E36 If yes at the fifth test step (step E36), the method continues with a step (step E40) of calculating a final result polynomial t .
- the final result polynomial t has the value f ⁇ g.
- the final result polynomial t is a polynomial of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- the step of calculating a final result polynomial t is typically implemented by the module for calculating a final result polynomial of the electronic device 2.
- the method uses an additive masking of the ranks s i of the sparse polynomial f. This masking is made possible by the use of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- the method only implements ( d + 1) ⁇ ( q + 1) ⁇ ( w + 1) ⁇ n multiplications in the finite field K.
- the process is thus secure and makes it possible to limit calculation times and the memory space consumed.
- the step of calculating a final result polynomial t may be omitted, for example when the result of multiplying the sparse polynomial f by the polynomial dense g must be used in at least one other calculation. Indeed, in this case it may be advantageous to use the d + 1 intermediate result polynomials to perform the other calculation.
- the d + 1 intermediate result polynomials constitute additive parts of the result of multiplying the sparse polynomial f by the dense polynomial g , that is, a hidden form of said result of multiplying the sparse polynomial f by the dense polynomial g .
- the use of the result of the secure multiplication method between the sparse polynomial f and the dense polynomial g is thus secure.
- step E40 When the step (step E40) of calculating a final result polynomial t is omitted, in the affirmative at the fifth test step (step E36), the method ends.
- the renewal step (step E28) can be omitted.
- step E28 makes it possible to strengthen the security of the process when d has a value strictly greater than 1.
- the process is secure against an attacker who could observe up to d intermediate values.
- an iteration (not shown) of the renewal step (step E28) can be implemented after the last iteration of the polynomial multiplication step (i.e. after the last iteration of the polynomial multiplication step of index q in the method described above).
- the security of the method is thus reinforced, in particular if the d + 1 intermediate result polynomials are used to perform the other calculation.
- d has the value 1 when it is considered that an attacker can only observe one intermediate value. In this case, the attacker cannot combine a plurality of intermediate values. The absence of a renewal step therefore does not degrade the security of the process.
- a first loop consists of the initialization step of an intermediate result polynomial (step E4), the first test step (step E6) and the first increment step (step E8).
- a second loop consists of the initialization step of w + 1 other intermediate polynomials (step E12), the second test step (step E14) and the second incrementation step (step E16).
- a third loop consists of the fourth index initialization step (step E20), a fourth loop, the renewal step (step E28), the third test step (step E30) and the third incrementation step (step E32).
- the fourth loop consists of the polynomial multiplication step (step E22), the fourth test step (step E24) and the fourth increment step (step E26).
- a fifth loop consists of the intermediate result polynomial update step (step E34), the fifth test step (step E36) and the fifth incrementation step (step E38).
- the same integer k is used as the turn index for the first loop, the second loop, the fourth loop, and the fifth loop. Those skilled in the art will understand that they can use a different integer as the turn index for each of these loops.
- the secure multiplication method described with reference to the Figure 2 executes the turns of the loop concerned with an index that increments at each turn of said loop.
- the index of a loop can be managed differently as long as all the values of the index are traversed while executing the turns of said loop.
- the method can be adapted to make the d + 1 iterations of the step of initializing an intermediate result polynomial (step E4) in a different order, each iteration using a different value of the integer k, between 0 and d.
- a person skilled in the art can initialize the integer k with the value of d in the first index initialization step (step E2), replace the first increment step (step E8) with a decrement step that decrements k by 1, and determine at the first test step (step E6), whether the integer k has reached the value 0.
- the process can be adapted in a similar way for each of the other loops.
- the process of the Figure 3 aims to implement a secure multiplication between a sparse polynomial f and a dense polynomial g in a quotient ring formed by dividing a ring of polynomials with an indeterminate X and coefficients in a finite field K, by the ideal generated by a polynomial X n - c where n and c are non-zero natural integers.
- the method is implemented in a cryptographic algorithm by an electronic device, typically the electronic device 2 described with reference to the Figure 1 .
- the cryptographic algorithm may be an algorithm of a post-quantum public key encryption scheme, for example one of the Hamming Quasi-Cyclic algorithm, the Bit Flipping Key Encapsulation algorithm, and the Number Theory Research Unit algorithm.
- the method thus allows the implementation of these algorithms in a device with limited memory and computing resources, typically in a secure element.
- This method is implemented here by the electronic device 2 due to the execution of the computer program instructions stored in the storage block 6 as indicated above.
- c has the value 1 and for each non-zero coefficient of the sparse polynomial f, at most one multiplicative part of the non-zero coefficient concerned has a value other than 1, or c is a natural integer strictly greater than 1 and for each non-zero coefficient of the sparse polynomial f, at least one multiplicative part of the non-zero coefficient concerned is generated randomly or pseudo-randomly.
- the non-zero coefficients of the sparse polynomial f are public, which is the case when the cryptographic algorithm is one of the Hamming Quasi-Cyclic algorithm, the Bit Flipping Key Encapsulation algorithm, and the Number Theory Research Unit algorithm, for each non-zero coefficient of the sparse polynomial f, at most one multiplicative part of the non-zero coefficient concerned has a value other than 1
- the process thus makes it possible to further limit calculation times.
- the non-zero coefficients of the sparse polynomial f are not public so as not to obtain information on the non-uniformity of the additive maskings. In this case, it is necessary to mask each non-zero coefficient of the sparse polynomial, and thus for each non-zero coefficient of the sparse polynomial, at least a multiplicative part of the non-zero coefficient concerned is generated randomly or pseudo-randomly.
- a first index initialization step step E2
- the processor 4 initializes an integer k to the value 0.
- the method then comprises a step of initializing an intermediate result polynomial (step E4) identical to that described with reference to the Figure 2 .
- the method then comprises a step of initializing w + 1 other intermediate polynomials (step E12) identical to that described with reference to the Figure 2 , during which processor 4 initializes w + 1 other intermediate polynomials having respective double indices ranging from k, 0 to k, w
- the method then comprises a third index initialization step (step E18) identical to that described with reference to the Figure 2 .
- the method then comprises a polynomial multiplication step (step E22) of index j identical to that described with reference to the Figure 2 .
- Processor 4 determines, in a third test step (step E30), whether the integer j has reached the value q.
- step E50 the integer j is incremented by 1 in a first other incrementation step (step E50) and the method loops to the polynomial multiplication step (step E22) to perform a next round.
- step E30 the method continues with a step of updating the intermediate result polynomial (step E34) of index k during which the processor 4 updates the intermediate result polynomial of index k by adding to said intermediate result polynomial of index k, the w + 1 other intermediate polynomials having respective double indices ranging from k, 0 to k, w.
- the step of updating the intermediate result polynomial of index k is typically implemented by the module for updating the intermediate result polynomial of index k of the electronic device 2.
- Processor 4 determines, in a fifth test step (step E36), whether the integer k has reached the value d.
- step E52 the integer k is incremented by 1 in a second further incrementation step (step E52) and the method loops to the initialization step of an intermediate result polynomial (step E4) to perform a next round.
- step E4 the step of initializing an intermediate result polynomial (step E4) is thus executed for all k ranging from 0 to d.
- the process therefore initializes d + 1 intermediate result polynomials t (0) , ..., t ( d ) .
- Each result polynomial is a polynomial of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- step E12 the step of initializing w + 1 other intermediate polynomials (step E12) is also executed for all k ranging from 0 to d.
- the process thus initializes ( d + 1) ⁇ ( w + 1) other intermediate polynomials u (0,0) , ... , u (0, w ) , u (1,0) , ... , u (1, w ) , ... , u ( d, 0 ), ... , u ( d,w ) .
- Each other intermediate polynomial is a polynomial of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- each polynomial multiplication step (step E22) of index j, j ranging from 1 to q, is executed for all k ranging from 0 to d.
- step E36 If yes at the fifth test step (step E36), the method continues with a step (step E40) of calculating a final result polynomial t identical to that described with reference to the Figure 2 .
- the method uses an additive masking of the ranks s i of the sparse polynomial f. This masking is made possible by the use of the quotient ring K [ X ]/ ⁇ X n - c ⁇ .
- the process is thus secure and makes it possible to limit calculation times and the memory space consumed.
- the step of calculating a final result polynomial t may be omitted, for example when the result of the multiplication of the sparse polynomial f by the dense polynomial g must be used in at least one other calculation. Indeed, in this case it may be advantageous to use the d + 1 intermediate result polynomials to perform the other calculation.
- the d + 1 intermediate result polynomials constitute additive parts of the result of the multiplication of the sparse polynomial f by the dense polynomial g , that is to say a masked form of said result of the multiplication of the sparse polynomial f by the dense polynomial g .
- the use of the result of the secure multiplication method between the sparse polynomial f and the dense polynomial g is thus secure.
- the step (step E40) of calculating a final result polynomial t can be omitted, t(d) having the value f ⁇ g.
- step E40 When the step (step E40) of calculating a final result polynomial t is omitted, in the affirmative at the fifth test step (step E36), the method ends.
- a first loop consists of the step of initializing an intermediate result polynomial (step E4), the step of initializing w + 1 other intermediate polynomials (step E12), the third step of index initialization (step E18), a second loop, the step of updating the intermediate result polynomial (step E34), the fifth test step (step E36) and the second other incrementation step (step E52).
- the second loop consists of the polynomial multiplication step (step E22), the third test step (step E30) and the first other incrementation step (step E50).
- the secure multiplication process described with reference to the Figure 3 executes the turns of the loop concerned with an index which increments at each turn of said loop.
- the index of a loop can be managed differently as long as all the values of the index are traversed while executing the turns of said loop.
- the method may be adapted to perform the q iterations of the polynomial multiplication step (step E22) in a different order, each iteration using a different value of the integer j, between 1 and q.
- the person skilled in the art may initialize the integer j with the value of q in the third index initialization step (step E18), replace the first further increment step (step E50) with another decrement step that decrements j by 1, and determine in the third test step (step E30) whether the integer j has reached the value 1.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
Procédé de multiplication sécurisée dans K[X]/ 〈X<sup>n</sup> - c〉 entre un polynôme creux f et un polynôme dense g de la forme ∑k=0dgk où g<sup>(k)</sup> est tel que gk=∑i=0n−1gik⋅Xi, - caractérisé en ce que f est de la forme ∑i=0wfsi⋅Xsi où s<sub>i</sub> est compris entre 0 et n - 1 tel que si=∑j=0qsijmodn, et f<sub>si</sub> est un coefficient tel que fsi⋅Xsi=∏j=0qfsij⋅Xsij, - et en ce qu'il comprend pour tout k allant de 0 à d:a. l'initialisation (E4) d'un polynôme résultat intermédiaire t<sup>(k)</sup>;b. l'initialisation (E12) de w + 1 autres polynômes intermédiaires u<sup>(k,0)</sup>, ... , u<sup>(k,w)</sup> tel que pour tout i allant de 0 à w,uki=gk⋅fsi0⋅Xsi0;c. q étapes (E22) de multiplication polynomiale effectuant pour tout i allant de 0 à w, uki=uki⋅fsij⋅Xsij, j ayant pour valeur l'indice de l'étape concernée ;d. la mise à jour (E34) de t<sup>(k)</sup> en lui ajoutant les w + 1 autres polynômes intermédiaires.
Description
- L'invention concerne le domaine de la cryptographie informatique. Elle concerne plus particulièrement un procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique. L'invention concerne également un dispositif électronique et un programme d'ordinateur associés.
- De façon connue, un algorithme cryptographique peut être utilisé pour chiffrer, déchiffrer, signer ou vérifier la signature d'une donnée. Un tel algorithme cryptographique est par exemple un algorithme cryptographique à clés asymétriques mis en oeuvre par un dispositif électronique, typiquement un algorithme RSA ou un algorithme à courbe elliptique mis en oeuvre par la puce d'une carte à puce.
- Cependant, l'émergence de calculateurs quantiques rend ces algorithmes cryptographiques non sûrs. Il est donc souhaitable d'utiliser des algorithmes cryptographiques adaptés pour garantir la sécurité face à un attaquant disposant d'un calculateur quantique.
- Ces algorithmes sont dénommés algorithmes cryptographiques post-quantiques.
- Certains algorithmes cryptographiques post-quantiques à base de polynômes ont été proposés au cours d'une compétition organisée par le NIST (« National Institute of Standards and Technology » ou Institut national des normes et de la technologie), notamment des algorithmes de schémas de chiffrement à clé publique.
- Il est nécessaire de protéger l'implémentation de ces algorithmes cryptographiques post-quantiques à base de polynômes contre les attaques par canaux cachés, aussi connues sous le nom d'attaques par canaux auxiliaires.
- Mais les solutions actuelles reposent sur des manipulations de polynômes qui sollicitent trop le dispositif électronique.
- Pour remédier à cet inconvénient, la présente invention propose selon un premier aspect, un procédé de multiplication sécurisée entre un polynôme creux f et un polynôme dense g dans un anneau quotient formé en divisant un anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K, par l'idéal engendré par un polynôme Xn - c où n et c sont des entiers naturels non nuls,
- le procédé étant mis en oeuvre dans un algorithme cryptographique par un dispositif électronique,
- le polynôme dense g étant de la forme
où d est un entier naturel non nul et pour tout k allant de 0 à d, g (k) est un polynôme intermédiaire de masquage d'indice k tel que avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme intermédiaire de masquage d'indice k, - le procédé étant caractérisé en ce que le polynôme creux f est de la forme
où pour tout i allant de 0 à w, si est entier compris entre 0 et n - 1 tel que , et fsi est un coefficient non nul de rang si tel que , avec w un entier naturel non nul strictement inférieur à n, q un entier naturel non nul, et pour tout j allant de 0 à q, une partie additive d'indice j du rang si et une partie multiplicative du coefficient fsi , - et en ce que le procédé comprend pour tout k allant de 0 à d:
- a. l'initialisation d'un polynôme résultat intermédiaire d'indice k t (k) tel que
avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme résultat intermédiaire d'indice k ; - b. l'initialisation de w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w tel que pour tout i allant de 0 à w,
, avec u (k,i) l'autre polynôme intermédiaire ayant pour double indice k, i; - c. la mise en oeuvre de q étapes de multiplication polynomiale ayant des indices respectifs allant de 1 à q, chaque étape de multiplication polynomiale effectuant un calcul défini comme suit : pour tout i allant de 0 à w,
, j ayant pour valeur l'indice de l'étape concernée ; - d. la mise à jour du polynôme résultat intermédiaire d'indice k en ajoutant audit polynôme résultat intermédiaire d'indice k, les w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w.
- a. l'initialisation d'un polynôme résultat intermédiaire d'indice k t (k) tel que
- D'autres caractéristiques avantageuses et non limitatives du procédé conforme à l'invention, prises individuellement ou selon toutes les combinaisons techniquement possibles, sont les suivantes :
- le procédé comprend en outre une étape de renouvellement entre deux étapes de multiplication polynomiale ayant des indices différents, chaque étape de renouvellement renouvelant les autres polynômes intermédiaires tel que pour tout i allant de 0 à w,
reste inchangé ; - c a pour valeur 1 et pour chaque coefficient non nul du polynôme creux, au plus une partie multiplicative du coefficient non nul concerné a une valeur différente de 1, ou c est un entier naturel strictement supérieur à 1 et pour chaque coefficient non nul du polynôme creux, au moins une partie multiplicative du coefficient non nul concerné est générée aléatoirement ou pseudo-aléatoirement ;
- l'algorithme cryptographique est un algorithme d'un schéma de chiffrement à clé publique post-quantique, par exemple un algorithme parmi l'algorithme Hamming Quasi-Cyclic, l'algorithme Bit Flipping Key Encapsulation, et l'algorithme Number Theory Research Unit ;
- pour tout k allant de 0 à d, l'initialisation du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k tel que, pour tout i allant de 0 à n - 1,
; - le procédé comprend après la mise en oeuvre des d + 1 étapes de mise à jour d'un polynôme résultat intermédiaire, une étape de calcul d'un polynôme résultat final t comme suit :
; - pour tout k allant de 0 à d, l'initialisation du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k, et le calcul d'un polynôme de référence r comme suit :
, avec pour tout k allant de 0 à d, t (k) le polynôme résultat intermédiaire d'indice k tel qu'initialisé pendant l'étape d'initialisation du polynôme résultat intermédiaire d'indice k, - le procédé comprend après la mise en oeuvre des d + 1 étapes de mise à jour d'un polynôme résultat intermédiaire, une étape de calcul d'un polynôme résultat final t comme suit :
r. - Selon un deuxième aspect, l'invention propose un programme d'ordinateur comprenant des instructions exécutables par un processeur et adaptées à mettre en oeuvre un procédé de multiplication sécurisée tel que défini précédemment, lorsque ces instructions sont exécutées par le processeur.
- Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.
- Au moins une partie des procédés selon l'invention peut être mise en oeuvre par ordinateur. En conséquence, la présente invention peut prendre la forme d'un mode de réalisation entièrement matériel, d'un mode de réalisation entièrement logiciel (comportant les microprogrammes, les logiciels résidents, les microcodes, etc.) ou d'un mode de réalisation combinant des aspects logiciels et matériels qui peuvent tous être globalement appelés ici "module".
- Selon un troisième aspect, l'invention propose un dispositif électronique de multiplication sécurisée entre un polynôme creux f et un polynôme dense g dans un anneau quotient formé en divisant un anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K, par l'idéal engendré par un polynôme Xn - c où n et c sont des entiers naturels non nuls,
- le polynôme dense g étant de la forme
où d est un entier naturel non nul et pour tout k allant de 0 à d, g (k) est un polynôme intermédiaire de masquage d'indice k tel que avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme intermédiaire de masquage d'indice k, - le dispositif électronique étant caractérisé en ce que le polynôme creux f est de la forme
où pour tout i allant de 0 à w, si est un entier compris entre 0 et n - 1 tel que si = , et fsi est un coefficient non nul de rang si tel que , avec w un entier naturel non nul strictement inférieur à n, q un entier naturel non nul, et pour tout j allant de 0 à q, une partie additives d'indice j du rang si et une partie multiplicative du coefficient fsi , - et en ce que le dispositif électronique comprend, pour tout k allant de 0 à d :
- a. un module d'initialisation d'un polynôme résultat intermédiaire d'indice k t (k) configuré pour initialiser le polynôme résultat intermédiaire d'indice k tel que
avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme résultat intermédiaire d'indice k ; - b. un module d'initialisation de w + 1 autres polynômes intermédiaires configuré pour initialiser w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w tel que pour tout i allant de 0 à
, avec u (k,i) l'autre polynôme intermédiaire ayant pour double indice k, i; - c. un module de multiplication polynomiale configuré pour mettre en oeuvre q étapes de multiplication polynomiale ayant des indices respectifs allant de 1 à q, chaque étape de multiplication polynomiale effectuant un calcul défini comme suit : pour tout i allant de 0 à w,
. , j ayant pour valeur l'indice de l'étape concernée ; - d. un module de mise à jour du polynôme résultat intermédiaire d'indice k configuré pour mettre à jour le polynôme résultat intermédiaire d'indice k en ajoutant audit polynôme résultat intermédiaire d'indice k, les w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w.
- a. un module d'initialisation d'un polynôme résultat intermédiaire d'indice k t (k) configuré pour initialiser le polynôme résultat intermédiaire d'indice k tel que
- Ce dispositif électronique peut être configuré pour la mise en oeuvre de chacune des possibilités de réalisation envisagées pour le procédé de multiplication sécurisée tel que défini précédemment. Bien entendu, les différentes caractéristiques, variantes et formes de réalisation de l'invention peuvent être associées les unes avec les autres selon diverses combinaisons dans la mesure où elles ne sont pas incompatibles ou exclusives les unes des autres.
- D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux figures annexées qui en illustrent des exemples de réalisation dépourvus de tout caractère limitatif.
- Sur les figures:
-
Figure 1 représente schématiquement un mode de réalisation préféré d'un dispositif électronique pour la mise en oeuvre d'un procédé selon l'invention ; -
Figure 2 illustre sous forme de logigramme les étapes principales d'un procédé de multiplication sécurisée selon l'invention ; -
Figure 3 illustre sous forme de logigramme les étapes principales d'un autre procédé de multiplication sécurisée selon l'invention. - Sauf indications contraires, les éléments communs ou analogues à plusieurs figures portent les mêmes signes de référence et présentent des caractéristiques identiques ou analogues, de sorte que ces éléments communs ne sont généralement pas à nouveau décrits par souci de simplicité.
- Dans le cadre de la présente description, des qualificatifs « premier », « deuxième », « troisième », « quatrième » et « cinquième » ne sont qu'à titre indicatif pour distinguer des éléments qu'ils qualifient, mais n'impliquent pas d'ordre entre eux.
- La
figure 1 représente schématiquement un dispositif électronique 2 comprenant un processeur 4 (par exemple un microprocesseur), un bloc de mémorisation 6, une mémoire vive 8 et un bloc de communication 10. - La mémoire vive 8 et le bloc de mémorisation 6 sont chacun liés au processeur 4 de sorte que le processeur 4 peut lire ou écrire des données dans le bloc de mémorisation 6 et/ou la mémoire vive 8.
- Le bloc de mémorisation 6 mémorise des instructions de programme d'ordinateur, dont certaines sont conçues pour mettre en oeuvre un procédé de multiplication sécurisée tel que décrit en référence à la
figure 2 ou à lafigure 3 , lorsque ces instructions sont exécutées par le processeur 4. - Le bloc de mémorisation 6 est par exemple un disque dur ou une mémoire non-volatile, éventuellement réinscriptible, par exemple de type EEPROM (pour "Electrically Erasable and Programmable Read-Only Memory" selon l'appellation anglo-saxonne couramment utilisée).
- La mémoire vive 8 peut quant à elle mémoriser certains au moins des éléments (notamment des polynômes résultat intermédiaire et/ou des autres polynômes intermédiaires tel que décrits en référence à la
figure 2 ou à lafigure 3 ) manipulés lors des différents traitements effectués au cours d'un des procédés décrits ci-après. - On appelle mémoire dans la suite de la description, l'un quelconque parmi le bloc de mémorisation 6 et la mémoire vive 8.
- Le dispositif électronique 2 comporte également plusieurs modules (non représentés). Typiquement, le dispositif électronique 2 comporte pour tout k allant de 0 à d, avec d est un entier naturel non nul, un module d'initialisation d'un polynôme résultat intermédiaire d'indice k, un module d'initialisation de w + 1 autres polynômes intermédiaires, avec w un entier naturel non nul strictement inférieur à n et n un entier naturel non nul, un module de multiplication polynomiale et un module de mise à jour du polynôme résultat intermédiaire d'indice k.
- Le dispositif électronique 2 peut comporter en outre un module de renouvellement et/ou un module de calcul d'un polynôme résultat final.
- Ces modules peuvent en pratique être réalisés par une combinaison d'éléments matériels et d'éléments logiciels.
- Chaque module possède une fonctionnalité décrite dans le procédé conforme à l'invention et décrit ci-après en référence à la
figure 2 ou à lafigure 3 . Ainsi, pour chaque module, le dispositif électronique 2 mémorise par exemple des instructions de logiciel exécutables par le processeur 4 du dispositif électronique 2 afin d'utiliser un élément matériel (par exemple une interface de communication ou une mémoire) et de mettre ainsi en oeuvre la fonctionnalité offerte par le module. - Selon une possibilité de réalisation, les instructions de programme d'ordinateur mémorisées dans le bloc de mémorisation 6 ont par exemple été reçues (typiquement d'un ordinateur distant) lors d'une phase de fonctionnement du dispositif électronique 2 antérieure au procédé décrit en référence à la
figure 2 ou à lafigure 3 . - Le bloc de communication 10 est relié au processeur 4 de manière à permettre au processeur 4 de recevoir des données en provenance d'un autre dispositif électronique (non représenté) et/ou d'émettre des données à destination d'un autre dispositif électronique (non représenté). Dans certains modes de réalisation, le processeur 4 peut ainsi recevoir une donnée m de l'autre dispositif électronique et /ou émettre d'autres données, par exemple les instructions de programme d'ordinateur.
- Le dispositif électronique 2 peut prendre de nombreuses formes (non représentées).
- Selon un premier exemple, le dispositif électronique est une carte à puce, telle qu'une carte d'identité, une carte bancaire ou une carte à circuit intégré universelle (également connue sous le nom de carte UICC pour « Universal Integrated Circuit Card » en terminologie anglo-saxonne).
- Selon un deuxième exemple, le dispositif électronique est un élément sécurisé, tel qu'un microcontrôleur sécurisé qui est intégré à un autre dispositif électronique, typiquement un terminal de communication ou une voiture.
- Selon d'autres exemples, le dispositif électronique est une clé usb, ou un document d'identité, tel qu'un passeport électronique.
- La
figure 2 illustre sous forme de logigramme les étapes principales d'un procédé de multiplication sécurisée selon l'invention. - Plus précisément, le procédé de la
figure 2 vise à mettre en oeuvre une multiplication sécurisée entre un polynôme creux f et un polynôme dense g dans un anneau quotient formé en divisant un anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K, par l'idéal engendré par un polynôme Xn - c où n et c sont des entiers naturels non nuls. - K représente un corps fini, c'est-à-dire un ensemble muni de quatre opérations : l'addition, la soustraction, la multiplication et la division. Un exemple courant de corps finis est les entiers modulo un nombre premier. L'anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K est désigné K[X]. Il se compose de tous les polynômes avec des coefficients appartenant au corps fini K. Les éléments, c'est-à-dire les polynômes, de K[X] sont des expressions de la forme a 0 + a 1 X ... + a m-1 X m-1 + amXm, où m est un entier naturel non nul et pour tout entier i compris entre 0 et m , ai appartient au corps fini K.
- L'idéal engendré par le polynôme Xn - c dans l'anneau de polynômes K[X] est désigné 〈Xn - c〉. L'idéal 〈Xn - c〉 est l'ensemble de tous les polynômes de K[X] qui peuvent être obtenus en multipliant Xn - c par n'importe quel polynôme de K[X].
- K[X]/〈Xn - c〉 représente l'anneau quotient obtenu en divisant l'anneau polynomial K[X] par l'idéal 〈Xn - c〉 . En d'autres termes, l'anneau quotient K[X]/〈Xn - c〉 est l'ensemble de toutes les classes d'équivalence de polynômes dans K[X], où deux polynômes sont considérés comme équivalents si leur différence se situe dans l'idéal 〈Xn - c〉.
- L'anneau quotient K[X]/〈Xn - c〉 représente donc l'anneau de polynômes modulo le polynôme Xn - c.
- Un polynôme creux est un polynôme contenant très peu de monômes non nuls. Par exemple, dans l'algorithme cryptographique HQC (pour Hamming Quasi-Cyclic), un polynôme creux a 66 monômes non nuls quand n vaut 17669, 100 monômes non nuls quand n vaut 35851, ou 131 monômes non nuls quand n vaut 57637.
- Un polynôme dense est un polynôme qui n'est pas creux ou un polynôme contenant un nombre indéterminé de monômes non nul.
- Un polynôme peut être représenté par un vecteur, aussi dénommée représentation dense, dont chaque composante correspond à un coefficient dudit polynôme. Typiquement, un polynôme a appartenant à l'anneau quotient K[X]/〈Xn - c〉, est de la forme a 0 + a 1 X ... + a n-1 X n-1 , et peut être représenté par un vecteur (ai )0≤i≤n-1.
- Le polynôme a est composé de monômes aiXi, avec pour tout i allant de 0 à n - 1, ai un coefficient de rang i, le coefficient de rang i étant associé à l'indéterminée X puissance i du polynôme. Un polynôme creux peut avantageusement être représenté par une liste de couples, aussi dénommée représentation creuse, chaque couple étant composé d'un coefficient et d'une puissance, ladite puissance étant le degré du monôme du polynôme creux, associé au coefficient.
-
- Le polynôme creux f est de la forme
où pour tout i allant de 0 à w, si est un entier compris entre 0 et n - 1 tel que , et fsi est un coefficient non nul de rang si tel que , avec w un entier naturel non nul strictement inférieur à n, q un entier naturel non nul, et pour tout j allant de 0 à q, une partie additive d'indice j du rang si et une partie multiplicative du coefficient fsi . - Le procédé est mis en oeuvre dans un algorithme cryptographique par un dispositif électronique, typiquement le dispositif électronique 2 décrit en référence à la
figure 1 . - L'algorithme cryptographique peut être un algorithme d'un schéma de chiffrement à clé publique post-quantique, par exemple un algorithme parmi l'algorithme Hamming Quasi-Cyclic, l'algorithme Bit Flipping Key Encapsulation, et l'algorithme Number Theory Research Unit.
- Le procédé permet ainsi l'implémentation de ces algorithmes dans un dispositif ayant des ressources mémoires et calculatoires limitées, typiquement dans un élément sécurisé.
- Ce procédé est mis en oeuvre dans l'anneau quotient. Ainsi le résultat de chaque opération polynomiale mise en oeuvre sur un, ou plusieurs, polynôme et/ou monôme, est dans l'anneau quotient.
- Ce procédé est ici mis en oeuvre par le dispositif électronique 2 du fait de l'exécution des instructions de programme d'ordinateur mémorisées dans le bloc de mémorisation 6 comme indiqué ci-dessus.
- De préférence, c a pour valeur 1 et pour chaque coefficient non nul du polynôme creux f, au plus une partie multiplicative du coefficient non nul concerné a une valeur différente de 1, ou c est un entier naturel strictement supérieur à 1 et pour chaque coefficient non nul du polynôme creux f, au moins une partie multiplicative du coefficient non nul concerné est générée aléatoirement ou pseudo-aléatoirement.
- De préférence, quand c vaut 1 et que les coefficients non nuls du polynôme creux f sont publics, ce qui est le cas quand l'algorithme cryptographique est un algorithme parmi l'algorithme Hamming Quasi-Cyclic, l'algorithme Bit Flipping Key Encapsulation, et l'algorithme Number Theory Research Unit, pour chaque coefficient non nul du polynôme creux f, au plus une partie multiplicative du coefficient non nul concerné a une valeur différente de 1.
- Le procédé permet ainsi de limiter encore les temps de calcul.
- Quand c est en entier naturel strictement supérieur à 1, il est préférable que les coefficients non nuls du polynôme creux f ne soient pas publics pour ne pas obtenir d'information sur la non uniformité des masquages additifs. Dans ce cas, il est nécessaire de masquer chaque coefficient non nul du polynôme creux, et ainsi pour chaque coefficient non nul du polynôme creux, au moins une partie multiplicative du coefficient non nul concerné est générée aléatoirement ou pseudo-aléatoirement. Selon une première étape d'initialisation d'index (étape E2), le processeur 4 initialise un entier k à la valeur 0.
- Le procédé comprend alors une étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) pendant laquelle le processeur 4 initialise un polynôme résultat intermédiaire d'indice k, t (k) , tel que
avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme résultat intermédiaire d'indice k. - t (k) est un polynôme de l'anneau quotient K[X]/〈Xn - c〉 .
- L'étape d'initialisation d'un polynôme résultat intermédiaire d'indice k est typiquement mise en oeuvre par le module d'initialisation d'un polynôme résultat intermédiaire d'indice k du dispositif électronique 2.
- Le processeur 4 détermine ensuite, à une première étape de test (étape E6), si l'entier k a atteint la valeur d.
- Dans la négative, l'entier k est incrémenté de 1 dans une première étape d'incrémentation (étape E8) et le procédé boucle à l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) pour effectuer un tour suivant.
- Au cours du procédé, l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est ainsi exécutée pour tout pour tout k allant de 0 à d. Le procédé initialise donc d + 1 polynômes résultat intermédiaire t (0), ..., t (d).
- Pendant la mise en oeuvre d'une étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) le processeur 4 initialise un polynôme résultat intermédiaire d'indice k, t (k) , tel que
avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme résultat intermédiaire d'indice k. -
-
- Le calcul d'un polynôme résultat final à partir des polynôme résultat intermédiaire (Le calcul du polynôme résultat final sera décrit plus loin avec l'étape E40) s'en retrouve simplifié. Le procédé permet ainsi de limiter encore l'espace mémoire consommé.
- Selon un deuxième exemple d'implémentation, la première itération de l'étape d'initialisation du polynôme résultat intermédiaire comprend l'initialisation de tous les coefficients du polynôme résultat intermédiaire d'indice k associé à ladite itération, puis l'initialisation d'un polynôme de référence r comme suit : r = t (k) , et chacune des autres itérations de l'étape d'initialisation du polynôme résultat intermédiaire comprend l'initialisation de tous les coefficients du polynôme résultat intermédiaire d'indice k associé à l'itération concernée puis la mise à jour du polynôme de référence r comme suit : r = r + t (k) .
- Le polynôme de référence r est un polynôme de l'anneau quotient K[X]/〈Xn - c〉 . L'initialisation des polynôme résultat intermédiaire s'en retrouve simplifié. Le procédé permet ainsi de limiter encore les temps de calcul.
- Ainsi, quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le premier exemple d'implémentation, pour tout k allant de 0 à d, l'initialisation du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k tel que, pour tout i allant de 0 à n - 1,
. - Quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le deuxième exemple d'implémentation, pour tout k allant de 0 à d, l'initialisation (étape E4) du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k, et le calcul d'un polynôme de référence r comme suit : r =
, avec pour tout k allant de 0 à d, t (k) le polynôme résultat intermédiaire d'indice k tel qu'initialisé pendant l'étape d'initialisation du polynôme résultat intermédiaire d'indice k. - Dans l'affirmative à la première étape de test (étape E6), le procédé se poursuit avec une deuxième étape d'initialisation d'index (étape E10), pendant laquelle le processeur 4 réinitialise l'entier k à la valeur 0.
- Le procédé comprend alors une étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12) pendant laquelle le processeur 4 initialise w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w tel que pour tout i allant de 0 à w, u (k,i) = g (k) .
avec u (k,i) l'autre polynôme intermédiaire ayant pour double indice k, i. - Chaque autre polynôme intermédiaire est un polynôme de l'anneau quotient K[X]/〈Xn - c〉 . L'étape d'initialisation de w + 1 autres polynômes intermédiaires est typiquement mise en oeuvre par le module d'initialisation de w + 1 autres polynômes intermédiaires du dispositif électronique 2.
- Le processeur 4 détermine ensuite, à une deuxième étape de test (étape E14), si l'entier k a atteint la valeur d.
- Dans la négative, l'entier k est incrémenté de 1 dans une deuxième étape d'incrémentation (étape E16) et le procédé boucle à l'étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12) pour effectuer un tour suivant.
- Au cours du procédé, l'étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12) est ainsi exécutée pour tout pour tout k allant de 0 à d. Le procédé initialise ainsi (d + 1) × (w + 1) autres polynômes intermédiaires u (0,0) , ..., u (0,w), u (1,0) , ... , u (1,w), ..., u (d,0), ... , u (d,w) .
- Dans l'affirmative à la deuxième étape de test (étape E14), le procédé se poursuit avec une troisième étape d'initialisation d'index (étape E18), pendant laquelle le processeur 4 réinitialise un entier j à la valeur 1.
- Le procédé comprend alors une quatrième étape d'initialisation d'index (étape E20), pendant laquelle le processeur 4 réinitialise l'entier k à la valeur 0.
-
- Pendant cette étape de renouvellement (étape E28), pour tout i allant de 0 à w, le processeur 4 modifie la valeur de plusieurs coefficients parmi les coefficients des d +1 autres polynômes intermédiaires u (0,i), ... , u (d,i) tout en s'assurant que
reste inchangé, c'est-à-dire tout en s'assurant que la somme des d +1 autres polynômes intermédiaires u (0,i), ..., u (d,i) reste inchangée. - Pour tout i allant de 0 à w, le résultat de la somme des d +1 autres polynômes intermédiaires u (0,i), ... , u (d,i) à l'issue des d +1 étapes d'initialisation de w + 1 autres polynômes intermédiaires (étapes E12) , est donc identique au résultat de la somme des d +1 autres polynômes intermédiaires u (0,i) ... u (d,i) à l'issue de l'étape de renouvellement (étape E28). Cependant plusieurs coefficients parmi les coefficients des d +1 autres polynômes intermédiaires u (0,i) ... u (d,i) ont été changés par l'étape de renouvellement (étape E28).
-
- L'étape de multiplication polynomiale est typiquement mise en oeuvre par le module de multiplication polynomiale du dispositif électronique 2.
- Le processeur 4 détermine ensuite, à une quatrième étape de test (étape E24), si l'entier k a atteint la valeur d.
- Dans la négative, l'entier k est incrémenté de 1 dans une quatrième étape d'incrémentation (étape E26) et le procédé boucle à l'étape de multiplication polynomiale (étape E22) pour effectuer un tour suivant.
- Au cours du procédé, l'étape de multiplication polynomiale (étape E22) d'indice j, c'est-à-dire ayant pour indice l'entier j, est ainsi exécutée pour tout pour tout k allant de 0 à d. Avec les étapes de multiplication polynomiale (étape E22) d'indice j , le procédé calcule ainsi pour tout i allant de 0 à w et pour tout k allant de 0 à d :
. - Dans l'affirmative à la quatrième étape de test (étape E24), le processeur 4 détermine ensuite, à une troisième étape de test (étape E30), si l'entier j a atteint la valeur q.
- Dans la négative, l'entier j est incrémenté de 1 dans une troisième étape d'incrémentation (étape E32) et le procédé boucle à la quatrième étape d'initialisation d'index (étape E20) pour effectuer un tour suivant.
- Ainsi, pour tout k allant de 0 à d, le procédé met en oeuvre q étapes de multiplication polynomiale (étape E22) ayant des indices respectifs allant de 1 à q, chaque étape de multiplication polynomiale effectuant un calcul défini comme suit : pour tout i allant de 0 à w,
, j ayant pour valeur l'indice de l'étape concernée. - En outre, le procédé comprend ainsi une étape de renouvellement entre deux étapes de multiplication polynomiale ayant des indices différents, chaque étape de renouvellement renouvelant les autres polynômes intermédiaires tel que pour tout i allant de 0 à w,
u (k,i) reste inchangé. Pour tout i allant de 0 à w, le résultat de la somme des d +1 autres polynômes intermédiaires u (0,i), ..., u (d,i) à l'issue des d + 1 exécutions de l'étape de multiplication polynomiale (étape E22) d'indice j , est donc identique au résultat de la somme des d +1 autres polynômes intermédiaires u (0,i) ... u (d,i) à l'issue de l'étape de renouvellement (étape E28) qui suit lesdites d + 1 exécutions de l'étape de multiplication polynomiale (étape E22) d'indice j. Cependant plusieurs coefficients parmi les coefficients des d +1 autres polynômes intermédiaires u (0,i) ... u (d,i) ont été changés par l'étape de renouvellement (étape E28). - Dans l'affirmative à la troisième étape de test (étape E30), le procédé poursuit avec une cinquième étape d'initialisation d'index (étape E32), pendant laquelle le processeur 4 réinitialise l'entier k à la valeur 0.
- Le procédé comprend alors une étape de mise à jour du polynôme résultat intermédiaire (étape E34) d'indice k pendant laquelle le processeur 4 met à jour le polynôme résultat intermédiaire d'indice k en ajoutant audit polynôme résultat intermédiaire d'indice k, les w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w.
-
- L'étape de mise à jour du polynôme résultat intermédiaire d'indice k est typiquement mise en oeuvre par le module de mise à jour du polynôme résultat intermédiaire d'indice k du dispositif électronique 2.
- Le processeur 4 détermine ensuite, à une cinquième étape de test (étape E36), si l'entier k a atteint la valeur d.
- Dans la négative, l'entier k est incrémenté de 1 dans une cinquième étape d'incrémentation (étape E38) et le procédé boucle à l'étape de mise à jour du polynôme résultat intermédiaire (étape E34). Ainsi le procédé met en oeuvre d + 1 étapes de mise à jour du polynôme résultat intermédiaire et effectue les calculs suivants :
, pour tout k allant de 0 à d. - Dans l'affirmative à la cinquième étape de test (étape E36), le procédé poursuit avec une étape (étape E40) de calcul d'un polynôme résultat final t.
- Quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le premier exemple d'implémentation décrit ci-avant pour cette étape, le processeur 4 calcule, pendant l'étape de calcul d'un polynôme résultat final t, le polynôme résultat final t comme suit :
. Ainsi, quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le premier exemple d'implémentation décrit ci-avant pour cette étape, le procédé comprend après la mise en oeuvre des d + 1 étapes de mise à jour d'un polynôme résultat intermédiaire (étapes E34), une étape de calcul d'un polynôme résultat final t comme suit : . -
- Ainsi, quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le deuxième exemple d'implémentation décrit ci-avant pour cette étape, le procédé comprend après la mise en oeuvre des d + 1 étapes de mise à jour d'un polynôme résultat intermédiaire (étapes E34), une étape de calcul d'un polynôme résultat final t comme suit :
. - Le polynôme résultat final t a pour valeur f · g.
- Le polynôme résultat final t est un polynôme de l'anneau quotient K[X]/〈Xn - c〉 .
- L'étape de calcul d'un polynôme résultat final t est typiquement mise en oeuvre par le module de calcul d'un polynôme résultat final du dispositif électronique 2.
- Le procédé utilise un masquage additif des rangs si du polynôme creux f. Ce masquage est rendu possible par l'utilisation de l'anneau quotient K[X]/〈Xn - c〉.
- Le procédé ne met en oeuvre que (d + 1) × (q + 1) × (w + 1) × n multiplications dans le corps fini K.
- Le procédé est ainsi sécurisé et permet de limiter les temps de calcul et l'espace mémoire consommé.
- L'homme du métier comprendra que l'étape de calcul d'un polynôme résultat final t peut- être omise, par exemple quand le résultat de la multiplication du polynôme creux f par le polynôme dense g doit être utilisé dans au moins un autre calcul. En effet, dans ce cas il peut être avantageux d'utiliser les d + 1 polynômes résultat intermédiaire pour effectuer l'autre calcul. Les d + 1 polynômes résultat intermédiaire constituent des parties additives du résultat de la multiplication du polynôme creux f par le polynôme dense g, c'est-à-dire une forme masquée dudit résultat de la multiplication du polynôme creux f par le polynôme dense g. L'utilisation du résultat du procédé de multiplication sécurisée entre le polynôme creux f et le polynôme dense g, pour l'autre calcul, est ainsi sécurisée.
- Quand l'étape (étape E40) de calcul d'un polynôme résultat final t est omise, dans l'affirmative à la cinquième étape de test (étape E36), le procédé prend fin.
- L'étape de renouvellement (étape E28) peut être omise.
- Cependant, l'étape de renouvellement (étape E28) permet de renforcer la sécurité du procédé quand d a une valeur strictement supérieure à 1. Le procédé est sécurisé contre un attaquant qui pourrait observer jusqu'à d valeurs intermédiaires.
- Chaque itération de l'étape de renouvellement empêche un attaquant qui pourrait observer jusqu'à d valeurs intermédiaires, de trouver la valeur d'un coefficient du polynôme creux en combinant des valeurs intermédiaires observées pendant une multiplication polynomiale qui précède l'itération concernée de l'étape de renouvellement et une multiplication polynomiale qui suit ladite itération concernée de l'étape de renouvellement (typiquement pendant la multiplication polynomiale de la dernière itération de l'étape d'initialisation de w + 1 autres polynômes intermédiaires et la multiplication polynomiale de la première itération de l'étape de multiplication polynomiale, ou pendant la multiplication polynomiale d'au moins une itération d'une étape de multiplication polynomiale d'indice j et la multiplication polynomiale d'au moins une itération d'une étape de multiplication polynomiale d'indice j + 1).
- On notera par ailleurs qu'une itération (non représentée) de l'étape de renouvellement (étape E28) peut être mise en oeuvre après la dernière itération de l'étape de multiplication polynomiale (c'est-à-dire après la dernière itération de l'étape de multiplication polynomiale d'indice q dans le procédé décrit ci-avant). La sécurité du procédé est ainsi renforcée, notamment si les d + 1 polynômes résultat intermédiaire sont utilisés pour effectuer l'autre calcul.
- De préférence, quand d vaut 1, le procédé ne comporte pas d'étape de renouvellement.
- En effet, d a pour valeur 1 quand il est considéré qu'un attaquant ne peut observer qu'une valeur intermédiaire. Dans ce cas, l'attaquant ne peut pas combiner une pluralité de valeurs intermédiaires. L'absence d'étape de renouvellement ne dégrade donc pas la sécurité du procédé.
- En l'absence d'étape de renouvellement, le dispositif électronique 2 peut mettre en oeuvre ensemble les d + 1 itérations :
- d'initialisation d'un polynôme résultat intermédiaire,
- d'initialisation de w + 1 autres polynômes intermédiaires,
- de mise en oeuvre de q étapes de multiplication polynomiale, et
- de mise à jour du polynôme résultat intermédiaire,
- Le procédé de multiplication sécurisée décrit en référence à la
figure 2 comporte 5 boucles. - Une première boucle est constituée de l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4), de la première étape de test (étape E6) et de la première étape d'incrémentation (étape E8).
- Une deuxième boucle est constituée de l'étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12), de la deuxième étape de test (étape E14) et de la deuxième étape d'incrémentation (étape E16).
- Une troisième boucle est constituée de la quatrième étape d'initialisation d'index (étape E20), d'une quatrième boucle, de l'étape de renouvellement (étape E28), de la troisième étape de test (étape E30) et de la troisième étape d'incrémentation (étape E32).
- La quatrième boucle est constituée de l'étape de multiplication polynomiale (étape E22), de la quatrième étape de test (étape E24) et de la quatrième étape d'incrémentation (étape E26).
- Une cinquième boucle est constituée de l'étape de mise à jour du polynôme résultat intermédiaire (étape E34), de la cinquième étape de test (étape E36) et de la cinquième étape d'incrémentation (étape E38).
- Un même entier k est utilisé comme index de tour pour la première boucle, la deuxième boucle, la quatrième boucle et la cinquième boucle. L'homme du métier comprendra qu'il peut utiliser un entier différent en tant qu'index de tour pour chacune de ces boucles.
- En outre, pour chaque boucle, le procédé de multiplication sécurisée décrit en référence à la
figure 2 , exécute les tours de la boucle concernée avec un index qui s'incrémente à chaque tour de ladite boucle. L'homme du métier comprendra que l'index d'une boucle peut être géré différemment tant que toutes les valeurs de l'index sont parcourues en exécutant les tours de ladite boucle. Typiquement, concernant la première boucle, le procédé peut être adapté pour faire les d + 1 itérations de l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) dans un ordre différent, chaque itération utilisant une valeur différente de l'entier k, comprise entre 0 et d. Par exemple, l'homme du métier peut initialiser l'entier k avec la valeur de d dans la première étape d'initialisation d'index (étape E2), remplacer la première étape d'incrémentation (étape E8) par une étape de décrémentation qui décrémente k de 1, et déterminer à la première étape de test (étape E6), si l'entier k a atteint la valeur 0. - Le procédé peut être adapté de façon similaire pour chacune des autres boucles.
- La
figure 3 illustre sous forme de logigramme les étapes principales d'un autre procédé de multiplication sécurisée selon l'invention. Cet autre procédé met en oeuvre ensemble les d + 1 itérations : - d'initialisation d'un polynôme résultat intermédiaire
- d'initialisation de w + 1 autres polynômes intermédiaires,
- de mise en oeuvre de q étapes de multiplication polynomiale, et
- de mise à jour du polynôme résultat intermédiaire,
- Comme le procédé décrit en référence à la
figure 2 , le procédé de lafigure 3 vise à mettre en oeuvre une multiplication sécurisée entre un polynôme creux f et un polynôme dense g dans un anneau quotient formé en divisant un anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K, par l'idéal engendré par un polynôme Xn - c où n et c sont des entiers naturels non nuls. -
- Le polynôme creux f est de la forme
où pour tout i allant de 0 à w, si est un entier compris entre 0 et n - 1 tel que , et fsi est un coefficient non nul de rang si tel que , avec w un entier naturel non nul strictement inférieur à n, q un entier naturel non nul, et pour tout j allant de 0 à q, une partie additive d'indice j du rang si et une partie multiplicative du coefficient fsi . - Le procédé est mis en oeuvre dans un algorithme cryptographique par un dispositif électronique, typiquement le dispositif électronique 2 décrit en référence à la
figure 1 . - L'algorithme cryptographique peut être un algorithme d'un schéma de chiffrement à clé publique post-quantique, par exemple un algorithme parmi l'algorithme Hamming Quasi-Cyclic, l'algorithme Bit Flipping Key Encapsulation, et l'algorithme Number Theory Research Unit.
- Le procédé permet ainsi l'implémentation de ces algorithmes dans un dispositif ayant des ressources mémoires et calculatoires limitées, typiquement dans un élément sécurisé.
- Ce procédé est mis en oeuvre dans l'anneau quotient. Ainsi le résultat de chaque opération polynomiale mise en oeuvre sur un, ou plusieurs, polynôme et/ou monôme, est dans l'anneau quotient.
- Ce procédé est ici mis en oeuvre par le dispositif électronique 2 du fait de l'exécution des instructions de programme d'ordinateur mémorisées dans le bloc de mémorisation 6 comme indiqué cidessus.
- De préférence, c a pour valeur 1 et pour chaque coefficient non nul du polynôme creux f, au plus une partie multiplicative du coefficient non nul concerné a une valeur différente de 1, ou c est un entier naturel strictement supérieur à 1 et pour chaque coefficient non nul du polynôme creux f, au moins une partie multiplicative du coefficient non nul concerné est générée aléatoirement ou pseudo-aléatoirement.
- De préférence, quand c vaut 1 et que les coefficients non nuls du polynôme creux f sont publics, ce qui est le cas quand l'algorithme cryptographique est un algorithme parmi l'algorithme Hamming Quasi-Cyclic, l'algorithme Bit Flipping Key Encapsulation, et l'algorithme Number Theory Research Unit, pour chaque coefficient non nul du polynôme creux f, au plus une partie multiplicative du coefficient non nul concerné a une valeur différente de 1
- Le procédé permet ainsi de limiter encore les temps de calcul.
- Quand c est en entier naturel strictement supérieur à 1, il est préférable que les coefficients non nuls du polynôme creux f ne soient pas publics pour ne pas obtenir d'information sur la non uniformité des masquages additifs. Dans ce cas, il est nécessaire de masquer chaque coefficient non nul du polynôme creux, et ainsi pour chaque coefficient non nul du polynôme creux, au moins une partie multiplicative du coefficient non nul concerné est générée aléatoirement ou pseudo-aléatoirement. Selon une première étape d'initialisation d'index (étape E2), le processeur 4 initialise un entier k à la valeur 0.
- Le procédé comprend alors une étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) identique à celle décrite en référence à la
figure 2 . - Le procédé comprend alors une étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12) identique à celle décrite en référence à la
figure 2 , pendant laquelle le processeur 4 initialise w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w - Le procédé comprend alors une troisième étape d'initialisation d'index (étape E18) identique à celle décrite en référence à la
figure 2 . - Le procédé comprend alors une étape de multiplication polynomiale (étape E22) d'indice j identique à celle décrite en référence à la
figure 2 . - Le processeur 4 détermine ensuite, à une troisième étape de test (étape E30), si l'entier j a atteint la valeur q.
- Dans la négative, l'entier j est incrémenté de 1 dans une première autre étape d'incrémentation (étape E50) et le procédé boucle à l'étape de multiplication polynomiale (étape E22) pour effectuer un tour suivant.
-
- Dans l'affirmative à la troisième étape de test (étape E30), le procédé poursuit avec une étape de mise à jour du polynôme résultat intermédiaire (étape E34) d'indice k pendant laquelle le processeur 4 met à jour le polynôme résultat intermédiaire d'indice k en ajoutant audit polynôme résultat intermédiaire d'indice k, les w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w.
-
- L'étape de mise à jour du polynôme résultat intermédiaire d'indice k est typiquement mise en oeuvre par le module de mise à jour du polynôme résultat intermédiaire d'indice k du dispositif électronique 2.
- Le processeur 4 détermine ensuite, à une cinquième étape de test (étape E36), si l'entier k a atteint la valeur d.
- Dans la négative, l'entier k est incrémenté de 1 dans une deuxième autre étape d'incrémentation (étape E52) et le procédé boucle à l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) pour effectuer un tour suivant.
- Au cours du procédé, l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est ainsi exécutée pour tout pour tout k allant de 0 à d. Le procédé initialise donc d + 1 polynômes résultat intermédiaire t (0), ..., t (d) . Chaque polynôme résultat est un polynôme de l'anneau quotient K[X]/〈Xn - c〉 .
- Ainsi, quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le premier exemple d'implémentation, pour tout k allant de 0 à d, l'initialisation du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k tel que, pour tout i allant de 0 à n - 1,
. - Quand l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) est selon le deuxième exemple d'implémentation, pour tout k allant de 0 à d, l'initialisation (étape E4) du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k, et le calcul d'un polynôme de référence r comme suit : r =
, avec pour tout k allant de 0 à d, t (k) le polynôme résultat intermédiaire d'indice k tel qu'initialisé pendant l'étape d'initialisation du polynôme résultat intermédiaire d'indice k. - Au cours du procédé, l'étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12) est aussi exécutée pour tout pour tout k allant de 0 à d. Le procédé initialise ainsi (d + 1) × (w + 1) autres polynômes intermédiaires u (0,0), ... , u (0,w) , u (1,0) , ... , u (1,w), ... , u (d,0), ... , u (d,w). Chaque autre polynôme intermédiaire est un polynôme de l'anneau quotient K[X]/〈Xn - c〉 .
- En outre, chaque étape de multiplication polynomiale (étape E22) d'indice j, j allant de 1 à q, est exécutée pour tout k allant de 0 à d. Avec les étapes de multiplication polynomiale (étape E22) d'indice j , le procédé calcule ainsi pour tout i allant de 0 à w et pour tout k allant de 0 à d : u (k,i) =
. -
- Dans l'affirmative à la cinquième étape de test (étape E36), le procédé poursuit avec une étape (étape E40) de calcul d'un polynôme résultat final t identique à celle décrite en référence à la
figure 2 . - Le procédé utilise un masquage additif des rangs si du polynôme creux f. Ce masquage est rendu possible par l'utilisation de l'anneau quotient K[X]/〈Xn - c〉 .
- Le procédé ne met en oeuvre que (d + 1) × (q + 1) × (w + 1) × n multiplications dans le corps fini K.
- Le procédé est ainsi sécurisé et permet de limiter les temps de calcul et l'espace mémoire consommé.
- L'homme du métier comprendra que l'étape de calcul d'un polynôme résultat final t peut- être omise, par exemple quand le résultat de la multiplication du polynôme creux f par le polynôme dense g doit être utilisé dans au moins un autre calcul. En effet, dans ce cas il peut être avantageux d'utiliser les d + 1 polynômes résultat intermédiaire pour effectuer l'autre calcul. Les d + 1 polynômes résultat intermédiaire constituent des parties additives du résultat de la multiplication du polynôme creux f par le polynôme dense g, c'est-à-dire une forme masquée dudit résultat de la multiplication du polynôme creux f par le polynôme dense g. L'utilisation du résultat du procédé de multiplication sécurisée entre le polynôme creux f et le polynôme dense g, pour l'autre calcul, est ainsi sécurisée.
- De façon avantageuse, selon un troisième exemple d'implémentation, la première itération de l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) peut initialiser tous les coefficients du polynôme résultat intermédiaire d'indice k avec la valeur 0, k ayant pour valeur 0, puis chaque autre itération de l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4) peut initialiser le polynôme résultat intermédiaire d'indice k comme suit : t (k) = t (k-1), k ayant la valeur déterminée par la mise en oeuvre de la deuxième autre étape d'incrémentation (étape E52) qui précède l'itération concernée de l'étape d'initialisation d'un polynôme résultat intermédiaire. Dans ce cas, l'étape (étape E40) de calcul d'un polynôme résultat final t peut être omise, t(d) ayant pour valeur f · g.
- Quand l'étape (étape E40) de calcul d'un polynôme résultat final t est omise, dans l'affirmative à la cinquième étape de test (étape E36), le procédé prend fin.
- Une première boucle est constituée de l'étape d'initialisation d'un polynôme résultat intermédiaire (étape E4), de l'étape d'initialisation de w + 1 autres polynômes intermédiaires (étape E12), de la troisième étape d'initialisation d'index (étape E18), d'une deuxième boucle, de l'étape de mise à jour du polynôme résultat intermédiaire (étape E34), de la cinquième étape de test (étape E36) et de la deuxième autre étape d'incrémentation (étape E52).
- La deuxième boucle est constituée, de l'étape de multiplication polynomiale (étape E22), de la troisième étape de test (étape E30) et de la première autre étape d'incrémentation (étape E50).
- Pour chaque boucle, le procédé de multiplication sécurisée décrit en référence à la
figure 3 , exécute les tours de la boucle concernée avec un index qui s'incrémente à chaque tour de ladite boucle. L'homme du métier comprendra que l'index d'une boucle peut être géré différemment tant que toutes les valeurs de l'index sont parcourues en exécutant les tours de ladite boucle. - Typiquement, concernant la deuxième boucle le procédé peut être adapté pour faire les q itérations de l'étape de multiplication polynomiale (étape E22) dans un ordre différent, chaque itération utilisant une valeur différente de l'entier j, comprise entre 1 et q. Par exemple, l'homme du métier peut initialiser l'entier j avec la valeur de q dans la troisième étape d'initialisation d'index (étape E18), remplacer la première autre étape d'incrémentation (étape E50) par une autre étape de décrémentation qui décrémente j de 1, et déterminer à la troisième étape de test (étape E30), si l'entier j a atteint la valeur 1.
- Le procédé peut être adapté de façon similaire pour la première boucle.
Claims (10)
- Procédé de multiplication sécurisée entre un polynôme creux f et un polynôme dense g dans un anneau quotient formé en divisant un anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K, par l'idéal engendré par un polynôme Xn - c où n et c sont des entiers naturels non nuls,- le procédé étant mis en oeuvre dans un algorithme cryptographique par un dispositif électronique (2),- le polynôme dense g étant de la forme
où d est un entier naturel non nul et pour tout k allant de 0 à d, g (k) est un polynôme intermédiaire de masquage d'indice k tel que avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme intermédiaire de masquage d'indice k,- le procédé étant caractérisé en ce que le polynôme creux f est de la forme où pour tout i allant de 0 à w, si est entier compris entre 0 et n - 1 tel que , et fsi est un coefficient non nul de rang si tel que , avec w un entier naturel non nul strictement inférieur à n, q un entier naturel non nul, et pour tout j allant de 0 à q, une partie additive d'indice j du rang si et une partie multiplicative du coefficient fsi ,- et en ce que le procédé comprend pour tout k allant de 0 à d:a. l'initialisation (E4) d'un polynôme résultat intermédiaire d'indice k t (k) tel que avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme résultat intermédiaire d'indice k ;b. l'initialisation (E12) de w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w tel que pour tout i allant de 0 à w, , avec u (k,i) l'autre polynôme intermédiaire ayant pour double indice k, i;c. la mise en oeuvre de q étapes (E22) de multiplication polynomiale ayant des indices respectifs allant de 1 à q, chaque étape de multiplication polynomiale effectuant un calcul défini comme suit : pour tout i allant de 0 à w, , j ayant pour valeur l'indice de l'étape concernée ;d. la mise à jour (E34) du polynôme résultat intermédiaire d'indice k en ajoutant audit polynôme résultat intermédiaire d'indice k, les w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w. - Procédé de multiplication sécurisée selon la revendication précédente, le procédé comprenant en outre une étape (E28) de renouvellement entre deux étapes de multiplication polynomiale (E22) ayant des indices différents, chaque étape de renouvellement (E28) renouvelant les autres polynômes intermédiaires tel que pour tout i allant de 0 à w,
reste inchangé. - Procédé de multiplication sécurisée selon l'une quelconque des revendications précédentes, dans lequel c a pour valeur 1 et pour chaque coefficient non nul du polynôme creux, au plus une partie multiplicative du coefficient non nul concerné a une valeur différente de 1, ou dans lequel c est un entier naturel strictement supérieur à 1 et pour chaque coefficient non nul du polynôme creux, au moins une partie multiplicative du coefficient non nul concerné est générée aléatoirement ou pseudo-aléatoirement.
- Procédé de multiplication sécurisée selon l'une quelconque des revendications précédentes, dans lequel l'algorithme cryptographique est un algorithme d'un schéma de chiffrement à clé publique post-quantique, par exemple un algorithme parmi l'algorithme Hamming Quasi-Cyclic, l'algorithme Bit Flipping Key Encapsulation, et l'algorithme Number Theory Research Unit.
- Procédé de multiplication sécurisée selon l'une quelconque des revendications précédentes, dans lequel pour tout k allant de 0 à d, l'initialisation (E4) du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k tel que, pour tout i allant de 0 à n - 1,
. - Procédé de multiplication sécurisée selon l'une quelconque des revendications 1 à 4, dans lequel pour tout k allant de 0 à d, l'initialisation (E4) du polynôme résultat intermédiaire d'indice k comprend l'initialisation de tous les coefficients dudit polynôme résultat intermédiaire d'indice k, et le calcul d'un polynôme de référence r comme suit :
, avec pour tout k allant de 0 à d, t (k) le polynôme résultat intermédiaire d'indice k tel qu'initialisé pendant l'étape d'initialisation du polynôme résultat intermédiaire d'indice k. - Programme d'ordinateur comprenant des instructions exécutables par un processeur et adaptées à mettre en oeuvre un procédé de multiplication sécurisée selon l'une quelconque des revendications précédentes, lorsque ces instructions sont exécutées par le processeur.
- Dispositif électronique (2) de multiplication sécurisée entre un polynôme creux f et un polynôme dense g dans un anneau quotient formé en divisant un anneau des polynômes à une indéterminée X et à coefficients dans un corps fini K, par l'idéal engendré par un polynôme Xn - c où n et c sont des entiers naturels non nuls,- le polynôme dense g étant de la forme
où d est un entier naturel non nul et pour tout k allant de 0 à d, g (k) est un polynôme intermédiaire de masquage d'indice k tel que avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme intermédiaire de masquage d'indice k,- le dispositif électronique étant caractérisé en ce que le polynôme creux f est de la forme où pour tout i allant de 0 à w, si est un entier compris entre 0 et n - 1 tel que si , et fsi est un coefficient non nul de rang si tel que fsi · Xsi = , avec w un entier naturel non nul strictement inférieur à n, q un entier naturel non nul, et pour tout j allant de 0 à q, une partie additives d'indice j du rang si et une partie multiplicative du coefficient fsi ,- et en ce que le dispositif électronique comprend, pour tout k allant de 0 à d :a. un module d'initialisation d'un polynôme résultat intermédiaire d'indice k t (k) configuré pour initialiser le polynôme résultat intermédiaire d'indice k tel que avec pour tout i allant de 0 à n - 1, un coefficient de rang i du polynôme résultat intermédiaire d'indice k ;b. un module d'initialisation de w + 1 autres polynômes intermédiaires configuré pour initialiser w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w tel que pour tout i allant de 0 à w, , avec u (k,i) l'autre polynôme intermédiaire ayant pour double indice k, i;c. un module de multiplication polynomiale configuré pour mettre en oeuvre q étapes de multiplication polynomiale ayant des indices respectifs allant de 1 à q, chaque étape de multiplication polynomiale effectuant un calcul défini comme suit : pour tout i allant de 0 à w, , j ayant pour valeur l'indice de l'étape concernée ;d. un module de mise à jour du polynôme résultat intermédiaire d'indice k configuré pour mettre à jour le polynôme résultat intermédiaire d'indice k en ajoutant audit polynôme résultat intermédiaire d'indice k, les w + 1 autres polynômes intermédiaires ayant des doubles indices respectifs allant de k, 0 à k, w.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR2309678A FR3153166B3 (fr) | 2023-09-14 | 2023-09-14 | Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d’ordinateur associés. |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP4525353A1 true EP4525353A1 (fr) | 2025-03-19 |
Family
ID=91969174
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP24190159.4A Pending EP4525353A1 (fr) | 2023-09-14 | 2024-07-22 | Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d' ordinateur associés |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP4525353A1 (fr) |
| FR (1) | FR3153166B3 (fr) |
-
2023
- 2023-09-14 FR FR2309678A patent/FR3153166B3/fr active Active
-
2024
- 2024-07-22 EP EP24190159.4A patent/EP4525353A1/fr active Pending
Non-Patent Citations (3)
| Title |
|---|
| KRAUSZ MARKUS ET AL: "A Holistic Approach Towards Side-Channel Secure Fixed-Weight Polynomial Sampling", 2 May 2023, PUBLIC-KEY CRYPTOGRAPHY - PKC 2023; [LECTURE NOTES IN COMPUTER SCIENCE; LECT.NOTES COMPUTER], SPRINGER NATURE SWITZERLAND, CHAM, PAGE(S) 94 - 124, ISBN: 978-3-031-31370-7, ISSN: 0302-9743, XP047659421 * |
| SCHAMBERGER THOMAS ET AL: "Practical Evaluation of Masking for NTRUEncrypt on ARM Cortex-M4", 16 March 2019, CONSTRUCTIVE SIDE-CHANNEL ANALYSIS AND SECURE DESIGN; [LECTURE NOTES IN COMPUTER SCIENCE; LECT.NOTES COMPUTER], SPRINGER INTERNATIONAL PUBLISHING, CHAM, PAGE(S) 253 - 269, ISBN: 978-3-030-16349-5, ISSN: 0302-9743, XP047686981 * |
| WEI-LUN HUANG ET AL: "Correlation Power Analysis on NTRU Prime and Related Countermeasures", vol. 20190131:230857, 31 January 2019 (2019-01-31), pages 1 - 19, XP061027563, Retrieved from the Internet <URL:http://eprint.iacr.org/2019/100.pdf> [retrieved on 20190131] * |
Also Published As
| Publication number | Publication date |
|---|---|
| FR3153166B3 (fr) | 2025-08-29 |
| FR3153166A3 (fr) | 2025-03-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2415199B1 (fr) | Procede pour effectuer une tache cryptographique dans un composant electronique | |
| FR2926652A1 (fr) | Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature | |
| WO2011101598A1 (fr) | Procede cryptographique de communication d'une information confidentielle | |
| EP2391051B1 (fr) | Procédé de détermination d'une représentation d'un produit d'éléments d'un corps fini | |
| EP2572470B1 (fr) | Procédé d'obtention de clés de chiffrement, terminal, serveur, et produits programmes d'ordinateurs corresupondants. | |
| EP4422117A1 (fr) | Procédé de séléction d'une valeur parmi deux valeurs enregistrées dans deux registres différents | |
| EP2983083B1 (fr) | Procede de cryptographie sur courbe elliptique comprenant une detection d'erreur | |
| EP0909495A1 (fr) | Procede de cryptographie a cle publique | |
| EP3929726B1 (fr) | Procede de traitement cryptographique,dispositif electronique et programme d'ordinateur associes | |
| EP2530867B1 (fr) | Procédé de traitement cryptographique de données | |
| EP4525353A1 (fr) | Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d' ordinateur associés | |
| EP3579491A1 (fr) | Procédé de détermination d'inverse modulaire et dispositif de traitement cryptographique associé | |
| EP3200384A1 (fr) | Procédé d'execution de calcul cryptographique et application a la classification par machines a vecteurs de support | |
| WO2006103149A1 (fr) | Procede et dispositif cryptographique permettant de proteger les logiques de cles publiques contre les attaques par faute | |
| EP4617853B1 (fr) | Procédé de détermination d'un inverse modulaire, dispositif électronique et programmes d ordinateur associés | |
| FR3135854A1 (fr) | Fourniture sécurisée de clefs pour un cryptage totalement homomorphe | |
| EP3857810B1 (fr) | Procédé cryptographique de comparaison sécurisée de deux données secrètes x et y | |
| EP3451316B1 (fr) | Dispositif de réduction modulaire | |
| EP3482524B1 (fr) | Procédé de génération des paramètres caractérisant un protocole cryptographique | |
| EP4687318A1 (fr) | Procédé de comparaison sécurisée à zéro, dispositif électronique et programme d'ordinateur associés | |
| EP4117224B1 (fr) | Procédé de génération d'un élément d'une clé cryptographique, procédé de traitement cryptographique, dispositif de traitement cryptographique et programme d'ordinateur associés | |
| EP4404501A1 (fr) | Protection contre les attaques par canal auxiliaire d'un algorithme cryptographique impliquant une table de substitution | |
| EP4270855A1 (fr) | Protection contre les attaques par canal auxiliaire a l aide d'un masquage carre | |
| EP4718769A1 (fr) | Procédé d´échantillonnage discret sécurisé à partir d´une donnée d´entrée, dispositif électronique et programme d´ordinateur associés | |
| EP4572223A1 (fr) | Procédé pour le calcul d'une fonction dans un contexte boîte bleanche et système associé |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20240722 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| P01 | Opt-out of the competence of the unified patent court (upc) registered |
Free format text: CASE NUMBER: APP_23816/2025 Effective date: 20250519 |