[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

EP2803161A1 - Method of encryption protected against side channel attacks - Google Patents

Method of encryption protected against side channel attacks

Info

Publication number
EP2803161A1
EP2803161A1 EP12821282.6A EP12821282A EP2803161A1 EP 2803161 A1 EP2803161 A1 EP 2803161A1 EP 12821282 A EP12821282 A EP 12821282A EP 2803161 A1 EP2803161 A1 EP 2803161A1
Authority
EP
European Patent Office
Prior art keywords
round
rounds
sub
executions
last
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP12821282.6A
Other languages
German (de)
French (fr)
Inventor
Benoit Feix
Mylène Roussellet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inside Secure SA
Original Assignee
Inside Secure SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inside Secure SA filed Critical Inside Secure SA
Publication of EP2803161A1 publication Critical patent/EP2803161A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Definitions

  • the present invention relates to a method of block ciphering executed by a microcircuit and protected against attacks by auxiliary channels, for the transformation of a message into an encrypted message, from a secret key.
  • the present invention particularly relates to smart card integrated circuits or hardware cryptographic components integrated on the motherboards of computers and other consumer electronic and computer equipment requiring security means (USB sticks, TV channel decoders, game consoles, etc.), known as "TPM” (Trusted Platform Module).
  • TPM Trusted Platform Module
  • Such microcircuits are equipped with a CPU (central processing unit) which generally comprises an 8-bit CISC core or an 8, 16 or 32-bit RISC core.
  • a CPU central processing unit
  • Some are equipped with a coprocessor dedicated to cryptographic computation, for example a DES (Data Encryption Standard) or AES (Advanced Encryption Standard) coprocessor. They have thousands of logical gates that switch differently depending on the operations performed. These switches create variations in current consumption of short duration, for example of a few nanoseconds, which are measurable.
  • CMOS integrated circuits comprise logic gates that only consume current when they are switched, corresponding to the transition to 1 or 0 of a logical node. Thus, power consumption depends on the data handled by the CPU and its various peripherals: memory, data traveling on the data or address bus, cryptographic coprocessor, etc.
  • Such microcircuits are subjected to so-called auxiliary channel attacks, based on the observation of their current consumption, their magnetic or electromagnetic radiation. Such attacks are aimed at discovering the secret data they use, including their cryptography keys.
  • auxiliary channel attacks implement statistical analysis methods such as DPA ("Differential Power Analysis”) or CPA ("Correlation Power Analysis”) analysis.
  • DPA Different Power Analysis
  • CPA Correlation Power Analysis
  • the CPA analysis is based on a linear model of current consumption and consists in calculating a correlation coefficient between, on the one hand, the measured consumption points which form the captured consumption curves and, on the other hand, a value consumption estimate, calculated from the linear consumption model and a hypothesis on the operation performed by the microcircuit and on the value of the cryptographic key.
  • countermeasures are generally provided.
  • the most commonly used countermeasures are masking or multiple execution.
  • a masking countermeasure uses a random mask (binary number) that is combined with the key and / or message during the execution of the encryption process. This type of countermeasure is effective but requires a coprocessor specially designed for its implementation, in the case of execution by a coprocessor, or a program of greater complexity, in the case of execution by the CPU of the microcircuit.
  • a multiple execution countermeasure can be implemented with a conventional coprocessor that does not include countermeasure means. It simply consists in executing the encryption process several times by means of false keys.
  • a countermeasure program which controls the encryption program or the coprocessor, and makes it execute the encryption process several times with the false keys, so that the execution of the encryption process with the right key (ie the authentic key) is "drowned" in a set of dummy executions.
  • the present invention more particularly relates to multiple execution countermeasures applied to symmetric type block ciphering methods such as the DES, TDES and AES methods. These classic countermeasures will be better understood after recalling the structure of these encryption methods.
  • FIG. 1A schematically shows the architecture of a block ciphering method CP1.
  • the process is symmetric, which means that it uses the same secret key for encryption or decryption.
  • the method receives as input a message M and a secret key K, and provides an encrypted message C. It comprises Nr round RDi,
  • the method comprises intermediate rounds RD 2 , ... RD ,, ... RDN -
  • the method may also include an initial operation IO to prepare the message before the execution of the rounds, by means of a first transformation function, and a final operation FO to transform the result of the last round by means of a second transformation function, to obtain the encrypted message C.
  • Each round RD (i being considered here as an index ranging from 1 to Nr) generally uses a subkey SK, derived from the key K or derived from the subkey used by the previous round. Each round provides the next round a secret intermediate result that is not accessible to an attacker, this result being for example stored temporarily in a protected memory.
  • the first round RD 1 receives, as input data, the message M or a data item resulting from the message transformation by the initial operation I0, and provides a first secret intermediate result to the next round RD 2 .
  • Each intermediate round RD receives as input the secret intermediate result provided by the previous round, and provides a secret intermediate result to the next round.
  • the last round receives as input the intermediate secret result provided by the last round RDN and provides a final result forming the encrypted message C or forming the encrypted message after transformation by the final operation FO.
  • each RD round generally comprises sub-rounds SRD1, SRD2, .... SRD n .
  • each RD round of the DES process includes four PermutationExpansive, OR Exclusive, Substitution, and SimpleSwap sub-rounds.
  • FIG. 2 represents in the form of a flowchart "AES1" the classical structure of an AES encryption method.
  • the method comprises an initial operation comprising the operation "AddRoundKey” using a first sub-key SK 0 , nine rounds RD, (RD ⁇ to RD 9 ) using nine other sub-keys SK, and each comprising four sub-rounds "SubBytes”, “ShiftRows", “MixColumns” and “AddRoundKey”, and one last round RDi 0 including three sub-rounds "SubBytes", “ShiftRow” and "AddRoundKey” using a tenth sub-key SK 0 .
  • FIG. 3 schematically represents an example of method CP2 protected against attacks by auxiliary channels by the multiple execution technique.
  • the method comprises an initial step of generating N1 -1 false keys K 1 , K 2 , K N ii, the correct key K being for example the key K 0 .
  • the method CP2 comprises N1 executions of the method CP1 of FIG.
  • the CP1 process is executed a first time with the key K 0 , then with the first false key Ki, then the second false key K 2 , etc. until the N1 th execution with the KNI-I key.
  • Each execution provides a result Co, CI, ... CNI-I from the corresponding key and message M. Only one of these results is valid and the others are dummy.
  • the order in which the keys are used is random (the regular order shown in Fig. 3 being just an example) so that an attacker does not know which run uses the correct key.
  • Embodiments of the invention relate to a symmetric encryption method executed by a microcircuit, for transforming a message into an encrypted message, from a secret key, comprising a first round, intermediate rounds and a last round, comprising several executions of the first and last round, respectively from the secret key and a first set of false keys, and a number of executions of at least one intermediate round less than the number of executions of the first and last rounds, respectively from the secret key and a set of false keys included in the first set of false keys.
  • the method comprises a second round, a penultimate round and several intermediate rounds, the first two rounds are executed a greater number of times than the intermediate rounds, and both last rounds are executed more times than the intermediate rounds.
  • the method comprises only one execution of at least one intermediate round.
  • the method comprises, for a determined number of successive rounds starting from the first, a number of executions of the decreasing rounds according to a rule of decay which is a function of the rank of the rounds considered relative to the first round, then, for a given number of successive rounds until the last one, a number of executions of the rounds growing according to a rule of growth which is function of the rank of the rounds considered relative to the last round.
  • the decay rule is a rule in 1 / (2n), where n is a parameter depending on the rank of the rounds considered relative to the first or the last round.
  • each round includes sub-rounds, and the multiple execution of each round includes the multiple execution of each sub-round of the round.
  • each round includes sub-rounds, and the multiple execution of a round includes the multiple execution of at least one sub-round, and a single run of at least one other sub-round .
  • the single execution of the sub-round is a masked execution in single or multiple order.
  • the multiple execution of the sub-round is a masked execution in simple order.
  • the method complies with the DES, triple DES, or AES specifications.
  • Embodiments of the invention also relate to a microcircuit configured to execute a symmetric encryption method, making it possible to transform a message into an encrypted message, from a secret key, the method comprising a first round, intermediate rounds, and a last round, the microcircuit being configured to execute several times the first and the last round, respectively from the secret key and a first set of false keys, and to execute at least one intermediate round a number of times lower the number of executions of the first and last rounds, respectively from the secret key and a set of false keys included in the first set of false keys.
  • the microcircuit is configured to execute only once at least one intermediate round.
  • the microcircuit is configured to execute rounds comprising sub-rounds, and to execute the same number of times all the sub-rounds of a round, during a multiple execution of a round.
  • the microcircuit is configured to execute rounds comprising sub-rounds, and to execute only once at least one sub-round and execute several times another sub-round, during an execution. multiple of a round.
  • the microcircuit comprises a modular coprocessor configured to execute individually encryption operations included in sub-rounds. Embodiments of encryption methods and a microcircuit according to the invention will be described in the following with reference to nonlimiting reference to the appended figures, among which:
  • FIG. 1A previously described represents the structure of a conventional round ciphering method
  • FIG. 1B previously described represents the structure of a round of the process of FIG.
  • FIG. 2 previously described represents the structure of a conventional AES encryption method
  • FIG. 3 previously described represents the structure of a conventional encryption method protected against attacks by auxiliary channels
  • FIG. 4 represents the structure of an embodiment of an encryption method according to the invention
  • FIG. 5 illustrates an advantage of the method of FIG. 4,
  • FIG. 6 represents the structure of an AES encryption method according to the invention
  • FIG. 7 represents the structure of another embodiment of an encryption method according to the invention
  • FIG. 8 represents an embodiment of a secure microcircuit according to the invention.
  • Embodiments of the invention include the finding that all rounds of a symmetric encryption method do not require the same level of protection against aux channel attacks. The rounds most exposed to this type of attack and especially to an attack by DPA or CPA analysis are first of all the first round and the last round. Indeed, a DPA or CPA analysis can not be conduct against a round only if an entry or exit data of the round is known to the attacker, the key being the object of the attack.
  • the first round RD-i receives input data that is known to an attacker.
  • This is the message M or data resulting from the transformation of the message by the initial operation IO.
  • the initial operation is also known to the attacker because described by applicable standards, the input data can be calculated from the message if it is not the message itself.
  • the last round RD Nr provides a result known to the attacker.
  • This is the encrypted message C or data whose encrypted message C is issued, after transformation of the data by the final operation FO. Since the final operation is also known to the attacker, this data can be retrieved from the encrypted message C, by means of the inverse function of the function used by the final operation FO.
  • Embodiments of the invention thus relate to an encryption method in which the number of executions of the intermediate rounds RD, (RD2, RD3, ... RDj, RDN) is smaller than the number of executions of the first and the last round, to reduce the total number of round runs and reduce the overall execution time of the encryption process.
  • the second and second-last rounds RD 2 , RD N are considered more exposed to attack than other intermediate rounds, and are executed more times than other rounds. intermediate.
  • "central" intermediate rounds ie those furthest away from the first and last rounds) are executed only once.
  • FIG. 4 schematically shows the structure of a block encryption method CP3 according to the invention, of symmetrical type, protected against attacks by auxiliary channels.
  • the method provides an encrypted message C, from a message M and a secret key K, and comprises Nr rounds RD-i, RD 2l ... RD, ... RD Nr - i, RDNr-
  • the method may comprise an initial operation IO for preparing the message M before the execution of the rounds, and a final operation FO for transforming the result of the last round by means of a known transformation function, for obtain the encrypted message C. It also comprises an initial step of generating N1 -1 false keys Ki, K 2 , ..., KNI-I in addition to the secret key K.
  • the method thus uses an initial set of N1 keys Kj (K 0 , ⁇ - ⁇ , K 2 , ..., KNI-I) in which only the key Ko is authentic.
  • the method CP3 comprises the following steps:
  • the round RDi is executed N1 times by means of N1 subkeys SK- (SK-i, 0 , SKi , i, SK-1, 2, ..., SK-I, NI-I) generated from the initial set of N1 keys Kj (K 0 , KL K 2 , ..., KNM),
  • the round RD 2 is executed N2 times, with N2 ⁇ N1, by means of N2 subkeys SK 2 j (SK 2 , o, SK 2 , -I, SK 2 2 , ..., SK 2 N 2 -i ) generated from a subset of key N2 K j (Ko, Ki, K 2 , ..., KN 2 -I) which is included in the initial set of key N1,
  • the round RD is executed N, times, with N, ⁇ , ⁇ being the number of executions of the preceding round, by means of N, subkeys SKg (SK ii0 , ⁇ ,, ⁇ , SKi, 2 , ..., SKi, N ii) generated from a set of N, keys K j (Ko, Ki, K 2 , ..., KNM) which is included in the initial set of N1 keys,
  • the round RD Nr- i is executed N Nr -i times, with N Nr -i ⁇ N NR -2, N Nr-2 being the number of executions of the previous round, by means of N N sub-keys SK Nr -i, j (SK Nr- i, o > SK Nr -i, i, SK Nr -i, 2 SK (Nr-1, N Nr -i-1) generated from a set of NN keys Kj (K 0 , K 1 , K 2 , ..., K (N N -1)) which is included in the initial set of N 1 keys, and the last round RD Nr is executed N Nr times, with ⁇ ⁇ ⁇ N Nr -i, by means of ⁇ ⁇ subkeys SK Nr , j (SK Nr , o, SK Nr , i, SKNr, 2, -.
  • SK (Nr, NNr1)) generated from a set of ⁇ ⁇ keys Kj (K 0 , ⁇ - ⁇ , K 2 K (NN)) which is included in the initial set of N1 keys.
  • the relationship between the number of executions of each RD round is governed by a first countermeasure rule, which can be formalized in the manner indicated below, reference being made to rounds RD- ⁇ , RD 2 , RD 3 , RD ) ... RD RD Nr -3 > RD Nr -2,
  • N Nr N Nr -i> N Nr-2 . >. N Nr-3 ...> Ni
  • the distribution of the number of executions could be different on the first and last rounds, for example:
  • Is being a threshold defining the "distance" of a round relative to the first and last rounds.
  • the threshold Is can be chosen greater than the number of rounds to obtain a total symmetry of the process with regard to the number of execution of the rounds, relative to the central rounds.
  • Rule 3 the execution of certain intermediate rounds is not repeated, in particular that of the central rounds.
  • NTP a number of rounds to protect relative to the first and last round
  • the number of rounds to be protected represents the number of rounds to be executed several times. Rounds that do not belong to the group of rounds to be protected are considered as "central” rounds and are executed only once, with the correct key Ko (ie the authentic key).
  • Rule 3 can be formalized as indicated below.
  • NRtoP number of rounds to protect
  • NRtoP 3 (i.e. 3 rounds to protect),
  • rounds RD 4 , RD 5 , RD 6 , RD 7 , RD 8 , RD 9 , RD 10 , RDn, RD 1 2 , RD 13 are only executed once.
  • the number of executions N, of each round RD (for i ranging from 1 to Nr) can be determined by means of a relation which is a function of the rank i of the round considered.
  • Rule 4 below is an example of a relation in 1 / (2 n ), where n is a variable function of i.
  • Rule 4 includes Rule 2 with respect to rounds to be protected and includes Rule 3 with respect to rounds that are not to be protected.
  • NRtoP number of rounds to protect
  • Nr-NRtoP Nr-i and N
  • N1 / (2 n )
  • NRtoP number of rounds to protect:
  • n min (i-1, Nr-i)
  • the maximum execution number N1 is equal to 8 for the embodiments CP31 to CP34, CP36, and is equal to 12 for the embodiment CP35.
  • the embodiment designated by the reference CP30 does not implement rule 1 and is not considered to be included in the invention since it provides no advantage in terms of calculation time. It represents the number of round executions that would require a conventional countermeasure consisting of 8 successive executions of the encryption process, which would require 8 * 16 or 128 rounds executions.
  • the column T gives the total number of execution of rounds
  • the column CT gives the calculation time of each embodiment CP31 to CP36 relative to the calculation time of the embodiment CP30, in percentage, or time relative calculation.
  • This relative calculation time CT is equal to the total number of execution of rounds divided by the total number of rounds execution in the case of embodiment CP30, ie (T / 128) * 100.
  • Column G or "Gain time "is the complement to 100 of the relative computation time CT, ie G 100 - CT.
  • the rule 3 is modified so that the number of executions of the "central" rounds is fixed but greater than 1, which corresponds for example to the embodiments CP31 and CP32 where the central rounds are executed two times.
  • Table 3 on page 1 of Annex 1 describes the total number T of round executions as a function of the number of rounds Nr as well as the relative calculation time CT (relative to the embodiment CP30) when the Rule 4 is used to determine the number of executions, and when the number of rounds to be protected NRtoP is equal to 4.
  • FIG. 5 represents the curve CR1 of the total number T of round executions as a function of the number of rounds Nr when the rule 4 is used, and when the number of rounds to be protected NRtoP is equal to 4.
  • the curve takes the form of a straight line and its slope is determined by the NRtoP parameter.
  • the curve CR2 of the total number T of round executions as a function of the number of rounds Nr is also represented in the case of a conventional implementation.
  • Appendix 2 an integral part of the description, which describes executable algorithms as exemplary embodiments of protected encryption methods according to the invention. The sub-round operations that each encryption process performs are recalled in Tables 4 and 5 of Annex 1.
  • the encryption method is executed using a PDES1 algorithm ("Protected DES”) and a PRDES1 algorithm ("Protected Round Protected”) or round algorithm.
  • the PRDES1 round algorithm is a sub-function of the PDES1 algorithm which is called by the latter at each new iteration of the variable i, which forms a round number.
  • a first pair of values (L 0 , Ro) is calculated in step 4 from the message M, after permutation thereof in step 3, for the execution of the first round by the algorithm PRDES1.
  • steps 5, 6, 6.1, 6.2, 7, and 7.1 implement rule 4 described above, and thus determine the number of executions of a round according to its rank and the NRtoP parameter.
  • Steps 6.3 and 7.2 are calls to the round function executed by the PRDES1 algorithm.
  • the cryptography tables C, D, E, F in practice bit strings
  • the random permutation operations the subkey generation, the concatenation operator "
  • the sub-rounds 1 to 4 are included in the loop 13 and are thus repeated each as many times as the number of iterations of the variable j.
  • the variable j has N, values determined by the PDES1 algorithm.
  • the loop 13 only includes a value of j and the sub-rounds are thus executed only once with the sub key corresponding to the correct key K 0 .
  • the random permutation performed in step 12 makes it possible both to select the N, first sub-keys of the set of subkeys SK ,, o to SK Î , NI-I to form a set of subkeys SKj , p0 to SKj, pj for j ranging from 0 to N r 1, where p is an element of rank j in random permutation P.
  • ⁇ , 1; only the correct SKi.o subkey is used (ie the subkey corresponding to the correct KB key).
  • This random permutation also makes it possible to classify the subkeys in a random order for the execution of the loop 13.
  • the algorithm PRDES1 returns the pair of values (L ,, Ri) which is thus a function of the initial pair of values received at the input (L, R ⁇ ), of the number i of the round (which determines the values of the subkeys) and the number N, of execution of the round.
  • the subkeys necessary for the execution of the rounds are generated in advance and are stored in a protected memory. This method requires some memory space, which may not be suitable for some applications,
  • the sub-keys needed for the round are generated on the fly according to the keys or sub-keys of the round immediately previously associated with the key being used. All subkeys are generated in each round, including those whose PRDES1 algorithm does not need to be used when the round is executed a number of times less than the number of keys, so that the PRDES1 algorithm has, for the execution of the next round, of all the previous sub-keys necessary for the generation of the subkeys of the round considered.
  • step 1 The second aforementioned solution has been retained here and appears in step 1 1, where N1 subkeys are generated at each round from the key N1 or subkey N1 generated during the execution of the previous round, independently the number of executions of the round considered and therefore the number of subkeys whose algorithm PRDES1 really needs for the execution of the round.
  • the encryption method according to the invention is here executed using a PTDES algorithm ("TDES Protégé") in Appendix 2 and PDES1 and PRDES1 algorithms described above.
  • the TDES encryption conventionally comprises a first DES encryption step of the message with a first key K, ie DES (M, K), then a reverse encryption step DES "1 , with a second key K ', of the result of the first step or DES "1 (DES (M, K), K '), and finally an encryption step DES, with the first key K, of the result of the second step, that is:
  • the first encryption step DES (step 20) is performed by using the PDES1 algorithm itself is call to the algorithm PRDES1, after having defined the maximum number N1 of execution of rounds and the number of rounds to protect NRtoP
  • the second step of encryption DES "1 can be executed by means of a method DES " 1 conventional no protected against attacks by auxiliary channels (step 21 a), or by means of the algorithm PDES1 "1 , the inverse algorithm of the PDES1 algorithm described in Annex 2 (step 21 b).
  • step 22 the last step of DES encryption (step 22) is protected and is executed using the algorithm PDES1 which itself call to the PRDES1 algorithm, defining the maximum number N1 of round execution and the number of rounds to protect NRtoP Application to AES 128 encryption
  • the example described in Annex 2 concerns the 10-round AES 128, but the invention can also be applied to the 12-round AES 192 and the 14-round AES 256.
  • the method is executed using a PAES1 ("Protected AES") algorithm and a PRAES1 ("Protected AES Round”) algorithm or round algorithm.
  • the PRAES1 algorithm is a sub-function of the PAES1 algorithm which is called by the latter at each new iteration of the round number i.
  • Steps 33, 34, 34.1, 34.2, 35, 35.1 implement the rule 4 described above, and thus determine the number of executions of a round according to its rank and the NRtoP parameter. .
  • Steps 34.3 and 35.2 are calls to the round function performed by the PRAES algorithm.
  • the PRAES1 algorithm executes the sub-round operations described in Table 5 in Appendix 1 (AddRoundKey, SubByte, ShiftRow and MixColumn), as known to those skilled in the art.
  • the structure of the rounds executed by the algorithm PRAES1 is represented in FIG. 6 in the form of a flowchart "AES2".
  • the flow chart AES2 differs from the flow chart AES1 of FIG.
  • the operation AddRoundKey is integrated in the first round RD1, and at the beginning of each following round, so that it implicates, in each next rank round ij a subkey SKi.-i j of rank i-1, j.
  • the AddRoundKey operation is followed by the SubByte, ShiftRow, and MixColumn operations in Rounds RD1 through RD9.
  • the last round RD10 includes two executions of the AddRoundKey operation involving the last two subkeys SK 9 and SKi 0 of the current key of rank j.
  • the operations SubByte and ShiftRow are executed between these two operations.
  • the AddRoundKey, SubByte, ShiftRow sub-rounds are included in the iterative loop 43 and are thus repeated each as many times as the number of iterations of the variable j.
  • the MixColumn operation is also included in the loop 43 for any value of the round number i different from 10.
  • the loop 43.6 is executed when i is equal to 10 and is included in the loop 43 only for the round 10. It includes a next generation of subkeys (step 43.6.1) and the second execution of the AddRoundKey operation (step 43.6.2).
  • the random permutation operation executed in step 42 makes it possible both to select the N, the first subkeys of the set of subkeys SKi, 0 to SKj Ni-1 to form a set of sub-keys.
  • SK iiP o to SK iiPj for j ranging from 0 to Nj-1.
  • This random permutation operation also makes it possible to classify the subkeys in a random order for the execution of the loop 43.
  • the multiple execution of a round includes:
  • FIG. 7 represents an encryption method CP4 according to the invention, for example the DES method.
  • the method CP4 is built on the same model of multiple execution of the rounds that the CP3 process, and differs from it by the fact that only the sub-round SRD3 of each round RD-i, RD 2 RD Nr is executed several times.
  • the method CP4 thus comprises the following steps:
  • the sub-round SRD3 of the round RD- ⁇ is executed N1 times while the other sub-rounds are executed only once with the key K 0 ,
  • This embodiment makes it possible to accelerate the execution time of the encryption process even more, by limiting within the rounds executed several times the number of sub-rounds which are themselves executed several times. It can include the prediction of several independent hardware functions or "hardware modules" each executing a sub-round or a sub-round operation, instead of a single round hardware function containing all sub-rounds.
  • This modularity makes it possible on the one hand to multiply the calls to the sub-functions during a round and to vary the number of these calls according to the round in which one is, but also to define sub-functions usable by several encryption methods.
  • embodiments of the invention provide several hardware accelerators used by several encryption methods, each implementing a sub-round operation.
  • each sub-round SRD1 to SRD4 can be executed by means of a dedicated hardware accelerator.
  • a countermeasure may be provided to protect sub-rounds that are only executed once against auxiliary channel attacks.
  • This countermeasure can in particular be a countermeasure by masking.
  • the SRD1 sub-round, SRD2, SRD4 of RDi round are protected by a random mask U1
  • the SRD1 sub-round, SRD2, SRD4 DR Round 2 are protected by a random mask U2 etc.
  • the sub-rounds SRD1, SRD2, SRD4 of round RD Nr are protected by a random mask LV-
  • the choice of the protection mode of a sub-round, by masking or multiple execution, can be made according to the nature of the operation that includes sub-round.
  • the sub-rounds that include a linear operation and those that include a non-linear operation in the mathematical sense of the term.
  • an operation whose execution rests on a determined table, stored in memory is non-linear.
  • the protected operation produces the same result as the unprotected operation.
  • An attack by analysis DPA or CPA knowing M can make it possible to find the key K by predicting the value S (X,).
  • a masking countermeasure has the drawback of consuming a large memory space in the case of a nonlinear operation, since hiding a table with a plurality of masks requires a large memory space.
  • the same mask is generally used for all the sub-rounds of the round or for all the values of the table, for example an 8-bit mask.
  • Masking is then called "simple order" as opposed to higher order masking, which uses a plurality of random masks.
  • the linear operations are protected by multiple executions, or by multiple order masking, or by single order masking and multiple executions, while the nonlinear operations are preferably protected by single order masking and multiple executions.
  • the sub-round SRD3 is executed several times per round, with a simple order masking
  • the sub-round SRD3 is executed several times per round, with a simple order masking
  • Countermeasure 4 offers a higher level of security than countermeasures 2 and 3 which themselves offer a level of security superior to countermeasure 1.
  • countermeasures 2 and 3 already provide excellent protection.
  • random executions can be added within these operations.
  • the method is executed using a PDES2 algorithm and a PRDES2 round algorithm in Annex 3.
  • the PDES2 algorithm differs from the PDES1 algorithm in that it includes initial steps 54, 55 of generating a first mask U 0 and generating left and right portions U 0, L and U 0, R of the mask, followed by a step 56 of masking the left and right parts Lo, Ro of the message M.
  • step 6.3 of call to the algorithm PRDES1 is replaced by a step 58.3 of call to the algorithm PRDES2
  • step 7.2 of call to the algorithm PRDES1 is replaced by a step 59.2 of call to the PRDES2 algorithm.
  • the round algorithm PRDES2 uses the same operations and has the same sub-rounds as the algorithm PRDES1, but implements the concept of modularity. It receives as input data, as before:
  • the round algorithm PRDES2 additionally receives, as input data, a random mask UM. This is the mask U 0 generated by the algorithm PDES2 in step 54, or the mask UM returned by the previous execution of the algorithm PRDES2, calculated in step 78.
  • Sub-round 1 comprises the Expansive Permutation linear operation and is executed only once in step 75 with multiple-order masking.
  • the sub-round 2 arranged in the iterative loop 76 comprises the linear operation XOR and is executed several times in the step 76.1 with multiple-order masking.
  • the sub-round 3 includes the non-linear operation Substitution is also present in the loop 76 and is executed several times in step 76.3 in unmasked form, preceded by a step of unmasking 76.2.
  • step 76.4 The result of this operation is then masked again in step 76.4.
  • the sub-round 4 which comprises the linear operation XOR is executed only once with multiple-order masking in step 77.
  • a mask U, of rank i for the next round is then calculated at step 78 and an update of the mask U is performed in step 79.
  • the algorithm then returns the result L ⁇ , R ⁇ and the mask Uj.
  • the method is executed using a PAES2 algorithm and a PRAES2 rounding algorithm in Annex 3.
  • the PAES2 algorithm differs from the PAES1 algorithm in that it comprises a step 92 of generating a mask initial random Uo and a step 93 of masking the message M.
  • the step 34.3 of calling the algorithm PRAES1 is replaced by a step 95.3 of calling the algorithm PRAES2 and the step 35.2 of call to the PRAES1 algorithm is replaced by a step 96.2 of calling the PRAES2 algorithm.
  • the final result C is unmasked in step 97 to obtain the encrypted message C.
  • the PRAES2 round algorithm uses the same encryption operations and has the same sub-rounds as the PRAES1 algorithm, but implements the concept of modularity.
  • the sub-round 1 comprising the AddRoundKey linear operation (step 104.1) is included in the iterative loop 104 and is executed multiple times with multi-order masking.
  • the sub-round 2 comprising the non-linear operation SubByte (step 104.3) is executed several times in non-masked form, after a step of unmasking 104.2. The result of this sub-round is then masked again in step 104.4.
  • the sub-round 3 which comprises the linear operation ShiftRow is outside the loop 04 and is executed only once in step 105, with multiple-order masking.
  • the sub-round 4 of the rounds 1 to 9, which includes the linear operation MixColumn (step 106.1) is also outside the loop 104 and is executed only once, with multiple-order masking.
  • Sub-round 4 of round 10 (step 107.3.1) comprising the AddRoundKey linear operation is executed multiple times with multi-order masking within loop 107 after a new generation of subkeys (step 107.1). ) and a step of updating the mask (step 107.2).
  • Embodiments of the invention are generally applicable to any symmetrical block ciphering method comprising rounds.
  • Embodiments of the invention based on the concept of modularity apply to any such process in which each round has a plurality of sub-rounds.
  • Embodiments of an encryption method according to the invention may implement only the second aspect of the invention relating to the modularity of the sub-rounds, without the first aspect of the invention providing a number of executions variable round according to their rank. Such embodiments may therefore comprise an identical number of executions of each round, but a different number of executions of each sub-round within a round executed several times. Sometimes, some sub-rounds being executed once, preferably in masked form, others being executed several times, in masked form or not.
  • a microcircuit configured to execute a method according to the invention is itself capable of various embodiments.
  • the algorithms in Appendix 2 and Appendix 3 can be run by the CPU of the main processor or in part by the CPU and a coprocessor.
  • the PDES1, PDES2, PTDES, PAES1, PAES2 algorithms can be executed by the CPU and the rounding algorithms PRDES1, PRDES2, PRAES1, PRAES2 can be executed by a coprocessor or hardware accelerators.
  • the PRDES2 and PRAES2 algorithms based on the principle of modularity can advantageously be executed by a modular coprocessor or several hardwares in parallel forming the equivalent of a modular coprocessor, allowing the CPU to call the sub-round functions each independently of the other, with or without masking, for single or multiple execution of these functions.
  • FIG. 8 schematically represents an example of an SDV secure device comprising an MCT microcircuit according to the invention, mounted on a CD medium, for example a plastic card.
  • the microcircuit MCT comprises a processor PROC including a central processing unit (CPU), a coprocessor CPROC coupled to the processor, an ICCT communication interface coupled to the processor, a memory MEM1 coupled to the main processor, a random or pseudo-random generator RGEN coupled to the processor main and / or coprocessor.
  • PROC, CPROC, ICCT MEM1, RGEN can be integrated on the same semiconductor chip or, for some, be integrated in different semiconductor chips which are interconnected by a printed circuit or other interconnect medium.
  • the ICCT circuit can be of the contact type (wired communication port) or contactless (NFC interface, Wifi, Bluetooth®, etc.) or both.
  • the message to be encrypted M is received via the communication interface circuit ICCT and the encrypted message C is also communicated externally by the intermediate of this interface circuit.
  • the memory MEM1 may comprise a volatile memory zone and an electrically programmable non-volatile memory zone.
  • the non-volatile program memory may comprise a secure zone comprising a secret key K.
  • the random or pseudo-random generator RGEN is used by the processor or the coprocessor to generate the false keys and / or random masks of the type described above.
  • the coprocessor may be dedicated to executing the rounds of a determined encryption method, or may be of modular type as described above, for the execution of hardware functions allowing the processor to execute the sub-rounds independently of each other. the other.
  • T R PermutationExpansive (T R ) [Sub-round 1]
  • T R SimpleSwitch (T R ) XOR T l [Sub-round 4]
  • W AddRoundKey (W, SKi 0 , pj );
  • R 0 32 weakest bits of M (lower part)
  • T R PermutationExpansive (T R ) [Masked Sub-Round 1]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

The invention relates to a method of symmetric block encryption (CP3) executed by a microcircuit, for transforming a message (M) into an encrypted message (C), on the basis of a secret key (K, Ko), comprising a first round (RD-i), intermediate rounds (RD2, RD|, RDNM) and a last round (RDNr). According to the invention, the method comprises several executions (N1, ΝΝ,) of the first and of the last round, and a number of executions (Ni) of at least one intermediate round (RDj) which is less than the number of executions (N1, ΝΝΓ) of the first and last rounds. Application in particular to DES, triple DES, and AES methods.

Description

PROCEDE DE CHIFFREMENT PROTEGE CONTRE  METHOD OF ENCRYPTION PROTECTED AGAINST
DES ATTAQUES PAR CANAUX AUXILIAIRES  AUXILIARY CHANNEL ATTACKS
La présente invention concerne un procédé de chiffrement par bloc exécuté par un microcircuit et protégé contre des attaques par canaux auxiliaires, pour la transformation d'un message en un message chiffré, à partir d'une clé secrète. The present invention relates to a method of block ciphering executed by a microcircuit and protected against attacks by auxiliary channels, for the transformation of a message into an encrypted message, from a secret key.
La présente invention concerne notamment les circuits intégrés de carte à puce ou les composants cryptographiques matériels intégrés sur les cartes mères des ordinateurs et autres équipements électroniques et informatiques grand public nécessitant des moyens de sécurité (clés USB, décodeurs de chaînes télévisées, consoles de jeu, etc.), dits "TPM" (Trusted Platform Module). The present invention particularly relates to smart card integrated circuits or hardware cryptographic components integrated on the motherboards of computers and other consumer electronic and computer equipment requiring security means (USB sticks, TV channel decoders, game consoles, etc.), known as "TPM" (Trusted Platform Module).
De tels microcircuits sont équipés d'un CPU (unité centrale de traitement) qui comprend généralement un cœur CISC 8 bits ou un cœur RISC 8, 16 ou 32 bits. Certains sont équipés d'un coprocesseur dédié au calcul cryptographique, par exemple un coprocesseur DES (Data Encryption Standard) ou AES (Advanced Encryption Standard). Ils comportent des milliers de portes logiques qui commutent différemment en fonction des opérations exécutées. Ces commutations créent des variations de consommation de courant de courte durée, par exemple de quelques nanosecondes, qui sont mesurables. Notamment, les circuits intégrés de technologie CMOS comprennent des portes logiques qui ne consomment du courant que lors de leur commutation, correspondant au passage à 1 ou à 0 d'un nœud logique. Ainsi, la consommation de courant dépend des données manipulées par le CPU et de ses différents périphériques : mémoire, données circulant sur le bus de données ou d'adresse, coprocesseur cryptographique, etc. Such microcircuits are equipped with a CPU (central processing unit) which generally comprises an 8-bit CISC core or an 8, 16 or 32-bit RISC core. Some are equipped with a coprocessor dedicated to cryptographic computation, for example a DES (Data Encryption Standard) or AES (Advanced Encryption Standard) coprocessor. They have thousands of logical gates that switch differently depending on the operations performed. These switches create variations in current consumption of short duration, for example of a few nanoseconds, which are measurable. In particular, CMOS integrated circuits comprise logic gates that only consume current when they are switched, corresponding to the transition to 1 or 0 of a logical node. Thus, power consumption depends on the data handled by the CPU and its various peripherals: memory, data traveling on the data or address bus, cryptographic coprocessor, etc.
De tels microcircuits sont soumis à des attaques dites par canaux auxiliaires, basées sur l'observation de leur consommation de courant, leur rayonnement magnétique ou électromagnétique. De telles attaques visent à découvrir les données secrètes qu'ils utilisent, notamment leurs clés de cryptographie. Les attaques par canaux auxiliaires les plus répandues mettent en œuvre des méthodes d'analyse statistique telle que l'analyse DPA ("Differential Power Analysis") ou CPA ("Corrélation Power Analysis"). L'analyse DPA permet de retrouver la clé d'un algorithme de cryptographie grâce à l'acquisition de nombreuses courbes de consommation du circuit. L'analyse CPA se base sur un modèle linéaire de consommation de courant et consiste à calculer un coefficient de corrélation entre, d'une part, les points de consommation mesurée qui forment les courbes de consommation capturées et, d'autre part, une valeur estimée de consommation, calculée à partir du modèle de consommation linéaire et d'une hypothèse sur l'opération qu'exécute le microcircuit et sur la valeur de la clé de cryptographie. Such microcircuits are subjected to so-called auxiliary channel attacks, based on the observation of their current consumption, their magnetic or electromagnetic radiation. Such attacks are aimed at discovering the secret data they use, including their cryptography keys. The most common auxiliary channel attacks implement statistical analysis methods such as DPA ("Differential Power Analysis") or CPA ("Correlation Power Analysis") analysis. The DPA analysis makes it possible to find the key of a cryptographic algorithm thanks to the acquisition of numerous consumption curves of the circuit. The CPA analysis is based on a linear model of current consumption and consists in calculating a correlation coefficient between, on the one hand, the measured consumption points which form the captured consumption curves and, on the other hand, a value consumption estimate, calculated from the linear consumption model and a hypothesis on the operation performed by the microcircuit and on the value of the cryptographic key.
Afin de protéger de tels microcircuits et les procédés de chiffrement qu'ils exécutent contre de telles attaques par canaux auxiliaires, des contre-mesures sont généralement prévues. Les contre-mesures les plus généralement mises en œuvre sont le masquage ou l'exécution multiple. Une contre-mesure par masquage utilise un masque aléatoire (nombre binaire) qui est combiné à la clé et/ou au message pendant l'exécution du procédé de chiffrement. Ce type de contre-mesure est efficace mais nécessite un coprocesseur spécialement prévu pour sa mise en œuvre, dans le cas d'une exécution par un coprocesseur, ou un programme d'une plus grande complexité, dans le cas d'une exécution par le CPU du microcircuit. In order to protect such microcircuits and the encryption methods they perform against such auxiliary channel attacks, countermeasures are generally provided. The most commonly used countermeasures are masking or multiple execution. A masking countermeasure uses a random mask (binary number) that is combined with the key and / or message during the execution of the encryption process. This type of countermeasure is effective but requires a coprocessor specially designed for its implementation, in the case of execution by a coprocessor, or a program of greater complexity, in the case of execution by the CPU of the microcircuit.
Une contre-mesure par exécution multiple peut au contraire être mise en oeuvre avec un coprocesseur conventionnel ne comportant pas de moyens de contre-mesure. Elle consiste simplement à exécuter le procédé de chiffrement plusieurs fois au moyen de fausses clés. A cet effet, on prévoit par exemple un programme de contre-mesure qui contrôle le programme de chiffrement ou le coprocesseur, et lui fait exécuter le procédé de chiffrement plusieurs fois avec les fausses clés, de sorte que l'exécution du procédé de chiffrement avec la bonne clé (i.e. la clé authentique) est "noyée" dans un ensemble d'exécutions factices. La présente invention concerne plus particulièrement les contre-mesures par exécution multiple appliquées aux procédés de chiffrement par bloc de type symétrique comme les procédés DES, TDES et AES. Ces contre-mesures classiques seront mieux comprises après avoir rappelé la structure de ces procédés de chiffrement. On the contrary, a multiple execution countermeasure can be implemented with a conventional coprocessor that does not include countermeasure means. It simply consists in executing the encryption process several times by means of false keys. For this purpose, for example, there is provided a countermeasure program which controls the encryption program or the coprocessor, and makes it execute the encryption process several times with the false keys, so that the execution of the encryption process with the right key (ie the authentic key) is "drowned" in a set of dummy executions. The present invention more particularly relates to multiple execution countermeasures applied to symmetric type block ciphering methods such as the DES, TDES and AES methods. These classic countermeasures will be better understood after recalling the structure of these encryption methods.
La figure 1A montre schématiquement l'architecture d'un procédé de chiffrement par bloc CP1. Le procédé est symétrique, ce qui signifie qu'il utilise la même clé secrète pour le chiffrement ou le déchiffrement. Le procédé reçoit en entrée un message M et une clé secrète K, et fournit un message chiffré C. Il comporte Nr rondes RDi,FIG. 1A schematically shows the architecture of a block ciphering method CP1. The process is symmetric, which means that it uses the same secret key for encryption or decryption. The method receives as input a message M and a secret key K, and provides an encrypted message C. It comprises Nr round RDi,
2....RD RDNr-i, RD r exécutées successivement. Entre la première ronde RDi et la dernière ronde RDN,-, le procédé comprend des rondes intermédiaires RD2,... RD,,... RDN - Le procédé peut aussi comprendre une opération initiale IO visant à préparer le message avant l'exécution des rondes, au moyen d'une première fonction de transformation, et une opération finale FO visant à transformer le résultat de la dernière ronde au moyen d'une seconde fonction de transformation, pour obtenir le message chiffré C. 2 ... RD RD Nr- i, RD r executed successively. Between the first round RDi and the last round RDN, -, the method comprises intermediate rounds RD 2 , ... RD ,, ... RDN - The method may also include an initial operation IO to prepare the message before the execution of the rounds, by means of a first transformation function, and a final operation FO to transform the result of the last round by means of a second transformation function, to obtain the encrypted message C.
Chaque ronde RD, (i étant considéré ici comme un indice allant de 1 à Nr) utilise généralement une sous-clé SK, dérivée de la clé K ou dérivée de la sous-clé utilisée par la ronde précédente. Chaque ronde fournit à la ronde suivante un résultat intermédiaire secret qui n'est pas accessible à un attaquant, ce résultat étant par exemple stocké temporairement dans une mémoire protégée. Ainsi, la première ronde RD1 reçoit comme donnée d'entrée le message M ou une donnée issue de la transformation message par l'opération initiale IO, et fournit un premier résultat intermédiaire secret à la ronde suivante RD2. Chaque ronde intermédiaire RD, reçoit comme donnée d'entrée le résultat intermédiaire secret fournit par la ronde précédente, et fournit un résultat intermédiaire secret à la ronde suivante. La dernière ronde reçoit comme donnée d'entrée le résultat intermédiaire secret fournit par l'avant- dernière ronde RDN et fournit un résultat final formant le message chiffré C ou formant le message chiffré après transformation par l'opération finale FO. Each round RD, (i being considered here as an index ranging from 1 to Nr) generally uses a subkey SK, derived from the key K or derived from the subkey used by the previous round. Each round provides the next round a secret intermediate result that is not accessible to an attacker, this result being for example stored temporarily in a protected memory. Thus, the first round RD 1 receives, as input data, the message M or a data item resulting from the message transformation by the initial operation I0, and provides a first secret intermediate result to the next round RD 2 . Each intermediate round RD, receives as input the secret intermediate result provided by the previous round, and provides a secret intermediate result to the next round. The last round receives as input the intermediate secret result provided by the last round RDN and provides a final result forming the encrypted message C or forming the encrypted message after transformation by the final operation FO.
Le nombre de rondes est prédéterminé par des normes, et est par exemple égal à 16 dans le cas du procédé DES, 48 dans le cas du procédé TDES, 10 dans le cas du procédé AES 128, 12 dans le cas du procédé AES 192 et 14 dans le cas du procédé AES 256. De même, les normes définissent la structure des rondes, c'est-à-dire les opérations de chiffrement qu'elles comportent. Comme illustré schématiquement sur la figure 1 B, chaque ronde RD, comporte généralement des sous-rondes SRD1 , SRD2,.... SRDn. Par exemple, chaque ronde RD, du procédé DES comprend quatre sous-rondes PermutationExpansive, OU Exclusif, Substitution, et PermutationSimple. The number of rounds is predetermined by standards, and is for example equal to 16 in the case of the DES process, 48 in the case of the TDES process, 10 in the case of the AES 128 process, 12 in the case of the AES 192 process and 14 in the case of the AES 256 method. Similarly, the standards define the structure of the rounds, that is to say the encryption operations they comprise. As illustrated schematically in FIG. 1B, each RD round generally comprises sub-rounds SRD1, SRD2, .... SRD n . For example, each RD round of the DES process includes four PermutationExpansive, OR Exclusive, Substitution, and SimpleSwap sub-rounds.
Comme autre exemple, la figure 2 représente sous la forme d'un organigramme "AES1 " la structure classique d'un procédé de chiffrement AES. Le procédé comprend une opération initiale 10 comprenant l'opération "AddRoundKey" (addition de clé) utilisant une première sous-clé SK0, neuf rondes RD, (RD† à RD9) utilisant neuf autres sous-clés SK, et comprenant chacune quatre sous-rondes "SubBytes", "ShiftRows", "MixColumns" et "AddRoundKey", et une dernière ronde RDi0 comprenant trois sous- rondes "SubBytes", "ShiftRow" et "AddRoundKey" utilisant une dixième sous-clé SK 0. As another example, FIG. 2 represents in the form of a flowchart "AES1" the classical structure of an AES encryption method. The method comprises an initial operation comprising the operation "AddRoundKey" using a first sub-key SK 0 , nine rounds RD, (RD † to RD 9 ) using nine other sub-keys SK, and each comprising four sub-rounds "SubBytes", "ShiftRows", "MixColumns" and "AddRoundKey", and one last round RDi 0 including three sub-rounds "SubBytes", "ShiftRow" and "AddRoundKey" using a tenth sub-key SK 0 .
La figure 3 représente schématiquement un exemple de procédé CP2 protégé contre les attaques par canaux auxiliaires par la technique d'exécution multiple. Le procédé comporte une étape initiale de génération de N1 -1 fausses clés Ki, K2, KNi-i , la bonne clé K étant par exemple la clé K0. Le procédé CP2 comprend N1 exécutions du procédé CP1 de la figure 1 . Le procédé CP1 est exécuté une première fois avec la clé K0, puis avec la première fausse clé Ki , puis la seconde fausse clé K2, etc. jusqu'à la N1 ème exécution avec la fausse clé KNI-I . Chaque exécution fournit un résultat Co, CI , ...CNI-I à partir de la clé correspondante et du message M. Un seul de ces résultats est valable et les autres sont factices. L'ordre dans lequel les clés sont utilisées est aléatoire (l'ordre régulier montré sur la Fig. 3 n'étant qu'un exemple) de sorte qu'un attaquant ne sait pas quelle est l'exécution qui utilise la bonne clé. FIG. 3 schematically represents an example of method CP2 protected against attacks by auxiliary channels by the multiple execution technique. The method comprises an initial step of generating N1 -1 false keys K 1 , K 2 , K N ii, the correct key K being for example the key K 0 . The method CP2 comprises N1 executions of the method CP1 of FIG. The CP1 process is executed a first time with the key K 0 , then with the first false key Ki, then the second false key K 2 , etc. until the N1 th execution with the KNI-I key. Each execution provides a result Co, CI, ... CNI-I from the corresponding key and message M. Only one of these results is valid and the others are dummy. The order in which the keys are used is random (the regular order shown in Fig. 3 being just an example) so that an attacker does not know which run uses the correct key.
Cette solution présente toutefois l'inconvénient d'être pénalisante en termes de temps d'exécution du procédé de chiffrement. Les multiples exécutions du procédé de chiffrement CP1 ralentissent fortement le temps de fourniture du résultat même lorsque l'on dispose d'un processeur ou un coprocesseur rapide. Ainsi, par exemple, lorsque N1 =8, la contre-mesure nécessite l'exécution de 128 rondes pour un procédé DES et de 384 rondes pour un procédé TDES. Si N1 =32, la contre-mesure nécessite l'exécution de 512 rondes pour un procédé DES et de 1536 rondes pour un procédé TDES. However, this solution has the disadvantage of being penalizing in terms of the execution time of the encryption method. The multiple executions of the CP1 encryption method greatly slow the time of providing the result even when a processor or a fast coprocessor is available. Thus, for example, when N1 = 8, the countermeasure requires the execution of 128 rounds for a DES process and 384 rounds for a TDES process. If N1 = 32, the countermeasure requires the execution of 512 rounds for a DES process and 1536 rounds for a TDES process.
Il pourrait donc être souhaité de prévoir un procédé de chiffrement incluant une contre- mesure par exécution multiple qui nécessite un moindre temps de calcul tout en offrant une bonne protection contre des attaques par canaux auxiliaires. It may therefore be desirable to provide an encryption method including a multi-execution countermeasure which requires less computation time while offering good protection against attacks by auxiliary channels.
Des modes de réalisation de l'invention concernent un procédé de chiffrement symétrique exécuté par un microcircuit, pour la transformation d'un message en un message chiffré, à partir d'une clé secrète, comprenant une première ronde, des rondes intermédiaires et une dernière ronde, comprenant plusieurs exécutions de la première et de la dernière ronde, respectivement à partir de la clé secrète et d'un premier ensemble de fausses clés, et un nombre d'exécutions d'au moins une ronde intermédiaire inférieur au nombre d'exécutions de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés inclus dans le premier ensemble de fausses clés. Embodiments of the invention relate to a symmetric encryption method executed by a microcircuit, for transforming a message into an encrypted message, from a secret key, comprising a first round, intermediate rounds and a last round, comprising several executions of the first and last round, respectively from the secret key and a first set of false keys, and a number of executions of at least one intermediate round less than the number of executions of the first and last rounds, respectively from the secret key and a set of false keys included in the first set of false keys.
Selon un mode de réalisation, le procédé comprend une deuxième ronde, une avant- dernière ronde et plusieurs rondes intermédiaires, les deux première rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires, et les deux dernières rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires. According to one embodiment, the method comprises a second round, a penultimate round and several intermediate rounds, the first two rounds are executed a greater number of times than the intermediate rounds, and both last rounds are executed more times than the intermediate rounds.
Selon un mode de réalisation, le procédé ne comprend qu'une seule exécution d'au moins une ronde intermédiaire. According to one embodiment, the method comprises only one execution of at least one intermediate round.
Selon un mode de réalisation, le procédé comprend, pour un nombre déterminé de rondes successives à partir de la première, un nombre d'exécutions des rondes décroissant selon une règle de décroissance qui est fonction du rang des rondes considérées relativement à la première ronde, puis, pour un nombre déterminé de rondes successives jusqu'à la dernière, un nombre d'exécutions des rondes croissant selon une règle de croissance qui est fonction du rang des rondes considérées relativement à la dernière ronde. Selon un mode de réalisation, la règle de décroissance est une règle en 1/(2n), n étant un paramètre fonction du rang des rondes considérées relativement à la première ou à la dernière ronde. According to one embodiment, the method comprises, for a determined number of successive rounds starting from the first, a number of executions of the decreasing rounds according to a rule of decay which is a function of the rank of the rounds considered relative to the first round, then, for a given number of successive rounds until the last one, a number of executions of the rounds growing according to a rule of growth which is function of the rank of the rounds considered relative to the last round. According to one embodiment, the decay rule is a rule in 1 / (2n), where n is a parameter depending on the rank of the rounds considered relative to the first or the last round.
Selon un mode de réalisation, chaque ronde comprend des sous-rondes, et l'exécution multiple de chaque ronde comprend l'exécution multiple de chaque sous-ronde de la ronde. According to one embodiment, each round includes sub-rounds, and the multiple execution of each round includes the multiple execution of each sub-round of the round.
Selon un mode de réalisation, chaque ronde comprend des sous-rondes, et l'exécution multiple d'une ronde comprend l'exécution multiple d'au moins une sous-ronde, et une seule exécution d'au moins une autre sous-ronde. According to one embodiment, each round includes sub-rounds, and the multiple execution of a round includes the multiple execution of at least one sub-round, and a single run of at least one other sub-round .
Selon un mode de réalisation, l'exécution unique de la sous-ronde est une exécution masquée en ordre simple ou multiple. Selon un mode de réalisation, l'exécution multiple de la sous-ronde est une exécution masquée en ordre simple. According to one embodiment, the single execution of the sub-round is a masked execution in single or multiple order. According to one embodiment, the multiple execution of the sub-round is a masked execution in simple order.
Selon un mode de réalisation, le procédé est conforme aux spécifications DES, triple DES, ou AES. According to one embodiment, the method complies with the DES, triple DES, or AES specifications.
Des modes de réalisation de l'invention concernent également un microcircuit configuré pour exécuter un procédé de chiffrement symétrique, permettant de transformer un message en un message chiffré, à partir d'une clé secrète, le procédé comprenant une première ronde, des rondes intermédiaires, et une dernière ronde, le microcircuit étant configuré pour exécuter plusieurs fois la première et la dernière ronde, respectivement à partir de la clé secrète et d'un premier ensemble de fausses clés, et pour exécuter au moins une ronde intermédiaire un nombre de fois inférieur au nombre d'exécutions de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés inclus dans le premier ensemble de fausses clés. Embodiments of the invention also relate to a microcircuit configured to execute a symmetric encryption method, making it possible to transform a message into an encrypted message, from a secret key, the method comprising a first round, intermediate rounds, and a last round, the microcircuit being configured to execute several times the first and the last round, respectively from the secret key and a first set of false keys, and to execute at least one intermediate round a number of times lower the number of executions of the first and last rounds, respectively from the secret key and a set of false keys included in the first set of false keys.
Selon un mode de réalisation, le microcircuit est configuré pour n'exécuter qu'une fois au moins une ronde intermédiaire. According to one embodiment, the microcircuit is configured to execute only once at least one intermediate round.
Selon un mode de réalisation, le microcircuit est configuré pour exécuter des rondes comprenant des sous-rondes, et pour exécuter le même nombre de fois toutes les sous-rondes d'une ronde, lors d'une exécution multiple d'une ronde. Selon un mode de réalisation, le microcircuit est configuré pour exécuter des rondes comprenant des sous-rondes, et pour n'exécuter qu'une fois au moins une sous-ronde et exécuter plusieurs fois une autre sous-ronde, lors d'une exécution multiple d'une ronde. Selon un mode de réalisation, le microcircuit comprend un coprocesseur modulaire configuré pour exécuter individuellement des opérations de chiffrement comprises dans des sous-rondes. Des modes de réalisation de procédés de chiffrement et d'un microcircuit selon l'invention seront décrits dans ce qui suit en se référant à titre non limitatif aux figures jointes, parmi lesquelles : According to one embodiment, the microcircuit is configured to execute rounds comprising sub-rounds, and to execute the same number of times all the sub-rounds of a round, during a multiple execution of a round. According to one embodiment, the microcircuit is configured to execute rounds comprising sub-rounds, and to execute only once at least one sub-round and execute several times another sub-round, during an execution. multiple of a round. According to one embodiment, the microcircuit comprises a modular coprocessor configured to execute individually encryption operations included in sub-rounds. Embodiments of encryption methods and a microcircuit according to the invention will be described in the following with reference to nonlimiting reference to the appended figures, among which:
- la figure 1A précédemment décrite représente la structure d'un procédé de chiffrement par rondes classiques,  FIG. 1A previously described represents the structure of a conventional round ciphering method,
- la figure 1 B précédemment décrite représente la structure d'une ronde du procédé de la figure 1 , FIG. 1B previously described represents the structure of a round of the process of FIG.
- la figure 2 précédemment décrite représente la structure d'un procédé de chiffrement AES classique,  FIG. 2 previously described represents the structure of a conventional AES encryption method,
- la figure 3 précédemment décrite représente la structure d'un procédé de chiffrement classique protégé contre des attaques par canaux auxiliaires,  FIG. 3 previously described represents the structure of a conventional encryption method protected against attacks by auxiliary channels,
- la figure 4 représente la structure d'un mode de réalisation d'un procédé de chiffrement selon l'invention,  FIG. 4 represents the structure of an embodiment of an encryption method according to the invention,
- la figure 5 illustre un avantage du procédé de la figure 4,  FIG. 5 illustrates an advantage of the method of FIG. 4,
- la figure 6 représente la structure d'un procédé de chiffrement AES selon l'invention, - la figure 7 représente la structure d'un autre mode de réalisation d'un procédé de chiffrement selon l'invention, et  FIG. 6 represents the structure of an AES encryption method according to the invention; FIG. 7 represents the structure of another embodiment of an encryption method according to the invention, and
- la figure 8 représente un mode de réalisation d'un microcircuit sécurisé selon l'invention. Des modes de réalisation de l'invention incluent la constatation que toutes les rondes d'un procédé de chiffrement symétrique ne nécessitent pas le même niveau de protection contre des attaques par canaux auxiliaires. Les rondes plus exposées à ce type d'attaque et notamment à une attaque par analyse DPA ou CPA sont tout d'abord la première ronde et la dernière ronde. En effet, une analyse DPA ou CPA ne peut être conduite contre une ronde que si une donnée d'entrée ou de sortie de la ronde est connue de l'attaquant, la clé étant l'objet de l'attaque. FIG. 8 represents an embodiment of a secure microcircuit according to the invention. Embodiments of the invention include the finding that all rounds of a symmetric encryption method do not require the same level of protection against aux channel attacks. The rounds most exposed to this type of attack and especially to an attack by DPA or CPA analysis are first of all the first round and the last round. Indeed, a DPA or CPA analysis can not be conduct against a round only if an entry or exit data of the round is known to the attacker, the key being the object of the attack.
Or, en référence à la figure 1A précédemment décrite, la première ronde RD-i reçoit une donnée d'entrée qui est connue d'un attaquant. Il s'agit du message M ou une donnée issue de la transformation du message par l'opération initiale IO. L'opération initiale étant également connue de l'attaquant car décrite par des normes applicables, la donnée d'entrée peut être calculée à partir du message si elle n'est pas le message lui-même. De même, la dernière ronde RDNr fournit un résultat connu de l'attaquant. Il s'agit du message chiffré C ou d'une donnée dont le message chiffré C est issu, après transformation de la donnée par l'opération finale FO. Comme l'opération finale est également connue de l'attaquant, cette donnée peut être retrouvée à partir du message chiffré C, au moyen de la fonction inverse de la fonction utilisée par l'opération finale FO. Ainsi, une attaque sur les rondes intermédiaires, en particulier à partir de la troisième ronde ou l'avant-avant-demière ronde, est d'une trop grande complexité pour être envisageable aujourd'hui sans une attaque préalable sur les deux premières ou deux dernières rondes. However, with reference to FIG. 1A previously described, the first round RD-i receives input data that is known to an attacker. This is the message M or data resulting from the transformation of the message by the initial operation IO. The initial operation is also known to the attacker because described by applicable standards, the input data can be calculated from the message if it is not the message itself. Similarly, the last round RD Nr provides a result known to the attacker. This is the encrypted message C or data whose encrypted message C is issued, after transformation of the data by the final operation FO. Since the final operation is also known to the attacker, this data can be retrieved from the encrypted message C, by means of the inverse function of the function used by the final operation FO. Thus, an attack on the intermediate rounds, especially from the third round or before-before-last round, is too complex to be possible today without a prior attack on the first two or two last rounds.
Des modes de réalisation de l'invention se rapportent ainsi à un procédé de chiffrement dans lequel le nombre d'exécutions des rondes intermédiaires RD, (RD2, RD3, ... RDj, RDN ) est inférieur au nombre d'exécutions de la première et la dernière ronde, afin de réduire le nombre total d'exécutions de rondes et réduire le temps total d'exécution du procédé de chiffrement. Dans des modes de réalisation, la seconde et l'avant-dernière rondes RD2, RDN sont considérées comme plus exposées à des d'attaques que d'autres rondes intermédiaires, et sont exécutées un plus grand nombre de fois que les autres rondes intermédiaires. Dans encore d'autres modes de réalisation, des rondes intermédiaires "centrales" (i.e. les plus éloignées de la première et la dernière ronde) ne sont exécutées qu'une fois. A titre d'exemple, la figure 4 montre schématiquement la structure d'un procédé de chiffrement par bloc CP3 selon l'invention, de type symétrique, protégé contre des attaques par canaux auxiliaires. De façon en soi classique, le procédé fournit un message chiffré C, à partir d'un message M et d'une clé secrète K, et comporte Nr rondes RD-i, RD2l... RD,... RDNr-i, RDNr- Le procédé peut comprendre une opération initiale IO visant à préparer le message M avant l'exécution des rondes, et une opération finale FO visant à transformer le résultat de la dernière ronde au moyen d'une fonction de transformation connue, pour obtenir le message chiffré C. Il comprend également une étape initiale de génération de N1 -1 fausses clés K-i, K2,..., KNI-I en sus de la clé secrète K. La clé K est par exemple considérée comme la clé de rang 0 (K0=K). Le procédé utilise ainsi un ensemble initial de N1 clés Kj (K0, Κ-ι, K2,..., KNI-I) dans lequel seule la clé Ko est authentique. Embodiments of the invention thus relate to an encryption method in which the number of executions of the intermediate rounds RD, (RD2, RD3, ... RDj, RDN) is smaller than the number of executions of the first and the last round, to reduce the total number of round runs and reduce the overall execution time of the encryption process. In embodiments, the second and second-last rounds RD 2 , RD N are considered more exposed to attack than other intermediate rounds, and are executed more times than other rounds. intermediate. In still other embodiments, "central" intermediate rounds (ie those furthest away from the first and last rounds) are executed only once. By way of example, FIG. 4 schematically shows the structure of a block encryption method CP3 according to the invention, of symmetrical type, protected against attacks by auxiliary channels. In a conventional manner, the method provides an encrypted message C, from a message M and a secret key K, and comprises Nr rounds RD-i, RD 2l ... RD, ... RD Nr - i, RDNr- The method may comprise an initial operation IO for preparing the message M before the execution of the rounds, and a final operation FO for transforming the result of the last round by means of a known transformation function, for obtain the encrypted message C. It also comprises an initial step of generating N1 -1 false keys Ki, K 2 , ..., KNI-I in addition to the secret key K. The key K is for example considered as the key of rank 0 (K 0 = K). The method thus uses an initial set of N1 keys Kj (K 0 , Κ-ι, K 2 , ..., KNI-I) in which only the key Ko is authentic.
Selon l'invention, le procédé CP3 comprend les étapes suivantes : According to the invention, the method CP3 comprises the following steps:
- la ronde RDi est exécutée N1 fois au moyen de N1 sous-clés SK- (SK-i,0, SKi,i, SK-1 ,2, ... , SK-I ,NI-I) générées à partir de l'ensemble initial de N1 clés Kj (K0, KL K2,..., KNM ), the round RDi is executed N1 times by means of N1 subkeys SK- (SK-i, 0 , SKi , i, SK-1, 2, ..., SK-I, NI-I) generated from the initial set of N1 keys Kj (K 0 , KL K 2 , ..., KNM),
- la ronde RD2 est exécutée N2 fois, avec N2 < N1 , au moyen de N2 sous-clés SK2 j (SK2,o, SK2,-I , SK2 2, ... , SK2 N2-i) générées à partir d'un sous-ensemble de N2 clés Kj (Ko, Ki, K2,..., KN2-I) qui est inclus dans l'ensemble initial de N1 clés, the round RD 2 is executed N2 times, with N2 <N1, by means of N2 subkeys SK 2 j (SK 2 , o, SK 2 , -I, SK 2 2 , ..., SK 2 N 2 -i ) generated from a subset of key N2 K j (Ko, Ki, K 2 , ..., KN 2 -I) which is included in the initial set of key N1,
- etc.,  - etc.,
- la ronde RD, est exécutée N, fois, avec N, < , Ν étant le nombre d'exécutions de la ronde précédente, au moyen de N, sous-clés SKg (SKii0, βΚ,,ι, SKi,2,..., SKi,Ni-i) générées à partir d'un ensemble de N, clés Kj (Ko, K-i, K2,..., KNM) qui est inclus dans l'ensemble initial de N1 clés, the round RD, is executed N, times, with N, <, Ν being the number of executions of the preceding round, by means of N, subkeys SKg (SK ii0 , βΚ ,, ι, SKi, 2 , ..., SKi, N ii) generated from a set of N, keys K j (Ko, Ki, K 2 , ..., KNM) which is included in the initial set of N1 keys,
- etc.,  - etc.,
- la ronde RDNr-i est exécutée NNr-i fois, avec NNr-i ≥ NNR-2, NNr-2 étant le nombre d'exécutions de la ronde précédente, au moyen de NN sous-clés SKNr-i,j (SKNr-i,o> SKNr-i,i, SKNr-i,2 SK(Nr-1 ,NNr-i-1 ) générées à partir d'un ensemble de NN clés Kj (K0, Ki, K2,..., K(NN -1 )) qui est inclus dans l'ensemble initial de N1 clés, et - la dernière ronde RDNr est exécutée NNr fois, avec ΝΝΓ≥ NNr-i, au moyen de ΝΝγ sous- clés SKNr,j (SKNr,o, SKNr,i , SKNr,2,- . -> SK(Nr,NNr1 )) générées à partir d'un ensemble de ΝΝΓ clés Kj (K0, Κ-ι, K2 K(NN )) qui est inclus dans l'ensemble initial de N1 clés. La relation entre le nombre d'exécutions de chaque ronde RD, est régie par une première règle de contre-mesure, qui peut être formalisée de la manière indiquée ci- après, référence étant faite à des rondes RD-ι, RD2, RD3, RD )... RD RDNr-3> RDNr-2,the round RD Nr- i is executed N Nr -i times, with N Nr -i ≥ N NR -2, N Nr-2 being the number of executions of the previous round, by means of N N sub-keys SK Nr -i, j (SK Nr- i, o > SK Nr -i, i, SK Nr -i, 2 SK (Nr-1, N Nr -i-1) generated from a set of NN keys Kj (K 0 , K 1 , K 2 , ..., K (N N -1)) which is included in the initial set of N 1 keys, and the last round RD Nr is executed N Nr times, with ΝΝ Γ ≥ N Nr -i, by means of ΝΝ γ subkeys SK Nr , j (SK Nr , o, SK Nr , i, SKNr, 2, -. - > SK (Nr, NNr1)) generated from a set of ΝΝ Γ keys Kj (K 0 , Κ-ι, K 2 K (NN)) which is included in the initial set of N1 keys. The relationship between the number of executions of each RD round is governed by a first countermeasure rule, which can be formalized in the manner indicated below, reference being made to rounds RD-ι, RD 2 , RD 3 , RD ) ... RD RD Nr -3 > RD Nr -2,
RDNr-i , RDNr dont certaines ne sont pas représentées sur la figure 4 : Règle 1 : RD Nr- i, RDNr some of which are not shown in Figure 4: Rule 1:
- N1 > N2 > N3 > N4... > Ni avec au moins N1 > N2 ou N2 > N3, - N1> N2> N3> N4 ...> Ni with at least N1> N2 or N2> N3,
- NNr≥ NN ≥ ΝΝΓ-2-≥ ΝΝΓ-3■·■≥ i avec au moins NNr > NNr-i ou NNr-i > NNr-2- Exemples : - N N ≥ NN ≥ ΝΝΓ-2-≥ ΝΝΓ-3 ■ ■ ■ ≥ i with at least N Nr > N Nr -i or N Nr- i> N Nr -2- Examples:
- N1 > N2 > N3 > N4 ... > Ni et NNr > NNr-1 > NNr-2≥ NNr-3 ... > Ni - N1>N2>N3> N4 ...> Ni and N Nr > N Nr-1 > N Nr - 2 ≥ N Nr-3 ...> Ni
- N1 = N2 > N3 > N4 ... > Ni et NNr = NNr-i > NNr-2. >. NNr-3 ... > Ni - N1 = N2>N3> N4 ...> Ni and N Nr = N Nr -i> N Nr-2 . >. N Nr-3 ...> Ni
- N1 > N2 = N3 > N4 ... > Ni et NNr > NN = NNr-2.≥ NNr-3 -≥ Ni - N1> N2 = N3> N4 ...> Ni and N Nr > N N = N Nr -2.≥ N Nr -3 -≥ Ni
- N1 > N2 > N3 = N4 ... = Ni et NNr > NNr-1 > NNr-2.= NNr-3 ... = Ni - N1>N2> N3 = N4 ... = Ni and N Nr > N Nr-1 > N Nr - 2 = N Nr-3 ... = Ni
Dans certains modes de réalisation, la répartition du nombre d'exécutions pourrait être différente sur les premières et dernières rondes, par exemple : In some embodiments, the distribution of the number of executions could be different on the first and last rounds, for example:
- N1 > N2 > N3 > N4 ... > Nj et NNr = NN > NNr-2≥ NNr-3 ... > Ni Selon une seconde règle de contre-mesure, optionnelle, définissant une sorte de "symétrie" du procédé relativement à des rondes centrales, le nombre d'exécutions de la dernière ronde est égal au nombre d'exécutions de la première ronde, le nombre d'exécutions de la deuxième ronde est égal au nombre d'exécutions de l'avant- dernière ronde, et ainsi de suite jusqu'à une certaine "distance" des première et dernière rondes. Cette règle peut être formalisée de la manière indiquée ci-après. Règle 2 - N1>N2>N3> N4 ...> Nj and N Nr = NN> N Nr -2≥ N Nr-3 ...> Ni According to a second rule of countermeasure, optional, defining a kind of "symmetry of the process in relation to central rounds, the number of performances in the last round is equal to the number of performances in the first round, the number of performances in the second round is equal to the number of performances in front - last round, and so on until a certain "distance" of the first and last rounds. This rule can be formalized in the manner indicated below. Rule 2
Si i < Is, alors N, = NNr-i+i, If i <Is, then N, = N Nr -i + i,
Is étant un seuil définissant la "distance" d'une ronde relativement aux première et dernière rondes. Is being a threshold defining the "distance" of a round relative to the first and last rounds.
Exemple : Example:
- N1 = NNr - N1 = N Nr
- N2 = NN - N2 = NN
- N3 = NNr-2 - N3 = N Nr-2
- etc. jusqu'au seuil Is.  - etc. to the threshold Is.
Le seuil Is peut être choisi supérieur au nombre de rondes pour obtenir une symétrie totale du procédé en ce qui concerne le nombre d'exécution des rondes, relativement aux rondes centrales. The threshold Is can be chosen greater than the number of rounds to obtain a total symmetry of the process with regard to the number of execution of the rounds, relative to the central rounds.
Selon une troisième règle de contre-mesure, également optionnelle, désignée "règle 3", l'exécution de certaines rondes intermédiaires n'est pas répétée, notamment celle des rondes centrales. Pour la mise en œuvre de cette règle, on définit un nombre de rondes à protéger relativement à la première et à la dernière ronde, désigné "NRtoP". Le nombre de rondes à protéger représente le nombre de rondes devant être exécutées plusieurs fois. Les rondes qui n'appartiennent pas au groupe des rondes à protéger sont considérées comme des rondes "centrales" et ne sont exécutées qu'une fois, avec la bonne clé Ko (i.e. la clé authentique). La règle 3 peut être formalisée comme indiqué ci-après. According to a third rule of countermeasure, also optional, designated "Rule 3", the execution of certain intermediate rounds is not repeated, in particular that of the central rounds. For the implementation of this rule, we define a number of rounds to protect relative to the first and last round, designated "NRtoP". The number of rounds to be protected represents the number of rounds to be executed several times. Rounds that do not belong to the group of rounds to be protected are considered as "central" rounds and are executed only once, with the correct key Ko (ie the authentic key). Rule 3 can be formalized as indicated below.
Règle 3 : Rule 3:
NRtoP = nombre de rondes à protéger  NRtoP = number of rounds to protect
Si i > NRtoP et i < Nr-NRtoP, alors Νρ1 Exemple numérique dans le cas d'un procédé de chiffrement comprenant 16 rondes RDi à RD16 (Nr=16) : If i> NRtoP and i <Nr-NRtoP, then Νρ1 Numeric example in the case of an encryption method comprising 16 rounds RDi to RD 16 (Nr = 16):
NRtoP = 3 (i.e. 3 rondes à protéger),  NRtoP = 3 (i.e. 3 rounds to protect),
Si i > 3 et i < 16-3 (soit i < 13), alors N,=1  If i> 3 and i <16-3 (ie i <13), then N, = 1
Dans ce cas, les rondes RD4, RD5, RD6, RD7, RD8, RD9, RD10, RDn, RDi2, RD13 ne sont exécutées qu'une fois. Dans certains modes de réalisation, le nombre d'exécutions N, de chaque ronde RD, (pour i allant de 1 à Nr) peut être déterminé au moyen d'une relation qui est fonction du rang i de la ronde considérée. La règle 4 ci-après est un exemple de relation en 1/(2n), n étant une variable fonction de i. La règle 4 inclut la règle 2 en ce qui concerne les rondes à protéger et inclut la règle 3 en ce qui concerne les rondes qui ne sont pas à protéger. In this case, rounds RD 4 , RD 5 , RD 6 , RD 7 , RD 8 , RD 9 , RD 10 , RDn, RD 1 2 , RD 13 are only executed once. In some embodiments, the number of executions N, of each round RD, (for i ranging from 1 to Nr) can be determined by means of a relation which is a function of the rank i of the round considered. Rule 4 below is an example of a relation in 1 / (2 n ), where n is a variable function of i. Rule 4 includes Rule 2 with respect to rounds to be protected and includes Rule 3 with respect to rounds that are not to be protected.
Règle 4 : Rule 4:
NRtoP = nombre de rondes à protéger  NRtoP = number of rounds to protect
Pour i de 1 à Nr faire :  For i from 1 to Nr do:
Si i < NRtoP alors n = i-1 et Nj= N1/(2n) If i <NRtoP then n = i-1 and Nj = N1 / (2 n )
Sinon :  If not :
Si i > Nr-NRtoP alors n = Nr-i et N|= N1/(2n) If i> Nr-NRtoP then n = Nr-i and N | = N1 / (2 n )
Sinon :  If not :
Ni=1 (Règle 3)  Ni = 1 (Rule 3)
La règle 4 peut être formulée plus simplement au moyen de l'opérateur "min" (i.e. "minimum de") : Rule 4 can be formulated more simply by the operator "min" (i.e. "minimum of"):
NRtoP = nombre de rondes à protéger: NRtoP = number of rounds to protect:
Pour i de 1 à Nr faire: Si i < NRtoP ou i > Nr-NRtoP, faire : For i from 1 to Nr do: If i <NRtoP or i> Nr-NRtoP, do:
n = min(i-1 , Nr-i)  n = min (i-1, Nr-i)
N|= N1/(2n) N | = N1 / (2 n )
Sinon : If not :
(Règle 3) (Rule 3)
On se référera maintenant à l'Annexe 1 , faisant partie intégrante de la description. Le tableau 1 de l'Annexe 1 décrit un exemple numérique d'application de la règle 4, avec Nr=16 et NRtoP=3. Si N1 = 8, il vient que : N2=4, N3=2, N4 à N13 = 1 , N14=2, N15=4 et N16=8. Si N1 =16, il vient que N2=8, N3=4, N4 à N13 = 1 , N14=4, N15=8 et N16=16. Reference is now made to Appendix 1, which forms an integral part of the description. Table 1 of Annex 1 describes a numerical example of the application of Rule 4, with Nr = 16 and NRtoP = 3. If N1 = 8, it follows that: N2 = 4, N3 = 2, N4 to N13 = 1, N14 = 2, N15 = 4 and N16 = 8. If N1 = 16, it follows that N2 = 8, N3 = 4, N4 to N13 = 1, N14 = 4, N15 = 8 and N16 = 16.
Le tableau 2 de l'Annexe 1 décrit des modes de réalisation CP31 , CP32, CP33, CP34, CP35, CP36 du procédé de chiffrement CP3 mettant en œuvre les règles 1 et 2. Ces modes de réalisation concernent un procédé de chiffrement à 16 rondes (Nr=16), par exemple le procédé DES. Le nombre maximal d'exécution N1 est égal à 8 pour les modes de réalisation CP31 à CP34, CP36, et est égal à 12 pour le mode de réalisation CP35. Le mode de réalisation désigné par la référence CP30 ne met pas en œuvre la règle 1 et n'est pas considéré comme compris dans l'invention car il n'apporte aucun avantage en termes de temps de calcul. Il représente le nombre d'exécutions de rondes que nécessiterait une contre-mesure classique consistant dans 8 exécutions successives du procédé de chiffrement, ce qui nécessiterait 8*16 soit 128 exécutions de rondes. Table 2 of Annex 1 describes embodiments CP31, CP32, CP33, CP34, CP35, CP36 of the CP3 encryption method implementing Rules 1 and 2. These embodiments relate to a 16-round encryption method. (Nr = 16), for example the DES method. The maximum execution number N1 is equal to 8 for the embodiments CP31 to CP34, CP36, and is equal to 12 for the embodiment CP35. The embodiment designated by the reference CP30 does not implement rule 1 and is not considered to be included in the invention since it provides no advantage in terms of calculation time. It represents the number of round executions that would require a conventional countermeasure consisting of 8 successive executions of the encryption process, which would require 8 * 16 or 128 rounds executions.
Dans le tableau 2, la colonne T donne le nombre total d'exécution de rondes, la colonne CT donne le temps de calcul de chaque mode de réalisation CP31 à CP36 relativement au temps de calcul du mode de réalisation CP30, en pourcentage, ou temps de calcul relatif. Ce temps de calcul relatif CT est égal au nombre total d'exécution de rondes divisé par le nombre total d'exécution de rondes dans le cas du mode de réalisation CP30, soit (T/128)*100. La colonne G ou "Gain de temps" est le complément à 100 du temps de calcul relatif CT, soit G = 100 - CT. Les modes de réalisation CP34, CP35, CP36 mettent également en oeuvre la règle 3 (pas d'exécution multiple de certaines rondes centrales) et le mode de réalisation CP36 met également en œuvre la règle 4 avec NRtoP=3 et Nr=8. Ces exemples montrent que le gain de temps dépend à la fois de la distribution du nombre d'exécutions des rondes intermédiaires et du nombre maximal d'exécutions de la première et de la dernière ronde. Par exemple, le mode de réalisation CP35 dans lequel N1=12 offre un gain de temps de 55% supérieur au gain de temps de 44% offert par le mode de réalisation CP33 dans lequel N1 =8, car les rondes 6 à 11 ne sont exécutées qu'une fois. In Table 2, the column T gives the total number of execution of rounds, the column CT gives the calculation time of each embodiment CP31 to CP36 relative to the calculation time of the embodiment CP30, in percentage, or time relative calculation. This relative calculation time CT is equal to the total number of execution of rounds divided by the total number of rounds execution in the case of embodiment CP30, ie (T / 128) * 100. Column G or "Gain time "is the complement to 100 of the relative computation time CT, ie G = 100 - CT. Embodiments CP34, CP35, CP36 also implement rule 3 (no multiple execution of some central rounds) and embodiment CP36 also implements rule 4 with NRtoP = 3 and Nr = 8. These examples show that the time saving depends both on the distribution of the number of executions of the intermediate rounds and the maximum number of executions of the first and the last round. For example, the embodiment CP35 in which N1 = 12 offers a time saving of 55% greater than the time saving of 44% offered by the embodiment CP33 in which N1 = 8, because the rounds 6 to 11 are not executed once.
Dans une variante de réalisation, la règle 3 est modifiée de manière que le nombre d'exécutions des rondes "centrales" soit fixe mais supérieur à 1 , ce qui correspond par exemple aux modes de réalisation CP31 et CP32 où les rondes centrales sont exécutées deux fois. In an alternative embodiment, the rule 3 is modified so that the number of executions of the "central" rounds is fixed but greater than 1, which corresponds for example to the embodiments CP31 and CP32 where the central rounds are executed two times.
Comme autre exemple, le tableau 3 en page 1 de l'Annexe 1 décrit le nombre total T d'exécutions de rondes en fonction du nombre de rondes Nr ainsi que le temps de calcul relatif CT (relativement au mode de réalisation CP30) lorsque la règle 4 est utilisée pour déterminer le nombre d'exécutions, et lorsque le nombre de rondes à protéger NRtoP est égal à 4. As another example, Table 3 on page 1 of Annex 1 describes the total number T of round executions as a function of the number of rounds Nr as well as the relative calculation time CT (relative to the embodiment CP30) when the Rule 4 is used to determine the number of executions, and when the number of rounds to be protected NRtoP is equal to 4.
Toujours pour illustrer les avantages qu'apportent un procédé de contre-mesure selon l'invention, la figure 5 représente la courbe CR1 du nombre total T d'exécutions de rondes en fonction du nombre de rondes Nr lorsque la règle 4 est utilisée, et lorsque le nombre de rondes à protéger NRtoP est égal à 4. La courbe prend la forme d'une droite et sa pente est déterminée par le paramètre NRtoP. A titre de comparaison, est également représentée la courbe CR2 du nombre total T d'exécutions de rondes en fonction du nombre de rondes Nr dans le cas d'une mise en œuvre classique. On se référera maintenant à l'Annexe 2, faisant partie intégrante de la description, qui décrit sous forme d'algorithmes exécutables des exemples de réalisation de procédés de chiffrement protégés selon l'invention. Les opérations de sous-ronde que chaque procédé de chiffrement exécute sont rappelées dans les tableaux 4 et 5 de l'Annexe 1 . Still to illustrate the advantages provided by a countermeasure method according to the invention, FIG. 5 represents the curve CR1 of the total number T of round executions as a function of the number of rounds Nr when the rule 4 is used, and when the number of rounds to be protected NRtoP is equal to 4. The curve takes the form of a straight line and its slope is determined by the NRtoP parameter. By way of comparison, the curve CR2 of the total number T of round executions as a function of the number of rounds Nr is also represented in the case of a conventional implementation. Reference will now be made to Appendix 2, an integral part of the description, which describes executable algorithms as exemplary embodiments of protected encryption methods according to the invention. The sub-round operations that each encryption process performs are recalled in Tables 4 and 5 of Annex 1.
Application au chiffrement DES Encryption application DES
Le procédé de chiffrement est exécuté au moyen d'un algorithme PDES1 ("DES Protégé") et d'un algorithme PRDES1 ("Ronde DES Protégée") ou algorithme de ronde. L'algorithme de ronde PRDES1 est une sous-fonction de l'algorithme PDES1 qui est appelée par ce dernier à chaque nouvelle itération de la variable i, qui forme un numéro de ronde. The encryption method is executed using a PDES1 algorithm ("Protected DES") and a PRDES1 algorithm ("Protected Round Protected") or round algorithm. The PRDES1 round algorithm is a sub-function of the PDES1 algorithm which is called by the latter at each new iteration of the variable i, which forms a round number.
Dans l'algorithme PDES1 , les opérations de permutation IP, de permutation inverse IPinverse, de partage du message en deux blocs de 32 bits exécutées aux étapes 3, 4, 8 sont connues de l'homme de l'art et ne seront pas décrites en détail ici. Un premier couple de valeurs (L0, Ro) est calculé à l'étape 4 à partir du message M, après permutation de celui-ci à l'étape 3, pour l'exécution de la première ronde par l'algorithme PRDES1. Ensuite, les étapes 5, 6, 6.1 , 6.2, 7, et 7.1 mettent en œuvre la règle 4 décrite plus haut, et déterminent ainsi le nombre d'exécutions d'une ronde en fonction de son rang et du paramètre NRtoP. Les étapes 6.3 et 7.2 sont des appels à la fonction ronde exécutée par l'algorithme PRDES1. In the PDES1 algorithm, the IP swap, IP reverse inversion, and message sharing operations in two 32-bit blocks executed in steps 3, 4, 8 are known to those skilled in the art and will not be described. in detail here. A first pair of values (L 0 , Ro) is calculated in step 4 from the message M, after permutation thereof in step 3, for the execution of the first round by the algorithm PRDES1. Then, steps 5, 6, 6.1, 6.2, 7, and 7.1 implement rule 4 described above, and thus determine the number of executions of a round according to its rank and the NRtoP parameter. Steps 6.3 and 7.2 are calls to the round function executed by the PRDES1 algorithm.
Dans l'algorithme PRDES1 , les tableaux de cryptographie C, D, E, F (en pratique des chaînes binaires), les opérations de permutation aléatoire, de génération de sous-clés, l'opérateur de concaténation "|" ainsi que les opérations de sous-ronde décrites dans le tableau 4 de l'Annexe 1 (permutation expansive, substitution, XOR, permutation simple) sont également connus de l'homme de l'art. Les sous-rondes 1 à 4 sont incluses dans la boucle 13 et sont donc répétées chacune autant de fois que le nombre d'itérations de la variable j. La variable j présente N, valeurs déterminées par l'algorithme PDES1. Lorsque l'algorithme PRDES1 est appelé par l'algorithme PDES1 avec Ni=1 (étapes 7.1 et 7.2), la boucle 13 ne comprend qu'une valeur de j et les sous- rondes ne sont donc exécutées qu'une fois avec la sous-clé correspondant à la bonne clé K0. In the PRDES1 algorithm, the cryptography tables C, D, E, F (in practice bit strings), the random permutation operations, the subkey generation, the concatenation operator "|" as well as the sub-round operations described in Table 4 of Annex 1 (expansive permutation, substitution, XOR, simple permutation) are also known to those skilled in the art. The sub-rounds 1 to 4 are included in the loop 13 and are thus repeated each as many times as the number of iterations of the variable j. The variable j has N, values determined by the PDES1 algorithm. When the algorithm PRDES1 is called by the algorithm PDES1 with Ni = 1 (steps 7.1 and 7.2), the loop 13 only includes a value of j and the sub-rounds are thus executed only once with the sub key corresponding to the correct key K 0 .
La permutation aléatoire exécutée à l'étape 12 permet à la fois de sélectionner les N, premières sous-clés de l'ensemble des sous-clés SK,,o à SKÎ,NI-I pour former un ensemble de sous-clés SKj,p0 à SKj,pj pour j allant de 0 à Nr1 , pj étant un élément de rang j dans la permutation aléatoire P. Lorsque Ν,=Ν1 , toutes les sous-clés sont utilisées. Lorsque Ν,=1 ; seule la bonne sous-clé SKi.o est utilisée (i.e. la sous-clé correspondant à la bonne clé Ko). Cette permutation aléatoire permet également de classer les sous-clés dans un ordre aléatoire pour l'exécution de la boucle 13. Ainsi, la première sous-clé utilisée pour la première itération (j=0) de la boucle 3 n'est pas nécessairement la sous-clé SKii0. A chaque nouvelle exécution de l'algorithme PRDES1 , l'ordre d'utilisation des sous-clés est donc aléatoire. The random permutation performed in step 12 makes it possible both to select the N, first sub-keys of the set of subkeys SK ,, o to SK Î , NI-I to form a set of subkeys SKj , p0 to SKj, pj for j ranging from 0 to N r 1, where p is an element of rank j in random permutation P. When Ν, = Ν1, all subkeys are used. When Ν, = 1; only the correct SKi.o subkey is used (ie the subkey corresponding to the correct KB key). This random permutation also makes it possible to classify the subkeys in a random order for the execution of the loop 13. Thus, the first subkey used for the first iteration (j = 0) of the loop 3 is not necessarily the subkey SK ii0 . At each new execution of the PRDES1 algorithm, the order of use of the subkeys is therefore random.
Une fois la ronde répétée N, fois, l'algorithme PRDES1 renvoie le couple de valeurs (L,, Ri) qui est donc fonction du couple de valeurs initial reçu en entrée (L , R^), du numéro i de la ronde (qui détermine les valeurs des sous-clés) et du nombre N, d'exécution de la ronde. Once the round has been repeated N times, the algorithm PRDES1 returns the pair of values (L ,, Ri) which is thus a function of the initial pair of values received at the input (L, R ^), of the number i of the round ( which determines the values of the subkeys) and the number N, of execution of the round.
Dans l'algorithme PRDES1 , la génération de sous-clés nécessaires à l'exécution de chaque ronde, à partir des clés Ko à KNM OU à partir des sous-clés d'une ronde précédente, peut être faite de plusieurs manières : In the PRDES1 algorithm, the generation of subkeys needed to execute each round, from the keys KB to KNM OR from the subkeys of a previous round, can be done in several ways:
- pour chaque clé Ko à KN1-1, les sous-clés nécessaires à l'exécution des rondes sont générées à l'avance et sont stockées dans une mémoire protégée. Cette méthode nécessite un certain espace mémoire, ce qui peut ne pas convenir à certaines applications, for each key K 1 to K N 1 -1 , the subkeys necessary for the execution of the rounds are generated in advance and are stored in a protected memory. This method requires some memory space, which may not be suitable for some applications,
- lors de chaque exécution d'une ronde, les sous-clés nécessaires à la ronde sont générées à la volée en fonction des clés ou des sous-clés de la ronde immédiatement précédente associées à la clé en cours d'utilisation. Toutes les sous-clés sont générées à chaque ronde, y compris celles dont l'algorithme PRDES1 n'a pas besoin lorsque la ronde est exécutée un nombre de fois inférieur au nombre de clés, afin que l'algorithme PRDES1 dispose, pour l'exécution de la ronde suivante, de toutes les sous-clés précédentes nécessaires à la génération des sous-clés de la ronde considérée. - each time a round is played, the sub-keys needed for the round are generated on the fly according to the keys or sub-keys of the round immediately previously associated with the key being used. All subkeys are generated in each round, including those whose PRDES1 algorithm does not need to be used when the round is executed a number of times less than the number of keys, so that the PRDES1 algorithm has, for the execution of the next round, of all the previous sub-keys necessary for the generation of the subkeys of the round considered.
La seconde solution précitée a été retenue ici et apparaît à l'étape 1 1 , où N1 sous-clés sont générées à chaque ronde à partir des N1 clés ou des N1 sous-clés générées lors de l'exécution de la ronde précédente, indépendamment du nombre d'exécutions de la ronde considérée et donc du nombre de sous-clés dont l'algorithme PRDES1 a réellement besoin pour l'exécution de la ronde. The second aforementioned solution has been retained here and appears in step 1 1, where N1 subkeys are generated at each round from the key N1 or subkey N1 generated during the execution of the previous round, independently the number of executions of the round considered and therefore the number of subkeys whose algorithm PRDES1 really needs for the execution of the round.
Il sera noté que dans le cas du procédé DES, des méthodes connues de génération des fausses clés permettent de générer toutes les sous-clés de toutes les fausses clés à partir des sous-clés de la clé authentique. Ainsi, au lieu de générer les sous-clés d'une fausse clé à partir des sous-clés précédentes de la même fausse clé, les sous- clés de la fausse clé pourraient aussi être générées à partir des sous-clés de la clé authentique. Dans le cas du procédé AES, les sous-clés d'une fausse clé doivent par contre être générées à partir des sous-clés précédentes de la fausse clé. It will be noted that in the case of the DES method, known methods for generating false keys make it possible to generate all the subkeys of all the false keys from the subkeys of the authentic key. Thus, instead of generating the subkeys of a false key from the previous subkeys of the same false key, the subkeys of the false key could also be generated from the subkeys of the authentic key. . In the case of the AES method, the subkeys of a false key must instead be generated from the previous subkeys of the false key.
Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en œuvre les principes de l'invention peuvent être prévus pour exécuter le procédé DES, les algorithmes PDES1 et PRDES1 n'étant que des exemples. It will be apparent to those skilled in the art that various other algorithms embodying the principles of the invention may be provided to perform the DES method, with the PDES1 and PRDES1 algorithms being only examples.
Application au chiffrement TDES (Triple DES) TDES Encryption Application (Triple DES)
Le procédé de chiffrement selon l'invention est ici exécuté au moyen d'un algorithme PTDES ("TDES Protégé") figurant en Annexe 2 et des algorithmes PDES1 et PRDES1 décrits plus haut. Le chiffrement TDES comporte classiquement une première étape de chiffrement DES du message avec une première clé K, soit DES(M,K), puis une étape de chiffrement inverse DES"1, avec une seconde clé K', du résultat de la première étape, soit DES"1(DES(M,K),K'), et enfin une étape de chiffrement DES, avec la première clé K, du résultat de la deuxième étape, soit : The encryption method according to the invention is here executed using a PTDES algorithm ("TDES Protégé") in Appendix 2 and PDES1 and PRDES1 algorithms described above. The TDES encryption conventionally comprises a first DES encryption step of the message with a first key K, ie DES (M, K), then a reverse encryption step DES "1 , with a second key K ', of the result of the first step or DES "1 (DES (M, K), K '), and finally an encryption step DES, with the first key K, of the result of the second step, that is:
DES(DES"1(DES(M,K),K'),K) Dans l'algorithme PTDES, la première étape de chiffrement DES (étape 20) est exécutée en faisant appel à l'algorithme PDES1 qui lui-même fait appel à l'algorithme PRDES1 , après avoir défini le nombre maximal N1 d'exécution de rondes et le nombre de rondes à protéger NRtoP. La seconde étape de chiffrement DES"1 peut être exécutée au moyen d'un procédé DES"1 classique non protégé contre les attaques par canaux auxiliaires (étape 21 a), ou au moyen de l'algorithme PDES1"1, soit l'algorithme inverse de l'algorithme PDES1 décrit en Annexe 2 (étape 21 b). L'algorithme PDES1"1 n'est pas décrit en Annexe 2 mais peut être dérivé de l'algorithme PDES1 en remplaçant l'opération IP de l'étape 3 par l'opération IPinverse, et en remplaçant l'opération IPinverse de l'étape 8 par l'opération IP, et en inversant l'ordre d'utilisation des sous-clés (soit de SK 6 à SK-i ). Comme l'étape 21 b prévoit que N1 =1 et NRtoP=0, l'algorithme PDES1"1 n'est pas protégé et est équivalent à un procédé DES"1 classique. Enfin, la dernière étape de chiffrement DES (étape 22) est protégée et est exécutée en faisant appel à l'algorithme PDES1 qui lui-même fait appel à l'algorithme PRDES1 , en définissant le nombre maximal N1 d'exécution de rondes et le nombre de rondes à protéger NRtoP. Application au chiffrement AES 128 L'exemple décrit en Annexe 2 concerne l'AES 128 à 10 rondes mais l'invention peut aussi être appliquée à l'AES 192 à 12 rondes et à l'AES 256 à 14 rondes. Le procédé est exécuté au moyen d'un algorithme PAES1 ("AES Protégé") et d'un algorithme PRAES1 ("Ronde AES Protégée") ou algorithme de ronde. L'algorithme PRAES1 est une sous-fonction de l'algorithme PAES1 qui est appelée par ce dernier à chaque nouvelle itération du numéro de ronde i. Dans l'algorithme PAES1 , les étapes 33, 34, 34.1 , 34.2, 35, 35.1 mettent en œuvre la règle 4 décrite plus haut, et déterminent ainsi le nombre d'exécutions d'une ronde en fonction de son rang et du paramètre NRtoP. Les étapes 34.3 et 35.2 sont des appels à la fonction ronde exécutée par l'algorithme PRAES . L'algorithme PRAES1 exécute les opérations de sous-ronde décrites dans le tableau 5 en Annexe 1 (AddRoundKey, SubByte, ShiftRow et MixColumn), en soi connues de l'homme de l'art. La structure des rondes exécutées par l'algorithme PRAES1 est représentée sur la figure 6 sous la forme d'un organigramme "AES2". L'organigramme AES2 diffère de l'organigramme AES1 de la figure 2 en ce que les sous-rondes ont été réorganisées par commodité de manière à faire disparaître l'opération initiale IO comprenant l'opération AddRoundKey. L'opération AddRoundKey est intégrée dans la première ronde RD1 , et au début de chaque ronde suivante, de sorte qu'elle fait intervenir, dans chaque ronde suivante de rang ij une sous-clé SKi.-ij de rang i-1 ,j. L'opération AddRoundKey est suivie des opérations SubByte, ShiftRow et MixColumn dans les rondes RD1 à RD9. La dernière ronde RD10 comporte deux exécutions de l'opération AddRoundKey faisant intervenir les deux dernières sous-clés SK9 et SKi0 de la clé courante de rang j. Entre ces deux opérations sont exécutées les opérations SubByte et ShiftRow. L'homme de l'art pourra bien entendu prévoir toute autre structure de rondes respectant les spécifications de l'AES. Dans l'algorithme PRAES1 , les sous-rondes AddRoundKey, SubByte, ShiftRow sont incluses dans la boucle itérative 43 et sont donc répétées chacune autant de fois que le nombre d'itérations de la variable j. L'opération MixColumn est également incluse dans la boucle 43 pour toute valeur du numéro de ronde i différente de 10. La boucle 43.6 est exécutée lorsque i est égal à 10 et est incluse dans la boucle 43 uniquement pour la ronde 10. Elle comprend une nouvelle génération de sous-clés (étape 43.6.1 ) et la seconde exécution de l'opération AddRoundKey (étape 43.6.2). OF (THE "1 (OF (M, K), K '), K) In PTDES algorithm, the first encryption step DES (step 20) is performed by using the PDES1 algorithm itself is call to the algorithm PRDES1, after having defined the maximum number N1 of execution of rounds and the number of rounds to protect NRtoP The second step of encryption DES "1 can be executed by means of a method DES " 1 conventional no protected against attacks by auxiliary channels (step 21 a), or by means of the algorithm PDES1 "1 , the inverse algorithm of the PDES1 algorithm described in Annex 2 (step 21 b). The PDES1 "1 algorithm is not described in Appendix 2 but can be derived from the PDES1 algorithm by replacing the IP operation of step 3 by the IPinverse operation, and replacing the IPinverse operation of the step 8 by the IP operation, and inverting the order of use of the subkeys (ie SK 6 to SK-i) As step 21 b provides that N1 = 1 and NRtoP = 0, algorithm PDES1 "1 is not protected and is equivalent to a method DES " 1. Finally, the last step of DES encryption (step 22) is protected and is executed using the algorithm PDES1 which itself call to the PRDES1 algorithm, defining the maximum number N1 of round execution and the number of rounds to protect NRtoP Application to AES 128 encryption The example described in Annex 2 concerns the 10-round AES 128, but the invention can also be applied to the 12-round AES 192 and the 14-round AES 256. The method is executed using a PAES1 ("Protected AES") algorithm and a PRAES1 ("Protected AES Round") algorithm or round algorithm. The PRAES1 algorithm is a sub-function of the PAES1 algorithm which is called by the latter at each new iteration of the round number i. In the PAES1 algorithm, the steps 33, 34, 34.1, 34.2, 35, 35.1 implement the rule 4 described above, and thus determine the number of executions of a round according to its rank and the NRtoP parameter. . Steps 34.3 and 35.2 are calls to the round function performed by the PRAES algorithm. The PRAES1 algorithm executes the sub-round operations described in Table 5 in Appendix 1 (AddRoundKey, SubByte, ShiftRow and MixColumn), as known to those skilled in the art. The structure of the rounds executed by the algorithm PRAES1 is represented in FIG. 6 in the form of a flowchart "AES2". The flow chart AES2 differs from the flow chart AES1 of FIG. 2 in that the sub-rounds have been rearranged for convenience so as to eliminate the initial operation IO comprising the operation AddRoundKey. The operation AddRoundKey is integrated in the first round RD1, and at the beginning of each following round, so that it implicates, in each next rank round ij a subkey SKi.-i j of rank i-1, j. The AddRoundKey operation is followed by the SubByte, ShiftRow, and MixColumn operations in Rounds RD1 through RD9. The last round RD10 includes two executions of the AddRoundKey operation involving the last two subkeys SK 9 and SKi 0 of the current key of rank j. Between these two operations are executed the operations SubByte and ShiftRow. Those skilled in the art can of course provide any other round structure meeting the specifications of the AES. In the PRAES1 algorithm, the AddRoundKey, SubByte, ShiftRow sub-rounds are included in the iterative loop 43 and are thus repeated each as many times as the number of iterations of the variable j. The MixColumn operation is also included in the loop 43 for any value of the round number i different from 10. The loop 43.6 is executed when i is equal to 10 and is included in the loop 43 only for the round 10. It includes a next generation of subkeys (step 43.6.1) and the second execution of the AddRoundKey operation (step 43.6.2).
Comme précédemment, l'opération de permutation aléatoire exécutée à l'étape 42 permet à la fois de sélectionner les N, premières sous-clés de l'ensemble des sous- clés SKi,0 à SKj N-i-1 pour former un ensemble de sous-clés SKiiPo à SKiiPj pour j allant de 0 à Nj-1 . Lorsque Nj=N1 , toutes les sous-clés sont utilisées. Lorsque ; seule la bonne sous-clé SKj,0 est utilisée (i.e. la sous-clé correspondant à la bonne clé K0). Cette opération de permutation aléatoire permet également de classer les sous-clés dans un ordre aléatoire pour l'exécution de la boucle 43. As before, the random permutation operation executed in step 42 makes it possible both to select the N, the first subkeys of the set of subkeys SKi, 0 to SKj Ni-1 to form a set of sub-keys. SK iiP o to SK iiPj for j ranging from 0 to Nj-1. When Nj = N1, all subkeys are used. When ; only the right sub-key SKj, 0 is used (ie the subkey corresponding to the correct key K 0 ). This random permutation operation also makes it possible to classify the subkeys in a random order for the execution of the loop 43.
Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en œuvre les principes de l'invention peuvent également être prévus pour exécuter le procédé AES. It will be apparent to those skilled in the art that various other algorithms embodying the principles of the invention may also be provided for performing the AES method.
Modes de réalisation de l'invention basés sur la notion de modularité Embodiments of the invention based on the concept of modularity
Dans des modes de réalisation de l'invention fondés sur la notion de modularité, l'exécution multiple d'une ronde comprend : In embodiments of the invention based on the concept of modularity, the multiple execution of a round includes:
- l'exécution multiple d'une ou plusieurs sous-rondes de la ronde considérée, - the multiple execution of one or more sub-rounds of the round considered,
- une seule exécution d'une ou plusieurs autres sous-rondes de la ronde considérée.  - a single execution of one or more other sub-rounds of the round considered.
Les règles précédemment décrites, relatives à la détermination du nombre d'exécutions de chaque ronde, sont conservées, mais la façon selon laquelle chaque ronde est exécutée plusieurs fois est modifiée. En d'autres termes, chaque sous- ronde, et plus particulièrement chaque opération de chiffrement que comporte chaque sous-ronde, est considérée comme un "module" susceptible d'un nombre d'exécutions qui lui est propre. A titre d'exemple, la figure 7 représente un procédé de chiffrement CP4 selon l'invention, par exemple le procédé DES. Le procédé CP4 est construit sur le même modèle d'exécution multiple des rondes que le procédé CP3, et se distingue de celui-ci par le fait que seule la sous-ronde SRD3 de chaque ronde RD-i , RD2 RDNr est exécutée plusieurs fois. Le procédé CP4 comprend donc les étapes suivantes : The rules described above, relating to the determination of the number of executions of each round, are preserved, but the way in which each round is executed several times is modified. In other words, each subset round, and more particularly each encryption operation that includes each sub-round, is considered a "module" likely to a number of executions of its own. By way of example, FIG. 7 represents an encryption method CP4 according to the invention, for example the DES method. The method CP4 is built on the same model of multiple execution of the rounds that the CP3 process, and differs from it by the fact that only the sub-round SRD3 of each round RD-i, RD 2 RD Nr is executed several times. The method CP4 thus comprises the following steps:
- la sous-ronde SRD3 de la ronde RD-\ est exécutée N1 fois tandis que les autres sous- rondes ne sont exécutées qu'une fois avec la clé K0, - the sub-round SRD3 of the round RD- \ is executed N1 times while the other sub-rounds are executed only once with the key K 0 ,
- la sous-ronde SRD3 de la ronde RD2 est exécutée N2 fois, avec N2 < N1 , tandis que les autres sous-rondes ne sont exécutées qu'une fois avec la clé Ko, - the sub-round SRD3 of the RD 2 round is executed N2 times, with N2 <N1, while the other sub-rounds are executed only once with the key KB,
- etc.,  - etc.,
- la sous-ronde SRD3 de la ronde RD, est exécutée N, fois, avec N, < Ν ι (NM étant le nombre d'exécutions de la ronde précédente) tandis que les autres sous-rondes ne sont exécutées qu'une fois avec la clé K0, - the sub-round SRD3 of the round RD, is executed N, times, with N, <Ν ι (NM being the number of executions of the preceding round) while the other sub-rounds are executed only once with the key K 0 ,
- etc.,  - etc.,
- la sous-ronde SRD3 de l'avant-dernière ronde RDNr-i est exécutée NNr-i fois tandis que les autres sous-rondes ne sont exécutées qu'une fois avec la clé Ko, et - the sub-round SRD3 of the penultimate round RD Nr- i is executed N Nr -i times while the other sub-rounds are executed only once with the key Ko, and
- la sous-ronde SRD3 de la dernière ronde RDNr est exécutée NNr fois, avec NNr≥ NNr-i , tandis que les autres sous-rondes ne sont exécutées qu'une fois avec la clé Ko- - the sub-round SRD3 of the last round RD Nr is executed N Nr times, with N Nr ≥ N Nr -i, while the other sub-rounds are executed only once with the key Ko-
Ce mode de réalisation permet d'accélérer encore plus le temps d'exécution du procédé de chiffrement, en limitant au sein des rondes exécutées plusieurs fois le nombre de sous-rondes qui sont elles-mêmes exécutées plusieurs fois. Il peut comprendre la prévision de plusieurs fonctions hardwares indépendantes ou "modules matériels" exécutant chacun une sous-ronde ou une opération de sous-ronde, en lieu et place d'une seule fonction hardware de ronde contenant toutes les sous-rondes. Cette modularité permet d'une part de multiplier les appels aux sous-fonctions au cours d'une ronde et de varier le nombre de ces appels en fonction de la ronde dans laquelle on se trouve, mais aussi de définir des sous-fonctions utilisables par plusieurs procédés de chiffrement. En d'autres termes, au lieu de prévoir un coprocesseur dédié à un procédé de chiffrement déterminé, des modes de réalisation de l'invention prévoient plusieurs accélérateurs hardwares utilisables par plusieurs procédés de chiffrement, chacun mettant en œuvre une opération de sous-ronde. Ainsi, dans l'exemple représenté sur la figure 7, chaque sous-ronde SRD1 à SRD4 peut être exécutée au moyen d'un accélérateur hardware dédié. This embodiment makes it possible to accelerate the execution time of the encryption process even more, by limiting within the rounds executed several times the number of sub-rounds which are themselves executed several times. It can include the prediction of several independent hardware functions or "hardware modules" each executing a sub-round or a sub-round operation, instead of a single round hardware function containing all sub-rounds. This modularity makes it possible on the one hand to multiply the calls to the sub-functions during a round and to vary the number of these calls according to the round in which one is, but also to define sub-functions usable by several encryption methods. In other words, instead of providing a coprocessor dedicated to a specific encryption method, embodiments of the invention provide several hardware accelerators used by several encryption methods, each implementing a sub-round operation. Thus, in the example shown in FIG. 7, each sub-round SRD1 to SRD4 can be executed by means of a dedicated hardware accelerator.
Par précaution, une contre-mesure peut être prévue pour protéger contre des attaques par canaux auxiliaires les sous-rondes qui ne sont exécutées qu'une fois. Cette contre- mesure peut notamment être une contre-mesure par masquage. Ainsi, sur la figure 7, les sous-rondes SRD1 , SRD2, SRD4 de la ronde RDi sont protégées par un masque aléatoire U1 , les sous-rondes SRD1 , SRD2, SRD4 de la ronde RD2 sont protégées par un masque aléatoire U2, etc., et les sous-rondes SRD1 , SRD2, SRD4 de la ronde RDNr sont protégées par un masque aléatoire LV- As a precaution, a countermeasure may be provided to protect sub-rounds that are only executed once against auxiliary channel attacks. This countermeasure can in particular be a countermeasure by masking. Thus, in Figure 7, the SRD1 sub-round, SRD2, SRD4 of RDi round are protected by a random mask U1, the SRD1 sub-round, SRD2, SRD4 DR Round 2 are protected by a random mask U2 etc., and the sub-rounds SRD1, SRD2, SRD4 of round RD Nr are protected by a random mask LV-
Le choix du mode de protection d'une sous-ronde, par masquage ou exécution multiple, peut être fait en fonction de la nature de l'opération que comporte la sous- ronde. On distingue à cet effet les sous-rondes qui comportent une opération linéaire et celles qui comportent une opération non linéaire au sens mathématique du terme. Est notamment non linéaire une opération dont l'exécution repose sur une table déterminée, stockée en mémoire. The choice of the protection mode of a sub-round, by masking or multiple execution, can be made according to the nature of the operation that includes sub-round. We distinguish for this purpose the sub-rounds that include a linear operation and those that include a non-linear operation in the mathematical sense of the term. In particular, an operation whose execution rests on a determined table, stored in memory, is non-linear.
Exemple de masquage d'une opération linéaire : Example of masking a linear operation:
- M est un message,  - M is a message,
- K est une clé secrète.  - K is a secret key.
- Opération normale : C = M XOR K (combinaison du message avec la clé)  - Normal operation: C = M XOR K (combination of the message with the key)
- Opération protégée (masquée) : Tirer aléatoirement à chaque itération un masque U ayant le même nombre de bits que le message M, - Protected operation (hidden): At each iteration, randomly draw a mask U having the same number of bits as the message M,
Calculer C = M XOR U (masquage du message M avec le masque U),  Calculate C = M XOR U (masking of the message M with the mask U),
Calculer C = C XOR K (combinaison du message masqué avec la clé),  Calculate C = C XOR K (combination of the message masked with the key),
Calculer C = C XOR U (démasquage)  Calculate C = C XOR U (unmasking)
L'opération protégée produit le même résultat que l'opération non protégée. The protected operation produces the same result as the unprotected operation.
Exemple de masquage d'une opération non linéaire "S" : Example of masking a nonlinear operation "S":
- M est un message,  - M is a message,
- K est une clé secrète,  - K is a secret key,
- S est une table,  - S is a table,
- X = K XOR M. - X = K XOR M.
- Opération normale :  - Normal operation:
- Pour i = 0 à 7 faire :  - For i = 0 to 7 do:
S( ) = Y,  S () = Y,
Une attaque par analyse DPA ou CPA connaissant M peut permettre de retrouver la clé K en prédisant la valeur S(X,).  An attack by analysis DPA or CPA knowing M can make it possible to find the key K by predicting the value S (X,).
- Opération protégée (masquée) :  - Protected operation (hidden):
- Tirer aléatoirement un masque U,  - Randomly pull a U mask,
- Recalculer la table S pour obtenir une nouvelle table S' :  - Recalculate the table S to obtain a new table S ':
- Pour I = 0 à 256 faire  - For I = 0 to 256 do
- S'(i XOR U) = S(i) XOR U  - S '(i XOR U) = S (i) XOR U
- Pour i = 0 à 7 faire :  - For i = 0 to 7 do:
X'i = X XOR U  X'i = X XOR U
Y'i = S'(X'i)  Y'i = S '(X'i)
Y = Y, XOR U  Y = Y, XOR U
Comme précédemment, l'opération protégée produit le même résultat que l'opération non protégée. Une contre-mesure par masquage présente l'inconvénient de consommer un espace mémoire important dans le cas d'une opération non linéaire, car le fait de masquer une table avec une pluralité de masques nécessite un espace mémoire important. Ainsi, pour réduire l'espace mémoire utilisée, on utilise généralement le même masque pour toutes les sous-rondes de la ronde ou pour toutes les valeurs de la table, par exemple un masque de 8 bits. Le masquage est alors dit "d'ordre simple" par opposition à un masquage d'ordre supérieur, qui utilise une pluralité de masques aléatoires. As before, the protected operation produces the same result as the unprotected operation. A masking countermeasure has the drawback of consuming a large memory space in the case of a nonlinear operation, since hiding a table with a plurality of masks requires a large memory space. Thus, to reduce the memory space used, the same mask is generally used for all the sub-rounds of the round or for all the values of the table, for example an 8-bit mask. Masking is then called "simple order" as opposed to higher order masking, which uses a plurality of random masks.
Toutefois, le masquage d'ordre simple introduit une faiblesse face aux attaques par analyse DPA d'ordre(s) supérieur(s). En revanche, si l'opération non linéaire masquée en ordre simple est exécutée plusieurs fois avec de fausses clés, l'opération "vraie" sera noyée dans de fausses opérations et le résultat d'une attaque sera assimilable à du bruit. Certains modes de réalisation de l'invention prévoient donc des exécutions multiples d'opérations non linéaires qui sont masquées en ordre simple. Dans ce cas, et avantageusement, il n'est pas nécessaire de prévoir un masque d'ordre supérieur car il est quasiment impossible, en l'état des connaissances actuelles, de réaliser une attaque d'ordre supérieur sur une opération exécutée plusieurs fois avec un masquage d'ordre simple. En résumé, dans certains modes de réalisation, les opérations linéaires sont protégées par des exécutions multiples, ou par un masquage d'ordre multiple, ou encore par un masquage d'ordre simple et des exécutions multiples, tandis que les opérations non linéaires sont de préférence protégées par un masquage d'ordre simple et des exécutions multiples. However, simple order masking introduces a weakness against higher order (s) DPA analysis attacks. On the other hand, if the nonlinear operation masked in simple order is executed several times with false keys, the operation "true" will be embedded in false operations and the result of an attack will be assimilated to noise. Some embodiments of the invention thus provide for multiple executions of non-linear operations that are masked in simple order. In this case, and advantageously, it is not necessary to provide a higher order mask because it is almost impossible, in the current state of knowledge, to perform a higher order attack on an operation performed several times with a simple order masking. In summary, in some embodiments, the linear operations are protected by multiple executions, or by multiple order masking, or by single order masking and multiple executions, while the nonlinear operations are preferably protected by single order masking and multiple executions.
Ainsi, dans le procédé CP4 représenté sur la figure 7, de nombreuses combinaisons de contre-mesures peuvent être prévues. En supposant que les sous-rondes SRD1 , SRD2 et SRD4 sont linéaires et que la sous-ronde RD3 est non linéaire, les contre- mesures suivantes peuvent par exemple être prévues : Thus, in the CP4 process shown in Fig. 7, many combinations of countermeasures can be provided. Assuming that the SRD1, SRD2 and SRD4 sub-rounds are linear and that the RD3 sub-round is non-linear, the following countermeasures may for example be provided:
- Contre-mesure 1 : - les sous-rondes SRD1 , SRD2 et SRD4 ne sont exécutées qu'une seule fois par ronde et sont protégées par un masquage d'ordre simple ou multiple, - Countermeasure 1: - sub-rounds SRD1, SRD2 and SRD4 are executed only once per round and are protected by single or multiple order masking,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, sans masquage - the sub-round SRD3 is executed several times per round, without masking
- Contre-mesure 2 : - Countermeasure 2:
- les sous-rondes SRD , SRD2 et SRD4 ne sont exécutées qu'une seule fois par ronde et sont protégées par un masquage d'ordre simple ou multiple,  - the SRD, SRD2 and SRD4 sub-rounds are executed only once per round and are protected by single or multiple order masking,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple,  the sub-round SRD3 is executed several times per round, with a simple order masking,
- Contre-mesure 3 :  - Countermeasure 3:
- les sous-rondes SRD1 , SRD2 et SRD4 sont exécutées plusieurs fois par ronde, sans masquage,  the sub-rounds SRD1, SRD2 and SRD4 are executed several times per round, without masking,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple,  the sub-round SRD3 is executed several times per round, with a simple order masking,
- Contre-mesure 4 :  - Countermeasure 4:
- les sous-rondes SRD1 , SRD2 et SRD4 sont exécutées plusieurs fois par ronde, avec un masquage d'ordre simple ou multiple,  the sub-rounds SRD1, SRD2 and SRD4 are executed several times per round, with single or multiple order masking,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple. La contre-mesure 4 offre un niveau de sécurité supérieur aux contre-mesures 2 et 3 qui offrent elles-mêmes un niveau de sécurité supérieur à la contre-mesure 1. Toutefois, en relation avec la recherche du meilleur rapport entre temps d'exécution et protection contre des attaques, les contre-mesures 2 et 3 offrent déjà une excellente protection. On peut, de plus, ajouter des exécutions aléatoires au sein de ces opérations.  - the sub-round SRD3 is executed several times per round, with a simple order masking. Countermeasure 4 offers a higher level of security than countermeasures 2 and 3 which themselves offer a level of security superior to countermeasure 1. However, in connection with the search for the best ratio between execution time and protection against attacks, countermeasures 2 and 3 already provide excellent protection. In addition, random executions can be added within these operations.
On se référera maintenant à l'Annexe 3, faisant partie intégrante de la description, qui décrit sous forme d'algorithmes exécutables des exemples de réalisation de procédés de chiffrement protégés selon l'invention mettant en œuvre la notion de modularité. Application au chiffrement DES Reference will now be made to Appendix 3, which is an integral part of the description, which describes executable algorithms in the form of exemplary embodiments of protected encryption methods according to the invention implementing the concept of modularity. Encryption application DES
Le procédé est exécuté au moyen d'un l'algorithme PDES2 et d'un algorithme de ronde PRDES2 figurant en Annexe 3. L'algorithme PDES2 se distingue de l'algorithme PDES1 en ce qu'il comprend des étapes initiales 54, 55 de génération d'un premier masque Uo et de génération de parties gauche et droite U0,L et U0,R du masque, suivie d'une étape 56 de masquage des parties gauche et droite Lo, Ro du message M. Également, l'étape 6.3 d'appel à l'algorithme PRDES1 est remplacée par une étape 58.3 d'appel à l'algorithme PRDES2, et l'étape 7.2 d'appel à l'algorithme PRDES1 est remplacée par une étape 59.2 d'appel à l'algorithme PRDES2. Enfin, lorsque toutes les rondes ont exécutées au moyen de l'algorithme PRDES2, une étape 60 de démasquage du résultat est prévue, avant l'opération IPinverse permettant d'obtenir le message chiffré C. L'algorithme de ronde PRDES2 utilise les mêmes opérations de chiffrement et comporte les mêmes sous-rondes que l'algorithme PRDES1 , mais met en oeuvre la notion de modularité. Il reçoit comme données d'entrée, comme précédemment : The method is executed using a PDES2 algorithm and a PRDES2 round algorithm in Annex 3. The PDES2 algorithm differs from the PDES1 algorithm in that it includes initial steps 54, 55 of generating a first mask U 0 and generating left and right portions U 0, L and U 0, R of the mask, followed by a step 56 of masking the left and right parts Lo, Ro of the message M. Also, step 6.3 of call to the algorithm PRDES1 is replaced by a step 58.3 of call to the algorithm PRDES2, and step 7.2 of call to the algorithm PRDES1 is replaced by a step 59.2 of call to the PRDES2 algorithm. Finally, when all the rounds have executed using the algorithm PRDES2, a step 60 of unmasking the result is provided, before the IPInverse operation to obtain the encrypted message C. The round algorithm PRDES2 uses the same operations and has the same sub-rounds as the algorithm PRDES1, but implements the concept of modularity. It receives as input data, as before:
- les clés Ko à KN1-1 ou des sous-clés de la ronde précédente, - the keys Ko to K N1- 1 or subkeys of the previous round,
- le couple de valeurs (Lj.i, R ) fourni par l'exécution précédente de l'algorithme de ronde PRDES2 ou par l'étape 56 de l'algorithme PDES2 en ce qui concerne le couple de valeurs initial (L , R ),  the pair of values (Lj.i, R) supplied by the previous execution of the PRDES2 rounding algorithm or by the step 56 of the PDES2 algorithm with respect to the initial pair of values (L, R) ,
- le numéro de ronde i (pour le calcul des sous-clés), et  the round number i (for the subkey calculation), and
- le nombre d'exécutions N, de la ronde considérée, L'algorithme de ronde PRDES2 reçoit en sus, comme donnée d'entrée, un masque aléatoire UM. Il s'agit du masque U0 généré par l'algorithme PDES2 à l'étape 54, ou du masque UM renvoyé par l'exécution précédente de l'algorithme PRDES2, calculé à l'étape 78. La sous-ronde 1 comprend l'opération linéaire Permutation Expansive et n'est exécutée qu'une fois à l'étape 75 avec un masquage d'ordre multiple. La sous-ronde 2 agencée dans la boucle itérative 76 comprend l'opération linéaire XOR et est exécutée plusieurs fois à l'étape 76.1 avec un masquage d'ordre multiple. La sous-ronde 3 comprend l'opération non linéaire Substitution est également présente dans la boucle 76 et est exécutée plusieurs fois à l'étape 76.3 sous forme non masquée, étant précédée d'une étape de démasquage 76.2. Le résultat de cette opération est ensuite masqué de nouveau à l'étape 76.4. Enfin, la sous-ronde 4 qui comprend l'opération linéaire XOR n'est exécutée qu'une fois avec un masquage d'ordre multiple à l'étape 77. Un masque U, de rang i pour la prochaine ronde est ensuite calculé à l'étape 78 et une mise à jour du masque U est effectuée à l'étape 79. L'algorithme retourne ensuite le résultat L\, R\ et le masque Uj. the number of executions N, of the considered round. The round algorithm PRDES2 additionally receives, as input data, a random mask UM. This is the mask U 0 generated by the algorithm PDES2 in step 54, or the mask UM returned by the previous execution of the algorithm PRDES2, calculated in step 78. Sub-round 1 comprises the Expansive Permutation linear operation and is executed only once in step 75 with multiple-order masking. The sub-round 2 arranged in the iterative loop 76 comprises the linear operation XOR and is executed several times in the step 76.1 with multiple-order masking. The sub-round 3 includes the non-linear operation Substitution is also present in the loop 76 and is executed several times in step 76.3 in unmasked form, preceded by a step of unmasking 76.2. The result of this operation is then masked again in step 76.4. Finally, the sub-round 4 which comprises the linear operation XOR is executed only once with multiple-order masking in step 77. A mask U, of rank i for the next round is then calculated at step 78 and an update of the mask U is performed in step 79. The algorithm then returns the result L \ , R \ and the mask Uj.
Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en œuvre les principes de l'invention peuvent être prévus pour exécuter le procédé DES. It will be apparent to those skilled in the art that various other algorithms embodying the principles of the invention may be provided for performing the DES method.
Application au chiffrement AES Application to AES encryption
Le procédé est exécuté au moyen d'un algorithme PAES2 et d'un algorithme de ronde PRAES2 figurant en Annexe 3. L'algorithme PAES2 se distingue de l'algorithme PAES1 en ce qu'il comprend une étape 92 de génération d'un masque aléatoire initial Uo et une étape 93 de masquage du message M. L'étape 34.3 d'appel à l'algorithme PRAES1 est remplacée par une étape 95.3 d'appel à l'algorithme PRAES2 et l'étape 35.2 d'appel à l'algorithme PRAES1 est remplacée par une étape 96.2 d'appel à l'algorithme PRAES2. Lorsque toutes les rondes ont été exécutées, le résultat final C est démasqué à l'étape 97 pour obtenir le message chiffré C. The method is executed using a PAES2 algorithm and a PRAES2 rounding algorithm in Annex 3. The PAES2 algorithm differs from the PAES1 algorithm in that it comprises a step 92 of generating a mask initial random Uo and a step 93 of masking the message M. The step 34.3 of calling the algorithm PRAES1 is replaced by a step 95.3 of calling the algorithm PRAES2 and the step 35.2 of call to the PRAES1 algorithm is replaced by a step 96.2 of calling the PRAES2 algorithm. When all the rounds have been executed, the final result C is unmasked in step 97 to obtain the encrypted message C.
L'algorithme de ronde PRAES2 utilise les mêmes opérations de chiffrage et comporte les mêmes sous-rondes que l'algorithme PRAES1 , mais met en oeuvre la notion de modularité. Ainsi, dans l'algorithme PRAES2, la sous-ronde 1 comprenant l'opération linéaire AddRoundKey (étape 104.1 ) est incluse dans la boucle itérative 104 et est exécutée plusieurs fois avec un masquage d'ordre multiple. La sous-ronde 2 comprenant l'opération non linéaire SubByte (étape 104.3) est exécutée plusieurs fois sous forme non masquée, après une étape de démasquage 104.2. Le résultat de cette sous-ronde est ensuite masqué de nouveau à l'étape 104.4. La sous-ronde 3 qui comprend l'opération linéaire ShiftRow est en dehors de la boucle 04 est n'est exécutée qu'une fois à l'étape 105, avec un masquage d'ordre multiple. La sous-ronde 4 des rondes 1 à 9, qui comprend l'opération linéaire MixColumn (étape 106.1 ) est également en dehors de la boucle 104 et n'est exécutée qu'une fois, avec un masquage d'ordre multiple. La sous-ronde 4 de la ronde 10 (étape 107.3.1 ) comprenant l'opération linéaire AddRoundKey est exécutée plusieurs fois avec un masquage d'ordre multiple au sein de la boucle 107, après une nouvelle génération de sous-clés (étape 107.1 ) et une étape de mise à jour du masque (étape 107.2) . The PRAES2 round algorithm uses the same encryption operations and has the same sub-rounds as the PRAES1 algorithm, but implements the concept of modularity. Thus, in the PRAES2 algorithm, the sub-round 1 comprising the AddRoundKey linear operation (step 104.1) is included in the iterative loop 104 and is executed multiple times with multi-order masking. The sub-round 2 comprising the non-linear operation SubByte (step 104.3) is executed several times in non-masked form, after a step of unmasking 104.2. The result of this sub-round is then masked again in step 104.4. The sub-round 3 which comprises the linear operation ShiftRow is outside the loop 04 and is executed only once in step 105, with multiple-order masking. The sub-round 4 of the rounds 1 to 9, which includes the linear operation MixColumn (step 106.1) is also outside the loop 104 and is executed only once, with multiple-order masking. Sub-round 4 of round 10 (step 107.3.1) comprising the AddRoundKey linear operation is executed multiple times with multi-order masking within loop 107 after a new generation of subkeys (step 107.1). ) and a step of updating the mask (step 107.2).
Il apparaîtra clairement à l'homme de l'art que divers autres algorithmes mettant en œuvre les principes de l'invention peuvent être prévus pour exécuter le procédé AES. L'invention s'applique de manière générale à tout procédé de chiffrement symétrique par bloc comprenant des rondes. Les modes de réalisation de l'invention reposant sur la notion de modularité s'appliquent à tout procédé de ce type dans lequel chaque ronde comporte une pluralité de sous-rondes. Des modes de réalisation d'un procédé de chiffrement selon l'invention peuvent ne mettre en oeuvre que le second aspect de l'invention relatif à la modularité des sous- rondes, sans le premier aspect de l'invention prévoyant un nombre d'exécutions variable des rondes en fonction de leur rang. De tels modes de réalisation peuvent donc comprendre un nombre identique d'exécutions de chaque ronde, mais un nombre différent d'exécutions de chaque sous-ronde au sein d'une ronde exécutée plusieurs fois, certaines sous-rondes étant exécutées une seule fois, de préférence sous forme masquée, d'autres étant exécutées plusieurs fois, sous forme masquée ou non. It will be apparent to those skilled in the art that various other algorithms embodying the principles of the invention may be provided to perform the AES method. The invention is generally applicable to any symmetrical block ciphering method comprising rounds. Embodiments of the invention based on the concept of modularity apply to any such process in which each round has a plurality of sub-rounds. Embodiments of an encryption method according to the invention may implement only the second aspect of the invention relating to the modularity of the sub-rounds, without the first aspect of the invention providing a number of executions variable round according to their rank. Such embodiments may therefore comprise an identical number of executions of each round, but a different number of executions of each sub-round within a round executed several times. Sometimes, some sub-rounds being executed once, preferably in masked form, others being executed several times, in masked form or not.
Un microcircuit configuré pour exécuter un procédé selon l'invention est lui-même susceptible de divers modes de réalisation. Par exemple, les algorithmes figurant en Annexe 2 et Annexe 3 peuvent être exécutés par le CPU du processeur principal ou en partie par le CPU et par un coprocesseur. Notamment les algorithmes PDES1 , PDES2, PTDES, PAES1 , PAES2 peuvent être exécutés par le CPU et les algorithmes de rondes PRDES1 , PRDES2, PRAES1 , PRAES2 être exécutés par un coprocesseur ou des accélérateurs hardwares. Les algorithmes PRDES2 et PRAES2 basés sur le principe de modularité peuvent avantageusement être exécutés par un coprocesseur modulaire ou plusieurs accélérateurs hardwares en parallèle formant l'équivalent d'un coprocesseur modulaire, permettant au CPU d'appeler les fonctions de sous-ronde chacune indépendamment de l'autre, avec ou sans masquage, pour une exécution simple ou multiple de ces fonctions. A microcircuit configured to execute a method according to the invention is itself capable of various embodiments. For example, the algorithms in Appendix 2 and Appendix 3 can be run by the CPU of the main processor or in part by the CPU and a coprocessor. In particular, the PDES1, PDES2, PTDES, PAES1, PAES2 algorithms can be executed by the CPU and the rounding algorithms PRDES1, PRDES2, PRAES1, PRAES2 can be executed by a coprocessor or hardware accelerators. The PRDES2 and PRAES2 algorithms based on the principle of modularity can advantageously be executed by a modular coprocessor or several hardwares in parallel forming the equivalent of a modular coprocessor, allowing the CPU to call the sub-round functions each independently of the other, with or without masking, for single or multiple execution of these functions.
La figure 8 représente schématiquement un exemple de dispositif sécurisé SDV comprenant un microcircuit MCT selon l'invention, monté sur un support CD, par exemple une carte plastique. Le microcircuit MCT comprend un processeur PROC incluant une unité centrale de traitement (CPU), un coprocesseur CPROC couplé au processeur, une interface de communication ICCT couplée au processeur, une mémoire MEM1 couplée au processeur principal, un générateur aléatoire ou pseudoaléatoire RGEN couplé au processeur principal et/ou au coprocesseur. Ces éléments PROC, CPROC, ICCT MEM1 , RGEN peuvent être intégrés sur une même puce de semi-conducteur ou, pour certains, être intégrés dans des puces de semi-conducteur différentes qui sont interconnectées par un circuit imprimé ou autre support d'interconnexion. FIG. 8 schematically represents an example of an SDV secure device comprising an MCT microcircuit according to the invention, mounted on a CD medium, for example a plastic card. The microcircuit MCT comprises a processor PROC including a central processing unit (CPU), a coprocessor CPROC coupled to the processor, an ICCT communication interface coupled to the processor, a memory MEM1 coupled to the main processor, a random or pseudo-random generator RGEN coupled to the processor main and / or coprocessor. These elements PROC, CPROC, ICCT MEM1, RGEN can be integrated on the same semiconductor chip or, for some, be integrated in different semiconductor chips which are interconnected by a printed circuit or other interconnect medium.
Le circuit ICCT peut être du type à contact (port de communication filaire) ou sans contact (interface NFC, Wifi, Bluetooth®, etc.) ou les deux. Dans certaines applications, notamment dans le cadre d'une procédure d'authentification du dispositif SDV, le message à chiffrer M est reçu par l'intermédiaire du circuit d'interface de communication ICCT et le message chiffré C est également communiqué à l'extérieur par l'intermédiaire de ce circuit d'interface. The ICCT circuit can be of the contact type (wired communication port) or contactless (NFC interface, Wifi, Bluetooth®, etc.) or both. In certain applications, especially in the context of an authentication procedure of the SDV device, the message to be encrypted M is received via the communication interface circuit ICCT and the encrypted message C is also communicated externally by the intermediate of this interface circuit.
La mémoire MEM1 peut comprendre une zone mémoire volatile et une zone mémoire non volatile programmable électriquement. La mémoire programme non volatile peut comprendre une zone sécurisée comportant une clé secrète K. Le générateur aléatoire ou pseudo-aléatoire RGEN est utilisé par le processeur ou le coprocesseur pour générer les fausses clés et/ou des masques aléatoires du type décrit plus haut. Le coprocesseur peut-être dédié à l'exécution des rondes d'un procédé de chiffrement déterminé, ou être de type modulaire comme décrit plus haut, pour l'exécution de fonctions hardwares permettant au processeur d'exécuter les sous-rondes chacune indépendamment de l'autre. The memory MEM1 may comprise a volatile memory zone and an electrically programmable non-volatile memory zone. The non-volatile program memory may comprise a secure zone comprising a secret key K. The random or pseudo-random generator RGEN is used by the processor or the coprocessor to generate the false keys and / or random masks of the type described above. The coprocessor may be dedicated to executing the rounds of a determined encryption method, or may be of modular type as described above, for the execution of hardware functions allowing the processor to execute the sub-rounds independently of each other. the other.
ANNEXE 1 (faisant partie intégrante de la description)ANNEX 1 (forming part of the description)
Tableau 1 Table 1
Tableau 2 Table 2
Tableau 3 Table 3
Tableau 4 - Procédé DES (Cf. FIPS PUB 46-3 du NIST) Table 4 - DES process (see FIPS PUB 46-3 of NIST)
Sous-ronde Abréviation^) Désignation Désignation  Sub-round Abbreviation ^) Designation Designation
(français) (anglais)  (French English)
Sous-ronde 1 E PermutationExpansive ExpansivePermutation Sub-round 1 E PermutationExpansive ExpansivePermutation
Sous-ronde 2 XOR XOR (OU Exclusif) XOR (Exclusive OR)Sub-round 2 XOR XOR (OR Exclusive) XOR (Exclusive OR)
Sous-ronde 3 S Substitution SubstitutionSub-round 3 S Substitution Substitution
Sous-ronde 4 P PermutationSimple Permutation Sub-round 4P PermutationSimple Permutation
(*) Abréviation formant la désignation officielle des sous-rondes dans la norme FIPS PUB 46-3 (Fédéral Information Processing Standard) du NIST (National Institute of Standards and Technology). ( * ) Abbreviation forming the official sub-round designation in the FIPS PUB 46-3 (Federal Information Processing Standard) of the National Institute of Standards and Technology (NIST).
Tableau 5 - Procédé AES (Cf. FIPS PUB 197 du NIST) Table 5 - AES process (see FIPS PUB 197 from NIST)
(**) Désignation officielle utilisée dans la norme FIPS PUB 197 du NIST. ( ** ) Official designation used in FIPS PUB 197 of NIST.
ANNEXE 2 (faisant partie intégrante de la description) Algorithme PDES1 (DES protégé) ANNEX 2 (integral part of the description) PDES1 algorithm (protected DES)
Données d'entrée : Input data :
- clé - key
- M message à chiffrer  - M message to encrypt
- N1 nombre d'exécutions maximum d'une ronde - N1 maximum number of executions of a round
- NRtoP nombre de rondes à protéger  - NRtoP number of rounds to be protected
Donnée de sortie : Exit data:
- Message chiffré C=DES(M, K)=PDES1(M, K, N1, NRtoP)  Encrypted message C = DES (M, K) = PDES1 (M, K, N1, NRtoP)
Début : Start:
(1) K0=K (1) K 0 = K
(2) Générer N1 -1 fausses clés (K K2, KM-I) (2) Generate N1 -1 false keys (KK 2 , KM-I)
(3) M=IP(M)  (3) M = IP (M)
(4) Partager M en deux blocs de 32 bits L0 et Ro (4) Share M into two 32-bit blocks L 0 and Ro
l_o=32 bits les plus forts de M (partie haute)  l_o = 32 strongest bits of M (top part)
Ro=32 bits les plus faibles de M (partie basse)  Ro = 32 weakest bits of M (lower part)
(5) Pour i de 1 à 16 faire:  (5) For i from 1 to 16 do:
(6) Si (i < NRtoP) ou (i > λ -NRtoP) alors  (6) If (i <NRtoP) or (i> λ -NRtoP) then
(6.1 ) n=min(i-1 , 16-i)  (6.1) n = min (i-1, 16-i)
(6.2) Ni= N1/(2n) (6.2) Ni = N1 / ( 2n )
(6.3) (U Ri)=PRDES1 (L , R , i, N,) [Ronde protégée] (6.3) (U Ri) = PRDES1 (L, R, i, N,) [Protected round]
(7) Sinon(7) Otherwise
(7.2) (U, Ri)=PRDES1 (L , R , i, N,) [Ronde non protégée] (7.2) (U, Ri) = PRDES1 (L, R, i, N,) [Round unprotected]
(8) C=IPinverse (R16 | L16) (8) C = inverse IP (R 16 | L 16 )
(9) Retourner C  (9) Return C
Fin End
Algorithme PRDES1 (ronde DES protégée) PRDES1 algorithm (protected DES round)
Notation : Rating:
- i : rang de la ronde traitée - i: rank of the treated round
- Nj : nombre d'exécutions d'une ronde de rang i  - Nj: number of executions of a round of rank i
- N1 (Ni avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)  - N1 (Ni with i = 1): maximum number of executions of a round (first and last)
Données d'entrée : Input data :
- clés (Ko, Κι, K2, Kw-i) ou sous-clés d'une ronde précédente - keys (Ko, Κι, K2, Kw-i) or subkeys from a previous round
- couple (Li-i, R )  - couple (Li-i, R)
- i numéro de ronde  - i round number
- Nj nombre d'exécutions Donnée de sortie :  - Nj number of executions Output data:
- (Li, Ri)=PRDES1(LM, Ri.i, i, N,) - (Li, Ri) = PRDES1 (L M , Ri.i, i, N,)
Début : Start:
(10) Soient C, D, E, F quatre tableaux de 4 octets  (10) Let C, D, E, F be four 4-byte arrays
(1 1 ) Générer N1 sous-clés (SKii0, SKi: 1, SKi 2, .... SKiiNi-i) pour la ronde i à partir des clés Ko, K1, K, KNI-I OU des sous-clés d'une ronde précédente (1 1) Generate N1 subkeys (SK ii0 , SK i: 1 , SK i 2 , .... SK iiN ii) for round i from the keys Ko, K1, K Σ , KNI-I OR subkeys from a previous round
(12) Générer une permutation aléatoire P={po, ...p/v/- } dans l'intervalle j=[0, N,--1] (12) Generate a random permutation P = {po, ... p / v / -} in the interval j = [0, N, - 1]
(13) Pour j de 0 à (Λ/,-ί) faire: (13) For j from 0 to (Λ /, - ί) do:
(13. 1) TR=R , TL=L,-I (13. 1) T R = R, TL = L, -I
(13.2) W =R  (13.2) W = R
(13.3) TR= PermutationExpansive(TR) [Sous-ronde 1] (13.3) T R = PermutationExpansive (T R ) [Sub-round 1]
( 3.4) TR=TR XOR SKi,Pj [Sous-ronde 2] (3.4) T R = TR XOR SKi, Pj [Sub-round 2]
( 3.5) TR=Substitution(TR) [Sous-ronde 3] (3.5) T R = Substitution (T R ) [Sub-round 3]
(13.6) TR=PermutationSimple(TR) XOR Tl [Sous-ronde 4] (13.6) T R = SimpleSwitch (T R ) XOR T l [Sub-round 4]
(13.7) Si pj=0 alors  (13.7) If pj = 0 then
C=W  C = W
D =TR D = T R
(13.8) Si pj≠ 0 alors  (13.8) If pj ≠ 0 then
E=W  E = W
F=TR F = T R
(14) Li=C, Ri=D  (14) Li = C, Ri = D
(15) Retourner (Li.Ri)  (15) Return (Li.Ri)
Fin Algorithme PTDES (triple DES protégé) End PTDES algorithm (Triple DES protected)
Données d'entrée : Input data :
- K et K' clés de cryptographie - K and K 'cryptography keys
- M message à chiffrer  - M message to encrypt
- N1 (N, avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière) - N1 (N, with i = 1): maximum number of executions of a round (first and last)
- NRtoP : nombre de rondes à protéger - NRtoP: number of rounds to protect
Sortie : Exit :
Message chiffré C = TDES(M,K, K =DES(DES (DES(M, K), Κ'), K) Encoded message C = TDES (M, K, K = DES (DES (M, K), Κ '), K)
= P1DES(M,K,K',N1, NRtoP)  = P1DES (M, K, K ', N1, NRtoP)
Début : Start:
(20) C=PDES1 (M,K,N1 ,NRtoP) [DES protégé selon l'invention : algorithme PDES1] (21 a) C=DES"1(C,K') [DES"1 classique sans protection] Ou, alternativement : (20) C = PDES1 (M, K, N1, NRtoP) [Protected DES according to the invention: PDES1 algorithm] (21 a) C = DES "1 (C, K ') [DES " 1 conventional without protection] Or , alternatively:
(21 b) C=PDES1"1((C,K',1 ,0) [PDES1"1 sans protection] (21 b) C = PDES1 "1 ((C, K ', 1, 0) [PDES1 " 1 without protection]
(22) C=PDES1 (C, K, N1 , NRtoP) (22) C = PDES1 (C, K, N1, NRtoP)
(23) Retourner C (23) Return C
Fin End
Algorithme PAES1 (AES protégé) PAES1 algorithm (protected AES)
Données d'entrée : Input data :
- K clé de cryptographie  - K cryptography key
- M message à chiffrer - M message to encrypt
- N1 nombre maximal d'exécutions d'une ronde  - N1 maximum number of executions of a round
- NRtoP nombre de rondes à protéger  - NRtoP number of rounds to be protected
Données de sortie : Output data:
- Message chiffré C=AES(M, K)=PAES1 (M, K, N1, NRtoP) Ciphered message C = AES (M, K) = PAES1 (M, K, N1, NRtoP)
Début : Start:
(30) K0=K (30) K 0 = K
(31 ) Générer N1 -1 fausses clés (K1t K2, KN1.i) (31) Generate N1 -1 false keys (K 1t K 2 , K N1 .i)
(32) R0=M (32) R 0 = M
(33) Pour i de 1 à 10 faire :  (33) For i from 1 to 10 do:
(34) Si (i < NRtoP) ou (i > W-NRtoP) alors (34) If (i <NRtoP) or (i> W-NRtoP) then
0-i); (R , i, Ni) [Ronde protégée]0-i); (R, i, Ni) [Protected Round]
(35) Sinon (35) Otherwise
(35.1 ) Ni=1  (35.1) Ni = 1
(35.2) Ri=PRAES1 (Ri-i, i, Ni) [Ronde non protégée] (36) C=R10 (35.2) R1 = PRAES1 (Ri-i, i, Ni) [Unprotected round] (36) C = R 10
(37) Retourner C  (37) Return C
Fin End
Algorithme PRAES1 (ronde AES protégée) PRAES1 algorithm (protected AES round)
Données d'entrée : Input data :
- clés {K0, Ki, K2, . ., KNI-I) OU sous-clés d'une ronde précédente keys {K 0 , K 1 , K 2 ,. ., KNI-I) OR sub-keys from a previous round
- message R , 16 octets  - message R, 16 bytes
- i numéro de ronde  - i round number
- Ni : nombre d'exécutions d'une ronde de rang i  - Ni: number of executions of a round of rank i
- N1 (Ni avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)  - N1 (Ni with i = 1): maximum number of executions of a round (first and last)
Donnée de sortie : Exit data:
- Ri=PRAES1 (Ri-i , i, Ni)  - Ri = PRAES1 (Ri-i, i, Ni)
Début : Start:
(40) Soient C, D deux tableaux de 16 octets  (40) Let C, D be two tables of 16 bytes
(41 ) Générer N1 sous-clés (SK/^o, SKj.1ti, SK,.f,2, ■■·, SKj-1iNi-i) à partir des clés K0, Ki, K2, .... KNI-I ou des sous-clés d'une ronde précédente (41) Generate N1 subkeys (SK / o, SKj. 1t i, SK, .f, 2, ■■ ·, SKj- 1iN ii) from the keys K 0 , K i, K 2 , ... KNI-I or subkeys from a previous round
(42) Générer une permutation aléatoire P={po,•■•PM-Î} dans l'intervalle j=[0, Nj-1](42) Generate a random permutation P = {po, • ■ • PM- Î } in the interval j = [0, Nj-1]
(43) Pour j de 0 à (Λ/,-7) faire: (43) For j from 0 to (Λ /, - 7) do:
(43.1 ) W=Rn  (43.1) W = Rn
(43.2) W=AddRoundKey(W, SKM lpj) [Sous-ronde 1 ] (43.2) W = AddRoundKey (W, SK M l p j ) [Sub-round 1]
(43.3) W=SubByte(W) [Sous-ronde 2]  (43.3) W = SubByte (W) [Sub-round 2]
(43.4) W=ShiftRow(W) [Sous-ronde 3]  (43.4) W = ShiftRow (W) [Sub-round 3]
(43.5) Si (i≠ 10) alors [Sous-ronde 4 des rondes 1 à 9]  (43.5) If (i ≠ 10) then [Sub-round 4 of rounds 1 to 9]
W=MixColumn(W)  W = MixColumn (W)
(43.6) Si (i=10) alors [Sous-ronde 4 de la ronde 10]  (43.6) If (i = 10) then [Sub-round 4 of round 10]
(43.6.1 ) Générer N1 sous-clés (SKi0,o, SKi0,i, SK10,2, SK10,NI-I) à partir des clés K0, Ku K2, KN1.i ou des sous-clés d'une ronde précédente (43.6.1) Generate N1 subkeys (SKi 0, o, SKi 0, i, SK 10 2 SK 10, NI-I) from the key K 0, K 2 Ku, K N1 .i or subkeys from a previous round
(43.6.2) W=AddRoundKey(W, SKi0,pj); (43.6.2) W = AddRoundKey (W, SKi 0 , pj );
(43.7) Si pj=0 alors C=W  (43.7) If pj = 0 then C = W
(43.8) Si pj≠ 0 alors D=W  (43.8) If pj ≠ 0 then D = W
(44) Ri=C  (44) Ri = C
(45) Retourner (Ri)  (45) Return (Ri)
Fin End
ANNEXE 3 (faisant partie intégrante de la description) Modes de réalisation mettant en oeuyre la notion de modularitéAPPENDIX 3 (integral part of the description) Embodiments implementing the concept of modularity
Algorithme PDES2 (DES protégé) PDES2 algorithm (protected DES)
Données d'entrée : Input data :
- clé - key
- M message à chiffrer - M message to encrypt
- N1 nombre d'exécutions maximum d'une ronde  - N1 maximum number of executions of a round
- NRtoP nombre de rondes à protéger  - NRtoP number of rounds to be protected
Donnée de sortie : Exit data:
- Message chiffré C=DES(M, K)=PDES2(M, K, N1, NRtoP) - Encrypted message C = DES (M, K) = PDES2 (M, K, N1, NRtoP)
Début : Start:
(50) K0=K (50) K 0 = K
(51 ) Générer N1 -1 fausses clés (K1t K2, KN1.i) (51) Generate N1 -1 false keys (K 1t K 2 , K N1 .i)
( 52) M=IP(M)  (52) M = IP (M)
(53) Partager M en deux blocs de 32 bits L0 et R0 (53) Share M in two blocks of 32 bits L 0 and R 0
l_o=32 bits les plus forts de M (partie haute)  l_o = 32 strongest bits of M (top part)
R0=32 bits les plus faibles de M (partie basse) R 0 = 32 weakest bits of M (lower part)
(54) Générer un masque aléatoire Uo de 8 octets  (54) Generate a Uo random mask of 8 bytes
(55) Partager U0 en deux blocs de 32 bits U0,L et U0,R (55) Share U 0 in two 32-bit blocks U 0 , L and U 0 , R
(56) l_o=L0 XOR U0,L, Ro=Ro XOR U0,R [Masquage] (56) 1 = L 0 XOR U 0 , L, Ro = Ro XOR U 0 , R [Masking]
(57) Pour i de 1 à 16 faire:  (57) For i from 1 to 16 do:
(58) Si alors , RM l U , i, Ni) [Ronde protégée](58) If then , R M l U, i, Ni) [Protected Round]
(59) Sinon (59) Otherwise
(59.1 ) Ni=1  (59.1) Ni = 1
RM, Un , i, Nj) [Ronde non protégée] (60) masquage]  RM, Un, i, Nj) [Round unprotected] (60) masking]
(61 )  (61)
(62) (62)
Fin Algorithme PRDES2 (ronde DES protégée) End PRDES2 Algorithm (protected DES round)
Notation : Rating:
- i : rang de la ronde traitée  - i: rank of the treated round
- Nj : nombre d'exécutions d'une ronde de rang i - Nj: number of executions of a round of rank i
- N1 (N, avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)  - N1 (N, with i = 1): maximum number of executions of a round (first and last)
Données d'entrée : Input data :
- clés (Ko, Κι, K2, KNI-I) OU sous-clés d'une ronde précédente  - keys (Ko, Κι, K2, KNI-I) OR subkeys from a previous round
- couple (Li-i, Rj.i) - couple (Li-i, Rj.i)
- masque aléatoire Ui-i=(Ui-i,L, UÎ-I,R)  random mask Ui-i = (Ui-i, L, Ui-I, R)
- i numéro de ronde  - i round number
- N, nombre d'exécutions Donnée de sortie : - N, number of executions Output data:
Début  beginning
(70) Soient C, D, E, F quatre tableaux de 4 octets  (70) Let C, D, E, F be four 4-byte arrays
(71 ) Générer N1 sous-clés (SKII0, SKi:i, SKII2, SKI,NI-I) à partir des clés Ko, Ki, K2, KN I OU des sous-clés d'une ronde précédente (71) Generate N1 subkeys (SK II0 , SK i: i, SK II2 , SKI , NI-I) from the keys Ko, Ki, K2, KN I OR subkeys from a previous round
(72) Générer une permutation aléatoire P={po, - -P -Î} dans l'intervalle j=[0, N,-1](72) Generate a random permutation P = {po, - -P - Î } in the interval j = [0, N, -1]
(73) TR=RÎ-I, TL=L 1 (73) SI = Î R -I, T L = L 1
(74) W =RM (74) W = R M
(75) TR= PermutationExpansive(TR) [Sous-ronde 1 masquée] (75) T R = PermutationExpansive (T R ) [Masked Sub-Round 1]
(76) Pour j de 0 à (Λ/,-7) faire:  (76) For j from 0 to (Λ /, - 7) do:
(76.1 ) TR=TR XOR SKi.pj [Sous-ronde 2 masquée] (76.1) T R = T R XOR SKi.pj [Sub-round 2 hidden]
(76.2) TR=TR XOR PermutationExpansive(Ui.i,R) [Démasquage] (76.2) T R = TR XOR PermutationExpansive (Ui.i , R) [Unmasking]
(76.3) TR=Substitution(TR) [Sous-ronde 3 non masquée] (76.3) T R = Substitution (T R ) [Sub-round 3 unmasked]
(76.4) TR=TR XOR Ui.1 ,R [Masquage] (76.4) TR = T R XOR Ui.1, R [Masking]
(76.5) Si ppO alors  (76.5) If ppO then
C=W  C = W
D=TR D = T R
(76.6) Si Pj≠ 0 alors (76.6) If P j ≠ 0 then
E=W  E = W
F=TR F = T R
(77) D=PermutationSimple(D) XOR TL [Sous-ronde 4 masquée] (77) D = PermutationSimple (D) XOR T L [Masked Sub-Round 4]
(78) Générer un masque aléatoire Ui=(Ui,L, U,,R) [Changement du masque pour la ronde suivante]  (78) Generate a random mask Ui = (Ui, L, U ,, R) [Changing the mask for the next round]
(79) C=C XOR Uj,i_ XOR UÎ-LR, D=D XOR PermutationSimpleiUi.-i.R) XOR UÎ,R XOR Uj- iL [Correction du masque] (79) C = C XOR Uj, U XOR i_ Î -LR, D = D XOR PermutationSimpleiUi.-iR) Î U XOR R XOR Uj- iL [correction mask]
(80) Li=C, Ri=D, Ui=Ui,L|Ui,R (80) Li = C, Ri = D, Ui = Ui, L | Ui , R
(81 ) Retourner (L„ Ri, Ui)  (81) Return (L "Ri, Ui)
Fin Algorithme PAES2 (AES protégé) End PAES2 algorithm (protected AES)
Données d'entrée : Input data :
- K clé de cryptographie  - K cryptography key
- M message à chiffrer - M message to encrypt
- N1 nombre maximal d'exécutions d'une ronde  - N1 maximum number of executions of a round
- NRtoP nombre de rondes à protéger  - NRtoP number of rounds to be protected
Données de sortie : Output data:
- Message chiffré C=AES(M,K)=PAES2(M, K, N1, NRtoP) Ciphered message C = AES (M, K) = PAES2 (M, K, N1, NRtoP)
Début : Start:
(90) K0=K (90) K 0 = K
(91 ) Générer N1 -1 fausses clés (Ki, K2, KNi-i) (91) Generate N1 -1 false keys (Ki, K 2 , K N ii)
(92) Générer un masque aléatoire Uo de 16 octets  (92) Generate a Uo random mask of 16 bytes
(93) R0=M XOR U0 [Masquage] (93) R 0 = M XOR U 0 [Masking]
(94) Pour i de 1 à 10 faire :  (94) For i from 1 to 10 do:
(95) Si alors , i, Ni) [Ronde protégée](95) If then , i, Ni) [Protected Round]
(96) Sinon (96) Otherwise
(96.1 ) Ni=1  (96.1) Ni = 1
(96.2) (R, Ui)=PRAES2(Ri-1, Un, i, Ni) [Ronde non protégée] (97) C=Rio XOR U-io [Démasquage] (96.2) (R, U i ) = PRAES2 (R i-1 , Un, i, Ni) [Unprotected round] (97) C = Rio XOR U-10 [Unmasking]
(98) Retourner C  (98) Return C
Fin End
Algorithme PRAES2 (ronde AES protégée) PRAES2 algorithm (protected AES round)
Données d'entrée :  Input data :
- clés (K0, Κι, K2, KM-I) OU sous-clés d'une ronde précédente - keys (K 0 , Κι, K2, KM-I) OR subkeys from a previous round
- message Rj.-i , 16 octets  - Rj.-i message, 16 bytes
- Masque aléatoire UM - UM random mask
- i numéro de ronde  - i round number
- Nj : nombre d'exécutions d'une ronde de rang i  - Nj: number of executions of a round of rank i
- N1 (Ni avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière) Donnée de sortie :  - N1 (Ni with i = 1): maximum number of executions of a round (first and last) Output data:
- (Ri, Ui)=PRAES2(Ri-i, Ui-1 , i, Ν,) - (Ri, U i ) = PRAES2 (R i- i, U i-1 , i, Ν,)
Début : Start:
(100) Soient C, D deux tableaux de 16 octets  (100) Let C, D be two tables of 16 bytes
(101 ) Générer N1 sous-clés (SKi:0, SKj -i, SKii2, .... SKi Ni-i) pour la ronde i, à partir des clés K0l K-i, K2, Λ/ OU des sous-clés d'une ronde précédente (101) Generate N1 sub-keys (SK i: 0, SKJ -i, SKi i2, .... SK i N ii) for the i-round, from the key K 0l Ki, K 2, Λ / OR of subkeys from a previous round
(102) Générer une permutation aléatoire P={po,•■•PM-Î} dans l'intervalle j=[0, N,-1](102) Generate a random permutation P = {po, • ■ • PM- Î } in the interval j = [0, N, -1]
(103) W=RM (103) W = R M
(104) Pour j de 0 à (Nt-1) faire: (104) For j from 0 to (N t -1) do:
(104.1 ) W=AddRoundKey(W, SKi,pj) [Sous-ronde 1 masquée] (104.1) W = AddRoundKey (W, SKi , pj ) [Masked Sub-Round 1]
(104.2) W=W XOR U [Démasquage]  (104.2) W = W XOR U [Unmasking]
(104.3) W=SubByte(W) [Sous-ronde 2 non masquée]  (104.3) W = SubByte (W) [Sub-round 2 unmasked]
(104.4) W=W XOR Un [Masquage]  (104.4) W = W XOR A [Masking]
(104.5) Si pj=0 alors C=W  (104.5) If pj = 0 then C = W
(104.6) Si pj≠0 alors D=W  (104.6) If pj ≠ 0 then D = W
(105) C=ShiftRow(C) [Sous-ronde 3 masquée]  (105) C = ShiftRow (C) [Sub-round 3 hidden]
(106) Générer un masque aléatoire U, de 16 octets [Changement du masque pour la ronde suivante]  (106) Generate a 16-byte random mask U [Change the mask for the next round]
(106) Si (i≠ 10) alors  (106) If (i ≠ 10) then
(106.1 ) C=MixColumn(C) [Sous-ronde 4 masquée des rondes 1 à 9] (106.1) C = MixColumn (C) [Rounded sub-round 4 of rounds 1-9]
(106.2) C=C XOR U, XOR MixColumn(ShiftRow(UM ) [Correction du masque](106.2) C = XOR C, XOR MixColumn (ShiftRow (UM) [Mask Correction]
(107) Si (i=10) alors [Sous-ronde 4 de la ronde 10] (107) If (i = 10) then [Sub-round 4 of round 10]
(107.1 ) Générer N1 sous-clés (S ,ο, SKiti, SKi:2, S ^Î-Î) pour la ronde 10, à partir des clés Ko, K1, K2, KN1.i ou sous-clés d'une ronde précédente (107.1) Generate N1 subkeys (S , ο, SK it i, SK i: 2 , S ^ Î - Î ) for round 10, from the keys Ko, K1, K 2 , K N1 .i or under of a previous round
(107.2) W=C XOR Ui XOR ShiftRow(Ui--i ) [Correction du masque] (107.2) W = XOR Xi XOR ShiftRow (Ui - i) [Mask Correction]
(107.3) Pour j de 0 à (Nt-1) faire: (107.3) For j from 0 to (Nt-1) do:
(107.3.1 ) W=AddRoundKey(W, SKi0,Pj) [Opération sur valeur masquée] (107.3.1) W = AddRoundKey (W, SKi 0, Pj ) [hidden value operation]
(107.3.2) Si pj=0 alors C=W  (107.3.2) If pj = 0 then C = W
(107.3.3) Si pj≠0 alors D=W  (107.3.3) If pj ≠ 0 then D = W
(107.4) W=C  (107.4) W = C
(108) R=C  (108) R = C
(109) Retourner (R, Ui)  (109) Return (R, Ui)
Fin End

Claims

Revendications claims
1. Procédé de chiffrement symétrique (CP3, CP4) exécuté par un microcircuit (MCT), pour la transformation d'un message (M) en un message chiffré (C), à partir d'une clé secrète (K, K0), comprenant une première ronde (RD-i), des rondes intermédiaires (RD2, RDj, RDNM) et une dernière ronde (RDNr), 1. A method of symmetric encryption (CP3, CP4) executed by a microcircuit (MCT), for the transformation of a message (M) into an encrypted message (C), from a secret key (K, K 0 ) , comprising a first round (RD-i), intermediate rounds (RD 2 , RDj, RDNM) and a last round (RDNr),
caractérisé en ce qu'il comprend plusieurs exécutions (N1 , ΝΝΓ) de la première et de la dernière ronde, respectivement à partir de la clé secrète (K, Ko) et d'un premier ensemble de fausses clés (Ki - KNI-I), et un nombre d'exécutions (N,) d'au moins une ronde intermédiaire (RDj) inférieur au nombre d'exécutions (N1 , NNr) de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés (Ki - KNM) inclus dans le premier ensemble de fausses clés. characterized in that it comprises several executions (N1, ΝΝ Γ ) of the first and last round, respectively from the secret key (K, Ko) and a first set of false keys (Ki - KNI- I), and a number of executions (N,) of at least one intermediate round (RDj) smaller than the number of executions (N1, N Nr ) of the first and last rounds, respectively from the secret key and a set of false keys (Ki - KNM) included in the first set of false keys.
2. Procédé selon la revendication 1 , comprenant une deuxième ronde (RD2), une avant-dernière ronde (RDNM) et plusieurs rondes intermédiaires (RDj), dans lequel les deux première rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires, et les deux dernières rondes sont exécutées un plus grand nombre de fois que les rondes intermédiaires. 2. Method according to claim 1, comprising a second round (RD 2 ), a penultimate round (RDNM) and several intermediate rounds (RDj), in which the first two rounds are executed a greater number of times than the rounds. intermediaries, and the last two rounds are executed more times than the intermediate rounds.
3. Procédé selon l'une des revendications 1 et 2, ne comprenant qu'une seule exécution d'au moins une ronde intermédiaire (RDj). 3. Method according to one of claims 1 and 2, comprising only one execution of at least one intermediate round (RDj).
4. Procédé selon l'une des revendications 1 à 3, comprenant : 4. Method according to one of claims 1 to 3, comprising:
- pour un nombre déterminé (NRtoP) de rondes successives à partir de la première, un nombre d'exécutions des rondes décroissant selon une règle de décroissance qui est fonction du rang (i) des rondes considérées relativement à la première ronde, puis for a determined number (NRtoP) of successive rounds starting from the first, a number of executions of the rounds decreasing according to a rule of decay which is a function of the rank (i) of the rounds considered relative to the first round, then
- pour un nombre déterminé (NRtoP) de rondes successives jusqu'à la dernière, un nombre d'exécutions des rondes croissant selon une règle de croissance qui est fonction du rang des rondes considérées relativement à la dernière ronde. - for a given number (NRtoP) of successive rounds until the last one, a number of executions of the rounds increasing according to a rule of growth which is function of the rank of the rounds considered relative to the last round.
5. Procédé selon la revendication 4, dans lequel la règle de décroissance est une règle en 1/(2n), n étant un paramètre fonction du rang des rondes considérées relativement à la première ou à la dernière ronde. 5. The method according to claim 4, wherein the decay rule is a rule in 1 / (2 n ), n being a parameter depending on the rank of the rounds considered relative to the first or the last round.
6. Procédé selon l'une des revendications 1 à 5, dans lequel chaque ronde comprend des sous-rondes (SRD1-SRD4), et dans lequel l'exécution multiple de chaque ronde comprend l'exécution multiple de chaque sous-ronde de la ronde. The method according to one of claims 1 to 5, wherein each round comprises sub-rounds (SRD1-SRD4), and wherein the multiple execution of each round comprises the multiple execution of each sub-round of the round.
7. Procédé selon l'une des revendications 1 à 5, dans lequel chaque ronde comprend des sous-rondes (SRD1 -SRD4), et dans lequel l'exécution multiple d'une ronde comprend l'exécution multiple d'au moins une sous-ronde, et une seule exécution d'au moins une autre sous-ronde. 7. Method according to one of claims 1 to 5, wherein each round comprises sub-rounds (SRD1-SRD4), and wherein the multiple execution of a round comprises the multiple execution of at least one sub-round. -round, and a single run of at least one other sub-round.
8. Procédé selon la revendication 7, dans lequel l'exécution unique de la sous- ronde est une exécution masquée en ordre simple ou multiple. The method of claim 7, wherein the single execution of the sub-round is a masked execution in single or multiple order.
9. Procédé selon la revendication 7, dans lequel l'exécution multiple de la sous- ronde est une exécution masquée en ordre simple. The method of claim 7, wherein the multiple execution of the sub-round is a masked execution in simple order.
10. Procédé selon l'une des revendications 1 à 9, conforme aux spécifications10. Method according to one of claims 1 to 9, according to the specifications
DES, triple DES, ou AES. DES, triple DES, or AES.
1 1. Microcircuit (MCT) configuré pour exécuter un procédé de chiffrement symétrique (CP3, CP4), permettant de transformer un message (M) en un message chiffré (C), à partir d'une clé secrète (K, K0), le procédé comprenant une première ronde (RD-i ), des rondes intermédiaires (RD2, RD,, RDN ), et une dernière ronde (RDNR), 1 1. Microcircuit (MCT) configured to execute a symmetric encryption method (CP3, CP4), for transforming a message (M) into an encrypted message (C), from a secret key (K, K 0 ) , the method comprising a first round (RD-i), intermediate rounds (RD2, RD, RDN), and a last round (RD NR ),
microcircuit caractérisé en ce qu'il est configuré pour exécuter plusieurs fois (N1 , ΝΝΓ) la première et la dernière ronde, respectivement à partir de la clé secrète et d'un premier ensemble de fausses clés (K1 - KNi-i ), et pour exécuter au moins une ronde intermédiaire (RD,) un nombre de fois (N,) inférieur au nombre d'exécutions (N1 , ΝΝΓ) de la première et dernière rondes, respectivement à partir de la clé secrète et d'un ensemble de fausses clés (Ki - KN,-I) inclus dans le premier ensemble de fausses clés. microcircuit characterized in that it is configured to execute several times (N1, ΝΝ Γ ) the first and the last round, respectively from the secret key and a first set of false keys (K1 - K N ii), and to run at least one intermediate round (RD,) a number of times (N,) less than the number of executions (N1, ΝΝ Γ ) of the first and last rounds, respectively from the secret key and a set of false keys (Ki - KN, -I) included in the first set of false keys.
12. Microcircuit selon la revendication 1 1 , configuré pour n'exécuter qu'une fois au moins une ronde intermédiaire (RD,). 12. Microcircuit according to claim 1 1, configured to execute only once at least one intermediate round (RD,).
13. Microcircuit selon l'une des revendications 1 1 et 12, configuré pour exécuter des rondes comprenant des sous-rondes (SRD1 -SRD4), et pour exécuter le même nombre de fois toutes les sous-rondes d'une ronde, lors d'une exécution multiple d'une ronde. 13. Microcircuit according to one of claims 1 1 and 12, configured to execute rounds comprising sub-rounds (SRD1-SRD4), and to execute the same number of times all the sub-rounds of a round, when 'Multiple execution of a round.
14. Microcircuit selon l'une des revendications 1 1 et 12, configuré pour exécuter des rondes comprenant des sous-rondes (SRD1 -SRD4), et pour n'exécuter qu'une fois au moins une sous-ronde et exécuter plusieurs fois une autre sous-ronde, lors d'une exécution multiple d'une ronde. 14. Microcircuit according to one of claims 1 1 and 12, configured to execute rounds comprising sub-rounds (SRD1 -SRD4), and to perform only once at least one sub-round and execute several times a another sub-round, when performing a multiple round.
15. Microcircuit selon l'une des revendications 13 ou 14, comprenant un coprocesseur modulaire (CPROC) configuré pour exécuter individuellement des opérations de chiffrement comprises dans des sous-rondes. 15. Microcircuit according to one of claims 13 or 14, comprising a modular coprocessor (CPROC) configured to perform individually encryption operations included in sub-rounds.
EP12821282.6A 2012-01-11 2012-12-21 Method of encryption protected against side channel attacks Withdrawn EP2803161A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1250272A FR2985624B1 (en) 2012-01-11 2012-01-11 ENCRYPTION METHOD PROTECTED AGAINST AUXILIARY CHANNEL ATTACKS
PCT/FR2012/000546 WO2013104837A1 (en) 2012-01-11 2012-12-21 Method of encryption protected against side channel attacks

Publications (1)

Publication Number Publication Date
EP2803161A1 true EP2803161A1 (en) 2014-11-19

Family

ID=47666406

Family Applications (1)

Application Number Title Priority Date Filing Date
EP12821282.6A Withdrawn EP2803161A1 (en) 2012-01-11 2012-12-21 Method of encryption protected against side channel attacks

Country Status (5)

Country Link
US (1) US20140351603A1 (en)
EP (1) EP2803161A1 (en)
CN (1) CN104094553B (en)
FR (1) FR2985624B1 (en)
WO (1) WO2013104837A1 (en)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3015726B1 (en) * 2013-12-24 2016-01-08 Morpho SECURE COMPARATIVE PROCESSING METHOD
US20160269175A1 (en) * 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
FR3040514B1 (en) 2015-09-02 2017-09-15 Stmicroelectronics Rousset DPA PROTECTION OF A RIJNDAEL ALGORITHM
FR3040515B1 (en) * 2015-09-02 2018-07-27 St Microelectronics Rousset VERIFYING THE RESISTANCE OF AN ELECTRONIC CIRCUIT TO HIDDEN CHANNEL ATTACKS
FR3040513B1 (en) * 2015-09-02 2018-11-16 Stmicroelectronics (Rousset) Sas PROTECTION OF A RIJNDAEL ALGORITHM
CN107547193A (en) * 2016-06-28 2018-01-05 埃沙尔公司 Make replacement operation from the method for side Multiple Channel Analysis
EP3264311B1 (en) 2016-06-28 2021-01-13 Eshard A protection method and device against a side-channel analysis
US10783279B2 (en) * 2016-09-01 2020-09-22 Atmel Corporation Low cost cryptographic accelerator
CN109039590A (en) * 2017-06-09 2018-12-18 深圳九磊科技有限公司 Memory, electronic equipment and its encipher-decipher method for preventing side-channel attack
EP3422176A1 (en) * 2017-06-28 2019-01-02 Gemalto Sa Method for securing a cryptographic process with sbox against high-order side-channel attacks
FR3074323B1 (en) 2017-11-30 2019-12-06 Idemia France METHOD AND DEVICE FOR CRYPTOGRAPHIC DATA PROCESSING
FR3078463A1 (en) 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas METHOD AND DEVICE FOR REALIZING SUBSTITUTED TABLE OPERATIONS
US11218291B2 (en) 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
FR3078419A1 (en) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas METHOD AND CIRCUIT FOR REALIZING A SUBSTITUTE OPERATION
FR3078464A1 (en) 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas METHOD AND CIRCUIT FOR IMPLEMENTING A SUBSTITUTION TABLE
JP7383985B2 (en) * 2019-10-30 2023-11-21 富士電機株式会社 Information processing device, information processing method and program
CN111010266B (en) * 2019-12-09 2023-04-07 广州市百果园信息技术有限公司 Message encryption and decryption, reading and writing method and device, computer equipment and storage medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2873523A1 (en) * 2004-07-22 2006-01-27 Sagem METHOD AND DEVICE FOR PERFORMING A CRYPTOGRAPHIC CALCULATION

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820576B1 (en) * 2001-02-08 2003-06-20 St Microelectronics Sa ENCRYPTION METHOD PROTECTED AGAINST ENERGY CONSUMPTION ANALYSIS, AND COMPONENT USING SUCH AN ENCRYPTION METHOD
DE10223175A1 (en) * 2002-05-24 2003-12-11 Infineon Technologies Ag Data encryption method e.g. for application in integrated circuit arrangements, uses part key as randomly selected key
EP1457858A1 (en) * 2003-03-14 2004-09-15 SCHLUMBERGER Systèmes Method for securing an electronic system comprising a cryptoprocessor
FR2858496B1 (en) * 2003-07-31 2005-09-30 Gemplus Card Int METHOD FOR SECURELY IMPLEMENTING AN RSA-TYPE CRYPTOGRAPHY ALGORITHM AND CORRESPONDING COMPONENT
US7716502B2 (en) * 2005-08-24 2010-05-11 Radu Muresan Current flattening and current sensing methods and devices
DE602006020010D1 (en) * 2005-12-19 2011-03-24 St Microelectronics Sa Protection of the execution of a DES algorithm
EP1873671B2 (en) * 2006-06-29 2018-08-22 STMicroelectronics International N.V. A method for protecting IC Cards against power analysis attacks
JP5197258B2 (en) * 2007-10-10 2013-05-15 キヤノン株式会社 Cryptographic processing circuit
EP2293487A1 (en) * 2009-09-08 2011-03-09 Thomson Licensing A method of diversification of a round function of an encryption algorithm

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2873523A1 (en) * 2004-07-22 2006-01-27 Sagem METHOD AND DEVICE FOR PERFORMING A CRYPTOGRAPHIC CALCULATION

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DAG ARNE OSVIK ET AL: "Cache attacks and Countermeasures: the Case of AES", INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH,, vol. 20050817:193724, 17 August 2005 (2005-08-17), pages 1 - 25, XP061001655 *
See also references of WO2013104837A1 *

Also Published As

Publication number Publication date
US20140351603A1 (en) 2014-11-27
FR2985624B1 (en) 2014-11-21
WO2013104837A1 (en) 2013-07-18
CN104094553B (en) 2018-08-31
WO2013104837A8 (en) 2014-08-07
FR2985624A1 (en) 2013-07-12
CN104094553A (en) 2014-10-08

Similar Documents

Publication Publication Date Title
WO2013104837A1 (en) Method of encryption protected against side channel attacks
EP2380305B1 (en) Cryptography circuit particularly protected against information-leak observation attacks by the ciphering thereof
EP1358732B2 (en) Secure encryption method and component using same
EP3228043B1 (en) Method of encryption with dynamic diffusion and confusion layers
CA2703874A1 (en) Method and devices for protecting a microcircuit from attacks for obtaining secret data
EP2380306A1 (en) Cryptography circuit protected against observation attacks, in particular of a high order
EP3139365B1 (en) Verification of the resistance of an electronic circuit to covert channel attacks
EP2499773A1 (en) Low-complexity electronic circuit protected by customized masking
EP3139363B1 (en) Protection of a rijndael algorithm
EP3300293B1 (en) Method for symmetric encryption or decryption by blocks
FR3097348A1 (en) Encryption Algorithm Execution Protection
EP3139364A1 (en) Dpa protection of a rijndael algorithm
FR2880750A1 (en) MICROPROCESSOR CARD AND CRYPTOGRAPHIC METHOD FOR PROTECTING A SECRET KEY
EP3300292A1 (en) Encryption or decryption method protected against side channel attacks
EP2315388B1 (en) Secured method for cryptographic calculation and corresponding electronic component.
EP2530867B1 (en) Cryptographic data-processing method
FR2922393A1 (en) TRACABLE SYSTEM FOR THE ENCRYPTION / ENCRYPTION OF DIFFUSED DIGITAL DATA
FR2825542A1 (en) METHOD BASED ON A ROUND REPETITION BLOCK ENCRYPTION ALGORITHM AND DEVICE USING THE SAME
WO2014096363A1 (en) Chaotic sequence generator
EP2599256B1 (en) Method and device for randomizing a secret key for protecting against attacks by auxiliary channels
FR3111440A1 (en) Protecting an encryption algorithm
FR3035293A1 (en)
EP2738974A1 (en) Method for deriving multiple cryptographic keys from a master key in a security microprocessor
EP2129115B1 (en) Method for updating security data in a security module and security module for implementing this method
FR2897216A1 (en) PROTECTION OF CRYPTOGRAPHIC ALGORITHM

Legal Events

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

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20140619

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 MK MT NL NO PL PT RO RS SE SI SK SM TR

RIN1 Information on inventor provided before grant (corrected)

Inventor name: ROUSSELLET, MYLENE

Inventor name: FEIX, BENOIT

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20160906

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

STAA Information on the status of an ep patent application or granted ep patent

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

18D Application deemed to be withdrawn

Effective date: 20180213