[go: up one dir, main page]

WO2009068658A1 - Methods and devices for encrypting and decrypting a data message with random secret key - Google Patents

Methods and devices for encrypting and decrypting a data message with random secret key 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
French (fr)
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/en

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

Method of encrypting a data message S comprising at least one step (102) for the calculation of at least one random key Ka1,0 on the basis of at least one random number Nba1 and of at least one secret key Ksecret/ an enciphering (105) of the data S on the basis of the random key Ka1,0 and of a plurality of diversified random keys Ka1,1 to Ka1,N calculated on the basis of the random key Ka1,0 delivering encrypted data Z, and a transmitting of the encrypted data Z and of an item of information produced on the basis of the random number Nba1 and/or of the secret key Ksecret.

Description

PROCEDES ET DISPOSITIFS DE CRYPTAGE ET DE DECRYPTAGE D'UN MESSAGE DE DONNEES A CLE SECRETE ALEATOIRE METHODS AND DEVICES FOR ENCRYPTING AND DECRYPTING A DATA MESSAGE WITH A RANDOM SECRET KEY
DESCRIPTIONDESCRIPTION
DOMAINE TECHNIQUETECHNICAL AREA
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.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.
ÉTAT DE LA TECHNIQUE ANTÉRIEURESTATE OF THE PRIOR ART
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éeEncryption 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 . To achieve data encryption, it is known to use an algorithm called 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. In the example of FIG. 1, the key 4 comprises 128 bits represented in the form of a 4 × 4 matrix. During this coding, the algorithm executes several sets of steps, called rounds, whose number N r depends on the size of the key used
(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.(N r = 10 for a 128-bit key, N r = 12 for a 192-bit key and N r = 14 for a 256-bit key). Whatever 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.
Ensuite, on exécute (Nr-1) rondes réalisant les quatre fonctions suivantes :Then we execute (N r -1) rounds performing the following four functions:
- « 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."SubBytes" (step 8 in FIG. 1): each word of the data matrix obtained in the previous step is replaced by another word of similar size given by a correspondence table. It is a non-linear transformation.
- « 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."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.
- « 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 »."MixColumns" (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 » (é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) ."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).
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) .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).
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 .At the output of the function 22 is obtained a matrix 24, of size equal to 4 × 4 of words of a size similar to the words of the matrix 2, encrypted data.
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 .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.
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.) .Various solutions, called 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. In case of intrusion or fault injection, different actions can be taken ranging from a simple reset of the chip to a partial or full erasure of all information stored in the memory of the chip. Devices more specific to circuit protection against a reverse engineering phase can also be integrated (metal shield, dummy lines, 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.However, these solutions generally involve significant additional costs both at the hardware level (many additional logical functions necessary for the implementation of encryption and decryption) and at the time of execution of the algorithm, both for the encryption and decryption.
EXPOSÉ DE L'INVENTIONSTATEMENT OF THE 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.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. For this purpose, 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.
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 •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.
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.By adding to the secret key K seC ret a number, or variable, random Nb ai , all the information is encrypted with a different key, which renders ineffective the attacks known from the prior art. This method therefore makes it possible to improve the security of the electronic device in which this method is implanted. By 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.
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.Thus, by applying a random element in the diversification of keys, 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.
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.The fact of using additional information to the secret key, here produced from the random number and / or the secret key, allows that the information manipulated, both during the generation of diversified random keys and during encryption, has a random character. Thanks to the invention, this advantage is obtained with few additional elements on the global circuit implementing the encryption method, and in particular no additional element on the part of the circuit implementing the encryption.
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 .This additional information can be generated in such a way that it is impossible to find the random number without knowing the secret key.
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.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 .
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.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.
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, ...)The calculation of 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, ...)
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.But in general, the calculation of each of the diversified random keys can be achieved by any type of key diversification operations, linear or not. 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.
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 ;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 ;
- 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_-ι.calculating each of the NI diversified random keys K alιl _, with i natural number such that 2 ≤ i ≤ N, from a previous diversified random key K alιl _-ι.
Le chiffrement des données S peut être réalisé au moins par les étapes suivantes :The encryption of the data S can be achieved at least by the following steps:
- calcul de données codées SCOd,o à partir de la clé aléatoire Kai,0 et des données S à crypter ;calculation of coded data S CO d, o from the random key K a i, 0 and data S to be encrypted;
- 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.calculation of 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.
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 ;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;
- 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 ;calculating NI diversified keys K d i V , 2 to Kdiv, N, each of the various diversified keys K d i V , i, with i such that 2 ≤ i ≤ N, being calculated from a previous diversified key K dlVil- 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 ;- calculating a difference between a Dif Km mth diverse random key K i, m and m th diversified key K dlv, m, where m is natural number such that 1 ≤ m ≤ N. 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;
- 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 ;- calculating a diversified key K m-th dlv, m from a (ml) -th diversified key K dlv (_i m), with m natural integer such that 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.- calculating a difference between a Dif Km mth diverse random key K i, m and m th diversified key K dlv, m, where m is natural number such that 1 <m <N; said information produced from the random number Nb ai and / or the secret key K seC ret may include the difference Dif Km .
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 .In this case, advantageously, 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.
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.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.
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é.In a variant, 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.
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 :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:
- 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 ;substituting each word of a matrix formed by (he) th coded data S CO d, ii / with i such that 1 ≤ i ≤ NI by another word of similar size;
- transposition cyclique des mots d'une matrice formée par les données obtenues après l'étape précédente de substitution ;cyclic transposition of the words of a matrix formed by the data obtained after the preceding substitution step;
- 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 ;matrix multiplication between a constant matrix and a matrix formed by the data obtained after the previous transposition step;
- 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 :- addition between a matrix formed by the data obtained after the previous multiplication step and an i-th diverse random key K alιlr with i such that 1 ≤ i ≤ NI, the data obtained being the i th encoded data COd S, i; then c) the following steps:
- 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 ;substituting each word of a matrix formed by (NI) th coded data S CO d, <ND by another word of similar size;
- 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.cyclic transposition of the words of a matrix formed by the data obtained after the preceding substitution step; adding between a matrix formed by the data obtained after the previous transposition step and the N th diversified random key K ai , N , the data obtained being the encrypted data 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.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.
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 •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 •
Le dispositif de cryptage peut comporter en outre :The encryption device may further comprise:
- 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 ;means for calculating at least a first diversified random key K ai , i from the random key K a i, 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.means for calculating each of the NI diversified random keys K alılr with i natural integer such that 2 ≤ i ≤ N, from a previous diversified random key K 3 I 11 -I. 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.
Les moyens de chiffrement des données S peuvent comporter au moins :The data encryption means S may comprise at least:
- 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 ;means for calculating coded data S C od, o from the random key K a i, 0 and data S to be encrypted;
- 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.means for calculating N coded data S CO d, S 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 the encrypted data Z.
Le dispositif de cryptage peut comporter en outre :The encryption device may further comprise:
- des moyens de calcul d' au moins une première clé diversifiée Kdlv,i à partir de la clé secrète KseCret ;means for calculating at least a first diversified key K dlv , i from the secret key K seC ret;
- 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- means for calculating a diversified key K m-th dlv, m from a (ml) -th diversified key k div, (mi), where m is natural number such that 2 ≤ m ≤ N; - means for calculating a difference
DifKm entre une mème clé aléatoire diversifiée Kai,m et la mème clé diversifiée Kdlv,m.Dif Km between mth diversified random key K I, m and m th diversified key K dlv, 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é.In this case, 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. In one variant, 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.
Les moyens de chiffrement des données S peuvent comporter :The data encryption means S may comprise:
- 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 ;means for adding the random key K a i, o and diversified random keys K ai , i to K ai , N to data matrices;
- des moyens de substitution de chaque mot d'une matrice de données par un autre mot de taille similaire ;means for substituting each word of a data matrix with another word of similar size;
- des moyens de transposition cyclique des mots d'une matrice de données ;means for cyclically transposing the words of a data matrix;
- des moyens de multiplication matricielle entre une matrice de données et une matrice constante.- Matrix multiplication means between a data matrix and a constant matrix.
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.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.
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.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 peut être le nombre de rondes du procédé de décryptage.N can be the number of rounds of the decryption process.
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.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.
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.The information produced from a random number Nb ai and / or the secret key K seC ret may furthermore comprise the number m.
Le calcul de la Nème clé aléatoire diversifiée Kai,N peut être obtenu au moins par les étapes suivantes :The calculation of the N th diversified random key K ai , N can be obtained at least by the following steps:
- calcul d' au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;calculating at least a first diversified key K dlv , i from the secret key K seC ret;
- 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 ;calculation of m-1 diversified keys K dlv , 2 to K dlv , m , each of the diversified m-1 keys K d1 V,!, with i natural number such that 2 ≤ i ≤ m, being calculated from a previous diversified key K dlVil- 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 ;- addition of the m-th diversified key K dlv, m previously calculated and difference Dif between the m-th Km diverse random key K i, m and m th diversified key K dlv, 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.calculation of (N-m + 1) diversified random keys K a i, m + 1 to K ai , N , each of these diversified random keys K ai , D , with j natural integer such that m + 1 ≤ j ≤ N , being calculated from a previous diversified random key K a i, 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.In one variant, 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.
Le déchiffrement des données cryptées Z peut être réalisé au moins par les étapes suivantes :The decryption of encrypted data Z can be achieved at least by the following steps:
- 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 ;calculation of decoded data S deC od, o from the N th diversified random key K ai , N and encrypted data 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.calculating 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.
Le déchiffrement de données peut être réalisé par : a) les étapes suivantes :The decryption of data can be achieved by: a) the following steps:
- 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 ;adding the N th diversified random key K ai , N to a matrix formed by the encrypted data Z, thereby forming decoded data S deC od, o; cyclic transposition of the words of a matrix formed by the data obtained after the preceding step of 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 :replacing each word of a matrix formed by the data obtained after the preceding cyclic transposition step with another word of similar size, thus forming first decoded data S deC od, i; then b) NI executions of the following steps:
- 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 ;- addition between a matrix formed by the (il) th decoded data S deC od, ii and i th diverse random key K alιl _, with i such that 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 ;matrix multiplication between a matrix formed by the data obtained after the preceding step of addition and a constant matrix; cyclic transposition of the words of a matrix formed by the data obtained after the preceding multiplication step;
- 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.- substitution of each word in a matrix formed by the data obtained after the previous step of cyclic transposition, the data obtained being the i th decoded data SCD S, i; then c) a step of adding between a matrix formed by the N th decoded data S deC od, N and the random key K a i, 0 , the data obtained being decrypted data 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.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.
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 :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. When 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:
- 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 ;means for calculating at least a first diversified key K dlv , i from the secret key K seC ret; means for calculating diversified key m-1 K dlv , 2 to K dlv , m , each of the diversified key m-1 K dlVιl , with i natural number such that 2 ≤ i ≤ m, being calculated from a previous diversified key K ^ v ^ -i; - means for adding the m-th diversified key K dlv, m previously calculated and difference Dif between the m-th Km diverse random key K i, m and m th diversified key K dlv, 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.means for calculating (N-m + 1) diversified random keys K a i, m + i at K ai , N , each of these diversified random keys K ai , D , with j integer natural as m + 1 ≤ j ≤ N, being calculated from a previous diversified random key K a i, 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.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.
Les moyens de déchiffrement des données peuvent comporter au moins :The means for decrypting the data may comprise at least:
- 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 ;- data calculating means decod decoded S o from the Nth diverse random key K I, N and Z encrypted data;
- des moyens de calcul de N données décodées SdeCod,i à SdeCod,N, chacune des N données décodéesmeans for calculating N decoded data S deC od, i to S deC od, N, each of the N decoded data
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.Sdecod, i / with i such that 1 ≤ i ≤ N, being calculated from previous decoded data S of cod, ii and the (N-i + l) th diversified random key K a i, N _ 1 + 1 ; N th decoded data S cod, N that can be decrypted data S.
Les moyens de déchiffrement de données peuvent comporter :The data decryption means may comprise:
- 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 ;means for adding the random key K a i, o and diversified random keys K ai , i to K ai , N to data matrices;
- des moyens de transposition cyclique des mots d'une matrice de données ;means for cyclically transposing the words of a data matrix;
- 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.means for substituting each word of a data matrix with another word of similar size; - Matrix multiplication means between a data matrix and a constant matrix.
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.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.
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 .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.
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.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.
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.Finally, 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.
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 DESSINSThe invention applies in particular for an AES type algorithm. However, 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. BRIEF DESCRIPTION OF THE DRAWINGS
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 :The present invention will be better understood on reading the description of exemplary embodiments given purely by way of indication and in no way limiting, with reference to the appended drawings in which:
- 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,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,
- 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,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,
- 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,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,
- 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,FIG. 5 represents the steps performed during the implementation of an exemplary embodiment of a method for decrypting encrypted data according to the 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,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,
- 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,FIG. 8 represents an example of a circuit intended to implement a data encryption method according to the 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.FIG. 9 represents an example of a circuit intended to implement a data decryption method according to the 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.Identical, similar or equivalent parts of the different figures described below bear the same numerical references so as to facilitate the passage from one figure to another.
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.The different possibilities (variants and embodiments) must be understood as not being exclusive of each other and can be combined with one another.
EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERSDETAILED PRESENTATION OF PARTICULAR EMBODIMENTS
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éReferring to Figure 2 which shows the steps performed during the implementation of an exemplary embodiment of a random secret key data encryption method. The data message to encrypt, referenced
« 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."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.
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 matriceIn the exemplary embodiment of the method described, all the arithmetic operations are performed on 8-bit words arranged in a matrix.
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.4 x 4. We can thus place ourselves, for the calculations, in a finite field called extended Galois field denoted GF ( 28 ), having as primitive polynomial: P (x) = x 8 + x 4 + x 3 + 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 .A first set of functions, called the initial round, 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.
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éesThe 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
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éatoire5 to encrypt. In the example of FIG. 2, 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
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) .K to l, 0 • During the initial round, the random key K a i, o is used. In the next round, the calculation is made of a first diversified random key K al, 1 , or first random round key, obtained from the random key K a i, 0 by a diversification operation 103, called "KeySchedule From this random key K a i, o. So we have K al, 1 = KeySchedule (K a i, 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.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 value of N is a function of the size of the secret key K seC ret used: for a secret key K S 128 bit write, we have N = 10; N = 12 for a 192-bit key; and N = 14 for a 256-bit key. The "KeySchedule" function will be detailed later in the 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.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. In this embodiment, the keys K a i, o to K ai , N are computed parallel to the execution of the cipher 105. In a variant, it is possible for the diversified random keys K al, 1 to K ai , N and the random key K a i , o be calculated before executing the encryption 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 :First, 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 :
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.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 .
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.The initial round being completed, we execute N rounds. Each j_ th round, with natural number i such that 1 ≤ i ≤ NI, has four functions which are detailed below.
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) ) = -1During each of these rounds, 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. For this, an elementary transformation called "sub" is applied to each word S CO d (c, d) of the coded data S CO d such that: 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), etSUb (Sc S C od (c, cd) b if Scod (c, cd) is non-zero, or sub (S C od (c, d)) = b if S C od (c, d) is zero, with c and d natural integers, b = {63} (hexadecimal notation), and
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 :
Figure imgf000028_0001
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. For example, if the word S C odi (i, i) has the value {04}, then we have:
SubBytes (Scodid, D) = { F2 } .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 :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. For example, if we have in input of the function "ShiftRows" a matrix M such that:
Figure imgf000030_0001
on obtient alors en sortie la matrice
Figure imgf000030_0001
we then obtain at the output the matrix
Figure imgf000030_0002
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 :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:
Figure imgf000030_0003
Figure imgf000030_0003
Ce calcul s'effectue par colonne, c'est-à- dire que chaque colonne dépend de toute la colonne d' entrée .This calculation is done by column, that is, each column depends on the entire input column.
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 formeNext, 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. By writing the: (i-1) th diversified random key K al, i-1 in the form
Figure imgf000031_0002
la clé aléatoire diversifiée Kal,i obtenue est alors de la forme
Figure imgf000031_0002
the diversified random key K al, i obtained is then of the form
Figure imgf000031_0001
Figure imgf000031_0001
Avec : With:
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 imgf000032_0001
"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:
Figure imgf000033_0001
Figure imgf000033_0001
On a donc Kai,! = KeySchedule (Rai^-i) .So we have K a i ,! = KeySchedule (R a i ^ -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 .Finally, the i th round, with i such that 1 <i <NI, 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.
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.The Nth round is then executed. Compared to i round th, with i such that 1 <i <NI, this last round N contains only three functions 114, 116, 118 respectively similar to functions 106 "SubBytes" 108 "ShiftRows" and 112 "AddRoundKey". At the end of this last round, the Z encrypted data is output.
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.These steps are repeated for each of the data blocks. Thus, the encryption performed makes it possible to encrypt each block of information by a different key. Moreover, since 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. For this, in parallel with the steps described above, 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. By calculating the difference between an m-th diversified random key K i, m and m th diversified key K dlv, m (operation 109 in Figure 2), where m is natural number such that 1 ≤ m ≤ N, there is obtained a Dif Km information usable to perform the decryption of the data. It is then possible to perform the decryption from this information Dif Km and the secret key K seC ret • It is preferable to perform the calculation of this difference Dif Km during a round located substantially in the middle of the set of rounds. In the example described above, the encryption being performed on 10 rounds, so we choose to achieve this difference during the fifth round (m = 5), that is to say, to calculate the difference Dif K s = K a i , 5 - K dlv , 5 . However, it is possible to choose another value of 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é.In general, 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 . When the random number Nb ai is obtained from a pseudo-random generator, this information transmitted may be the seed or the initial number from which the pseudo-random number is generated.
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.A method of decrypting the previously encrypted data will now be described with reference to FIG.
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.Firstly, 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.
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éeWhen the function "KeySchedule" calculates the m th diversified key K dlv , m , the information Dif Km = K a i, m - K dlv , m is added to the m th diversified key
Kdiv,m- On obtient alors la mème clé aléatoire diversifiéeKdiv, m- We obtain then the m th diverse random key
Kal, m •K a l, 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.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.
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 »A reverse key diversification function 204, called "InvKeySchedule", then makes it possible to output the N diversified random keys K al, 1 to K a i, N used during the encryption of the data. This "InvKeySchedule" function performs the inverse matrix operation of the "KeySchedule" function
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 : The (il) th diversified random key K i - i obtained by the "InvKeySchedule" Then K form a i, ii = InvKeySchedule (K i, i), that is to say, if :
Figure imgf000036_0001
alors la (i-1)ème clé aléatoire K -al, î-l s'écrit sous la forme :
Figure imgf000036_0001
then the (i-1) th random key K -al, l-1 is written in the form:
Figure imgf000036_0002
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.From the N diversified random keys obtained, 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.
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.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.
Par exemple, si on a en entrée de la fonction « InvShiftRows » une matrice M telle que :For example, if we have at the input of the function "InvShiftRows" a matrix M such that:
Figure imgf000037_0002
Figure imgf000037_0002
on obtient alors en sortie la matricewe then obtain at the output the matrix
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 :
Figure imgf000037_0001
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. For this, an elementary transformation called "invsub" is applied to each word to transform. For that, 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:
SubBytes ({04}) = {30}.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 .These functions performed above correspond to the inverse functions of those performed during the last round of the encryption process.
Les quatre fonctions inverses de celles correspondant aux rondes 1 à N-I du procédé de cryptage sont ensuite réalisées.The four inverse functions of those corresponding to the rounds 1 to N-I of the encryption method are then performed.
On exécute tout d' abord une fonctionWe first perform a function
« 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."AddRoundKey" 214, for example similar to the function "AddRoundKey" 208, using the h th diverse random key K a i, h corresponding to the number h round.
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
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 :
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 fonctionThis calculation is done by column, that is, each column depends on the entire input column. We then execute a function
« InvShiftRows » 218, par exemple similaire à la fonction « InvShiftRows » 210, sur les données obtenues en sortie de « InvMixColumns » 216."InvShiftRows" 218, for example similar to the function "InvShiftRows" 210, on the data obtained at the output of "InvMixColumns" 216.
La ronde est terminée par un fonction « InvSubBytes » 220, par exemple similaire à la fonction « InvSubBytes » 212.The round is terminated by a function "InvSubBytes" 220, for example similar to the function "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 .The decryption of the data Z is then completed by performing the last round, corresponding to the inverse of the first round, or initial round, of the encryption. This last round consists of an "AddRoundKey" function 222 similar to the other "AddRoundKey" functions performed. The output of this "AddRoundKey" function 222 is the decrypted data S. FIG. 8 represents an example of an implementation of a circuit 300 implementing the random secret key encryption method described above.
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.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. Likewise, converting means 310 converts the secret key into a single 128-bit, 192-bit or 256-bit K seC ret data. At the output of the circuit 300, 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". The diversification of the secret key (function 107 of FIG. 2) can be achieved by the diversification means 316 if they are fast enough to carry out two distinct diversifications during a round, as is the case in FIG. 8, or by other means of diversification. In both cases, the output value of the circuit 300 will also be delivered with the value of the difference Dif Km = K ai , m -K dlv , m making it possible to perform a subsequent decryption of the data.
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.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.
A la fin des N rondes, le contrôleur d'état 314 autorise l'envoi du texte crypté aux moyens de conversion 312.At the end of the N rounds, the state controller 314 authorizes the sending of the encrypted text to the conversion means 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 .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. One can also choose randomly between these different possibilities for each block of data to be encrypted. FIG. 9 represents an exemplary implementation of a circuit 400 implementing the random secret key decryption method described above.
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.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. Likewise, converting means 410 converts the secret key and the difference Dif Km into 128-bit, 192-bit or 256-bit data. At the output of circuit 400, converting means 412 converts the 128-bit decrypted data into 32-bit words on the output bus 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 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.
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. At the end of the N rounds, 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 (for example to the fifth or sixth round if the encryption is done in 10 rounds) 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.

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 •A method of encrypting a data message S comprising at least one calculation step (102) of at least one random key K a i, 0 from at least one random number Nb ai and at least one a secret key K S ecret / an encryption (105) 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 the key random K a i, 0 delivering encrypted data Z, and a transmission of the encrypted data Z and information produced from the random number Nb ai and / or the secret key K seC ret •
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.2. Encryption method according to claim 1, wherein the calculation of each of the diversified random keys K ai , i to K ai , N comprises at least one non-linear operation.
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.3. Encryption method according to one of claims 1 or 2, calculating 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 process.
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_-ι.4. Encryption method according to claim 3, wherein the N diversified random keys K ai , i to K ai , N are obtained at least by the following steps: - calculation of a first diversified random key K ai , i from the random key K a i, 0 ; calculating each of the NI diversified random keys K alιl _, with i natural number such that 2 ≤ i ≤ N, from a previous diversified random key K alι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 ;5. Encryption method according to claim 4, wherein the encryption (105) of the data S is performed at least by the following steps: - calculation (104) coded data S CO d, o from the random key K ai , o and S data to be encrypted;
- 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.calculation of 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 alι ± ; the N th coded data S CO d, N being the encrypted data Z.
6. Procédé de cryptage selon l'une des revendications 4 ou 5, comportant en outre les étapes suivantes :6. Encryption method according to one of claims 4 or 5, further comprising the following steps:
- calcul (107) d'au moins une première clé diversifiée Kdlv, i à partir de la clé secrète KseCret ;calculating (107) at least a first diversified key K dlv , i from the secret key K seC ret;
- 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 ;- calculating (107) an m-th diversified key K d iv, m from a (ml) -th diversified key K SLD (m -i), where m is natural number such that 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.calculating (109) a difference Dif Km between a diversified random multi- key K a i, m and the m th key diversified K dlv , m , with m natural integer such that 1 ≤ m ≤ N; said information produced from the random number Nb ai and / or the secret key K seC ret including the difference Dif Km .
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.7. An encryption method according to claim 6, wherein said information produced from the random number Nb ai and / or the secret key K seC ret further comprises the number m which is randomly selected.
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é.8. Encryption method according to one of claims 4 or 5, wherein the random number Nb a i is of the pseudo-random type and said information produced from the random number Nb ai and / or the secret key K seC ret comprises an initial value from which the random number Nb ai is generated.
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 :9. Encryption method according to one of claims 5 to 8, wherein the encryption (105) of data S is achieved by: a) a step of adding (104) the random key K a i, 0 to a matrix formed by the data S to be encrypted, forming coded data S CO d, o; then b) NI executions of the following steps:
- substitution (106) de chaque mot d'une matrice formée par des (i-l)èmes données codéessubstituting (106) each word of a matrix formed by (il) th coded data
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) ;S C od, ii / with i such that 1 ≤ i ≤ NI by another word of similar size; cyclic transposition (108) of the words of a matrix formed by the data obtained after the preceding substitution step (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) ;matrix multiplication (110) between a constant matrix and a matrix formed by the data obtained after the preceding transposition step (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 ;- adding (112) between a matrix formed by the data obtained after the previous step of multiplying (110) and an i-th diverse random key K alιlr with i such that 1 ≤ i ≤ NI, the resulting data being the i th data coded S COd , i; then c) the steps of: - replacing (114) of each word in a matrix formed by the (NI) th encoded data SCOD (N- D by another similarly sized word;
- 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.cyclic transposition (116) of the words of a matrix formed by the data obtained after the preceding substitution step (114); addition (118) between a matrix formed by the data obtained after the previous transposition step (116) and the N th diversified random key K ai , N , the data obtained being the encrypted data 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 •10. Device for encrypting (300) a data message S comprising at least calculation means (316) of 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, encryption means (318) 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 the random key K a i, 0 , 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 •
11. Dispositif de cryptage (300) selon la revendication 10, comportant en outre :The encryption device (300) of claim 10, further comprising:
- 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 descalculating means (316) of at least a first diversified random key K ai , i from the random key K a i, 0 ; calculation means (316) for each of the
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_-ι.NI diversified random keys K al / 1 , with i natural integer such that 2 ≤ i ≤ N, from a previous diversified random key K alι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.12. An encryption device (300) according to claim 11, wherein the calculation means (316) of each of the diversified random keys K ai , i to K a i, N perform at least one non-linear operation.
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 :13. An encryption device (300) according to one of claims 11 or 12, wherein the encryption means (318) of the data S comprise at least:
- 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.means for calculating coded data S CO d, o from the random key K a i, 0 and data S to be encrypted; means for calculating N coded data S C od, 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, i; the N th coded data S CO d, N being the encrypted data Z.
14. Dispositif de cryptage (300) selon l'une des revendications 11 à 13, comportant en outre :14. Encrypting device (300) according to one of claims 11 to 13, further comprising:
- des moyens de calcul (316) d'au moins une première clé diversifiée Kdlv,i à partir de la clé secrète KseCret ;calculating means (316) of at least one first diversified key K dlv , i from the secret key K seC ret;
- des moyens de calcul (316) d'une mème clé diversifiée Kdlv,m à partir d'une (m-l)ème clé diversifiée- means for calculating (316) an m-th diversified key K dlv, m from a (ml) -th diversified key
Kdiv, (m-i) t avec m nombre entier naturel tel que 2 ≤ m ≤ N ;Kdiv, (m-i) t with m natural integer such that 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.- means for calculating (318) a difference between a Dif Km mth diverse random key K i, m and m th diversified key K dlv, m; said information produced from the random number Nb ai and / or the secret key K seC ret including the difference Dif Km .
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. 15. An encryption device (300) according to claim 14, wherein said information produced from the random number Nb ai and / or the secret key K seC ret further comprises the number m which is randomly selected.
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é.16. Encrypting device (300) according to one of claims 11 to 13, wherein the random number Nb ai is of the pseudo-random type and said information produced from the random number Nb ai and / or the secret key K seC ret has an initial value from which the random number Nb ai is generated.
17. Dispositif de cryptage (300) selon l'une des revendications 13 à 16, dans lequel les moyens de chiffrement (318) des données S comportent :An encryption device (300) according to one of claims 13 to 16, wherein the encrypting means (318) of the data S comprises:
- 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 ;means for adding the random key K a i, o and diversified random keys K ai , i to K ai , N to data matrices; means for substituting each word of a data matrix with another word of similar size;
- 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.means for cyclically transposing the words of a data matrix; - Matrix multiplication means between a data matrix and a constant matrix.
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 inverse18. A method of decrypting an encrypted Z data message comprising at least a step of calculating (202) a random Nth diversified key K ai, N from a secret key K seC ret and information produced from a random number Nb ai and / or the secret key K seC ret, a reverse diversification step
(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.(204) constructed from the Nth 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 decrypting (206) the Z data from the N random diversified keys K ai , i to K ai , N and the random key K a i, 0 , with N natural integer strictly greater than 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.The decryption method of claim 18, wherein N is the number of rounds of the decryption method.
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.20. decryption method according to one of claims 18 or 19, wherein the reverse diversification step (204) calculating the NI diversified random keys K a i, N _i to K ai , i and the random key K a i , o comprises at least one non-linear operation.
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.21. A decryption method according to one of claims 18 to 20, wherein the information produced from a random number Nb ai and / or the secret key K seC ret comprises a difference Dif Km between a m th key K have diversified random, m and m th diversified key K dlv, m, where m is natural number such that 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. 22. The decryption method of claim 21, wherein the information produced from a random number Nb ai and / or the secret key K seC ret further comprises the number 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 ;23. decryption method according to one of claims 21 or 22, wherein the calculation (202) of the N th diversified random key K ai , N is obtained at least by the following steps: - calculation of at least a first diversified key K dlv , i from the secret key K seC ret;
- 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 ;calculation of m-1 diversified keys K dlv , 2 to Kdiv, m, each of the diversified m-1 keys Kd 1 V 11 , with i natural number such that 2 ≤ i ≤ m, being calculated from a previous diversified key K dlv , ii;
- 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.- addition of the m-th diversified key K v dl, m previously calculated and difference Dif between the m-th Km diverse random key K i, m and m th diversified key K dlv, m; calculation of (N-m + 1) diversified random keys K a i, m + 1 to K ai , N , each of these diversified random keys K ai , D , with j natural integer such that m + 1 ≤ j ≤ N , being calculated from a previous diversified random key K a i, 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é.24. decryption method according to one of claims 18 to 20, wherein the random number Nb ai is of the pseudo-random type and the information produced from a random number Nb ai and / or the secret key K seC ret comprises an initial value from which the random number Nb ai is generated.
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.25. A decryption method according to one of claims 18 to 24, wherein the inverse diversification (204) performs the calculation of NI diversified random keys K a i, N _i to K ai , i and the random key K ai , o 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.
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 :26. decryption method according to one of claims 18 to 25, wherein the decryption (206) encrypted data Z is performed at least by the following steps:
- 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 ;calculation of decoded data S deC od, o from the N th diversified random key K ai , N and encrypted data 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.calculating 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 being decrypted data 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 :27. decryption method according to one of claims 18 to 26, the decryption (206) of data being achieved by: a) the following steps:
- 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 ;- adding (208) the N th diversified random key K ai , N to a matrix formed by the encrypted data Z, thus forming decoded data S deC od, 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 :cyclic transposition (210) of the words of a matrix formed by the data obtained after the preceding step of adding (208); substituting (212) each word of a matrix formed by the data obtained after the preceding cyclic transposition step (210) by another word of similar size, thereby forming first decoded data S deC od, i; then b) NI executions of the following steps:
- 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 ;- adding (214) between a matrix formed by the (il) th decoded data S deC od, ii and i th diverse random key K ± alι, with i such that 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) ;matrix multiplication (216) between a matrix formed by the data obtained after the preceding addition step (214) and a constant matrix; cyclic transposition (218) of the words of a matrix formed by the data obtained after the preceding multiplication step (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- replacing (220) of each word in a matrix formed by the data obtained after the previous step of cyclic transposition (218), the data obtained being the i th decoded data
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.Sdecod, i; And c) a step of adding (222) between a matrix formed by the N th decoded data od deC S, N and the random key K i, 0, the data obtained being decrypted data 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.28. decryption device (400) of an encrypted data message Z comprising at least computing means (416) to a Nth diverse random key K ai, N from a secret key K and seC ret of information produced from a random number Nb ai and / or the secret key K seC ret, means (416) of inverse diversification from the N th diversified random key K ai , N calculating NI random keys diversified K i, N _i K have, i and the random key K i, 0, and decrypting means (418) data Z from diversified random keys N K I i K I, N and of the random key K a i, 0 , with N natural integer strictly greater than 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 .29. decryption device (400) according to claim 28, wherein the means (416) of inverse diversification calculating the NI diversified random keys K a i, N _i K al, 1 and the random key K ai , 0 realize at less a non-linear operation.
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 :30. Decryption device (400) according to one of claims 28 or 29, wherein, when the information produced from a random number Nb ai and / or the secret key K seC ret comprises a difference Dif Km between a m th diversified random key K al, m and a diversified m th key K dlv , m , with m natural integer such that 1 ≤ m ≤ N, the calculation means (416) of the N th diversified random key K ai , N comprise at least:
- 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 quemeans for calculating at least a first diversified key K dlv , i from the secret key K seC ret; means for calculating m-1 diversified keys K dlv , 2 to K dlv , m , each of the m-1 keys diversified K d1 V 11 , with i natural number such that
2 ≤ i ≤ m, étant calculée à partir d'une précédente clé diversifiée KdiV,i-i !2 ≤ i ≤ m, being calculated from a previous diversified key Kdi V , ii!
- 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 ;- means for adding the m-th diversified key K dlv, m previously calculated and difference Dif between the m-th Km diverse random key K i, m and m th diversified key K dlv, 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.means for calculating (N-m + 1) diversified random keys K a i, m + i at K ai , N , each of these diversified random keys K ai , D , with j natural integer such that m + 1 ≤ j ≤ N, being calculated from a previous diversified random key K a i, 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.31. decryption device (400) according to one of claims 28 to 30, the means (416) of inverse diversification calculating 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ιl _, with i natural number such that 0 ≤ i ≤ NI, being calculated from a previous diversified random key K a i, 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ées32. decryption device (400) according to one of claims 28 to 31, the decryption means (418) data comprising at least: - decoded data calculation means
Sdecod,o à partir de la Nème clé aléatoire diversifiée Kai,N et des données cryptées Z ;S decod , o from the N th diversified random key K ai , N and encrypted data 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.means for calculating N decoded data S deC od, i to S deC od, N, each of the N decoded data S deC od, i / with i such that 1 ≤ i ≤ N, being calculated at from previous decoded data S deC od, ii and the (N-i + 1) th diversified random key K a i, N _ 1 + 1 ; the N th decoded data S deC od, N being decrypted data S.
33. Dispositif de décryptage (400) selon l'une des revendications 28 à 32, les moyens de déchiffrement (418) de données comportant :33. decryption device (400) according to one of claims 28 to 32, the decryption means (418) of data comprising:
- 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 ;means for adding the random key K a i, o and diversified random keys K ai , i to K ai , N to data matrices;
- des moyens de transposition cyclique des mots d'une matrice de données ;means for cyclically transposing the words of a data matrix;
- des moyens de substitution de chaque mot d'une matrice de données par un autre mot de taille similaire ;means for substituting each word of a data matrix with another word of similar size;
- des moyens de multiplication matricielle entre une matrice de données et une matrice constante.- Matrix multiplication means between a data matrix and a constant matrix.
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.34. A signal processing device for implementing a method for encrypting a data message according to one of claims 1 to 9 and / or a method for decrypting an encrypted data message according to one of the Claims 18 to 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. 35. Smart card comprising at least one device (300) for encrypting a data message according to one of claims 10 to 17 and / or a device (400) for decrypting an encrypted data message according to the one of claims 28 to 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.36. Data carrier, readable by a computer system, comprising data in coded form, for implementing a method of encrypting a data message according to one of claims 1 to 9 and / or a method of decryption of an encrypted data message according to one of claims 18 to 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. 37. Software product comprising a data medium that can be read by a computer system, enabling the implementation of a method for encrypting a data message according to one of claims 1 to 9 and / or a method decryption of an encrypted data message according to one of claims 18 to 27.
PCT/EP2008/066454 2007-11-30 2008-11-28 Methods and devices for encrypting and decrypting a data message with random secret key WO2009068658A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0759464 2007-11-30
FR0759464A FR2924550A1 (en) 2007-11-30 2007-11-30 METHODS AND DEVICES FOR ENCRYPTING AND DECRYPTING A DATA MESSAGE WITH A RANDOM SECRET KEY.

Publications (1)

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

Family

ID=39712236

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2008/066454 WO2009068658A1 (en) 2007-11-30 2008-11-28 Methods and devices for encrypting and decrypting a data message with random secret key

Country Status (2)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002277A (en) * 2018-11-05 2018-12-14 湖南继善高科技有限公司 A kind of pseudo-random signal dynamic configuration system and method
CN115801274A (en) * 2022-11-17 2023-03-14 广州芯德通信科技股份有限公司 Firmware protection method
CN116346311A (en) * 2023-03-08 2023-06-27 天津理工大学 Data encryption method suitable for resource-constrained medical equipment and computer equipment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000031917A1 (en) * 1998-11-23 2000-06-02 Daniel Tiong Hok Tan Data encrypting and decrypting apparatus and methods
WO2000041356A1 (en) * 1998-12-30 2000-07-13 Koninklijke Kpn N.V. Method and device for cryptographically processing data
WO2002063822A1 (en) * 2001-02-08 2002-08-15 Stmicroelectronics S.A. Secure method for secret key cryptographic calculation and component using said method
EP1722502A1 (en) * 2005-05-10 2006-11-15 Research In Motion Limited Key masking for cryptographic processes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000031917A1 (en) * 1998-11-23 2000-06-02 Daniel Tiong Hok Tan Data encrypting and decrypting apparatus and methods
WO2000041356A1 (en) * 1998-12-30 2000-07-13 Koninklijke Kpn N.V. Method and device for cryptographically processing data
WO2002063822A1 (en) * 2001-02-08 2002-08-15 Stmicroelectronics S.A. Secure method for secret key cryptographic calculation and component using said method
EP1722502A1 (en) * 2005-05-10 2006-11-15 Research In Motion Limited Key masking for cryptographic processes

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002277A (en) * 2018-11-05 2018-12-14 湖南继善高科技有限公司 A kind of pseudo-random signal dynamic configuration system and method
CN115801274A (en) * 2022-11-17 2023-03-14 广州芯德通信科技股份有限公司 Firmware protection method
CN115801274B (en) * 2022-11-17 2023-07-11 广州芯德通信科技股份有限公司 Firmware protection method
CN116346311A (en) * 2023-03-08 2023-06-27 天津理工大学 Data encryption method suitable for resource-constrained medical equipment and computer equipment

Also Published As

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

Similar Documents

Publication Publication Date Title
EP1379023B1 (en) En- and Decryption Method executed by an integrated Circuit masking a nonlinear transformation as the SUBBYTE operation
EP2893431B1 (en) Protection against side channel attacks
EP2291735A1 (en) Cryptographic system including a random number generator using finite field arithmetics
EP3139365B1 (en) Verification of the resistance of an electronic circuit to covert channel attacks
WO2016087520A1 (en) Method of encryption with dynamic diffusion and confusion layers
WO2002063821A1 (en) Secure encryption method and component using same
EP2499773A1 (en) Low-complexity electronic circuit protected by customized masking
CA2712178A1 (en) Countermeasure method and devices for asymmetric cryptography
EP1757009A1 (en) Method and device for carrying out a cryptographic calculation
EP3300293B1 (en) Method for symmetric encryption or decryption by blocks
EP1638245B2 (en) Protection of a DES algorithm
EP4242884A1 (en) Method for protection against side-channel attacks
EP2159952B1 (en) Protection of an encryption algorithm
FR2949886A1 (en) METHOD FOR CRYPTOGRAPHIC DATA PROCESSING
US6961427B1 (en) Methods and apparatus for keystream generation
WO2009068658A1 (en) Methods and devices for encrypting and decrypting a data message with random secret key
FR3056322A1 (en) METHOD OF ENCRYPTION OR DE-RECTIFICATION PROTECTED AGAINST HALF-CHANNEL ATTACKS
EP2940922B1 (en) Symmetric cryptosystems with public key based on the symmetric group
EP1721246B1 (en) Method and device for performing a cryptographic operation
EP1232603B1 (en) Methods and apparatus for keystream generation
CA2288767A1 (en) Pseudo-random generator based on a hash coding function for cryptographic systems requiring random drawing
WO2010070230A1 (en) Method of implementing a block encryption algorithm
FR2867636A1 (en) Bit stream producing device for data stream encrypting and/or decrypting device, has decimation units that permit bits produced by linear feedback shift registers, to pass through combiner which combines bits to produce bit stream
EP1615369A1 (en) Block encryption of the content of a memory external to a processor
FR2949887A1 (en) METHOD FOR CRYPTOGRAPHIC DATA PROCESSING

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