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

WO2009068658A1 - Procedes et dispositifs de cryptage et de decryptage d'un message de donnees a cle secrete aleatoire - Google Patents

Procedes et dispositifs de cryptage et de decryptage d'un message de donnees a cle secrete aleatoire Download PDF

Info

Publication number
WO2009068658A1
WO2009068658A1 PCT/EP2008/066454 EP2008066454W WO2009068658A1 WO 2009068658 A1 WO2009068658 A1 WO 2009068658A1 EP 2008066454 W EP2008066454 W EP 2008066454W WO 2009068658 A1 WO2009068658 A1 WO 2009068658A1
Authority
WO
WIPO (PCT)
Prior art keywords
random
key
data
diversified
keys
Prior art date
Application number
PCT/EP2008/066454
Other languages
English (en)
Inventor
Pascal Manet
Olivier Faurax
Jean-Baptiste Rigaud
Original Assignee
Commissariat A L'energie Atomique
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 Commissariat A L'energie Atomique filed Critical Commissariat A L'energie Atomique
Publication of WO2009068658A1 publication Critical patent/WO2009068658A1/fr

Links

Classifications

    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Definitions

  • the invention relates to the field of secret key data cryptography.
  • the invention may especially be used in any type of information processing processor, for example a smart card.
  • Encryption algorithms are used in information processing processors, for example to protect confidential information (medical record), to allow access to particular services (pay-TV) or to identify individuals. (electronic passport). These processors are the subject of fraudulent manipulation, commonly called attacks, to obtain the keys used by the encryption algorithms, to know and / or corrupt confidential information, to access services for free or to pretend to be a third party .
  • AES Advanced Encryption Standard
  • FIG. 1 schematically represents the data coding steps implemented by an AES algorithm.
  • the data to be encrypted is first cut into blocks of 128 bits, represented as a 4 ⁇ 4 matrix (reference 2 in FIG. 1) of 8-bit words.
  • the AES algorithm uses a secret key 4 whose size can be equal to 128 bits, 192 bits or even 256 bits.
  • the key 4 comprises 128 bits represented in the form of a 4 ⁇ 4 matrix.
  • the algorithm executes several sets of steps, called rounds, whose number N r depends on the size of the key used
  • the algorithm performs an initial round consisting of a step 6 of adding a round key, which is the secret key 4, with data 2.
  • This addition step 6 is called "AddRoundKey” and is performed by an Exclusive OR.
  • “ShiftRows” (step 10 in FIG. 1): this is a transposition that cyclically shifts the words of the lines of the data matrix obtained at the output of "SubBytes".
  • the words of rows of the matrix are shifted in a left circular shift, the number of squares in the line-dependent shift: the words in the first row of the matrix are not shifted, the words in the second row are shifted one square to the left, the words in the third line are shifted two squares to the left and the words in the fourth line are shifted three squares to the left.
  • MatColumns (step 12 in FIG. 1): this is a matrix multiplication between a constant matrix and the data matrix obtained at the output of "ShiftRows".
  • “AddRoundKey” (step 14 in FIG. 1): this is an addition (exclusive OR) between the data matrix obtained at the output of "MixColumns” and a diversified key 16, or round key, obtained after a diversification operation of the previous round key, called “KeySchedule” and carried out in each round.
  • the "key schedule” directs diversification of operation from a key which is either the secret key 4 after the initial round, an (il) th round key 16 when executing the ith round, with i natural number between 2 and (Nr-I).
  • the algorithm After repeating (N r -1) both these functions, the algorithm performs a last final round (10 th round in the case of a 4 128-bit secret key) consisting of the implementation of a function "SubBytes (Reference 18 in FIG. 1), a function “ShiftRows” (reference 20 in FIG. 1) and an "AddRoundKey” function (reference 22 in FIG. 1).
  • the decryption of these data can then be performed from the coded data by performing functions that are opposite to those performed for encryption. Knowledge of the secret key is therefore necessary to achieve the decryption of the data.
  • countermeasures have been proposed to render inoperative different types of attacks on such an algorithm. For example, to counter hidden channel type attacks, it is known to artificially add noise to the signals emitted by the chip, thus reducing their correlation with the manipulated data. Ad hoc software countermeasures are also introduced to make the analysis of the various extracted signals more complex. Against fault attacks, error detection and correction techniques as well as data redundancy are also known. Physical countermeasures, found on the electronic component implementing the algorithm, to guard against invasive attacks or faults are also known. These physical countermeasures, for example light sensors, are capable of detecting abnormal operation of the chip.
  • An object of the present invention is to propose a new method and a new encryption / decryption device offering better data protection, rendering ineffective attacks such as those carried out on an AES algorithm, and involving no or little additional costs to the user. hardware level and execution time compared to the countermeasures of the prior art.
  • the present invention proposes a method of encrypting a data message S comprising at least one step of calculating at least one random key K a i, 0 from at least one random number Nb ai and d at least one secret key K seC ret and an encryption of the data S from the random key K a i, o and a plurality of diversified random keys K al, 1 to K a i, N calculated from the random key K a i, 0 with, for example, at least one non-linear step.
  • the encryption method may also deliver encrypted data Z, and transmit encrypted data Z and information produced from the random number Nb ai and / or the secret key K seC ret.
  • random number is meant, here and throughout the rest of the document, a completely random number or a pseudo-random number generated from a generator, or generation method, pseudo-random, realizing for example the generation of sequences encoding of the linear, nonlinear or hybrid transition type. This number is called "random" for its non-deterministic and not necessarily known character.
  • the keys that are used for the encryption of the data are masked, which makes it possible to mask the data throughout the encryption process.
  • This additional information can be generated in such a way that it is impossible to find the random number without knowing the secret key.
  • the present invention may also relate to a cryptographic method for an electronic device, for protecting data against attacks performed on the device, comprising calculating at least one random key K a i, 0 from at least one random number Nb a i and at least one secret key K seC ret, and to perform an encryption of the data S from the random key K a i, 0 and a plurality of diversified random keys K ai , i to K ai , N calculated from random key K a i, 0 .
  • the electronic device may comprise a central unit equipped with at least one working memory used to perform the cryptographic process calculations and encryption, and a rewritable memory used to store device-specific and / or command-specific data. to execute to implement the cryptographic method.
  • the cryptographic method can also be implemented in a hardware way by programming directly in an FPGA, an ASIC (application specific integrated circuit) or in a smart card, or in a crypto-processor dedicated to data encryption.
  • the encrypted data obtained can therefore be a signal that can be transmitted securely over a network to another electronic device to be decrypted.
  • each of the diversified random keys K ai , i to K ai , N may comprise at least one non-linear operation.
  • the use of one or more non-linear operations during the diversification of the keys makes it possible to increase the compatibility of the process with the existing processes, for example the AES type processes requiring a non-linear operation.
  • the encryption method according to the invention is in this case compliant with the current symmetric encryption standard (AES) and can also be applied to other types of algorithms (Snake, Twofish, ...)
  • the encryption method can calculate N diversified random keys K ai , i to K ai , N , N being a natural number strictly greater than 1 equal to the number of rounds of the encryption method.
  • the N diversified random keys K ai , i to K a i, N can be obtained at least by the following steps: calculating a first diversified random key K ai , i from the random key K a i, 0 ;
  • the encryption of the data S can be achieved at least by the following steps:
  • N coded data S CO d, i to S CO d, N each of the N coded data S CO d, i / with i such that 1 ⁇ i ⁇ N, being calculated from previous coded data S CO d , ii and the i th diversified random key K a i ,! ; the N th coded data S CO d, N can be encrypted data Z.
  • the encryption method may further comprise the following steps: calculating at least a first diversified key K dlv , i from the secret key K seC ret;
  • the encryption method may comprise in addition the following steps: calculating at least a first diversified key K dlv , i from the secret key K seC ret;
  • the calculation of each of the diversified random keys K ai , i to K a i, N can comprise at least one non-linear operation.
  • Said information produced from the random number Nb ai and / or the secret key K seC ret may furthermore comprise the number m which is chosen randomly.
  • the random number Nb ai may be of the pseudo-random type and the said information produced from the random number Nb ai and / or the secret key K seC ret may comprise an initial value from which the random number Nb ai is generated.
  • the data encryption S can be achieved by: a) a step of adding the random key K a i, o to a matrix formed by the data S to be encrypted, forming encoded data S cod , o; then b) NI executions of the following steps:
  • the present invention also relates to a device for encrypting a data message S comprising at least calculation means of at least one random key K a i, 0 from at least one random number Nb ai and at least one secret key K seC ret, and means for encrypting the data S from a plurality of diversified random keys K ai , i to K ai , N calculated from the random key K a i, 0 , with N natural number strictly greater than 1.
  • N may be equal to the number of rounds performed by the encryption device.
  • the invention also relates to a device for encrypting a data message S comprising at least means for calculating at least one random key K ai , 0 from at least one random number Nb ai and at least one a secret key K seC ret, means for encrypting the data S from the random key K ai , 0 and a plurality of diversified random keys K ai , i to K ai , N calculated from the random key K ai , o, with N natural number strictly greater than 1, delivering encrypted data Z, and means for transmitting the encrypted data Z and information produced from the random number Nb ai and / or the secret key K seC ret •
  • the encryption device may further comprise:
  • the means for calculating each of the diversified random keys K ai , i to K ai , N can perform at least one non-linear operation.
  • the data encryption means S may comprise at least:
  • N th coded data S CO d, N can be the encrypted data Z.
  • the encryption device may further comprise:
  • said information produced from the random number Nb ai and / or the secret key Kgecret can include the difference Dif Km .
  • Said information produced from the random number Nb ai and / or the secret key K seC ret may furthermore comprise the number m which is chosen randomly.
  • the random number Nb ai may be of the pseudo-random type and the said information produced from the random number Nb ai and / or from the secret key K seC ret may comprise an initial value from which the random number Nb ai is generated.
  • the data encryption means S may comprise:
  • - Matrix multiplication means between a data matrix and a constant matrix.
  • the present invention also relates to a decoding method of an encrypted data message Z comprising at least a step of calculating an Nth diverse random key K ai, N from a secret key K S ecret and a Dif Km difference between an mth diversified random key K i, m and m th diversified key Kd iv m or information generated from a random number Nb have and / or the secret key K seC ret, a reverse diversification step carried out from the N th diversified random key K ai , N computing NI diversified random keys K a i, N _i to K ai , i and a random key K a i, 0 , and a decryption of the data Z from the N diversified random keys K ai , i to K ai , N and the random key K a i, 0 , with N a natural number strictly greater than 1, m possibly being a natural number such that 1 ⁇ m ⁇ N
  • the present invention may also relate to a cryptographic method for an electronic device, for decrypting protected data against attacks made on the device, of calculating an Nth diverse random key K ai, N from a secret key K seC ret and a Km Dif difference between an m-th diverse random key K I, m and m th diversified key K dlv, m or information generated from a random number Nb have and / or the key secret K seC ret, perform an inverse diversification from the N th diversified random key K ai , N calculating NI diversified random keys K a i, N _i to K ai , i and a random key K ai , o, and realize a decryption of the Z data from the N diversified random keys K al, 1 to K a i, N and the random key K ai , o, with N natural integer strictly greater than 1, m possibly being a natural whole number such that 1 ⁇ m ⁇ N.
  • N can be the number of rounds of the decryption process.
  • the inverse diversification step calculating the NI diversified random keys K a i, N _i to K al, 1 and the random key K a i, 0 can comprise at least one non-linear operation.
  • the information generated from a random number Nb have and / or the secret key K seC ret may include a difference between a Dif Km mth diversified random key K I, m and m th diversified key K dlv, m , with m natural integer such that 1 ⁇ m ⁇ N.
  • the information produced from a random number Nb ai and / or the secret key K seC ret may furthermore comprise the number m.
  • N th diversified random key K ai , N can be obtained at least by the following steps:
  • the random number Nb ai may be of the pseudo-random type and the information produced from a random number Nb ai and / or from the secret key K seC ret may comprise an initial value from which the random number Nb ai is generated.
  • the inverse diversification can realize the computation of NI diversified random keys K a i, N _i to K ai , i and the random key K a i, 0 , each of these keys K al ⁇ lr with i natural number such that 0 ⁇ i ⁇ NI, being calculated from a previous diversified random key K a i, 1+ i.
  • the decryption of encrypted data Z can be achieved at least by the following steps:
  • N decoded data S of C od, i to Sdecod, N each of N decoded data S of C od, i, with i such that 1 ⁇ i ⁇ N, being calculated from previous decoded data S deC od, ii and the (N-i + 1) th diversified random key K a i, N _ 1+ i; the N th decoded data S deC od, N can be decrypted data S.
  • the decryption of data can be achieved by: a) the following steps:
  • the present invention also relates to a deciphering device a message encrypted data comprising at least means for calculating a Nth diverse random key K ai, N from a secret key K seC ret and a difference dif Km between mth diversified random key K I, m and m th diversified key K dlv, m or information generated from a random number Nb have and / or the secret key K S ecret / of means of inverse diversification from the N th diversified random key K ai , N calculating NI diversified random keys K a i, N _i to K ai , i and the key random K a i, 0 , and means for decrypting the data Z from the N diversified random keys K al, 1 to K a i, N and the random key K a i, 0 , with N natural number strictly greater at 1, m possibly being a natural number such that 1 ⁇ m ⁇ N.
  • the inverse diversification means calculating the NI diversified random keys K a i, N _i to K al, 1 and the random key K a i, 0 can perform at least one non-linear operation.
  • the information produced from a random number Nb ai and / or from the secret key K seC ret comprises a difference Dif Km between a m th diversified random key K ai , m and a diversified m th key Kdiv, m, with m natural integer such that 1 ⁇ m ⁇ N
  • the means for calculating the N th diversified random key K a i, N may comprise at least:
  • the inverse diversification means can calculate NI diversified random keys K a i, N _i K al, 1 and the random key K a i, 0 , each of these keys K a i,!, With i natural number such that 0 ⁇ i ⁇ NI, being calculated from a previous diversified random key K a i, 1+ i.
  • the means for decrypting the data may comprise at least:
  • the data decryption means may comprise:
  • the invention also relates to a signal processing device for implementing a method of encrypting a data message and / or a method for decrypting an encrypted data message as described above.
  • the invention also relates to a smart card comprising at least one device for encrypting a data message and / or a device for decrypting an encrypted data message as described above.
  • the invention also relates to a data support, readable by a computer system, comprising data in coded form, for implementing an encryption method and / or a decryption method as described above.
  • the invention relates to a software product comprising a data medium that can be read by a computer system, making it possible to implement an encryption method and / or a decryption method as described above.
  • the invention applies in particular for an AES type algorithm.
  • the principles of the invention can be applied to other types of algorithms, for example any encryption and / or decryption algorithm using a "non-trivial" key calculation, comprising for example at least one non-linear substitution step and / or a permutation step on calculated keys.
  • FIG. 1 diagrammatically represents the data coding steps implemented by an AES algorithm according to the prior art
  • FIG. 2 represents the steps performed during the implementation of an exemplary embodiment of a method of data encryption according to the invention
  • FIG. 3 schematically represents the steps implemented during a data encryption performed during an exemplary embodiment of a data encryption method according to the invention
  • FIG. 4 represents a correspondence table used during a substitution operation executed during an exemplary embodiment of a data encryption method according to the invention
  • FIG. 5 represents the steps performed during the implementation of an exemplary embodiment of a method for decrypting encrypted data according to the invention
  • FIG. 6 schematically represents the steps implemented during a data decryption performed during an exemplary embodiment of a method for decrypting encrypted data according to the invention
  • FIG. 7 represents a correspondence table used during a substitution operation executed during an exemplary embodiment of a method for decrypting encrypted data according to the invention
  • FIG. 8 represents an example of a circuit intended to implement a data encryption method according to the invention
  • FIG. 9 represents an example of a circuit intended to implement a data decryption method according to the invention.
  • S in Figure 2 is first cut into 128-bit blocks represented as a 4 x 4 matrix whose inputs are respectively 8-bit words (bytes). These blocks are then encrypted independently of each other to obtain the end of the process of encrypting the encrypted data blocks, referenced “Z" in Figure 2, which can then be concatenated and form an encrypted data message.
  • all the arithmetic operations are performed on 8-bit words arranged in a matrix.
  • a first set of functions is first made, comprising firstly the calculation of a random key K ai , o from a random number Nb a i, for example non-zero, and of the entirely random or pseudo type. -random, and a secret key K seC ret, for example also non-zero.
  • the random key K ai , o is obtained by an addition 102 between the secret key K seC ret and the random number Nb ai .
  • the size of the secret key K seC ret can be equal to 128 bits, 192 bits or even 256 bits, and is here chosen equal to the size of the data blocks
  • the secret key K seC ret comprises 128 bits represented in the form of a 4 ⁇ 4 matrix whose inputs are 8-bit words.
  • the size of the random number Nb ai is chosen equal to the size of the secret key K seC ret •
  • This addition 102 is performed by an exclusive OR between the secret key K seC ret and the random number Nb ai . We obtain at the output of the addition 102 the random key
  • the random key K a i, o is used.
  • This function 103 "KeySchedule” makes it possible to calculate N diversified random keys K al, 1 to K ai , N , where N is the number of rounds realized during the encryption process.
  • the "KeySchedule" function will be detailed later in the description.
  • These diversified random keys K al, 1 to K ai , N and the random key K a i, o are used to perform an encryption 105 of the data S detailed below in connection with FIG. 3.
  • the keys K a i, o to K ai , N are computed parallel to the execution of the cipher 105.
  • the encryption 105 completes the initial round by computing coded data S CO d, o from the random key K a i, o and data S.
  • a function 104 called “AddRoundKey”, performs this calculation. So we have :
  • S cod , o AddRoundKey (K a i, o, S).
  • the "AddRoundKey” calculation of the coded data S COd , o is here an addition operation, performed by an "exclusive OR", between the initial data S and the random key K a i, 0 .
  • Each j_ th round with natural number i such that 1 ⁇ i ⁇ NI, has four functions which are detailed below.
  • the method first executes a function 106, called "SubBytes", during which each word of the coded data matrix obtained in the preceding step (the coded data S COd , o when one has completed the execution of the initial round, or (ii) th encoded data S CO d, ii when an i-th round is performed with 2 ⁇ i ⁇ NI) is replaced by another word.
  • a function 106 called "SubBytes”
  • the operator "*" represents the multiplication of the matrices in the Galois field GF ( 28 ), and ScQd ( C d) '1 represents a inverse word of the encoded data S CO d-
  • the function "SubBytes” is therefore a function non-linear substitution.
  • This substitution function can also be represented in the form of a table comprising the substitution values of the words of the coded data S COd -
  • a word S CO d (c, d) (here a byte) whose value is denoted by "x , y ", where x and y represent respectively the most significant and least significant bits, is therefore substituted by the word whose value is in the table represented in FIG. 4, at the intersection of the line x and the column y corresponding.
  • the word S C odi (i, i) has the value ⁇ 04 ⁇ , then we have:
  • a function 108 called “ShiftRows” is then executed on the data obtained at the output of "SubBytes" 106.
  • This function 108 consists of a transposition cyclically shifting the words of the rows of the matrix obtained at the output of "SubBytes".
  • the words of the lines are shifted with a left circular shift, the number of squares of the shift depends on the line: the words of the first line of the matrix are not shifted, the words of the second line are shifted by one square to the left, the words in the third line are shifted two squares to the left and the words in the fourth line are shifted three squares to the left.
  • a matrix M such that:
  • a function 110 called “MixColumns” then performs a matrix multiplication in GF ( 28 ) between the matrix obtained at the output of "ShiftRows” and a constant matrix A 0 such that:
  • the "KeySchedule" function 103 (shown in FIG. 2) is executed, performing a diversification operation of the key previously used, which is either the random key K ai , o when the initial round is performed, or a (il) th diverse random key K ⁇ 1 -I when performing the other rounds.
  • Sub corresponds to the nonlinear transformation function previously described for the "SubBytes” function.
  • R con is a one-dimensional array of constants (in hexadecimal), indexed by the number of the current round:
  • K a i ,! KeySchedule (R a i ⁇ -i).
  • the i th round ends with the computation (function 112 called “AddRoundKey”) of i th coded data S COd , i from the i th diversified random key K a i ,! and data obtained at the output "MixColumns" 110.
  • This function 112 "AddRoundKey” is similar to the function 104 "AddRoundKey” performed during the initial round.
  • this last round N contains only three functions 114, 116, 118 respectively similar to functions 106 "SubBytes” 108 "ShiftRows" and 112 "AddRoundKey”.
  • the Z encrypted data is output.
  • the encryption performed makes it possible to encrypt each block of information by a different key.
  • this key is random for each block of data, the known attacks used against the AES algorithm are ineffective here.
  • the random key must, however, be known for decrypting the encrypted data.
  • the method also performs, during the first round, a function 107 "KeySchedule", represented in FIG. 2, from the secret key K seC ret, thus delivering a first diversified key K dlv , i.
  • This function "KeySchedule” is also repeated during the following rounds using each time the diversified key K dlv calculated previously.
  • any information chosen according to the random number Nb ai and / or the secret key K seC ret can be transmitted to find the random number Nbal or the random key K a i, 0 .
  • this information transmitted may be the seed or the initial number from which the pseudo-random number is generated.
  • a "KeySchedule" function 202 similar to the "KeySchedule” function performed during the data encryption method, is realized, thus realizing a diversification of the secret key K seC ret • "KeySchedule” is executed N times, N corresponding to the number of rounds made during the encryption process.
  • the function "KeySchedule" 202 is then continued from the m th diversified random key K a i, m , thus making it possible to obtain the last diversified random key K ai , N.
  • a reverse key diversification function 204 called “InvKeySchedule”
  • This "InvKeySchedule” function performs the inverse matrix operation of the "KeySchedule” function
  • a decryption 206 of the Z data is then carried out. This decryption will be detailed with reference to FIG. 6.
  • a function "AddRoundKey” which is similar to the function “AddRoundKey” 118 is implemented. This step is similar for encryption and decryption because the OR addition operation is also its own inverse operation. An exclusive OR is thus realized between the encrypted data Z and the last (N th ) diversified random key.
  • a function 210 "InvShiftRows" is then executed on the data obtained at the output of "AddRoundKey” 208.
  • This function 210 is the inverse function of "ShiftRows”.
  • This function "InvShiftRows” consists of a transposition cyclically shifting the words of the rows of the matrix obtained at the output of "AddRoundKey” 208. The words of the lines are shifted in a right-hand circular shift, the number of squares of the line-dependent shift: the words in the first row of the matrix are not shifted, the words in the second row are shifted one square to the right, the words in the third line are shifted two squares to the right and the words in the fourth line are shifted three squares to the right.
  • the decryption method then executes a function 212, called "InvSubBytes", in which each word of the matrix obtained in the previous step is replaced by another word.
  • a function 212 called "InvSubBytes”
  • invsub an elementary transformation
  • one carries out the inverse of the affine transformation used for the elementary transformation "sub” then one applies the inverse multiplicative on the result.
  • the "InvSubBytes” function is therefore a nonlinear substitution function. This substitution operation can also be represented in the form of a table comprising the substitution values of the words of the coded data.
  • a word (here an octet) whose value is denoted "x, y", where x and y respectively represent the most significant and least significant bits, is therefore substituted by the word whose value is in the table represented on FIG. 7, at the intersection of the line x and the corresponding column y. For example, if the word to be substituted has the value ⁇ 04 ⁇ , then we have:
  • a function 216 called “InvMixColumns", corresponding to the inverse of the "MixColumns” function, then performs a matrix multiplication in GF (2) between the matrix obtained at the output of the function "AddRoundKey” 214 and a constant matrix B 0 such than :
  • the round is terminated by a function "InvSubBytes" 220, for example similar to the function "InvSubBytes” 212.
  • FIG. 8 represents an example of an implementation of a circuit 300 implementing the random secret key encryption method described above.
  • the data to be encrypted is entered on a 32 bit bus 302, and the encrypted data is output from the circuit 300 on an output bus 304 also 32 bits.
  • the secret key is entered on a bus 306 also 32 bits.
  • Conversion means 308 converts four 32-bit words of data into a single 128-bit length S data contained in a register.
  • converting means 310 converts the secret key into a single 128-bit, 192-bit or 256-bit K seC ret data.
  • converting means 312 converts the 128-bit encrypted data Z into 32-bit words on the output bus 304.
  • a state controller 314 speeds the random key diversification "KeySchedule” performed by means of diversification 316 and the encryption of the data by encryption means 318.
  • These encryption means 318 perform the functions “SubBytes”, “ShiftRows”, “MixColumns” and “AddRoundKey”.
  • Each round is performed on a cycle, with the diversified random keys being produced in parallel with the execution of the rounds.
  • This computation synchronization is carried out by the state controller 314. Different control signals are also exchanged between the various components of the circuit 300.
  • the state controller 314 authorizes the sending of the encrypted text to the conversion means 312.
  • the random number Nb have used in this encryption method can be obtained from a random number generator external to the circuit 300, or by using an internal state of said 300 implementation circuit encryption method.
  • the random number Nb i used by the encryption method can be directly this internal state or the number obtained at the output of the generator, or be the result of the addition of the previous random key (used for coding a previous block of data) in the internal state or the number obtained at the output of the generator.
  • FIG. 9 represents an exemplary implementation of a circuit 400 implementing the random secret key decryption method described above.
  • the data to be decrypted is entered on a 32 bit bus 402, and the decrypted data is output from the circuit 400 on an output bus 404 also of 32 bits.
  • the secret key, as well as the value of the difference Dif Km are input on a bus 406 also of 32 bits.
  • Conversion means 408 converts four 32-bit words of data into a single data of length 128 bits contained in a register.
  • converting means 410 converts the secret key and the difference Dif Km into 128-bit, 192-bit or 256-bit data.
  • converting means 412 converts the 128-bit decrypted data into 32-bit words on the output bus 404.
  • a state controller 414 rates the diversification of the secret key "KeySchedule” performed by means 416, making it possible to obtain the last diversified random key from the secret key and the key difference information Dif Km . These means 416 then perform the reverse diversification to obtain diversified random keys.
  • the state controller 414 also decrypts the data decryption by means of decryption 418. These decryption means 418 execute the functions "InvSubBytes”, “InvShiftRows”, “InvMixColumns” and “AddRoundKey". Each round is performed on a cycle, with the diversified random keys being produced in parallel with the execution of the rounds. This computation synchronization is carried out by the state controller 414. Different control signals are also exchanged between the various components of the circuit 400.
  • the state controller 414 authorizes the sending of the decrypted text to the conversion means 412.
  • the fact of using the difference Dif Km in the middle of the encryption allows to get out this number Dif Km without losing time in the encryption (a process performing the encryption in 10 rounds on a 32-bit bus can finish extracting this value in 4 round and thus before the end of the execution of the encryption) and to limit the loss of time in the decryption level.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

Procédé de cryptage d'un message de données S comportant au moins une étape de calcul (102) d'au moins une clé aléatoire Ka1,0 à partir d'au moins un nombre aléatoire Nba1 et d'au moins une clé secrète Ksecret/ un chiffrement (105) des données S à partir de la clé aléatoire Ka1,0 et d'une pluralité de clés aléatoires diversifiées Ka1,1 à Ka1,N calculées à partir de la clé aléatoire Ka1,0 délivrant des données cryptées Z, et une transmission des données cryptées Z et d'une information produite à partir du nombre aléatoire Nba1 et/ou de la clé secrète Ksecret

Description

PROCEDES ET DISPOSITIFS DE CRYPTAGE ET DE DECRYPTAGE D'UN MESSAGE DE DONNEES A CLE SECRETE ALEATOIRE
DESCRIPTION
DOMAINE TECHNIQUE
L' invention concerne le domaine de la cryptographie de données à clé secrète. L'invention peut notamment être utilisée dans tout type de processeur de traitement de l'information, par exemple une carte à puce.
ÉTAT DE LA TECHNIQUE ANTÉRIEURE
Des algorithmes de cryptage sont utilisés dans des processeurs de traitement de l'information par exemple pour protéger des informations confidentielles (dossier médical), pour autoriser l'accès à des services particuliers (télévision à péage) ou encore pour permettre d' identifier les personnes (passeport électronique) . Ces processeurs font l'objet de manipulations frauduleuses, appelées communément attaques, pour obtenir les clefs utilisées par les algorithmes de cryptage, pour connaître et/ou corrompre les informations confidentielles, pour accéder gratuitement à des services ou encore pour se faire passer pour un tiers. Pour réaliser un cryptage des données, il est connu d'utiliser un algorithme appelé AES (« Advanced Encryption Standard ») . La figure 1 représente schématiquement les étapes de codage de données mises en œuvre par un algorithme AES. Les données à crypter sont tout d'abord coupées en blocs de 128 bits, représentés sous forme d'une matrice 4 x 4 (référence 2 sur la figure 1) de mots de 8 bits. L'algorithme AES utilise une clé secrète 4 dont la taille peut être égale à 128 bits, 192 bits ou encore 256 bits. Sur l'exemple de la figure 1, la clé 4 comporte 128 bits représentés sous la forme d'une matrice de taille 4 x 4. Lors de ce codage, l'algorithme exécute plusieurs ensembles d'étapes, appelés rondes, dont le nombre Nr dépend de la taille de la clé utilisée
(Nr = 10 pour une clé de 128 bits, Nr = 12 pour une clé de 192 bits et Nr = 14 pour une clé de 256 bits) . Quelque soit la taille de la clé utilisée, l'algorithme réalise une ronde initiale consistant en une étape d'addition 6 d'une clé de ronde, qui est la clé secrète 4, avec des données 2. Cette étape d' addition 6 est appelée « AddRoundKey » et est réalisée par un OU Exclusif.
Ensuite, on exécute (Nr-1) rondes réalisant les quatre fonctions suivantes :
- « SubBytes » (étape 8 sur la figure 1) : chaque mot de la matrice de données obtenue à l'étape précédente est remplacé par un autre mot de taille similaire donné par un tableau de correspondance. Il s'agit d'une transformation non linéaire.
- « ShiftRows » (étape 10 sur la figure 1) : il s'agit d'une transposition décalant cycliquement les mots des lignes de la matrice de données obtenue en sortie de « SubBytes ». Les mots des lignes de la matrice sont décalés suivant un décalage circulaire à gauche, le nombre de cases du décalage dépendant de la ligne : les mots de la première ligne de la matrice ne sont pas décalés, les mots de la seconde ligne sont décalés d'une case vers la gauche, les mots de la troisième ligne sont décalés de deux cases vers la gauche et les mots de la quatrième ligne sont décalés de trois cases vers la gauche.
- « MixColumns » (étape 12 sur la figure 1) : il s'agit d'une multiplication matricielle entre une matrice constante et la matrice de données obtenue en sortie de « ShiftRows ».
- « AddRoundKey » (étape 14 sur la figure 1) : il s'agit d'une addition (OU Exclusif) entre la matrice de données obtenue en sortie de « MixColumns » et une clé diversifiée 16, ou clé de ronde, obtenue après une opération de diversification de la clé de ronde précédente, appelée « KeySchedule » et réalisée à chaque ronde. La fonction « KeySchedule » réalise une opération de diversification à partir d'une clé qui est soit la clé secrète 4 après la ronde initiale, soit une (i-l)ème clé de ronde 16 lorsque l'on exécute la ième ronde, avec i nombre entier naturel compris entre 2 et (Nr-I) .
Après avoir répété (Nr-1) fois ces fonctions, l'algorithme réalise une dernière ronde finale (10ème ronde dans le cas d'une clé secrète 4 de 128 bits) consistant en la mise en œuvre d'une fonction « SubBytes » (référence 18 sur la figure 1), d'une fonction « ShiftRows » (référence 20 sur la figure 1) et d'une fonction « AddRoundKey » (référence 22 sur la figure 1) .
On obtient en sortie de la fonction 22 une matrice 24, de taille égale à 4 x 4 de mots de taille similaire aux mots de la matrice 2, des données cryptées .
Le décryptage de ces données peut ensuite être réalisé à partir des données codées en réalisant des fonctions inverses par rapport à celles réalisées pour le cryptage. La connaissance de la clé secrète est donc nécessaire pour réaliser le décryptage des données .
Diverses solutions, appelées contre-mesures, ont été proposées pour rendre inopérants différents types d'attaques sur un tel algorithme. Par exemple, pour contrer les attaques de type à canaux cachés, il est connu d'ajouter du bruit artificiellement sur les signaux émis par la puce, leur corrélation avec les données manipulées étant ainsi réduite. Des contre-mesures logicielles ad hoc sont également introduites pour complexifier l'analyse des différents signaux extraits. Contre les attaques en faute, des techniques de détection et de correction d'erreurs ainsi que de la redondance des données sont également connues. Des contre-mesures physiques, se trouvant sur le composant électronique implémentant l'algorithme, permettant de se prémunir contre les attaques invasives ou par fautes sont également connues. Ces contre-mesures physiques, par exemple des capteurs de lumière, sont capables de détecter un fonctionnement anormal de la puce. En cas d'intrusion ou d'injection de fautes, différentes actions peuvent être prises allant d'une simple réinitialisation de la puce jusqu'à un effacement partiel ou intégral de toutes les informations stockées dans les mémoires de la puce. Des dispositifs plus spécifiques à la protection du circuit contre une phase d' ingénierie inverse peuvent également être intégrés (bouclier métallique, lignes fictives etc.) .
Toutefois, ces solutions impliquent généralement des surcoûts importants à la fois au niveau matériel (nombreuses fonctions logiques supplémentaires nécessaires à la mise en œuvre du cryptage et du décryptage) et au niveau du temps d'exécution de l'algorithme, à la fois pour le cryptage et pour le décryptage.
EXPOSÉ DE L'INVENTION
Un but de la présente invention est de proposer un nouveau procédé et un nouveau dispositif de cryptage/décryptage offrant une meilleure protection des données, rendant inefficaces des attaques telles que celles réalisées sur un algorithme AES, et n' impliquant pas ou peu de surcoûts au niveau matériel et du temps d'exécution par rapport aux contre-mesures de l'art antérieur. Pour cela, la présente invention propose un procédé de cryptage d'un message de données S comportant au moins une étape de calcul d' au moins une clé aléatoire Kai,0 à partir d'au moins un nombre aléatoire Nbai et d' au moins une clé secrète KseCret et un chiffrement des données S à partir de la clé aléatoire Kai,o et d'une pluralité de clés aléatoires diversifiées Kal,1 à Kai,N calculées à partir de la clé aléatoire Kai,0 avec, par exemple, au moins une étape non linéaire.
Le procédé de cryptage peut également délivrer des données cryptées Z, et réaliser une transmission des données cryptées Z et d'une information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret •
En ajoutant à la clé secrète KseCret un nombre, ou une variable, aléatoire Nbai, toutes les informations sont chiffrées avec une clé différente, ce qui rend inefficace les attaques connues de l'art antérieur. Ce procédé permet donc d'améliorer la sécurité du dispositif électronique dans lequel est implanté ce procédé. On entend par nombre aléatoire, ici et dans tout le reste du document, un nombre entièrement aléatoire ou bien un nombre pseudo-aléatoire généré à partir d'un générateur, ou procédé de génération, pseudo-aléatoire, réalisant par exemple la génération de suites chiffrantes du type à transition linéaire, non linéaire ou hybride. Ce nombre est appelé « aléatoire » pour son caractère non déterministe et non nécessairement connu.
Ainsi, en appliquant un élément aléatoire dans la diversification de clés, on réalise un masquage des clés qui sont utilisées pour le chiffrement des données, ce qui permet de réaliser un masquage des données tout au long du processus de chiffrement.
Le fait d'utiliser une information supplémentaire à la clé secrète, ici produite à partir du nombre aléatoire et/ou de la clé secrète, permet que les informations manipulées, aussi bien lors de la génération des clés aléatoires diversifiées que lors du chiffrement, aient un caractère aléatoire. Grâce à l'invention, cet avantage est obtenu avec peu d'éléments supplémentaires sur le circuit global mettant en œuvre le procédé de cryptage, et notamment aucun élément supplémentaire sur la partie du circuit mettant en œuvre le chiffrement.
Cette information supplémentaire peut être générée de manière à ce qu'il soit impossible de retrouver le nombre aléatoire sans connaître la clé secrète .
La présente invention peut concerner également un procédé cryptographique pour un dispositif électronique, permettant de protéger des données contre des attaques réalisées sur le dispositif, consistant à calculer au moins une clé aléatoire Kai,0 à partir d'au moins un nombre aléatoire Nbai et d' au moins une clé secrète KseCret, et à réaliser un chiffrement des données S a partir de la clé aléatoire Kai,0 et d'une pluralité de clés aléatoires diversifiées Kai,i à Kai,N calculées à partir de la clé aléatoire Kai,0.
Le dispositif électronique peut comprendre une unité centrale équipée au moins d'une mémoire de travail utilisée pour exécuter les calculs et le chiffrement du procédé cryptographique, et d'une mémoire réinscriptible servant à stocker des données propres au dispositif et/ou propres à des commandes à exécuter pour mettre en oeuvre le procédé cryptographique. Le procédé cryptographique peut également être mis en œuvre de façon matérielle en le programmant directement dans un FPGA, un ASIC (circuit intégré à application spécifique) ou dans une carte à puce, ou dans un crypto-processeur dédié au chiffrement des données. Les données cryptées obtenues peuvent donc être un signal pouvant être transmis de manière sécurisée sur un réseau à un autre dispositif électronique pour être décryptées.
Le calcul de chacune des clés aléatoires diversifiées Kai,i à Kai,N peut comprendre au moins une opération non-linéaire. L'utilisation d'une ou plusieurs opérations non linéaires lors de la diversification des clés permet d'augmenter la compatibilité du procédé avec les procédés existants, par exemple les procédés de type AES nécessitant une opération non linéaire. Le procédé de cryptage selon l'invention est dans ce cas conforme au standard de chiffrement symétrique en vigueur (AES) et peut également être appliqué à d'autres types d'algorithmes (Serpent, Twofish, ...)
Mais d'une manière générale, le calcul de chacune des clés aléatoires diversifiées peut être réalisé par tout type d'opérations de diversification de clés, linéaires ou non. Le procédé de cryptage peut calculer N clés aléatoires diversifiées Kai,i à Kai,N, N étant un nombre entier naturel strictement supérieur à 1 égal au nombre de rondes du procédé de cryptage.
Les N clés aléatoires diversifiées Kai,i à Kai,N peuvent être obtenues au moins par les étapes suivantes : - calcul d'une première clé aléatoire diversifiée Kai,i à partir de la clé aléatoire Kai,0 ;
- calcul de chacune des N-I clés aléatoires diversifiées Kalιl_, avec i nombre entier naturel tel que 2 ≤ i ≤ N, à partir d'une précédente clé aléatoire diversifiée Kalιl_-ι.
Le chiffrement des données S peut être réalisé au moins par les étapes suivantes :
- calcul de données codées SCOd,o à partir de la clé aléatoire Kai,0 et des données S à crypter ;
- calcul de N données codées SCOd,i à SCOd,N, chacune des N données codées SCOd,i/ avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données codées SCOd,i-i et de la ième clé aléatoire diversifiée Kai,! ; les Nèmes données codées SCOd,N pouvant être des données cryptées Z.
Le procédé de cryptage peut comporter en outre les étapes suivantes : - calcul d'au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;
- calcul de N-I clés diversifiées KdiV,2 à Kdiv,N, chacune des N-I clés diversifiées KdiV,i, avec i tel que 2 ≤ i ≤ N, étant calculée à partir d'une précédente clé diversifiée KdlVil-i ;
- calcul d'une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdlv,m, avec m nombre entier naturel tel que 1 ≤ m ≤ N. Le procédé de cryptage peut comporter en outre les étapes suivantes : - calcul d' au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;
- calcul d'une mème clé diversifiée Kdlv,m à partir d'une (m-l)ème clé diversifiée Kdlv, (m_i) , avec m nombre entier naturel tel que 2 < m ≤ N ;
- calcul d'une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m, avec m nombre entier naturel tel que 1 < m < N ; ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret pouvant comprendre la différence DifKm.
Dans ce cas, de manière avantageuse, le calcul de chacune des clés aléatoires diversifiées Kai,i à Kai,N peut comprendre au moins une opération non- linéaire .
Ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comprendre en outre le nombre m qui est choisi aléatoirement.
Dans une variante, le nombre aléatoire Nbai peut être du type pseudo-aléatoire et ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comprendre une valeur initiale à partir de laquelle le nombre aléatoire Nbai est généré.
Le chiffrement de données S peut être réalisé par : a) une étape d'addition de la clé aléatoire Kai,o à une matrice formée par les données S à crypter, formant des données codées Scod,o ; puis b) N-I exécutions des étapes suivantes :
- substitution de chaque mot d'une matrice formée par des (i-l)èmes données codées SCOd,i-i/ avec i tel que 1 ≤ i ≤ N-I par un autre mot de taille similaire ;
- transposition cyclique des mots d'une matrice formée par les données obtenues après l'étape précédente de substitution ;
- multiplication matricielle entre une matrice constante et une matrice formée par les données obtenues après l'étape précédente de transposition ;
- addition entre une matrice formée par les données obtenues après l'étape précédente de multiplication et une ième clé aléatoire diversifiée Kalιlr avec i tel que 1 ≤ i ≤ N-I, les données obtenues étant des ièmes données codées SCOd,i ; puis c) les étapes suivantes :
- substitution de chaque mot d'une matrice formée par les (N-I) èmes données codées SCOd, <N-D par un autre mot de taille similaire ;
- transposition cyclique des mots d'une matrice formée par les données obtenues après l'étape précédente de substitution ; - addition entre une matrice formée par les données obtenues après l'étape précédente de transposition et la Nème clé aléatoire diversifiée Kai,N, les données obtenues étant les données cryptées Z.
La présente invention concerne également un dispositif de cryptage d'un message de données S comportant au moins des moyens de calcul d' au moins une clé aléatoire Kai,0 à partir d'au moins un nombre aléatoire Nbai et d'au moins une clé secrète KseCret, et des moyens de chiffrement des données S à partir d'une pluralité de clés aléatoires diversifiées Kai,i à Kai,N calculées à partir de la clé aléatoire Kai,0, avec N nombre entier naturel strictement supérieur à 1. N peut être égal au nombre de rondes réalisées par le dispositif de cryptage.
L' invention concerne également un dispositif de cryptage d'un message de données S comportant au moins des moyens de calcul d' au moins une clé aléatoire Kai,0 à partir d'au moins un nombre aléatoire Nbai et d'au moins une clé secrète KseCret, des moyens de chiffrement des données S à partir de la clé aléatoire Kai,0 et d'une pluralité de clés aléatoires diversifiées Kai,i à Kai,N calculées à partir de la clé aléatoire Kai,o, avec N nombre entier naturel strictement supérieur à 1, délivrant des données cryptées Z, et des moyens de transmission des données cryptées Z et d'une information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret •
Le dispositif de cryptage peut comporter en outre :
- des moyens de calcul d' au moins une première clé aléatoire diversifiée Kai,i à partir de la clé aléatoire Kai,0 ;
- des moyens de calcul de chacune des N-I clés aléatoires diversifiées Kalιlr avec i nombre entier naturel tel que 2 ≤ i ≤ N, à partir d'une précédente clé aléatoire diversifiée K3I11-I. Les moyens de calcul de chacune des clés aléatoires diversifiées Kai,i à Kai,N peuvent réaliser au moins une opération non-linéaire.
Les moyens de chiffrement des données S peuvent comporter au moins :
- des moyens de calcul de données codées SCod,o à partir de la clé aléatoire Kai,0 et des données S à crypter ;
- des moyens de calcul de N données codées SCOd, î à SCOd,N/ chacune des N données codées SCOd,i/ avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données codées SCOd,i-i et de la ième clé aléatoire diversifiée Kai,! ; les Nèmes données codées SCOd,N pouvant être les données cryptées Z.
Le dispositif de cryptage peut comporter en outre :
- des moyens de calcul d' au moins une première clé diversifiée Kdlv,i à partir de la clé secrète KseCret ;
- des moyens de calcul d'une mème clé diversifiée Kdlv,m à partir d'une (m-l)ème clé diversifiée Kdiv, (m-i) , avec m nombre entier naturel tel que 2 ≤ m ≤ N ; - des moyens de calcul d'une différence
DifKm entre une mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m.
Dans ce cas, ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète Kgecret peut comprendre la différence DifKm. Ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comprendre en outre le nombre m qui est choisi aléatoirement . Dans une variante, le nombre aléatoire Nbai peut être du type pseudo-aléatoire et ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comporter une valeur initiale à partir de laquelle le nombre aléatoire Nbai est généré.
Les moyens de chiffrement des données S peuvent comporter :
- des moyens d' addition de la clé aléatoire Kai,o et des clés aléatoires diversifiées Kai,i à Kai,N à des matrices de données ;
- des moyens de substitution de chaque mot d'une matrice de données par un autre mot de taille similaire ;
- des moyens de transposition cyclique des mots d'une matrice de données ;
- des moyens de multiplication matricielle entre une matrice de données et une matrice constante.
La présente invention concerne aussi un procédé de décryptage d'un message de données cryptées Z comportant au moins une étape de calcul d'une Nème clé aléatoire diversifiée Kai,N à partir d'une clé secrète KSecret et d' une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdiv,m ou d'une information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret, une étape de diversification inverse réalisée à partir de la Nème clé aléatoire diversifiée Kai,N calculant N-I clés aléatoires diversifiées Kai,N_i à Kai,i et une clé aléatoire Kai,0, et un déchiffrement des données Z à partir des N clés aléatoires diversifiées Kai,i à Kai,N et de la clé aléatoire Kai,0, avec N nombre entier naturel strictement supérieur à 1, m pouvant être un nombre entier naturel tel que 1 ≤ m ≤ N.
La présente invention peut concerner également un procédé cryptographique pour un dispositif électronique, permettant de décrypter des données protégées contre des attaques réalisées sur le dispositif, consistant à calculer une Nème clé aléatoire diversifiée Kai,N à partir d'une clé secrète KseCret et d'une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdlv,m ou d'une information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret, réaliser une diversification inverse à partir de la Nème clé aléatoire diversifiée Kai,N calculant N-I clés aléatoires diversifiées Kai,N_i à Kai,i et une clé aléatoire Kai,o, et réaliser un déchiffrement des données Z à partir des N clés aléatoires diversifiées Kal,1 à Kai,N et de la clé aléatoire Kai,o, avec N nombre entier naturel strictement supérieur à 1, m pouvant être un nombre entier naturel tel que 1 ≤ m ≤ N.
N peut être le nombre de rondes du procédé de décryptage.
L'étape de diversification inverse calculant les N-I clés aléatoires diversifiées Kai,N_i à Kal,1 et la clé aléatoire Kai,0 peut comprendre au moins une opération non-linéaire. L'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comprendre une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdlv,m, avec m nombre entier naturel tel que 1 ≤ m ≤ N.
L'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comprendre en outre le nombre m.
Le calcul de la Nème clé aléatoire diversifiée Kai,N peut être obtenu au moins par les étapes suivantes :
- calcul d' au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;
- calcul de m-1 clés diversifiées Kdlv,2 à Kdlv,m, chacune des m-1 clés diversifiées Kd1V,!, avec i nombre entier naturel tel que 2 ≤ i ≤ m, étant calculée à partir d'une précédente clé diversifiée KdlVil-i ;
- addition de la mème clé diversifiée Kdlv,m calculée précédemment et de la différence DifKm entre la mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m ;
- calcul de (N-m+1) clés aléatoires diversifiées Kai,m+i à Kai,N, chacune de ces clés aléatoires diversifiées Kai,D, avec j nombre entier naturel tel que m+1 ≤ j ≤ N, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,D_i.
Dans une variante, le nombre aléatoire Nbai peut être du type pseudo-aléatoire et l'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret peut comprendre une valeur initiale à partir de laquelle le nombre aléatoire Nbai est généré. La diversification inverse peut réaliser le calcul de N-I clés aléatoires diversifiées Kai,N_i à Kai,i et de la clé aléatoire Kai,0, chacune de ces clés Kalιlr avec i nombre entier naturel tel que 0 ≤ i ≤ N-I, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,1+i.
Le déchiffrement des données cryptées Z peut être réalisé au moins par les étapes suivantes :
- calcul de données décodées SdeCod,o à partir de la Nème clé aléatoire diversifiée Kai,N et des données cryptées Z ;
- calcul de N données décodées SdeCod,i à Sdecod,N, chacune des N données décodées SdeCod,i, avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données décodées SdeCod,i-i et de la (N-i+l)ème clé aléatoire diversifiée Kai,N_1+i ; les Nèmes données décodées SdeCod,N pouvant être des données décryptées S.
Le déchiffrement de données peut être réalisé par : a) les étapes suivantes :
- addition de la Nème clé aléatoire diversifiée Kai,N à une matrice formée par les données cryptées Z, formant ainsi des données décodées SdeCod,o ; - transposition cyclique des mots d'une matrice formée par les données obtenues après l'étape précédente d' addition ;
- substitution de chaque mot d'une matrice formée par les données obtenues après l'étape précédente de transposition cyclique par un autre mot de taille similaire, formant ainsi des premières données décodées SdeCod,i ; puis b) N-I exécutions des étapes suivantes :
- addition entre une matrice formée par des (i-l)èmes données décodées SdeCod,i-i et une ième clé aléatoire diversifiée Kalιl_, avec i tel que 2 ≤ i ≤ N ;
- multiplication matricielle entre une matrice formée par les données obtenues après l'étape précédente d' addition et une matrice constante ; - transposition cyclique des mots d'une matrice formée par les données obtenues après l'étape précédente de multiplication ;
- substitution de chaque mot d'une matrice formée par les données obtenues après l'étape précédente de transposition cyclique, les données obtenues étant des ièmes données décodées SdeCod,i ; puis c) une étape d'addition entre une matrice formée par les Nèmes données décodées SdeCod,N et la clé aléatoire Kai,0, les données obtenues étant des données décryptées S.
La présente invention concerne également un dispositif de décryptage d'un message de données cryptées comportant au moins des moyens de calcul d'une Nème clé aléatoire diversifiée Kai,N à partir d'une clé secrète KseCret et d'une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdlv,m ou d'une information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KSecret/ des moyens de diversification inverse à partir de la Nème clé aléatoire diversifiée Kai,N calculant N-I clés aléatoires diversifiées Kai,N_i à Kai,i et la clé aléatoire Kai,0, et des moyens de déchiffrement des données Z à partir des N clés aléatoires diversifiées Kal,1 à Kai,N et de la clé aléatoire Kai,0, avec N nombre entier naturel strictement supérieur à 1, m pouvant être un nombre entier naturel tel que 1 ≤ m ≤ N.
Les moyens de diversification inverse calculant les N-I clés aléatoires diversifiées Kai,N_i à Kal,1 et la clé aléatoire Kai,0 peuvent réaliser au moins une opération non-linéaire. Lorsque l'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdiv,m, avec m nombre entier naturel tel que 1 ≤ m ≤ N, les moyens de calcul de la Nème clé aléatoire diversifiée Kai,N peuvent comporter au moins :
- des moyens de calcul d' au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ; - des moyens de calcul de m-1 clés diversifiées Kdlv,2 à Kdlv,m, chacune des m-1 clés diversifiées KdlVιl, avec i nombre entier naturel tel que 2 ≤ i ≤ m, étant calculée à partir d'une précédente clé diversifiée K^v^-i ; - des moyens d'addition de la mème clé diversifiée Kdlv,m calculée précédemment et de la différence DifKm entre la mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m ;
- des moyens de calcul de (N-m+1) clés aléatoires diversifiées Kai,m+i à Kai,N, chacune de ces clés aléatoires diversifiées Kai,D, avec j nombre entier naturel tel que m+1 ≤ j ≤ N, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,D_i.
Les moyens de diversification inverse peuvent calculer N-I clés aléatoires diversifiées Kai,N_i à Kal,1 et la clé aléatoire Kai,0, chacune de ces clés Kai,!, avec i nombre entier naturel tel que 0 ≤ i ≤ N-I, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,1+i.
Les moyens de déchiffrement des données peuvent comporter au moins :
- des moyens de calcul de données décodées Sdecod,o à partir de la Nème clé aléatoire diversifiée Kai,N et des données cryptées Z ;
- des moyens de calcul de N données décodées SdeCod,i à SdeCod,N, chacune des N données décodées
Sdecod,i/ avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données décodées Sdecod,i-i et de la (N-i+l)ème clé aléatoire diversifiée Kai,N_1+1 ; les Nèmes données décodées Sdecod,N pouvant être des données décryptées S.
Les moyens de déchiffrement de données peuvent comporter :
- des moyens d' addition de la clé aléatoire Kai,o et des clés aléatoires diversifiées Kai,i à Kai,N à des matrices de données ;
- des moyens de transposition cyclique des mots d'une matrice de données ;
- des moyens de substitution de chaque mot d'une matrice de données par un autre mot de taille similaire ; - des moyens de multiplication matricielle entre une matrice de données et une matrice constante.
L'invention concerne aussi un dispositif de traitement de signaux destiné à mettre en œuvre un procédé de cryptage d'un message de données et/ou un procédé de décryptage d'un message de données cryptées tels que décrits précédemment.
L' invention concerne aussi un carte à puce comportant au moins un dispositif de cryptage d'un message de données et/ou un dispositif de décryptage d'un message de données cryptées tels que décrits précédemment .
L' invention concerne également un support de données, pouvant être lu par un système informatique, comportant des données sous forme codée, pour mettre en œuvre un procédé de cryptage et/ou un procédé de décryptage tels que décrits précédemment.
Enfin, l'invention concerne un produit logiciel comportant un support de données susceptible d'être lu par un système informatique, permettant de mettre en œuvre un procédé de cryptage et/ou un procédé de décryptage tels que décrits précédemment.
L'invention s'applique notamment pour un algorithme de type AES. Toutefois, les principes de l'invention peuvent s'appliquer à d'autres types d'algorithmes, par exemple tout algorithme de chiffrement et/ou de déchiffrement faisant appel à un calcul de clés « non trivial », comportant par exemple au moins une étape non linéaire de substitution et/ou une étape de permutation sur des clés calculées. BRÈVE DESCRIPTION DES DESSINS
La présente invention sera mieux comprise à la lecture de la description d'exemples de réalisation donnés à titre purement indicatif et nullement limitatif en faisant référence aux dessins annexés sur lesquels :
- la figure 1 représente schématiquement les étapes de codage de données mises en œuvre par un algorithme AES selon l'art antérieur, - la figure 2 représente les étapes réalisées lors de la mise en œuvre d'un exemple de réalisation d'un procédé de cryptage de données selon 1' invention,
- la figure 3 représente schématiquement les étapes mises en œuvre lors d'un chiffrement de données réalisé durant un exemple de réalisation d'un procédé de cryptage de données selon l'invention,
- la figure 4 représente un tableau de correspondance utilisée lors d'une opération de substitution exécutée durant un exemple de réalisation d'un procédé de cryptage de données selon l'invention,
- la figure 5 représente les étapes réalisées lors de la mise en œuvre d'un exemple de réalisation d'un procédé de décryptage de données cryptées selon l'invention,
- la figure 6 représente schématiquement les étapes mises en œuvre lors d'un déchiffrement de données réalisé durant un exemple de réalisation d'un procédé de décryptage de données cryptées selon l'invention, - la figure 7 représente un tableau de correspondance utilisée lors d'une opération de substitution exécutée durant un exemple de réalisation d'un procédé de décryptage de données cryptées selon 1' invention,
- la figure 8 représente un exemple d'un circuit destiné à mettre en œuvre un procédé de cryptage de données selon l'invention,
- la figure 9 représente un exemple d'un circuit destiné à mettre en œuvre un procédé de décryptage de données selon l'invention.
Des parties identiques, similaires ou équivalentes des différentes figures décrites ci-après portent les mêmes références numériques de façon à faciliter le passage d'une figure à l'autre.
Les différentes possibilités (variantes et modes de réalisation) doivent être comprises comme n'étant pas exclusives les unes des autres et peuvent se combiner entre elles.
EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS
On se réfère à la figure 2 qui représente les étapes réalisées lors de la mise en œuvre d'un exemple de réalisation d'un procédé de cryptage de données à clé secrète aléatoire. Le message de données à crypter, référencé
« S » sur la figure 2, est tout d'abord coupé en blocs de 128 bits représentés sous forme d'une matrice 4 x 4 dont les entrées sont respectivement des mots de 8 bits (octets) . Ces blocs sont ensuite cryptés indépendamment les uns des autres pour obtenir en fin du procédé de cryptage des blocs de données cryptées, référencés « Z » sur la figure 2, qui peuvent alors être concaténés et former un message de données cryptées.
Dans l'exemple de réalisation du procédé décrit, toutes les opérations arithmétiques s'effectuent sur des mots de 8 bits disposés en matrice
4 x 4. On peut donc se placer, pour les calculs, dans un corps fini appelé champ de Galois étendu noté GF (28), ayant comme polynôme primitif : P (x) = x8 + x4 + x3 + x + 1.
On réalise un premier ensemble de fonctions, appelé ronde initiale, comprenant tout d'abord le calcul d'une clé aléatoire Kai,o à partir d'un nombre aléatoire Nbai, par exemple non nul et du type entièrement aléatoire ou pseudo-aléatoire, et d'une clé secrète KseCret, par exemple également non nulle .
La clé aléatoire Kai,o est obtenue par une addition 102 entre la clé secrète KseCret et le nombre aléatoire Nbai . La taille de la clé secrète KseCret peut être égale à 128 bits, 192 bits ou encore 256 bits, et est ici choisie égale à la taille des blocs de données
5 à crypter. Sur l'exemple de la figure 2, la clé secrète KseCret comporte 128 bits représentés sous la forme d'une matrice 4 x 4 dont les entrées sont des mots de 8 bits. La taille du nombre aléatoire Nbai est choisie égale à la taille de la clé secrète KseCret • Cette addition 102 est réalisée par un OU Exclusif entre la clé secrète KseCret et le nombre aléatoire Nbai . On obtient en sortie de l'addition 102 la clé aléatoire
Kal, 0 • Durant la ronde initiale, on utilise la clé aléatoire Kai,o. A la ronde suivante, on réalise le calcul d'une première clé aléatoire diversifiée Kal,1, ou première clé de ronde aléatoire, obtenue à partir de la clé aléatoire Kai,0 par une opération de diversification 103, appelée « KeySchedule », de cette clé aléatoire Kai,o. On a donc Kal,1 = KeySchedule (Kai,0) .
Cette fonction 103 « KeySchedule » permet de calculer N clés aléatoire diversifiée Kal,1 à Kai,N, N étant le nombre de rondes réalisées durant le procédé de cryptage. La valeur de N est fonction de la taille de la clé secrète KseCret utilisée : pour une clé secrète KSecret de 128 bits, on a N = 10 ; N = 12 pour une clé de 192 bits ; et N = 14 pour une clé de 256 bits. La fonction « KeySchedule » sera détaillée plus loin dans la description.
Ces clés aléatoires diversifiées Kal,1 à Kai,N et la clé aléatoire Kai,o sont utilisées pour réaliser un chiffrement 105 des données S détaillé ci-dessous en liaison avec la figure 3. Dans cet exemple de réalisation, les clés Kai,o à Kai,N sont calculées parallèlement à l'exécution du chiffrement 105. Dans une variante, il est possible que les clés aléatoires diversifiées Kal,1 à Kai,N et la clé aléatoire Kai,o soient calculées avant l'exécution du chiffrement 105.
Tout d'abord, le chiffrement 105 achève la ronde initiale par le calcul de données codées SCOd,o à partir de la clé aléatoire Kai,o et des données S. Une fonction 104, appelée « AddRoundKey », réalise ce calcul. On a donc :
Scod,o = AddRoundKey (Kai, o, S) . Le calcul « AddRoundKey » des données codées SCOd,o est ici une opération d'addition, réalisée par un « OU Exclusif », entre les données initiales S et la clé aléatoire Kai,0.
La ronde initiale étant terminée, on exécute N rondes. Chacune des j_èmes rondes, avec i nombre entier naturel tel que 1 ≤ i ≤ N-I, comporte quatre fonctions qui sont détaillées ci-dessous.
Durant chacune de ces rondes, le procédé exécute tout d'abord une fonction 106, appelée « SubBytes », durant laquelle chaque mot de la matrice de données codées obtenue à l'étape précédente (les données codées SCOd,o lorsque l'on vient d'achever l'exécution de la ronde initiale, ou les (i-l)èmes données codées SCOd,i-i lorsque l'on exécute une ième ronde avec 2 ≤ i ≤ N-I) est remplacé par un autre mot. Pour cela, une transformation élémentaire appelée « sub » est appliquée sur chaque mot SCOd(c,d) des données codées SCOd tel que : od(c, d) ) = -1
SUb (Sc SCod(c, cd) b si Scod(c,cd) est non nul, ou sub(SCod(c,d)) = b si SCod(c, d) est nul, avec c et d nombres entiers naturels, b = {63} (notation hexadécimale), et
Figure imgf000028_0001
L'opérateur « * » représente la multiplication des matrices dans le champ de Galois GF (28), et ScQd(Cd)'1 représente un mot inverse des données codées SCOd- La fonction « SubBytes » est donc une fonction de substitution non linéaire. Cette fonction de substitution peut également être représentée sous la forme d'un tableau comportant les valeurs de substitution des mots des données codées SCOd- Un mot SCOd(c, d) (ici un octet) dont la valeur est notée « x,y », où x et y représentent respectivement les bits de poids fort et de poids faible, est donc substitué par le mot dont la valeur se trouve dans le tableau représenté sur la figure 4, au croisement de la ligne x et de la colonne y correspondantes. Par exemple, si le mot SCodi(i,i) a pour valeur {04}, on a alors :
SubBytes (Scodid, D) = { F2 } .
On exécute ensuite une fonction 108 appelée « ShiftRows » sur les données obtenues en sortie de « SubBytes » 106. Cette fonction 108 consiste en une transposition décalant cycliquement les mots des lignes de la matrice obtenue en sortie de « SubBytes ». Les mots des lignes sont décalés suivant un décalage circulaire à gauche, le nombre de cases du décalage dépendant de la ligne : les mots de la première ligne de la matrice ne sont pas décalés, les mots de la seconde ligne sont décalés d'une case vers la gauche, les mots de la troisième ligne sont décalés de deux cases vers la gauche et les mots de la quatrième ligne sont décalés de trois cases vers la gauche. Par exemple, si on a en entrée de la fonction « ShiftRows » une matrice M telle que :
Figure imgf000030_0001
on obtient alors en sortie la matrice
Figure imgf000030_0002
Une fonction 110, appelée « MixColumns » réalise ensuite une multiplication matricielle dans GF (28) entre la matrice obtenue en sortie de « ShiftRows » et une matrice constante A0 telle que :
Figure imgf000030_0003
Ce calcul s'effectue par colonne, c'est-à- dire que chaque colonne dépend de toute la colonne d' entrée .
Ensuite, la fonction « KeySchedule » 103 (représentée sur la figure 2) est exécutée, réalisant une opération de diversification de la clé précédemment utilisée, qui est soit la clé aléatoire Kai,o lorsque l'on réalise la ronde initiale, soit une (i-l)ème clé aléatoire diversifiée Ka^1-I lorsque l'on réalise les autres rondes. En écrivant la : (i-1)ème clé aléatoire diversifiée Kal,i-1 sous la forme
Figure imgf000031_0002
la clé aléatoire diversifiée Kal,i obtenue est alors de la forme
Figure imgf000031_0001
Avec :
Figure imgf000032_0001
« sub » correspond à la fonction de transformation non linéaire décrite précédemment pour la fonction « SubBytes ». Rcon correspond à un tableau unidimensionnel de constantes (en hexadécimal) , indexé par le numéro de la ronde courante :
Figure imgf000033_0001
On a donc Kai,! = KeySchedule (Rai^-i) .
Enfin, la ième ronde, avec i tel que 1 < i < N-I, se termine par le calcul (fonction 112 appelée « AddRoundKey ») de ièmes données codées SCOd,i à partir de la ième clé aléatoire diversifiée Kai,! et des données obtenues en sortie « MixColumns » 110. Cette fonction 112 « AddRoundKey » est similaire à la fonction 104 « AddRoundKey » réalisée durant la ronde initiale .
La Nème ronde est ensuite exécutée. Par rapport aux ièmes rondes, avec i tel que 1 < i < N-I, cette dernière ronde N ne comporte que trois fonctions 114, 116, 118 respectivement similaires aux fonctions 106 « SubBytes », 108 « ShiftRows » et 112 « AddRoundKey ». A la fin de cette dernière ronde, on obtient en sortie les données cryptées Z.
Ces étapes sont répétées pour chacun des blocs de données. Ainsi, le cryptage réalisé permet de chiffrer chaque bloc d' informations par une clé différente. De plus, cette clé étant aléatoire pour chaque bloc de données, les attaques connues utilisées contre l'algorithme AES sont ici inefficaces. La clé aléatoire doit toutefois être connue pour réaliser le décryptage des données cryptées. Pour cela, parallèlement aux étapes décrites ci-dessus, le procédé réalise également, durant la première ronde, une fonction 107 « KeySchedule », représentée sur la figure 2, à partir de la clé secrète KseCret, délivrant ainsi une première clé diversifiée Kdlv, i. Cette fonction 107 « KeySchedule » est également répétée durant les rondes suivantes en utilisant à chaque fois la clé diversifiée Kdlv calculée précédemment. En calculant la différence entre une mème clé aléatoire diversifié Kai,m et une mème clé diversifiée Kdlv,m (opération 109 sur la figure 2), avec m nombre entier naturel tel que 1 ≤ m ≤ N, on obtient une information DifKm utilisable pour réaliser le décryptage des données. Il est alors possible de réaliser le décryptage à partir de cette information DifKm et de la clé secrète KseCret • On choisit de préférence de réaliser le calcul de cette différence DifKm au cours d'une ronde se trouvant sensiblement au milieu de l'ensemble des rondes. Dans l'exemple décrit précédemment, le chiffrement étant réalisé sur 10 rondes, on choisit donc de réaliser cette différence durant la cinquième ronde (m = 5), c'est-à-dire de calculer la différence DifKs = Kai,5 - Kdlv,5. Toutefois, il est possible de choisir une autre valeur de m.
D'une manière générale, toute information choisie en fonction du nombre aléatoire Nbai et/ou de la clé secrète KseCret pourra être transmise pour retrouver le nombre aléatoire Nbal ou la clé aléatoire Kai,0. Lorsque le nombre aléatoire Nbai est obtenu à partir d'un générateur pseudo-aléatoire, cette information transmise peut être la graine ou le nombre initial à partir duquel le nombre pseudo-aléatoire est généré.
Un procédé de décryptage des données précédemment cryptées va maintenant être décrit en liaison avec la figure 5.
On réalise tout d'abord une fonction « KeySchedule » 202, similaire à la fonction « KeySchedule » réalisée durant le procédé de cryptage des données, réalisant ainsi une diversification de la clé secrète KseCret • « KeySchedule » est exécutée N fois, N correspondant aux nombres de rondes réalisées durant le procédé de cryptage.
Lorsque la fonction « KeySchedule » a calculé la mème clé diversifiée Kdlv,m, l'information DifKm = Kai,m - Kdlv,m est ajoutée à la mème clé diversifiée
Kdiv,m- On obtient alors la mème clé aléatoire diversifiée
Kal, m •
On continue alors la fonction « KeySchedule » 202 à partir de la mème clé aléatoire diversifiée Kai,m, permettant ainsi d'obtenir la dernière clé aléatoire diversifiée Kai,N.
Un fonction 204 de diversification inverse de clé, appelée « InvKeySchedule » permet alors de délivrer en sortie les N clés aléatoires diversifiées Kal,1 à Kai,N utilisées lors du cryptage des données. Cette fonction « InvKeySchedule » réalise l'opération matricielle inverse de la fonction « KeySchedule »
La (i-l)ème clé aléatoire diversifiée Kai,!-i obtenue par la fonction « InvKeySchedule » est alors de la forme Kai,i-i = InvKeySchedule (Kai,i) , c'est-à-dire que si :
Figure imgf000036_0001
alors la (i-1)ème clé aléatoire K -al, î-l s'écrit sous la forme :
Figure imgf000036_0002
A partir des N clés aléatoires diversifiées obtenues, on réalise ensuite un déchiffrement 206 des données Z. Ce déchiffrement va être détaillé en liaison avec la figure 6. On réalise une fonction 208 « AddRoundKey » qui est similaire à la fonction « AddRoundKey » 118. Cette étape est similaire pour le cryptage et le décryptage car l'opération d'addition OU Exclusif est également sa propre opération inverse. On réalise donc ici un OU Exclusif entre les données cryptées Z et la dernière (Nème) clé aléatoire diversifiée.
On exécute ensuite une fonction 210 « InvShiftRows » sur les données obtenues en sortie de « AddRoundKey » 208. Cette fonction 210 est la fonction inverse de « ShiftRows ». Cette fonction « InvShiftRows » consiste en une transposition décalant cycliquement les mots des lignes de la matrice obtenue en sortie de « AddRoundKey » 208. Les mots des lignes sont décalés suivant un décalage circulaire à droite, le nombre de cases du décalage dépendant de la ligne : les mots de la première ligne de la matrice ne sont pas décalés, les mots de la seconde ligne sont décalés d'une case vers la droite, les mots de la troisième ligne sont décalés de deux cases vers la droite et les mots de la quatrième ligne sont décalés de trois cases vers la droite.
Par exemple, si on a en entrée de la fonction « InvShiftRows » une matrice M telle que :
Figure imgf000037_0002
on obtient alors en sortie la matrice
Figure imgf000037_0001
Le procédé de décryptage exécute ensuite une fonction 212, appelée « InvSubBytes », dans laquelle chaque mot de la matrice obtenue à l'étape précédente est remplacé par un autre mot. Pour cela, une transformation élémentaire appelée « invsub » est appliquée sur chaque mot à transformer. Pour cela, on réalise l'inverse de la transformation affine utilisée pour la transformation élémentaire « sub », puis on applique l'inverse multiplicatif sur le résultat. La fonction « InvSubBytes » est donc une fonction de substitution non linéaire. Cette opération de substitution peut également être représentée sous la forme d'un tableau comportant les valeurs de substitution des mots des données codées. Un mot (ici un octet) dont la valeur est notée « x,y », où x et y représentent respectivement les bits de poids fort et de poids faible, est donc substitué par le mot dont la valeur se trouve dans le tableau représenté sur la figure 7, au croisement de la ligne x et de la colonne y correspondantes. Par exemple, si le mot à substituer a pour valeur {04}, on a alors :
SubBytes ({04}) = {30}.
Ces fonctions réalisées ci-dessus correspondent aux fonctions inverses de celles réalisées durant la dernière ronde du procédé de cryptage .
Les quatre fonctions inverses de celles correspondant aux rondes 1 à N-I du procédé de cryptage sont ensuite réalisées.
On exécute tout d' abord une fonction
« AddRoundKey » 214, par exemple similaire à la fonction « AddRoundKey » 208, en utilisant la hème clé aléatoire diversifiée Kai,h correspondant au numéro h de ronde.
Une fonction 216, appelée « InvMixColumns », correspondant à l'inverse de la fonction « MixColumns » réalise ensuite une multiplication matricielle dans GF (2 ) entre la matrice obtenue en sortie de la fonction « AddRoundKey » 214 et une matrice constante B0 telle que :
Figure imgf000039_0001
Ce calcul s'effectue par colonne, c'est-à- dire que chaque colonne dépend de toute la colonne d' entrée . On exécute ensuite une fonction
« InvShiftRows » 218, par exemple similaire à la fonction « InvShiftRows » 210, sur les données obtenues en sortie de « InvMixColumns » 216.
La ronde est terminée par un fonction « InvSubBytes » 220, par exemple similaire à la fonction « InvSubBytes » 212.
Le décryptage des données Z est alors terminé en réalisant la dernière ronde, correspondant à l'inverse de la première ronde, ou ronde initiale, du cryptage. Cette dernière ronde consiste en une fonction « AddRoundKey » 222 similaire aux autres fonctions « AddRoundKey » réalisées. On obtient en sortie de cette fonction « AddRoundKey » 222 les données décryptées S. La figure 8 représente un exemple d' implémentation d'un circuit 300 mettant en œuvre le procédé de cryptage à clé secrète aléatoire décrit précédemment .
Les données à crypter sont entrées sur un bus 302 de 32 bits, et les données cryptées sont délivrées en sortie du circuit 300 sur un bus de sortie 304 également de 32 bits. La clé secrète est entrée sur un bus 306 également de 32 bits. Des moyens de conversion 308 convertissent quatre mots de 32 bits de données en une seule donnée S de longueur 128 bits contenu dans un registre. De même, des moyens de conversion 310 convertissent la clé secrète en une seule donnée KseCret de 128 bits, 192 bits ou 256 bits. Au niveau de la sortie du circuit 300, des moyens de conversion 312 convertissent les données cryptées Z de 128 bits en mots de 32 bits sur le bus de sortie 304. Un contrôleur d'état 314 cadence la diversification des clés aléatoires « KeySchedule » réalisée par des moyens de diversification 316 et le chiffrement des données par des moyens de chiffrement 318. Ces moyens de chiffrement 318 exécutent les fonctions « SubBytes », « ShiftRows », « MixColumns » et « AddRoundKey ». La diversification de la clé secrète (fonction 107 de la figure 2) peut être réalisée par les moyens de diversification 316 si ceux-ci sont assez rapides pour réaliser deux diversifications distinctes durant une ronde, comme c'est le cas sur la figure 8, ou par d'autres moyens de diversification. Dans le deux cas, on délivrera également en sortie du circuit 300 la valeur de la différence DifKm = Kai,m - Kdlv,m permettant de réaliser un décryptage ultérieur des données.
Chaque ronde est effectuée sur un cycle, les clés aléatoires diversifiées étant produites parallèlement à l'exécution des rondes. Cette synchronisation de calcul est réalisée par le contrôleur d'état 314. Différents signaux de commande sont également échangés entre les différents composants du circuit 300.
A la fin des N rondes, le contrôleur d'état 314 autorise l'envoi du texte crypté aux moyens de conversion 312.
Le nombre aléatoire Nbai utilisé dans ce procédé de cryptage peut être obtenu à partir d'un générateur de nombre aléatoire extérieur au circuit 300, ou en utilisant un état interne dudit circuit 300 de mise en œuvre du procédé de cryptage. Le nombre aléatoire Nbai utilisé par le procédé de cryptage peut être directement cet état interne ou le nombre obtenu en sortie du générateur, ou bien être le résultat de l'addition de la clé aléatoire précédente (utilisée pour le codage d'un précédent bloc de données) à l'état interne ou au nombre obtenu en sortie du générateur. On peut également choisir aléatoirement entre ces différentes possibilités pour chaque bloc de données à crypter . La figure 9 représente un exemple d' implémentation d'un circuit 400 mettant en œuvre le procédé de décryptage à clé secrète aléatoire décrit précédemment .
Les données à décrypter sont entrées sur un bus 402 de 32 bits, et les données décryptées sont délivrées en sortie du circuit 400 sur un bus de sortie 404 également de 32 bits. La clé secrète, ainsi que la valeur de la différence DifKm, sont entrées sur un bus 406 également de 32 bits. Des moyens de conversion 408 convertissent quatre mots de 32 bits de données en une seule donnée de longueur 128 bits contenu dans un registre. De même, des moyens de conversion 410 convertissent la clé secrète et la différence DifKm en des données de 128 bits, 192 bits ou 256 bits. Au niveau de la sortie du circuit 400, des moyens de conversion 412 convertissent les données décryptées de 128 bits en mots de 32 bits sur le bus de sortie 404.
Un contrôleur d'état 414 cadence la diversification de la clé secrète « KeySchedule » réalisée par des moyens 416, permettant d'obtenir la dernière clé aléatoire diversifiée à partir de la clé secrète et de l'information de différence de clés DifKm. Ces moyens 416 réalisent ensuite la diversification inverse permettant d' obtenir les clés aléatoires diversifiées. Le contrôleur d'état 414 cadence également le déchiffrement des données par des moyens de déchiffrement 418. Ces moyens de déchiffrement 418 exécutent les fonctions « InvSubBytes », « InvShiftRows », « InvMixColumns » et « AddRoundKey ». Chaque ronde est effectuée sur un cycle, les clés aléatoires diversifiées étant produites parallèlement à l'exécution des rondes. Cette synchronisation de calcul est réalisée par le contrôleur d'état 414. Différents signaux de commande sont également échangés entre les différents composants du circuit 400.
A la fin des N rondes, le contrôleur d'état 414 autorise l'envoi du texte décrypté aux moyens de conversion 412. Le fait d'utiliser la différence DifKm au milieu du chiffrement (par exemple à la cinquième ou sixième ronde si le chiffrement est réalisé en 10 rondes) permet de sortir ce nombre DifKm sans perdre de temps au niveau du chiffrement (un procédé réalisant le cryptage en 10 rondes sur un bus de 32 bits peut finir d'extraire cette valeur en 4 rondes et donc avant la fin de l'exécution du chiffrement) et de limiter la perte de temps au niveau du déchiffrement.

Claims

REVENDICATIONS
1. Procédé de cryptage d'un message de données S comportant au moins une étape de calcul (102) d'au moins une clé aléatoire Kai,0 à partir d'au moins un nombre aléatoire Nbai et d' au moins une clé secrète KSecret/ un chiffrement (105) des données S à partir de la clé aléatoire Kai,0 et d'une pluralité de clés aléatoires diversifiées Kai,i à Kai,N calculées à partir de la clé aléatoire Kai,0 délivrant des données cryptées Z, et une transmission des données cryptées Z et d'une information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret •
2. Procédé de cryptage selon la revendication 1, dans lequel le calcul de chacune des clés aléatoires diversifiées Kai,i à Kai,N comprend au moins une opération non-linéaire.
3. Procédé de cryptage selon l'une des revendications 1 ou 2, calculant N clés aléatoires diversifiées Kai,i à Kai,N, N étant un nombre entier naturel strictement supérieur à 1 égal au nombre de rondes du procédé de cryptage.
4. Procédé de cryptage selon la revendication 3, dans lequel les N clés aléatoires diversifiées Kai,i à Kai,N sont obtenues au moins par les étapes suivantes : - calcul d'une première clé aléatoire diversifiée Kai,i à partir de la clé aléatoire Kai,0 ; - calcul de chacune des N-I clés aléatoires diversifiées Kalιl_, avec i nombre entier naturel tel que 2 ≤ i ≤ N, à partir d'une précédente clé aléatoire diversifiée Kalιl_-ι.
5. Procédé de cryptage selon la revendication 4, dans lequel le chiffrement (105) des données S est réalisé au moins par les étapes suivantes : - calcul (104) de données codées SCOd,o à partir de la clé aléatoire Kai,o et des données S à crypter ;
- calcul de N données codées SCOd,i à SCOd,N, chacune des N données codées SCOd,i/ avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données codées SCOd,i-i et de la ième clé aléatoire diversifiée Kalι± ; les Nèmes données codées SCOd,N étant les données cryptées Z.
6. Procédé de cryptage selon l'une des revendications 4 ou 5, comportant en outre les étapes suivantes :
- calcul (107) d'au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;
- calcul (107) d'une mème clé diversifiée Kdiv,m à partir d'une (m-l)ème clé diversifiée Kdlv, (m-i) , avec m nombre entier naturel tel que 2 ≤ m ≤ N ;
- calcul (109) d'une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m, avec m nombre entier naturel tel que 1 ≤ m ≤ N ; ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret comprenant la différence DifKm.
7. Procédé de cryptage selon la revendication 6, dans lequel ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend en outre le nombre m qui est choisi aléatoirement.
8. Procédé de cryptage selon l'une des revendications 4 ou 5, dans lequel le nombre aléatoire Nbai est du type pseudo-aléatoire et ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend une valeur initiale à partir de laquelle le nombre aléatoire Nbai est généré.
9. Procédé de cryptage selon l'une des revendications 5 à 8, dans lequel le chiffrement (105) de données S est réalisé par : a) une étape d'addition (104) de la clé aléatoire Kai,0 à une matrice formée par les données S à crypter, formant des données codées SCOd,o ; puis b) N-I exécutions des étapes suivantes :
- substitution (106) de chaque mot d'une matrice formée par des (i-l)èmes données codées
SCod,i-i/ avec i tel que 1 ≤ i ≤ N-I par un autre mot de taille similaire ; - transposition cyclique (108) des mots d'une matrice formée par les données obtenues après l'étape précédente de substitution (106) ;
- multiplication matricielle (110) entre une matrice constante et une matrice formée par les données obtenues après l'étape précédente de transposition (108) ;
- addition (112) entre une matrice formée par les données obtenues après l'étape précédente de multiplication (110) et une ième clé aléatoire diversifiée Kalιlr avec i tel que 1 ≤ i ≤ N-I, les données obtenues étant des ièmes données codées SCOd,i ; puis c) les étapes suivantes : - substitution (114) de chaque mot d'une matrice formée par les (N-I) èmes données codées Scod, (N-D par un autre mot de taille similaire ;
- transposition cyclique (116) des mots d'une matrice formée par les données obtenues après l'étape précédente de substitution (114) ; addition (118) entre une matrice formée par les données obtenues après l'étape précédente de transposition (116) et la Nème clé aléatoire diversifiée Kai,N, les données obtenues étant les données cryptées Z.
10. Dispositif de cryptage (300) d'un message de données S comportant au moins des moyens de calcul (316) d'au moins une clé aléatoire Kai,0 à partir d'au moins un nombre aléatoire Nbai et d'au moins une clé secrète KseCret, des moyens de chiffrement (318) des données S à partir de la clé aléatoire Kai,0 et d'une pluralité de clés aléatoires diversifiées Kai,i à Kai,N calculées à partir de la clé aléatoire Kai,0, avec N nombre entier naturel strictement supérieur à 1, délivrant des données cryptées Z, et des moyens de transmission des données cryptées Z et d'une information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret •
11. Dispositif de cryptage (300) selon la revendication 10, comportant en outre :
- des moyens de calcul (316) d'au moins une première clé aléatoire diversifiée Kai,i à partir de la clé aléatoire Kai,0 ; - des moyens de calcul (316) de chacune des
N-I clés aléatoires diversifiées Kal/1, avec i nombre entier naturel tel que 2 ≤ i ≤ N, à partir d'une précédente clé aléatoire diversifiée Kalιl_-ι.
12. Dispositif de cryptage (300) selon la revendication 11, dans lequel les moyens de calcul (316) de chacune des clés aléatoires diversifiées Kai,i à Kai,N réalisent au moins une opération non-linéaire.
13. Dispositif de cryptage (300) selon l'une des revendications 11 ou 12, dans lequel les moyens de chiffrement (318) des données S comportent au moins :
- des moyens de calcul de données codées SCOd,o à partir de la clé aléatoire Kai,0 et des données S à crypter ; - des moyens de calcul de N données codées SCod,i à SCOd,N/ chacune des N données codées SCOd,i/ avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données codées SCOd,i-i et de la ième clé aléatoire diversifiée Kai,i ; les Nèmes données codées SCOd,N étant les données cryptées Z.
14. Dispositif de cryptage (300) selon l'une des revendications 11 à 13, comportant en outre :
- des moyens de calcul (316) d'au moins une première clé diversifiée Kdlv,i à partir de la clé secrète KseCret ;
- des moyens de calcul (316) d'une mème clé diversifiée Kdlv,m à partir d'une (m-l)ème clé diversifiée
Kdiv, (m-i) t avec m nombre entier naturel tel que 2 ≤ m ≤ N ;
- des moyens de calcul (318) d'une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m ; ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret comprenant la différence DifKm.
15. Dispositif de cryptage (300) selon la revendication 14, dans lequel ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend en outre le nombre m qui est choisi aléatoirement.
16. Dispositif de cryptage (300) selon l'une des revendications 11 à 13, dans lequel le nombre aléatoire Nbai est du type pseudo-aléatoire et ladite information produite à partir du nombre aléatoire Nbai et/ou de la clé secrète KseCret comporte une valeur initiale à partir de laquelle le nombre aléatoire Nbai est généré.
17. Dispositif de cryptage (300) selon l'une des revendications 13 à 16, dans lequel les moyens de chiffrement (318) des données S comportent :
- des moyens d' addition de la clé aléatoire Kai,o et des clés aléatoires diversifiées Kai,i à Kai,N à des matrices de données ; - des moyens de substitution de chaque mot d'une matrice de données par un autre mot de taille similaire ;
- des moyens de transposition cyclique des mots d'une matrice de données ; - des moyens de multiplication matricielle entre une matrice de données et une matrice constante.
18. Procédé de décryptage d'un message de données cryptées Z comportant au moins une étape de calcul (202) d'une Nème clé aléatoire diversifiée Kai,N à partir d'une clé secrète KseCret et d'une information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret, une étape de diversification inverse
(204) réalisée à partir de la Nème clé aléatoire diversifiée Kai,N calculant N-I clés aléatoires diversifiées Kai,N_i à Kai,i et une clé aléatoire Kai,o, et un déchiffrement (206) des données Z à partir des N clés aléatoires diversifiées Kai,i à Kai,N et de la clé aléatoire Kai,0, avec N nombre entier naturel strictement supérieur à 1.
19. Procédé de décryptage selon la revendication 18, dans lequel N est le nombre de rondes du procédé de décryptage.
20. Procédé de décryptage selon l'une des revendications 18 ou 19, dans lequel l'étape de diversification inverse (204) calculant les N-I clés aléatoires diversifiées Kai,N_i à Kai,i et la clé aléatoire Kai,o comprend au moins une opération non- linéaire.
21. Procédé de décryptage selon l'une des revendications 18 à 20, dans lequel l'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend une différence DifKm entre une mème clé aléatoire diversifiée Kai,m et une mème clé diversifiée Kdlv,m, avec m nombre entier naturel tel que 1 < m < N.
22. Procédé de décryptage selon la revendication 21, dans lequel l'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend en outre le nombre m.
23. Procédé de décryptage selon l'une des revendications 21 ou 22, dans lequel le calcul (202) de la Nème clé aléatoire diversifiée Kai,N est obtenu au moins par les étapes suivantes : - calcul d' au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;
- calcul de m-1 clés diversifiées Kdlv,2 à Kdiv,m, chacune des m-1 clés diversifiées Kd1V11, avec i nombre entier naturel tel que 2 ≤ i ≤ m, étant calculée à partir d'une précédente clé diversifiée Kdlv,i-i ;
- addition de la mème clé diversifiée Kdlv,m calculée précédemment et de la différence DifKm entre la mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m ; - calcul de (N-m+1) clés aléatoires diversifiées Kai,m+i à Kai,N, chacune de ces clés aléatoires diversifiées Kai,D, avec j nombre entier naturel tel que m+1 ≤ j ≤ N, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,D_i.
24. Procédé de décryptage selon l'une des revendications 18 à 20, dans lequel le nombre aléatoire Nbai est du type pseudo-aléatoire et l'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend une valeur initiale à partir de laquelle le nombre aléatoire Nbai est généré.
25. Procédé de décryptage selon l'une des revendications 18 à 24, dans lequel la diversification inverse (204) réalise le calcul de N-I clés aléatoires diversifiées Kai,N_i à Kai,i et de la clé aléatoire Kai,o, chacune de ces clés Kalιlr avec i nombre entier naturel tel que 0 ≤ i ≤ N-I, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,1+i.
26. Procédé de décryptage selon l'une des revendications 18 à 25, dans lequel le déchiffrement (206) des données cryptées Z est réalisé au moins par les étapes suivantes :
- calcul de données décodées SdeCod,o à partir de la Nème clé aléatoire diversifiée Kai,N et des données cryptées Z ;
- calcul de N données décodées SdeCod,i à Sdecod,N, chacune des N données décodées SdeCod,i, avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données décodées SdeCod,i-i et de la (N-i+l)ème clé aléatoire diversifiée Kai,N_1+i ; les Nèmes données décodées SdeCod,N étant des données décryptées S.
27. Procédé de décryptage selon l'une des revendications 18 à 26, le déchiffrement (206) de données étant réalisé par : a) les étapes suivantes :
- addition (208) de la Nème clé aléatoire diversifiée Kai,N à une matrice formée par les données cryptées Z, formant ainsi des données décodées SdeCod,o ;
- transposition cyclique (210) des mots d'une matrice formée par les données obtenues après l'étape précédente d'addition (208) ; - substitution (212) de chaque mot d'une matrice formée par les données obtenues après l'étape précédente de transposition cyclique (210) par un autre mot de taille similaire, formant ainsi des premières données décodées SdeCod,i ; puis b) N-I exécutions des étapes suivantes :
- addition (214) entre une matrice formée par des (i-l)èmes données décodées SdeCod,i-i et une ième clé aléatoire diversifiée Kalι±, avec i tel que 2 < i < N ;
- multiplication matricielle (216) entre une matrice formée par les données obtenues après l'étape précédente d'addition (214) et une matrice constante ; - transposition cyclique (218) des mots d'une matrice formée par les données obtenues après l'étape précédente de multiplication (216) ;
- substitution (220) de chaque mot d'une matrice formée par les données obtenues après l'étape précédente de transposition cyclique (218), les données obtenues étant des ièmes données décodées
Sdecod,i ; PUiS c) une étape d'addition (222) entre une matrice formée par les Nèmes données décodées SdeCod,N et la clé aléatoire Kai,0, les données obtenues étant des données décryptées S.
28. Dispositif de décryptage (400) d'un message de données cryptées Z comportant au moins des moyens de calcul (416) d'une Nème clé aléatoire diversifiée Kai,N à partir d'une clé secrète KseCret et d'une information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret, des moyens (416) de diversification inverse à partir de la Nème clé aléatoire diversifiée Kai,N calculant N-I clés aléatoires diversifiées Kai,N_i à Kai,i et la clé aléatoire Kai,0, et des moyens de déchiffrement (418) des données Z à partir des N clés aléatoires diversifiées Kai,i à Kai,N et de la clé aléatoire Kai,0, avec N nombre entier naturel strictement supérieur à 1.
29. Dispositif de décryptage (400) selon la revendication 28, dans lequel les moyens (416) de diversification inverse calculant les N-I clés aléatoires diversifiées Kai,N_i à Kal,1 et la clé aléatoire Kai,0 réalisent au moins une opération non- linéaire .
30. Dispositif de décryptage (400) selon l'une des revendication 28 ou 29, dans lequel, lorsque l'information produite à partir d'un nombre aléatoire Nbai et/ou de la clé secrète KseCret comprend une différence DifKm entre une mème clé aléatoire diversifiée Kal,m et une mème clé diversifiée Kdlv,m, avec m nombre entier naturel tel que 1 ≤ m ≤ N, les moyens de calcul (416) de la Nème clé aléatoire diversifiée Kai,N comportent au moins :
- des moyens de calcul d' au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ; - des moyens de calcul de m-1 clés diversifiées Kdlv,2 à Kdlv,m, chacune des m-1 clés diversifiées Kd1V11, avec i nombre entier naturel tel que
2 ≤ i ≤ m, étant calculée à partir d'une précédente clé diversifiée KdiV,i-i !
- des moyens d' addition de la mème clé diversifiée Kdlv,m calculée précédemment et de la différence DifKm entre la mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m ;
- des moyens de calcul de (N-m+1) clés aléatoires diversifiées Kai,m+i à Kai,N, chacune de ces clés aléatoires diversifiées Kai,D, avec j nombre entier naturel tel que m+1 ≤ j ≤ N, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,D_i.
31. Dispositif de décryptage (400) selon l'une des revendications 28 à 30, les moyens (416) de diversification inverse calculant N-I clés aléatoires diversifiées Kai,N_i à Kai,i et la clé aléatoire Kai,0, chacune de ces clés Kalιl_, avec i nombre entier naturel tel que 0 ≤ i ≤ N-I, étant calculée à partir d'une précédente clé aléatoire diversifiée Kai,1+i.
32. Dispositif de décryptage (400) selon l'une des revendications 28 à 31, les moyens de déchiffrement (418) des données comportant au moins : - des moyens de calcul de données décodées
Sdecod,o à partir de la Nème clé aléatoire diversifiée Kai,N et des données cryptées Z ;
- des moyens de calcul de N données décodées SdeCod,i à SdeCod,N, chacune des N données décodées SdeCod,i/ avec i tel que 1 ≤ i ≤ N, étant calculée à partir de précédentes données décodées SdeCod,i-i et de la (N-i+l)ème clé aléatoire diversifiée Kai,N_1+1 ; les Nèmes données décodées SdeCod,N étant des données décryptées S.
33. Dispositif de décryptage (400) selon l'une des revendications 28 à 32, les moyens de déchiffrement (418) de données comportant :
- des moyens d' addition de la clé aléatoire Kai,o et des clés aléatoires diversifiées Kai,i à Kai,N à des matrices de données ;
- des moyens de transposition cyclique des mots d'une matrice de données ;
- des moyens de substitution de chaque mot d'une matrice de données par un autre mot de taille similaire ;
- des moyens de multiplication matricielle entre une matrice de données et une matrice constante.
34. Dispositif de traitement de signaux destiné à mettre en œuvre un procédé de cryptage d'un message de données selon l'une des revendications 1 à 9 et/ou un procédé de décryptage d'un message de données cryptées selon l'une des revendications 18 à 27.
35. Carte à puce comportant au moins un dispositif (300) de cryptage d'un message de données selon l'une des revendications 10 à 17 et/ou un dispositif (400) de décryptage d'un message de données cryptées selon l'une des revendications 28 à 33.
36. Support de données, pouvant être lu par un système informatique, comportant des données sous forme codée, pour mettre en œuvre un procédé de cryptage d'un message de données selon l'une des revendications 1 à 9 et/ou un procédé de décryptage d'un message de données cryptées selon l'une des revendications 18 à 27.
37. Produit logiciel comportant un support de données susceptible d'être lu par un système informatique, permettant la mise en œuvre d'un procédé de cryptage d'un message de données selon l'une des revendications 1 à 9 et/ou un procédé de décryptage d'un message de données cryptées selon l'une des revendications 18 à 27.
PCT/EP2008/066454 2007-11-30 2008-11-28 Procedes et dispositifs de cryptage et de decryptage d'un message de donnees a cle secrete aleatoire WO2009068658A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0759464A FR2924550A1 (fr) 2007-11-30 2007-11-30 Procedes et dispositifs de cryptage et de decryptage d'un message de donnees a cle secrete aleatoire.
FR0759464 2007-11-30

Publications (1)

Publication Number Publication Date
WO2009068658A1 true WO2009068658A1 (fr) 2009-06-04

Family

ID=39712236

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2008/066454 WO2009068658A1 (fr) 2007-11-30 2008-11-28 Procedes et dispositifs de cryptage et de decryptage d'un message de donnees a cle secrete aleatoire

Country Status (2)

Country Link
FR (1) FR2924550A1 (fr)
WO (1) WO2009068658A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002277A (zh) * 2018-11-05 2018-12-14 湖南继善高科技有限公司 一种伪随机信号动态配置系统及方法
CN115801274A (zh) * 2022-11-17 2023-03-14 广州芯德通信科技股份有限公司 一种固件保护方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000031917A1 (fr) * 1998-11-23 2000-06-02 Daniel Tiong Hok Tan Appareil et procedes de cryptage et decryptage des donnees
WO2000041356A1 (fr) * 1998-12-30 2000-07-13 Koninklijke Kpn N.V. Procede et dispositif de traitement cryptographique de donnees
WO2002063822A1 (fr) * 2001-02-08 2002-08-15 Stmicroelectronics S.A. Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
EP1722502A1 (fr) * 2005-05-10 2006-11-15 Research In Motion Limited Masquage de clé pour procédés cryptographiques

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000031917A1 (fr) * 1998-11-23 2000-06-02 Daniel Tiong Hok Tan Appareil et procedes de cryptage et decryptage des donnees
WO2000041356A1 (fr) * 1998-12-30 2000-07-13 Koninklijke Kpn N.V. Procede et dispositif de traitement cryptographique de donnees
WO2002063822A1 (fr) * 2001-02-08 2002-08-15 Stmicroelectronics S.A. Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
EP1722502A1 (fr) * 2005-05-10 2006-11-15 Research In Motion Limited Masquage de clé pour procédés cryptographiques

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002277A (zh) * 2018-11-05 2018-12-14 湖南继善高科技有限公司 一种伪随机信号动态配置系统及方法
CN115801274A (zh) * 2022-11-17 2023-03-14 广州芯德通信科技股份有限公司 一种固件保护方法
CN115801274B (zh) * 2022-11-17 2023-07-11 广州芯德通信科技股份有限公司 一种固件保护方法

Also Published As

Publication number Publication date
FR2924550A1 (fr) 2009-06-05

Similar Documents

Publication Publication Date Title
EP1379023B1 (fr) Chiffrement/déchiffrement exécuté par un circuit intégré masquant une transformation non linéaire du type SUBBYTE
EP2893431B1 (fr) Protection contre canaux auxiliaires
EP2499773B1 (fr) Circuit electronique de faible complexite protege par masquage personnalise
WO2009137593A1 (fr) Système cryptographique comprenant un générateur de nombres aléatoires qui utilise une arithmétique à champ fini
EP3139365B1 (fr) Vérification de la résistance d&#39;un circuit électronique à des attaques par canaux cachés
EP3228043A1 (fr) Méthode de chiffrement à couches de confusion et de diffusion dynamiques
EP1358732A1 (fr) Procede de cryptage securise et composant utilisant un tel procede de cryptage
CA2712178A1 (fr) Procede et dispositifs de contre-mesure pour cryptographie asymetrique
EP3300293B1 (fr) Procédé de chiffrement ou de déchiffrement symétrique par bloc
EP1757009A1 (fr) Procede et dispositif d&#39;execution d&#39;un calcul cryptographique
EP1638245B2 (fr) Protection d&#39;un algorithme DES
EP2159952B1 (fr) Protection d&#39;un algorithme de chiffrement
EP2280511B1 (fr) Procédé de traitement de données protégé contre les attaques par faute et dispositif associé
FR2949886A1 (fr) Procede de traitement cryptographique de donnees
US6961427B1 (en) Methods and apparatus for keystream generation
EP2509252A1 (fr) Procédé de calcul cryptographique sécurisé, en particulier contre des attaques du type DFA et unidirectionnelles, et composant correspondant
FR3056322A1 (fr) Procede de chiffrement ou de dechiffrement protege contre des attaques par canaux caches
WO2009068658A1 (fr) Procedes et dispositifs de cryptage et de decryptage d&#39;un message de donnees a cle secrete aleatoire
EP2940922B1 (fr) Cryptosystèmes symétriques avec clé publique basé sur l&#39;utilisation du groupe symétrique
EP1721246B1 (fr) Procede et dispositif pour accomplir une operation cryptographique
EP1232603B1 (fr) Procedes et appareil de generation de flot de cles
CA2288767A1 (fr) Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d&#39;aleas
FR2867636A1 (fr) Production d&#39;un train de bits servant de cle
EP1615369A1 (fr) Chiffrement par blocs du contenu d&#39;une mémoire externe à un processeur
EP2374240A1 (fr) Procede de mise en oeuvre d&#39;un algorithme de chiffrement par blocs

Legal Events

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

Ref document number: 08854906

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08854906

Country of ref document: EP

Kind code of ref document: A1