EP2803161A1 - Procede de chiffrement protege contre des attaques par canaux auxiliaires - Google Patents

Procede de chiffrement protege contre des attaques par canaux auxiliaires

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)
English (en)
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/fr
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

L'invention concerne un procédé de chiffrement symétrique par bloc (CP3) exécuté par un microcircuit, pour la transformation d'un message (M) en un message chiffré (C), à partir d'une clé secrète (K, Ko), comprenant une première ronde (RD-i), des rondes intermédiaires (RD2, RD|, RDNM) et une dernière ronde (RDNr). Selon l'invention, le procédé comprend plusieurs exécutions (N1, ΝΝ,) de la première et de la dernière ronde, et un nombre d'exécutions (Ni) d'au moins une ronde intermédiaire (RDj) inférieur au nombre d'exécutions (N1, ΝΝΓ) de la première et dernière rondes. Application notamment aux procédés DES, Triple DES, et AES.

Description

PROCEDE DE CHIFFREMENT PROTEGE CONTRE
DES ATTAQUES PAR CANAUX AUXILIAIRES
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.
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).
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.
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.
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.
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.
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,
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.
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.
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.
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.
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é.
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.
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.
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.
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.
Selon un mode de réalisation, le procédé ne comprend qu'une seule exécution d'au moins une ronde intermédiaire.
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.
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.
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.
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.
Selon un mode de réalisation, le procédé est conforme aux spécifications DES, triple DES, ou AES.
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.
Selon un mode de réalisation, le microcircuit est configuré pour n'exécuter qu'une fois au moins une ronde intermédiaire.
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 :
- la figure 1A précédemment décrite représente la structure d'un procédé de chiffrement par rondes classiques,
- la figure 1 B précédemment décrite représente la structure d'une ronde du procédé de la figure 1 ,
- la figure 2 précédemment décrite représente la structure d'un procédé de chiffrement AES classique,
- 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,
- la figure 4 représente la structure d'un mode de réalisation d'un procédé de chiffrement selon l'invention,
- la figure 5 illustre un avantage du procédé de la figure 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
- 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.
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.
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.
Selon l'invention, le procédé CP3 comprend les étapes suivantes :
- 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 ),
- 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,
- 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,
- 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,
RDNr-i , RDNr dont certaines ne sont pas représentées sur la figure 4 : Règle 1 :
- N1 > N2 > N3 > N4... > Ni avec au moins N1 > N2 ou N2 > N3,
- NNr≥ NN ≥ ΝΝΓ-2-≥ ΝΝΓ-3■·■≥ i avec au moins NNr > NNr-i ou NNr-i > NNr-2- Exemples :
- N1 > N2 > N3 > N4 ... > Ni et NNr > NNr-1 > NNr-2≥ NNr-3 ... > Ni
- N1 = N2 > N3 > N4 ... > Ni et NNr = NNr-i > NNr-2. >. NNr-3 ... > Ni
- N1 > N2 = N3 > N4 ... > Ni et NNr > NN = NNr-2.≥ NNr-3 -≥ Ni
- N1 > N2 > N3 = N4 ... = Ni et NNr > NNr-1 > NNr-2.= NNr-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 :
- 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
Si i < Is, alors N, = NNr-i+i,
Is étant un seuil définissant la "distance" d'une ronde relativement aux première et dernière rondes.
Exemple :
- N1 = NNr
- N2 = NN
- N3 = NNr-2
- etc. jusqu'au seuil 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.
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.
Règle 3 :
NRtoP = nombre de rondes à protéger
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) :
NRtoP = 3 (i.e. 3 rondes à protéger),
Si i > 3 et i < 16-3 (soit i < 13), alors 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.
Règle 4 :
NRtoP = nombre de rondes à protéger
Pour i de 1 à Nr faire :
Si i < NRtoP alors n = i-1 et Nj= N1/(2n)
Sinon :
Si i > Nr-NRtoP alors n = Nr-i et N|= N1/(2n)
Sinon :
Ni=1 (Règle 3)
La règle 4 peut être formulée plus simplement au moyen de l'opérateur "min" (i.e. "minimum de") :
NRtoP = nombre de rondes à protéger:
Pour i de 1 à Nr faire: Si i < NRtoP ou i > Nr-NRtoP, faire :
n = min(i-1 , Nr-i)
N|= N1/(2n)
Sinon :
(Règle 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.
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.
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.
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.
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.
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 .
Application au chiffrement 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.
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.
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.
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.
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.
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 :
- 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,
- 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.
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.
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é.
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.
Application au chiffrement TDES (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 :
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).
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.
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.
Modes de réalisation de l'invention basés sur la notion de modularité
Dans des modes de réalisation de l'invention fondés sur la notion de modularité, l'exécution multiple d'une ronde comprend :
- l'exécution multiple d'une ou plusieurs sous-rondes de la ronde considérée,
- une seule exécution d'une ou plusieurs autres sous-rondes de la ronde considérée.
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 :
- 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,
- 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,
- 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,
- 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
- 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-
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é.
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-
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.
Exemple de masquage d'une opération linéaire :
- M est un message,
- K est une clé secrète.
- Opération normale : C = M XOR K (combinaison du message avec la clé)
- 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,
Calculer C = M XOR U (masquage du message M avec le masque U),
Calculer C = C XOR K (combinaison du message masqué avec la clé),
Calculer C = C XOR U (démasquage)
L'opération protégée produit le même résultat que l'opération non protégée.
Exemple de masquage d'une opération non linéaire "S" :
- M est un message,
- K est une clé secrète,
- S est une table,
- X = K XOR M.
- Opération normale :
- Pour i = 0 à 7 faire :
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,).
- Opération protégée (masquée) :
- Tirer aléatoirement un masque U,
- Recalculer la table S pour obtenir une nouvelle table S' :
- Pour I = 0 à 256 faire
- S'(i XOR U) = S(i) XOR U
- Pour i = 0 à 7 faire :
X'i = X XOR U
Y'i = S'(X'i)
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.
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.
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 :
- 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,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, sans masquage
- Contre-mesure 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,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple,
- Contre-mesure 3 :
- les sous-rondes SRD1 , SRD2 et SRD4 sont exécutées plusieurs fois par ronde, sans masquage,
- la sous-ronde SRD3 est exécutée plusieurs fois par ronde, avec un masquage d'ordre simple,
- Contre-mesure 4 :
- les sous-rondes SRD1 , SRD2 et SRD4 sont exécutées plusieurs fois par ronde, avec un masquage d'ordre simple ou multiple,
- 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.
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
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 :
- les clés Ko à KN1-1 ou des sous-clés de la ronde précédente,
- 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 ),
- le numéro de ronde i (pour le calcul des sous-clés), et
- 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.
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.
Application au chiffrement AES
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.
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) .
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.
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.
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.
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.
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.
ANNEXE 1 (faisant partie intégrante de la description)
Tableau 1
Tableau 2
Tableau 3
Tableau 4 - Procédé DES (Cf. FIPS PUB 46-3 du NIST)
Sous-ronde Abréviation^) Désignation Désignation
(français) (anglais)
Sous-ronde 1 E PermutationExpansive ExpansivePermutation
Sous-ronde 2 XOR XOR (OU Exclusif) XOR (Exclusive OR)
Sous-ronde 3 S Substitution Substitution
Sous-ronde 4 P 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).
Tableau 5 - Procédé AES (Cf. FIPS PUB 197 du NIST)
(**) Désignation officielle utilisée dans la norme FIPS PUB 197 du NIST.
ANNEXE 2 (faisant partie intégrante de la description) Algorithme PDES1 (DES protégé)
Données d'entrée :
- clé
- M message à chiffrer
- N1 nombre d'exécutions maximum d'une ronde
- NRtoP nombre de rondes à protéger
Donnée de sortie :
- Message chiffré C=DES(M, K)=PDES1(M, K, N1, NRtoP)
Début :
(1) K0=K
(2) Générer N1 -1 fausses clés (K K2, KM-I)
(3) M=IP(M)
(4) Partager M en deux blocs de 32 bits L0 et Ro
l_o=32 bits les plus forts de M (partie haute)
Ro=32 bits les plus faibles de M (partie basse)
(5) Pour i de 1 à 16 faire:
(6) Si (i < NRtoP) ou (i > λ -NRtoP) alors
(6.1 ) n=min(i-1 , 16-i)
(6.2) Ni= N1/(2n)
(6.3) (U Ri)=PRDES1 (L , R , i, N,) [Ronde protégée]
(7) Sinon
(7.2) (U, Ri)=PRDES1 (L , R , i, N,) [Ronde non protégée]
(8) C=IPinverse (R16 | L16)
(9) Retourner C
Fin
Algorithme PRDES1 (ronde DES protégée)
Notation :
- i : rang de la ronde traitée
- Nj : nombre d'exécutions d'une ronde de rang i
- N1 (Ni avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)
Données d'entrée :
- clés (Ko, Κι, K2, Kw-i) ou sous-clés d'une ronde précédente
- couple (Li-i, R )
- i numéro de ronde
- Nj nombre d'exécutions Donnée de sortie :
- (Li, Ri)=PRDES1(LM, Ri.i, i, N,)
Début :
(10) Soient C, D, E, F quatre tableaux de 4 octets
(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
(12) Générer une permutation aléatoire P={po, ...p/v/- } dans l'intervalle j=[0, N,--1]
(13) Pour j de 0 à (Λ/,-ί) faire:
(13. 1) TR=R , TL=L,-I
(13.2) W =R
(13.3) TR= PermutationExpansive(TR) [Sous-ronde 1]
( 3.4) TR=TR XOR SKi,Pj [Sous-ronde 2]
( 3.5) TR=Substitution(TR) [Sous-ronde 3]
(13.6) TR=PermutationSimple(TR) XOR Tl [Sous-ronde 4]
(13.7) Si pj=0 alors
C=W
D =TR
(13.8) Si pj≠ 0 alors
E=W
F=TR
(14) Li=C, Ri=D
(15) Retourner (Li.Ri)
Fin Algorithme PTDES (triple DES protégé)
Données d'entrée :
- K et K' clés de cryptographie
- M message à chiffrer
- N1 (N, avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)
- NRtoP : nombre de rondes à protéger
Sortie :
Message chiffré C = TDES(M,K, K =DES(DES (DES(M, K), Κ'), K)
= P1DES(M,K,K',N1, NRtoP)
Début :
(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 :
(21 b) C=PDES1"1((C,K',1 ,0) [PDES1"1 sans protection]
(22) C=PDES1 (C, K, N1 , NRtoP)
(23) Retourner C
Fin
Algorithme PAES1 (AES protégé)
Données d'entrée :
- K clé de cryptographie
- M message à chiffrer
- N1 nombre maximal d'exécutions d'une ronde
- NRtoP nombre de rondes à protéger
Données de sortie :
- Message chiffré C=AES(M, K)=PAES1 (M, K, N1, NRtoP)
Début :
(30) K0=K
(31 ) Générer N1 -1 fausses clés (K1t K2, KN1.i)
(32) R0=M
(33) Pour i de 1 à 10 faire :
(34) Si (i < NRtoP) ou (i > W-NRtoP) alors
0-i); (R , i, Ni) [Ronde protégée]
(35) Sinon
(35.1 ) Ni=1
(35.2) Ri=PRAES1 (Ri-i, i, Ni) [Ronde non protégée] (36) C=R10
(37) Retourner C
Fin
Algorithme PRAES1 (ronde AES protégée)
Données d'entrée :
- clés {K0, Ki, K2, . ., KNI-I) OU sous-clés d'une ronde précédente
- message R , 16 octets
- i numéro de ronde
- Ni : nombre d'exécutions d'une ronde de rang i
- N1 (Ni avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)
Donnée de sortie :
- Ri=PRAES1 (Ri-i , i, Ni)
Début :
(40) Soient C, D deux tableaux de 16 octets
(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
(42) Générer une permutation aléatoire P={po,•■•PM-Î} dans l'intervalle j=[0, Nj-1]
(43) Pour j de 0 à (Λ/,-7) faire:
(43.1 ) W=Rn
(43.2) W=AddRoundKey(W, SKM lpj) [Sous-ronde 1 ]
(43.3) W=SubByte(W) [Sous-ronde 2]
(43.4) W=ShiftRow(W) [Sous-ronde 3]
(43.5) Si (i≠ 10) alors [Sous-ronde 4 des rondes 1 à 9]
W=MixColumn(W)
(43.6) Si (i=10) alors [Sous-ronde 4 de la ronde 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.2) W=AddRoundKey(W, SKi0,pj);
(43.7) Si pj=0 alors C=W
(43.8) Si pj≠ 0 alors D=W
(44) Ri=C
(45) Retourner (Ri)
Fin
ANNEXE 3 (faisant partie intégrante de la description) Modes de réalisation mettant en oeuyre la notion de modularité
Algorithme PDES2 (DES protégé)
Données d'entrée :
- clé
- M message à chiffrer
- N1 nombre d'exécutions maximum d'une ronde
- NRtoP nombre de rondes à protéger
Donnée de sortie :
- Message chiffré C=DES(M, K)=PDES2(M, K, N1, NRtoP)
Début :
(50) K0=K
(51 ) Générer N1 -1 fausses clés (K1t K2, KN1.i)
( 52) M=IP(M)
(53) Partager M en deux blocs de 32 bits L0 et R0
l_o=32 bits les plus forts de M (partie haute)
R0=32 bits les plus faibles de M (partie basse)
(54) Générer un masque aléatoire Uo de 8 octets
(55) Partager U0 en deux blocs de 32 bits U0,L et U0,R
(56) l_o=L0 XOR U0,L, Ro=Ro XOR U0,R [Masquage]
(57) Pour i de 1 à 16 faire:
(58) Si alors , RM l U , i, Ni) [Ronde protégée]
(59) Sinon
(59.1 ) Ni=1
RM, Un , i, Nj) [Ronde non protégée] (60) masquage]
(61 )
(62)
Fin Algorithme PRDES2 (ronde DES protégée)
Notation :
- i : rang de la ronde traitée
- Nj : nombre d'exécutions d'une ronde de rang i
- N1 (N, avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière)
Données d'entrée :
- clés (Ko, Κι, K2, KNI-I) OU sous-clés d'une ronde précédente
- couple (Li-i, Rj.i)
- masque aléatoire Ui-i=(Ui-i,L, UÎ-I,R)
- i numéro de ronde
- N, nombre d'exécutions Donnée de sortie :
Début
(70) Soient C, D, E, F quatre tableaux de 4 octets
(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
(72) Générer une permutation aléatoire P={po, - -P -Î} dans l'intervalle j=[0, N,-1]
(73) TR=RÎ-I, TL=L 1
(74) W =RM
(75) TR= PermutationExpansive(TR) [Sous-ronde 1 masquée]
(76) Pour j de 0 à (Λ/,-7) faire:
(76.1 ) TR=TR XOR SKi.pj [Sous-ronde 2 masquée]
(76.2) TR=TR XOR PermutationExpansive(Ui.i,R) [Démasquage]
(76.3) TR=Substitution(TR) [Sous-ronde 3 non masquée]
(76.4) TR=TR XOR Ui.1 ,R [Masquage]
(76.5) Si ppO alors
C=W
D=TR
(76.6) Si Pj≠ 0 alors
E=W
F=TR
(77) D=PermutationSimple(D) XOR TL [Sous-ronde 4 masquée]
(78) Générer un masque aléatoire Ui=(Ui,L, U,,R) [Changement du masque pour la ronde suivante]
(79) C=C XOR Uj,i_ XOR UÎ-LR, D=D XOR PermutationSimpleiUi.-i.R) XOR UÎ,R XOR Uj- iL [Correction du masque]
(80) Li=C, Ri=D, Ui=Ui,L|Ui,R
(81 ) Retourner (L„ Ri, Ui)
Fin Algorithme PAES2 (AES protégé)
Données d'entrée :
- K clé de cryptographie
- M message à chiffrer
- N1 nombre maximal d'exécutions d'une ronde
- NRtoP nombre de rondes à protéger
Données de sortie :
- Message chiffré C=AES(M,K)=PAES2(M, K, N1, NRtoP)
Début :
(90) K0=K
(91 ) Générer N1 -1 fausses clés (Ki, K2, KNi-i)
(92) Générer un masque aléatoire Uo de 16 octets
(93) R0=M XOR U0 [Masquage]
(94) Pour i de 1 à 10 faire :
(95) Si alors , i, Ni) [Ronde protégée]
(96) Sinon
(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]
(98) Retourner C
Fin
Algorithme PRAES2 (ronde AES protégée)
Données d'entrée :
- clés (K0, Κι, K2, KM-I) OU sous-clés d'une ronde précédente
- message Rj.-i , 16 octets
- Masque aléatoire UM
- i numéro de ronde
- Nj : nombre d'exécutions d'une ronde de rang i
- N1 (Ni avec i=1 ) : nombre maximal d'exécutions d'une ronde (première et dernière) Donnée de sortie :
- (Ri, Ui)=PRAES2(Ri-i, Ui-1 , i, Ν,)
Début :
(100) Soient C, D deux tableaux de 16 octets
(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
(102) Générer une permutation aléatoire P={po,•■•PM-Î} dans l'intervalle j=[0, N,-1]
(103) W=RM
(104) Pour j de 0 à (Nt-1) faire:
(104.1 ) W=AddRoundKey(W, SKi,pj) [Sous-ronde 1 masquée]
(104.2) W=W XOR U [Démasquage]
(104.3) W=SubByte(W) [Sous-ronde 2 non masquée]
(104.4) W=W XOR Un [Masquage]
(104.5) Si pj=0 alors C=W
(104.6) Si pj≠0 alors D=W
(105) C=ShiftRow(C) [Sous-ronde 3 masquée]
(106) Générer un masque aléatoire U, de 16 octets [Changement du masque pour la ronde suivante]
(106) Si (i≠ 10) alors
(106.1 ) C=MixColumn(C) [Sous-ronde 4 masquée des rondes 1 à 9]
(106.2) C=C XOR U, XOR MixColumn(ShiftRow(UM ) [Correction du masque]
(107) Si (i=10) alors [Sous-ronde 4 de la ronde 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.2) W=C XOR Ui XOR ShiftRow(Ui--i ) [Correction du masque]
(107.3) Pour j de 0 à (Nt-1) faire:
(107.3.1 ) W=AddRoundKey(W, SKi0,Pj) [Opération sur valeur masquée]
(107.3.2) Si pj=0 alors C=W
(107.3.3) Si pj≠0 alors D=W
(107.4) W=C
(108) R=C
(109) Retourner (R, Ui)
Fin

Claims

Revendications
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),
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.
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.
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).
4. Procédé selon l'une des revendications 1 à 3, comprenant :
- 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
- 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.
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.
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.
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.
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.
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.
10. Procédé selon l'une des revendications 1 à 9, conforme aux spécifications
DES, triple DES, ou 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),
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.
12. Microcircuit selon la revendication 1 1 , configuré pour n'exécuter qu'une fois au moins une ronde intermédiaire (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.
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.
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.
EP12821282.6A 2012-01-11 2012-12-21 Procede de chiffrement protege contre des attaques par canaux auxiliaires Withdrawn EP2803161A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1250272A FR2985624B1 (fr) 2012-01-11 2012-01-11 Procede de chiffrement protege contre des attaques par canaux auxiliaires
PCT/FR2012/000546 WO2013104837A1 (fr) 2012-01-11 2012-12-21 Procede de chiffrement protege contre des attaques par canaux auxiliaires

Publications (1)

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

Family

ID=47666406

Family Applications (1)

Application Number Title Priority Date Filing Date
EP12821282.6A Withdrawn EP2803161A1 (fr) 2012-01-11 2012-12-21 Procede de chiffrement protege contre des attaques par canaux auxiliaires

Country Status (5)

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

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3015726B1 (fr) * 2013-12-24 2016-01-08 Morpho Procede de traitement comparatif securise
US20160269175A1 (en) * 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
FR3040514B1 (fr) 2015-09-02 2017-09-15 Stmicroelectronics Rousset Protection dpa d'un algorithme de rijndael
FR3040515B1 (fr) * 2015-09-02 2018-07-27 St Microelectronics Rousset Verification de la resistance d'un circuit electronique a des attaques par canaux caches
FR3040513B1 (fr) * 2015-09-02 2018-11-16 Stmicroelectronics (Rousset) Sas Protection d'un algorithme de rijndael
EP3264311B1 (fr) 2016-06-28 2021-01-13 Eshard Procédé et dispositif de protection contre une analyse de canaux auxiliaires
CN107547189A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
US10783279B2 (en) * 2016-09-01 2020-09-22 Atmel Corporation Low cost cryptographic accelerator
CN109039590A (zh) * 2017-06-09 2018-12-18 深圳九磊科技有限公司 存储器、电子设备及其防止侧信道攻击的加解密方法
EP3422176A1 (fr) * 2017-06-28 2019-01-02 Gemalto Sa Method for securing a cryptographic process with sbox against high-order side-channel attacks
FR3074323B1 (fr) 2017-11-30 2019-12-06 Idemia France Procede et dispositif de traitement cryptographique de donnees
FR3078463A1 (fr) 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
FR3078464A1 (fr) 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une table de substitution
US11218291B2 (en) 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
FR3078419A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de realisation d'une operation de substitution
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN111010266B (zh) * 2019-12-09 2023-04-07 广州市百果园信息技术有限公司 消息的加解密、读写方法、装置、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2873523A1 (fr) * 2004-07-22 2006-01-27 Sagem Procede et dispositif d'execution d'un calcul cryptographique

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820576B1 (fr) * 2001-02-08 2003-06-20 St Microelectronics Sa Procede de cryptage protege contre les analyses de consommation energetique, et composant utilisant un tel procede de cryptage
DE10223175A1 (de) * 2002-05-24 2003-12-11 Infineon Technologies Ag Verfahren zur Verschlüsselung von Daten und eine Vorrichtung zur Duchführung des Verfahrens
EP1457858A1 (fr) * 2003-03-14 2004-09-15 SCHLUMBERGER Systèmes Procédé de sécurisation d'un ensemble électronique à cryptoprocesseur
FR2858496B1 (fr) * 2003-07-31 2005-09-30 Gemplus Card Int Procede pour la mise en oeuvre securisee d'un algorithme de cryptographie de type rsa et composant correspondant
US7716502B2 (en) * 2005-08-24 2010-05-11 Radu Muresan Current flattening and current sensing methods and devices
DE602006020010D1 (de) * 2005-12-19 2011-03-24 St Microelectronics Sa Schutz der Ausführung eines DES-Algorithmus
DE602006008599D1 (de) * 2006-06-29 2009-10-01 Incard Sa Verfahren zum Schutz von IC-Karten vor Leistungsanalyse-Attacken
JP5197258B2 (ja) * 2007-10-10 2013-05-15 キヤノン株式会社 暗号処理回路
EP2293487A1 (fr) * 2009-09-08 2011-03-09 Thomson Licensing Procédé de diversification d'une fonction de tour d'un algorithme de chiffrement

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2873523A1 (fr) * 2004-07-22 2006-01-27 Sagem Procede et dispositif d'execution d'un calcul cryptographique

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
WO2013104837A8 (fr) 2014-08-07
CN104094553A (zh) 2014-10-08
WO2013104837A1 (fr) 2013-07-18
US20140351603A1 (en) 2014-11-27
CN104094553B (zh) 2018-08-31
FR2985624B1 (fr) 2014-11-21
FR2985624A1 (fr) 2013-07-12

Similar Documents

Publication Publication Date Title
EP2803161A1 (fr) Procede de chiffrement protege contre des attaques par canaux auxiliaires
EP2380306B1 (fr) Circuit de cryptographie protege contre les attaques en observation, notamment d&#39;ordre eleve
EP2380305B1 (fr) Circuit de cryptographie, protégé notamment contre les attaques par observation de fuites d&#39;information par leur chiffrement
EP1358732B2 (fr) Procede de cryptage securise et composant utilisant un tel procede de cryptage
EP3228043B1 (fr) Méthode de chiffrement à couches de confusion et de diffusion dynamiques
EP1358733B1 (fr) Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
EP3139364B1 (fr) Protection dpa d&#39;un algorithme de rijndael
EP3139365B1 (fr) Vérification de la résistance d&#39;un circuit électronique à des attaques par canaux cachés
EP3300293B1 (fr) Procédé de chiffrement ou de déchiffrement symétrique par bloc
EP3139363B1 (fr) Protection d&#39;un algorithme de rijndael
WO2011057991A1 (fr) Circuit electronique de faible complexite protege par masquage personnalise
FR3097348A1 (fr) Protection d’exécution d’algorithmes de chiffrement
EP3300292B1 (fr) Procédé de chiffrement ou de déchiffrement protégé contre des attaques par canaux cachés
FR2880750A1 (fr) Carte a microprocesseur et procede cryptographique pour proteger une cle secrete
EP2005290A2 (fr) Procede et dispositif pour engendrer une suite pseudo-aleatoire
FR2955436A1 (fr) Procede et dispositif de contremesure pour proteger des donnees circulant dans un composant electronique
FR2974693A1 (fr) Procede pour appliquer une contre mesure de masquage haute entropie dans un algorithme de chiffrement par blocs, et circuit integre logique mettant en œuvre un tel procede.
EP2530867B1 (fr) Procédé de traitement cryptographique de données
FR2922393A1 (fr) Systeme tracable de chiffrement/dechiffrement de donnees numeriques diffusees
WO2014096363A1 (fr) Generateur de sequences chaotiques
FR2825542A1 (fr) Procede fonde sur un algorithme de chiffrage par bloc a repetition de rondes et dispositif le mettant en oeuvre
EP2599256B1 (fr) Procede et dispositif de randomisation d&#39;une cle secrete contre les attaques par canaux auxiliaires
EP2738974A1 (fr) Procédé de dérivation de clés cryptographiques multiples à partir d&#39;une clé maitresse dans un microprocesseur de sécurité
EP2129115B1 (fr) Méthode de mise à jour de données de sécurité dans un module de sécurité et module de sécurité pour la mise en oeuvre de cette méthode
FR2897216A1 (fr) Protection d&#39;un algorithme cryptographique

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