EP2165456A2 - Method and device for encryption/decryption of an input data sequence - Google Patents

Method and device for encryption/decryption of an input data sequence

Info

Publication number
EP2165456A2
EP2165456A2 EP08760471A EP08760471A EP2165456A2 EP 2165456 A2 EP2165456 A2 EP 2165456A2 EP 08760471 A EP08760471 A EP 08760471A EP 08760471 A EP08760471 A EP 08760471A EP 2165456 A2 EP2165456 A2 EP 2165456A2
Authority
EP
European Patent Office
Prior art keywords
vector
value
state vector
pseudo
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP08760471A
Other languages
German (de)
French (fr)
Inventor
Nicolas Reffe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ORIDAO
Original Assignee
ORIDAO
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 ORIDAO filed Critical ORIDAO
Priority to EP08760471A priority Critical patent/EP2165456A2/en
Publication of EP2165456A2 publication Critical patent/EP2165456A2/en
Withdrawn legal-status Critical Current

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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Definitions

  • the invention relates to the general field of digital security and more particularly to cryptography.
  • the invention proposes in particular a device and a method for symmetric encryption of a data sequence.
  • the invention also relates to a cryptographic device and method for generating a pseudo-random data sequence and to their privileged use in the field of digital security, namely in particular for the encryption and decryption of data and for the cryptographic hash of messages.
  • the effectiveness of a symmetric encryption algorithm is evaluated according to its resistance to cryptanalysis, which depends on the complexity of the processing applied to the information to be encrypted and the absence of faults, as well as its resistance to attack by brute force, which depends on the size of the encryption key.
  • the efficiency of symmetric encryption is also evaluated according to its speed of execution. Indeed, the operating rate of the encryption algorithm must be greater than the maximum information rate to be encrypted / decrypted by the application concerned.
  • the stream ciphering mechanisms are generally in the form of a pseudo-random bit generator G (for example based on shift registers), parameterized by a key K and a vector of FIG.
  • the pseudo-random generators used by these stream ciphering methods are generally based on the use of linear or nonlinear shift registers. These shift registers used as such have significant cryptographic deficiencies.
  • To make the pseudo-random behavior of the cryptographically acceptable generator it is known to combine the shift registers with each other by means of combination functions.
  • the multiplication of the registers necessary to feed these combination functions, as well as the own complexity of the combination functions significantly impart the number of components required in hardware implementation and limit the execution speed of the pseudo-random generation algorithm as well as that the encryption method.
  • these pseudo-random generators generate only a very limited number of bits output at a time (typically 1, possibly 8 or 16 bits).
  • stream ciphering mechanisms using pseudo-random generation of block cipher algorithms can be used.
  • An example of a stream cipher mechanism using a CFB (Cipher FeedBack Mode) block cipher is shown in Fig. 15B and described in the B. Scheier document entitled "Applied Cryptography protocols, algorithms source code in C ", second edition, 1996.
  • the use of block cipher algorithms for pseudo-random generation in stream ciphering methods has at least two major drawbacks: on the one hand, their large size in hardware implementation, and secondly, their slowness of execution.
  • the invention responds to this need by proposing a cryptographic method for generating a pseudo-random data sequence formed by a succession of values of a state vector of size k generated iteratively from an initial value of this state vector.
  • a cryptographic method for generating a pseudo-random data sequence formed by a succession of values of a state vector of size k generated iteratively from an initial value of this state vector.
  • the invention during each iteration of the cryptographic method, to generate a current value of the state vector for this iteration, one applies successively, on a provisional vector of size k1 greater than or equal to k comprising at least a first intermediate vector of size k formed from at least one section of a previous value of the state vector generated at a previous iteration, a predetermined number d of permutations of size k1.
  • Each permutation is respectively associated with a bit distinct from a permutation key of size d and chosen as a function of at least the value of this bit, said permutation key being derived from a selection of d distinct bits from among the k bits of the first intermediate vector.
  • the current value of the state vector is then obtained from at least one section of the vector resulting from this application step.
  • vector V 3 comprising a vector V b
  • V a (0, l, Vb)
  • V a (0, l, Vb)
  • section of a vector of size t is understood to mean a set consisting of j bits of this vector occupying particular positions in this vector, j being between 1 and t (l ⁇ j ⁇ t).
  • a section of size t of a vector of size t will designate the vector itself.
  • the particular positions occupied by the bits of the section will be predetermined in advance and fixed (for example, a section consisting of the first bits of a vector or a section consisting of the last bits of a vector). .
  • they could also be determined, for example, as a function of the value of a section of the vector whose bits would occupy predetermined and fixed positions, and thus not necessarily be fixed in time.
  • the invention makes it possible to obtain at each iteration, from the current value of the generated state vector, any number of pseudo-random bits less than or equal to the size k (parameterizable) of the state vector, k can be any (no theoretical limitation as to the values of k that can be considered).
  • the invention can thus easily be used in various applications requiring pseudo-random vectors of variable size (not necessarily limited to a single bit), adapting to the needs of the intended application.
  • the invention proposes to iteratively generate a pseudo-random data sequence by using a permutation function composed of d permutations and parameterized by a permutation key itself pseudo-random because extracted from a pseudo-random vector.
  • Each of the permutations is chosen from a predefined pair of permutations (this torque may vary from one permutation stage to another or be the same for all the stages), depending on at least the value of the bit of the permutation key with which it is associated.
  • the size d of the permutation key (d k k) can be parameterized and can in particular be taken relatively large so as to ensure better mixing of the permuted data.
  • the permutation function thus implemented in the invention is advantageously a one-way function.
  • a one-way function can be easily calculated in one direction, but is difficult or even impossible to reverse in a reasonable time (Le, with a reasonable complexity).
  • the permutation function implemented in the invention is such that the calculation of an output data vector as a function of an input data vector requires the evaluation of kl equalities to an explicit term each .
  • the resolution of a multi-variate system i.e., for which each term is a combination of several unknowns
  • kl equations each 2 d to d unknown terms is necessary. It is thus easily understood that such a system of equations can not be solved simply because the number of terms in each equation is very much greater than the number of equations, and extremely large especially for high values of d.
  • the one-way function implemented in the invention is therefore particularly difficult to reverse and robust to brute force attacks or cryptanalysis (it has a very significant mathematical complexity), while offering a less complex implementation, particularly in terms of wiring because of the use of permutations. It can thus be implemented using a low-level architecture, compact because requiring few components, and thus having a speed of execution in hardware or software implementation.
  • the size permutations k1 considered can be advantageously chosen from among pairs (PO, P1) of predefined permutations (PO denoting a permutation associated with a bit when this bit is equal to 0 and P1 a permutation associated with a bit when this bit is equal to 1) satisfying at least one of the following conditions;
  • the permutation obtained by composition of PO and PI, respectively, and the permutation obtained by the composition of P1 and PO, respectively, are in every way different; each of the d stages of the one-way function (a stage corresponding to the application of a permutation) is used, an identical pair of permutations PO and P1 at all different points;
  • each permutation key bit affects all the bits of the input data to be swapped.
  • the temporary vector further comprises the vector obtained by complementing each bit with 1 of the first intermediate vector.
  • V prov designates the provisional vector and V, nt i the first intermediate vector
  • V 1n denotes the vector obtained by complementing each bit with 1 of the first vector intermediate V, n ti.
  • the provisional vector thus obtained has a constant Hamming weight equal to k, regardless of the value of the first intermediate vector.
  • the execution of the one-way function whatever the values of d and V, nt i, will have an absolutely constant power consumption. Indeed, on the one hand, each permutation stage of the one-way function is treated with a number of bits at constant 1, and on the other hand the activation of each stage of the one-way function activates an identical number of logic gate that the bit of the key considered is 0 or 1.
  • the one-way function performed by the invention is also insensitive to hardware attacks based on the analysis of the power consumption.
  • the current value of the state vector is the result of an exclusive-or-operation between said section of the vector resulting from the application step and the previous value of the vector of the vector. state.
  • This embodiment makes it possible to increase the mathematical complexity of the generation of successive pseudo-random values of the state vector. Thanks to the operation or-exclusive indeed, one loses any information concerning the weight of the initial value of the state vector, the Hamming weight of the state vector thus being modified over the iterations.
  • the provisional vector and the permutation key are of the same size equal to the size of the first intermediate vector.
  • the cryptographic method for generating a previously mentioned pseudo-random data sequence is such that each iteration further comprises, before the application step, a step of obtaining 'a value current intermediate calculated from the previous value of the state vector and an input data block, the first intermediate vector being formed by the previous value of the state vector in which a section has been replaced by the value current intermediary.
  • the pseudo-random data sequence generated by means of the invention does not have a particular period and does not follow a pre-established cycle as a function solely of the initial value of the state vector. Indeed, the current value of the state vector depends on the initial value of the state vector and the entirety of the input data sequence applied. This ensures a dynamic evolution of the pseudo-random data sequence.
  • the method of generating a pseudo-random data sequence when in accordance with this embodiment has very advantageous properties that make it a potential candidate for many cryptographic security applications.
  • the invention also aims to use such a cryptographic method for generating a pseudo-random data sequence in a cryptographic hashing method of a message to generate a digest of this message, which comprises a predetermined number M of data blocks used, in turn, as input data blocks for calculating the current intermediate value during successive iterations of the cryptographic method for generating a pseudo-random data sequence in order to generate M values of the state vector.
  • the digest of the message is then obtained from the last value thus generated of the state vector.
  • the hashing method thus implemented benefits from all the advantages of the pseudo-random generation method according to the invention, particularly in terms of robustness and simplicity of implementation.
  • the invention also aims at the use of such a cryptographic method for generating a pseudo-random data sequence in a method of encrypting an input data sequence, as will be specified in more detail. later.
  • the invention relates to a method of symmetric encryption of an input data sequence, in which from an initial value of a state vector and a succession of input words. forming said input sequence, one generates iterative a succession of values of said state vector and a succession of output words, each iteration comprising the following steps;
  • a pseudo-random generation step in which a current value of the state vector for said iteration is calculated according to a non-invertible application dependent on at least said previous value of the state vector; said method being characterized in that:
  • said reversible application comprises at least a first and a second secret key function, said secret keys being generated from at least one section of the previous value of the state vector;
  • said non-invertible application also depends on a current intermediate value depending on the previous value of the state vector and on the current input word, and being isolated from the input words, respectively the output words, by the intermediate of said first secret key function, respectively of said second secret key function.
  • isolated vector means input and output words, a non-accessible vector from the input and output words, that is to say non-controllable and unobservable words. since these words.
  • a system characterized by an input, a state vector and an output is said to be non-controllable if the state vector can not be brought to a preset value by applying a finite input sequence;
  • a system characterized by an input, a state vector and an output is said to be unobservable if it is not possible to deduce the value of the state vector at a given instant from a finite number of observations of the sequence Release.
  • the initial value of the state vector in a symmetric encryption method is secret.
  • the current intermediate value used for calculating the current value of the state vector in the encryption method according to the invention is itself non-controllable and unobservable. Therefore, the current state vector obtained is also non-controllable and unobservable, i.e. isolated from the input and output words. This avoids any direct observation of the value of the state vector or any reconstruction or control of the succession of values of the state vector.
  • it is not necessary to modify the initial value of the state vector to avoid information leakage (such as, for example, a first encrypted message ⁇ a second encrypted message a first clear message ⁇ a second message clear).
  • the encryption method according to the invention can be used indifferently to encrypt a message in clear or to decrypt an encrypted message, the input data sequence being taken sometimes equal to the message in clear, sometimes to the encrypted message.
  • the decryption is performed according to the reverse operations of those of the encryption, which is of great interest for hardware implementation. Also in the following description, will be understood by encryption method according to the invention a method adapted to encrypt and / or decrypt an input data sequence.
  • At least one function among the first and the second secret key function comprises at least one exclusive-or-operation parameterized by at least one section of the secret key of this function, that is, that is, at least one section of the previous value of the state vector
  • each state vector is of size k and during the pseudo-generation step random, to calculate the current value of the state vector, is applied successively, on a provisional vector of size kl greater than or equal to k comprising at least a first intermediate vector of size k formed from a section of the previous value of the state vector and the current intermediate value, a predetermined number d of permutations of size k1, each permutation being respectively associated with a bit distinct from a permutation key of size d and chosen as a function of at least the value of this bit, said permutation die being derived from a selection of d distinct bits from among the k bits of the first intermediate vector, and the current value of the state vector being obtained from at least one section of
  • the encryption method according to the invention thus enjoys the same advantages as the pseudo-random generation method according to the invention described above. It may also include in different embodiments the different variants proposed above for the pseudo-random generation method according to the invention.
  • the input and / or output words comprise a variable number of bits as a function of the iterations.
  • the state vector may then comprise a section indicating this variable bit number at each iteration.
  • the encryption process processes input words to be encrypted of variable size at each iteration, this size also varies in a pseudo-random manner according to the data sequence. input and the initial value of the state vector. Since the state vector is isolated from the input and output words of the encryption method, it is impossible to determine which splitting (in terms of size) was performed at the level of the input words during the encryption process. This provides even greater protection against cryptanalysis.
  • the pseudo-random generation step of each iteration may further comprise, when it is determined that said variable bit number is zero from the current value of the vector of state, the calculation according to a non-invertible application dependent on the current value of the state vector of a new current value of the state vector replacing this current value of the state vector.
  • the succession of values of the state vector is generated "empty" as long as the size of the input or output words remains zero without interaction with the encryption step.
  • the operations performed during the pseudo-random generation step are out of sync with those performed during the encryption step providing even more protection.
  • the pseudo-random generation step is a first pseudo-random generation step forming a current value of a first state vector
  • this first pseudo-random generation step is combined in parallel with at least a second pseudo-random generation step forming a current value of a second state vector;
  • the current value of the state vector is the result of an exclusive-or operation between the current value of the first state vector and at least the current value of the second state vector.
  • the encryption step is a first encryption step in which:
  • the method further comprises at least a second encryption step in which: a second current output word according to a second reversible application dependent on a second current input word and at least one second section of the previous value of the state vector; and
  • the current intermediate value used during the pseudo-random generation step including the first current intermediate value and at least the second current intermediate value.
  • the encryption method further comprises a cryptographic multiplexing step of at least two blocks of plaintext messages to form at least two blocks of encrypted messages, each corresponding plaintext block a succession of input words, and in that said at least two encrypted message blocks are scheduled at each iteration according to a section of the previous value of the state vector.
  • the scheduling or the mixing at each iteration of the M encrypted blocks, combined or not, in transmission channels is pseudo-random depending on the initial value of the state vector and all the input sequences. Therefore, any modification in the input sequences changes the mix, thus ensuring optimal protection.
  • the invention proposes a pseudo-random generation method based on a one-way function that is robust to cryptanalysis and to brute-force attacks, which are fast and of little complexity in hardware implementation.
  • the invention also relates to a cryptographic module adapted to generate an output bit vector from an input bit vector of size k1, comprising:
  • the cryptographic module according to the invention makes it possible advantageously to implement the aforementioned one-way function.
  • the invention also relates to a cryptographic generator of a pseudo-random data sequence formed of a succession of values of a state vector of size k generated iteratively from an initial value of the vector of state, this generator comprising means for implementing, at each iteration, to generate a current value of the state vector for this iteration: a cryptographic module as previously described and adapted to generate a result vector from a provisional vector of size k1 greater than or equal to k comprising at least a first intermediate vector of size k formed from at least one section of a previous value of the state vector generated at a previous iteration, said permutation key being of size d less than or equal to k; and means for obtaining the current value of the state vector from at least one section of the result vector.
  • this generator further comprises means for implementing, at each iteration: means for obtaining an intermediate current value calculated from the previous value of the state vector and a input data block; and
  • the invention also relates to a device for encrypting an input data sequence adapted to generate iteratively, starting from an initial value of a state vector and a succession of input words forming said sequence.
  • input a succession of values of the state vector and a succession of output words
  • said encryption device being able to implement at each iteration: encryption means adapted to calculate a current output word for said iteration according to a reversible application dependent on a current input word and a previous value of the generated state vector at a previous iteration; and a pseudo-random generator adapted to calculate a current value of the state vector for said iteration, according to a non-invertible application dependent on at least the previous value of the state vector.
  • this encryption device is such that: the reversible application comprises at least a first and a second secret key function, these secret keys being generated from at least one section of the previous value of the state vector; and the non-invertible application also depends on a current intermediate value dependent on the previous value of the state vector and the current input word, and being isolated from the input words, respectively the output words, by via said first secret key function, respectively said second secret key function.
  • the pseudo-random generator of the encryption device according to the invention is a cryptographic generator of a pseudo-random data sequence according to the invention as described above.
  • the encryption device is adapted to process input and / or output words comprising a variable number of bits as a function of the iterations and further comprises means for determining the number of bits. bits variable at each iteration from a section of the state vector.
  • the pseudo-random generator of the encryption device may further comprise, when it is determined that said variable number of bits is zero from the current value of the state vector, calculation means. in a non-invertible application dependent on the current value of the state vector of a new current state value replacing the current value of the state vector.
  • the encryption device furthermore comprises a device for cryptographic multiplexing of at least two blocks of messages in the clear to form at least two encrypted message blocks, each plaintext block corresponding to a succession of input words, and in that the at least two encrypted message blocks are scheduled at each iteration according to a section of the value previous state vector.
  • the invention also aims at a cryptographic hashing device adapted to generate a digest from a message comprising a predetermined number Mue blocks of data, this hash device comprising: a cryptographic generator according to the invention as described above, generating a succession of M values of a state vector during successive M iterations; means for, for each of the M iterations:
  • the cryptographic generator and / or the encryption device and / or the cryptographic hashing device of the invention can be implemented by one or more systems.
  • computer system conventionally comprising a central processing unit controlling by signals a memory, an input unit and an output unit connected to each other by data buses.
  • the invention is also directed to a computer program comprising program code instructions for implementing the cryptographic method for generating a pseudo-random data sequence according to any one of the above characteristics, as well as a computer program having program code instructions for implementing the encryption method according to any of the above features, as well as a computer program having code instructions of program for implementing the cryptographic hashing method according to any of the above features, when these programs are loaded and executed in a computer or computer system.
  • These computer programs may be stored on computer readable media and may be executable by a microprocessor.
  • They may use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other form desirable.
  • the invention also relates to a computer-readable information medium, comprising instructions of a computer program as mentioned above.
  • FIG. 2 to 8 schematically illustrate examples of a device for encrypting an input data sequence according to the invention, in particular embodiments;
  • FIGS. 9A to 9E illustrate examples of permutations used in the pseudo-random generator or the encryption device of the preceding figures or in the cryptographic hashing device of FIG. 14;
  • FIGS. 10A and 10B illustrate examples of hardware implementation of the permutations of FIG. 9C;
  • FIGS. 12 and 13 illustrate applications of the encryption device according to the invention to cryptographic multiplexing
  • FIG. 14 diagrammatically illustrates an example of a cryptographic hashing device according to the invention, in a particular embodiment
  • FIGS. 15a and 15B (already described) diagrammatically illustrate two encryption mechanisms of the prior art.
  • the invention proposes a permutation function P, parameterizable, which can be used, as described later, in various cryptographic applications, namely in particular for pseudo-random generation, data encryption / decryption or cryptographic hashing. of a message.
  • This permutation function P is parameterizable according to the size of the data on which it is applied and is parameterized by a so-called permutation key.
  • the permutation function P results from the application of p successive permutations of size e on the data of d.
  • input E each permutation being associated with a bit of the permutation key C and chosen as a function of at least the value of this bit.
  • the same pair of permutations (PO, P1) can be considered at different stages of the permutation function P.
  • these permutations PO and P1 will be defined in every respect different from each other and individually different in every respect from the permutation identity.
  • these hypotheses are in no way limiting, different pairs of permutations can be considered at each stage of the permutation function, or other conditions on the permutations PO and P 1 can be respected, such as, for example, the permutation obtained by The composition of the permutations PO and P1 is different at every point of the permutation obtained by composition of the permutations P1 and PO.
  • the permutation function P has different properties.
  • This property of the permutation function P is considered in particular in certain embodiments relating to an encryption / decryption device and a cryptographic hash device according to the invention.
  • This property of the permutation function P is considered in particular in the invention in a cryptographic module and in a cryptographic generator of a pseudo-random data sequence (pseudo-random generator).
  • surjective permutation means is a one-way function (also called for simplification afterwards “surjective permutation”). Consequently, in the invention, a surjective permutation must be understood as non-invertible (ie non-bijective), because it is used in a context of one-way function that is to say non-invertible, and that in this one-way function context, several different input data E1, E2 ...
  • the term "means for bijective permutation” means the means for implementing the permutation function P when it is a bijective function, in other words a bijective key permutation (also called for simplification by the continuation "bijective permutation").
  • the characteristics and means of implementation of the permutation function P will be explained in more detail later, with reference to FIGS. 9A-9E and 10A, 1OB in particular. These characteristics and means of implementation apply to the various devices and means described hereinafter using the permutation function P (whether it defines a one-way function or a bijective function).
  • FIG. 1A represents a schematic example of a pseudo-random generator 1 of a pseudo-random data sequence 3.
  • a particular embodiment of this pseudo-random generator is given in FIG.
  • FIGS. 1A and 1B are also illustrations of the main steps of the method for generating a pseudo-random data sequence according to the invention.
  • the pseudo-random generator 1 comprises calculation means 5 in which, starting from an initial value Vo of a state vector V, the pseudo-random data sequence 3 is formed by an iterative generation of a succession of values.
  • V n corresponds to the value taken by the state vector V at the nth iteration.
  • the same convention is similarly used for the other variables.
  • the state vector V comprises a determined number k of bits (vector of size k, k integer greater than or equal to 1).
  • the calculation means 5 calculates a current value V n of the V state vector in a non-invertible implementation dependent on a previous value V n - I of the state vector.
  • This non-invertible application is based on a one-way function set by a permutation key of size d less than or equal to k.
  • the state vector is fed to each iteration n by a current intermediate value X "calculated according to another application, for example according to the application AT, which may depend on the previous value V n - I of the state vector and a current input word U n belonging to an input data sequence (input data block within the meaning of the invention).
  • the input words U n comprise a determined number m of bits (words of size m), m integers greater than or equal to 1.
  • the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of a first word. input Ui (through the current intermediate value X ") and the initial value Vo of the state vector.
  • the pseudo-random generator 1 calculates a current value V n of the state vector V as a function of a current input word U n (via the current intermediate value X ") and of the previous value V n _i of the state vector.
  • the pseudo-random generator 1 comprises transmission means 321, reception means 323, and calculation means 325a, 325b, 325c, 326 and 327.
  • the transmission means 321 transmit to the application AT the previous value V n - I of the state vector.
  • the reception means 323 receive from the application AT the current intermediate value X ".
  • a first calculation means 325a replaces a section X n - I of size m of the preceding value V n - I of the state vector by the current intermediate value X 'to form a current value of a first intermediate state vector V, n ti.
  • a second calculation means 325b forms a current value of a provisional vector V pr ov of size k1 greater than or equal to k, from the current value of the first intermediate state vector V, nt i and the current value of the complementary vector, denoted V intl , of the first intermediate state vector V ) nt i (ie within the meaning of the invention, the provisional vector V pr ov comprises the vectors Vm t i and v intl ) .
  • the vector complementary to a vector is obtained by complementing each bit of this vector.
  • the current value of the provisional vector thus obtained is here:
  • this provisional vector may be equal to V, ⁇ t i (ie, the second calculation means 325b can be freed from the framing device) and is in this case of size k.
  • An exemplary embodiment corresponding to such an option is shown in particular in Figure 3A and will be described in more detail later.
  • the current value of the temporary vector is then supplied to a third calculation means 326 comprising surjective permutation means 326a adapted to apply a one-way function on the current value of the temporary vector to form the current value of a result vector V res .
  • d k.
  • the current value of the permutation key C of the one-way function is formed by a training means 326b from the current value of the first intermediate state vector.
  • the size of the key d may be strictly less than k.
  • the permutation key C will then be formed by the means 326b by selecting distinct bits, consecutive or not, from among the k bits of the first intermediate vector V int i, the positions of the selected bits being preferentially predetermined and fixed.
  • the size d of the permutation key greater than the size of the current intermediate value X will be chosen and the selected bits will comprise the current intermediate value X".
  • the computing means 326 is therefore a cryptographic module within the meaning of the invention.
  • the calculation means 5 of the pseudo-random generator 1 further comprises a fourth calculation means 325c, which selects a section of k bits from among the kl bits of the current value of the result vector V res for form the current value of a second intermediate vector V, nt2 -
  • the second intermediate vector Vme is formed by the first k bits of the result vector
  • the calculation means 5 of the pseudo-random generator 1 furthermore comprise a fifth calculation means 327 comprising an exclusive-or-exclusive gate 327a combining the previous value V n-1 of the state vector and the current value of the second one.
  • a fifth calculation means 327 comprising an exclusive-or-exclusive gate 327a combining the previous value V n-1 of the state vector and the current value of the second one.
  • intermediate state vector V, nt2- This or-exclusive operation in addition to its non-reversible appearance, confers a higher degree of dispersion to pseudo-random generator 1.
  • the exclusive-or gate 327a of the fourth calculation means 327 combines the current value of the second intermediate state vector Vi nt 2 with the current value of the first intermediate state vector Vm t i-
  • the current value V n of the state vector V corresponds to the current value of the second intermediate state vector V tnt2 -
  • the current intermediate value X "replaces a section X n - I consists of m consecutive bits of the previous value V n - I of the state vector to form a current value of a first intermediate state vector V, n ti.
  • This assumption is however not limitative, it is of course also possible to replace the m bits of a section X n - ⁇ of VM occupying m particular not necessarily consecutive positions in the state vector, by the m components of the current intermediate value X "to form a current value of a first intermediate state vector Vmti- Method and device for encryption
  • FIGS. 2 to 12 show that the pseudo-random generator 1 represented diagrammatically in FIG. 1A (and of which a particular exemplary embodiment is given in FIG. 1B) can be used in combination with an encryption / decryption module for encrypting and / or to decipher a succession of input words.
  • Figures 2 to 12 are also illustrations of the main steps of the method of encrypting an input data sequence.
  • the current intermediate value X ⁇ can be calculated by the encryption / decryption module according to an application independent of that of the pseudo-random generator.
  • FIG. 2 illustrates a device 7 for encrypting (and / or decrypting) an input data sequence 9 (respectively 15) according to the invention in a particular embodiment.
  • This device 7 comprises generation means 11 for iteratively generating a succession of values 13 of a state vector and a succession of output words 15 (respectively 9) from an initial value Vo of the vector of state and a succession of input words U n (respectively Y n ) forming the input sequence.
  • the state vector V comprises a predetermined number k of bits and the initial value V 0 of the state vector corresponds to a parameterizable encryption / decryption key of size k.
  • the size k of the encryption / decryption key corresponds to the number of bits of the key, and therefore to the number of bits of the state vector V.
  • an input or output word U n / Y n is a size m corresponding to the number of bits that are encrypted or decrypted by the encryption / decryption module 17 at each iteration.
  • the generation means 11 comprise a pseudo-random generator 1 according to the invention as represented in FIG. 1A (for example the pseudo-random generator of FIG. 1B) and an encryption module 17. decryption.
  • a pseudo-random generator 1 may be used to implement the device and the encryption method according to the invention such as for example a pseudo-random generator based on the Advanced Encryption Standard (AES) algorithm, a pseudo-random generator based on the Blum Blum Shub (BBS) algorithm, or a pseudo-random generator based on known shift registers of The person skilled in the art.
  • AES Advanced Encryption Standard
  • BBS Blum Blum Shub
  • the pseudo-random generator 1 calculates a current value V n of the state vector according to a non-invertible application dependent on the previous value Wi of the state vector and the intermediate current value X "resulting from a calculation performed by the module 17, encryption / decryption and dependent on the previous value V n - I of the state vector U n and the current input word (respectively Y n), and the module 17, encryption / decryption calculates a current output word Y n (respectively U n ) according to a reversible application dependent on a current input word U n (respectively Y n ) and the previous value V nI of the state vector.
  • the encryption device 7 can be used reversibly for encryption and / or decryption. Indeed, as described above, the encryption method according to the invention can be used both in encryption mode when the sequence of the input words is derived from a plaintext message to be encrypted, or in decryption mode when the sequence of output words is from an encrypted message to decrypt.
  • the pseudo-random generator 1 feeds, at each iteration n, the state vector by the current intermediate value X ⁇ resulting from a calculation carried out by the encryption / decryption module 17 and dependent on the previous value V nI of the state vector and the current input word U n (respectively Y n ).
  • the pseudo-random generator 1 implements a non-invertible application based on a one-way function parameterized by a permutation key and can be used to perform an encryption in the same way as to perform a decryption.
  • the encryption / decryption module 17 is reversible and can then be used by performing the encryption / decryption operations in reverse order.
  • the encryption / decryption module 17 calculates the first output word Yi (corresponding to an encrypted word) as a function of the first input word Ui (corresponding to a word in the clear) and the initial value Vo. state vector. In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of the first input word Ui and the initial value V 0 of the state vector. By extension, at the nth iteration, the encryption / decryption module 17 calculates the current output word Y n as a function of the current input word U n and the previous value V n - I of the state vector. In addition, the pseudo-random generator 1 calculates a current value V n of the state vector V based on the current input word U n and the previous value V n - I of the state vector.
  • the decryption key will naturally be taken equal to the encryption key used for data encryption (symmetric encryption).
  • the encryption / decryption module 17 calculates the first output word U i (corresponding to a decrypted word) as a function of the first input word Y i (corresponding to an encrypted word) and of the initial value V 0 of the state vector.
  • the pseudo-random generator 1 calculates a first value Vi of the state vector V according to the first input word Yi and the initial value V 0 of the state vector.
  • the encryption / decryption module 17 calculates the current output word U n according to the current input word Y n and the previous value V nI of the state vector.
  • the pseudo-random generator 1 calculates a current value V n of the state vector V as a function of the current input word Y n and the previous value V n - I of the state vector.
  • the state vector V comprises a set of sections comprising at least a first state variable X, a second state variable,, a third state variable B, and possibly other state variable (s). These state variables are therefore pseudo-random variables.
  • the current value V n of the state vector V can be structured as follows:
  • the values of the X state variables , A and B will also be considered as sections of the state vector or the value of the state vector in the sense of the invention.
  • the state variables X, A, and B are sections consisting of m consecutive bits each.
  • the current value X n of the first state variable X comprises m bits x n i, - x n m / the current value A n of the second state variable A comprises m bits a n i, ... a n m, and the current value B n of the third state variable B comprises m bits bni, --- bn ⁇ f
  • the value X n of the first state variable X is used during a next iteration by functions (respectively by means) said "isolation" of the module 17 of encryption / decryption before being replaced by the intermediate value X "resulting from the calculation carried out at the next iteration by the module 17 of encryption / decryption.
  • the values A n and B n of the second and third state variables are also used during a subsequent iteration by the isolation functions of the encryption / decryption module 17 (see for example FIGS. 3A and 3B).
  • the locations of the state variables are preferably fixed position, but it is possible to assign them a variable position depending on the value or values taken by one or more sections of the state vector, themselves fixed position. Only the solution of a fixed position of the state variables is described later.
  • FIG. 3 illustrates a first, more detailed example of an encryption / decryption device 7 according to FIG. 2.
  • the pseudo-random generator 1 comprises transmission means 21, reception means 23, and calculation means 25, 26 and possibly 27.
  • transmission means 21 transmit module 17 encryption / decryption the previous value V n - I of the state vector comprising at least the previous value X i of the n first state variable X, the previous value A nI of the second state variable A, and the previous value B n - I of the third state variable B.
  • the reception means 23 receive from the encryption / decryption module 17 the current intermediate value X ⁇ .
  • a first calculation means 25 replaces the previous value X n -I of the first state variable X by the current intermediate value X "to calculate a current value of a first intermediate state vector V, n ti.
  • the second calculation means 26 functions in a similar way (to the size of the vectors) by means of 326 calculation described above and represents a cryptographic module in the sense of the invention.
  • the first intermediate vector respectively the second intermediate vector, therefore represent a temporary vector, respectively a result vector, within the meaning of the invention.
  • the vectors V ⁇ n ti and V, rt 2 are both of size k.
  • the current value V n of the state vector V then corresponds to the current value of the second intermediate state vector V, n t2-
  • the calculation means 5 of the pseudo-random generator 1 further comprises a third calculation means 27 comprising an exclusive-or-exclusive gate 27a combining the current value of the first intermediate state vector.
  • the third calculation means 27 comprises an exclusive-exclusive gate 27a combining the previous value of the state vector V n -I and the current value of the second intermediate state vector V 1n Q-
  • the computing means 5 of the pseudo-random generator 1 perform a one-way function, that is to say non-invertible, on the first intermediate state vector V, nt i whose result is optionally composed with this first intermediate state vector V, n t i or with the state vector at the previous iteration.
  • the encryption / decryption module 17 comprises receiving means 33, isolation means 35a and 35b and in the example described here a connection means 37 between the isolation means 35a and 35b.
  • the receiving means 33 receive from the pseudo-random number generator 1 the preceding value V n - I of the state vector comprising at least the previous value X n -I of the first state variable X, the previous value A n - I of the second state variable A, and the previous value B n -I of the third state variable B.
  • the isolation means comprise at least two isolation means 35a and 35b for isolating the current intermediate value X ".
  • Each isolation means makes it possible to apply a symmetrical function called "secret key", this secret key being obtained from at least one section of the previous value of the state vector.
  • secret key symmetrical function
  • a secret key symmetrical function is a function for which the calculation of the output as a function of the input and of the input as a function of the output is easy when there is the secret key and impossible when we ignore the secret key.
  • each isolation means comprises at least one exclusive-door. They may further comprise at least one means of bijective permutation.
  • each isolation means comprises an exclusive-door and two means of bijective permutation and the connecting means comprises an exclusive-door.
  • the secret key function implemented in each isolation means is thus composed of two bijective permutations within the meaning of the invention and an exclusive-or-operation, each parameterized by a section of size m of the state vector V n-1 .
  • the secret key of this function is composed of the section parameterizing the first bijective permutation, the section parameterizing the exclusive-operation and the section parameterizing the second bijective permutation.
  • the encryption device 7 comprises two interconnected elements, that is to say, a pseudo-random generator 1 parameterized by an encryption / decryption key of any size k used for the initialization of the state vector V, and an encryption / decryption module 17 incorporating secret keying functions.
  • FIG. 3B illustrates a second example of an encryption device 7 according to FIG. 2, using the pseudo-random generator 1 represented in FIG. 1B.
  • the mode of operation of this device 7 and the associated embodiments are similar to those described above with reference to FIG. 3A.
  • FIGS. 5A and 6A illustrate in more detail modes of encryption and decryption of an input data sequence, when the pseudo-random generator 1 of FIG. 3A is considered.
  • FIG. 5 illustrates the encryption device 7 during an encryption mode in which the input data sequence corresponds to a clear message and the succession of words. output is an encrypted message.
  • the connecting means 37 between the first isolation means 35a and the second isolation means 35b comprises a central exclusive-or-door 41b.
  • the first isolation means 35a comprises first and second bijective permutation means 39a, 39b separated by a first or exclusive-door 41a.
  • the second isolation means 35b comprises third and fourth means of bijective permutation
  • the first bijective permutation means 39a implement a first bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the previous value of the second state variable A n -I ,
  • the second means of bijective permutation 39b implement a second bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the preceding value of the first state variable X n -I ,
  • the third bijective permutation means 39c implement a third bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the preceding value of the first state variable X n -I , and
  • the computation of a current output word Y n during an iteration n comprises the following operations.
  • the first permutation means 39a calculates the first intermediate word Gm by applying the permutation function P bijective parameterized by A n- I on the current input word U n .
  • the third permutation means 39c calculates the fourth intermediate word G 4n by applying the bijective permutation function P parameterized by X nI to the current intermediate value X ".
  • the fourth means of permutation 39d calculates the current output word Y n by applying bijective permutation function P set in B n - I on the fifth intermediate word Gs n.
  • FIG. 6A illustrates the encryption device during a decryption mode in which the input data sequence corresponds to an encrypted message and the succession of output words corresponds to a clear message.
  • the computation of a current output word U n during an iteration n comprises the following operations:
  • functions or means 35a and 35b are composed isolation medicalCe) of two functions bijective permutation Cpermutations within the meaning of the invention) set by A n - X n and I - I for the first isolation means 35a, and B nI and X nI for the second isolation means 35b, and one or exclusive with A n - I for the first isolation means 35a and with B n - I for the second isolation means 35b.
  • the current intermediate value X " is therefore isolated from the input words and output Cc'est ie not accessible from the input and output words) in the middle of four permutations functions parameterized by A n -I, X n and B n -I -I, and three exclusive-or with the state variables Ni, X and B nI nI, the V state vector, itself isolated inputs and outputs . This corresponds to a self-isolation of the state vector V.
  • Figs. 5B and 6B similarly illustrate encryption and decryption modes of an input data sequence when the pseudo-random generator 1 of Fig. 3B is used.
  • pseudo-random generator 1 of Fig. 3B is used.
  • other pseudo-random state generators could be used.
  • the complexity of the encryption / decryption operations can be further increased by replacing each of the state variables A n , B n and X n by two sub-variables of identical size (sections in the sense of (Invention), respectively A n 'and A n "for A n , B n ' and B n " for B n and X n 'and X n "for X n
  • the sub-variables A n ', B n 'and X n ' can be used to set the permutations P and P "1 and the sub-variables A n ", B n “and X n " can be used for the calculation of operations or-exclusive.
  • the respective state sub-variables A n 'and A n "for A n , B n ' and B n " for B n and X n 'and X n "for X n may not be contiguous and of size m each, for example we can take:
  • V n ⁇ X ' n A ⁇ B ⁇ X ⁇ A ⁇ B ⁇ ...
  • each state variable may comprise m non-necessarily consecutive bits of the state vector V, and occupying predetermined positions in advance, for example.
  • FIG. 4 illustrates an encryption device 107 (which can be used in a similar way to the encryption device 7 in encryption mode and / or in decryption mode) comprising two pseudo-random generators 101, 102, similar to that described in the first exemplary embodiment with reference to FIG. 3A (alternatively other pseudo-random generators can be considered as for example two pseudorandom generators similar to the generator shown in FIG. 3B), and a module 17 of FIG. encryption / decryption
  • the first pseudo-random generator 101 forms a first current value Vl n of a first state vector Vl and the second pseudo-random generator 102 forms a second current value V2 n of a second state vector V2.
  • the two pseudo-random generators 101, 102 may be combined with one another in parallel by means of, for example, an exclusive-or-gate.
  • the current value V n of the state vector is the result of an exclusive-or-operation between the first current value Vl n of the first state vector and the second current value V2 n of the second state vector.
  • the current value V n of the state vector derived from the two pseudo-random generators 101, 102 may be composed of a first section originating from the first current value Vl n of the first state vector, of a second section from the second current value V2 n of the second state vector, and a third section from any combination between corresponding sections of the first and second current values Vl n , V2 n of the first and second state vectors .
  • the first pseudo-random generator 101 is powered by a first initial value VIo and generates a first current value Vl n of a first state vector Vl n comprising at least a first current value X1 n of the first state variable X1, a first current value A1 n of the second state variable A1, and a first current value B1 n of the third state variable B1.
  • the second generator Pseudo-random is fed by a second initial value V2o and generates a second current value V2 n of a second state vector V2 n comprising at least a second current value X2 n of the first state variable X2, a second current value A2 n of the second state variable A2, and a second current value B2 n of the third state variable B2.
  • the two generators 101, 102 pseudo-random are fed by the same current intermediate value X ⁇ from the module 107 of encryption / decryption.
  • the pseudo generators random are then all fed by the same current intermediate value X "from the encryption / decryption module.
  • the h generators can be of identical or different sizes ki, ..., kh.
  • Their initial values Vlo, ..., Vho can be extracted or calculated from the same common encryption / decryption key whose size is equal to the max of ki, ...., kh.
  • the values of A n and B n can come from the same generator or from different generators.
  • X n can correspond to the result of a combination by or-exclusives of the set of Xi n respectively:
  • X n Xl n ⁇ X2 n ⁇ .... ⁇ Xh n .
  • the different pseudo-random generators in parallel can be used independently of the encryption / decryption module to generate a pseudo-random data sequence of high quality.
  • the state vector comprises a determined number k of bits and each output or input word comprises a determined number m of bits smaller than the determined number k of bits of the state vector.
  • each output or input word may comprise a variable number w of bits that may vary at each iteration while being less than said determined number k of bits of the state vector.
  • FIG. 7 illustrates an encryption device of a variable bit number w according to the invention in such an embodiment.
  • the pseudo-random generator considered in this figure is that represented in FIG. 3A.
  • another pseudo-random generator such as for example that shown in Figure 3B, could be considered alternatively.
  • the state vector V may advantageously comprise a fourth state variable E indicating this variable number w of bits at each iteration to adapt the permutations (in particular the size e of the permutations and the number of stages of permutation p considered) and operators or exclusive-made by means of permutation and gates or exclusive-or of the module 17 of encryption / decryption to this variable number w.
  • the permutation functions P (for encryption), P "1 (for decryption) and the exclusive-operator" ⁇ "used by the encryption / decryption module 17 are adaptable to input and output words.
  • output U n / Y n of any length w (w ⁇ m ⁇ k) subject to pre-establishing permutation tables corresponding to all the values of w that can be envisaged to implement the permutation functions P and P "1 , and to perform the ⁇ u-exclusives with the first w bits of the state variables A n -I, X n -I and B ⁇ -i, it is possible to split the input data into blocks of variable size w and perform the encryption and / or decryption of these blocks by the encryption / decryption module 17.
  • the parameter indicating the number w of input bits to be encrypted and / or decrypted during the iteration n is provided by the previous value E n - I of the fourth state variable E.
  • This fourth state variable E is a size section r of the state vector, isolated from the inputs and outputs and depending on the encryption / decryption key and the entire sequence of input words U n ZY n applied.
  • the size W n-1 of the block to be processed is transmitted to the input word U n Pf n or output word Y n / U n as well as to the permutation means 39a-39d and logic gates 41a-41c for sizing the permutations and or-exclusives.
  • the number of bits encrypted at each iteration is therefore pseudo-random, depending on the encryption / decryption key and the entire sequence of input words U n / Y n applied.
  • the slightest modification of the sequence of the input words U n / Y n therefore systematically involves a modification of the entirety of the data division subsequent to this modification.
  • FIG. 8 illustrates an encryption device (which can be used for encryption and / or decryption as that represented in FIG. 7) comprising a pseudo-random generator 1 as represented in FIG. 3A, which comprises additional means for calculating in a non-invertible application dependent on the current value of the state vector, a new current state value replacing the current value of the state vector.
  • additional means enable the pseudo-random generator 1 to carry out empty iterations on the state vector V as a function of the value w indicated by the fourth state variable E.
  • the pseudo-random generator 1 thus comprises a fourth calculation means 45 comprising additional surjective permutation means.
  • the step of pseudo-random generation of each iteration comprises when the variable number w is equal to zero, the application by the fourth calculation means 45 of a surjective permutation on the current value V n of the state vector (permutation function P parameterized by a permutation key equal to the vector V n ) to form a current value of a second additional intermediate state vector V2, ns .
  • This current value of the second additional intermediate state vector V2, ns then replaces the current value V n of the state vector V.
  • the pseudo-random generator 1 optionally comprises a fifth calculation means 47 comprising a gate or -exclusive additional 47a for calculating a new current value V temp of the state vector by applying an exclusive-or-operation between the current value of the second additional intermediate state vector V2, ns and the current value V n of the vector of state.
  • This new current value V tem p of the state vector then replaces the current value V n of the state vector.
  • the encryption / decryption module 17 takes the first bit of the input word Ui to be encrypted and calculates the value of the first bit of the output word Yi encoded as a function of Ui and the initial value V 0 of the vector
  • the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of U i and V 0 .
  • the encryption / decryption module 17 takes the following w n- i bits of data to be encrypted (block U n ) and calculates the value of the output word Y n as a function of U n and V n -I.
  • the pseudo-random generator 1 calculates a new value V n of the state vector V, as a function of U n and V n - I.
  • the encryption / decryption module 17 takes the first bit of the input word Yi to be decrypted and calculates the value of the first bit of the output word Ui decrypted as a function of Yi and the initial value V 0 of the vector
  • the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of Y 1 and V 0 .
  • the operations of the example of FIG. 8 make the iterations performed on the pseudo-random generator 1 desynchronize the iterations performed by the encryption / decryption module 17, as a function of a non-accessible pseudo-random variable.
  • fourth state variable E the encryption / decryption key and the entire sequence of input words U n / Yn applied. Any modification of the sequence of the input words U n / Y n therefore systematically entails a modification of the entirety of the splitting of the data subsequent to this modification and therefore a modification of the way in which the pseudo-random generator 1 desynchronizes from the module 17 encryption / decryption.
  • the various embodiments of the method and encryption device according to the invention can be used for applications of high speed stream encryption (telecommunications, broadcast of protected multimedia content, on-the-fly encryption of data on servers, personal computer and applications software etc.).
  • high speed stream encryption telecommunications, broadcast of protected multimedia content, on-the-fly encryption of data on servers, personal computer and applications software etc.
  • the very structure of the encryption method allows it applications in the field of cryptographic multiplexing.
  • Figures HA to HC illustrate various examples of cryptographic multiplexing.
  • a cryptographic multiplexing consists of converging M clear messages 71 to be encrypted to the same encryption device 207a which generates M encrypted messages. These M encrypted messages are then combined and transmitted by the same channel 73a ( Figure HA), or transmitted separately by different channels 73b ( Figure HB) to a user or an application for which they are intended.
  • Figure HC shows that mixed solutions can be considered depending on the number of available transmission channels and the respective rates of each of these channels.
  • a first channel 73c transmits a single encrypted message and a second channel 73d transmits M-I combined encrypted messages.
  • An encryption device 207b used in decryption mode (also called decryption device) then reconstructs the M clear messages 75 from the M encrypted messages. It is impossible to reconstruct one or all of the M clear messages if the M encrypted messages are not available.
  • the encryption method according to the invention makes it possible to carry out the cryptographic multiplexing as described above by using a single pseudo-random generator dimensioned accordingly and M modules of encryption / decryption in parallel. This allows an extremely simple hardware or software implementation, benefiting from the performance of speed and cryptanalysis resistance of the encryption method, as well as the variable size block, empty iteration and flow desynchronization functions, applied to M different messages.
  • FIG. 12 illustrates an encryption device (able to operate in encryption and / or decryption mode) making it possible to perform a cryptographic multiplexing and comprising a single 1 pseudo-random generator and two modules 17a, 17b of encryption / decryption in parallel.
  • the pseudo-random generator 1 calculates at each iteration a current value of a state vector comprising a first set of state variable sections and at least a second set of state variable sections.
  • V n (-Xl n , Al n , Bl n , El n , -, X2 n , A2 n , B2 n , E2 n , -XM n , AM n , BM n , EM n , -)
  • the first encryption / decryption module 17a calculates a first current output word Y1 n / U1 n according to a first reversible application dependent on a first current input word U1 n / Y1 n and the first set of sections X1. n -I, Al n - I, Bl n - I, El n - I of the previous value V n -I of the state vector.
  • the intermediate value Xl ⁇ is transmitted to the pseudo-random generator 1.
  • the second encryption / decryption module 17b calculates a second current output word Y2n / U2 n according to a second reversible application dependent on a second current input word U2 n / Y2 n and the second set of sections X2 n -i, A2 n- i, B2 n -i, E2 n -i of the previous value V n - I of the state vector.
  • the intermediate value X2 ⁇ is transmitted to the pseudo-random generator 1.
  • FIG. 13 illustrates a very schematic example of an encryption device (which can be used in encryption mode and / or in decryption mode) comprising means 81 for cryptographic multiplexing.
  • the cryptographic multiplexing means 81 can multiplex at least two plaintext blocks to form at least two encrypted message blocks, each plaintext block corresponding to a succession of input words.
  • the cryptographic multiplexing means 81 correspond to the setting of a pseudo-random generator 1 according to the preceding figures, by a state vector comprising a fifth state variable F.
  • the pseudo-random generator 1 can schedule the different blocks. of encrypted messages at each iteration according to the fifth state variable F included in the state vector. Consequently, the ordering of the M blocks encrypted at each iteration, combined or not, in the transmission channels, may be preset, or may be a function of a non-accessible pseudo-random variable (a section of the state vector). , depending on the encryption key in encryption mode (respectively decryption key decryption mode) and the entire sequence of input words applied. For example, the ordering of the encrypted M blocks, combined or not, can be provided by the permutation function P parameterized by the fifth state variable F included in the state vector.
  • the parameter of the scheduling of the M blocks of the combined encrypted message during the iteration n is provided by the previous value F n - I of the fifth state variable F.
  • F nI being a section of size M of the previous value V n - I of the state vector, isolated from the input words and output words and depending on the encryption key (respectively of the decryption key) and the entire sequence of input words applied .
  • the scheduling of the M blocks of the encrypted message, combined or not, in the transmission channels at each iteration is therefore pseudo-random, depending on the encryption key (respectively of the decryption key) and the entire sequence. input words applied. Any modification of the sequence of the input words therefore systematically entails a modification of the entire scheduling of the blocks of the encrypted message, combined or not, subsequent to this modification, in the transmission channels.
  • FIG. 14 shows that the pseudo-random generator 1 as represented diagrammatically in FIG. 1A can also be used in combination with a pre-conditioning module in a cryptographic hashing device according to (Invention and this in order to generate a condensed message.
  • FIG. 14 is also an illustration of the main steps of the cryptographic hashing method according to the invention.
  • the state vector V comprises a predetermined number k of bits and the initial value Vo of the state vector corresponds to a configurable hash key of size k.
  • FIG. 14 illustrates a device 407 for cryptographic hashing of a message Mess according to the invention in a particular embodiment.
  • This device 407 comprises means for cutting the message Mess into a predetermined number M of blocks Z 1 , Z 2 ,..., ZM of predetermined size (for example M blocks of size m bits). In a manner known per se, if the last cut block is incomplete (ie does not have m bits), it performs a padding (or "padding" in English) by completing the incomplete block by 0.
  • the device 407 furthermore comprises generation means for iteratively generating a succession 13 of M values of a state vector V from an initial value Vo of the state vector, and to obtain a hash digest of the message Mess. from the last value V M generated of the state vector.
  • the message blocks Z 1 , Z 2 ,..., Z M are each used in turn by the generating means during successive iterations to generate the M values of the state vector.
  • these generation means comprise a pseudo-random generator 1 according to the invention (for example the pseudo-random generator represented in FIGS. 1B and 3B) and a pre-conditioning module 417.
  • the pseudo-random generator 1 calculates a current value V n of the state vector in a non-invertible implementation dependent on the previous value V n - I of the state vector and an intermediate current value X ⁇ resulting from a calculation carried out by the pre-conditioning module 417, the pre-conditioning module 417 calculating the intermediate current value X ⁇ according to an invertible application dependent on the previous value V nI of the state vector and a block current message Z n (input block within the meaning of the invention).
  • the pseudo-random generator 1 feeds at each iteration n the state vector V n by the current intermediate value X "from the pre-conditioning module 417,
  • the preconditioning module 417 calculates the current intermediate value X " for the iteration 1 as a function of a first message block Z 1 and the initial value Vo of the state vector. In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of the first message block Zi and the initial value V 0 of the state vector. By extension, at the nth iteration, the preconditioning module 417 calculates the current intermediate value X a for the iteration n as a function of the current message block Z n and the previous value V n - I of the vector of state. In addition, the pseudo-random generator 1 calculates a current value V n of the state vector V as a function of the current message block Z n (via the current intermediate value X ⁇ ) and the previous value V n - I of the state vector.
  • the state vector V comprises a set of sections comprising at least a first state variable X and a second state variable A of size m.
  • the current value V n of the state vector V can be structured as follows:
  • the state variables X and A are sections of the state vector in the sense of the invention.
  • the locations of the state variables are predefined and preferably fixed position, but it is possible to assign them a variable position depending on the value or values taken by one or more sections of the state vector, themselves at position fixed. Only the solution of a fixed position of the state variables is described later.
  • each of the state variables do not overlap.
  • the size k of the state vector is then chosen accordingly, and each state variable corresponds to a limited size section of the state vector (that is to say of size strictly smaller than that of the state vector).
  • the value X n of the first state variable X is used during a subsequent iteration by an isolation function of the pre-conditioning module 417 before being replaced by the intermediate value X "resulting from the calculation carried out at the next iteration by the preconditioning module 417.
  • the value A n of the second state variable is also used during a subsequent iteration by the isolation function of the pre-conditioning module 417.
  • the transmission means 321 of the pseudo-random generator 1 transmitted to the module 417 of preconditioning the previous value V n - I of the state vector comprising at least the value preceding X n -I of the first state variable X and the previous value A n -I of the second state variable A.
  • the receiving means 323 of the pseudo-random generator 1 receive from the pre-conditioning module 417 the current intermediate value X ".
  • the first calculation means 325a replaces the previous value X n -i of the first state variable X with the current intermediate value X "for calculating a current value of a first intermediate state vector V ⁇ n ti-
  • the other steps and the pseudo-random generator means 1 are similar to those described with reference to FIG. 1B (and 3B) and will therefore not be further detailed here.
  • the pre-conditioning module 417 comprises receiving means 433 and isolation means 435 for isolating the current intermediate value X "of the message blocks.
  • the reception means 433 receive from the pseudo-random generator 1 the previous value V nI of the state vector comprising at least the previous value X nI of the first state variable X and the previous value A n -I of the second state variable A.
  • the isolation means 435 is adapted to apply a secret key symmetric function on each message block Z n , the secret key being obtained from at least one section of the previous value of the state vector.
  • the secret key function implemented comprises at least one or exclusive operation, ie the isolation means 435 comprises at least one exclusive-or-gate parameterized by a section of size m of the previous value of the state vector .
  • it may furthermore comprise at least one bijective permutation according to the invention, parameterized by a section of size m of the previous value of the state vector.
  • the secret key function implemented by the isolation means 435 is composed of two bijective permutations in the sense of the invention and two or-exclusive operations, each parameterized by a section of size m. of the state vector V nI .
  • the secret key of this function is composed of the section parameterizing the first bijective permutation, the section parameterizing the first or exclusive operation, the section parameterizing the second bijective permutation and the section parameterizing the second or exclusive operation.
  • the isolation means 435 comprises first and second one-way means 439a and 439b separated by a first or exclusive-door 441a.
  • a second or exclusive-gate 441b is applied at the output of the second means of bijective permutation 439b.
  • the bijective permutation means 439a and 439b considered here each implement the permutation function P described above, parameterized by respective state variables different from the state vector V n -I .
  • a permutation key of size m equal to a state variable of the state vector VVi. So :
  • the first bijective permutation means 439a implement a first bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the previous value of the second state variable A n -I
  • the second means of bijective permutation 439b implement a second bijective permutation corresponding to the function of permutation P parameterized by a permutation key equal to the previous value of the first state variable X nI .
  • the permutation keys used to parameterize the permutation function P in the bijective permutation means 439a and 439b are independent of the data on which the resulting permutation function P is applied, they each implement an invertible function (bijective).
  • This invertible function P results from the application of m successive permutations of size m, selected according to the value of each bit of the permutation key considered.
  • the calculation of the current intermediate value X "during an iteration n comprises the following operations:
  • message blocks Z n of variable size as a function of the iterations (ie division of the message Mess over the iterations into blocks whose size w is variable and specified in a section of the state vector) and / or to desynchronize the operations carried out in the pre-conditioning module and in the pseudo-random generator (in particular by introducing "empty iterations" such as as described for the encryption device).
  • enchain h hashing devices sequentially (a section of a state vector generated by the pseudo-random generator of a hash device feeding the pre-conditioning module of the next hash device) so as to increase the mathematical complexity of the cryptographic hash.
  • the pseudo-random generator (and generation method), the encryption device (and method) and the cryptographic hashing device (and method) rely on the same permutation function P proposed in the invention, parameterized by a so-called permutation key and parameterizable according to the size of the input data and the key considered.
  • the permutation function P responds advantageously to several cases of figures.
  • the size of the permutation key is equal to the size of the input data which is also equal to the size of the output data (for example for encryption or cryptographic hashing, but also for pseudo-random generation in the example shown in Figure 3A).
  • the size of the permutation key is strictly smaller than the size of the input data which is also equal to the size of the output data (for example for pseudo-random generation in the example shown in FIGS. 3B).
  • the size of the permutation key is strictly smaller than the size of the input data which is also equal to the size of the output data (for example for pseudo-random generation in the example shown in FIGS. 3B).
  • FIG. 9A shows a permutation table comprising several boxes 61a-61f and in which each box indicates the original position of the bit that appears at the location in question.
  • v (i) binary value (0 or 1) of the i th bit of the data concerned.
  • the first bit of the input data is moved to the 3rd position (box 61c) outputting data retaining its value v (l).
  • the second bit of the input data is moved to the k th location (box 6If) of the output data retaining its value v (2).
  • the third input data bit is shifted to the 4 th location (box 6Id) outputting data retaining its value v (3).
  • the fourth input data bit is shifted in location 1 of the output data retaining its value v (4).
  • the kth input data bit is shifted to the 2nd position (caseôlb) outputting data retaining its value v (k).
  • this permutation function P is;
  • bijective function (bijective key permutation) and therefore reversible subject to knowing the value of the permutation key, when the permutation key is independent or fixed with respect to the input data.
  • permutation i.e. each permutation is chosen according to the value of a bit distinct from the permutation key.
  • the permutation is chosen from a pair (PO, P1) of distinct permutations of size e predefined for each permutation stage. For example, if the bit of the permutation key considered is equal to 0, one will choose PO, and if the bit of the permutation key considered is equal to 1, PL will be chosen.
  • the permutations of size e considered may be chosen in particular from pairs (PQ, P1) of predefined permutations satisfying at least one of the following conditions:
  • the permutation obtained by composition of PO and PI, respectively, and the permutation obtained by the composition of P1 and PO, respectively, are in every way different;
  • each of the p stages of the permutation function (a stage corresponding to the application of a permutation) is used, an identical pair of permutations PO and P1 in all different points, that is to say, for all t, the position of the output bit t for the first permutation is different from the position of the output bit t for the second permutation;
  • a pair of permutations (PO, P1) is used on each stage, such that the permutations PO and P1 are individually different from the identity permutation in all respects, that is, for a bit in position t before application of the permutation PO, respectively P1, is in a position different from t at the output of the permutation PO, respectively of the permutation P1.
  • a table of dimension (p, 2e) consisting of p lines of two permutations (PO, P1) of size e each, which also serves as a routing matrix in hardware implementation, is calculated beforehand;
  • each line i of this table provides two possible permutations, one or the other of these permutations being chosen as a function of the value vclé (i) of the i th bit of the permutation key used.
  • the permutation function P thus links to the input data p permutations of size e respectively parameterized by the value of each of the p bits of the permutation key.
  • a main advantage of the permutation function P described above lies in a very simple hardware implementation, which can be performed only with logic functions of the type "NO" and "AND".
  • the example of FIG. 10A shows the wiring of the first permutation stage of the permutation function P of the preceding FIG.
  • the logic gate “AND” 65 corresponds in this application to a switch (or transistor in hardware implementation) driven by the value vclé of a bit of the permutation key or its complement. The switch is thus open or closed depending on the value vclé of the bit of the key or its complement (passing or blocked in the case of a transistor).
  • the stages are thus linked one after the other, the output 69 of the stage h-1 supplying the input 67 of the stage h.
  • a logic function is obtained which can be executed in a single operation on all the p stages, corresponding to p permutations of size e performed on input data of size e and parameterized by a key of size p. If an identical pair of two different permutations is used for each of the p stages, p identical modules are used.
  • a recursive function having for parameters; the input data, the permutation key, the permutation table and the permutation stage i considered.
  • Output Data Permutation (i) _Vkey_O (Recursive Function (Input Data, Key, Swap Table, i-1)) Otherwise,
  • Output Data Permutation (i) _Vckey_l (Recursive Function (Input Data, Key, Permutation Table, i-1))
  • the hardware and software implementations described above have the advantage that they can be used irrespective of the nature of the permutation key considered (ie dependent or independent of the input data to be exchanged), that is to say both when the permutation function P is a one-way function only when the permutation function P is a bijective key permutation. This advantageously makes it possible to limit the complexity of implementation of the methods and devices described above.
  • the present invention thus comprises a pseudo-random generator parameterized by an encryption key of any size k (used as an initial value of the state vector), performing iterations on a state vector fed at each iteration with an intermediate result derived from an encryption / decryption module, and therefore depending on the entire sequence of inputs applied.
  • the encryption / decryption module integrates self-isolation functions of the pseudo-random generator and ensures at each iteration the encryption and / or decryption of input data, as a function of the values of several sections of the state vector. pseudo-random generator.
  • the encryption device according to the invention then comprises in particular the following advantages.
  • the encryption / decryption module is reversible in hardware and software implementation. Thus, it is not necessary to have differentiated programs / circuits for encryption and decryption functions.
  • the pseudo-random generator is non-reversible.
  • a permutation function P is performed in a single extremely fast operation in hardware and software implementation, used in a non-invertible form P (data, key (data)) (ie the key depends on the data to be swapped) in the pseudo-generator. random and in an invertible form P (data, fixed_key) (ie the key is fixed relative to the data to be swapped) in the encryption / decryption module.
  • the pseudo-random generator has no particular period and does not follow a pre-established cycle.
  • the value of the state vector depends on the encryption / decryption key and the entire sequence of the applied input words, without a deterministic cycle, since it switches with each iteration of an attractor (cycle specific to a sequence of 'special entries) to another.
  • the pseudo-random state vector generator proposed in the invention is such that the value of the state vector can not be reconstituted from the observation of the sequences of output words, nor voluntarily brought to a predetermined value using an input word sequence (non-observable and non-controllable state vector).
  • the state vector isolates input and output words using isolation functions, set by the values of some of its own (self-isolation) state variables.
  • this property makes it possible to overcome the problems of modifying the initialization vector at each start of the encryption process.
  • the encryption / decryption key that acts as an initialization vector does not have to be modified.
  • the invention presents a possibility of modifying the number of encrypted bits at each iteration according to a non-accessible pseudo-random variable (a section of the state vector), depending on the encryption / decryption key and the entire sequence of applied input words.
  • Another possibility is to perform "empty cycles" by the pseudo-random generator (iterations performed on the non-encrypted state vector performed on the inputs), as a function of a non-accessible pseudo-random variable (a section of the state vector), depending on the encryption / decryption key and the entire sequence of applied input words, resulting in desynchronization of the pseudo-random generator and the data encryption / decryption module.
  • the cryptographic multiplexer encryption device consisting in converging M clear messages to be encrypted to the same encryption module that will generate M encrypted messages. It is impossible to reconstruct one or all of the M clear messages if the M encrypted messages are not available.
  • These encrypted messages can be combined with each other to reduce the number of transmission channels.
  • the scheduling of the encrypted blocks at each iteration, combined or not, in the transmission channels can be preset or according to a non-accessible pseudo-random variable (a section of the state vector), depending on the key encryption and the entire sequence of applied input words.
  • the invention also has a very advantageous application in that it allows simultaneous cryptographic hashing and symmetric encryption / decryption with a high degree of security and ensuring a simple and efficient implementation of hardware and software.
  • cryptographic hashing and symmetric encryption are widely used in all types of communications, such as mobile communications, the Internet, smart cards, and so on.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

The invention relates to the general field of digital security and more particularly cryptography. It proposes in particular a device and a method for encrypting a data sequence. The invention also relates to a cryptographic device (1) and method for generating a pseudo-random data sequence (13) and their favoured use in the field of digital security, namely in particular for data encryption and decryption and for the cryptographic hashing of messages.

Description

Procédés et dispositifs crγptographiques de génération pseudo-aléatoire, de chiffrement de données et de hachage cryptographique d'un message Cryptographic methods and devices for pseudo-random generation, data encryption and cryptographic hashing of a message
Domaine technique de l'invention L'invention se rapporte au domaine général de Ia sécurité numérique et plus particulièrement de la cryptographie.TECHNICAL FIELD OF THE INVENTION The invention relates to the general field of digital security and more particularly to cryptography.
Elle propose notamment un dispositif et un procédé de chiffrement symétrique d'une séquence de données. L'invention concerne également un dispositif et un procédé cryptographiques de génération d'une séquence de données pseudo-aléatoire et ainsi que leur utilisation privilégiée dans le domaine de la sécurité numérique, à savoir notamment pour le chiffrement et le déchiffrement de données et pour le hachage cryptographique de messages.It proposes in particular a device and a method for symmetric encryption of a data sequence. The invention also relates to a cryptographic device and method for generating a pseudo-random data sequence and to their privileged use in the field of digital security, namely in particular for the encryption and decryption of data and for the cryptographic hash of messages.
Arrière-plan de l'inventionBackground of the invention
Les échanges de données chiffrées d'un grand débit se font systématiquement par l'intermédiaire d'algorithmes de chiffrement symétriques.The exchange of encrypted data of a large bit rate is systematically via symmetric encryption algorithms.
L'efficacité d'un algorithme de chiffrement symétrique est évaluée selon sa résistance à la cryptanalyse, qui dépend de la complexité du traitement appliqué à l'information à chiffrer et de l'absence de failles, ainsi que de sa résistance à une attaque par force brute, qui dépend de la taille de la clé de chiffrement.The effectiveness of a symmetric encryption algorithm is evaluated according to its resistance to cryptanalysis, which depends on the complexity of the processing applied to the information to be encrypted and the absence of faults, as well as its resistance to attack by brute force, which depends on the size of the encryption key.
En outre, l'efficacité du chiffrement symétrique est aussi évaluée selon sa rapidité d'exécution. En effet, le débit de fonctionnement de l'algorithme de chiffrement doit être supérieur au débit maximum d'informations à chiffrer/déchiffrer de l'application concernée.In addition, the efficiency of symmetric encryption is also evaluated according to its speed of execution. Indeed, the operating rate of the encryption algorithm must be greater than the maximum information rate to be encrypted / decrypted by the application concerned.
Ainsi, pour une application à haut débit, les intégrateurs de solutions sécurisées doivent faire face à un dilemme lors du choix d'un algorithme de chiffrement car, avec l'augmentation des débits d'information à traiter et à puissance de calcul constante, le temps affecté aux opérations de traitement de l'information décroît, entraînant des compromis en termes de résistance à la cryptanalyse.Thus, for a broadband application, the integrators of secure solutions have to deal with a dilemma when choosing an encryption algorithm because, with the increase of data rates to be processed and with constant computing power, the The time spent on information processing operations is decreasing, leading to compromises in terms of cryptanalysis resistance.
Dans l'état actuel de la technique, il existe des mécanismes de chiffrement par flot qui permettent de réaliser un chiffrement symétrique. Ces mécanismes chiffrent les données en continu, au cours d'itérations successives, et peuvent être avantageusement utilisés lorsque les débits de données sont élevés et/ou lorsqu'il y a une obligation de chiffrer/déchiffrer l'information en temps réel. En référence à Ia figure 15A, les mécanismes de chiffrement par flot se présentent généralement sous la forme d'un générateur de bits pseudo-aléatoires G (par exemple basé sur des registres à décalage), paramétré par une clé K et un vecteur d'initialisation, avec lequel on opère un «ou-exclusif » (noté ® et correspondant à une addition binaire modulo 2) entre un bit à la sortie k, du générateur et un bit p, provenant des données à chiffrer, conduisant ainsi généralement au calcul d'un seul bit c, de sortie à chaque itération i.In the current state of the art, there are stream ciphering mechanisms that make it possible to perform symmetric encryption. These mechanisms continuously encrypt the data during successive iterations, and can be advantageously used when the data rates are high and / or when there is an obligation to encrypt / decrypt the information in real time. With reference to FIG. 15A, the stream ciphering mechanisms are generally in the form of a pseudo-random bit generator G (for example based on shift registers), parameterized by a key K and a vector of FIG. initialization, with which one operates an "or-exclusive" (denoted ® and corresponding to a binary addition modulo 2) between a bit at the output k, of the generator and a bit p, coming from the data to be encrypted, thus generally leading to the calculation a single bit c, output at each iteration i.
Ces procédés de chiffrement par flot, bien qu'extrêmement rapides dans le cadre d'une implémentation matérielle de par la simplicité et le nombre réduit des jeux d'instructions utilisées, présentent plusieurs limitations sévères généralement acceptées, car elles sont le corollaire direct des débits élevés spécifiés.These stream ciphering methods, although extremely fast in the context of a hardware implementation because of the simplicity and the reduced number of instruction sets used, have several severe limitations generally accepted because they are the direct corollary of the flow rates. specified highs.
Tout d'abord, les générateurs pseudo-aléatoires utilisés par ces procédés de chiffrement par flot sont généralement basés sur l'utilisation de registres à décalages, linéaires ou non-linéaires. Ces registres à décalage utilisés tels quels présentent des carences cryptographiques importantes. Pour rendre le comportement pseudo-aléatoire du générateur cryptographiquement acceptable, il est connu de combiner les registres à décalage entre eux à l'aide de fonctions de combinaison. La multiplication des registres nécessaire pour alimenter ces fonctions de combinaison, ainsi que la propre complexité des fonctions de combinaison impartent significativement le nombre de composants requis en implémentation matérielle et limitent la vitesse d'exécution de l'algorithme de génération pseudo-aléatoire ainsi que celle du procédé de chiffrement. De plus, ces générateurs pseudo-aléatoires ne génèrent qu'un nombre très limité de bits en sortie à la fois (typiquement 1, éventuellement 8 ou 16 bits). Par conséquent, le nombre de bits chiffrés à chaque itération du procédé de chiffrement par flot est également très limité et ne permet pas nécessairement de répondre aux besoins réels des applications dont il protège les données. Pour pallier ces inconvénients, des mécanismes de chiffrement par flot utilisant pour la génération pseudo-aléatoire des algorithmes de chiffrement par blocs peuvent être utilisés. Un exemple d'un mécanisme de chiffrement par flot utilisant un algorithme de chiffrement par bloc en mode CFB (« Cipher FeedBack Mode ») est représenté sur la figure 15B et décrit dans Ie document de B. Scheier intitulé « Applied Cryptography protocols, algorithms and source code in C », Second édition, 1996. L'utilisation d'algorithmes de chiffrement par bloc pour la génération pseudo-aléatoire dans les procédés de chiffrement par flot présente toutefois au moins deux inconvénients majeurs : d'une part, leur encombrement important en implémentation matérielle, et d'autre part, leur lenteur d'exécution.First, the pseudo-random generators used by these stream ciphering methods are generally based on the use of linear or nonlinear shift registers. These shift registers used as such have significant cryptographic deficiencies. To make the pseudo-random behavior of the cryptographically acceptable generator, it is known to combine the shift registers with each other by means of combination functions. The multiplication of the registers necessary to feed these combination functions, as well as the own complexity of the combination functions significantly impart the number of components required in hardware implementation and limit the execution speed of the pseudo-random generation algorithm as well as that the encryption method. In addition, these pseudo-random generators generate only a very limited number of bits output at a time (typically 1, possibly 8 or 16 bits). Consequently, the number of bits encrypted at each iteration of the stream encryption method is also very limited and does not necessarily make it possible to meet the real needs of the applications for which it protects the data. To overcome these disadvantages, stream ciphering mechanisms using pseudo-random generation of block cipher algorithms can be used. An example of a stream cipher mechanism using a CFB (Cipher FeedBack Mode) block cipher is shown in Fig. 15B and described in the B. Scheier document entitled "Applied Cryptography protocols, algorithms source code in C ", second edition, 1996. However, the use of block cipher algorithms for pseudo-random generation in stream ciphering methods has at least two major drawbacks: on the one hand, their large size in hardware implementation, and secondly, their slowness of execution.
En outre, la conception même des mécanismes de chiffrement par flot précédemment décrits, à savoir basée sur la mise en œuvre d'un ou-exclusif effectué entre le bit de sortie du générateur pseudo-aléatoire et un bit du message à chiffrer, rend le générateur pseudo-aléatoire directement observable dans le cadre d'une cryptanalyse classique, et commandable en mode CFB tel que décrit sur la figure 15b. Autrement dit, l'état des sorties du générateur pseudo-aléatoire est directement accessible en combinant le texte clair et le texte chiffré par un ou-exclusif et offre en continu une information directement exploitable pour la cryptanalyse de l'algorithme. Ainsi, dans l'exemple de procédé de chiffrement par flot représenté sur la figure 15B, il est possible en observant les sorties et en commandant les entrées du procédé de chiffrement d'amener le registre à décalage du générateur pseudoaléatoire dans un état prédéfini, ce qui constitue une faille cryptographique importante.In addition, the very design of the previously described stream ciphering mechanisms, namely based on the implementation of an exclusive-or-done between the output bit of the pseudo-random generator and a bit of the message to be encrypted, makes the pseudo-random generator directly observable in the context of a conventional cryptanalysis, and controllable in CFB mode as described in Figure 15b. In other words, the state of the outputs of the pseudo-random generator is directly accessible by combining the plaintext and the encrypted text by an exclusive-or-and offers continuous information directly exploitable for the cryptanalysis of the algorithm. Thus, in the exemplary stream ciphering method shown in Fig. 15B, it is possible by observing the outputs and controlling the inputs of the ciphering method to bring the pseudo-random generator shift register into a predefined state. which constitutes an important cryptographic fault.
Il existe par conséquent un besoin d'une solution permettant de générer de façon rapide des séquences pseudo-aléatoires cryptographiquement sures de vecteurs de taille quelconque prédéfinie, ainsi que d'une solution de chiffrement/déchiffrement ne présentant pas de tels inconvénients d'observabilité et de commandabilité du générateur pseudo-aléatoire, et permettant de garantir un grand degré de sécurité numérique tout en assurant une implémentation simple et efficace (notamment en termes de rapidité d'exécution) tant matérielle que logicielle. Objet et résumé de l'inventionThere is therefore a need for a solution making it possible to quickly generate cryptographically secure pseudo-random sequences of vectors of any predefined size, as well as an encryption / decryption solution that does not have such disadvantages of observability and controllability of the pseudo-random generator, and to ensure a high degree of digital security while ensuring a simple and effective implementation (especially in terms of speed of execution) both hardware and software. Object and summary of the invention
Selon un premier aspect, l'invention répond à ce besoin en proposant un procédé cryptographique de génération d'une séquence de données pseudo-aléatoire formée par une succession de valeurs d'un vecteur d'état de taille k générées itérativement à partir d'une valeur initiale de ce vecteur d'état. Conformément à l'invention, au cours de chaque itération du procédé cryptographique, pour générer une valeur courante du vecteur d'état pour cette itération, on applique successivement, sur un vecteur provisoire de taille kl supérieure ou égale à k comprenant au moins un premier vecteur intermédiaire de taille k formé à partir d'au moins une section d'une valeur précédente du vecteur d'état générée à une itération précédente, un nombre prédéterminé d de permutations de taille kl. Chaque permutation est associée respectivement à un bit distinct d'une clé de permutation de taille d et choisie en fonction au moins de la valeur de ce bit, ladite clé de permutation étant issue d'une sélection de d bits distincts parmi les k bits du premier vecteur intermédiaire. La valeur courante du vecteur d'état est alors obtenue à partir d'au moins une section du vecteur résultant de cette étape d'application.According to a first aspect, the invention responds to this need by proposing a cryptographic method for generating a pseudo-random data sequence formed by a succession of values of a state vector of size k generated iteratively from an initial value of this state vector. According to the invention, during each iteration of the cryptographic method, to generate a current value of the state vector for this iteration, one applies successively, on a provisional vector of size k1 greater than or equal to k comprising at least a first intermediate vector of size k formed from at least one section of a previous value of the state vector generated at a previous iteration, a predetermined number d of permutations of size k1. Each permutation is respectively associated with a bit distinct from a permutation key of size d and chosen as a function of at least the value of this bit, said permutation key being derived from a selection of d distinct bits from among the k bits of the first intermediate vector. The current value of the state vector is then obtained from at least one section of the vector resulting from this application step.
Dans la suite de la description, on considérera des données binaires et des vecteurs binaires, c'est-à-dire dont les composantes sont des bits. Un vecteur de taille t désignera ainsi un vecteur composé de t bits. Au sens de l'invention, on entend par « vecteur V3 comprenant un vecteur Vb », un vecteur V3 qui comprend parmi ses composantes toutes les composantes du vecteur Vt, (consécutivement ou non, dans l'ordre ou dans un ordre quelconque). Par exemple, si on considère un vecteur Vb=(l,0,û,l) et un vecteur Va=(0,l,Vb), le vecteur V3 est un vecteur comprenant le vecteur Vb et égal à Va=(0,l,l,0,0,l).In the following description, we will consider binary data and binary vectors, that is to say whose components are bits. A vector of size t will thus denote a vector composed of t bits. For the purposes of the invention, the term "vector V 3 comprising a vector V b " means a vector V 3 which comprises among its components all the components of the vector Vt, (consecutively or otherwise, in the order or in an order any). For example, if we consider a vector V b = (l, 0, û, l) and a vector V a = (0, l, Vb), the vector V 3 is a vector comprising the vector V b and equal to V a = (0.1, 1.1, 0.0, 1).
Par ailleurs, au sens de l'invention, on entend par section d'un vecteur de taille t, un ensemble constitué de j bits de ce vecteur occupant des positions particulières dans ce vecteur, j étant compris entre 1 et t (l≤j≤t). Ainsi, une section de taille t d'un vecteur de taille t désignera le vecteur en lui-même. De préférence, les positions particulières occupées par les j bits de la section seront prédéterminées à l'avance et fixes (par exemple, une section constituée des j premiers bits d'un vecteur ou une section constituée des j derniers bits d'un vecteur). Toutefois, elles pourraient également être déterminées par exemple en fonction de la valeur d'une section du vecteur dont les bits occuperaient des positions prédéterminées à l'avance et fixes, et de ce fait ne pas être nécessairement fixes dans le temps.Moreover, within the meaning of the invention, the term "section of a vector of size t" is understood to mean a set consisting of j bits of this vector occupying particular positions in this vector, j being between 1 and t (l≤j ≤t). Thus, a section of size t of a vector of size t will designate the vector itself. Preferably, the particular positions occupied by the bits of the section will be predetermined in advance and fixed (for example, a section consisting of the first bits of a vector or a section consisting of the last bits of a vector). . However, they could also be determined, for example, as a function of the value of a section of the vector whose bits would occupy predetermined and fixed positions, and thus not necessarily be fixed in time.
Ainsi, l'invention permet d'obtenir à chaque itération, à partir de la valeur courante du vecteur d'état généré, un nombre quelconque de bits pseudo-aléatoires inférieur ou égal à la taille k (paramétrable) du vecteur d'état, k pouvant être quelconque (pas de limitation théorique quant aux valeurs de k pouvant être considérées). L'invention peut ainsi être aisément utilisée dans diverses applications nécessitant des vecteurs pseudo-aléatoires de taille variable (non nécessairement limitée à un seul bit), en s'adaptant aux besoins de l'application visée.Thus, the invention makes it possible to obtain at each iteration, from the current value of the generated state vector, any number of pseudo-random bits less than or equal to the size k (parameterizable) of the state vector, k can be any (no theoretical limitation as to the values of k that can be considered). The invention can thus easily be used in various applications requiring pseudo-random vectors of variable size (not necessarily limited to a single bit), adapting to the needs of the intended application.
En outre, l'invention propose de générer itérativement une séquence de données pseudo-aléatoire en utilisant une fonction de permutation composée de d permutations et paramétrée par une clé de permutation elle-même pseudo-aléatoire car extraite d'un vecteur pseudoaléatoire. Chacune des d permutations est choisie parmi un couple de permutations prédéfini (ce couple pouvant varier d'un étage de permutation à l'autre ou être le même pour l'ensemble des étages), en fonction au moins de la valeur du bit de la clé de permutation auquel elle est associée. La taille d de la clé de permutation (d≤k) est paramétrable et peut être notamment prise relativement grande de sorte à assurer un meilleur brassage des données permutées.In addition, the invention proposes to iteratively generate a pseudo-random data sequence by using a permutation function composed of d permutations and parameterized by a permutation key itself pseudo-random because extracted from a pseudo-random vector. Each of the permutations is chosen from a predefined pair of permutations (this torque may vary from one permutation stage to another or be the same for all the stages), depending on at least the value of the bit of the permutation key with which it is associated. The size d of the permutation key (d k k) can be parameterized and can in particular be taken relatively large so as to ensure better mixing of the permuted data.
La fonction de permutation ainsi mise en œuvre dans l'invention est avantageusement une fonction à sens unique. De façon connue en soi, une fonction à sens unique peut être aisément calculée dans un sens, mais est difficile voire impossible à inverser en un temps raisonnable (Le. avec une complexité raisonnable).The permutation function thus implemented in the invention is advantageously a one-way function. In a manner known per se, a one-way function can be easily calculated in one direction, but is difficult or even impossible to reverse in a reasonable time (Le, with a reasonable complexity).
En effet, la fonction de permutation mise en œuvre dans l'invention est telle que le calcul d'un vecteur de données de sortie en fonction d'un vecteur de données d'entrée nécessite l'évaluation de kl égalités à un terme explicite chacune. En revanche, lors de la tentative de calcul d'un vecteur de données d'entrée en fonction d'un vecteur de données de sortie, la résolution d'un système multi-varié (c'est-à-dire pour lequel chaque terme est une combinaison de plusieurs inconnues) constitué de kl équations comprenant chacune 2d termes à d inconnues est nécessaire. On comprend ainsi aisément qu'un tel système d'équations ne peut être résolu simplement car le nombre de termes dans chaque équation est très largement supérieur au nombre d'équations, et extrêmement grand notamment pour des valeurs de d élevées.Indeed, the permutation function implemented in the invention is such that the calculation of an output data vector as a function of an input data vector requires the evaluation of kl equalities to an explicit term each . On the other hand, when trying to computing an input data vector according to an output data vector, the resolution of a multi-variate system (i.e., for which each term is a combination of several unknowns) constituted kl equations each 2 d to d unknown terms is necessary. It is thus easily understood that such a system of equations can not be solved simply because the number of terms in each equation is very much greater than the number of equations, and extremely large especially for high values of d.
Ce nombre augmente par ailleurs avec les itérations, Le,, le système « s'auto-complexifie ». Matériellement parlant, cela a pour conséquence que l'ensemble des équations à résoudre ne peuvent être physiquement écrites et mémorisées, notamment pour des tailles de clé importantes. Ainsi par exemple, pour une clé de permutation de taille d=k=256, un système multi-varié de 256 inconnues comprenant 256 équations à 2256 termes chacune doit être résolu lors de la première itération.This number increases moreover with the iterations, Le ,, the system "self-complicates". Physically speaking, this has the consequence that all the equations to be solved can not be physically written and stored, especially for important key sizes. For example, for a permutation key of size d = k = 256, a multi-variate system of 256 unknowns comprising 256 equations at 2 256 terms each must be solved during the first iteration.
La fonction à sens unique implémentée dans l'invention est donc particulièrement difficile à inverser et robuste aux attaques par force brute ou à la cryptanalyse (elle présente une complexité mathématique très importante), tout en offrant une implémentation peu complexe, notamment en termes de câblages du fait de l'utilisation de permutations. Elle peut ainsi être mise en œuvre à l'aide d'une architecture de bas niveau, compacte car nécessitant peu de composants, et de ce fait présentant une rapidité d'exécution en implémentation matérielle ou logicielle.The one-way function implemented in the invention is therefore particularly difficult to reverse and robust to brute force attacks or cryptanalysis (it has a very significant mathematical complexity), while offering a less complex implementation, particularly in terms of wiring because of the use of permutations. It can thus be implemented using a low-level architecture, compact because requiring few components, and thus having a speed of execution in hardware or software implementation.
Afin de renforcer la qualité de la séquence pseudo-aléatoire générée et d'obtenir un brassage de qualité, les d permutations de taille kl considérées pourront être avantageusement choisies parmi des couples (PO,P1) de permutations prédéfinis (PO désignant une permutation associée à un bit lorsque ce bit est égal à 0 et Pl une permutation associée à un bit lorsque ce bit est égal à 1) vérifiant au moins l'une des conditions suivantes ;In order to reinforce the quality of the generated pseudo-random sequence and to obtain a quality mixing, the size permutations k1 considered can be advantageously chosen from among pairs (PO, P1) of predefined permutations (PO denoting a permutation associated with a bit when this bit is equal to 0 and P1 a permutation associated with a bit when this bit is equal to 1) satisfying at least one of the following conditions;
- pour chaque bit de la clé, la permutation obtenue par composition respectivement de PO et de Pl et la permutation obtenue par composition respectivement de Pl et de PO sont en tout point différentes ; - on utilise pour chacun des d étages de la fonction à sens unique (un étage correspondant à l'application d'une permutation), un couple identique de permutations PO et Pl en tout point différentes ;for each bit of the key, the permutation obtained by composition of PO and PI, respectively, and the permutation obtained by the composition of P1 and PO, respectively, are in every way different; each of the d stages of the one-way function (a stage corresponding to the application of a permutation) is used, an identical pair of permutations PO and P1 at all different points;
- on utilise pour chacun des d étages de la fonction à sens unique un couple de permutations PO et Pl individuellement différentes en tout point de la permutation identité. De cette sorte, chaque bit de clé de permutation affecte l'intégralité des bits des données d'entrée à permuter.for each of the d stages of the one-way function, a pair of permutations P0 and P1 that are individually different at each point of the identity permutation are used. In this way, each permutation key bit affects all the bits of the input data to be swapped.
L'utilisation de couples de permutations identiques à chaque étage permet avantageusement de réduire la complexité matérielle du procédé de génération pseudo-aléatoire selon l'invention. En effet, seuls deux modules correspondant respectivement aux deux permutations PO etThe use of identical permutation pairs at each stage advantageously makes it possible to reduce the material complexity of the pseudo-random generation method according to the invention. Indeed, only two modules corresponding respectively to the two permutations PO and
Pl nécessitent d'être implémentés matériellement. Ces modules pourront ensuite être utilisés plusieurs fois successivement ou en variante, il sera possible d'utiliser d modules identiques pour chaque permutation (soit 2d modules en tout) pour mettre en œuvre l'invention.Pl need to be implemented physically. These modules can then be used several times successively or alternatively, it will be possible to use identical modules for each permutation (ie 2d modules in all) to implement the invention.
Toutefois ces hypothèses ne sont en aucun cas limitatives, d'autres permutations pouvant être considérées. Notamment, il est possible de considérer aux différents étages de permutation {i.e., pour les différents bits de la clé) des couples de permutations (PO,P1) distincts.However, these hypotheses are in no way limiting, other permutations that can be considered. In particular, it is possible to consider the different permutation stages {i.e., for the different bits of the key) pairs of permutations (PO, P1) distinct.
Dans une variante de réalisation, le vecteur provisoire comprend en outre le vecteur obtenu en complémentant chaque bit à 1 du premier vecteur intermédiaire. Ainsi, par exemple, si Vprov désigne le vecteur provisoire et V,nti le premier vecteur intermédiaire, on pourra prendre : V =(v V ) où V1n,, désigne le vecteur obtenu en complémentant chaque bit à 1 du premier vecteur intermédiaire V,nti.In an alternative embodiment, the temporary vector further comprises the vector obtained by complementing each bit with 1 of the first intermediate vector. Thus, for example, if V prov designates the provisional vector and V, nt i the first intermediate vector, we can take: V = (v V) where V 1n ,, denotes the vector obtained by complementing each bit with 1 of the first vector intermediate V, n ti.
De cette sorte, on obtient un effet d'avalanche strict quelle que soit la valeur de d, Le., la modification d'un seul bit du premier vecteur intermédiaire Vιnti affecte statistiquement la valeur de la moitié des bits du vecteur résultant de l'application de la fonction en sens unique et utilisé dans la construction de la valeur courante du vecteur d'état. Ceci a pour conséquence de limiter l'impact négatif lié à l'utilisation d'un premier vecteur intermédiaire creux (i.e. de poids de Hamming faible) et d'améliorer la résistance aux attaques matérielles du procédé cryptographique de génération pseudo-aléatoire selon l'invention. La diffusion obtenue au sein du procédé est ainsi excellente, ce qui constitue une qualité cryptographique notable.In this way, a strict avalanche effect is obtained irrespective of the value of d, Le., The modification of a single bit of the first intermediate vector V ιn ti statistically affects the value of half of the bits of the vector resulting from the application of the one-way function and used in constructing the current value of the state vector. This has the consequence of limiting the negative impact linked to the use of a first hollow intermediate vector (ie of low Hamming weight) and of improving the resistance to hardware attacks of the pseudo-random generation cryptographic method according to the invention. invention. The diffusion obtained within the process is thus excellent, which constitutes a notable cryptographic quality.
Par ailleurs, Ie vecteur provisoire ainsi obtenu a un poids de Hamming constant égal à k, et ce quelle que soit la valeur du premier vecteur intermédiaire. Aussi, en implémentation matérielle, l'exécution de la fonction à sens unique, quelles que soient les valeurs de d et de V,nti, aura une consommation électrique absolument constante. En effet, d'une part on traite à chaque étage de permutation de la fonction à sens unique un nombre de bits à 1 constant, et d'autre part l'activation de chaque étage de la fonction à sens unique active un nombre identique de portes logiques que le bit de la clé considéré soit à 0 ou à 1. La fonction à sens unique réalisée par l'invention est donc également insensible aux attaques matérielles basées sur l'analyse de la consommation électrique.Moreover, the provisional vector thus obtained has a constant Hamming weight equal to k, regardless of the value of the first intermediate vector. Also, in hardware implementation, the execution of the one-way function, whatever the values of d and V, nt i, will have an absolutely constant power consumption. Indeed, on the one hand, each permutation stage of the one-way function is treated with a number of bits at constant 1, and on the other hand the activation of each stage of the one-way function activates an identical number of logic gate that the bit of the key considered is 0 or 1. The one-way function performed by the invention is also insensitive to hardware attacks based on the analysis of the power consumption.
Dans une autre variante de réalisation de l'invention, le vecteur provisoire peut être pris égal au premier vecteur intermédiaire (kl=k).In another variant embodiment of the invention, the temporary vector can be taken as equal to the first intermediate vector (k1 = k).
Dans un mode de réalisation particulier de l'invention, la valeur courante du vecteur d'état est le résultat d'une opération ou-exclusif entre ladite section du vecteur résultant de l'étape d'application et la valeur précédente du vecteur d'état. Ce mode de réalisation permet d'augmenter la complexité mathématique de la génération de valeurs successives pseudo-aléatoire du vecteur d'état. Grâce à l'opération ou-exclusif en effet, on perd toute information concernant le poids de la valeur initiale du vecteur d'état, le poids de Hamming du vecteur d'état étant ainsi modifié au fil des itérations.In a particular embodiment of the invention, the current value of the state vector is the result of an exclusive-or-operation between said section of the vector resulting from the application step and the previous value of the vector of the vector. state. This embodiment makes it possible to increase the mathematical complexity of the generation of successive pseudo-random values of the state vector. Thanks to the operation or-exclusive indeed, one loses any information concerning the weight of the initial value of the state vector, the Hamming weight of the state vector thus being modified over the iterations.
Dans un mode particulier de réalisation de l'invention, le vecteur provisoire et la clé de permutation sont de même taille égale à la taille du premier vecteur intermédiaire.In a particular embodiment of the invention, the provisional vector and the permutation key are of the same size equal to the size of the first intermediate vector.
On parlera alors, dans la description, de fonction à sens unique carrée, par opposition à une fonction à sens unique rectangulaire lorsque la clé de permutation est de taille (d < k) différente de la taille kl (kl > k) du vecteur provisoire sur laquelle la fonction à sens unique est appliquée.We will then speak in the description of a square one-way function, as opposed to a rectangular one-way function when the permutation key is of size (d <k) different from the size kl (kl> k) of the provisional vector. on which the one-way function is applied.
Dans un autre mode de réalisation de l'invention, Ie procédé cryptographique de génération d'une séquence de données pseudo- aléatoire mentionné précédemment est tel que chaque itération comprend en outre, avant l'étape d'application, une étape d'obtention d'une valeur intermédiaire courante calculée à partir de Ia valeur précédente du vecteur d'état et d'un bloc de données d'entrée, Ie premier vecteur intermédiaire étant formé par la valeur précédente du vecteur d'état dans laquelle une section a été remplacée par la valeur intermédiaire courante. Ainsi, la séquence de données pseudo aléatoire générée à l'aide de l'invention ne présente pas de période particulière et ne suit pas de cycle préétabli en fonction uniquement de la valeur initiale du vecteur d'état. En effet, la valeur courante du vecteur d'état dépend de la valeur initiale du vecteur d'état et de l'intégralité de la séquence de données d'entrée appliquée. Ceci assure une évolution dynamique de la séquence de données pseudo aléatoire.In another embodiment of the invention, the cryptographic method for generating a previously mentioned pseudo-random data sequence is such that each iteration further comprises, before the application step, a step of obtaining 'a value current intermediate calculated from the previous value of the state vector and an input data block, the first intermediate vector being formed by the previous value of the state vector in which a section has been replaced by the value current intermediary. Thus, the pseudo-random data sequence generated by means of the invention does not have a particular period and does not follow a pre-established cycle as a function solely of the initial value of the state vector. Indeed, the current value of the state vector depends on the initial value of the state vector and the entirety of the input data sequence applied. This ensures a dynamic evolution of the pseudo-random data sequence.
Le procédé de génération d'une séquence de données pseudoaléatoire lorsqu'il est conforme à ce mode de réalisation possède des propriétés très avantageuses qui en font un candidat potentiel pour de nombreuses applications de sécurité cryptographique.The method of generating a pseudo-random data sequence when in accordance with this embodiment has very advantageous properties that make it a potential candidate for many cryptographic security applications.
Notamment, l'invention vise également l'utilisation d'un tel procédé cryptographique de génération d'une séquence de données pseudo-aléatoire dans un procédé de hachage cryptographique d'un message pour générer un condensé de ce message, celui-ci comprenant un nombre prédéterminé M de blocs de données utilisés, chacun leur tour, comme blocs de données d'entrée pour le calcul de la valeur intermédiaire courante au cours d'itérations successives du procédé cryptographique de génération d'une séquence de données pseudo-aléatoire afin de générer M valeurs du vecteur d'état. Le condensé du message est alors obtenu à partir de la dernière valeur ainsi générée du vecteur d'état.In particular, the invention also aims to use such a cryptographic method for generating a pseudo-random data sequence in a cryptographic hashing method of a message to generate a digest of this message, which comprises a predetermined number M of data blocks used, in turn, as input data blocks for calculating the current intermediate value during successive iterations of the cryptographic method for generating a pseudo-random data sequence in order to generate M values of the state vector. The digest of the message is then obtained from the last value thus generated of the state vector.
Le procédé de hachage ainsi mis en œuvre bénéficie de tous les avantages du procédé de génération pseudo-aléatoire selon l'invention, notamment en termes de robustesse et de simplicité dimplémentation.The hashing method thus implemented benefits from all the advantages of the pseudo-random generation method according to the invention, particularly in terms of robustness and simplicity of implementation.
Par ailleurs, l'invention vise également l'utilisation d'un tel procédé cryptographique de génération d'une séquence de données pseudo-aléatoire dans un procédé de chiffrement d'une séquence de données d'entrée, comme il sera précisé plus en détails ultérieurement.Furthermore, the invention also aims at the use of such a cryptographic method for generating a pseudo-random data sequence in a method of encrypting an input data sequence, as will be specified in more detail. later.
Selon un deuxième aspect, l'invention concerne un procédé de chiffrement symétrique d'une séquence de données d'entrée, dans lequel à partir d'une valeur initiale d'un vecteur d'état et d'une succession de mots d'entrée formant ladite séquence d'entrée, on génère de manière itérative une succession de valeurs dudit vecteur d'état et une succession de mots de sortie, chaque itération comportant les étapes suivantes ;According to a second aspect, the invention relates to a method of symmetric encryption of an input data sequence, in which from an initial value of a state vector and a succession of input words. forming said input sequence, one generates iterative a succession of values of said state vector and a succession of output words, each iteration comprising the following steps;
- une étape de chiffrement dans laquelle on calcule un mot de sortie courant pour l'itération selon une application réversible dépendante d'un mot d'entrée courant et de ladite valeur précédente du vecteur d'état générée à une itération précédente ; etan encryption step in which a current output word for the iteration is calculated according to a reversible application dependent on a current input word and on said previous value of the generated state vector at a previous iteration; and
- une étape de génération pseudo-aléatoire dans laquelle on calcule une valeur courante du vecteur d'état pour ladite itération selon une application non inversible dépendante d'au moins ladite valeur précédente du vecteur d'état ; ledit procédé étant caractérisé en ce que :a pseudo-random generation step in which a current value of the state vector for said iteration is calculated according to a non-invertible application dependent on at least said previous value of the state vector; said method being characterized in that:
- ladite application réversible comprend au moins une première et une seconde fonctions à clé secrète, lesdites clés secrètes étant générées à partir d'au moins une section de la valeur précédente du vecteur d'état ; etsaid reversible application comprises at least a first and a second secret key function, said secret keys being generated from at least one section of the previous value of the state vector; and
- ladite application non inversible dépend en outre d'une valeur intermédiaire courante dépendant de la valeur précédente du vecteur d'état et du mot d'entrée courant, et étant isolée des mots d'entrée, respectivement des mots de sortie, par l'intermédiaire de ladite première fonction à clé secrète, respectivement de ladite seconde fonction à clé secrète.said non-invertible application also depends on a current intermediate value depending on the previous value of the state vector and on the current input word, and being isolated from the input words, respectively the output words, by the intermediate of said first secret key function, respectively of said second secret key function.
Au sens de l'invention, on entend par vecteur isolé des mots d'entrée et de sortie, un vecteur non-accessible depuis les mots d'entrée et de sortie, c'est-à-dire non-commandable et non-observable depuis ces mots. Par définition :For the purposes of the invention, the term "isolated vector" means input and output words, a non-accessible vector from the input and output words, that is to say non-controllable and unobservable words. since these words. By definition :
- un système caractérisé par une entrée, un vecteur d'état et une sortie est dit non-commandable si on ne peut amener le vecteur d'état à une valeur préétablie en appliquant une séquence finie d'entrée ;a system characterized by an input, a state vector and an output is said to be non-controllable if the state vector can not be brought to a preset value by applying a finite input sequence;
- un système caractérisé par une entrée, un vecteur d'état et une sortie est dit non-observable si on ne peut déduire la valeur du vecteur d'état à un instant donné à partir d'un nombre fini d'observations de la séquence de sortie.a system characterized by an input, a state vector and an output is said to be unobservable if it is not possible to deduce the value of the state vector at a given instant from a finite number of observations of the sequence Release.
De façon connue de l'homme du métier, la valeur initiale du vecteur d'état dans un procédé de chiffrement symétrique est secrète. Par récurrence, si la valeur précédente du vecteur d'état est à la fois non- commandable et non-observable, alors la valeur intermédiaire courante utilisée pour le calcul de la valeur courante du vecteur d'état dans le procédé de chiffrement selon l'invention est elle-même non-commandable et non-observable. Par conséquent, le vecteur d'état courant obtenu est également non-commandable et non-observable, c'est-à-dire isolé des mots d'entrée et de sortie. On évite ainsi toute observation directe de la valeur du vecteur d'état ou toute reconstruction ou pilotage de la succession de valeurs du vecteur d'état. De plus, il n'est pas nécessaire de modifier la valeur initiale du vecteur d'état pour éviter une fuite d'information (telle que par exemple, un premier message chiffré θ un deuxième message chiffré = un premier message clair Φ un deuxième message clair).In a manner known to those skilled in the art, the initial value of the state vector in a symmetric encryption method is secret. By recurrence, if the previous value of the state vector is both non-controllable and unobservable, then the current intermediate value used for calculating the current value of the state vector in the encryption method according to the invention is itself non-controllable and unobservable. Therefore, the current state vector obtained is also non-controllable and unobservable, i.e. isolated from the input and output words. This avoids any direct observation of the value of the state vector or any reconstruction or control of the succession of values of the state vector. In addition, it is not necessary to modify the initial value of the state vector to avoid information leakage (such as, for example, a first encrypted message θ a second encrypted message = a first clear message Φ a second message clear).
De façon particulièrement avantageuse, le procédé de chiffrement selon l'invention peut être utilisé indifféremment pour chiffrer un message en clair ou déchiffrer un message chiffré, la séquence de données d'entrée étant prise tantôt égale au message en clair, tantôt au message chiffré. Le déchiffrement est réalisé selon les opérations inverses de celles du chiffrement, ce qui présente un grand intérêt d'implémentation matérielle. Aussi dans la suite de la description, on entendra par procédé de chiffrement selon l'invention un procédé adapté à chiffrer et/ou à déchiffrer une séquence de données d'entrée.In a particularly advantageous manner, the encryption method according to the invention can be used indifferently to encrypt a message in clear or to decrypt an encrypted message, the input data sequence being taken sometimes equal to the message in clear, sometimes to the encrypted message. The decryption is performed according to the reverse operations of those of the encryption, which is of great interest for hardware implementation. Also in the following description, will be understood by encryption method according to the invention a method adapted to encrypt and / or decrypt an input data sequence.
Ainsi, on peut chiffrer/déchiffrer une séquence de données d'entrée formée par une succession de mots d'entrée de taille quelconque avec une rapidité optimale d'exécution tout en assurant une implémentation simple et efficace en matériel et en logiciel. Les valeurs successives du vecteur d'état dépendent de la valeur initiale du vecteur d'état et de l'intégralité de la séquence de données d'entrée. De cette sorte, le vecteur d'état présente une évolution dynamique non-commandable et non-observable. Ceci assure un chiffrement/déchiffrement présentant un grand degré de sécurité. Dans un mode particulier de réalisation de (Invention, au moins une fonction parmi la première et la seconde fonction à clé secrète comprend au moins une opération ou-exclusif paramétrée par au moins une section de la clé secrète de cette fonction, c'est-à-dire par au moins une section de la valeur précédente du vecteur d'état. Dans un mode particulier de réalisation de l'invention, chaque vecteur d'état est de taille k et, au cours de l'étape de génération pseudo- aléatoire, pour calculer la valeur courante du vecteur d'état, on applique successivement, sur un vecteur provisoire de taille kl supérieure ou égale à k comprenant au moins un premier vecteur intermédiaire de taille k formé à partir d'une section de la valeur précédente du vecteur d'état et de la valeur intermédiaire courante, un nombre prédéterminé d de permutations de taille kl, chaque permutation étant associée respectivement à un bit distinct d'une clé de permutation de taille d et choisie en fonction au moins de la valeur de ce bit, ladite dé de permutation étant issue d'une sélection de d bits distincts parmi les k bits du premier vecteur intermédiaire, et la valeur courante du vecteur d'état étant obtenue à partir d'au moins une section du vecteur résultant de cette étape d'application.Thus, it is possible to encrypt / decrypt an input data sequence formed by a succession of input words of any size with an optimal speed of execution while ensuring a simple and effective implementation of hardware and software. The successive values of the state vector depend on the initial value of the state vector and the entire input data sequence. In this way, the state vector presents a non-controllable and unobservable dynamic evolution. This ensures encryption / decryption with a high degree of security. In a particular embodiment of (Invention, at least one function among the first and the second secret key function comprises at least one exclusive-or-operation parameterized by at least one section of the secret key of this function, that is, that is, at least one section of the previous value of the state vector In a particular embodiment of the invention, each state vector is of size k and during the pseudo-generation step random, to calculate the current value of the state vector, is applied successively, on a provisional vector of size kl greater than or equal to k comprising at least a first intermediate vector of size k formed from a section of the previous value of the state vector and the current intermediate value, a predetermined number d of permutations of size k1, each permutation being respectively associated with a bit distinct from a permutation key of size d and chosen as a function of at least the value of this bit, said permutation die being derived from a selection of d distinct bits from among the k bits of the first intermediate vector, and the current value of the state vector being obtained from at least one section of the vector resulting from this application step.
Le procédé de chiffrement selon l'invention bénéficie ainsi des mêmes avantages que le procédé de génération pseudo-aléatoire selon l'invention décrit précédemment. Il peut par ailleurs inclure dans différente modes de réalisation les différentes variantes proposées précédemment pour le procédé de génération pseudo-aléatoire selon l'invention.The encryption method according to the invention thus enjoys the same advantages as the pseudo-random generation method according to the invention described above. It may also include in different embodiments the different variants proposed above for the pseudo-random generation method according to the invention.
L'utilisation d'un tel procédé de génération pseudo-aléatoire dans un algorithme de chiffrement par flot permet avantageusement de garantir un grand degré de sécurité numérique tout en assurant une implémentation simple et efficace (notamment en termes de rapidité d'exécution) tant matérielle que logicielleThe use of such a pseudo-random generation method in a stream cipher algorithm advantageously makes it possible to guarantee a great degree of digital security while ensuring a simple and efficient implementation (especially in terms of speed of execution) both material that software
Selon une variante particulièrement avantageuse de l'invention, les mots d'entrée et/ou de sortie comprennent un nombre de bits variable en fonction des itérations. Le vecteur d'état peut alors comprendre une section indiquant ce nombre de bits variable à chaque itération.According to a particularly advantageous variant of the invention, the input and / or output words comprise a variable number of bits as a function of the iterations. The state vector may then comprise a section indicating this variable bit number at each iteration.
Le vecteur d'état étant une variable pseudo-aléatoire, cela signifie que le procédé de chiffrement traite des mots d'entrée à chiffrer de taille variable à chaque itération, cette taille variant également de façon pseudo-aléatoire en fonction de la séquence de données d'entrée et de la valeur initiale du vecteur d'état. Le vecteur d'état étant isolé des mots d'entrée et de sortie du procédé de chiffrement, il est impossible de déterminer quel découpage (en termes de taille) a été opéré au niveau des mots d'entrée au cours du procédé de chiffrement. On assure ainsi une protection encore plus grande contre la cryptanalyse. Dans ce mode particulier de réalisation de l'invention, l'étape de génération pseudo-aléatoire de chaque itération peut comporter en outre, lorsque l'on détermine que ledit nombre de bits variable est nul à partir de la valeur courante du vecteur d'état, le calcul selon une application non inversible dépendante de la valeur courante du vecteur d'état d'une nouvelle valeur courante du vecteur d'état remplaçant cette valeur courante du vecteur d'état.Since the state vector is a pseudo-random variable, this means that the encryption process processes input words to be encrypted of variable size at each iteration, this size also varies in a pseudo-random manner according to the data sequence. input and the initial value of the state vector. Since the state vector is isolated from the input and output words of the encryption method, it is impossible to determine which splitting (in terms of size) was performed at the level of the input words during the encryption process. This provides even greater protection against cryptanalysis. In this particular embodiment of the invention, the pseudo-random generation step of each iteration may further comprise, when it is determined that said variable bit number is zero from the current value of the vector of state, the calculation according to a non-invertible application dependent on the current value of the state vector of a new current value of the state vector replacing this current value of the state vector.
Ainsi, la succession de valeurs du vecteur d'état est générée "à vide" tant que la taille des mots d'entrée ou de sortie reste égale à zéro sans interaction avec l'étape de chiffrement. Autrement dit, les opérations effectuées lors de l'étape de génération pseudo-aléatoire se désynchronisent de celles effectuées lors de l'étape de chiffrement apportant encore plus de protection.Thus, the succession of values of the state vector is generated "empty" as long as the size of the input or output words remains zero without interaction with the encryption step. In other words, the operations performed during the pseudo-random generation step are out of sync with those performed during the encryption step providing even more protection.
Dans un mode particulier de réalisation de l'invention : - l'étape de génération pseudo-aléatoire est une première étape de génération pseudo-aléatoire formant une valeur courante d'un premier vecteur d'état ;In a particular embodiment of the invention: the pseudo-random generation step is a first pseudo-random generation step forming a current value of a first state vector;
- cette première étape de génération pseudo-aléatoire est combinée en parallèle avec au moins une seconde étape de génération pseudo- aléatoire formant une valeur courante d'un second vecteur d'état ; etthis first pseudo-random generation step is combined in parallel with at least a second pseudo-random generation step forming a current value of a second state vector; and
- la valeur courante du vecteur d'état est le résultat d'une opération ou- exclusif entre la valeur courante du premier vecteur d'état et au moins la valeur courante du second vecteur d'état.the current value of the state vector is the result of an exclusive-or operation between the current value of the first state vector and at least the current value of the second state vector.
On combine ainsi différents vecteurs d'état pseudo-aléatoires, ce qui permet d'accroître la complexité mathématique de données successives pseudo-aléatoires générées en produisant des cycles de plus en plus grands.Thus, different pseudo-random state vectors are combined, which makes it possible to increase the mathematical complexity of successive pseudo-random data generated by producing increasingly larger cycles.
Dans un autre mode de réalisation de l'invention, l'étape de chiffrement est une première étape de chiffrement dans laquelle on calcule :In another embodiment of the invention, the encryption step is a first encryption step in which:
- un premier mot de sortie courant selon une première application réversible dépendante d'un premier mot d'entrée courant et d'au moins une première section de la valeur précédente du vecteur d'état ; eta first current output word according to a first reversible application dependent on a first current input word and at least a first section of the previous value of the state vector; and
- une première valeur intermédiaire courante. Par ailleurs, le procédé comporte en outre au moins une seconde étape de chiffrement dans laquelle on calcule : - un second mot de sortie courant selon une seconde application réversible dépendante d'un second mot d'entrée courant et d'au moins une seconde section de la valeur précédente du vecteur d'état ; eta first current intermediate value. Furthermore, the method further comprises at least a second encryption step in which: a second current output word according to a second reversible application dependent on a second current input word and at least one second section of the previous value of the state vector; and
- une seconde valeur intermédiaire courante ; la valeur intermédiaire courante utilisée au cours de l'étape de génération pseudo-aléatoire comprenant la première valeur intermédiaire courante et au moins la seconde valeur intermédiaire courante.a second current intermediate value; the current intermediate value used during the pseudo-random generation step including the first current intermediate value and at least the second current intermediate value.
Ainsi, on peut multiplexer plusieurs signaux avec un même vecteur d'état ce qui permet de simplifier l'implémentation matérielle ou logicielle.Thus, one can multiplex several signals with the same state vector which simplifies the hardware or software implementation.
Dans un autre mode de réalisation de l'invention, le procédé de chiffrement comporte en outre une étape de multiplexage cryptographique d'au moins deux blocs de messages en clair pour former au moins deux blocs de messages chiffrés, chaque bloc de message en clair correspondant à une succession de mots d'entrées, et en ce que lesdits au moins deux blocs de messages chiffrés sont ordonnancés à chaque itération en fonction d'une section de la valeur précédente du vecteur d'état.In another embodiment of the invention, the encryption method further comprises a cryptographic multiplexing step of at least two blocks of plaintext messages to form at least two blocks of encrypted messages, each corresponding plaintext block a succession of input words, and in that said at least two encrypted message blocks are scheduled at each iteration according to a section of the previous value of the state vector.
Ainsi, l'ordonnancement ou le mixage à chaque itération des M blocs chiffrés, combinés ou non, dans des canaux de transmission est pseudo-aléatoire dépendant la valeur initiale du vecteur d'état et de l'intégralité des séquences d'entrées. Par conséquent, toute modification dans les séquences d'entrées modifie le mixage, assurant ainsi une protection optimale. Comme décrit précédemment, l'invention propose un procédé de génération pseudo-aléatoire basé sur une fonction à sens unique robuste à la cryptanalyse et aux attaques par force brute, rapide et d'implémentation matérielle peu complexe.Thus, the scheduling or the mixing at each iteration of the M encrypted blocks, combined or not, in transmission channels is pseudo-random depending on the initial value of the state vector and all the input sequences. Therefore, any modification in the input sequences changes the mix, thus ensuring optimal protection. As described above, the invention proposes a pseudo-random generation method based on a one-way function that is robust to cryptanalysis and to brute-force attacks, which are fast and of little complexity in hardware implementation.
Aussi, l'invention concerne également un module cryptographique adapté à générer un vecteur de bits de sortie à partir d'un vecteur de bits d'entrée de taille kl, comportant :Also, the invention also relates to a cryptographic module adapted to generate an output bit vector from an input bit vector of size k1, comprising:
- des moyens pour former une clé de permutation de taille d prédéterminée en sélectionnant d bits distincts parmi les bits du vecteur d'entrée ; - des moyens pour associer, à chaque bit de la clé de permutation, une permutation de taille kl choisie en fonction au moins de la valeur de ce bit ; etmeans for forming a permutation key of predetermined size d by selecting distinct bits from the bits of the input vector; means for associating, with each bit of the permutation key, a permutation of size k1 chosen as a function of at least the value of this bit; and
- des moyens pour appliquer successivement sur le vecteur d'entrée les d permutations de taille kl associées aux d bits de la clé de permutation de sorte à obtenir ledit vecteur de bits de sortie.means for successively applying on the input vector the d permutations of size k1 associated with the d bits of the permutation key so as to obtain said vector of output bits.
Le module cryptographique selon l'invention permet de mettre avantageusement en œuvre la fonction à sens unique précitée.The cryptographic module according to the invention makes it possible advantageously to implement the aforementioned one-way function.
Par ailleurs, l'invention vise également un générateur cryptographique d'une séquence de données pseudo-aléatoire formée d'une succession de valeurs d'un vecteur d'état de taille k générées itérativement à partir d'une valeur initiale du vecteur d'état, ce générateur comprenant des moyens pour mettre en œuvre, à chaque itération, pour générer une valeur courante du vecteur d'état pour cette itération : - un module cryptographique tel que décrit précédemment et adapté à générer un vecteur résultat à partir d'un vecteur provisoire de taille kl supérieure ou égale à k comprenant au moins un premier vecteur intermédiaire de taille k formé à partir d'au moins une section d'une valeur précédente du vecteur d'état générée à une itération précédente, ladite clé de permutation étant de taille d inférieure ou égale à k ; et - des moyens d'obtention de la valeur courante du vecteur d'état à partir d'au moins une section du vecteur résultat.Moreover, the invention also relates to a cryptographic generator of a pseudo-random data sequence formed of a succession of values of a state vector of size k generated iteratively from an initial value of the vector of state, this generator comprising means for implementing, at each iteration, to generate a current value of the state vector for this iteration: a cryptographic module as previously described and adapted to generate a result vector from a provisional vector of size k1 greater than or equal to k comprising at least a first intermediate vector of size k formed from at least one section of a previous value of the state vector generated at a previous iteration, said permutation key being of size d less than or equal to k; and means for obtaining the current value of the state vector from at least one section of the result vector.
Selon une variante de réalisation, ce générateur comprend en outre des moyens pour mettre en œuvre, à chaque itération : - des moyens d'obtention d'une valeur courante intermédiaire calculée à partir de la valeur précédente du vecteur d'état et d'un bloc de données d'entrée ; etAccording to an alternative embodiment, this generator further comprises means for implementing, at each iteration: means for obtaining an intermediate current value calculated from the previous value of the state vector and a input data block; and
- des moyens de formation du premier vecteur intermédiaire à partir de la valeur précédente du vecteur d'état dans lequel une section a été remplacée par la valeur intermédiaire courante.means for forming the first intermediate vector from the previous value of the state vector in which a section has been replaced by the current intermediate value.
L'invention vise également un dispositif de chiffrement d'une séquence de données d'entrée adapté à générer itérativement, à partir d'une valeur initiale d'un vecteur d'état et d'une succession de mots d'entrée formant ladite séquence d'entrée, une succession de valeurs du vecteur d'état et une succession de mots de sorties, ledit dispositif de chiffrement étant apte à mettre en œuvre à chaque itération : - des moyens de chiffrement adaptés à calculer un mot sortie courant pour ladite itération selon une application réversible dépendante d'un mot d'entrée courant et d'une valeur précédente du vecteur d'état générée à une itération précédente ; et - un générateur pseudo-aléatoire adapté à calculer une valeur courante du vecteur d'état pour ladite itération, selon une application non inversible dépendante d'au moins la valeur précédente du vecteur d'état.The invention also relates to a device for encrypting an input data sequence adapted to generate iteratively, starting from an initial value of a state vector and a succession of input words forming said sequence. input, a succession of values of the state vector and a succession of output words, said encryption device being able to implement at each iteration: encryption means adapted to calculate a current output word for said iteration according to a reversible application dependent on a current input word and a previous value of the generated state vector at a previous iteration; and a pseudo-random generator adapted to calculate a current value of the state vector for said iteration, according to a non-invertible application dependent on at least the previous value of the state vector.
Conformément à l'invention, ce dispositif de chiffrement est tel que : - l'application réversible comprend au moins une première et une seconde fonctions à clé secrète, ces clés secrètes étant générées à partir d'au moins une section de la valeur précédente du vecteur d'état ; et - l'application non inversible dépend en outre d'une valeur intermédiaire courante dépendant de la valeur précédente du vecteur d'état et du mot d'entrée courant, et étant isolée des mots d'entrée, respectivement des mots de sortie, par l'intermédiaire de ladite première fonction à clé secrète, respectivement de ladite seconde fonction à clé secrète.According to the invention, this encryption device is such that: the reversible application comprises at least a first and a second secret key function, these secret keys being generated from at least one section of the previous value of the state vector; and the non-invertible application also depends on a current intermediate value dependent on the previous value of the state vector and the current input word, and being isolated from the input words, respectively the output words, by via said first secret key function, respectively said second secret key function.
Dans une variante de réalisation, le générateur pseudo-aléatoire du dispositif de chiffrement selon l'invention est un générateur cryptographique d'une séquence de données pseudo-aléatoire selon l'invention tel que décrit précédemment.In an alternative embodiment, the pseudo-random generator of the encryption device according to the invention is a cryptographic generator of a pseudo-random data sequence according to the invention as described above.
Dans un mode de réalisation particulier de l'invention, le dispositif de chiffrement est adapté à traiter des mots d'entrée et/ou de sortie comprenant un nombre de bits variable en fonction des itérations et comprend en outre des moyens pour déterminer le nombre de bits variable à chaque itération à partir d'une section du vecteur d'état. Conformément à ce mode de réalisation, le générateur pseudo-aléatoire du dispositif de chiffrement peut comporter en outre, lorsque l'on détermine que ledit nombre de bits variable est nul à partir de la valeur courante du vecteur d'état, des moyens de calcul selon une application non inversible dépendant de la valeur courante du vecteur d'état d'une nouvelle valeur d'état courante remplaçant la valeur courante du vecteur d'état.In a particular embodiment of the invention, the encryption device is adapted to process input and / or output words comprising a variable number of bits as a function of the iterations and further comprises means for determining the number of bits. bits variable at each iteration from a section of the state vector. According to this embodiment, the pseudo-random generator of the encryption device may further comprise, when it is determined that said variable number of bits is zero from the current value of the state vector, calculation means. in a non-invertible application dependent on the current value of the state vector of a new current state value replacing the current value of the state vector.
Dans une autre variante de réalisation, le dispositif de chiffrement comporte en outre un dispositif de multiplexage cryptographîque d'au moins deux blocs de messages en clair pour former au moins deux blocs de messages chiffrés, chaque bloc de message en clair correspondant à une succession de mots d'entrées, et en ce que lesdîts au moins deux blocs de messages chiffrés sont ordonnancés à chaque itération en fonction d'une section de la valeur précédente du vecteur d'état.In another variant embodiment, the encryption device furthermore comprises a device for cryptographic multiplexing of at least two blocks of messages in the clear to form at least two encrypted message blocks, each plaintext block corresponding to a succession of input words, and in that the at least two encrypted message blocks are scheduled at each iteration according to a section of the value previous state vector.
L'invention vise également un dispositif de hachage cryptographique adapté à générer un condensé à partir d'un message comprenant un nombre prédéterminé Mue blocs de données, ce dispositif de hachage comprenant : - un générateur cryptographique selon l'invention tel que décrit précédemment, générant une succession de M valeurs d'un vecteur d'état au cours de M itérations successives ; - des moyens pour, pour chacune des M itérations :The invention also aims at a cryptographic hashing device adapted to generate a digest from a message comprising a predetermined number Mue blocks of data, this hash device comprising: a cryptographic generator according to the invention as described above, generating a succession of M values of a state vector during successive M iterations; means for, for each of the M iterations:
-calculer la valeur intermédiaire courante pour cette itération à partir d'un bloc de données courant du message et de la valeur précédente du vecteur d'état générée par le générateur cryptographique ; etcalculating the current intermediate value for this iteration from a current data block of the message and from the previous value of the state vector generated by the cryptographic generator; and
-fournir la valeur intermédiaire courante au générateur cryptographique ; - des moyens pour obtenir le condensé du message à partir de la dernière valeur du vecteur d'état générée par ledit générateur.provide the current intermediate value to the cryptographic generator; means for obtaining the digest of the message from the last value of the state vector generated by said generator.
Par ailleurs, on notera que, dans un mode particulier de réalisation de l'invention, le générateur cryptographique et/ou le dispositif de chiffrement et/ou le dispositif de hachage cryptographique de l'invention peuvent être mis en œuvre par un ou plusieurs systèmes informatiques comportant de manière classique une unité centrale de traitement commandant par des signaux une mémoire, une unité d'entrée et une unité de sortie raccordées entre elles par des bus de données.Furthermore, it will be noted that, in a particular embodiment of the invention, the cryptographic generator and / or the encryption device and / or the cryptographic hashing device of the invention can be implemented by one or more systems. computer system conventionally comprising a central processing unit controlling by signals a memory, an input unit and an output unit connected to each other by data buses.
Ainsi, l'invention vise aussi un programme d'ordinateur comportant des instructions de code de programme pour la mise en œuvre du procédé cryptographique de génération d'une séquence de données pseudo-aléatoire selon l'une quelconque des caractéristiques ci- dessus, ainsi qu'un programme d'ordinateur comportant des instructions de code de programme pour la mise en œuvre du procédé de chiffrement selon l'une quelconque des caractéristiques ci-dessus, ainsi qu'un programme d'ordinateur comportant des instructions de code de programme pour la mise en œuvre du procédé de hachage cryptographique selon l'une quelconque des caractéristiques ci-dessus, lorsque ces programmes sont chargés et exécutés dans un ordinateur ou un tel système informatique. Ces programmes d'ordinateur peuvent être stockés sur des supports lisibles par ordinateur et peuvent être exécutables par un microprocesseur.Thus, the invention is also directed to a computer program comprising program code instructions for implementing the cryptographic method for generating a pseudo-random data sequence according to any one of the above characteristics, as well as a computer program having program code instructions for implementing the encryption method according to any of the above features, as well as a computer program having code instructions of program for implementing the cryptographic hashing method according to any of the above features, when these programs are loaded and executed in a computer or computer system. These computer programs may be stored on computer readable media and may be executable by a microprocessor.
Ils peuvent utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.They may use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other form desirable.
L'invention vise aussi un support d'informations lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus.The invention also relates to a computer-readable information medium, comprising instructions of a computer program as mentioned above.
Brève description des dessinsBrief description of the drawings
D'autres particularités et avantages de l'invention ressortiront à la lecture de la description faite, ci-après, à titre indicatif mais non limitatif, en référence aux dessins annexés, sur lesquels : - les figures IA et IB illustrent schématiquement un générateur pseudoaléatoire d'une séquence de données pseudo aléatoire selon l'invention, dans un mode particulier de réalisation ;Other features and advantages of the invention will become apparent on reading the description given below, by way of indication but not limitation, with reference to the accompanying drawings, in which: - Figures IA and IB illustrate schematically a pseudo-random generator a pseudo-random data sequence according to the invention, in a particular embodiment;
- les figures 2 à 8 illustrent schématiquement des exemples d'un dispositif de chiffrement d'une séquence de données d'entrée selon l'invention, dans des modes particuliers de réalisation ;- Figures 2 to 8 schematically illustrate examples of a device for encrypting an input data sequence according to the invention, in particular embodiments;
- les figures 9A à 9E illustrent des exemples de permutations utilisées dans le générateur pseudo-aléatoire ou le dispositif de chiffrement des figures précédentes ou dans le dispositif de hachage cryptographique de la figure 14 ; - les figures 1OA et 1OB illustrent des exemples d'implémentation matériel des permutations de la figure 9C ;FIGS. 9A to 9E illustrate examples of permutations used in the pseudo-random generator or the encryption device of the preceding figures or in the cryptographic hashing device of FIG. 14; FIGS. 10A and 10B illustrate examples of hardware implementation of the permutations of FIG. 9C;
- les figures HA à HC illustrent des exemples de multiplexages cryptographiques ;- Figures HA to HC illustrate examples of cryptographic multiplexing;
- les figures 12 et 13 illustrent des applications du dispositif de chiffrement selon l'invention à des multiplexages cryptographiques ; - Ia figure 14 illustre schématiquement un exemple d'un dispositif de hachage cryptographique selon l'invention, dans un mode particulier de réalisation ; etFIGS. 12 and 13 illustrate applications of the encryption device according to the invention to cryptographic multiplexing; FIG. 14 diagrammatically illustrates an example of a cryptographic hashing device according to the invention, in a particular embodiment; and
- les figures 15a et 15B (déjà décrites) illustrent schématiquement deux mécanismes de chiffrement de l'art antérieur.FIGS. 15a and 15B (already described) diagrammatically illustrate two encryption mechanisms of the prior art.
Description détaillée de modes de réalisation Remarque préliminaire et notationsDetailed Description of Embodiments Preliminary Note and Notations
De façon particulièrement avantageuse, l'invention propose une fonction de permutation P, paramétrable, pouvant être utilisée, comme décrit ultérieurement, dans diverses applications cryptographiques, à savoir notamment pour une génération pseudo-aléatoire, un chiffrement/déchiffrement de données ou un hachage cryptographique d'un message. Cette fonction de permutation P est paramétrable en fonction de la taille des données sur lesquelles elle est appliquée et est paramétrée par une clé dite de permutation. Ainsi, on utilisera la convention de notation suivante :In a particularly advantageous way, the invention proposes a permutation function P, parameterizable, which can be used, as described later, in various cryptographic applications, namely in particular for pseudo-random generation, data encryption / decryption or cryptographic hashing. of a message. This permutation function P is parameterizable according to the size of the data on which it is applied and is parameterized by a so-called permutation key. Thus, we will use the following notation convention:
S = P(E, C) pour désigner qu'on applique la fonction de permutation P paramétrée par la clé de permutation C sur des données d'entrée E afin d'obtenir des données de sortie S.S = P (E, C) to designate that the permutation function P parameterized by the permutation key C is applied to input data E in order to obtain output data S.
De façon générale, pour des données d'entrée E de taille e et une clé de permutation C de taille p inférieure ou égale à e, la fonction de permutation P résulte de l'application de p permutations successives de taille e sur les données d'entrée E, chaque permutation étant associée à un bit de la clé de permutation C et choisie en fonction au moins de la valeur de ce bit.In general, for input data E of size e and a permutation key C of size p less than or equal to e, the permutation function P results from the application of p successive permutations of size e on the data of d. input E, each permutation being associated with a bit of the permutation key C and chosen as a function of at least the value of this bit.
Par exemple, on associe à chaque bit de la clé de permutation, c'est-à-dire à chaque étage de permutation de la fonction de permutation, une permutation PO lorsque ce bit est égal à 0 et une permutation Pl lorsque ce bit est égal à 1.For example, we associate with each bit of the permutation key, that is to say at each permutation stage of the permutation function, a permutation PO when this bit is equal to 0 and a permutation P1 when this bit is equal to 1.
Le même couple de permutations (PO,P1) peut être considéré aux différents étages de la fonction de permutation P. Dans ce cas, préférentiellement, ces permutations PO et Pl seront définies en tout point différentes l'une de l'autre et différentes individuellement chacune en tout point de la permutation identité. Cependant ces hypothèses ne sont en aucun cas limitatives, des couples différents de permutations pouvant être considérés à chaque étage de la fonction de permutation, ou d'autres conditions sur les permutations PO et Pl pouvant être respectées telles que par exemple, la permutation obtenue par composition des permutations PO et Pl est différente en tout point de la permutation obtenue par composition des permutations Pl et PO.The same pair of permutations (PO, P1) can be considered at different stages of the permutation function P. In this case, preferably, these permutations PO and P1 will be defined in every respect different from each other and individually different in every respect from the permutation identity. However, these hypotheses are in no way limiting, different pairs of permutations can be considered at each stage of the permutation function, or other conditions on the permutations PO and P 1 can be respected, such as, for example, the permutation obtained by The composition of the permutations PO and P1 is different at every point of the permutation obtained by composition of the permutations P1 and PO.
Selon la clé de permutation considérée, la fonction de permutation P présente des propriétés différentes.According to the permutation key considered, the permutation function P has different properties.
Ainsi, lorsque la clé de permutation C est formée à partir de données indépendantes des données d'entrée sur laquelle la fonction de permutation P est appliquée, on obtient une fonction bijective (ou permutation à clé), i.e., P est inversible sous réserve de connaître la valeur de la clé de permutation, c'est-à-dire qu'à une valeur des données d'entrée de la fonction P paramétrée par cette clé correspond une seule valeur des données de sortie.Thus, when the permutation key C is formed from data independent of the input data on which the permutation function P is applied, a bijective function (or key-rotation) is obtained, ie, P is invertible subject to to know the value of the permutation key, that is to say that a value of the input data of the function P parameterized by this key corresponds to a single value of the output data.
Cette propriété de la fonction de permutation P est considérée notamment dans certains modes de réalisation relatifs à un dispositif de chiffrement/déchiffrement et à un dispositif de hachage cryptographique selon l'invention.This property of the permutation function P is considered in particular in certain embodiments relating to an encryption / decryption device and a cryptographic hash device according to the invention.
Lorsque la clé de permutation C est formée à partir des données d'entrée E sur laquelle la fonction de permutation P est appliquée (autrement dit, lorsque la clé de permutation dépend de tout ou partie des données d'entrée E), on obtient une fonction à sens unique, i.e., P est non inversible c'est-à-dire qu'elle peut être aisément calculée dans un sens, mais il est difficile voire impossible de l'inverser en un temps raisonnable {Le, avec une complexité raisonnable).When the permutation key C is formed from the input data E on which the permutation function P is applied (in other words, when the permutation key depends on all or part of the input data E), one obtains a one-way function, ie, P is non-invertible ie it can be easily calculated in one direction, but it is difficult if not impossible to reverse it in a reasonable time {Le, with a reasonable complexity ).
Une telle fonction de permutation ainsi paramétrée (c'est-à-dire avec une clé de permutation dépendant des données d'entrée sur laquelle la fonction de permutation est appliquée), et a fortiori une fonction à sens unique basée sur une telle fonction de permutation, n'ont jamais été proposées ni utilisées auparavant dans l'art antérieur.Such a permutation function thus parameterized (that is to say with a permutation key depending on the input data on which the permutation function is applied), and a fortiori a one-way function based on such a function of permutation, have never been proposed or used before in the prior art.
Cette propriété de la fonction de permutation P est considérée notamment dans l'invention dans un module cryptographique et dans un générateur crγptographique d'une séquence de données pseudo-aléatoire (générateur pseudo-aléatoire).This property of the permutation function P is considered in particular in the invention in a cryptographic module and in a cryptographic generator of a pseudo-random data sequence (pseudo-random generator).
Dans la suite de la description, pour distinguer les différentes applications de la fonction de permutation P en fonction de ses propriétés, on désignera par « moyens de permutation surjective », les moyens de mise en œuvre de la fonction de permutation P lorsque celle-ci est une fonction à sens unique (aussi appelée par souci de simplification par la suite « permutation surjective »). En conséquence dans l'invention, une permutation surjective devra être comprise comme non inversible (i.e. non bijective), du fait qu'elle est utilisée dans un contexte de fonction à sens unique c'est-à-dire non inversible, et que dans ce contexte de fonction à sens unique, plusieurs données d'entrée El, E2... différentes peuvent avoir une même sortie S (par exemple, S = P(El, El) = P(E2,E2) = ..., avec El * E2≠..) . De même, on désignera par « moyens de permutation bijective », les moyens de mise en œuvre de la fonction de permutation P lorsque celle-ci est une fonction bijective, autrement dit une permutation à clé bijective (aussi appelée par souci de simplification par la suite « permutation bijective »). Les caractéristiques et les moyens de mise en œuvre de la fonction de permutation P seront expliqués plus en détails ultérieurement, en référence aux figures 9A-9E et 1OA, 1OB notamment. Ces caractéristiques et moyens de mise en œuvre s'appliquent aux différents dispositifs et moyens décrits dans la suite utilisant la fonction de permutation P (qu'elle définisse une fonction à sens unique ou une fonction bijective).In the remainder of the description, in order to distinguish the different applications of the permutation function P according to its properties, the means for implementing the permutation function P when it is used will be referred to as "surjective permutation means". is a one-way function (also called for simplification afterwards "surjective permutation"). Consequently, in the invention, a surjective permutation must be understood as non-invertible (ie non-bijective), because it is used in a context of one-way function that is to say non-invertible, and that in this one-way function context, several different input data E1, E2 ... can have the same output S (for example, S = P (E1, E1) = P (E2, E2) = ..., with El * E2 ≠ ..). Similarly, the term "means for bijective permutation" means the means for implementing the permutation function P when it is a bijective function, in other words a bijective key permutation (also called for simplification by the continuation "bijective permutation"). The characteristics and means of implementation of the permutation function P will be explained in more detail later, with reference to FIGS. 9A-9E and 10A, 1OB in particular. These characteristics and means of implementation apply to the various devices and means described hereinafter using the permutation function P (whether it defines a one-way function or a bijective function).
Procédé de génération pseudo-aléatoire et générateur pseudo-aléatoirePseudo-random generation method and pseudo-random generator
Conformément à l'invention, la figure IA représente un exemple schématique d'un générateur 1 pseudo-aléatoire d'une séquence de données pseudo aléatoire 3. Un mode particulier de réalisation de ce générateur pseudo-aléatoire est donné en figure IB. On notera que les figures IA et IB sont également des illustrations des principales étapes du procédé de génération d'une séquence de données pseudo aléatoire selon l'invention. Le générateur 1 pseudo-aléatoire comporte des moyens de calcul 5 dans lesquels à partir d'une valeur initiale Vo d'un vecteur d'état V, on forme la séquence de données pseudo aléatoire 3 par une génération itérative d'une succession de valeurs V0,...,Vn-i, Vn,... du vecteur d'état On notera que Vn correspond à la valeur prise par le vecteur d'état V à la nιeme itération. On utilise de façon similaire la même convention pour les autres variables.According to the invention, FIG. 1A represents a schematic example of a pseudo-random generator 1 of a pseudo-random data sequence 3. A particular embodiment of this pseudo-random generator is given in FIG. It will be noted that FIGS. 1A and 1B are also illustrations of the main steps of the method for generating a pseudo-random data sequence according to the invention. The pseudo-random generator 1 comprises calculation means 5 in which, starting from an initial value Vo of a state vector V, the pseudo-random data sequence 3 is formed by an iterative generation of a succession of values. V 0 , ..., V n -i, V n , ... of the state vector Note that V n corresponds to the value taken by the state vector V at the nth iteration. The same convention is similarly used for the other variables.
Le vecteur d'état V comprend un nombre k déterminé de bits (vecteur de taille k, k entier supérieur ou égal à 1). A chaque itération n du procédé de génération pseudo-aléatoire, les moyens de calcul 5 calculent une valeur courante Vn du vecteur d'état V selon une application non inversible dépendante d'une valeur précédente Vn-I du vecteur d'état. Cette application non inversible est basée sur une fonction à sens unique paramétrée par une clé de permutation de taille d inférieure ou égale à k.The state vector V comprises a determined number k of bits (vector of size k, k integer greater than or equal to 1). At each iteration n of the pseudo-random generation process, the calculation means 5 calculates a current value V n of the V state vector in a non-invertible implementation dependent on a previous value V n - I of the state vector. This non-invertible application is based on a one-way function set by a permutation key of size d less than or equal to k.
Avantageusement, dans l'exemple envisagé ici, on alimente le vecteur d'état à chaque itération n, par une valeur intermédiaire courante X« calculée selon une autre application, par exemple selon l'application AT, qui peut dépendre de la valeur précédente Vn-I du vecteur d'état et d'un mot d'entrée courant Un appartenant à une séquence de données d'entrée (bloc de données d'entrée au sens de l'invention). Dans l'exemple décrit ici, les mots d'entrée Un comprennent un nombre déterminé m de bits (mots de taille m), m entier supérieur ou égal à 1. La valeur intermédiaire courante X» comprend m bits (vecteur de taille m). Des exemples d'application AT seront décrits ultérieurement en référence notamment aux figures 2 à 12 (l'application AT est un module de chiffrement/déchiffrement) et 14 (l'application AT est un module de pré-conditionnement d'un dispositif de hachage cryptographique).Advantageously, in the example envisaged here, the state vector is fed to each iteration n by a current intermediate value X "calculated according to another application, for example according to the application AT, which may depend on the previous value V n - I of the state vector and a current input word U n belonging to an input data sequence (input data block within the meaning of the invention). In the example described here, the input words U n comprise a determined number m of bits (words of size m), m integers greater than or equal to 1. The current intermediate value X "comprises m bits (vector of size m ). Examples of AT applications will be described later with reference in particular to FIGS. 2 to 12 (the AT application is an encryption / decryption module) and 14 (the AT application is a pre-conditioning module of a hash device cryptographic).
En référence à la figure IB, nous allons maintenant décrire plus en détails les principaux moyens ainsi que les principales étapes mises en œuvre respectivement dans le générateur pseudo-aléatoire 1 et dans le procédé de génération pseudo-aléatoire selon l'invention, dans un mode particulier de réalisation.With reference to FIG. 1B, we will now describe in greater detail the main means as well as the main steps implemented respectively in the pseudo-random generator 1 and in the pseudo-random generation method according to the invention, in a mode particular embodiment.
A la première itération, le générateur 1 pseudo-aléatoire calcule une première valeur Vi du vecteur d'état V en fonction d'un premier mot d'entrée Ui (par Ie biais de la valeur intermédiaire courante X«) et de la valeur initiale Vo du vecteur d'état.At the first iteration, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of a first word. input Ui (through the current intermediate value X ") and the initial value Vo of the state vector.
Par extension, à Ia nιeme itération, le générateur 1 pseudoaléatoire calcule une valeur courante Vn du vecteur d'état V en fonction d'un mot d'entrée courant Un (par Ie biais de Ia valeur intermédiaire courante X«) et de la valeur précédente Vn_i du vecteur d'état.By extension, at the nth iteration, the pseudo-random generator 1 calculates a current value V n of the state vector V as a function of a current input word U n (via the current intermediate value X ") and of the previous value V n _i of the state vector.
Selon cet exemple, le générateur 1 pseudo-aléatoire comporte des moyens de transmission 321, des moyens de réception 323, et des moyens de calcul 325a, 325b, 325c, 326 et 327. A chaque itération (par exemple, à l'itération n), les moyens de transmission 321 transmettent à l'application AT la valeur précédente Vn-I du vecteur d'état. Les moyens de réception 323 reçoivent de l'application AT la valeur intermédiaire courante X«.According to this example, the pseudo-random generator 1 comprises transmission means 321, reception means 323, and calculation means 325a, 325b, 325c, 326 and 327. At each iteration (for example, at the iteration n ), the transmission means 321 transmit to the application AT the previous value V n - I of the state vector. The reception means 323 receive from the application AT the current intermediate value X ".
Un premier moyen de calcul 325a remplace une section Xn-I de taille m de la valeur précédente Vn-I du vecteur d'état par la valeur intermédiaire courante X« pour former une valeur courante d'un premier vecteur d'état intermédiaire V,nti.A first calculation means 325a replaces a section X n - I of size m of the preceding value V n - I of the state vector by the current intermediate value X 'to form a current value of a first intermediate state vector V, n ti.
Dans l'exemple décrit ici, un deuxième moyen de calcul 325b forme une valeur courante d'un vecteur provisoire Vprov de taille kl supérieure ou égale à k, à partir de la valeur courante du premier vecteur d'état intermédiaire V,nti et de la valeur courante du vecteur complémentaire, noté Vintl , du premier vecteur d'état intermédiaire V)nti (i.e. au sens de l'invention, le vecteur provisoire Vprov comprend les vecteurs Vmti et vintl ). De façon connue en soi, le vecteur complémentaire d'un vecteur est obtenu en complémentant à 1 chaque bit de ce vecteur. La valeur courante du vecteur provisoire ainsi obtenue est ici :In the example described here, a second calculation means 325b forms a current value of a provisional vector V pr ov of size k1 greater than or equal to k, from the current value of the first intermediate state vector V, nt i and the current value of the complementary vector, denoted V intl , of the first intermediate state vector V ) nt i (ie within the meaning of the invention, the provisional vector V pr ov comprises the vectors Vm t i and v intl ) . In a manner known per se, the vector complementary to a vector is obtained by complementing each bit of this vector. The current value of the provisional vector thus obtained is here:
V prov = | y V intl V intlV prov = | y V intl V intl
Le vecteur provisoire est alors de taille kl=2k.The provisional vector is then of size kl = 2k.
En variante, ce vecteur provisoire peut être égal à V,πti (i.e. on peut alors d'affranchir du deuxième moyen de calcul 325b) et est dans ce cas de taille k. Un exemple de mode de réalisation correspondant à une telle option est représenté notamment sur la figure 3A et sera décrit plus en détails ultérieurement.As a variant, this provisional vector may be equal to V, πt i (ie, the second calculation means 325b can be freed from the framing device) and is in this case of size k. An exemplary embodiment corresponding to such an option is shown in particular in Figure 3A and will be described in more detail later.
La valeur courante du vecteur provisoire est alors fournie à un troisième moyen de calcul 326 comprenant des moyens de permutation surjective 326a adaptés à appliquer une fonction à sens unique sur la valeur courante du vecteur provisoire pour former la valeur courante d'un vecteur résultat Vres. La fonction à sens unique appliquée par moyens de permutation surjective 326a est basée sur la fonction de permutation P paramétrable décrite précédemment et paramétrée par une clé de permutation C de taille d prédéterminée (i.e. p=d) inférieure ou égale à k. Ici, on choisit d=k.The current value of the temporary vector is then supplied to a third calculation means 326 comprising surjective permutation means 326a adapted to apply a one-way function on the current value of the temporary vector to form the current value of a result vector V res . The one-way function applied by surjective permutation means 326a is based on the permutation function P parameterizable previously described and parameterized by a permutation key C of predetermined size d (ie p = d) less than or equal to k. Here, we choose d = k.
La valeur courante de la clé de permutation C de la fonction à sens unique est formée par un moyen de formation 326b à partir de la valeur courante du premier vecteur d'état intermédiaire. Dans l'exemple décrit ici, la valeur courante C est prise égale à la valeur courante du premier vecteur d'état intermédiaire, C=V,nti.The current value of the permutation key C of the one-way function is formed by a training means 326b from the current value of the first intermediate state vector. In the example described here, the current value C is taken equal to the current value of the first intermediate state vector, C = V, n ti.
Dans la suite, par souci de simplification, on désignera indifféremment par C et par le terme « clé », la valeur courante de la clé de permutation pour (Itération n et la clé de permutation en elle-même (c'est-à-dire la variable aléatoire).In the following, for the sake of simplification, the value of the permutation key for (Iteration n and the permutation key in itself (that is, say the random variable).
En variante, dans un autre mode de réalisation de l'invention, la taille de la clé d peut être inférieure strictement à k. La clé de permutation C sera alors formée par les moyens 326b en sélectionnant d bits distincts, consécutifs ou non, parmi les k bits du premier vecteur intermédiaire Vinti, les positions des d bits sélectionnés étant préférentiellement préétablies et fixes. De préférence, on choisira la taille d de la clé de permutation supérieure à la taille de la valeur intermédiaire courante X« et les d bits sélectionnés comprendront la valeur intermédiaire courante X«.Alternatively, in another embodiment of the invention, the size of the key d may be strictly less than k. The permutation key C will then be formed by the means 326b by selecting distinct bits, consecutive or not, from among the k bits of the first intermediate vector V int i, the positions of the selected bits being preferentially predetermined and fixed. Preferably, the size d of the permutation key greater than the size of the current intermediate value X "will be chosen and the selected bits will comprise the current intermediate value X".
La fonction à sens unique appliquée par les moyens de permutation surjective 326a résulte donc ici de l'application de d=k permutations successives de taille kl=2k (i.e. e=kl=2k), chaque permutation étant associée à un bit distinct de la clé de permutation C=Vιnti et choisie en fonction au moins de la valeur de ce bit (par exemple dans une table de permutation préétablie, comme décrit ultérieurement en référence aux figures 1OA et 10B). En variante, elle peut dépendre également de l'étage de permutation considéré.The one-way function applied by the surjective permutation means 326a thus results here from the application of d = k successive permutations of size k1 = 2k (ie e = k1 = 2k), each permutation being associated with a bit distinct from the permutation key C = Vιnti and chosen according to at least the value of this bit (for example in a predetermined permutation table, as described later with reference to FIGS. 10A and 10B). Alternatively, it may also depend on the permutation stage considered.
La clé de permutation C=V,nti dépendant des données sur laquelle la fonction de permutation P est appliquée (puisque Vprm = (vmtlvimI )), P définit une fonction à sens unique. Le vecteur résultat obtenu Vres à l'issue de cette étape d'application est de taille kl=2k. Le moyen de calcul 326 est donc un module cryptographique au sens de l'invention.The permutation key C = V, n ti depends on the data on which the permutation function P is applied (since V prm = (v mtl v imI )), P defines a one-way function. The result obtained vector V rs at the end of this step of applying is of size k = 2k. The computing means 326 is therefore a cryptographic module within the meaning of the invention.
Dans le mode de réalisation décrit ici, les moyens de calcul 5 du générateur 1 pseudo-aléatoire comporte en outre un quatrième moyen de calcul 325c, qui sélectionne une section de k bits parmi les kl bits de la valeur courante du vecteur résultat Vres pour former la valeur courante d'un second vecteur intermédiaire V,nt2- Par exemple, le second vecteur intermédiaire Vme est formé par les k premiers bits du vecteur résultatIn the embodiment described here, the calculation means 5 of the pseudo-random generator 1 further comprises a fourth calculation means 325c, which selects a section of k bits from among the kl bits of the current value of the result vector V res for form the current value of a second intermediate vector V, nt2 - For example, the second intermediate vector Vme is formed by the first k bits of the result vector
Vres- Par ailleurs, les moyens de calcul 5 du générateur 1 pseudoaléatoire comportent ici en outre un cinquième moyen de calcul 327 comprenant une porte ou-exclusif 327a combinant la valeur précédente Vn-i du vecteur d'état et la valeur courante du second vecteur d'état intermédiaire V,nt2- Cette opération ou-exclusif outre son aspect non réversible, confère un degré de dispersion supérieur au générateur 1 pseudo-aléatoire.Moreover, the calculation means 5 of the pseudo-random generator 1 furthermore comprise a fifth calculation means 327 comprising an exclusive-or-exclusive gate 327a combining the previous value V n-1 of the state vector and the current value of the second one. intermediate state vector V, nt2- This or-exclusive operation in addition to its non-reversible appearance, confers a higher degree of dispersion to pseudo-random generator 1.
Dans un autre mode de réalisation de l'invention, la porte ou- exclusif 327a du quatrième moyen de calcul 327 combine la valeur courante du second vecteur d'état intermédiaire Vint2 avec la valeur courante du premier vecteur d'état intermédiaire Vmti-In another embodiment of the invention, the exclusive-or gate 327a of the fourth calculation means 327 combines the current value of the second intermediate state vector Vi nt 2 with the current value of the first intermediate state vector Vm t i-
Dans un autre mode de réalisation de l'invention encore, la valeur courante Vn du vecteur d'état V correspond à la valeur courante du second vecteur d'état intermédiaire Vtnt2-In another embodiment of the invention again, the current value V n of the state vector V corresponds to the current value of the second intermediate state vector V tnt2 -
Après les opérations ci-dessus de l'itération n, la valeur courante Vn du vecteur d'état V est disponible pour une itération suivante n+1.After the above operations of the iteration n, the current value V n of the state vector V is available for a next iteration n + 1.
Dans l'exemple représenté sur la figure IB, la valeur intermédiaire courante X« remplace une section Xn-I constituée de m bits consécutifs de la valeur précédente Vn-I du vecteur d'état pour former une valeur courante d'un premier vecteur d'état intermédiaire V,nti. Cette hypothèse n'est toutefois pas limitative, il est bien entendu également possible de remplacer les m bits d'une section Xn-ι de VM occupant m positions particulières non nécessairement consécutives dans Ie vecteur d'état, par les m composantes de la valeur intermédiaire courante X« pour former une valeur courante d'un premier vecteur d'état intermédiaire Vmti- Procédé et dispositif de chiffrementIn the example shown in Figure IB, the current intermediate value X "replaces a section X n - I consists of m consecutive bits of the previous value V n - I of the state vector to form a current value of a first intermediate state vector V, n ti. This assumption is however not limitative, it is of course also possible to replace the m bits of a section X n -ι of VM occupying m particular not necessarily consecutive positions in the state vector, by the m components of the current intermediate value X "to form a current value of a first intermediate state vector Vmti- Method and device for encryption
Les figures 2 à 12 montrent que le générateur pseudo-aléatoire 1 représenté schématiquement sur la figure IA (et dont un exemple de réalisation particulier est donné en figure IB) peut être utilisé en combinaison avec un module de chiffrement/déchiffrement pour chiffrer et/ou déchiffrer une succession de mots d'entrée. On notera que les figures 2 à 12 sont également des illustrations des principales étapes du procédé de chiffrement d'une séquence de données d'entrée. Dans ce cas, la valeur intermédiaire courante Xα peut être calculée par le module de chiffrement/déchiffrement selon une application indépendante de celle du générateur pseudo-aléatoire.FIGS. 2 to 12 show that the pseudo-random generator 1 represented diagrammatically in FIG. 1A (and of which a particular exemplary embodiment is given in FIG. 1B) can be used in combination with an encryption / decryption module for encrypting and / or to decipher a succession of input words. It should be noted that Figures 2 to 12 are also illustrations of the main steps of the method of encrypting an input data sequence. In this case, the current intermediate value X α can be calculated by the encryption / decryption module according to an application independent of that of the pseudo-random generator.
La figure 2 illustre un dispositif 7 de chiffrement (et/ou de déchiffrement) d'une séquence de données d'entrée 9 (respectivement 15) conforme à l'invention dans un mode particulier de réalisation. Ce dispositif 7 comporte des moyens de génération 11 pour générer de manière itérative une succession de valeurs 13 d'un vecteur d'état et une succession de mots de sorties 15 (respectivement 9) à partir d'une valeur initiale Vo du vecteur d'état et d'une succession de mots d'entrées Un (respectivement Yn) formant la séquence d'entrée. Le vecteur d'état V comprend un nombre k prédéterminé de bits et la valeur initiale V0 du vecteur d'état correspond à une clé de chiffrement/déchiffrement paramétrable de taille k. La taille k de la clé de chiffrement/déchiffrement correspond au nombre de bits de la clé, et donc au nombre de bits du vecteur d'état V. Par ailleurs, un mot d'entrée ou de sortie Un/Yn est d'une taille m correspondant au nombre de bits qui sont chiffrés ou déchiffrés par le module 17 de chiffrement/déchiffrement à chaque itération. Ces valeurs k et m peuvent être préétablies. Des modes de réalisation, dans lequel la taille d'un mot d'entrée ou de sortie peut être variable seront détaillés ultérieurement en référence aux figures 7 et 8.FIG. 2 illustrates a device 7 for encrypting (and / or decrypting) an input data sequence 9 (respectively 15) according to the invention in a particular embodiment. This device 7 comprises generation means 11 for iteratively generating a succession of values 13 of a state vector and a succession of output words 15 (respectively 9) from an initial value Vo of the vector of state and a succession of input words U n (respectively Y n ) forming the input sequence. The state vector V comprises a predetermined number k of bits and the initial value V 0 of the state vector corresponds to a parameterizable encryption / decryption key of size k. The size k of the encryption / decryption key corresponds to the number of bits of the key, and therefore to the number of bits of the state vector V. Furthermore, an input or output word U n / Y n is a size m corresponding to the number of bits that are encrypted or decrypted by the encryption / decryption module 17 at each iteration. These values k and m can be pre-established. Embodiments in which the size of an input or output word may be variable will be detailed later with reference to FIGS. 7 and 8.
Dans l'exemple envisagé ici, les moyens de génération 11 comportent un générateur 1 pseudo-aléatoire selon l'invention tel que représenté sur la figure IA (par exemple le générateur pseudo-aléatoire de la figure IB) et un module 17 de chiffrement/déchiffrement. En variante, d'autres générateurs pseudo-aléatoires peuvent être utilisés pour mettre en œuvre le dispositif et le procédé de chiffrement selon l'invention tels que par exemple un générateur pseudo-aléatoire basé sur l'algorithme AES (Advanced Encryption Standard), un générateur pseudo-aléatoire basé sur l'algorithme Blum Blum Shub (BBS), ou un générateur pseudoaléatoire basé sur des registres à décalage connus de Phomme du métier. Ainsi, à chaque itération n, le générateur 1 pseudo-aléatoire calcule une valeur courante Vn du vecteur d'état selon une application non inversible dépendante de la valeur précédente Wi du vecteur d'état et de la valeur courante intermédiaire X« issue d'un calcul réalisé par le module 17 de chiffrement/déchiffrement et dépendante de la valeur précédente Vn-I du vecteur d'état et du mot d'entrée courant Un (respectivement Yn), et le module 17 de chiffrement/déchiffrement calcule un mot de sortie courant Yn (respectivement Un) selon une application réversible dépendante d'un mot d'entrée courant Un (respectivement Yn) et de la valeur précédente Vn-I du vecteur d'état. On notera que le dispositif 7 de chiffrement peut être utilisé de manière réversible pour le chiffrement et/ou le déchiffrement. En effet, comme décrit précédemment, le procédé de chiffrement selon l'invention peut être utilisé tant en mode chiffrement lorsque la séquence des mots d'entrée est issue d'un message en clair à chiffrer, qu'en mode déchiffrement lorsque la séquence des mots de sortie est issue d'un message chiffré à déchiffrer.In the example envisaged here, the generation means 11 comprise a pseudo-random generator 1 according to the invention as represented in FIG. 1A (for example the pseudo-random generator of FIG. 1B) and an encryption module 17. decryption. Alternatively, other pseudo-random generators may be used to implement the device and the encryption method according to the invention such as for example a pseudo-random generator based on the Advanced Encryption Standard (AES) algorithm, a pseudo-random generator based on the Blum Blum Shub (BBS) algorithm, or a pseudo-random generator based on known shift registers of The person skilled in the art. Thus, at each iteration n, the pseudo-random generator 1 calculates a current value V n of the state vector according to a non-invertible application dependent on the previous value Wi of the state vector and the intermediate current value X "resulting from a calculation performed by the module 17, encryption / decryption and dependent on the previous value V n - I of the state vector U n and the current input word (respectively Y n), and the module 17, encryption / decryption calculates a current output word Y n (respectively U n ) according to a reversible application dependent on a current input word U n (respectively Y n ) and the previous value V nI of the state vector. Note that the encryption device 7 can be used reversibly for encryption and / or decryption. Indeed, as described above, the encryption method according to the invention can be used both in encryption mode when the sequence of the input words is derived from a plaintext message to be encrypted, or in decryption mode when the sequence of output words is from an encrypted message to decrypt.
Selon cet exemple, le générateur 1 pseudo-aléatoire alimente, à chaque itération n, le vecteur d'état par la valeur intermédiaire courante Xα issue d'un calcul réalisé par le module 17 de chiffrement/déchiffrement et dépendante de la valeur précédente Vn-I du vecteur d'état et du mot d'entrée courant Un (respectivement Yn).According to this example, the pseudo-random generator 1 feeds, at each iteration n, the state vector by the current intermediate value X α resulting from a calculation carried out by the encryption / decryption module 17 and dependent on the previous value V nI of the state vector and the current input word U n (respectively Y n ).
Comme décrit précédemment, le générateur 1 pseudo-aléatoire met en œuvre une application non inversible basée sur une fonction à sens unique paramétrée par une clé de permutation et peut être utilisé pour réaliser un chiffrement de la même façon que pour réaliser un déchiffrement. Par ailleurs, le module 17 de chiffrement/déchiffrement est réversible et peut alors être utilisé en effectuant les opérations de chiffrement/déchiffrement en ordre inverse. Ainsi, lors d'un chiffrement, un mot d'entrée est noté Un (données claires) et un mot de sortie est noté Yn (données chiffrées), tandis que lors d'un déchiffrement, un mot d'entrée est noté Yn (données chiffrées), et un mot de sortie est noté Un (données claires).As previously described, the pseudo-random generator 1 implements a non-invertible application based on a one-way function parameterized by a permutation key and can be used to perform an encryption in the same way as to perform a decryption. Furthermore, the encryption / decryption module 17 is reversible and can then be used by performing the encryption / decryption operations in reverse order. Thus, during an encryption, an input word is noted U n (clear data) and an output word is noted Y n (encrypted data), while during a decryption, a word input is denoted Y n (encrypted data), and an output word is denoted U n (clear data).
Plus particulièrement, avant le démarrage d'un chiffrement par Ie procédé de chiffrement selon l'invention, Ia valeur de la clé chiffrement devient la valeur initiale Vo du vecteur d'état V (V0 = clé de chiffrement).More particularly, before the start of an encryption by the encryption method according to the invention, the value of the encryption key becomes the initial value Vo of the state vector V (V 0 = encryption key).
 la première itération, le module 17 de chiffrement/déchiffrement calcule le premier mot de sortie Yi (correspondant à un mot chiffré) en fonction du premier mot d'entrée Ui (correspondant à un mot en clair) et de la valeur initiale Vo du vecteur d'état. De plus, le générateur 1 pseudo-aléatoire calcule une première valeur Vi du vecteur d'état V en fonction du premier mot d'entrée Ui et de la valeur initiale V0 du vecteur d'état. Par extension, à la nιeme itération, le module 17 de chiffrement/déchiffrement calcule le mot de sortie courant Yn en fonction du mot d'entrée courant Un et de la valeur précédente Vn-I du vecteur d'état. De plus, le générateur 1 pseudo-aléatoire calcule une valeur courante Vn du vecteur d'état V en fonction du mot d'entrée courant Un et de la valeur précédente Vn-I du vecteur d'état.At the first iteration, the encryption / decryption module 17 calculates the first output word Yi (corresponding to an encrypted word) as a function of the first input word Ui (corresponding to a word in the clear) and the initial value Vo. state vector. In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of the first input word Ui and the initial value V 0 of the state vector. By extension, at the nth iteration, the encryption / decryption module 17 calculates the current output word Y n as a function of the current input word U n and the previous value V n - I of the state vector. In addition, the pseudo-random generator 1 calculates a current value V n of the state vector V based on the current input word U n and the previous value V n - I of the state vector.
De la même manière, avant le démarrage d'un déchiffrement par le procédé de chiffrement selon l'invention, la valeur de la clé de déchiffrement devient la valeur initiale V0 du vecteur d'état V (V0 = clé de déchiffrement). La clé de déchiffrement sera naturellement prise égale à la clé de chiffrement utilisée pour le chiffrement des données (chiffrement symétrique).In the same way, before starting a decryption by the encryption method according to the invention, the value of the decryption key becomes the initial value V 0 of the state vector V (V 0 = decryption key). The decryption key will naturally be taken equal to the encryption key used for data encryption (symmetric encryption).
A la première itération de déchiffrement, le module 17 de chiffrement/déchiffrement calcule le premier mot de sortie Ui (correspondant à un mot déchiffré) en fonction du premier mot d'entrée Yi (correspondant à un mot chiffré) et de la valeur initiale V0 du vecteur d'état. De plus, le générateur 1 pseudo-aléatoire calcule une première valeur Vi du vecteur d'état V en fonction du premier mot d'entrée Yi et de la valeur initiale V0 du vecteur d'état. Par extension, à la nιeme itération, le module 17 de chiffrement/déchiffrement calcule le mot de sortie courant Un en fonction du mot d'entrée courant Yn et de la valeur précédente Vn-I du vecteur d'état. De plus, Ie générateur 1 pseudo-aléatoire calcule une valeur courante Vn du vecteur d'état V en fonction du mot d'entrée courant Yn et de la valeur précédente Vn-I du vecteur d'état. Avantageusement dans l'exemple décrit ici, le vecteur d'état V comporte un ensemble de sections comprenant au moins une première variable d'état X, une deuxième variable d'état Â, une troisième variable d'état B, et éventuellement d'autre(s) variable(s) d'état. Ces variables d'état sont donc des variables pseudo-aléatoires. Par exemple, la valeur courante Vn du vecteur d'état V peut être structurée de la manière suivante :At the first decryption iteration, the encryption / decryption module 17 calculates the first output word U i (corresponding to a decrypted word) as a function of the first input word Y i (corresponding to an encrypted word) and of the initial value V 0 of the state vector. In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V according to the first input word Yi and the initial value V 0 of the state vector. By extension, at the nth iteration, the encryption / decryption module 17 calculates the current output word U n according to the current input word Y n and the previous value V nI of the state vector. In addition, the pseudo-random generator 1 calculates a current value V n of the state vector V as a function of the current input word Y n and the previous value V n - I of the state vector. Advantageously, in the example described here, the state vector V comprises a set of sections comprising at least a first state variable X, a second state variable,, a third state variable B, and possibly other state variable (s). These state variables are therefore pseudo-random variables. For example, the current value V n of the state vector V can be structured as follows:
Vn = {-(*n = (XnV-XnJ-Mn <anV..anm))..(Bn ≈ {bnV.bnm))-) Les valeurs des variables d'état X, A et B seront également considérées comme des sections du vecteur d'état ou de la valeur du vecteur d'état au sens de l'invention.V n = {- (* n = (X nV -X n JM n <a nV ..a nm )) .. (B n ≈ {b nV .b nm )) -) The values of the X state variables , A and B will also be considered as sections of the state vector or the value of the state vector in the sense of the invention.
Selon cet exemple, les variables d'état X, A, et B sont des sections constituées de m bits consécutifs chacune. La valeur courante Xn de la première variable d'état X comprend m bits xni, - xnm/ la valeur courante An de la deuxième variable d'état A comprend m bits ani,...anm, et la valeur courante Bn de la troisième variable d'état B comprend m bits bni,---bnιτfAccording to this example, the state variables X, A, and B are sections consisting of m consecutive bits each. The current value X n of the first state variable X comprises m bits x n i, - x n m / the current value A n of the second state variable A comprises m bits a n i, ... a n m, and the current value B n of the third state variable B comprises m bits bni, --- bnιτf
Plus particulièrement, la valeur Xn de la première variable d'état X est utilisée lors d'une itération suivante par des fonctions (respectivement par des moyens) dites « d'isolement » du module 17 de chiffrement/déchiffrement avant d'être remplacée par la valeur intermédiaire X« issue du calcul réalisé à l'itération suivante par le module 17 de chiffrement/déchiffrement. Les valeurs An et Bn des deuxième et troisième variables d'état sont aussi utilisées lors d'une itération suivante par les fonctions d'isolement du module 17 de chiffrement/déchiffrement (voir par exemple les figures 3A et 3B).More particularly, the value X n of the first state variable X is used during a next iteration by functions (respectively by means) said "isolation" of the module 17 of encryption / decryption before being replaced by the intermediate value X "resulting from the calculation carried out at the next iteration by the module 17 of encryption / decryption. The values A n and B n of the second and third state variables are also used during a subsequent iteration by the isolation functions of the encryption / decryption module 17 (see for example FIGS. 3A and 3B).
Les emplacements des variables d'état sont de préférence à position fixe, mais il est possible de leur affecter une position variable en fonction de la ou des valeurs prises par une ou plusieurs sections du vecteur d'état, elles-mêmes à position fixe. Seule la solution d'une position fixe des variables d'état est décrite par la suite.The locations of the state variables are preferably fixed position, but it is possible to assign them a variable position depending on the value or values taken by one or more sections of the state vector, themselves fixed position. Only the solution of a fixed position of the state variables is described later.
Par ailleurs, il est préférable (mais non nécessaire) que les secteurs affectés à chacune des variables d'état ne se chevauchent pas. La taille k du vecteur d'état est alors choisie en conséquence, et chaque variable d'état correspond à une section de taille limitée du vecteur d'état (c'est-à-dire de taille strictement inférieure à celle du vecteur d'état). La figure 3Â illustre un premier exemple plus détaillé d'un dispositif 7 de chiffrement/déchiffrement selon Ia figure 2.On the other hand, it is preferable (but not necessary) that the sectors assigned to each of the state variables do not overlap. The size k of the state vector is then chosen accordingly, and each state variable corresponds to a section of limited size of the state vector (that is to say of strictly smaller size than that of the vector of state). FIG. 3 illustrates a first, more detailed example of an encryption / decryption device 7 according to FIG. 2.
Selon ce premier exemple, Ie générateur 1 pseudo-aléatoire comporte des moyens de transmission 21, des moyens de réception 23, et des moyens de calcul 25, 26 et éventuellement 27.According to this first example, the pseudo-random generator 1 comprises transmission means 21, reception means 23, and calculation means 25, 26 and possibly 27.
A chaque itération (par exemple, à l'itération n), les moyens de transmission 21 transmettent au module 17 de chiffrement/déchiffrement la valeur précédente Vn-I du vecteur d'état comprenant au moins la valeur précédente Xn i de la première variable d'état X, la valeur précédente An-I de la deuxième variable d'état A, et la valeur précédente Bn-I de la troisième variable d'état B.At each iteration (e.g., at iteration n), transmission means 21 transmit module 17 encryption / decryption the previous value V n - I of the state vector comprising at least the previous value X i of the n first state variable X, the previous value A nI of the second state variable A, and the previous value B n - I of the third state variable B.
Les moyens de réception 23 reçoivent depuis le module 17 de chiffrement/déchiffrement la valeur intermédiaire courante Xα.The reception means 23 receive from the encryption / decryption module 17 the current intermediate value X α .
Un premier moyen de calcul 25 remplace la valeur précédente Xn-I de la première variable d'état X par la valeur intermédiaire courante X« pour calculer une valeur courante d'un premier vecteur d'état intermédiaire V,nti.A first calculation means 25 replaces the previous value X n -I of the first state variable X by the current intermediate value X "to calculate a current value of a first intermediate state vector V, n ti.
Un deuxième moyen de calcul 26 comprend des moyens 26a de permutation sutjective adaptés à appliquer sur le premier vecteur d'état intermédiaire V,nti une fonction à sens unique paramétrée par une clé de permutation C de taille d=k comprenant la valeur courante du premier vecteur intermédiaire V,nti (C=V,nti) pour former le second vecteur d'état intermédiaire V,nt2. Le deuxième moyen de calcul 26 fonctionne de façon similaire (à la taille des vecteurs près) au moyen de calcul 326 décrit précédemment et représente un module cryptographique au sens de l'invention.A second calculating means 26 comprises sutjective permutation means 26a adapted to be applied to the first intermediate state vector V, nt i a one-way function parameterized by a permutation key C of size d = k comprising the current value of the first intermediate vector V, n ti (C = V, n ti) to form the second intermediate state vector V, nt 2. The second calculation means 26 functions in a similar way (to the size of the vectors) by means of 326 calculation described above and represents a cryptographic module in the sense of the invention.
La fonction à sens unique appliquée par les moyens de calcul 26a est basée sur la fonction de permutation P paramétrable décrite précédemment (p=d=k et e=k) et résulte donc ici de l'application de k permutations successives de taille k, chaque permutation étant associée à un bit distinct de la clé de permutation C=V,nti et choisie en fonction au moins de Ia valeur de ce bit.The one-way function applied by the calculation means 26a is based on the parameterizable permutation function P described previously (p = d = k and e = k) and thus results here from the application of k successive permutations of size k, each permutation being associated with a bit distinct from the permutation key C = V, nt i and chosen as a function of at least the value of this bit.
Ainsi, les moyens 26a appliquent Ia fonction à sens unique P=(Thus, the means 26a apply the one-way function P = (
VWi, Vinti) paramétrée par la valeur courante du premier vecteur d'état intermédiaire V,nti sur ce premier vecteur d'état intermédiaire pour former une valeur courante d'un second vecteur d'état intermédiaire V,nt2- Dans ce premier exemple, Ie premier vecteur intermédiaire, respectivement le second vecteur intermédiaire, représentent donc un vecteur provisoire, respectivement un vecteur résultat, au sens de l'invention. On notera que les vecteurs Vιnti et V,rt2 sont tous les deux de taille k. La valeur courante Vn du vecteur d'état V correspond alors à la valeur courante du second vecteur d'état intermédiaire V,nt2-VWi, Vin t i) parameterized by the current value of the first intermediate state vector V, nt i on this first intermediate state vector to form a current value of a second intermediate state vector V, nt2 - In this first example, the first intermediate vector, respectively the second intermediate vector, therefore represent a temporary vector, respectively a result vector, within the meaning of the invention. Note that the vectors V ιn ti and V, rt 2 are both of size k. The current value V n of the state vector V then corresponds to the current value of the second intermediate state vector V, n t2-
Selon une autre variante (représentée en pointillés sur la figureAccording to another variant (shown in dotted lines in the figure
3A), les moyens de calcul 5 du générateur 1 pseudo-aléatoire comporte en outre un troisième moyen de calcul 27 comprenant une porte ou-exclusif 27a combinant la valeur courante du premier vecteur d'état intermédiaire3A), the calculation means 5 of the pseudo-random generator 1 further comprises a third calculation means 27 comprising an exclusive-or-exclusive gate 27a combining the current value of the first intermediate state vector.
Vinti et la valeur courante du second vecteur d'état intermédiaire V,nt2.Vin t i and the current value of the second intermediate state vector V, nt2 .
Selon une autre variante (non représentée), le troisième moyen de calcul 27 comprend une porte ou-exclusif 27a combinant la valeur précédente du vecteur d'état Vn-I et la valeur courante du second vecteur d'état intermédiaire V1nQ-According to another variant (not shown), the third calculation means 27 comprises an exclusive-exclusive gate 27a combining the previous value of the state vector V n -I and the current value of the second intermediate state vector V 1n Q-
Ainsi, les moyens de calcul 5 du générateur 1 pseudo-aléatoire réalisent une fonction à sens unique, c'est-à-dire non inversible, sur le premier vecteur d'état intermédiaire V,nti dont le résultat est optionnellement composé avec ce premier vecteur d'état intermédiaire V,nti ou avec le vecteur d'état à l'itération précédente.Thus, the computing means 5 of the pseudo-random generator 1 perform a one-way function, that is to say non-invertible, on the first intermediate state vector V, nt i whose result is optionally composed with this first intermediate state vector V, n t i or with the state vector at the previous iteration.
Après les opérations ci-dessus de l'itération n, la valeur courante Vn du vecteur d'état V est disponible pour une itération suivante n+1.After the above operations of the iteration n, the current value V n of the state vector V is available for a next iteration n + 1.
Par ailleurs, le module 17 de chiffrement/déchiffrement comporte des moyens de réception 33, des moyens d'isolement 35a et 35b et dans l'exemple décrit ici un moyen de liaison 37 entre les moyens d'isolement 35a et 35b.Furthermore, the encryption / decryption module 17 comprises receiving means 33, isolation means 35a and 35b and in the example described here a connection means 37 between the isolation means 35a and 35b.
Les moyens de réception 33 reçoivent depuis le générateur 1 pseudo-aléatoire la valeur précédente Vn-I du vecteur d'état comprenant au moins la valeur précédente Xn-I de la première variable d'état X, la valeur précédente An-I de la deuxième variable d'état A, et la valeur précédente Bn-I de la troisième variable d'état B.The receiving means 33 receive from the pseudo-random number generator 1 the preceding value V n - I of the state vector comprising at least the previous value X n -I of the first state variable X, the previous value A n - I of the second state variable A, and the previous value B n -I of the third state variable B.
Les moyens d'isolement comprennent au moins deux moyens d'isolement 35a et 35b pour isoler la valeur intermédiaire courante X«. Chaque moyen d'isolement permet d'appliquer une fonction symétrique dite « à clé secrète », cette clé secrète étant obtenue à partir d'au moins une section de la valeur précédente du vecteur d'état. De façon connue de l'homme du métier, une fonction symétrique à clé secrète est une fonction pour laquelle le calcul de la sortie en fonction de l'entrée et de l'entrée en fonction de la sortie est aisé lorsque l'on dispose de la clé secrète et impossible lorsque l'on ignore la clé secrète.The isolation means comprise at least two isolation means 35a and 35b for isolating the current intermediate value X ". Each isolation means makes it possible to apply a symmetrical function called "secret key", this secret key being obtained from at least one section of the previous value of the state vector. In a manner known to those skilled in the art, a secret key symmetrical function is a function for which the calculation of the output as a function of the input and of the input as a function of the output is easy when there is the secret key and impossible when we ignore the secret key.
Préférentiellement, les fonctions à clé secrète mises en œuvre comprennent au moins une opération ou-exclusif, i.e. chaque moyen d'isolement comprend au moins une porte ou-exclusif. Elles peuvent comporter en outre au moins un moyen de permutation bijective. Dans l'exemple décrit ici (cf. figure 5A), chaque moyen d'isolement comprend une porte ou-exclusif et deux moyens de permutation bijective et le moyen de liaison 37 comporte une porte ou- exclusif. La fonction à clé secrète mise en œuvre dans chaque moyen d'isolement est ainsi composée de deux permutations bijectives au sens de l'invention et d'une opération ou-exclusif, chacune paramétrée par une section de taille m du vecteur d'état Vn-1. La clé secrète de cette fonction est composée de la section paramétrant la première permutation bijective, de la section paramétrant l'opération ou-exclusif et de la section paramétrant la seconde permutation bijective. Ainsi, le dispositif 7 de chiffrement comporte deux éléments interconnectés, c'est-à-dire, un générateur 1 pseudo-aléatoire paramétré par une clé de chiffrement/déchiffrement de taille k quelconque utilisée pour l'initialisation du vecteur d'état V, et un module 17 de chiffrement/déchiffrement intégrant des fonctions d'isolement à clé secrète.Preferably, the secret key functions implemented comprise at least one exclusive operation, ie each isolation means comprises at least one exclusive-door. They may further comprise at least one means of bijective permutation. In the example described here (see FIG. 5A), each isolation means comprises an exclusive-door and two means of bijective permutation and the connecting means comprises an exclusive-door. The secret key function implemented in each isolation means is thus composed of two bijective permutations within the meaning of the invention and an exclusive-or-operation, each parameterized by a section of size m of the state vector V n-1 . The secret key of this function is composed of the section parameterizing the first bijective permutation, the section parameterizing the exclusive-operation and the section parameterizing the second bijective permutation. Thus, the encryption device 7 comprises two interconnected elements, that is to say, a pseudo-random generator 1 parameterized by an encryption / decryption key of any size k used for the initialization of the state vector V, and an encryption / decryption module 17 incorporating secret keying functions.
La figure 3B illustre un second exemple d'un dispositif 7 de chiffrement selon la figure 2, utilisant le générateur pseudo-aléatoire 1 représenté sur la figure IB. Le mode de fonctionnement de ce dispositif 7 et les variantes de réalisation associées sont similaires à ceux décrits précédemment en référence à la figure 3A.FIG. 3B illustrates a second example of an encryption device 7 according to FIG. 2, using the pseudo-random generator 1 represented in FIG. 1B. The mode of operation of this device 7 and the associated embodiments are similar to those described above with reference to FIG. 3A.
Les figures 5A et 6A illustrent avec plus de détails des modes de chiffrement et de déchiffrement d'une séquence de données d'entrée, lorsque le générateur pseudo-aléatoire 1 de la figure 3A est considéré.FIGS. 5A and 6A illustrate in more detail modes of encryption and decryption of an input data sequence, when the pseudo-random generator 1 of FIG. 3A is considered.
Plus particulièrement, la figure 5Â illustre le dispositif de chiffrement 7 lors d'un mode de chiffrement dans lequel la séquence de données d'entrée correspond à un message clair et la succession de mots de sorties correspond à un message chiffré. Selon cet exemple, le moyen de liaison 37 entre le premier moyen disolement 35a et le deuxième moyen d'isolement 35b comporte une porte ou-exclusif centrale 41b.More particularly, FIG. 5 illustrates the encryption device 7 during an encryption mode in which the input data sequence corresponds to a clear message and the succession of words. output is an encrypted message. According to this example, the connecting means 37 between the first isolation means 35a and the second isolation means 35b comprises a central exclusive-or-door 41b.
Le premier moyen d'isolement 35a comprend des premiers et seconds moyens de permutation bijective 39a, 39b séparés par une première porte ou-exclusif 41a. Le deuxième moyen d'isolement 35b comprend des troisièmes et quatrièmes moyens de permutation bijectiveThe first isolation means 35a comprises first and second bijective permutation means 39a, 39b separated by a first or exclusive-door 41a. The second isolation means 35b comprises third and fourth means of bijective permutation
39c, 39d séparés par une deuxième porte ou-exclusif 41c.39c, 39d separated by a second or exclusive-door 41c.
Les moyens de permutation bijective 39a, 39b, 39c, 39d considérés ici mettent en œuvre chacun la fonction de permutation P décrite précédemment, paramétrée par une variable d'état du vecteur d'état Vn-I c'est-à-dire par une clé de permutation de taille m (p=m) égale à une variable d'état du vecteur d'état VVi. Ainsi :The bijective permutation means 39a, 39b, 39c, 39d considered here each implement the permutation function P described above, parameterized by a state variable of the state vector V n - I that is to say by a permutation key of size m (p = m) equal to a state variable of the state vector VVi. So :
- les premiers moyens de permutation bijective 39a mettent en œuvre une première permutation bijective correspondant à la fonction de permutation P paramétrée par une clé de permutation égale à la valeur précédente de la seconde variable d'état An-I,the first bijective permutation means 39a implement a first bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the previous value of the second state variable A n -I ,
- les seconds moyens de permutation bijective 39b mettent en œuvre une seconde permutation bijective correspondant à la fonction de permutation P paramétrée par une clé de permutation égale à la valeur précédente de la première variable d'état Xn-I,the second means of bijective permutation 39b implement a second bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the preceding value of the first state variable X n -I ,
- les troisièmes moyens de permutation bijective 39c mettent en œuvre une troisième permutation bijective correspondant à la fonction de permutation P paramétrée par une clé de permutation égale à la valeur précédente de la première variable d'état Xn-I, etthe third bijective permutation means 39c implement a third bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the preceding value of the first state variable X n -I , and
- les quatrièmes moyens de permutation bijective 39d mettent en œuvre une quatrième permutation bijective correspondant à la fonction de permutation P paramétrée par une clé de permutation égale à la valeur précédente de la troisième variable d'état Bn-I. Les clés de permutation utilisées pour paramétrer la fonction de permutation P dans les moyens de permutation bijective 39a, 39b, 39c et 39d étant indépendantes des données sur lesquelles la fonction de permutation P résultante est appliquée, ils mettent ainsi chacun en œuvre une fonction inversible (bijective), dont la fonction inverse est une fonction de permutation P"1. Cette fonction inversible P résulte de l'application de m permutations successives de taille m (p=e=m), sélectionnées en fonction de la valeur de chaque bit de la clé de permutation considérée.the fourth bijective permutation means 39d implement a fourth bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the previous value of the third state variable B n -I . Since the permutation keys used to parameterize the permutation function P in the bijective permutation means 39a, 39b, 39c and 39d are independent of the data on which the resulting permutation function P is applied, they each implement an invertible function ( bijective), whose inverse function is a permutation function P "1. This invertible function P results from the application of m successive permutations of size m (p = e = m), selected according to the value of each bit of the permutation key considered.
Ainsi, selon ce mode de chiffrement, le calcul d'un mot de sortie courant Yn lors d'une itération n comporte les opérations suivantes. Le premier moyen de permutation 39a calcule un premier mot intermédiaire Gm en appliquant la première permutation bijective sur un couple formé par le mot d'entrée courant Un et une valeur précédente An-I de la deuxième variable d'état : Gm = P(Un, An-I). Autrement dit, le premier moyen de permutation 39a calcule le premier mot intermédiaire Gm en appliquant la fonction de permutation P bijective paramétrée par An-I sur le mot d'entrée courant Un.Thus, according to this encryption mode, the computation of a current output word Y n during an iteration n comprises the following operations. The first permutation means 39a calculates a first intermediate word Gm by applying the first bijective permutation on a pair formed by the current input word U n and a previous value A n - I of the second state variable: Gm = P (U n , A nI ). In other words, the first permutation means 39a calculates the first intermediate word Gm by applying the permutation function P bijective parameterized by A n- I on the current input word U n .
La première porte ou-exclusif 41a calcule un deuxième mot intermédiaire G2n en appliquant une opération ou-exclusif entre le premier mot intermédiaire Gin et la valeur précédente An-I de la deuxième variable d'état : G2n = Gm Φ K i-The first exclusive-OR gate 41a calculates a second intermediate word G2n by applying an exclusive-or operation between the first intermediate word G n and the previous value A n - I of the second state variable: G 2n = Gm Φ K i -
Le deuxième moyen de permutation 39b calcule un troisième mot intermédiaire G3n en appliquant la deuxième permutation bijective sur un couple formé par le deuxième mot intermédiaire G2n et une valeur précédente Xn-I de la première variable d'état : G3n = P(G2n, Xn-O- Autrement dit, le deuxième moyen de permutation 39b calcule le troisième mot intermédiaire G3n en appliquant la fonction de permutation bijective P paramétrée par Xn-I sur le deuxième mot intermédiaire G2n.The second permutation means 39b calculates a third intermediate word G 3 n by applying the second bijective permutation on a pair formed by the second intermediate word G 2n and a previous value X n -I of the first state variable: G 3n = P (G 2n X n -O- other words, the second permutation means 39b calculates the third intermediate word G 3 n by applying bijective permutation function P parameterized by n I X on the second intermediate word G 2n.
La porte ou-exclusif centrale 41b calcule la valeur intermédiaire courante Xa en appliquant une opération ou-exclusif entre le troisième mot intermédiaire G3n et la valeur précédente Xn-I de la première variable d'état : Xα = G3π Φ Xn-. • Cette valeur intermédiaire courante Xα est ensuite transmise au générateur 1 pseudo-aléatoire.The central exclusive-or-gate 41b calculates the current intermediate value Xa by applying an exclusive-or-operation between the third intermediate word G 3 n and the previous value X nI of the first state variable: X α = G3π Φ X n - . This current intermediate value X α is then transmitted to the pseudo-random generator 1.
Ensuite, le troisième moyen de permutation 39c calcule un quatrième mot intermédiaire G4n en appliquant la troisième permutation bijective sur un couple formé par la valeur intermédiaire courante X« et la valeur précédente Xn-I de la première variable d'état : G4n = P(X«, Xn-i).Next, the third permutation means 39c calculates a fourth intermediate word G 4 n by applying the third bijective permutation on a pair formed by the current intermediate value X "and the previous value X n- I of the first state variable: G 4n = P (X ", X n -i).
Autrement dit, le troisième moyen de permutation 39c calcule le quatrième mot intermédiaire G4n en appliquant la fonction de permutation bijective P paramétrée par Xn-I sur la valeur intermédiaire courante X«. La troisième porte ou-exclusif 41c calcule un cinquième mot intermédiaire Gsn en appliquant une opération ou-exclusif entre le quatrième mot intermédiaire G4n et la valeur précédente Bn-I de la troisième variable d'état ; Gsn = G4n Φ Bn-I.In other words, the third permutation means 39c calculates the fourth intermediate word G 4n by applying the bijective permutation function P parameterized by X nI to the current intermediate value X ". The third or exclusive-gate 41c calculates a fifth intermediate word Gs n by applying an exclusive-or-operation between the fourth intermediate word G4n and the previous value B n - I of the third state variable; Gs n = G4n Φ B n -I.
Finalement, le quatrième moyen de permutation 39d calcule le mot de sortie courant Yn en appliquant la quatrième permutation bijective sur un couple formé par le cinquième mot intermédiaire Gsn et une valeur précédente Bn-I de la troisième variable d'état: Yn = P(Gsn, Bn-i). Autrement dit, le quatrième moyen de permutation 39d calcule le mot de sortie courant Yn en appliquant la fonction de permutation bijective P paramétrée par Bn-I sur le cinquième mot intermédiaire Gsn. La figure 6A illustre le dispositif de chiffrement lors d'un mode de déchiffrement dans lequel la séquence de données d'entrée correspond à un message chiffré et la succession de mots de sorties correspond à un message clair.Finally, the fourth permutation means 39d calculates the current output word Y n by applying the fourth bijective permutation on a pair formed by the fifth intermediate word Gs n and a previous value B n -I of the third state variable: Y n = P (Gs n , B n -i). In other words, the fourth means of permutation 39d calculates the current output word Y n by applying bijective permutation function P set in B n - I on the fifth intermediate word Gs n. FIG. 6A illustrates the encryption device during a decryption mode in which the input data sequence corresponds to an encrypted message and the succession of output words corresponds to a clear message.
Selon ce mode de déchiffrement le calcul d'un mot de sortie courant Un lors d'une itération n comporte les opérations suivantes:According to this decryption mode, the computation of a current output word U n during an iteration n comprises the following operations:
Le quatrième moyen de permutation 39d calcule un cinquième mot intermédiaire Gsn en appliquant une permutation inverse de la quatrième permutation bijective sur un couple formé par un mot d'entrée courant Yn et la valeur précédente Bn-I de la troisième variable d'état : Gsn = F1CYn, Bn-1).The fourth permutation means 39d calculates a fifth intermediate word Gs n by applying an inverse permutation of the fourth bijective permutation on a pair formed by a current input word Y n and the previous value B n -I of the third variable of state: Gs n = F 1 CY n , B n-1 ).
La troisième porte ou-exclusif 41c calcule un quatrième mot intermédiaire G4n en appliquant une opération ou-exclusif entre le cinquième mot intermédiaire Gsn et la valeur précédente Bn-I de la troisième variable d'état : G4n = Gsn θ Bn-I. Le troisième moyen de permutation 39c calcule la valeur intermédiaire courante X« en appliquant une permutation inverse de la troisième permutation bijective sur un couple formé par le quatrième mot intermédiaire G4n et la valeur précédente Xn-1 de la première variable d'état : X« = P^(G4n, Xn-i)- Cette valeur intermédiaire courante Xα est ensuite transmise au générateur pseudo-aléatoire.The third or exclusive-gate 41c calculates a fourth intermediate word G 4n by applying an exclusive-or-operation between the fifth intermediate word Gs n and the previous value B n -I of the third state variable: G 4n = Gs n θ B n -I. The third permutation means 39c calculates the current intermediate value X "by applying an inverse permutation of the third bijective permutation on a pair formed by the fourth intermediate word G 4n and the previous value X n-1 of the first state variable: X "= P ^ (G 4n , Xn-i) - This current intermediate value X α is then transmitted to the pseudo-random generator.
La porte ou-exclusif centrale 41b calcule un troisième mot intermédiaire G3n en appliquant une opération ou-exclusif entre la valeur intermédiaire courante X« et la valeur précédente Xn-I de la première variable d'état : G3n = X« Φ Xn -i. Le deuxième moyen de permutation 39b calcule un deuxième mot intermédiaire G2n en appliquant une permutation inverse de la deuxième permutation bijective sur un couple formé par le troisième mot intermédiaire G3n et la valeur précédente Xn-I de la première variable d'état : G2n = F1CG3n, Xn-i).The central exclusive-or-gate 41b calculates a third intermediate word G 3 n by applying an exclusive-or-operation between the current intermediate value X "and the previous value X n -I of the first state variable: G 3n = X" Φ X n -i. The second permutation means 39b calculates a second intermediate word G 2 n by applying an inverse permutation of the second bijective permutation on a pair formed by the third intermediate word G 3 n and the previous value X n -I of the first state variable: G 2n = F 1 CG 3n , Xn-i).
La première porte ou-exclusif 41a calcule un premier mot intermédiaire Gm en appliquant une opération ou-exclusif entre le deuxième mot intermédiaire G2n et la valeur précédente An-I de la deuxième variable d'état : Gm = G2n Φ An-I.The first or exclusive-gate 41a calculates a first intermediate word Gm by applying an exclusive-or-operation between the second intermediate word G 2n and the previous value A n -I of the second state variable: Gm = G 2n Φ A n -I.
Finalement, le premier moyen de permutation 39a calcule le mot de sortie courant Un en appliquant une permutation inverse de la première permutation bijective sur un couple formé par le premier mot intermédiaire Gm et la valeur précédente An-I de la deuxième variable d'état : Un = F1CGm, An-O-Finally, the first permutation means 39a calculates the current output word U n by applying an inverse permutation of the first bijective permutation on a pair formed by the first intermediate word Gm and the previous value A nI of the second state variable: U n = F 1 CGm, A n -O-
Ainsi, selon les exemples des figures 5A et 6A, les fonctions ou moyens d'isolement 35a et 35b sont composés chacunCe) de deux fonctions de permutation Cpermutations bijectives au sens de l'invention) paramétrées par An-I et Xn-I pour le premier moyen d'isolement 35a, et par Bn-I et Xn-I pour le deuxième moyen d'isolement 35b, et d'un ou exclusif avec An-I pour le premier moyen d'isolement 35a et avec Bn-I pour le deuxième moyen d'isolement 35b. La valeur intermédiaire courante X« est donc isolée des mots d'entrée et de sortie Cc'est-à-dire non accessible depuis les mots d'entrée et de sortie) au milieu de quatre fonctions de permutations paramétrées par An-I, Xn-I et Bn-I, et trois ou-exclusifs avec les variables d'état An-I, Xn-I et Bn-I, du vecteur d'état V, lui-même isolé des entrées et des sorties. Ceci correspond à un auto-isolement du vecteur d'état V.Thus, according to the examples of Figures 5A and 6A, functions or means 35a and 35b are composed isolation chacunCe) of two functions bijective permutation Cpermutations within the meaning of the invention) set by A n - X n and I - I for the first isolation means 35a, and B nI and X nI for the second isolation means 35b, and one or exclusive with A n - I for the first isolation means 35a and with B n - I for the second isolation means 35b. The current intermediate value X "is therefore isolated from the input words and output Cc'est ie not accessible from the input and output words) in the middle of four permutations functions parameterized by A n -I, X n and B n -I -I, and three exclusive-or with the state variables Ni, X and B nI nI, the V state vector, itself isolated inputs and outputs . This corresponds to a self-isolation of the state vector V.
Les figures 5B et 6B illustrent de façon similaire des modes de chiffrement et de déchiffrement d'une séquence de données d'entrée lorsque le générateur pseudo-aléatoire 1 de la figure 3B est utilisé. En variante, d'autres générateurs pseudo-aléatoires à état pourraient être utilisés.Figs. 5B and 6B similarly illustrate encryption and decryption modes of an input data sequence when the pseudo-random generator 1 of Fig. 3B is used. Alternatively, other pseudo-random state generators could be used.
Par ailleurs, dans une variante de réalisation, Ia complexité des opérations de chiffrement/déchiffrement peut être augmentée davantage en remplaçant chacune des variables d'état An, Bn et Xn par deux sous- variables de taille identique (sections au sens de (Invention), respectivement An' et An" pour An, Bn' et Bn" pour Bn et Xn' et Xn" pour Xn. Les sous-variables An', Bn' et Xn' peuvent être utilisées pour paramétrer les permutations P et P"1 et les sous-variables An", Bn" et Xn" peuvent être utilisés pour le calcul des opérations ou-exclusif.Moreover, in an alternative embodiment, the complexity of the encryption / decryption operations can be further increased by replacing each of the state variables A n , B n and X n by two sub-variables of identical size (sections in the sense of (Invention), respectively A n 'and A n "for A n , B n ' and B n " for B n and X n 'and X n "for X n The sub-variables A n ', B n 'and X n 'can be used to set the permutations P and P "1 and the sub-variables A n ", B n "and X n " can be used for the calculation of operations or-exclusive.
Dans une autre variante de réalisation, les sous-variables d'état respectives An' et An" pour An, Bn' et Bn" pour Bn et Xn' et Xn" pour Xn peuvent ne pas être contigϋes et de taille m chacune. Par exemple on peut prendre :In another variant embodiment, the respective state sub-variables A n 'and A n "for A n , B n ' and B n " for B n and X n 'and X n "for X n may not be contiguous and of size m each, for example we can take:
Vn ={X 'n A\ B\ X \ A\ B\ ...)V n = {X ' n A \ B \ X \ A \ B \ ...)
Dans une autre variante encore, chaque variable d'état peut comprendre m bits non nécessairement consécutifs du vecteur d'état V, et occupant des positions prédéterminées à l'avance par exemple.In yet another variant, each state variable may comprise m non-necessarily consecutive bits of the state vector V, and occupying predetermined positions in advance, for example.
Utilisation de plusieurs générateurs pseudo-aléatoires en parallèleUsing multiple pseudo-random generators in parallel
Par ailleurs, on notera qu'il est possible, dans un mode particulier de réalisation de l'invention, dimplémenter plusieurs générateurs en parallèle pour un même module de chiffrement/déchiffrement.Furthermore, it will be noted that it is possible, in a particular embodiment of the invention, to implement several generators in parallel for the same encryption / decryption module.
A titre d'exemple, la figure 4 illustre un dispositif de chiffrement 107 (pouvant être utilisé de façon similaire au dispositif de chiffrement 7 en mode chiffrement et/ou en mode déchiffrement) comportant deux générateurs 101, 102 pseudo-aléatoires, similaires à celui décrit dans le premier exemple de réalisation en référence à la figure 3A (en variante d'autres générateurs pseudo-aléatoires peuvent être considérés comme par exemple, deux générateurs pseudo-aléatoires similaires au générateur représenté sur la figure 3B), et un module 17 de chiffrement/déchiffrementBy way of example, FIG. 4 illustrates an encryption device 107 (which can be used in a similar way to the encryption device 7 in encryption mode and / or in decryption mode) comprising two pseudo-random generators 101, 102, similar to that described in the first exemplary embodiment with reference to FIG. 3A (alternatively other pseudo-random generators can be considered as for example two pseudorandom generators similar to the generator shown in FIG. 3B), and a module 17 of FIG. encryption / decryption
Le premier générateur 101 pseudo-aléatoire forme une première valeur courante Vln d'un premier vecteur d'état Vl et le deuxième générateur 102 pseudo-aléatoire forme une deuxième valeur courante V2n d'un deuxième vecteur d'état V2.The first pseudo-random generator 101 forms a first current value Vl n of a first state vector Vl and the second pseudo-random generator 102 forms a second current value V2 n of a second state vector V2.
Les deux générateurs 101, 102 pseudo-aléatoires peuvent être combinés entre eux en parallèle au moyen par exemple, d'une porte ou- exclusif. Dans ce cas, la valeur courante Vn du vecteur d'état est le résultat d'une opération ou-exclusif entre la première valeur courante Vln du premier vecteur d'état et la deuxième valeur courante V2n du deuxième vecteur d'état. On notera que toute autre combinaison est possible, par exemple, la valeur courante Vn du vecteur d'état issus des deux générateurs 101, 102 pseudo-aléatoire peut être composé d'une première section provenant de la première valeur courante Vln du premier vecteur d'état, d'une deuxième section provenant de la deuxième valeur courante V2n du deuxième vecteur d'état, et d'une troisième section provenant d'une combinaison quelconque entre des sections correspondantes des première et deuxième valeurs courantes Vln, V2n des premier et deuxième vecteurs d'état.The two pseudo-random generators 101, 102 may be combined with one another in parallel by means of, for example, an exclusive-or-gate. In this case, the current value V n of the state vector is the result of an exclusive-or-operation between the first current value Vl n of the first state vector and the second current value V2 n of the second state vector. . Note that any other combination is possible, by for example, the current value V n of the state vector derived from the two pseudo-random generators 101, 102 may be composed of a first section originating from the first current value Vl n of the first state vector, of a second section from the second current value V2 n of the second state vector, and a third section from any combination between corresponding sections of the first and second current values Vl n , V2 n of the first and second state vectors .
Plus particulièrement, dans l'exemple de la figure 4, le premier générateur 101 pseudo-aléatoire est alimenté par une première valeur initiale VIo et génère une première valeur courante Vln d'un premier vecteur d'état Vln comprenant au moins une première valeur courante Xln de la première variable d'état Xl, une première valeur courante Aln de la deuxième variable d'état Al, et une première valeur courante Bln de la troisième variable d'état Bl. En outre, le deuxième générateur 102 pseudo-aléatoire est alimenté par une deuxième valeur initiale V2o et génère une deuxième valeur courante V2n d'un deuxième vecteur d'état V2n comprenant au moins une deuxième valeur courante X2n de la première variable d'état X2, une deuxième valeur courante A2n de la deuxième variable d'état A2, et une deuxième valeur courante B2n de la troisième variable d'état B2.More particularly, in the example of FIG. 4, the first pseudo-random generator 101 is powered by a first initial value VIo and generates a first current value Vl n of a first state vector Vl n comprising at least a first current value X1 n of the first state variable X1, a first current value A1 n of the second state variable A1, and a first current value B1 n of the third state variable B1. In addition, the second generator Pseudo-random is fed by a second initial value V2o and generates a second current value V2 n of a second state vector V2 n comprising at least a second current value X2 n of the first state variable X2, a second current value A2 n of the second state variable A2, and a second current value B2 n of the third state variable B2.
Selon cet exemple particulier, la valeur précédente Vn-I du vecteur d'état transmise au module 17 de chiffrement/déchiffrement est formée par une valeur précédente Xn-I de la première variable d'état X résultant d'une opération ou-exclusif entre la première valeur précédente Xln-I de la première variable d'état Xl du premier vecteur d'état et la deuxième valeur précédente X2n-i de la première variable d'état X2 du deuxième vecteur d'état, une valeur précédente An-I=Aln-I de la deuxième variable d'état Al provenant du premier vecteur d'état et une valeur précédente de la troisième variable d'état B2 provenant du deuxième vecteur d'état. Par ailleurs, les deux générateurs 101, 102 pseudo-aléatoire sont alimentés par la même valeur intermédiaire courante Xκ issue du module 107 de chiffrement/déchiffrement.According to this particular example, the previous value V n - I of the state vector transmitted to the module 17, encryption / decryption is formed by a previous value X n - I of the first state variable X resulting from an operation or- exclusive between the first previous value X1 n - I of the first state variable X1 of the first state vector and the second previous value X2 n-1 of the first state variable X2 of the second state vector, a value previous A n - I = Al n - I of the second state variable Al from the first state vector and a previous value the third state variable B2 from the second state vector. Moreover, the two generators 101, 102 pseudo-random are fed by the same current intermediate value X κ from the module 107 of encryption / decryption.
Ainsi, d'une manière générale, il est possible d'implémenter h générateurs pseudo-aléatoires en parallèle (i = 1 à h) pour un même module de chiffrement/déchiffrement. Les h générateurs pseudo- aléatoires sont alors tous alimentés par une même valeur intermédiaire courante X« issue du module de chiffrement/déchiffrement. Les h générateurs peuvent être de tailles identiques ou différentes ki,...,kh. Leurs valeurs initiales Vlo,...,Vho peuvent être extraites ou calculées à partir d'une même clé de chiffrement/déchiffrement commune dont Ia taille est égale au max de ki,....,kh. Les valeurs de An et Bn peuvent provenir d'un même générateur ou bien de générateurs différents. Xn peut correspondre au résultat d'une combinaison par des ou-exclusifs de l'ensemble des Xin respectifs : Xn = Xln Φ X2n Φ....Φ Xhn. Bien entendu, les différente générateurs pseudo-aléatoires en parallèles peuvent être utilisés indépendamment du module de chiffrement/déchiffrement pour générer une séquence de données pseudo-aléatoire d'une grande qualité.Thus, in general, it is possible to implement pseudo-random generators in parallel (i = 1 to h) for the same encryption / decryption module. The pseudo generators random are then all fed by the same current intermediate value X "from the encryption / decryption module. The h generators can be of identical or different sizes ki, ..., kh. Their initial values Vlo, ..., Vho can be extracted or calculated from the same common encryption / decryption key whose size is equal to the max of ki, ...., kh. The values of A n and B n can come from the same generator or from different generators. X n can correspond to the result of a combination by or-exclusives of the set of Xi n respectively: X n = Xl n Φ X2 n Φ .... Φ Xh n . Of course, the different pseudo-random generators in parallel can be used independently of the encryption / decryption module to generate a pseudo-random data sequence of high quality.
Variation du nombre de bits des mots d'entrée et de sortieVariation of the number of bits of the input and output words
Selon les exemples précédents, Ie vecteur d'état comprend un nombre k déterminé de bits et chaque mot de sortie ou d'entrée comprend un nombre m déterminé de bits inférieur au nombre k déterminé de bits du vecteur d'état. Avantageusement, dans un mode de réalisation particulier de l'invention, chaque mot de sortie ou d'entrée peut comprendre un nombre w variable de bits pouvant varier à chaque itération tout en étant inférieur audit nombre k déterminé de bits du vecteur d'état.According to the preceding examples, the state vector comprises a determined number k of bits and each output or input word comprises a determined number m of bits smaller than the determined number k of bits of the state vector. Advantageously, in a particular embodiment of the invention, each output or input word may comprise a variable number w of bits that may vary at each iteration while being less than said determined number k of bits of the state vector.
En effet, la figure 7 illustre un dispositif de chiffrement d'un nombre w variable de bits conforme à l'invention dans un tel mode de réalisation. Le générateur pseudo-aléatoire considéré sur cette figure est celui représentée sur Ia figure 3A. Bien entendu, un autre générateur pseudo-aléatoire, tel que par exemple celui représenté sur la figure 3B, pourrait être considéré en variante. Dans ce cas, le vecteur d'état V peut avantageusement comporter une quatrième variable d'état E indiquant ce nombre w variable de bits à chaque itération pour adapter les permutations (notamment la taille e des permutations et le nombre d'étages p de permutation considérés) et opérateurs ou-exclusifs réalisés par les moyens de permutation et portes ou-exclusifs du module 17 de chiffrement/déchiffrement à ce nombre w variable. Ainsi, les fonctions de permutations P (pour le chiffrement), P"1 (pour le déchiffrement) et l'opérateur ou-exclusif « Φ » utilisés par le module 17 de chiffrement/déchiffrement sont adaptables à des mots d'entrée et de sortie Un/Yn de longueur w quelconque (w < m <k). Sous réserve de préétablir des tables de permutation correspondant à toutes les valeurs de w envisageables pour mettre en œuvre les fonctions de permutation P et P"1, et d'effectuer les αu-exclusifs avec les w premiers bits des variables d'état An-I, Xn-I et Bπ-i, il est possible de découper les données d'entrée en blocs de taille w variable et d'effectuer le chiffrement et/ou le déchiffrement de ces blocs par le module 17 de chiffrement/déchiffrement.Indeed, FIG. 7 illustrates an encryption device of a variable bit number w according to the invention in such an embodiment. The pseudo-random generator considered in this figure is that represented in FIG. 3A. Of course, another pseudo-random generator, such as for example that shown in Figure 3B, could be considered alternatively. In this case, the state vector V may advantageously comprise a fourth state variable E indicating this variable number w of bits at each iteration to adapt the permutations (in particular the size e of the permutations and the number of stages of permutation p considered) and operators or exclusive-made by means of permutation and gates or exclusive-or of the module 17 of encryption / decryption to this variable number w. Thus, the permutation functions P (for encryption), P "1 (for decryption) and the exclusive-operator" Φ "used by the encryption / decryption module 17 are adaptable to input and output words. output U n / Y n of any length w (w <m <k), subject to pre-establishing permutation tables corresponding to all the values of w that can be envisaged to implement the permutation functions P and P "1 , and to perform the αu-exclusives with the first w bits of the state variables A n -I, X n -I and B π -i, it is possible to split the input data into blocks of variable size w and perform the encryption and / or decryption of these blocks by the encryption / decryption module 17.
Le paramètre indiquant le nombre w de bits d'entrée à chiffrer et/ou à déchiffrer lors de l'itération n est fourni par la valeur précédente En-I du quatrième variable d'état E. Cette quatrième variable d'état E est une section de taille r du vecteur d'état, isolé des entrées et des sorties et dépendant de la clé de chiffrement/déchiffrement et de l'intégralité de la séquence des mots d'entrées UnZYn appliquées.The parameter indicating the number w of input bits to be encrypted and / or decrypted during the iteration n is provided by the previous value E n - I of the fourth state variable E. This fourth state variable E is a size section r of the state vector, isolated from the inputs and outputs and depending on the encryption / decryption key and the entire sequence of input words U n ZY n applied.
Ainsi, lors de l'itération n, la taille Wn-1 du bloc à traiter est transmis au mot d'entrée UnPfn ou mot de sortie Yn/Un ainsi qu'aux moyens de permutation 39a-39d et portes logiques 41a-41c pour dimensionner les permutations et les ou-exclusifs.Thus, during iteration n, the size W n-1 of the block to be processed is transmitted to the input word U n Pf n or output word Y n / U n as well as to the permutation means 39a-39d and logic gates 41a-41c for sizing the permutations and or-exclusives.
Le nombre de bits chiffrés à chaque itération est donc pseudoaléatoire, dépendant de la clé de chiffrement/déchiffrement et de l'intégralité de la séquence des mots d'entrée Un/Yn appliquées. La moindre modification de la séquence des mots d'entrée Un/Yn entraîne donc systématiquement une modification de l'intégralité du découpage des données postérieur à cette modification.The number of bits encrypted at each iteration is therefore pseudo-random, depending on the encryption / decryption key and the entire sequence of input words U n / Y n applied. The slightest modification of the sequence of the input words U n / Y n therefore systematically involves a modification of the entirety of the data division subsequent to this modification.
Afin d'extraire le nombre w de bits à chiffrer/déchiffrer lors de l'itération n de la valeur précédente En-I du quatrième variable d'état E, on peut affecter à w la valeur décimale codée sur les r bits de la valeur précédente En-I de la quatrième variable d'état ; 0 < w < 2r -1 (= m). En variante, on peut affecter à w la valeur du nombre de bits à 1 dans la valeur précédente En-1 du quatrième variable d'état : 0 < w < r (= m).In order to extract the number w of bits to be encrypted / decrypted during the iteration n of the previous value E n - I of the fourth state variable E, we can assign to w the decimal value coded on the r bits of the previous value E n - I of the fourth state variable; 0 <w <2 r -1 (= m). As a variant, the value of the number of bits at 1 in the previous value E n-1 of the fourth state variable can be assigned w: 0 <w <r (= m).
On notera que par convention, et quelle que soit la valeur initiale Eo du quatrième variable d'état E, on fixe dans l'exemple décrit ici le nombre de bits initial Wo=I. Ainsi, lors de la première itération, on chiffre/déchiffre systématiquement un seul bit.It will be noted that by convention, and whatever the initial value Eo of the fourth state variable E, is fixed in the example described here the initial number of bits Wo = I. Thus, during the first iteration, systematically decrypts / decrypts a single bit.
Avantageusement, afin de ne pas laisser fuir d'information concernant le découpage effectué (par observation des entrées et des sorties du module de chiffrement par exemple), on peut regrouper les mots de sortie Yn/Un de façon à libérer en sortie des blocs de longueur constant m uniquement. On peut utiliser la même précaution pour les mots d'entrée Un/Yn lors du déchiffrement.Advantageously, in order not to let information about the division performed (by observing the inputs and outputs of the encryption module for example), we can group the output words Yn / U n so as to release blocks of constant length m only. The same precaution can be used for the input words Un / Y n during decryption.
La figure 8 illustre un dispositif de chiffrement (pouvant être utilisé pour le chiffrement et/ou le déchiffrement comme celui représenté sur la figure 7) comportant un générateur 1 pseudo-aléatoire tel que représenté sur la figure 3A, qui comprend des moyens supplémentaires pour calculer selon une application non inversible dépendant de la valeur courante du vecteur d'état, une nouvelle valeur d'état courante remplaçant la valeur courante du vecteur d'état. Ces moyens supplémentaires permettent au générateur pseudo-aléatoire 1 d'effectuer des itérations à vide sur le vecteur d'état V en fonction de la valeur w indiquée par la quatrième variable d'état E.FIG. 8 illustrates an encryption device (which can be used for encryption and / or decryption as that represented in FIG. 7) comprising a pseudo-random generator 1 as represented in FIG. 3A, which comprises additional means for calculating in a non-invertible application dependent on the current value of the state vector, a new current state value replacing the current value of the state vector. These additional means enable the pseudo-random generator 1 to carry out empty iterations on the state vector V as a function of the value w indicated by the fourth state variable E.
Le générateur pseudo-aléatoire 1 comprend ainsi un quatrième moyen de calcul 45 comportant des moyens de permutation surjective supplémentaires. Ainsi, l'étape de génération pseudo-aléatoire de chaque itération comporte lorsque le nombre w variable est égal à zéro, l'application par le quatrième moyen de calcul 45 d'une permutation surjective sur la valeur courante Vn du vecteur d'état (fonction de permutation P paramétrée par une clé de permutation égale au vecteur Vn) pour former une valeur courante d'un second vecteur d'état intermédiaire supplémentaire V2,ns. Cette valeur courante du second vecteur d'état intermédiaire supplémentaire V2,ns remplace alors la valeur courante Vn du vecteur d'état V. Selon une variante, le générateur 1 pseudo-aléatoire comporte éventuellement un cinquième moyen de calcul 47 comprenant une porte ou-exclusif 47a supplémentaire permettant de calculer une nouvelle valeur courante Vtemp du vecteur d'état en appliquant une opération ou-exclusif entre la valeur courante du second vecteur d'état intermédiaire supplémentaire V2,ns et la valeur courante Vn du vecteur d'état. Cette nouvelle valeur courante Vtemp du vecteur d'état remplace alors la valeur courante Vn du vecteur d'état.The pseudo-random generator 1 thus comprises a fourth calculation means 45 comprising additional surjective permutation means. Thus, the step of pseudo-random generation of each iteration comprises when the variable number w is equal to zero, the application by the fourth calculation means 45 of a surjective permutation on the current value V n of the state vector (permutation function P parameterized by a permutation key equal to the vector V n ) to form a current value of a second additional intermediate state vector V2, ns . This current value of the second additional intermediate state vector V2, ns then replaces the current value V n of the state vector V. According to one variant, the pseudo-random generator 1 optionally comprises a fifth calculation means 47 comprising a gate or -exclusive additional 47a for calculating a new current value V temp of the state vector by applying an exclusive-or-operation between the current value of the second additional intermediate state vector V2, ns and the current value V n of the vector of state. This new current value V tem p of the state vector then replaces the current value V n of the state vector.
Ainsi, la figure 8 montre que lorsque l'on détermine que w = O, le générateur 1 pseudo-aléatoire effectue des itérations « à vide » sur le vecteur d'état V tant que w reste à 0, sans incorporer la valeur intermédiaire courante Xα dans le vecteur d'état V puisque aucune opération de chiffrement/déchiffrement sur les mots d'entrée Un/Yn ou sortie Yn/Un n'est effectuée (autrement dit, on chiffre/déchiffre 0 bits).Thus, FIG. 8 shows that when it is determined that w = 0, the pseudo-random generator 1 performs "empty" iterations on the state vector V as long as w remains at 0, without incorporating the current intermediate value. X α in the state vector V since no encryption / decryption operation on the input words U n / Y n or output Yn / Un is performed (in other words, one digit / decrypts 0 bits).
Plus particulièrement, avant le démarrage d'un procédé de chiffrement, la valeur de la clé de chiffrement devient la valeur initiale Vo du vecteur d'état V : V0 = clé de chiffrement et W0=I.More particularly, before starting an encryption method, the value of the encryption key becomes the initial value Vo of the state vector V: V 0 = encryption key and W 0 = I.
A la première itération, le module 17 de chiffrement/déchiffrement prend le premier bit du mot d'entrée Ui à chiffrer et calcule la valeur du premier bit du mot de sortie Yi chiffré en fonction de Ui et de la valeur initiale V0 du vecteur d'état V. En outre, le générateur 1 pseudo-aléatoire calcule une première valeur Vi du vecteur d'état V en fonction de Ui et V0.At the first iteration, the encryption / decryption module 17 takes the first bit of the input word Ui to be encrypted and calculates the value of the first bit of the output word Yi encoded as a function of Ui and the initial value V 0 of the vector In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of U i and V 0 .
Par extension, à la n'eme itération, si le générateur pseudoaléatoire 1 détecte que le générateur 1 pseudo-aléatoire effectue des itérations « à vide » sur la valeur précédente Vn-I du vecteur d'état, By extension, the n 'th iteration, if the pseudo-random generator 1 detects that the pseudo-random generator 1 performs "empty" iterations on the previous value V n -I of the state vector,
En revanche, si wn-i≠0, le module 17 de chiffrement/déchiffrement prend les wn-i bits suivants des données à chiffrer (bloc Un) et calcule la valeur du mot de sortie Yn en fonction de Un et Vn-I. En outre, le générateur 1 pseudo-aléatoire calcule une nouvelle valeur Vn du vecteur d'état V, en fonction de Un et Vn-I.On the other hand, if w n -i ≠ 0, the encryption / decryption module 17 takes the following w n- i bits of data to be encrypted (block U n ) and calculates the value of the output word Y n as a function of U n and V n -I. In addition, the pseudo-random generator 1 calculates a new value V n of the state vector V, as a function of U n and V n - I.
De manière symétrique, avant le démarrage d'un procédé de déchiffrement, la valeur de la clé de déchiffrement devient la valeur initiale V0 du vecteur d'état V : Vo = clé de déchiffrement et W0=I. A la première itération, le module 17 de chiffrement/déchiffrement prend le premier bit du mot d'entrée Yi à déchiffrer et calcule la valeur du premier bit du mot de sortie Ui déchiffré en fonction de Yi et de la valeur initiale V0 du vecteur d'état V. En outre, le générateur 1 pseudo-aléatoire calcule une première valeur Vi du vecteur d'état V en fonction de Yi et V0. Par extension, à Ia nιeme itération, si Ie générateur pseudo- aléatoire 1 détecte que wn-i=O, le générateur 1 pseudo-aléatoire effectue des itérations « à vide » sur la valeur précédente VVi du vecteur d'état, En revanche, si wn-i≠Q, le module 17 de chiffrement/déchiffrement prend les wn-i bits suivants des données à déchiffrer (bloc Yn) et calcule la valeur du mot de sortie Un en fonction de Yn et Vn-I. En outre, le générateur 1 pseudo-aléatoire calcule une nouvelle valeur Vn du vecteur d'état V, en fonction de Yn et Vn-I. Ainsi, les opérations de l'exemple de la figure 8 font que les itérations effectuées sur le générateur 1 pseudo-aléatoire se désynchronisent des itérations effectuées par le module 17 de chiffrement/déchiffrement, en fonction d'une variable pseudo-aléatoire non-accessible (quatrième variable d'état E), de la clé de chiffrement/déchiffrement et de l'intégralité de la séquence des mots d'entrée Un/Yn appliquées. La moindre modification de la séquence des mots entrée Un/Yn entraîne donc systématiquement une modification de l'intégralité du découpage des données postérieur à cette modification et donc une modification de la façon dont le générateur 1 pseudo-aléatoire se désynchronise du module 17 de chiffrement/déchiffrement.In a symmetrical manner, before the start of a decryption process, the value of the decryption key becomes the initial value V 0 of the state vector V: Vo = decryption key and W 0 = I. At the first iteration, the encryption / decryption module 17 takes the first bit of the input word Yi to be decrypted and calculates the value of the first bit of the output word Ui decrypted as a function of Yi and the initial value V 0 of the vector In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of Y 1 and V 0 . By extension, at the nth iteration, if the pseudo-random generator 1 detects that w n -i = 0, the pseudo-random generator 1 performs "empty" iterations on the previous value VVi of the state vector, On the other hand, if w n -i ≠ Q, the encryption / decryption module 17 takes the following w n -i bits of data to be decrypted (block Y n ) and calculates the value of the output word U n as a function of Y n and V n - I. In addition, the pseudo-random generator 1 calculates a new value V n of the state vector V, as a function of Y n and V n - I. Thus, the operations of the example of FIG. 8 make the iterations performed on the pseudo-random generator 1 desynchronize the iterations performed by the encryption / decryption module 17, as a function of a non-accessible pseudo-random variable. (fourth state variable E), the encryption / decryption key and the entire sequence of input words U n / Yn applied. Any modification of the sequence of the input words U n / Y n therefore systematically entails a modification of the entirety of the splitting of the data subsequent to this modification and therefore a modification of the way in which the pseudo-random generator 1 desynchronizes from the module 17 encryption / decryption.
Par ailleurs, on notera qu'on peut faire varier la taille des blocs à chiffrer/déchiffrer sans avoir à traiter le cas où w=0 afin d'éviter la désynchronisation des flux et les cycles à vide, on convient alors de chiffrer/déchiffrer systématiquement un seul bit lorsque w=0. II est aussi possible de ne conserver que la fonctionnalité de désynchronisation des flux, sans faire varier la taille des blocs à chiffrer/déchiffrer. On effectue alors un cycle à vide sur le générateur 1 pseudo-aléatoire si w=0 tandis que pour toute autre valeur de w, on chiffre/déchiffre un mot d'entrée Un/Yn ou de sortie Yn/Un de taille m fixe.Furthermore, it will be noted that the size of the blocks to be encrypted / decrypted can be varied without having to deal with the case where w = 0 in order to avoid the desynchronization of the flows and the empty cycles, it is then appropriate to encrypt / decipher systematically only one bit when w = 0. It is also possible to keep only the desynchronization function of the streams, without varying the size of the blocks to be encrypted / decrypted. An idle cycle is then performed on the pseudo-random generator 1 if w = 0, whereas for any other value of w, an input word U n / Y n or an output word Y n / U n of fixed m size.
Multiplexage cryptographiqueCryptographic multiplexing
Les différents modes de réalisation du procédé et dispositif de chiffrement selon l'invention peuvent être utilisés pour des applications du chiffrement par flot à haut débit (télécommunications, diffusion de contenu multimédia protégé, chiffrement à la volée de données sur serveurs, ordinateur personnel et applications logicielles etc.). En outre, la structure même du procédé de chiffrement lui permet des applications dans Ie domaine du multiplexage cryptographique.The various embodiments of the method and encryption device according to the invention can be used for applications of high speed stream encryption (telecommunications, broadcast of protected multimedia content, on-the-fly encryption of data on servers, personal computer and applications software etc.). In addition, the very structure of the encryption method allows it applications in the field of cryptographic multiplexing.
Les figures HA à HC illustrent différents exemples de multiplexages cryptographîques. D'une manière générale, un multiplexage cryptographique consiste à faire converger M messages clairs 71 à chiffrer vers un même dispositif 207a de chiffrement qui génère M messages chiffrés. Ces M messages chiffrés sont alors combinés et transmis par un même canal 73a (figure HA), ou transmis séparément par des canaux différents 73b (figure HB) à un utilisateur auquel ou à une application à laquelle ils sont destinés.Figures HA to HC illustrate various examples of cryptographic multiplexing. In general, a cryptographic multiplexing consists of converging M clear messages 71 to be encrypted to the same encryption device 207a which generates M encrypted messages. These M encrypted messages are then combined and transmitted by the same channel 73a (Figure HA), or transmitted separately by different channels 73b (Figure HB) to a user or an application for which they are intended.
La figure HC montre que des solutions mixtes peuvent être envisagées en fonction du nombre de canaux de transmission disponibles et des débits respectifs de chacun de ces canaux. Selon cet exemple, un premier canal 73c transmet un message chiffré unique et un second canal 73d transmet M-I messages chiffrés combinés.Figure HC shows that mixed solutions can be considered depending on the number of available transmission channels and the respective rates of each of these channels. In this example, a first channel 73c transmits a single encrypted message and a second channel 73d transmits M-I combined encrypted messages.
Un dispositif de chiffrement 207b utilisé en mode déchiffrement (appelé aussi dispositif de déchiffrement) reconstitue alors les M messages clairs 75 à partir des M messages chiffrés. Il est impossible de reconstituer un seul ou l'intégralité des M messages clairs si on ne dispose pas des M messages chiffrés. Cette solution permet de mutualiser l'application cryptographique tout en offrant une solution simple et efficace pour protéger de multiples contenus devant cheminer sur un ou plusieurs canaux non sécurisés. Le procédé de chiffrement selon l'invention permet d'effectuer le multiplexage cryptographique tel que décrit précédemment en utilisant un seul générateur pseudo-aléatoire dimensîonné en conséquence et M modules de chiffrement/déchiffrement en parallèle. Ceci permet une implémentation matérielle ou logicielle extrêmement simple, bénéficiant des performances de rapidité et de résistance à la cryptanalyse du procédé de chiffrement, ainsi que des fonctionnalités de blocs de taille variable, d'itérations à vide et de désynchronisation des flux, appliquées à M messages différents.An encryption device 207b used in decryption mode (also called decryption device) then reconstructs the M clear messages 75 from the M encrypted messages. It is impossible to reconstruct one or all of the M clear messages if the M encrypted messages are not available. This solution makes it possible to pool the cryptographic application while offering a simple and effective solution to protect multiple contents having to walk on one or more unsecured channels. The encryption method according to the invention makes it possible to carry out the cryptographic multiplexing as described above by using a single pseudo-random generator dimensioned accordingly and M modules of encryption / decryption in parallel. This allows an extremely simple hardware or software implementation, benefiting from the performance of speed and cryptanalysis resistance of the encryption method, as well as the variable size block, empty iteration and flow desynchronization functions, applied to M different messages.
En effet, la figure 12 illustre un dispositif de chiffrement (pouvant opérer en mode chiffrement et/ou déchiffrement) permettant de réaliser un multiplexage cryptographique et comportant un seul générateur 1 pseudo-aléatoire et deux modules 17a, 17b de chiffrement/déchiffrement en parallèle.Indeed, FIG. 12 illustrates an encryption device (able to operate in encryption and / or decryption mode) making it possible to perform a cryptographic multiplexing and comprising a single 1 pseudo-random generator and two modules 17a, 17b of encryption / decryption in parallel.
Dans ce cas, le générateur 1 pseudo-aléatoire calcule à chaque itération une valeur courante d'un vecteur d'état comportant un premier ensemble de sections de variables d'état et au moins un deuxième ensemble de sections de variables d'état.In this case, the pseudo-random generator 1 calculates at each iteration a current value of a state vector comprising a first set of state variable sections and at least a second set of state variable sections.
D'une manière générale, pour multiplexer M messages (M=2 sur la figure 12), la valeur courante Vn du vecteur d'état V du générateur 1 pseudo-aléatoire prend la forme suivante : Vn = (-Xln,Aln,Bln,Eln,-,X2n,A2n,B2n,E2n,-XMn,AMn,BMn,EMn,-)In general, to multiplex M messages (M = 2 in FIG. 12), the current value V n of the state vector V of the pseudo-random generator 1 takes the following form: V n = (-Xl n , Al n , Bl n , El n , -, X2 n , A2 n , B2 n , E2 n , -XM n , AM n , BM n , EM n , -)
Par ailleurs, le premier module 17a de chiffrement/déchiffrement calcule un premier mot de sortie courant Yln/ Uln selon une première application réversible dépendante d'un premier mot d'entrée courant Uln/Yln et du premier ensemble de sections Xln-I, Aln-I, Bln-I, Eln-I de la valeur précédente Vn-I du vecteur d'état. La valeur intermédiaire Xlα est transmise au générateur 1 pseudo-aléatoire.Moreover, the first encryption / decryption module 17a calculates a first current output word Y1 n / U1 n according to a first reversible application dependent on a first current input word U1 n / Y1 n and the first set of sections X1. n -I, Al n - I, Bl n - I, El n - I of the previous value V n -I of the state vector. The intermediate value Xl α is transmitted to the pseudo-random generator 1.
Le deuxième module 17b de chiffrement/déchiffrement calcul un deuxième mot de sortie courant Y2n/ U2n selon une deuxième application réversible dépendante d'un deuxième mot d'entrée courant U2n/Y2n et du deuxième ensemble de sections X2n-i, A2n-i, B2n-i, E2n-i de la valeur précédente Vn-I du vecteur d'état. La valeur intermédiaire X2α est transmise au générateur 1 pseudo-aléatoire.The second encryption / decryption module 17b calculates a second current output word Y2n / U2 n according to a second reversible application dependent on a second current input word U2 n / Y2 n and the second set of sections X2 n -i, A2 n- i, B2 n -i, E2 n -i of the previous value V n - I of the state vector. The intermediate value X2 α is transmitted to the pseudo-random generator 1.
La figure 13 illustre un exemple très schématique d'un dispositif de chiffrement (pouvant être utilisé en mode chiffrement et/ou en mode déchiffrement) comportant des moyens 81 de multiplexage cryptographique.FIG. 13 illustrates a very schematic example of an encryption device (which can be used in encryption mode and / or in decryption mode) comprising means 81 for cryptographic multiplexing.
Selon cet exemple, les moyens 81 de multiplexage cryptographique peuvent multiplexer au moins deux blocs de messages en clair pour former au moins deux blocs de messages chiffrés, chaque bloc de message en clair correspondant à une succession de mots d'entrées.According to this example, the cryptographic multiplexing means 81 can multiplex at least two plaintext blocks to form at least two encrypted message blocks, each plaintext block corresponding to a succession of input words.
Les moyens 81 de multiplexage cryptographique correspondent au paramétrage d'un générateur 1 pseudo-aléatoire selon les figures précédentes, par un vecteur d'état comprenant une cinquième variable d'état F. Ainsi, le générateur 1 pseudo-aléatoire peut ordonnancer les différents blocs de messages chiffrés à chaque itération en fonction de la cinquième variable d'état F comprise dans le vecteur d'état. Par conséquent, l'ordonnancement des M blocs chiffrés à chaque itération, combinés ou non, dans les canaux de transmission, peut être préétabli, ou bien fonction d'une variable pseudo-aléatoire non- accessible (une section du vecteur d'état), dépendant de la clé de chiffrement en mode chiffrement (respectivement de la clé de déchiffrement en mode déchiffrement) et de l'intégralité de la séquence des mots d'entrée appliquées. Par exemple, l'ordonnancement des M blocs chiffrés, combinés ou non, peut être fourni par la fonction de permutation P paramétrée par la cinquième variable d'état F comprise dans le vecteur d'état.The cryptographic multiplexing means 81 correspond to the setting of a pseudo-random generator 1 according to the preceding figures, by a state vector comprising a fifth state variable F. Thus, the pseudo-random generator 1 can schedule the different blocks. of encrypted messages at each iteration according to the fifth state variable F included in the state vector. Consequently, the ordering of the M blocks encrypted at each iteration, combined or not, in the transmission channels, may be preset, or may be a function of a non-accessible pseudo-random variable (a section of the state vector). , depending on the encryption key in encryption mode (respectively decryption key decryption mode) and the entire sequence of input words applied. For example, the ordering of the encrypted M blocks, combined or not, can be provided by the permutation function P parameterized by the fifth state variable F included in the state vector.
Le paramètre de l'ordonnancement des M blocs du message chiffré combiné lors de l'itération n est fourni par la valeur précédente Fn-I de la cinquième variable d'état F. Fn-I étant une section de taille M de la valeur précédente Vn-I du vecteur d'état, isolé des mots d'entrée et des mots de sortie et dépendant de la clé de chiffrement (respectivement de la clé de déchiffrement) et de l'intégralité de la séquence des mots d'entrée appliquées.The parameter of the scheduling of the M blocks of the combined encrypted message during the iteration n is provided by the previous value F n - I of the fifth state variable F. F nI being a section of size M of the previous value V n - I of the state vector, isolated from the input words and output words and depending on the encryption key (respectively of the decryption key) and the entire sequence of input words applied .
L'ordonnancement des M blocs du message chiffré, combinés ou non, dans les canaux de transmission à chaque itération est donc pseudo-aléatoire, dépendant de la clé de chiffrement (respectivement de la clé de déchiffrement) et de l'intégralité de la séquence des mots d'entrée appliquées. La moindre modification de la séquence des mots d'entrée entraîne donc systématiquement une modification de l'intégralité de l'ordonnancement des blocs du message chiffré, combinés ou non, postérieur à cette modification, dans les canaux de transmission.The scheduling of the M blocks of the encrypted message, combined or not, in the transmission channels at each iteration is therefore pseudo-random, depending on the encryption key (respectively of the decryption key) and the entire sequence. input words applied. Any modification of the sequence of the input words therefore systematically entails a modification of the entire scheduling of the blocks of the encrypted message, combined or not, subsequent to this modification, in the transmission channels.
Procédé et dispositif de hachage cryptographiqueCryptographic hashing method and device
La figure 14 montre que le générateur 1 pseudo-aléatoire tel que représenté de façon schématique sur la figure IA peut être également utilisé en combinaison avec un module de pré-conditionnement dans un dispositif de hachage cryptographique conforme à (Invention et ce afin de générer un condensé d'un message.FIG. 14 shows that the pseudo-random generator 1 as represented diagrammatically in FIG. 1A can also be used in combination with a pre-conditioning module in a cryptographic hashing device according to (Invention and this in order to generate a condensed message.
On notera que la figure 14 est également une illustration des principales étapes du procédé de hachage cryptographique selon l'invention. Dans le mode de réalisation détaillé ici, le vecteur d'état V comprend un nombre prédéterminé k de bits et la valeur initiale Vo du vecteur d'état correspond à une clé de hachage paramétrable de taille k.It will be noted that FIG. 14 is also an illustration of the main steps of the cryptographic hashing method according to the invention. In the embodiment detailed here, the state vector V comprises a predetermined number k of bits and the initial value Vo of the state vector corresponds to a configurable hash key of size k.
La figure 14 illustre un dispositif 407 de hachage cryptographique d'un message Mess conforme à l'invention dans un mode particulier de réalisation.FIG. 14 illustrates a device 407 for cryptographic hashing of a message Mess according to the invention in a particular embodiment.
Ce dispositif 407 comprend des moyens pour découper le message Mess en un nombre M prédéterminé de blocs Zi, Z2,..., ZM de taille prédéterminée (par exemple M blocs de taille m bits). De façon connue en soi, si le dernier bloc découpé est incomplet (i.e. ne comporte pas m bits), on effectue un bourrage (ou « padding » en anglais) en complétant le bloc incomplet par des 0.This device 407 comprises means for cutting the message Mess into a predetermined number M of blocks Z 1 , Z 2 ,..., ZM of predetermined size (for example M blocks of size m bits). In a manner known per se, if the last cut block is incomplete (ie does not have m bits), it performs a padding (or "padding" in English) by completing the incomplete block by 0.
Le dispositif 407 comporte en outre des moyens de génération pour générer itérativement une succession 13 de M valeurs d'un vecteur d'état V à partir d'une valeur initiale Vo du vecteur d'état, et pour obtenir un condensé hash du message Mess à partir de la dernière valeur VM générée du vecteur d'état. Les blocs de message Zi, Z2,..., ZM sont utilisés chacun leur tour par les moyens de génération au cours d'itérations successives pour générer les M valeurs du vecteur d'état. Dans l'exemple envisagé ici, ces moyens de génération comportent un générateur 1 pseudo-aléatoire selon l'invention (par exemple le générateur pseudo-aléatoire représenté sur les figures IB et 3B) et un module 417 de pré-conditionnement. Avant le démarrage d'un hachage cryptographique par le procédé de hachage cryptographique selon l'invention, la valeur de la clé de hachage devient la valeur initiale V0 du vecteur d'état V (Vo = clé de hachage).The device 407 furthermore comprises generation means for iteratively generating a succession 13 of M values of a state vector V from an initial value Vo of the state vector, and to obtain a hash digest of the message Mess. from the last value V M generated of the state vector. The message blocks Z 1 , Z 2 ,..., Z M are each used in turn by the generating means during successive iterations to generate the M values of the state vector. In the example envisaged here, these generation means comprise a pseudo-random generator 1 according to the invention (for example the pseudo-random generator represented in FIGS. 1B and 3B) and a pre-conditioning module 417. Before starting a cryptographic hashing by the cryptographic hashing method according to the invention, the value of the hash key becomes the initial value V 0 of the state vector V (Vo = hash key).
A chaque itération n, le générateur 1 pseudo-aléatoire calcule une valeur courante Vn du vecteur d'état selon une application non inversible dépendante de la valeur précédente Vn-I du vecteur d'état et d'une valeur courante intermédiaire Xα issue d'un calcul réalisé par le module 417 de pré-conditionnement, le module 417 de pré- conditionnement calculant la valeur courante intermédiaire Xα selon une application inversible dépendante de la valeur précédente Vn-I du vecteur d'état et d'un bloc de message courant Zn (bloc d'entrée au sens de l'invention). Le générateur 1 pseudo-aléatoire alimente à chaque itération n Ie vecteur d'état Vn par la valeur intermédiaire courante X« issue du module 417 de pré-conditionnement,At each iteration n, the pseudo-random generator 1 calculates a current value V n of the state vector in a non-invertible implementation dependent on the previous value V n - I of the state vector and an intermediate current value X α resulting from a calculation carried out by the pre-conditioning module 417, the pre-conditioning module 417 calculating the intermediate current value X α according to an invertible application dependent on the previous value V nI of the state vector and a block current message Z n (input block within the meaning of the invention). The pseudo-random generator 1 feeds at each iteration n the state vector V n by the current intermediate value X "from the pre-conditioning module 417,
A Ia première itération, le module 417 de pré-conditionnement calcule Ia valeur intermédiaire courante X« pour l'itération 1 en fonction d'un premier bloc de message Z1 et de Ia valeur initiale Vo du vecteur d'état. De plus, le générateur 1 pseudo-aléatoire calcule une première valeur Vi du vecteur d'état V en fonction du premier bloc de message Zi et de la valeur initiale V0 du vecteur d'état. Par extension, à Ia nιeme itération, Ie module 417 de pré-conditionnement calcule Ia valeur intermédiaire courante Xa pour l'itération n en fonction du bloc de message courant Zn et de Ia valeur précédente Vn-I du vecteur d'état. De plus, le générateur 1 pseudo-aléatoire calcule une valeur courante Vn du vecteur d'état V en fonction du bloc de message courant Zn (par le biais de la valeur intermédiaire courante Xα) et de Ia valeur précédente Vn-I du vecteur d'état.At the first iteration, the preconditioning module 417 calculates the current intermediate value X " for the iteration 1 as a function of a first message block Z 1 and the initial value Vo of the state vector. In addition, the pseudo-random generator 1 calculates a first value Vi of the state vector V as a function of the first message block Zi and the initial value V 0 of the state vector. By extension, at the nth iteration, the preconditioning module 417 calculates the current intermediate value X a for the iteration n as a function of the current message block Z n and the previous value V n - I of the vector of state. In addition, the pseudo-random generator 1 calculates a current value V n of the state vector V as a function of the current message block Z n (via the current intermediate value X α ) and the previous value V n - I of the state vector.
Avantageusement dans Ie mode de réalisation décrit ici, le vecteur d'état V comporte un ensemble de sections comprenant au moins une première variable d'état X et une deuxième variable d'état A de taille m. Par exemple, Ia valeur courante Vn du vecteur d'état V peut être structurée de Ia manière suivante :Advantageously in the embodiment described here, the state vector V comprises a set of sections comprising at least a first state variable X and a second state variable A of size m. For example, the current value V n of the state vector V can be structured as follows:
V. = (-(xn = (χ nr..χ nm ))....(A = (anV..anm ))...)V. = (- (x n = ( χ nr .. χ nm )) .... (A = (a nV ..a nm )) ...)
Les variables d'état X et A sont des sections du vecteur d'état au sens de l'invention.The state variables X and A are sections of the state vector in the sense of the invention.
Selon cet exemple, la valeur courante Xn de la première variable d'état X comprend m bits xni,...xnm et la valeur courante An de Ia deuxième variable d'état A comprend m bits ani,...anm, m étant Ia taille des blocs de message Zn, n=l,..,M.According to this example, the current value X n of the first state variable X comprises m bits x n i, ... x n m and the current value A n of the second state variable A comprises m bits a n i , ... nm , where m is the size of the message blocks Z n , n = 1, .., M.
Les emplacements des variables d'état sont prédéfinis et de préférence à position fixe, mais il est possible de leur affecter une position variable en fonction de la ou des valeurs prises par une ou plusieurs sections du vecteur d'état, elles-mêmes à position fixe. Seule Ia solution d'une position fixe des variables d'état est décrite par la suite.The locations of the state variables are predefined and preferably fixed position, but it is possible to assign them a variable position depending on the value or values taken by one or more sections of the state vector, themselves at position fixed. Only the solution of a fixed position of the state variables is described later.
Par ailleurs, il est préférable (mais non nécessaire) que les secteurs affectés à chacune des variables d'état ne se chevauchent pas. La taille k du vecteur d'état est alors choisie en conséquence, et chaque variable d'état correspond à une section de taille limitée du vecteur d'état (c'est-à-dire de taille strictement inférieure à celle du vecteur d'état).On the other hand, it is preferable (but not necessary) that the sectors assigned to each of the state variables do not overlap. The size k of the state vector is then chosen accordingly, and each state variable corresponds to a limited size section of the state vector (that is to say of size strictly smaller than that of the state vector).
Bien entendu, les différentes variantes possibles décrites précédemment pour les variables d'état dans le cadre d'un procédé de chiffrement sont également applicables dans le cadre d'un procédé de hachage cryptographique selon l'invention.Of course, the different possible variants described previously for the state variables in the context of an encryption method are also applicable in the context of a cryptographic hashing process according to the invention.
La valeur Xn de la première variable d'état X est utilisée lors d'une itération suivante par une fonction d'isolement du module 417 de pré-conditionnement avant d'être remplacée par la valeur intermédiaire X« issue du calcul réalisé à l'itération suivante par le module 417 de préconditionnement. La valeur An de la deuxième variable d'état est également utilisée lors d'une itération suivante par la fonction d'isolement du module 417 de pré-conditionnement.The value X n of the first state variable X is used during a subsequent iteration by an isolation function of the pre-conditioning module 417 before being replaced by the intermediate value X "resulting from the calculation carried out at the next iteration by the preconditioning module 417. The value A n of the second state variable is also used during a subsequent iteration by the isolation function of the pre-conditioning module 417.
A chaque itération (par exemple, à l'itération n), les moyens de transmission 321 du générateur pseudo-aléatoire 1 transmettent au module 417 de pré-conditionnement la valeur précédente Vn-I du vecteur d'état comprenant au moins la valeur précédente Xn-I de la première variable d'état X et la valeur précédente An-I de la deuxième variable d'état A. Les moyens de réception 323 du générateur pseudo-aléatoire 1 reçoivent depuis le module 417 de pré-conditionnement la valeur intermédiaire courante X«.At each iteration (e.g., at iteration n), the transmission means 321 of the pseudo-random generator 1 transmitted to the module 417 of preconditioning the previous value V n - I of the state vector comprising at least the value preceding X n -I of the first state variable X and the previous value A n -I of the second state variable A. The receiving means 323 of the pseudo-random generator 1 receive from the pre-conditioning module 417 the current intermediate value X ".
Le premier moyen de calcul 325a remplace la valeur précédente Xn-i de la première variable d'état X par la valeur intermédiaire courante X« pour calculer une valeur courante d'un premier vecteur d'état intermédiaire Vιnti- Les autres étapes de fonctionnement ainsi que les moyens du générateur pseudo-aléatoire 1 sont similaires à ceux décrits en référence à la figure IB (et 3B) et ne seront donc pas détaillés davantage ici. Le module 417 de pré-conditionnement quant à lui comporte des moyens de réception 433 et un moyen d'isolement 435 pour isoler la valeur intermédiaire courante X« des blocs de message.The first calculation means 325a replaces the previous value X n -i of the first state variable X with the current intermediate value X "for calculating a current value of a first intermediate state vector V ιn ti- The other steps and the pseudo-random generator means 1 are similar to those described with reference to FIG. 1B (and 3B) and will therefore not be further detailed here. The pre-conditioning module 417 comprises receiving means 433 and isolation means 435 for isolating the current intermediate value X "of the message blocks.
Les moyens de réception 433 reçoivent depuis le générateur 1 pseudo-aléatoire la valeur précédente Vn-I du vecteur d'état comprenant au moins la valeur précédente Xn-I de la première variable d'état X et la valeur précédente An-I de la deuxième variable d'état A. Le moyen d'isolement 435 est adapté à appliquer une fonction symétrique à clé secrète sur chaque bloc de message Zn, la clé secrète étant obtenue à partir d'au moins une section de la valeur précédente du vecteur d'état. Préférentiellement, la fonction à clé secrète mise en œuvre comprend au moins une opération ou-exclusif, i.e. le moyen d'isolement 435 comprend au moins une porte ou-exclusif paramétrée par une section de taille m de la valeur précédente du vecteur d'état. En variante, elle peut comprendre en outre au moins une permutation bijective au sens de l'invention, paramétrée par une section de taille m de la valeur précédente du vecteur d'état.The reception means 433 receive from the pseudo-random generator 1 the previous value V nI of the state vector comprising at least the previous value X nI of the first state variable X and the previous value A n -I of the second state variable A. The isolation means 435 is adapted to apply a secret key symmetric function on each message block Z n , the secret key being obtained from at least one section of the previous value of the state vector. Preferably, the secret key function implemented comprises at least one or exclusive operation, ie the isolation means 435 comprises at least one exclusive-or-gate parameterized by a section of size m of the previous value of the state vector . As a variant, it may furthermore comprise at least one bijective permutation according to the invention, parameterized by a section of size m of the previous value of the state vector.
Dans l'exemple décrit ici, la fonction à clé secrète mise en œuvre par le moyen d'isolement 435 est composée de deux permutations bijectives au sens de l'invention et de deux opérations ou-exclusif, chacune paramétrée par une section de taille m du vecteur d'état Vn-I. La clé secrète de cette fonction est composée de la section paramétrant la première permutation bijective, de la section paramétrant la première opération ou-exclusif, de la section paramétrant la seconde permutation bijective et de la section paramétrant la seconde opération ou-exclusive. Ainsi le moyen d'isolement 435 comprend des premiers et seconds moyens de permutation bijective 439a et 439b séparés par une première porte ou-exclusif 441a. Une seconde porte ou-exclusif 441b est appliquée en sortie des seconds moyens de permutation bijective 439b.In the example described here, the secret key function implemented by the isolation means 435 is composed of two bijective permutations in the sense of the invention and two or-exclusive operations, each parameterized by a section of size m. of the state vector V nI . The secret key of this function is composed of the section parameterizing the first bijective permutation, the section parameterizing the first or exclusive operation, the section parameterizing the second bijective permutation and the section parameterizing the second or exclusive operation. Thus the isolation means 435 comprises first and second one-way means 439a and 439b separated by a first or exclusive-door 441a. A second or exclusive-gate 441b is applied at the output of the second means of bijective permutation 439b.
Les moyens de permutation bijective 439a et 439b considérés ici mettent en œuvre chacun la fonction de permutation P décrite précédemment, paramétrée par des variables d'état respectives différentes du vecteur d'état Vn-I. Autrement dit, on considère pour les différents moyens de permutation bijective précités une clé de permutation de taille m égale à une variable d'état du vecteur d'état VVi. Ainsi :The bijective permutation means 439a and 439b considered here each implement the permutation function P described above, parameterized by respective state variables different from the state vector V n -I . In other words, for the various means of bijective permutation mentioned above, we consider a permutation key of size m equal to a state variable of the state vector VVi. So :
- les premiers moyens de permutation bijective 439a mettent en œuvre une première permutation bijective correspondant à la fonction de permutation P paramétrée par une clé de permutation égale à la valeur précédente de la seconde variable d'état An-I, et - les seconds moyens de permutation bijective 439b mettent en œuvre une seconde permutation bijective correspondant à la fonction de permutation P paramétrée par une clé de permutation égale à la valeur précédente de la première variable d'état Xn-I.the first bijective permutation means 439a implement a first bijective permutation corresponding to the permutation function P parameterized by a permutation key equal to the previous value of the second state variable A n -I , and the second means of bijective permutation 439b implement a second bijective permutation corresponding to the function of permutation P parameterized by a permutation key equal to the previous value of the first state variable X nI .
Les clés de permutation utilisées pour paramétrer la fonction de permutation P dans les moyens de permutation bijective 439a et 439b étant indépendantes des données sur lesquelles la fonction de permutation P résultante est appliquée, ils mettent ainsi chacun en œuvre une fonction inversible (bijective). Cette fonction inversible P résulte de l'application de m permutations successives de taille m, sélectionnées en fonction de la valeur de chaque bit de la clé de permutation considérée. Ainsi, le calcul de la valeur intermédiaire courante X« lors d'une itération n comporte les opérations suivantes:Since the permutation keys used to parameterize the permutation function P in the bijective permutation means 439a and 439b are independent of the data on which the resulting permutation function P is applied, they each implement an invertible function (bijective). This invertible function P results from the application of m successive permutations of size m, selected according to the value of each bit of the permutation key considered. Thus, the calculation of the current intermediate value X "during an iteration n comprises the following operations:
- les premiers moyens de permutation 439a calculent un premier mot intermédiaire Jm en appliquant la première permutation bijective sur le bloc d'entrée courant Zn, paramétrée par une valeur précédente An-I de la deuxième variable d'état : Jin = P(Zn, An-i) ;the first permutation means 439a calculate a first intermediate word Jm by applying the first bijective permutation on the current input block Z n , parameterized by a previous value A n -I of the second state variable: Ji n = P (Z n , A n -i);
- la première porte ou-exclusif 441a calcule un deuxième mot intermédiaire J2n en appliquant une opération ou-exclusif entre le premier mot intermédiaire Jm et la valeur précédente An-I de la deuxième variable d'état : J2n = Jin Φ An-I ; - les seconds moyens de permutation 439b calculent un troisième mot intermédiaire J3n en appliquant la seconde permutation bijective sur le deuxième mot intermédiaire J2n paramétrée par une valeur précédente Xn-I de la première variable d'état : J3n = P(J2n, Xn-i) ;the first exclusive-or gate 441a calculates a second intermediate word J 2n by applying an exclusive-or-operation between the first intermediate word Jm and the previous value A nI of the second state variable: J 2n = Ji n Φ A n - I; the second permutation means 439b calculate a third intermediate word J 3n by applying the second bijective permutation on the second intermediate word J 2n parameterized by a previous value X n -I of the first state variable: J3 n = P (J2n , Xn-i);
- la seconde porte ou-exclusif 441b calcule la valeur intermédiaire courante Xα en appliquant une opération ou-exclusif entre le troisième mot intermédiaire J3n et la valeur précédente Xn-I de la première variable d'état : X« = J3n Φ Xn-I-the second exclusive-or gate 441b calculates the current intermediate value X α by applying an exclusive-or-operation between the third intermediate word J 3n and the previous value X nI of the first state variable: X "= J 3n Φ X n -I-
Cette valeur intermédiaire courante X« est ensuite transmise au générateur 1 pseudo-aléatoire. II est à noter que la modification d'un bit du bloc courant Zn This current intermediate value X "is then transmitted to the pseudo-random generator 1. It should be noted that the modification of a bit of the current block Z n
(c'est-à-dire du bloc de message en cours de hachage) modifiera un bit de la variable X« incorporée dans le vecteur d'état Vn-I par le moyen de calcul 325a du générateur pseudo-aléatoire 1 pour former le premier vecteur intermédiaire Vmti à l'itération n. Par conséquent, le choix des permutations mises en œuvre par le moyen de calcul 326 sera affecté sur un étage de permutation, et donc en conséquence l'intégralité du vecteur d'état Vn et des vecteurs d'état suivants le sera également (effet avalanche).(that is, the message block being hashed) will modify a bit of the variable X "incorporated in the state vector V nI by the calculation means 325a of the pseudo-random generator 1 to form the first intermediate vector Vm t i at iteration n. Consequently, the choice of permutations implemented by the calculating means 326 will be assigned to a permutation stage, and therefore consequently the entirety of the vector. state V n and the following state vectors will be also (avalanche effect).
A l'issue de M itérations réalisées successivement et utilisant lesAt the end of M iterations carried out successively and using the
M blocs de message constituant le message Mess, le condensé hash du message Mess est formé par le dispositif de hachage cryptographique 407 à partir du dernier (i.e. Mιeme) vecteur d'état généré par le générateur pseudo-aléatoire 1, soit : hash = VM-M message blocks constituting the message Mess, the hash digest message Mess is formed by the cryptographic hash device 407 from the last (ie M th ) state vector generated by the pseudo-random generator 1, either: hash = VM-
Ceci permet une implémentation matérielle ou logicielle extrêmement simple d'un procédé et dispositif de hachage cryptographique, bénéficiant des performances de rapidité et de résistance à la cryptanalyse du procédé de génération pseudo-aléatoire.This allows an extremely simple hardware or software implementation of a cryptographic hash method and device, benefiting from the performance of speed and cryptanalysis resistance of the pseudo-random generation method.
Par ailleurs, selon des principes similaires à ceux implémentés pour le dispositif de chiffrement selon l'invention, il est possible de considérer des blocs de message Zn de taille variable en fonction des itérations (i.e. découpage du message Mess au fil des itérations en blocs dont la taille w est variable et spécifiée dans une section du vecteur d'état) et/ou de désynchroniser les opérations effectuées dans le module de pré-conditionnement et dans le générateur pseudo-aléatoire (notamment en introduisant des « itérations à vide » telles que décrites pour le dispositif de chiffrement).Furthermore, according to principles similar to those implemented for the encryption device according to the invention, it is possible to consider message blocks Z n of variable size as a function of the iterations (ie division of the message Mess over the iterations into blocks whose size w is variable and specified in a section of the state vector) and / or to desynchronize the operations carried out in the pre-conditioning module and in the pseudo-random generator (in particular by introducing "empty iterations" such as as described for the encryption device).
En outre, il est également possible, dans un mode particulier de réalisation de l'invention, d'enchainer h dispositifs de hachage séquentiellement (une section d'un vecteur d'état généré par le générateur pseudo-aléatoire d'un dispositif de hachage alimentant le module de pré-conditionnement du dispositif de hachage suivant) de sorte à augmenter la complexité mathématique du hachage cryptographique.In addition, it is also possible, in a particular embodiment of the invention, to enchain h hashing devices sequentially (a section of a state vector generated by the pseudo-random generator of a hash device feeding the pre-conditioning module of the next hash device) so as to increase the mathematical complexity of the cryptographic hash.
Par ailleurs, dans un mode particulier de l'invention, il est possible d'effectuer le hachage cryptographique selon le procédé de hachage selon l'invention simultanément avec le chiffrement (respectivement) du message, en utilisant l'architecture du procédé de chiffrement selon l'invention.Moreover, in a particular embodiment of the invention, it is possible to perform the cryptographic hashing according to the hashing method according to the invention simultaneously with the encryption (respectively) of the message, by using the architecture of the encryption method according to the invention.
Mise en œuvre de la fonction de permutation PImplementation of the permutation function P
Nous allons maintenant décrire plus en détails, en référence aux figures 9A à 9E, le fonctionnement de la fonction de permutation P utilisée dans les exemples précédents. Comme mentionné précédemment, de façon très avantageuse ici, le générateur (et procédé de génération) pseudo-aléatoire, Ie dispositif (et procédé) de chiffrement et le dispositif (et procédé) de hachage cryptographique s'appuient sur une même fonction de permutation P proposée dans l'invention, paramétrée par une clé dite de permutation et paramétrable en fonction de la taille des données d'entrée et de la clé considérées.We will now describe in more detail, with reference to FIGS. 9A to 9E, the operation of the permutation function P used in the preceding examples. As mentioned above, very advantageously here, the pseudo-random generator (and generation method), the encryption device (and method) and the cryptographic hashing device (and method) rely on the same permutation function P proposed in the invention, parameterized by a so-called permutation key and parameterizable according to the size of the input data and the key considered.
Ainsi, selon ces exemples la fonction de permutation P répond avantageusement à plusieurs cas de figures. Dans un cas, la taille de la clé de permutation est égale à la taille des données en entrée qui est égale aussi à la taille des données de sortie (par exemple pour le chiffrement ou le hachage cryptographique, mais également pour la génération pseudo-aléatoire dans l'exemple représenté sur la figure 3A). On parlera alors de fonction de permutation « carrée ».Thus, according to these examples, the permutation function P responds advantageously to several cases of figures. In one case, the size of the permutation key is equal to the size of the input data which is also equal to the size of the output data (for example for encryption or cryptographic hashing, but also for pseudo-random generation in the example shown in Figure 3A). We will then speak of a "square" permutation function.
Dans un autre cas, la taille de la clé de permutation est inférieure strictement à la taille des données en entrée qui est égale aussi à la taille des données de sortie (par exemple pour la génération pseudoaléatoire dans l'exemple représenté sur les figures IB et 3B). On parlera alors de fonction de permutation « rectangulaire ».In another case, the size of the permutation key is strictly smaller than the size of the input data which is also equal to the size of the output data (for example for pseudo-random generation in the example shown in FIGS. 3B). We will then speak of a "rectangular" permutation function.
Dans un autre cas, la fonction de permutation P est paramétrable pour pouvoir être appliquée à la fois à des données en entrée de taille e=kl>k (taille du vecteur d'état V) et m (taille des données à chiffrer/déchiffrer U/V). Dans d'autres cas, la fonction de permutation P est paramétrable pour pouvoir être appliquée à des données en entrée de taille quelconque e=w permettant d'avoir accès aux fonctionnalités de modification du nombre de bits chiffrés à chaque itération.In another case, the permutation function P can be parameterized so that it can be applied to both input data of size e = kl> k (size of the state vector V) and m (size of the data to be encrypted / decrypted) U / V). In other cases, the permutation function P can be parameterized so that it can be applied to input data of any size e = w making it possible to have access to the functions for modifying the number of encrypted bits at each iteration.
La figure 9A montre un tableau de permutation comportant plusieurs cases 61a-61f et où dans chaque case on indique la position d'origine du bit qui apparaît à l'emplacement considéré. Lors d'un déplacement chaque bit conserve sa valeur : v(i) = valeur binaire (0 ou 1) du ieme bit des données considérées.FIG. 9A shows a permutation table comprising several boxes 61a-61f and in which each box indicates the original position of the bit that appears at the location in question. When moving each bit retains its value v (i) = binary value (0 or 1) of the i th bit of the data concerned.
Selon cet exemple, le premier bit des données en entrée est déplacé au 3eme emplacement (case 61c) des données en sortie en conservant sa valeur v(l). Le deuxième bit des données en entrée est déplacé au keme emplacement (case 6If) des données en sortie en conservant sa valeur v(2). Le troisième bit des données en entrée est déplacé au 4eme emplacement (case 6Id) des données en sortie en conservant sa valeur v(3). Le quatrième bit des données en entrée est déplacé au 1er emplacement des données en sortie en conservant sa valeur v(4). Le keme bit des données en entrée est déplacé au 2eme emplacement (caseôlb) des données en sortie en conservant sa valeur v(k).According to this example, the first bit of the input data is moved to the 3rd position (box 61c) outputting data retaining its value v (l). The second bit of the input data is moved to the k th location (box 6If) of the output data retaining its value v (2). The third input data bit is shifted to the 4 th location (box 6Id) outputting data retaining its value v (3). The fourth input data bit is shifted in location 1 of the output data retaining its value v (4). The kth input data bit is shifted to the 2nd position (caseôlb) outputting data retaining its value v (k).
Selon le choix effectué pour la clé par rapport aux données d'entrée sur lesquelles la fonction de permutation P est appliquée, cette fonction de permutation P est ;According to the choice made for the key with respect to the input data on which the permutation function P is applied, this permutation function P is;
- une fonction à sens unique et donc non réversible (non inversible), lorsque la clé de permutation est générée à partir des données d'entrées (par exemple clé = données d'entrée). Ces propriétés de fonction à sens unique sont exploitées dans les opérations du générateur 1 pseudoaléatoire et dans un module cryptographique selon l'invention ;- a one-way function and therefore non-reversible (non-invertible), when the permutation key is generated from the input data (eg key = input data). These one-way function properties are exploited in the operations of the pseudo-random generator 1 and in a cryptographic module according to the invention;
- ou une fonction bijective (permutation à clé bijective) et donc réversible sous réserve de connaître la valeur de la clé de permutation, lorsque la clé de permutation est indépendante ou fixe par rapport aux données d'entrée. Ces propriétés de fonction bijective peuvent être exploitées dans les fonctions ou moyens d'isolement du module 17 de chiffrement/déchiffrement ou du module 417 de pré-conditionnement du dispositif de hachage cryptographique.or a bijective function (bijective key permutation) and therefore reversible subject to knowing the value of the permutation key, when the permutation key is independent or fixed with respect to the input data. These properties of bijective function can be exploited in the functions or means of isolation of the encryption / decryption module 17 or the pre-conditioning module 417 of the cryptographic hash device.
Pour appliquer la fonction de permutation P paramétrée par la clé de permutation C de taille p sur des données à permuter de taille e, on enchaîne sur les données à permuter, p permutations de taille e paramétrées respectivement par la valeur des p bits de la clé de permutation, c'est-à-dire que chaque permutation est choisie en fonction de la valeur d'un bit distinct de la clé de permutation. Pour chaque bit de la clé de permutation, la permutation est choisie parmi un couple (PO,P1) de permutations distinctes de taille e prédéfini pour chaque étage de permutation. Par exemple, si le bit de la clé de permutation considéré est égal à 0, on choisira PO, et si le bit de la clé de permutation considéré est égal à 1, on choisira PL Les permutations de taille e considérées pourront être notamment choisies parmi des couples (PQ,P1) de permutations prédéfinis vérifiant au moins l'une des conditions suivantes :To apply the permutation function P parameterized by the permutation key C of size p on data to be exchanged with size e, the data to be exchanged are chained, p permutations of size e parameterized respectively by the value of the p bits of the key. permutation, i.e. each permutation is chosen according to the value of a bit distinct from the permutation key. For each bit of the permutation key, the permutation is chosen from a pair (PO, P1) of distinct permutations of size e predefined for each permutation stage. For example, if the bit of the permutation key considered is equal to 0, one will choose PO, and if the bit of the permutation key considered is equal to 1, PL will be chosen. The permutations of size e considered may be chosen in particular from pairs (PQ, P1) of predefined permutations satisfying at least one of the following conditions:
- pour chaque bit de la clé, la permutation obtenue par composition respectivement de PO et de Pl et la permutation obtenue par composition respectivement de Pl et de PO sont en tout point différentes ;for each bit of the key, the permutation obtained by composition of PO and PI, respectively, and the permutation obtained by the composition of P1 and PO, respectively, are in every way different;
- on utilise pour chacun des p étages de la fonction de permutation (un étage correspondant à l'application d'une permutation), un couple identique de permutations PO et Pl en tout point différentes, c'est-à- dire, pour tout t, la position du bit t en sortie pour la première permutation est différente de la position du bit t en sortie pour la deuxième permutation ;each of the p stages of the permutation function (a stage corresponding to the application of a permutation) is used, an identical pair of permutations PO and P1 in all different points, that is to say, for all t, the position of the output bit t for the first permutation is different from the position of the output bit t for the second permutation;
- on utilise à chaque étage un couple de permutations (PO ;P1), tel que les permutations PO et Pl sont individuellement en tout point différentes de la permutation identité, c'est-à-dire que, pour un bit se trouvant en position t avant application de la permutation PO, respectivement Pl, se trouve dans une position différente de t en sortie de la permutation PO, respectivement de la permutation Pl. En variante, on peut également appliquer un couple de permutation différent (PO,,P1,) pour chaque étage i de permutation.a pair of permutations (PO, P1) is used on each stage, such that the permutations PO and P1 are individually different from the identity permutation in all respects, that is, for a bit in position t before application of the permutation PO, respectively P1, is in a position different from t at the output of the permutation PO, respectively of the permutation P1. In a variant, it is also possible to apply a different permutation torque (P0 ,, P1, ) for each permutation stage i.
Ainsi, pour des données de taille e quelconque à traiter, la fonction de permutation P procède en deux étapes ;Thus, for data of any size e to be processed, the permutation function P proceeds in two steps;
- selon une première étape, une table de dimension (p,2e), constituée de p lignes de deux permutations (PO,P1) de taille e chacune, qui sert aussi de matrice de routage en implémentation matérielle, est calculée préalablement ;in a first step, a table of dimension (p, 2e) consisting of p lines of two permutations (PO, P1) of size e each, which also serves as a routing matrix in hardware implementation, is calculated beforehand;
- selon une deuxième étape et lors de l'utilisation de la fonction de permutation P, chaque ligne i de cette table fournit deux permutations possibles, l'une ou l'autre de ces permutations étant choisie en fonction de la valeur vclé(i) du ieme bit de la clé de permutation utilisée. Pour une valeur donnée de clé de permutation, la fonction de permutation P enchaîne donc sur les données d'entrée p permutations de taille e respectivement paramétrées par la valeur de chacun des p bits de la clé de permutation. La figure 9B montre un exemple de cinq couples différents de permutations successives de taille e=5, utilisés respectivement sur les cinq étages de permutation d'une fonction de permutation P et à appliquer sur des données d'entrée de taille e=5 en fonction de la valeur vclé(i) du ieme bit d'une clé de permutation de taille p=5 de la fonction P (fonction de permutation P carrée).in a second step and when using the permutation function P, each line i of this table provides two possible permutations, one or the other of these permutations being chosen as a function of the value vclé (i) of the i th bit of the permutation key used. For a given value of permutation key, the permutation function P thus links to the input data p permutations of size e respectively parameterized by the value of each of the p bits of the permutation key. FIG. 9B shows an example of five different pairs of successive permutations of size e = 5, used respectively on the five permutation stages of a permutation function P and to be applied to input data of size e = 5 according to the value vclé (i) of the ith bit of a permutation key of size p = 5 of the function P (function of permutation P square).
La figure 9C montre un exemple d'un couple identique de deux permutations différentes de taille e=5 utilisé pour chacun des cinq étages de permutation d'une fonction de permutation P et à appliquer sur des données d'entrée de taille e=5 en fonction de la valeur vclé(i) du ieme bit d'une clé de permutation de taille p=5 de la fonction P (fonction de permutation P carrée).FIG. 9C shows an example of an identical pair of two different permutations of size e = 5 used for each of the five permutation stages of a permutation function P and to be applied to input data of size e = 5 in function of the value vclé (i) of the ith bit of a permutation key of size p = 5 of the function P (function of permutation P square).
La figure 9D montre un exemple de cinq couples différents de permutations successives de taille e=7, utilisés respectivement sur les cinq étages de permutation d'une fonction de permutation P et à appliquer sur des données d'entrée de taille e=7 en fonction de la valeur vclé(i) du ieme bit d'une clé de permutation de taille p=5 de la fonction P (fonction de permutation P rectangulaire).FIG. 9D shows an example of five different pairs of successive permutations of size e = 7, used respectively on the five permutation stages of a permutation function P and to be applied to input data of size e = 7 depending the value vclé (i) of the i th bit of a permutation key of size p = 5 of the function P (rectangular permutation function P).
La figure 9E montre un exemple d'un couple identique de deux permutations différentes de taille e=7 utilisé pour chacun des cinq étages de permutation d'une fonction de permutation P et à appliquer sur des données d'entrée de taille e=7 en fonction de la valeur vclé(i) du ieme bit de la clé de permutation de taille p=5 de la fonction P (fonction de permutation P rectangulaire). Un avantage principal de la fonction de permutation P décrite précédemment réside dans une implémentation matérielle très simple, qui peut être effectuée uniquement avec des fonctions logiques du type « NON » et « ET ».FIG. 9E shows an example of an identical pair of two different permutations of size e = 7 used for each of the five permutation stages of a permutation function P and to be applied to input data of size e = 7 in function of the value vclé (i) of the i th bit of the permutation key of size p = 5 of the function P (rectangular permutation function P). A main advantage of the permutation function P described above lies in a very simple hardware implementation, which can be performed only with logic functions of the type "NO" and "AND".
En effet, les figures 1OA et 1OB illustrent des moyens de permutation comportant des portes logiques 63, 65 destinées à sélectionner pour chaque bit vclé(i), i=l,..p, d'une clé de permutation de taille p, une permutation parmi deux permutations distinctes prédéfinies de taille e (taille des données à permuter) en fonction de la valeur du bit vclé(i), et permettant ainsi d'enchaîner p permutations paramétrées par la valeur de chacun des p bits de ladite clé de permutation. Plus particulièrement l'exemple de la figure 1OA montre le câblage du premier étage de permutation de la fonction de permutation P de la figure 9C précédente pour p=5 et e=5 en utilisant une porte logique « NON » 63 et des portes logiques « ET » 65. La porte logique « ET » 65 correspond dans cette application à un interrupteur (ou transistor en implémentation matérielle) piloté par la valeur vclé d'un bit de la clé de permutation ou son complément. L'interrupteur est donc ouvert ou fermé en fonction de la valeur vclé du bit de la clé ou de son complément (passant ou bloqué dans le cas d'un transistor).Indeed, FIGS. 10A and 10B illustrate means of permutation comprising logic gates 63, 65 intended to select for each bit vclé (i), i = 1, p, of a permutation key of size p, a permutation among two different predefined permutations of size e (size of the data to be exchanged) according to the value of the vclé bit (i), and thus making it possible to chain p permutations parameterized by the value of each of the p bits of said permutation key . More particularly, the example of FIG. 10A shows the wiring of the first permutation stage of the permutation function P of the preceding FIG. 9C for p = 5 and e = 5 using a "NO" logic gate 63 and logic gates " AND 65. The logic gate "AND" 65 corresponds in this application to a switch (or transistor in hardware implementation) driven by the value vclé of a bit of the permutation key or its complement. The switch is thus open or closed depending on the value vclé of the bit of the key or its complement (passing or blocked in the case of a transistor).
Les étages s'enchaînent ainsi les uns après les autres, la sortie 69 de l'étage h-1 alimentant l'entrée 67 de l'étage h.The stages are thus linked one after the other, the output 69 of the stage h-1 supplying the input 67 of the stage h.
En appliquant sur les entrées du premier étage les valeurs respectives de chaque bit des données à permuter, ainsi que sur l'entrée de clé de chaque étage la valeur respective du bit de la clé qui lui est associé, on obtient une fonction logique exécutable en une seule opération sur l'ensemble des p étages, correspondant à p permutations de taille e effectuées sur des données en entrée de taille e et paramétrées par une clé de taille p. Si un couple identique de deux permutations différentes est utilisé pour chacun des p étages, p modules identiques sont utilisés.By applying to the inputs of the first stage the respective values of each bit of the data to be swapped, as well as to the key input of each stage the respective value of the bit of the key associated with it, a logic function is obtained which can be executed in a single operation on all the p stages, corresponding to p permutations of size e performed on input data of size e and parameterized by a key of size p. If an identical pair of two different permutations is used for each of the p stages, p identical modules are used.
La figure 1OB montre un exemple dimplémentation matérielle d'un couple identique de deux permutations différentes, utilisé pour chacun des p=5 étages à appliquer sur les données d'entrée de taille e=5 en fonction de la valeur vclé(i) pour p=5 tel que décrit à la figure 9c.FIG. 1OB shows an example of a hardware implementation of an identical pair of two different permutations, used for each of the p = 5 stages to be applied to the input data of size e = 5 as a function of the value vclé (i) for p = 5 as described in Figure 9c.
En implémentation logicielle, on peut utiliser une fonction récursive ayant pour paramètres ; les données en entrée, la clé de permutation, la table de permutation et l'étage i de permutation considéré. Le calcul de la fonction de permutation P s'effectue extrêmement rapidement, en appelant la « Fonction récursive » suivante avec i=p ;In software implementation, one can use a recursive function having for parameters; the input data, the permutation key, the permutation table and the permutation stage i considered. The calculation of the permutation function P is carried out extremely rapidly, by calling the following "recursive function" with i = p;
Données de sortie = Fonction récursive (Données d'entrée, clé, Table de permutation, i). Si i=l, alors Si VcIe(I)=O, alorsOutput Data = Recursive Function (Input Data, Key, Swap Table, i). If i = l, then Si VcIe (I) = O, then
Données de sortie = Permutation(l)_Vclé_0 (Données d'entrée) Sinon,Output Data = Permutation (l) _Vckey_0 (Input Data) If not,
Données de sortie = Permutation(l)_Vclé_i (Données d'entrée) Fin de Si Sinon, Si Vdé( i )=0, alorsOutput Data = Permutation (l) _Vckey_i (Input Data) End of If Otherwise, If Vd (i) = 0, then
Données de sortie = Permutation( i )_Vclé_O (Fonction récursive (Données d'entrée, Clé, Table de Permutation, i-1)) Sinon,Output Data = Permutation (i) _Vkey_O (Recursive Function (Input Data, Key, Swap Table, i-1)) Otherwise,
Données de sortie = Permutation( i )_Vclé_l (Fonction récursive (Données d'entrée, Clé, Table de Permutation, i-1))Output Data = Permutation (i) _Vckey_l (Recursive Function (Input Data, Key, Permutation Table, i-1))
Fin de Si Fin de Si Fin de fonction.End of If End of If End of function.
Les implémentations matérielles et logicielles décrites précédemment présentent l'avantage de pouvoir être utilisées quelle que soit la nature de la clé de permutation considérée (i.e. dépendante ou indépendante des données d'entrée à permuter), c'est-à-dire aussi bien lorsque la fonction de permutation P est une fonction à sens unique que lorsque la fonction de permutation P est une permutation à clé bijective. Ceci permet avantageusement de limiter la complexité d'implémentation des procédés et dispositifs décrits précédemment.The hardware and software implementations described above have the advantage that they can be used irrespective of the nature of the permutation key considered (ie dependent or independent of the input data to be exchanged), that is to say both when the permutation function P is a one-way function only when the permutation function P is a bijective key permutation. This advantageously makes it possible to limit the complexity of implementation of the methods and devices described above.
La présente invention comporte ainsi un générateur pseudo aléatoire paramétré par une clé de chiffrement de taille k quelconque (utilisée comme valeur initiale du vecteur d'état), effectuant des itérations sur un vecteur d'état alimenté à chaque itération par un résultat intermédiaire issu d'un module de chiffrement/déchiffrement, et donc dépendant de l'intégralité de la séquence des entrées appliquées. Le module de chiffrement/déchiffrement intègre des fonctions d'auto- isolement du générateur pseudo-aléatoire et assure à chaque itération le chiffrement et/ou le déchiffrement de données d'entrée, en fonction des valeurs de plusieurs sections du vecteur d'état du générateur pseudoaléatoire. Le dispositif de chiffrement selon l'invention comporte alors notamment les avantages suivants. Le module de chiffrement/déchiffrement est réversible en implémentation matérielle et logicielle. Ainsi, il n'est pas nécessaire d'avoir de programmes/circuits différenciés pour les fonctions de chiffrement et de déchiffrement. Le générateur pseudo-aléatoire est non réversible.The present invention thus comprises a pseudo-random generator parameterized by an encryption key of any size k (used as an initial value of the state vector), performing iterations on a state vector fed at each iteration with an intermediate result derived from an encryption / decryption module, and therefore depending on the entire sequence of inputs applied. The encryption / decryption module integrates self-isolation functions of the pseudo-random generator and ensures at each iteration the encryption and / or decryption of input data, as a function of the values of several sections of the state vector. pseudo-random generator. The encryption device according to the invention then comprises in particular the following advantages. The encryption / decryption module is reversible in hardware and software implementation. Thus, it is not necessary to have differentiated programs / circuits for encryption and decryption functions. The pseudo-random generator is non-reversible.
Une fonction de permutation P est effectuée en une seule opération extrêmement rapide en implémentation matérielle et logicielle, utilisée sous une forme non-inversible P(données,clé(données)) (i.e. la clé dépend des données à permuter) dans le générateur pseudo-aléatoire et sous une forme inversible P(données, clé_fixe) (i.e. la clé est fixe par rapport aux données à permuter) dans le module de chiffrement/déchiffrement.A permutation function P is performed in a single extremely fast operation in hardware and software implementation, used in a non-invertible form P (data, key (data)) (ie the key depends on the data to be swapped) in the pseudo-generator. random and in an invertible form P (data, fixed_key) (ie the key is fixed relative to the data to be swapped) in the encryption / decryption module.
Le générateur pseudo-aléatoire n'a pas de période particulière et ne suit pas de cycle préétabli. La valeur du vecteur d'état dépend de la clé de chiffrement/déchiffrement et de l'intégralité de la séquence des mots d'entrées appliquées, sans cycle déterministe, car basculant à chaque itération d'un attracteur (cycle spécifique à une séquence d'entrées particulières) à un autre.The pseudo-random generator has no particular period and does not follow a pre-established cycle. The value of the state vector depends on the encryption / decryption key and the entire sequence of the applied input words, without a deterministic cycle, since it switches with each iteration of an attractor (cycle specific to a sequence of 'special entries) to another.
Le générateur pseudo-aléatoire à vecteur d'état proposé dans l'invention, est tel que la valeur du vecteur d'état ne peut être reconstituée à partir de l'observation des séquences de mots de sortie, ni volontairement amenée à une valeur préétablie à l'aide d'une séquence de mots d'entrée (vecteur d'état non-observable et non-commandable). Le vecteur d'état s'isole des mots d'entrée et de sortie à l'aide des fonctions d'isolement, paramétrées par les valeurs de certaines de ses propres variables d'état (auto-isolement). Outre la résistance à la cryptanalyse, cette propriété permet de s'affranchir des problèmes de modification du vecteur d'initialisation à chaque démarrage du procédé de chiffrement. La clé de chiffrement/déchiffrement qui fait office de vecteur d'initialisation n'a donc pas à être modifiée. On peut en plus utiliser un entête de message débutant par un Nonce (Number used Once) du type numéro de message, afin d'éviter davantage toute fuite d'information concernant le fait que les messages aient des entêtes similaires.The pseudo-random state vector generator proposed in the invention is such that the value of the state vector can not be reconstituted from the observation of the sequences of output words, nor voluntarily brought to a predetermined value using an input word sequence (non-observable and non-controllable state vector). The state vector isolates input and output words using isolation functions, set by the values of some of its own (self-isolation) state variables. In addition to the resistance to cryptanalysis, this property makes it possible to overcome the problems of modifying the initialization vector at each start of the encryption process. The encryption / decryption key that acts as an initialization vector does not have to be modified. In addition, it is possible to use a message header beginning with a Number used Once (nonce) of the message number type, in order to further avoid any leakage of information concerning the fact that the messages have similar headers.
L'invention présente une possibilité de modification du nombre de bits chiffrés à chaque itération en fonction d'une variable pseudoaléatoire non-accessible (une section du vecteur d'état), dépendant de la clé de chiffrement/déchiffrement et de l'intégralité de la séquence des mots d'entrée appliquées.The invention presents a possibility of modifying the number of encrypted bits at each iteration according to a non-accessible pseudo-random variable (a section of the state vector), depending on the encryption / decryption key and the entire sequence of applied input words.
Une autre possibilité consiste à effectuer des « cycles à vide » par le générateur pseudo-aléatoire (itérations effectuées sur le vecteur d'état sans chiffrement effectués sur les entrées), en fonction d'une variable pseudo-aléatoire non-accessible (une section du vecteur d'état), dépendant de la clé de chiffrement/déchiffrement et de l'intégralité de la séquence des mots d'entrée appliquées, entraînant une désynchronisation du générateur pseudo-aléatoire et du module de chiffrement/déchiffrement des données.Another possibility is to perform "empty cycles" by the pseudo-random generator (iterations performed on the non-encrypted state vector performed on the inputs), as a function of a non-accessible pseudo-random variable (a section of the state vector), depending on the encryption / decryption key and the entire sequence of applied input words, resulting in desynchronization of the pseudo-random generator and the data encryption / decryption module.
Encore une autre possibilité consiste à utiliser le dispositif de chiffrement en multiplexeur cryptographique, consistant à faire converger M messages clairs à chiffrer vers un même module de chiffrement qui générera M messages chiffrés. Il est impossible de reconstituer un seul ou l'intégralité des M messages clairs si on ne dispose pas des M messages chiffrés. Ces messages chiffrés peuvent être combinés entre eux afin de réduire le nombre de canaux de transmission. L'ordonnancement des blocs chiffrés à chaque itération, combinés ou non, dans les canaux de transmission peut-être préétabli ou bien fonction d'une variable pseudo- aléatoire non-accessible (une section du vecteur d'état), dépendant de la clé de chiffrement et de l'intégralité de la séquence des mots d'entrées appliquées.Yet another possibility is to use the cryptographic multiplexer encryption device, consisting in converging M clear messages to be encrypted to the same encryption module that will generate M encrypted messages. It is impossible to reconstruct one or all of the M clear messages if the M encrypted messages are not available. These encrypted messages can be combined with each other to reduce the number of transmission channels. The scheduling of the encrypted blocks at each iteration, combined or not, in the transmission channels can be preset or according to a non-accessible pseudo-random variable (a section of the state vector), depending on the key encryption and the entire sequence of applied input words.
L'invention trouve par ailleurs une application très avantageuse en ce qu'elle permet de réaliser simultanément un hachage cryptographique et un chiffrement/déchiffrement symétrique présentant un grand degré de sécurité et assurant une implémentation simple et efficace en matériel et en logiciel.The invention also has a very advantageous application in that it allows simultaneous cryptographic hashing and symmetric encryption / decryption with a high degree of security and ensuring a simple and efficient implementation of hardware and software.
On notera que, le hachage cryptographique et le chiffrement symétrique sont employés couramment dans tous les types de communications, telles que les communications mobiles, l'Internet, les cartes à puce, etc. It should be noted that cryptographic hashing and symmetric encryption are widely used in all types of communications, such as mobile communications, the Internet, smart cards, and so on.

Claims

REVENDICAΗONS REVENDICAΗONS
1. Procédé cryptographique de génération d'une séquence de données pseudo-aléatoire (3,13), formée par une succession de valeurs d'un vecteur d'état (V) de taille k générées itérativement à partir d'une valeur initiale (V0) du vecteur d'état, ledit procédé étant caractérisé en ce que, au cours de chaque itération, pour générer une valeur courante (Vn) du vecteur d'état pour cette itération : on applique successivement, sur un vecteur provisoire (VpTOv) de taille kl supérieure ou égale à k comprenant au moins un premier vecteur intermédiaire (V,nti) de taille k formé à partir d'au moins une section d'une valeur précédente (Vn-i) du vecteur d'état générée à une itération précédente, un nombre prédéterminé d de permutations de taille kl, chaque permutation étant associée à un bit d'une clé de permutation (C) de taille d et choisie en fonction au moins de la valeur de ce bit, ladite clé de permutation étant issue d'une sélection de d bits parmi les k bits du premier vecteur intermédiaire (Vιnti) ; la valeur courante (Vn) du vecteur d'état étant obtenue à partir d'au moins une section (V,nt2) du vecteur résultant (Vres) de cette étape d'application.A cryptographic method for generating a pseudo-random data sequence (3, 13), formed by a succession of values of a state vector (V) of size k generated iteratively from an initial value ( V 0 ) of the state vector, said method being characterized in that, during each iteration, to generate a current value (V n ) of the state vector for this iteration: one applies successively, on a temporary vector ( Vp TO v) of size k1 greater than or equal to k comprising at least a first intermediate vector (V, nt i) of size k formed from at least one section of a preceding value (V n -i) of the vector of state generated at a previous iteration, a predetermined number d of permutations of size k1, each permutation being associated with a bit of a permutation key (C) of size d and chosen as a function of at least the value of this bit , said permutation key being from a selection d bits among the k bits of the first intermediate vector (V πnt i); the current value (V n ) of the state vector being obtained from at least one section (V, n t2) of the resulting vector (V re s) of this application step.
2. Procédé cryptographique de génération d'une séquence de données pseudo-aléatoire selon la revendication 1, caractérisé en ce que le vecteur provisoire comprend en outre le vecteur obtenu en complémentant à 1 chaque bit du premier vecteur intermédiaire.2. A cryptographic method for generating a pseudo-random data sequence according to claim 1, characterized in that the temporary vector further comprises the vector obtained by complementing each bit of the first intermediate vector with 1.
3. Procédé cryptographique de génération d'une séquence de données pseudo-aléatoire selon la revendication 1 ou 2, caractérisé en ce que la valeur courante du vecteur d'état est le résultat d'une opération ou- exclusif (327a,27a) entre ladite section (VmQ) du vecteur résultant de ladite étape d'application et la valeur précédente du vecteur d'état.A cryptographic method for generating a pseudo-random data sequence according to claim 1 or 2, characterized in that the current value of the state vector is the result of an exclusive operation (327a, 27a) between said section (VmQ) of the resulting vector of said applying step and the previous value of the state vector.
4. Procédé cryptographique de génération d'une séquence de données pseudo-aléatoire selon la revendication 1 ou 3, caractérisé en ce que ledit vecteur provisoire (Vprov) et la clé de permutation (C) sont de même taille égale à la taille du premier vecteur intermédiaire (Vιnti).4. A cryptographic method for generating a pseudo-random data sequence according to claim 1 or 3, characterized in that that said provisional vector (V prov ) and the permutation key (C) are of the same size equal to the size of the first intermediate vector (V ιn ti).
5. Procédé cryptographique de génération d'une séquence de données pseudo-aléatoire selon l'une quelconque des revendications 1 àA cryptographic method for generating a pseudo-random data sequence according to any one of claims 1 to
4, caractérisé en ce que chaque itération comprend en outre, avant ladite étape d'application, une étape d'obtention d'une valeur intermédiaire courante (Xα) calculée à partir de la valeur précédente (Vn-i) du vecteur d'état et d'un bloc de données d'entrée (Un/Yn,Zn), ledit premier vecteur intermédiaire étant formé par ladite valeur précédente du vecteur d'état dans lequel une section (Xn-i) a été remplacée par la valeur intermédiaire courante (Xα).4, characterized in that each iteration further comprises, before said applying step, a step of obtaining a current intermediate value (X α ) calculated from the previous value (V n -i) of the vector d state and an input data block (U n / Yn, Z n ), said first intermediate vector being formed by said previous value of the state vector in which a section (X n -i) has been replaced by the current intermediate value (X α ).
6. Utilisation d'un procédé cryptographique de génération d'une séquence de données pseudo-aléatoire selon la revendication 5 dans un procédé de hachage cryptographique d'un message (Mess) pour générer un condensé (hash) dudit message, ledit message comprenant un nombre prédéterminé M de blocs de données utilisés, chacun leur tour, comme blocs de données d'entrée (Zn) au cours d'itérations successives du procédé cryptographique de génération d'une séquence de données pseudo-aléatoire pour générer M valeurs du vecteur d'état (V), ledit condensé dudit message étant obtenu à partir de la dernière valeur (VM) générée du vecteur d'état.6. Use of a cryptographic method for generating a pseudo-random data sequence according to claim 5 in a cryptographic hashing method of a message (Mess) for generating a digest (hash) of said message, said message comprising a predetermined number M of data blocks used, in turn, as input data blocks (Z n ) during successive iterations of the cryptographic method for generating a pseudo-random data sequence to generate M values of the vector of state (V), said digest of said message being obtained from the last value (V M ) generated of the state vector.
7. Procédé de chiffrement d'une séquence de données d'entrée, dans lequel, à partir d'une valeur initiale (V0) d'un vecteur d'état (V) et d'une succession de mots d'entrée (Un,Yn) formant ladite séquence d'entrée, on génère, de manière itérative, une succession de valeurs (Vn) du vecteur d'état et une succession de mots de sortie (Yn/Un), chaque itération comportant :A method of encrypting an input data sequence, in which, from an initial value (V 0 ) of a state vector (V) and a succession of input words ( U n , Yn) forming said input sequence, it generates, iteratively, a succession of values (V n ) of the state vector and a succession of output words (Y n / U n ), each iteration comprising :
- une étape de chiffrement dans laquelle on calcule un mot de sortie courant (Yn,Un) pour ladite itération selon une application réversible dépendante d'un mot d'entrée courant (Un,Yn) et d'une valeur précédente (Vn-i) du vecteur d'état générée à une itération précédente ; et - une étape de génération pseudo-aléatoire dans laquelle on calcule une valeur courante (Vn) du vecteur d'état pour ladite itération selon une application non inversible dépendante d'au moins ladite valeur précédente (Vn-I) du vecteur d'état ; ledit procédé étant caractérisé en ce que :an encryption step in which a current output word (Y n , U n ) is calculated for said iteration according to a reversible application dependent on a current input word (U n , Yn) and a previous value ( V n -i) of the state vector generated at a previous iteration; and a pseudo-random generation step in which a current value (V n ) of the state vector for said iteration is calculated according to a non-invertible application dependent on at least said previous value (V nI ) of the state vector; said method being characterized in that:
- ladite application réversible comprend au moins une première et une seconde fonctions à clé secrète (35a,35c), lesdites clés secrètes étant générées à partir d'au moins une section (Xn-i,An i,Bn-i) de la valeur précédente du vecteur d'état ; et - ladite application non inversible dépend en outre d'une valeur intermédiaire courante (X«) dépendant de la valeur précédente (Vn-i) du vecteur d'état et du mot d'entrée courant (Un,Yn), et étant isolée des mots d'entrée (Un/Yn), respectivement des mots de sortie (Yn,Un), par l'intermédiaire de ladite première fonction à clé secrète (35a), respectivement de ladite seconde fonction à clé secrète (35c).said reversible application comprises at least a first and a second secret key function (35a, 35c), said secret keys being generated from at least one section (Xn-i, A n i, B n -i) of the previous value of the state vector; and said non-invertible application also depends on a current intermediate value (X " ) dependent on the previous value (V n -i) of the state vector and the current input word (U n , Y n ), and being isolated from the input words (U n / Yn), respectively output words (Y n , U n ), via said first secret key function (35a), respectively from said second key function secret (35c).
8. Procédé de chiffrement selon la revendication 7, caractérisé en ce qu'au moins une fonction parmi ladite première et ladite seconde fonctions à clé secrète comprend au moins une opération ou-exclusif (41a,41c) paramétrée par au moins une section (An-i,Bn~i) de la clé secrète de cette fonction.An encryption method according to claim 7, characterized in that at least one of said first and said second secret key functions comprises at least one exclusive operation (41a, 41c) parameterized by at least one section (A). n -i, B n ~ i) of the secret key of this function.
9. Procédé de chiffrement selon la revendication 7 ou 8, caractérisé en ce que le vecteur d'état est de taille k et en ce que, au cours de l'étape de génération pseudo-aléatoire, pour calculer la valeur courante du vecteur d'état : on applique successivement, sur un vecteur provisoire de taille kl supérieure ou égale à k comprenant au moins un premier vecteur intermédiaire de taille k formé à partir d'une section de la valeur précédente du vecteur d'état et de ladite valeur intermédiaire courante, un nombre prédéterminé d de permutations de taille kl, chaque permutation étant associée respectivement à un bit d'une clé de permutation de taille d et choisie en fonction au moins de Ia valeur de ce bit, ladite clé étant issue d'une sélection de d bits distincts parmi les k bits du premier vecteur intermédiaire ; la valeur courante (Vn) du vecteur d'état étant obtenue à partir d'au moins une section du vecteur résultant de cette étape d'application.9. Encryption method according to claim 7 or 8, characterized in that the state vector is of size k and in that, during the pseudo-random generation step, for calculating the current value of the vector d state: one applies successively, on a provisional vector of size kl greater than or equal to k comprising at least a first intermediate vector of size k formed from a section of the previous value of the state vector and of said intermediate value current, a predetermined number d of permutations of size kl, each permutation being respectively associated with a bit of a permutation key of size d and chosen as a function of at least the value of this bit, said key being derived from a selection of d distinct bits among the k bits of the first intermediate vector; the current value (V n ) of the state vector being obtained from at least one section of the vector resulting from this application step.
10. Procédé de chiffrement selon la revendication 9, caractérisé en ce que ledit vecteur provisoire comprend en outre le vecteur obtenu en complémentant à 1 chaque bit du premier vecteur intermédiaire.10. Encryption method according to claim 9, characterized in that said temporary vector further comprises the vector obtained by complementing each bit of the first intermediate vector.
11. Procédé de chiffrement selon la revendication 9 ou 10, caractérisé en ce que la valeur courante du vecteur d'état est le résultat d'une opération ou-exclusif (27a,327a) entre ladite section (VmG) du vecteur résultant de ladite étape d'application et la valeur précédente du vecteur d'état.An encryption method according to claim 9 or 10, characterized in that the current value of the state vector is the result of an exclusive operation (27a, 327a) between said section (Vm G ) of the resulting vector of said applying step and the previous value of the state vector.
12. Procédé de chiffrement selon l'une quelconque des revendications 7 à 11, dans lequel les mots d'entrée (Un, Yn) et/ou de sortie comprennent un nombre de bits variable (w) en fonction des itérations, et dans lequel le vecteur d'état comprend une section indiquant ledit nombre de bits variable à chaque itération.An encryption method according to any one of claims 7 to 11, wherein the input (U n , Y n ) and / or output words comprise a variable number of bits (w) as a function of the iterations, and wherein the state vector comprises a section indicating said variable bit number at each iteration.
13. Procédé de chiffrement selon la revendication 12, caractérisé en ce que, l'étape de génération pseudo-aléatoire de chaque itération comporte en outre, lorsque l'on détermine que ledit nombre de bits variable est nul à partir de la valeur courante du vecteur d'état, le calcul selon une application non inversible dépendant de ladite valeur courante du vecteur d'état d'une nouvelle valeur courante du vecteur d'état d'état (Vtemp) remplaçant ladite valeur courante du vecteur d'état.13. An encryption method according to claim 12, characterized in that the pseudo-random generation step of each iteration further comprises, when it is determined that said variable bit number is zero from the current value of the state vector, the computation according to a non-invertible application dependent on said current value of the state vector of a new current value of the state state vector (V tem p) replacing said current value of the state vector .
14. Procédé de chiffrement selon l'une quelconque des revendications 7 à 13 caractérisé en ce que : - ladite étape de génération pseudo-aléatoire est une première étape de génération pseudo-aléatoire formant une valeur courante (Vln) d'un premier vecteur d'état (Vl) ;14. An encryption method according to any one of claims 7 to 13 characterized in that: - said pseudo-random generation step is a first pseudo-random generation step forming a current value (Vl n ) of a first vector state (Vl);
- ladite première étape de génération pseudo-aléatoire est combinée en parallèle avec au moins une seconde étape de génération pseudo- aléatoire formant une valeur courante (V2n) d'un second vecteur d'état (V2) ; et - la valeur courante du vecteur d'état (Vn) est Ie résultat d'une opération ou-exclusif (131) entre la valeur courante (Vln) du premier vecteur d'état et au moins la valeur courante (V2n) du second vecteur d'état.said first pseudo-random generation step is combined in parallel with at least a second pseudo-random generation step forming a current value (V2 n ) of a second state vector (V2); and the current value of the state vector (V n ) is the result of an exclusive-or-exclusive operation (131) between the current value (Vl n ) of the first state vector and at least the current value (V2 n ) the second state vector.
15. Procédé de chiffrement selon l'une quelconque des revendications 7 à 14, caractérisé en ce que ladite étape de chiffrement est une première étape de chiffrement dans laquelle on calcule :15. An encryption method according to claim 7, wherein said encryption step is a first encryption step in which:
- un premier mot de sortie courant (Yln/Uln) selon une première application réversible dépendante d'un premier mot d'entrée courant (Uln,Yln) et d'au moins une première section de la valeur précédente (Vn-i) du vecteur d'état ; eta first current output word (Yl n / Ul n ) according to a first reversible application dependent on a first current input word (Ul n , Yl n ) and at least a first section of the previous value (V n -i) of the state vector; and
- une première valeur intermédiaire courante (Xlα); et en ce que ledit procédé comporte en outre au moins une seconde étape de chiffrement dans laquelle on calcule : - un second mot de sortie courant (Y2n,U2n) selon une seconde application réversible dépendante d'un second mot d'entrée courant (U2n,Y2n) et d'au moins une seconde section de la valeur précédente (Vn-i) du vecteur d'état ; eta first current intermediate value (Xl α ); and in that said method further comprises at least one second encryption step of calculating: - a second current output word (Y 2n, n U2) according to a second dependent reversible applying a second current input word ( U2 n , Y2 n ) and at least one second section of the previous value (V n -i) of the state vector; and
- une seconde valeur intermédiaire courante (X2«) ; ladite valeur intermédiaire courante utilisée au cours de l'étape de génération pseudo-aléatoire comprenant ladite première valeur intermédiaire courante (Xlα) et au moins ladite seconde valeur intermédiaire courante (X2α).a second current intermediate value (X2 " ); said current intermediate value used during the pseudo-random generation step comprising said first current intermediate value (Xl α ) and at least said second current intermediate value (X2 α ).
16. Procédé de chiffrement selon la revendication 15 caractérisé en ce qu'il comporte en outre une étape de multiplexage cryptographique d'au moins deux blocs de messages en clair pour former au moins deux blocs de messages chiffrés, chaque bloc de message en clair correspondant à une succession de mots d'entrées, et en ce que lesdits au moins deux blocs de messages chiffrés sont ordonnancés à chaque itération en fonction d'une section de Ia valeur précédente du vecteur d'état. 16. An encryption method according to claim 15, characterized in that it further comprises a cryptographic multiplexing step of at least two blocks of messages in clear to form at least two blocks of encrypted messages, each corresponding plaintext message block. to a succession of input words, and in that said at least two encrypted message blocks are scheduled at each iteration according to a section of the previous value of the state vector.
17. Module cryptographique (326) adapté à générer un vecteur de bits de sortie (Vres) à partir d'un vecteur de bits d'entrée (Vprov) de taille kl, caractérisé en ce qu'il comporte :17. Cryptographic module (326) adapted to generate an output bit vector (V res ) from an input bit vector (V prov ) of size k1, characterized in that it comprises:
- des moyens (326b) pour former une clé de permutation (C) de taille prédéterminée d en sélectionnant d bits distincts parmi les bits du vecteur d'entrée ;means (326b) for forming a permutation key (C) of predetermined size d by selecting distinct bits among the bits of the input vector;
- des moyens pour associer, à chaque bit de Ia clé de permutation, une permutation de taille kl choisie en fonction au moins de la valeur de ce bit ; et - des moyens (326a) pour appliquer successivement sur le vecteur d'entrée les d permutations de taille kl associées aux d bits de la clé de permutation de sorte à obtenir ledit vecteur de bits de sortie.means for associating, with each bit of the permutation key, a permutation of size k1 chosen as a function of at least the value of this bit; and means (326a) for successively applying to the input vector the size permutations k1 associated with the d bits of the permutation key so as to obtain said output bit vector.
18. Générateur cryptographique (1) d'une séquence de données pseudo-aléatoire formée d'une succession de valeurs (Vn) d'un vecteur d'état (V) de taille k générées itérativement à partir d'une valeur initiale18. Cryptographic generator (1) of a pseudo-random data sequence formed of a succession of values (V n ) of a state vector (V) of size k generated iteratively from an initial value
(V0) du vecteur d'état, ledit générateur étant caractérisé en ce qu'il comprend des moyens (5) pour mettre en œuvre, à chaque itération, pour générer une valeur courante (Vn) du vecteur d'état pour ladite itération : - un module cryptographique selon la revendication 17 adapté à générer un vecteur résultat (Vres) à partir d'un vecteur provisoire (Vprov) de taille kl supérieure ou égale à k comprenant au moins un premier vecteur intermédiaire (V,nti) de taille k formé à partir d'au moins une section d'une valeur précédente (Vn i) du vecteur d'état générée à une itération précédente, ladite clé de permutation étant de taille d inférieure ou égale à k ; et(V 0 ) of the state vector, said generator being characterized in that it comprises means (5) for implementing, at each iteration, to generate a current value (V n ) of the state vector for said iteration: - a cryptographic module according to claim 17 adapted to generate a result vector (V re ) from a provisional vector (V prov ) of size k1 greater than or equal to k comprising at least a first intermediate vector (V, n t i) of size k formed from at least one section of a preceding value (V n i) of the state vector generated at a previous iteration, said permutation key being of size d less than or equal to k ; and
- des moyens d'obtention de la valeur courante du vecteur d'état à partir d'au moins une section du vecteur résultat.means for obtaining the current value of the state vector from at least one section of the result vector.
19. Générateur selon la revendication 18, caractérisé en ce qu'il comprend en outre des moyens pour mettre en œuvre, à chaque itération :19. Generator according to claim 18, characterized in that it further comprises means for implementing, at each iteration:
- des moyens d'obtention (323) d'une valeur courante intermédiaire (Xα) calculée à partir de la valeur précédente (Vn-i) du vecteur d'état et d'un bloc de données d'entrée ; et - des moyens de formation (325a,25) dudit premier vecteur intermédiaire (V,nti) à partir de la valeur précédente du vecteur d'état dans lequel une section (Xn-i) a été remplacée par la valeur intermédiaire courante (Xα).means for obtaining (323) an intermediate current value (X α ) calculated from the previous value (V n -i) of the state vector and an input data block; and means for forming (325a, 25) said first intermediate vector (V, nt i) from the previous value of the state vector in which a section (X n -i) has been replaced by the current intermediate value ( X α ).
20. Dispositif de chiffrement (7) d'une séquence de données d'entrée adapté à générer itérativement, à partir d'une valeur initiale (V0) d'un vecteur d'état et d'une succession de mots d'entrée (Un,Yn) formant ladite séquence d'entrée, une succession de valeurs (Vn) du vecteur d'état et une succession de mots de sortie (Yn/Un), ledit dispositif de chiffrement étant apte à mettre en œuvre à chaque itération :20. Encoding device (7) of an input data sequence adapted to generate iteratively, starting from an initial value (V 0 ) of a state vector and a succession of input words (U n , Y n ) forming said input sequence, a succession of values (V n ) of the state vector and a succession of output words (Y n / U n ), said encryption device being able to set at each iteration:
- des moyens de chiffrement (17) adaptés à calculer un mot sortie courant (Yn,Un) pour ladite itération selon une application réversible dépendante d'un mot d'entrée courant (Un,Yn) et d'une valeur précédente (Vn-i) du vecteur d'état générée à une itération précédente ; etencryption means (17) adapted to calculate a current output word (Y n , U n ) for said iteration according to a reversible application dependent on a current input word (U n , Yn) and a previous value (V n -i) of the state vector generated at a previous iteration; and
- un générateur pseudo-aléatoire (1) adapté à calculer une valeur courante (Vn) du vecteur d'état pour ladite itération, selon une application non inversible dépendante d'au moins la valeur précédente du vecteur d'état ; ledit dispositif de chiffrement étant caractérisé en ce que :a pseudo-random generator (1) adapted to calculate a current value (V n ) of the state vector for said iteration, according to a non-invertible application dependent on at least the previous value of the state vector; said encryption device being characterized in that:
- ladite application réversible comprend au moins une première et une seconde fonctions à clé secrète (35a,35b), lesdites clés secrètes étant générées à partir d'au moins une section (Xn i,An-i,Bn-i) de la valeur précédente du vecteur d'état ; etsaid reversible application comprises at least a first and a second secret key function (35a, 35b), said secret keys being generated from at least one section (X n i, A n -i, B n -i) the previous value of the state vector; and
- ladite application non inversible dépend en outre d'une valeur intermédiaire courante (Xa) dépendant de la valeur précédente du vecteur d'état et du mot d'entrée courant, et étant isolée des mots d'entrée, respectivement des mots de sortie, par l'intermédiaire de ladite première fonction à clé secrète, respectivement de ladite seconde fonction à clé secrète.said non-invertible application also depends on a current intermediate value (X a ) depending on the previous value of the state vector and on the current input word, and being isolated from the input words or the output words respectively via said first secret key function, respectively of said second secret key function.
21. Dispositif de chiffrement selon la revendication 20, caractérisé en ce que ledit générateur pseudo-aléatoire est un générateur cryptographique d'une séquence de données pseudo-aléatoire selon la revendication 19. 21. An encryption device according to claim 20, characterized in that said pseudo-random generator is a cryptographic generator of a pseudo-random data sequence according to claim 19.
22. Dispositif de chiffrement selon la revendication 20 ou 21 adapté à traiter des mots d'entrée (Un, Yn) et/ou de sortie comprenant un nombre de bits variable en fonction des itérations, ledit dispositif comprenant en outre des moyens pour déterminer ledit nombre de bits variable à chaque itération à partir d'une section du vecteur d'état et ledit générateur pseudo-aléatoire comportant en outre, lorsque l'on détermine que ledit nombre de bits variable est nul à partir de la valeur courante du vecteur d'état, des moyens de calcul (45) selon une application non inversible dépendant de ladite valeur courante du vecteur d'état d'une nouvelle valeur courante (Vtemp) du vecteur d'état remplaçant ladite valeur courante du vecteur d'état.22. An encryption device according to claim 20 or 21 adapted to process input (U n , Y n ) and / or output words comprising a variable number of bits as a function of the iterations, said device further comprising means for determining said variable bit number at each iteration from a section of the state vector and said pseudo-random generator further comprising, when it is determined that said variable bit number is zero from the current value of the state vector, computing means (45) according to a non-invertible application dependent on said current value of the state vector of a new current value (V temp ) of the state vector replacing said current value of the vector of state.
23. Dispositif de chiffrement selon l'une quelconque des revendications 20 à 22 caractérisé en ce qu'il comporte en outre un dispositif de multiplexage cryptographique d'au moins deux blocs de messages en clair pour former au moins deux blocs de messages chiffrés, chaque bloc de message en clair correspondant à une succession de mots d'entrées, et en ce que lesdits au moins deux blocs de messages chiffrés sont ordonnancés à chaque itération en fonction d'une section de la valeur précédente du vecteur d'état.23. An encryption device according to any one of claims 20 to 22 characterized in that it further comprises a cryptographic multiplexing device of at least two blocks of messages in clear to form at least two blocks of encrypted messages, each a plaintext message block corresponding to a succession of input words, and in that said at least two encrypted message blocks are scheduled at each iteration according to a section of the previous value of the state vector.
24. Dispositif de hachage cryptographique (407) adapté à générer un condensé (hash) à partir d'un message {Mess) comprenant un nombre prédéterminé M de blocs de données (Zn), ledit dispositif de hachage étant caractérisé en ce qu'il comprend : - un générateur cryptographique (1) selon la revendication 19, générant une succession de M valeurs d'un vecteur d'état au cours de M itérations successives ; - des moyens pour, pour chacune des M itérations :A cryptographic hashing device (407) adapted to generate a digest (hash) from a message (Mess) comprising a predetermined number M of data blocks (Z n ), said hashing device being characterized in that it comprises: - a cryptographic generator (1) according to claim 19, generating a succession of M values of a state vector during successive M iterations; means for, for each of the M iterations:
-calculer la valeur intermédiaire courante (Xα) pour cette itération à partir d'un bloc de données courant (Zn) du message et de la valeur précédente du vecteur d'état générée par ledit générateur crγptographique ; et -fournir ladite valeur intermédiaire courante au générateur cryptographique ; - des moyens pour obtenir ledit condensé à partir de Ia dernière valeur (VM) du vecteur d'état générée par ledit générateur.calculating the current intermediate value (X α ) for this iteration from a current data block (Z n ) of the message and from the previous value of the state vector generated by said cryptographic generator; andproviding said current intermediate value to the cryptographic generator; means for obtaining said digest from the last value (VM) of the state vector generated by said generator.
25. Programme d'ordinateur comportant des instructions de code de programme pour la mise en œuvre du procédé de génération d'une séquence de données pseudo-aléatoire selon l'une quelconque des revendications 1 à 5, lorsque ledit programme est chargé et exécuté dans un ordinateur ou un système informatique.25. A computer program comprising program code instructions for implementing the method of generating a pseudo-random data sequence according to any one of claims 1 to 5, when said program is loaded and executed in a computer or computer system.
26. Programme d'ordinateur comportant des instructions de code de programme pour la mise en œuvre du procédé de hachage cryptographique selon la revendication 6, lorsque ledit programme est chargé et exécuté dans un ordinateur ou un système informatique.A computer program comprising program code instructions for implementing the cryptographic hash method according to claim 6 when said program is loaded and executed in a computer or computer system.
27. Programme d'ordinateur comportant des instructions de code de programme pour la mise en œuvre du procédé de chiffrement selon l'une quelconque des revendications 7 à 16, lorsque ledit programme est chargé et exécuté dans un ordinateur ou un système informatique. Computer program comprising program code instructions for implementing the encryption method according to any one of claims 7 to 16, when said program is loaded and executed in a computer or computer system.
EP08760471A 2007-06-05 2008-06-04 Method and device for encryption/decryption of an input data sequence Withdrawn EP2165456A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP08760471A EP2165456A2 (en) 2007-06-05 2008-06-04 Method and device for encryption/decryption of an input data sequence

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP07301086A EP2001154A1 (en) 2007-06-05 2007-06-05 Method and device for encryption/decryption of an input data sequence
PCT/EP2008/056889 WO2008148784A2 (en) 2007-06-05 2008-06-04 Cryptographic methods and devices for the pseudo-random generation of data encryption and cryptographic hashing of a message
EP08760471A EP2165456A2 (en) 2007-06-05 2008-06-04 Method and device for encryption/decryption of an input data sequence

Publications (1)

Publication Number Publication Date
EP2165456A2 true EP2165456A2 (en) 2010-03-24

Family

ID=38621191

Family Applications (2)

Application Number Title Priority Date Filing Date
EP07301086A Withdrawn EP2001154A1 (en) 2007-06-05 2007-06-05 Method and device for encryption/decryption of an input data sequence
EP08760471A Withdrawn EP2165456A2 (en) 2007-06-05 2008-06-04 Method and device for encryption/decryption of an input data sequence

Family Applications Before (1)

Application Number Title Priority Date Filing Date
EP07301086A Withdrawn EP2001154A1 (en) 2007-06-05 2007-06-05 Method and device for encryption/decryption of an input data sequence

Country Status (8)

Country Link
US (1) US8837719B2 (en)
EP (2) EP2001154A1 (en)
JP (2) JP5551065B2 (en)
KR (1) KR101564601B1 (en)
CN (1) CN101779412B (en)
AU (1) AU2008258582B2 (en)
CA (1) CA2687822C (en)
WO (1) WO2008148784A2 (en)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2912529A1 (en) * 2007-02-13 2008-08-15 France Telecom Computer program and/or data e.g. audio type data, coupling method for e.g. portable computer, involves protecting value associated with system, and executing software related to parameter from parameter group
US8311222B2 (en) * 2008-08-26 2012-11-13 GlobalFoundries, Inc. Hardware based multi-dimensional encryption
CN102135871B (en) * 2011-03-29 2013-12-18 深圳职业技术学院 Device for generating random number by using chaos theory and dynamic password token thereof
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
US8879733B2 (en) * 2012-07-10 2014-11-04 Infineon Technologies Ag Random bit stream generator with guaranteed minimum period
US8861725B2 (en) * 2012-07-10 2014-10-14 Infineon Technologies Ag Random bit stream generator with enhanced backward secrecy
EP2731291A1 (en) * 2012-11-12 2014-05-14 Gemalto SA Control method and device for controlling authenticity of codes resulting from application of a bijective algorithm to messages
US10187358B2 (en) * 2013-12-03 2019-01-22 Amazon Technologies, Inc. Data transfer optimizations
US20150222421A1 (en) * 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms
EP2996277B1 (en) * 2014-09-10 2018-11-14 Nxp B.V. Securing a crytographic device against implementation attacks
US10361844B2 (en) * 2015-04-20 2019-07-23 Certicom Corp. Generating cryptographic function parameters based on an observed astronomical event
US10079675B2 (en) 2015-04-20 2018-09-18 Certicom Corp. Generating cryptographic function parameters from a puzzle
US10375070B2 (en) 2015-04-20 2019-08-06 Certicom Corp. Generating cryptographic function parameters from compact source code
US11876889B2 (en) * 2015-09-03 2024-01-16 Fiske Software, Llc NADO cryptography with key generators
US10229282B2 (en) 2016-06-12 2019-03-12 Apple Inc. Efficient implementation for differential privacy using cryptographic functions
US10756892B2 (en) * 2017-02-09 2020-08-25 Sap Se Protecting data in a multi-tenant cloud-based system
CN108776583B (en) * 2018-06-07 2022-10-18 福建江夏学院 Method for establishing random number table of digits behind pi decimal point
US11451521B2 (en) * 2018-10-18 2022-09-20 Paypal, Inc. Systems and methods for encrypted data transmission
CN109150923A (en) * 2018-11-06 2019-01-04 江苏怡通数码科技有限公司 Transmitted data on network security processing based on Hybrid Encryption
WO2020215146A1 (en) * 2019-04-23 2020-10-29 Quantropi Inc. Enhanced randomness for digital systems
US11816228B2 (en) 2020-09-25 2023-11-14 Advanced Micro Devices, Inc. Metadata tweak for channel encryption differentiation
CN113098860B (en) * 2021-03-30 2023-04-07 三一汽车起重机械有限公司 CAN bus encryption method and device, engineering machinery and storage medium
CN113342985B (en) * 2021-08-02 2021-11-09 武汉泰乐奇信息科技有限公司 Big data regeneration method and device based on authority authentication

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003596A (en) * 1989-08-17 1991-03-26 Cryptech, Inc. Method of cryptographically transforming electronic digital data from one form to another
US5796836A (en) * 1995-04-17 1998-08-18 Secure Computing Corporation Scalable key agile cryptography
US5734721A (en) * 1995-10-12 1998-03-31 Itt Corporation Anti-spoof without error extension (ANSWER)
JP2001513213A (en) * 1997-02-26 2001-08-28 シーメンス アクチエンゲゼルシヤフト Method and apparatus for computer-assisted transposition for transposition of digital signals and method and apparatus for encryption of digital signals
US6339645B2 (en) * 1998-03-06 2002-01-15 Telefonaktiebolaget Lm Ericsson (Publ) Pseudo-random sequence generator and associated method
US7197142B2 (en) * 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
WO2004017192A2 (en) * 2002-08-19 2004-02-26 Analog Devices Inc. Fast linear feedback shift register engine
US7215769B2 (en) * 2002-11-06 2007-05-08 Fiske Software Llc Non-autonomous dynamical orbit cryptography
US20100067687A1 (en) * 2004-12-06 2010-03-18 The Trustees Of The Stevens Institute Of Technology Method and apparatus for maintaining data integrity for block-encryption algorithms
US7715563B2 (en) * 2006-02-16 2010-05-11 General Dynamics C4 Systems, Inc. Rapid acquisition of state vectors in an encrypted data communication system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JEAN-PIERRE TILLICH ET AL: "Group-theoretic hash functions", 19 July 1993, ALGEBRAIC CODING. FIRST FRENCH-ISRAELI WORKSHOP, SPRINGER, DE, PAGE(S) 90 - 110, ISBN: 978-3-540-57843-7, XP047000936 *
JEAN-PIERRE TILLICH ET AL: "Hashing with SL 2", 21 August 1994, ADVANCES IN CRYPTOLOGY (CRYPTO). SANTA BARBARA, AUG. 21 - 25, 1994; [PROCEEDINGS OF THE ANNUAL INTERNATIONAL CRYPTOLOGY CONFERENCE (CRYPTO)], BERLIN, SPRINGER, DE, PAGE(S) 40 - 49, ISBN: 978-3-540-58333-2, XP019194317 *

Also Published As

Publication number Publication date
US20100142705A1 (en) 2010-06-10
KR101564601B1 (en) 2015-10-30
US8837719B2 (en) 2014-09-16
JP2014139687A (en) 2014-07-31
KR20100031717A (en) 2010-03-24
AU2008258582B2 (en) 2013-05-30
JP5551065B2 (en) 2014-07-16
WO2008148784A2 (en) 2008-12-11
CA2687822C (en) 2016-07-26
JP5822970B2 (en) 2015-11-25
JP2010529496A (en) 2010-08-26
CN101779412B (en) 2014-12-17
CN101779412A (en) 2010-07-14
CA2687822A1 (en) 2008-12-11
WO2008148784A3 (en) 2009-08-20
EP2001154A1 (en) 2008-12-10
AU2008258582A1 (en) 2008-12-11

Similar Documents

Publication Publication Date Title
EP2165456A2 (en) Method and device for encryption/decryption of an input data sequence
EP1379023B1 (en) En- and Decryption Method executed by an integrated Circuit masking a nonlinear transformation as the SUBBYTE operation
EP1638245B2 (en) Protection of a DES algorithm
EP3228043B1 (en) Method of encryption with dynamic diffusion and confusion layers
EP2892176A2 (en) Method for converting a conditional access content and receiver for the implementation for said method
EP2377264B1 (en) Method and module for renewing the code of a cryptographic algorithm, method and module for generating a seed, security processor and recording medium for these methods
Sudeepa et al. A new approach for video steganography based on randomization and parallelization
FR2807898A1 (en) Cryptographic method based on elliptic curves, use simultaneous generation of random variable and scalar multiplication process to speed encryption and decryption
EP2005290A2 (en) Method and device for generating a pseudorandom string
FR3097348A1 (en) Encryption Algorithm Execution Protection
CA2712180A1 (en) Countermeasure method and devices for asymmetrical cryptography with signature diagram
FR2880750A1 (en) MICROPROCESSOR CARD AND CRYPTOGRAPHIC METHOD FOR PROTECTING A SECRET KEY
FR2963713A1 (en) METHOD FOR ENCRYPTING A DATA STREAM
EP2904731B1 (en) Method and device for digital data blocks encryption and decryption
EP1524795A1 (en) Data encryption in an electronic apparatus with several symmetrical processors
EP2296307A1 (en) Cryptographic data processing method secured against fault attacks
FR2979043A1 (en) DEVICE AND METHOD FOR COMPRESSING PUBLIC KEYS FOR FULLY HOMOMORPHIC ENCRYPTION ALGORITHM
WO2009068658A1 (en) Methods and devices for encrypting and decrypting a data message with random secret key
Kodada et al. Symmetric Key Cryptosystem based on Sequential State Machine
FR3135854A1 (en) Secure provision of keys for fully homomorphic encryption
WO2024018158A1 (en) Method for exchanging a secret which can withstand quantum computer attacks, and associated computer system and computer program
FR2909498A1 (en) MULTIPLE LENGTH DATA COMPRESSION FUNCTION USING SINGLE LENGTH INTERNAL FUNCTIONS
WO2023057649A1 (en) Method for generating a pseudorandom number and method for symmetrically encrypting a message
FR3061822A1 (en) METHOD OF ENCRYPTING OR DE-RECTIFYING A DATA N-UPLET WITH A PREDETERMINED SECRET KEY N-UPLET
FR2878390A1 (en) Non-public key cryptographic system for e.g. SEED encryption system, has compensation unit generating and storing compensation data such that sum of Hamming distances for encoded data and compensation data is maintained constant

Legal Events

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

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20100105

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA MK RS

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

Effective date: 20160728

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

Free format text: STATUS: EXAMINATION IS IN PROGRESS

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

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

18D Application deemed to be withdrawn

Effective date: 20170208

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

Free format text: STATUS: EXAMINATION IS IN PROGRESS

19U Interruption of proceedings before grant

Effective date: 20161014

D18D Application deemed to be withdrawn (deleted)
19W Proceedings resumed before grant after interruption of proceedings

Effective date: 20211102

PUAJ Public notification under rule 129 epc

Free format text: ORIGINAL CODE: 0009425

32PN Public notification

Free format text: NOTIFICATION ETABLIE CONFORMEMENT A LA REGLE 142(2) CBE (REPRISE DE LA PROCEDURE CONFORMEMENT A LA REGLE 142(2) CBE EN DATE DU 07.06.2021)

RAP3 Party data changed (applicant data changed or rights of an application transferred)

Owner name: ORIDAO

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

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

R18D Application deemed to be withdrawn (corrected)

Effective date: 20220503