EP2147368A1 - Procede de generation de chaines de bits pseudo-aleatoires - Google Patents

Procede de generation de chaines de bits pseudo-aleatoires

Info

Publication number
EP2147368A1
EP2147368A1 EP08759512A EP08759512A EP2147368A1 EP 2147368 A1 EP2147368 A1 EP 2147368A1 EP 08759512 A EP08759512 A EP 08759512A EP 08759512 A EP08759512 A EP 08759512A EP 2147368 A1 EP2147368 A1 EP 2147368A1
Authority
EP
European Patent Office
Prior art keywords
blocks
bits
coefficients
bit
value
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
EP08759512A
Other languages
German (de)
English (en)
Inventor
David Lefranc
Philippe Painchaut
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.)
Thales SA
Original Assignee
Thales SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thales SA filed Critical Thales SA
Publication of EP2147368A1 publication Critical patent/EP2147368A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number 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/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

Definitions

  • the object of the invention relates to a method for generating pseudo-random characters or pseudorandom bit strings. It is for example used for the protection of data confidentiality.
  • the invention applies, for example in the field of cryptography. In particular, it relates to cryptographic methods for protecting the confidentiality of data exchanges between two applications. It is used in all data coding / decoding systems that need to protect data exchanges. It can be used in the field of user or data authentication.
  • the property of confidentiality can be obtained by different methods, all inspired by the same principle. Considering a communication channel supposedly unsecured between two applications rated A and B, and assuming that A wishes to send confidential data to an application B via this communication channel, to do this, the application A must "hide” the data, and then transmit them to the application B. In order for the application to be able to recover the original data from the masked data, the application A must have used a "masking process" that is easily invertible for B and this only for B, and possibly for A, so that no other person can read the data.
  • cryptography distinguishes two different approaches: public key cryptography, also called asymmetric cryptography, and secret key cryptography, also called symmetric cryptography. In each of these methods, the data is represented as a string of characters, the characters generally used being characters 0, 1 then called bits.
  • the public key cryptography is based on the fact that the application B has a pair of key noted (P, S) such that:
  • P is a value known to everyone and is called a public key
  • S is a value known only by the application B and is called private key
  • Secret key cryptography is based on the fact that application A and application B have the same S value known only to them.
  • the value S is called secret key.
  • the application A uses the value S to encode the data so that knowledge of S is necessary to decode the encoded data.
  • the application B is then the only one, with the application A, to be able to decrypt, which guarantees the confidentiality of the data.
  • the protection of confidentiality in the context of secret key cryptography is generally called symmetric encryption.
  • C f (m, K)
  • N not necessarily equal to n.
  • the application f ⁇ thus obtained is also called permutation (term preferably used in the present description).
  • each secret key K defines a permutation f ⁇ .
  • the primitive f can be the AES or the DES.
  • Specifying how to encode multiple blocks of the same message is to define a procedure. That defined above and of coding each block independently of each other by passing them as input permutation f ⁇ esi ECB mode. The security of this mode is not very high. The problem of this mode is that a block m ,, whatever its position in the message will always be coded by the same value C 1 . This poses a real problem in practice.
  • NIST NIST
  • the security of a procedure represents the fact that it is difficult to decide whether a given string of characters is the result of the coding of data via this procedure, or if on the contrary this string is a string of characters taken at random. If such a distinction is difficult, then it is reasonable to think that this procedure is relatively safe.
  • this security can only be guaranteed when the number of blocks coded by the chosen operating mode remains below a constant (dependent on the mode). This constant is usually expressed as 2 na with n the size of the block and has a value between V ⁇ and 1.
  • the value a will usually be called the security threshold.
  • the computational cost represents the number of calls to the cryptographic primitive to encode a message of b blocks.
  • the ideal computational cost is b calls to the permutation f ⁇ (this is the case of the ECB mode).
  • the security of the mode is partly associated with the value a.
  • the higher the value a the higher the value 2 na, and the longer the mode remains safe.
  • a reminder is given for the security of modes standardized by NIST. It is also indicated if the associated security model is high (which is preferable) or otherwise low (which is rather penalizing).
  • the formal security arguments can be found in [BDJR97] and [SLLLY01].
  • the prior art discloses three proposals for possibly going beyond the security threshold V2.
  • the first two [KNUOO] and [ABAG01] have been provided with almost nonexistent safety evidence for the first and in a weak model for the second so that it is not possible to know if these modes actually have a constant greater than V2.
  • the third solution [IWA06] manages to reach the safety threshold 2/3 with a complete proof of security and in a high security model.
  • the latter proposal also has a computational cost close to the ideal computational cost (almost similar to the cost of the ECB mode).
  • the present invention relates to a method for generating pseudo-random character strings from an application, for example a permutation f ⁇ , an initial value x and coefficients a ,.
  • the present invention may in particular be used for block ciphering.
  • the object of the invention relates to a method for generating bit strings in a system in which the data exchanges between a first user and a second user are protected, characterized in that it comprises at least the following steps:
  • the invention is, for example, used in authentication applications.
  • One of the advantages of the present invention is that it makes it possible to construct new pseudo-random functions that have an output of size greater than n.
  • existing constructs have an output of only n bits while using the permutation f ⁇ several times. These constructions therefore have a very low efficiency (at best, they manipulate twice the block algorithm to output n bits, the yield then being V ⁇ , which in practice is not acceptable).
  • the present invention uses the permutation f ⁇ more than once, but to generate n blocks of n bits. In addition, the yield obtained is almost equal to 1.
  • FIG. 2 an example of use of the method according to the invention in an authentication system.
  • One of the aims of the invention is to create new pseudo-random functions, using, in particular, permutations whose output is an n-bit block; the output of the new function being of size equal to a multiple of n bits, denoted u * n bits, u being an integer.
  • the principle of the invention consists, in particular, in considering t calls to the block algorithm generating at the output a block of n bits in order to obtain f strings of n bits which will then be adequately organized according to coefficients provided in parameter for get the u ⁇ t blocks of n bits at the output of the function.
  • the example given relates to the implementation of the method for a case in which the coefficients used to organize the n-bit strings are the coefficients of a matrix generating d a linear code.
  • Linear codes have an associated distance denoted d. This distance is concretized in the coefficients of the associated generator matrix.
  • these coefficients make it possible to organize the t chains so that the u ⁇ t blocks of n bits of the output of the function are then sufficiently different ("distant") from each other.
  • disant the pseudo-random character of the output (of n blocks of n bits) of the new function.
  • the security level obtained by the implementation of the method is equal to dld + ⁇ .
  • such functions can also be used to define new modes of operation, such that their security is identical to the security of the underlying function used.
  • c / is the distance of the code linear used.
  • linear codes of distance greater than or equal to 3 it is then possible to obtain procedures having a very high security, not described in the prior art.
  • the method according to the invention relates to a method of generating pseudo-random character strings from a permutation f ⁇ , an initial value x and coefficients ⁇ ,.
  • the present invention may in particular be used to encode a message cut into blocks. In such a context, two considerations are possible.
  • the product of the coefficients u * t is variable and can vary according to the value of t.
  • U * t coefficients are divided into sequences of f u values. For clarity, this distribution can be represented as a matrix containing u rows and t columns as described below.
  • the representation in matrix form is used as an illustration, in order to improve the understanding of the example given to illustrate the method, but is in no way essential for the proper functioning of the invention.
  • cry 1 ⁇ - ⁇ , 2 ⁇ - ⁇ , 3 ... ⁇ i, f
  • the initial data x can be a value stored in the application, or a value resulting from a random or pseudo-random or deterministic process. From this value x, it is possible to generate f values, represented by way of example in the present description in the form of a sequence v containing f values denoted V 1 , ⁇ ⁇ ⁇ i ⁇ t.
  • the application will choose, according to its resources, to calculate all or part of the f values denoted V 1 , 1 ⁇ / ⁇ f and of store them; or on the contrary to calculate the value v, when this value is necessary.
  • the method determines u blocks S containing pseudo-random characters.
  • the coding of u rated blocks u rated coded blocks , C 2 , ..., C u will then be easily obtained from the u blocks S ,. More precisely, for all /, 1 ⁇ i u u, to code the different blocks m, is to calculate
  • can represent: • the operation xor equal to the "exclusive or" bitwise.
  • the definition of the operands can vary within the calculation of a block S ,.
  • the application may choose to retain all or part of the parameters of previous iterations or conversely to use all different parameters.
  • the data of an initial value x, a permutation f ⁇ and the sequence of coefficients presented in the form of the matrix u * u ⁇ t u).
  • the sequence of coefficients and the permutation f ⁇ will be, for example, constant at each iteration, and the initial value will be x for the first iteration, then x + t for the second, then x + 2t for the third and more generally x + ( / -1) * f for / em ⁇ iteration.
  • the first u blocks of n bits, those of the first group, will be encoded by the first iteration (with x as initial value) of the present invention. For all /, 1 ⁇ / ⁇ u, the coding of the block / noted m, is then obtained by the application of the formula
  • the u blocks m u + following, 1 ⁇ / ⁇ u, will be coded by calculating
  • the sequence of coefficients and the permutation / ⁇ will be constant at each iteration, and the initial value will be x for the first iteration, then x + u + 1 for the second, then x + 2 (u + 1) for the third and above. generally x + (i - 1) * (u + 1) for / em ⁇ iteration.
  • the first u blocks will be coded thanks to the first iteration (with x as initial value) of the present invention.
  • a correction code is associated with a dimension that corresponds to the original size of the words (according to the notation of the example u), a size that corresponds to the size of the words of the code (according to the notation of the example t) and a distance noted d.
  • the present invention is particularly interesting when the coefficients provided correspond to the coefficients of a generator matrix of a linear code of dimension u, size t and distance d. Such a matrix will then have u rows and t columns.
  • this procedure consisting of the iteration of the method described above, remains safe as long as the number of encrypted blocks remains below 2 nd / d + ⁇
  • the security of the operating mode described above is then guaranteed as long as the number of coded blocks remains less than 2 3 ⁇ / 4 , a number that no other coding solution known from the prior art can hope.
  • each m ⁇ represents a block of 128 bits.
  • the server and the client then publicly agree (ie non-secretly): • a block coding algorithm using 128-bit keys, say the AES.
  • AES K " , t
  • K the coding of the 128-bit word t using the secret key K.
  • AES a sequence of binary values that can be represented in the form of a matrix G having 4 rows and 5 columns defined by 1 0 0 0 1
  • the operand ⁇ represents the operation of "or exclusive" bit by bit. This operand verifies
  • a Client 2 chooses (step E 1 ) then a first initial value x of size 128 bits and applies a first time the present invention using G to calculate (step E 2 ) 4 (the number of lines of G) blocks S, of 128 bits defined by
  • the client can consider a second initial value x ⁇
  • the client can once again apply the present invention with the initial value x 1 and the matrix G representing the sequence of coefficients.
  • the client then obtains 4 new S blocks, 128 bits defined by
  • the client can then code the last 4 blocks of the message M using these 4 new S blocks. In fact, the customer then calculates
  • the client has been able to encode the message M into a coded message C defined by
  • the client sends (step E 4 ) then to the server the message C and the couple (x, y) of initial data.
  • the server can, by applying the present invention twice as well, recalculate (step E 5 ) the values
  • the server then knows the transfer order it can now run.
  • the distributor provides the customer with a terminal 4 and a smart card 5 in which is:
  • a read-only memory zone 5i containing • A secret key K known only by the distributor (who will have for example manufactured the card itself) and specific to the card. For example, we consider this to be a 128-bit key that can be used for AES.
  • AES K, t
  • the distributor can send the customer an initial value x (step E 10 ).
  • the smart card at the reception of x, will then put in implement the steps of the method according to the invention, taking as a parameter the key K and the matrix G stored in ROM and the initial value x sent by the distributor.
  • the smart card calculates (step E 11 ) the 4 blocks of 128 bits defined by
  • the smart card then returns the 4 blocks S ,, (which can be considered as a single block of 512 bits) step E 12 .
  • the distributor On receipt of these 4 blocks, the distributor also calculates, according to the invention and with the parameters K, G and x, 4 blocks of 128 bits (step E 13 ). If these 4 blocks are identical to the four received, then the client is authenticated to the distributor and can logically obtain the content to which it has legitimate access (steps E 14 and E 15 ).
  • the method can also be used to authenticate data exchanged in a system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Procédé pour générer des chaînes de bits pseudo-aléatoires dans un système dans lequel les échanges de données entre un premier utilisateur et un deuxième utilisateur sont protégés caractérisé en ce qu'il comporte au moins les étapes suivantes : utiliser une application f<SUB>K</SUB> de taille de sortie n bits, déterminer une valeur x et à partir de cette valeur x et en appliquant l'application f<SUB>K</SUB>, générer t valeurs v<SUB>i</SUB>, à partir des t valeurs v<SUB>i</SUB> et de u*t coefficients déterminer u blocs S<SUB>i</SUB> contenant des caractères pseudo-aléatoires. Application au domaine du codage ou de l'authentification

Description

PROCEDE DE GENERATION DE CHAINES DE BITS PSEUDO-ALEATOIRES
L'objet de l'invention concerne un procédé pour générer des caractères pseudo-aléatoires ou des chaînes de bits pseudo-aléatoires. Il est par exemple utilisé pour la protection de la confidentialité de données. L'invention s'applique, par exemple dans le domaine de la cryptographie. En particulier, elle se rapporte aux procédés cryptographiques de protection de la confidentialité des échanges de données entre deux applications. Elle est utilisée dans tous les systèmes de codage/décodage de données qui nécessitent de protéger les échanges de données. Elle peut être utilisée dans le domaine de l'authentification d'utilisateurs ou de données.
A l'heure actuelle, la propriété de confidentialité peut être obtenue selon différents procédés, s'inspirant tous d'un même principe. En considérant un canal de communication supposé non sécurisé entre deux applications notées A et B, et en supposant que A souhaite envoyer des données confidentielles à une application B via ce canal de communication, pour ce faire, l'application A doit « masquer » les données, puis les transmettre à l'application B. Afin que l'application soit en mesure de récupérer les données d'origine à partir des données masquées, il faut que l'application A ait utilisé un « procédé de masquage » qui soit facilement inversible pour B et ceci uniquement pour B, et éventuellement pour A, afin qu'aucune autre personne ne puisse prendre connaissance des données. Pour obtenir une telle technique de masquage, la cryptographie distingue deux approches différentes : la cryptographie à clé publique, appelée aussi cryptographie asymétrique, et la cryptographie à clé secrète, appelée aussi cryptographie symétrique. Dans chacune de ces méthodes, les données sont représentées sous forme d'une chaîne de caractères, les caractères généralement utilisés étant des caractères 0, 1 alors appelés bits. La cryptographie à clé publique repose sur le fait que l'application B dispose d'une paire de clé notée (P, S) telle que :
• P est une valeur connue de tout le monde et est appelée clé publique,
• S est une valeur connue uniquement par l'application B et est appelée clé privée,
Les valeurs de P et S sont reliées par une relation mathématique telle qu'il est difficile de retrouver S à partir de la simple connaissance de P. Ainsi, seule l'application B est à même de connaître la valeur S. En cryptographie à clé publique, l'application A utilise la clé publique P de l'application B pour coder les données. Dans ce contexte, il est nécessaire de disposer de la clé privée pour pouvoir décoder les données. Ainsi, seule l'application B est à même de connaître la valeur S.
La cryptographie à clé secrète repose, quant à elle, sur le fait que l'application A et l'application B disposent d'une même valeur S connue d'elles seules. La valeur S est appelée clé secrète. Ainsi, l'application A utilise la valeur S pour coder les données de sorte que la connaissance de S soit nécessaire pour décoder les données codées. L'application B est alors la seule, avec l'application A, à pouvoir déchiffrer, ce qui garantit bien la confidentialité des données. La protection de la confidentialité dans le contexte de la cryptographie à clé secrète (cryptographie symétrique) est généralement appelée méthode de chiffrement symétrique. Il existe deux catégories de méthodes de chiffrement. La première est appelée chiffrement à flot et la seconde est appelée chiffrement par bloc. En chiffrement à flot, les différents caractères représentant la donnée sont codés successivement un à un. En chiffrement par bloc, la chaîne de caractères représentant la donnée est découpée sous forme de plusieurs blocs consécutifs de caractères et ces blocs, tous de même taille, sont ensuite codés successivement. A chaque codage d'un bloc, plusieurs caractères sont donc codés simultanément. II existe de nombreuses méthodes de chiffrement par bloc. Toutes ces solutions reposent sur l'utilisation d'une primitive cryptographique. Une primitive cryptographique f est une application prenant en entrée une chaîne notée m de n caractères et une chaîne notée Kàe k caractères. En sortie, la primitive f fournit une chaîne de N caractères notée C vérifiant C= f( m , K), avec N non nécessairement égal à n. Chaque choix d'une entrée K définit une application fκ telle que fκ{ m ) = f(m, K). L'entrée K est appelée clé secrète.
La présente invention se rapporte, notamment, au cas où la primitive cryptographique f définit, pour chaque valeur K possible, une fonction bijective /κ (en particulier n=N). L'application fκ ainsi obtenue est également appelée permutation (terme préférentiellement utilisé dans la présente description). Ainsi, chaque clé secrète K définit une permutation fκ. En pratique, la primitive f pourra être l'AES ou le DES.
Pour coder un bloc m contenant n caractères, il suffit d'utiliser une fois la fonction fκ. Par exemple, on pourra envisager que le codé, noté C, du bloc m soit calculé par C= fκ(m). En pratique, la donnée confidentielle ne contiendra pas un unique bloc, mais au contraire s'écrira comme la suite de b blocs notés m-i, ..., mb. Il devient important de savoir comment coder ces b blocs. En s'inspirant du calcul C= fκ(m), il est possible d'envisager que les différents blocs m,, 1 ≤ i ≤ b, soient codés en des blocs notés C1, 1 ≤ i ≤ b, vérifiant C1 = fκ(m,).
Spécifier comment coder plusieurs blocs d'un même message consiste à définir un mode opératoire. Celui défini ci-dessus et consistant à coder chaque bloc indépendamment les uns des autres en les passant comme entrée de la permutation fκ esi le mode ECB. La sécurité de ce mode n'est pas très élevée. Le problème de ce mode est qu'un bloc m,, quelle que soit sa position dans le message sera toujours codé par la même valeur C1. Cela pose un réel problème en pratique.
Il existe un grand nombre de modes opératoires, certains étant standardisés par le NIST [NIS01 ]. Différents critères existent pour juger de la qualité de ces modes. Les deux principaux sont le niveau de sécurité de ce mode et le coût calculatoire engendré par ce mode. La sécurité d'un mode opératoire représente le fait qu'il soit difficile de décider si une chaîne de caractères donnée est le résultat du codage d'une donnée via ce mode opératoire, ou si au contraire cette chaîne de caractères est une chaîne de caractères pris au hasard. Si une telle distinction est difficile, alors il est raisonnable de penser que ce mode opératoire est relativement sûr. Toutefois, cette sécurité ne peut être garantie que lorsque le nombre de blocs codés par le mode opératoire choisi reste inférieur à une constante (dépendante du mode). Cette constante s'exprime généralement sous la forme 2na avec n la taille du bloc et a une valeur comprise entre V∑ et 1. La valeur a sera généralement appelée seuil de sécurité. Le coût calculatoire représente le nombre d'appels à la primitive cryptographique pour coder un message de b blocs. Le coût calculatoire idéal est b appels à la permutation fκ (c'est le cas du mode ECB). La sécurité du mode est en partie associée à la valeur a. Bien évidemment, plus la valeur a est grande, plus la valeur 2na est grande et plus longtemps le mode reste sûr. Dans le tableau suivant, un rappel est donné pour la sécurité des modes standardisés par le NIST. Il est également précisé si le modèle de sécurité associé est élevé (ce qui est préférable) ou au contraire faible (ce qui est plutôt pénalisant). Les arguments formels de sécurité peuvent être trouvés dans [BDJR97] et [SLLLY01 ].
Les solutions existantes (et standardisées) ont une sécurité ne dépassant pas le seuil ΛA.
L'art antérieur divulgue trois propositions permettant d'aller éventuellement au-delà du seuil de sécurité V2. Les deux premières [KNUOO] et [ABAG01 ] ont été fournies avec une preuve de sécurité quasiment inexistante pour la première et dans un modèle faible pour la seconde de sorte qu'il n'est pas possible de savoir si ces modes ont effectivement une constante supérieure à V2. La troisième solution [IWA06] parvient quant à elle à atteindre le seuil de sécurité 2/3 avec une preuve de sécurité complète et dans un modèle de sécurité élevé. Cette dernière proposition dispose également d'un coût calculatoire proche du coût calculatoire idéal (quasiment similaire au coût du mode ECB).
La présente invention concerne un procédé de génération de chaînes de caractères pseudo-aléatoires à partir d'une application, par exemple une permutation fκ, d'une valeur initiale x et de coefficients a,. La présente invention peut en particulier être utilisée pour le chiffrement par bloc.
L'objet de l'invention concerne un procédé pour générer des chaînes de bits dans un système dans lequel les échanges de données entre un premier utilisateur et un deuxième utilisateur sont protégés caractérisé en ce qu'il comporte au moins les étapes suivantes :
• utiliser une application fκ àe taille de sortie n bits,
• déterminer une valeur x et à partir de cette valeur x et en appliquant plusieurs fois l'application fκ, afin de générer t valeurs V1,
• à partir des t valeurs v, et de u*t coefficients déterminer u blocs S, contenant des caractères pseudo-aléatoires.
Selon un mode de réalisation, l'objet de l'invention concerne un procédé pour générer des chaînes de bits pseudo-aléatoires, au sein d'un système comprenant un module de codage de données, telles qu'un message de b= f*u*n + q bits, où f ét u sont supérieurs ou égaux à 0, et q est compris entre 0 et u*n, peut se mettre sous la forme de f groupes de u blocs de n bits et d'un (f+1)ième groupe de q bits caractérisé en ce que : le codage d'un groupe considéré de u blocs comporte au moins les étapes suivantes : • pour le groupe considéré choisir une valeur initiale x,
• à partir des t valeurs v, générées et de u*t coefficients déterminer u blocs S, contenant des caractères pseudo-aléatoires afin de coder les u blocs du groupe considéré,
• combiner les u blocs du groupe considéré avec les u blocs S, afin d'obtenir le groupe codé,
• réitérer ces trois étapes pour les f groupes, pour le (f+1)ième groupe de q bits,
• choisir une valeur initiale de x,
• à partir des t valeurs V1 générées et de u*t coefficients déterminer un nombre de blocs S, égal au moins à la partie entière supérieure de q/n,
• combiner q bits extraits des blocs S, déterminés avec les q bits du (f+1)\ème groupe.
L'invention est, par exemple, utilisée dans des applications d'authentification. Un des avantages de la présente invention est qu'elle permet de construire de nouvelles fonctions pseudo-aléatoires qui ont une sortie de taille supérieure à n. Généralement, les constructions existantes ont une sortie uniquement de n bits tout en utilisant plusieurs fois la permutation fκ. Ces constructions ont donc un rendement très faible (au mieux, elles manipulent deux fois l'algorithme bloc pour sortir n bits, le rendement étant alors de V∑, ce qui en pratique n'est pas acceptable). La présente invention utilise plusieurs fois la permutation fκ, mais pour générer u blocs de n bits. De plus, le rendement obtenu est quasiment égal à 1. D'autres caractéristiques et avantages apparaîtront à la lecture de la description détaillée donnée à titre d'exemple et non limitative qui suit faite en regard des figures qui représentent
• La figure 1 , un exemple d'échanges de données de manière sécurisée entre un serveur bancaire et un utilisateur,
• La figure 2, un exemple d'utilisation du procédé selon l'invention dans un système d'authentification.
L'un des buts de l'invention est de créer de nouvelles fonctions pseudo- aléatoires, en utilisant, notamment, des permutations dont la sortie est un bloc de n bits; la sortie de la nouvelle fonction étant de taille égale à un multiple de n bits, notée u*n bits, u étant un nombre entier. Le principe de l'invention consiste, notamment, à considérer t appels à l'algorithme bloc générant en sortie un bloc de n bits afin d'obtenir f chaînes de n bits qui seront alors organisées de manière adéquate selon des coefficients fournis en paramètre pour obtenir les u ≤ t blocs de n bits en sortie de la fonction.
Afin de mieux faire comprendre l'objet de la présente invention, l'exemple donné est relatif à la mise en œuvre du procédé pour un cas où les coefficients utilisés pour organiser les f chaînes de n bits sont les coefficients d'une matrice génératrice d'un code linéaire. Les codes linéaires ont une distance associée notée d. Cette distance se concrétise dans les coefficients de la matrice génératrice associée. Ainsi, ces coefficients permettent d'organiser les t chaînes de sorte que les u ≤ t blocs de n bits de la sortie de la fonction soient alors suffisamment différents (« distants ») les uns des autres. Ainsi, même en tentant des combinaisons de ces u blocs de sortie, il reste difficile de mettre à mal le caractère pseudo-aléatoire de la sortie (de u blocs de n bits) de la nouvelle fonction. Fort logiquement, plus la distance du code est grande, plus cette mise à mal est difficile et plus la fonction ainsi créée est fortement pseudo-aléatoire. Le niveau de sécurité obtenu par la mise en œuvre du procédé est égale à dld+λ . Comme il a été précédemment annoncé, de telles fonctions peuvent être également utilisées pour définir de nouveaux modes opératoires, tels que leur sécurité soit identique à la sécurité de la fonction sous-jacente utilisée. Ainsi, en utilisant les fonctions pseudo-aléatoires paramétrées par des matrices de codes linéaires obtenues par la présente invention, il est possible d'obtenir des modes opératoires avec un niveau de sécurité égal à dld+λ , où c/ est la distance du code linéaire utilisé. En particulier, en utilisant des codes linéaires de distance supérieure ou égale à 3, il est alors possible d'obtenir des modes opératoires ayant une sécurité très élevée, non décrite dans l'art antérieur.
Selon un exemple de mise en œuvre, le procédé selon l'invention concerne un procédé de génération de chaînes de caractères pseudo-aléatoires à partir d'une permutation fκ, d'une valeur initiale x et de coefficients σ,. La présente invention peut en particulier être utilisée pour coder un message découpé en bloc. Dans un tel contexte, deux considérations sont possibles.
• Si l'on souhaite coder u blocs d'un message, il est alors suffisant de disposer (en plus de la valeur initiale et de la permutation) de u*t coefficients σ, pour une valeur t ≥ 1 quelconque.
• Si l'on dispose de la donnée de u*t, t ≥ 1 coefficients σ, (en plus de la valeur initiale et de la permutation), il est alors possible de coder u blocs.
La valeur de t étant variable, le produit des coefficients u*t est variable et peut varier selon la valeur de t.
Les u*t coefficients sont répartis en u séquences de f valeurs. Pour plus de clarté, cette répartition peut être représentée sous la forme d'une matrice contenant u lignes et t colonnes comme décrite ci-dessous. La représentation sous forme matricielle est utilisée à titre illustratif, afin d'améliorer la compréhension de l'exemple donné pour illustrer le procédé, mais n'est en aucun cas indispensable pour le bon fonctionnement de l'invention.
cri , 1 σ-ι ,2 σ-ι ,3 ... σi ,f
cru-1 ,1 oru-i ;2 oru-i ;3 ... ctu-Λ .t
Selon l'invention, la donnée initiale x peut être une valeur stockée dans l'application, ou une valeur issue d'un processus aléatoire ou pseudoaléatoire ou déterministe. A partir de cette valeur x, il est possible de générer f valeurs, représentées à titre d'exemple dans la présente description sous la forme d'une suite v contenant f valeurs notées V1, ~\ ≤ i≤ t. Un exemple pour i/est : v = ( 1/1= /κ(x+1 ), V2= fκ{x+2), V3= fκ{x+3), ... , VtA= fκ{x+t-î ), vt= fκ{x+t) ) Selon l'invention, l'application choisira, selon ses ressources, de calculer tout ou partie des f valeurs notées V1, 1 < / < f et de les stocker; ou au contraire de calculer la valeur v, lorsque cette valeur est nécessaire. Le procédé selon l'invention accepte plus généralement l'utilisation de t valeurs obtenues par un calcul de la forme g{fκ ,x), 1 ≤ i ≤ t, où les applications g, sont des applications quelconques (LFSR, transformation affine, transformation linéaire, registre diviseur, addition modulaire...). Ainsi, l'exemple précédent correspond à g{fκ ,x) = Hx+i)-
D'autres exemples sont choisis parmi la liste non exhaustive suivante :
• gl{fκ ,x) = fκ{x + i - î ), • g,(fκ ,x) = H L1 {x)) où /.' correspond à la /emθ itération d'un LFSR ou d'un registre diviseur, • g {fκ ,X) = fκ{ a,x + b!) où a, et b, sont des coefficients d'une transformation affine,
• g{fκ ,x) = H 8iix + b, mod 2") où a, et b, sont des coefficients d'une transformation affine, • g{fκ ,x) = fκ{x + i) © d,, où Θ représente l'opération de xor bit à bit et d, est une chaîne de bits,
• g,(fκ ,x) = fκ{x + / - 1 ) Θ d,, où Θ représente l'opération de xor bit à bit et d, est une chaîne de bits,
• g{fκ ,x) = U Θ d,, où L' correspond à la /èmθ itération d'un LFSR ou d'un registre diviseur, Θ représente l'opération de xor bit à bit et d, est une chaîne de bits.
A partir des f valeurs notées V1, 1 < /< f et des u*t coefficients CT2,1 CT2,2 Ct2,3 ... Q2,t
CTu-1 ,1 Ou-λ ,2 QuA , 3 - - - Ou-λ ,t
Ou,λ Ou,2 Qu,3 - - - Ouj le procédé détermine u blocs S, contenant des caractères pseudo-aléatoires. Le codage de u blocs notés u blocs codés notés , C2, ..., Cu sera alors facilement obtenu à partir des u blocs S,. Plus précisément, pour tout /, 1 ≤ i≤ u, coder les différents blocs m, revient à calculer
S, = (σ,,i ® 1/1 ) Θ {a 1,2 ® V2) Θ (σ,,3 ® V3) Θ ... Θ (σ,,f ® vf) C, = m, Θ S, Où ® peut représenter :
• La multiplication si elle est définie. En particulier, o Dans le cas σ,,y = 1 , ay® V1 = V1 o Dans le cas σ,,y = 0, a,,y ® V1 = O (chaîne de n bits tous égaux à 0). Cela revient au même d'ignorer le terme a,,y® V1 • La sélection d'une proportion de bits. En particulier, si 0 < ahj ≤ 1 , a,tl ® Vj représente la sélection de ahj % des n bits, selon un critère de sélection connu de l'application.
Et où Θ peut représenter : • l'opération xor égale au « ou exclusif » bit à bit.
• L'addition modulaire modulo 2"
La définition des opérandes peut varier au sein du calcul d'un bloc S,.
Selon l'invention, pour coder f*u blocs, il suffit d'itérer le processus décrit précédemment ffois. Chaque itération nécessite les paramètres suivants :
• la donnée d'une valeur initiale x,
• la donnée de u*t coefficients,
• la donnée de la permutation fκou d'une application choisie.
Selon l'invention, si l'application y voit un intérêt, elle pourra coder b blocs d'un message, b quelconque, en considérant b=u\ + U2 + ... + us et coder les t/i blocs selon le procédé décrit dans la présente description, puis les U2 blocs avec une nouvelle itération du procédé et ainsi de suite, les différentes valeurs u-i, U2, ..., us pouvant être différentes les unes des autres, ou certaines égales, ou encore toutes égales. A chaque itération du procédé de génération de chaînes pseudo-aléatoires, l'application pourra choisir de conserver tout ou partie des paramètres de précédentes itérations ou au contraire d'utiliser des paramètres tous différents. Premier exemple de mise en œuvre de l'invention Supposons la donnée d'une valeur initiale x, d'une permutation fκ et de la suite de coefficients présentée sous la forme de la matrice u*u {t = u).
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 1 0
0 0 0 0 0 1
En considérant la donnée de f valeurs v, obtenues par V1 = fκ{x + i - 1 ), pour tout /, 1 < / < t=u, l'opérande Θ sera à tout moment de l'itération le ou exclusif bit à bit et l'opérande ® sera la multiplication par 0 ou 1 (les valeurs des coefficients) comme défini précédemment.
Soit un message de b bits, b égal à f*u*n + q bits avec f ét u supérieurs ou égaux à 0, et q supérieur ou égal à 0 et strictement inférieur à u*n, devant être codé. La suite de coefficients et la permutation fκ seront, par exemple, constantes à chaque itération, et la valeur initiale sera x pour la première itération, puis x+t pour la seconde, puis x+2t pour la troisième et plus généralement x+(/-1 )*f pour la /emθ itération. Les u premiers blocs de n bits, ceux du premier groupe, seront codés grâce à la première itération (avec x comme valeur initiale) de la présente invention. Pour tout /, 1 < / < u, le codage du bloc / noté m, s'obtient alors par l'application de la formule
S; ® 1/1 ) ® (cr,,2 ® V2) ® (ah3 ® V3) ® ... ® (σα ® vt) C1 =m, ® S1
Or, tous les coefficients de la ligne / de la matrice sont nuls, sauf le /emθ, (matrice indentité). Par conséquent, S, se réduit à S, = a ι,ι ® V1 = V1 = fκ(x+ i - 1 ) de sorte que
C1 =m, ® S1 = m, ® fκ(x+ i - 1 ).
Lors de la seconde itération de l'invention, pour le codage du second groupe de u blocs de n bits, les u blocs mu + , suivants, 1 < / < u, seront codés en calculant
S, = a u ® V1 = V1 = fκ{x + u + / - 1 ) de sorte que
Cu+ 1 = mu+ 1 ® Sj = m, ® fκ{x + u + / - 1 ).
Les deux itérations peuvent s'exprimer sous la forme commune suivante. Pour tout /, 1 ≤ i≤ 2u, S1 = Ux + I - I ) C1 =ITi1 Θ S1
Au final, après f différentes itérations, le processus de codage des u*f premiers blocs du message se résume sous la forme pour 1 ≤ i≤ u*f , Si = Ux+ / - 1 ) coefficient à utiliser pour coder le bloc d'indice i Ci =Ui1 Θ S, valeur du bloc d'indice i codé.
Les derniers q bits, notés sous la forme d'un unique bloc m'u*M seront codés en générant suffisamment de blocs S, pour pouvoir en extraire q bits, afin de former le bloc S'U*M. Le (f+1)ième groupe est codé en un groupe CU*M =
Second exemple d'application
En supposant la donnée d'une valeur initiale x, d'une permutation fκ et de la suite de coefficients présentée sous la forme de la matrice u*(u+1 ) {t = u+'\ ).
1 1 0 0 .... 0 0 0 1 0 1 0 .... 0 0 0
1 0 0 1 .... 0 0 0
1 0 0 0 .... 1 0 0 1 0 0 0 .... 0 1 0 1 0 0 0 .... 0 0 1
En considérant la donnée de valeurs v, obtenues par v, = Ux + / - 1 ), pour tout /, 1 < i ≤ t = u + 1. L'opérande Θ sera à tout moment de l'itération le ou exclusif bit à bit et l'opérande ® sera la multiplication par 0 ou 1 (les valeurs des coefficients) comme définie précédemment. Soit un message b=f*u*n + q bits, avec f ét u supérieurs ou égaux à 0, et q supérieur ou égal à 0 et strictement inférieur à u*n, devant être codé. La suite de coefficients et la permutation /^ seront constantes à chaque itération, et la valeur initiale sera x pour la première itération, puis x+u+1 pour la seconde, puis x+2(u+1 ) pour la troisième et plus généralement x + (i - 1)*(u+1) pour la /emθ itération. Les u premiers blocs seront codés grâce à la première itération (avec x comme valeur initiale) de la présente invention. Pour tout /, 1 ≤ i ≤ u, le codage du bloc / noté m, s'obtient alors par l'application de la formule S, ® 1/1) Θ (σ,,2 ® V2) ® (σ,,3 ® V3) Θ ... Θ (σ,,f ® vt) C1 =m, ® S, Or, tous les coefficients de la ligne / sont nuls, sauf le 1 θr et le (/+1 )eme. Par conséquent, cette formule se réduit à
S1 = (cr,,i ® vi) @ (σ;>;+i ® V1+1) = Vi ® vl+λ = fκ{x) ® fκ{x+ / - 1 ) de sorte que
C1 = m, ® fκ(x) ® fκ{x + i - λ ) Lors de la seconde itération de l'invention, les u blocs mu + l pour tout /, 1 < / < u, sont codés par
Cu+ , = mu+ , ® fκ(x + u - λ ) ® fκ{x + u + 1 + / - 1 )
Et ainsi de suite pour les f premiers groupes . Les derniers q bits, notés sous la forme d'un unique bloc m'u*M seront codés en générant suffisamment de blocs S, pour pouvoir en extraire q bits, afin de former le bloc S'u*f+1. Le (f+1 )ième groupe est codé en un groupe CU*M =
Obtention de nouveaux modes opératoires Dans les deux précédents exemples d'application de l'invention permettant d'illustrer le fait que l'invention rend certaines solutions existantes comme des cas particuliers, les coefficients fournis sous forme matricielle ne correspondent pas à des valeurs quelconques.
Concernant le mode compteur, premier exemple, la matrice de coefficient fournie correspond à la matrice identité, qui peut être considérée comme la matrice génératrice du code linéaire identité auquel est associée une distance c/=1.
Dans le second exemple, la matrice ayant uniquement des 1 sur la première colonne correspond à la matrice génératrice du code linéaire de parité auquel est associé la distance d=2. A tout code correcteur est associée une dimension qui correspond à la taille d'origine des mots (selon les notations de l'exemple u), une taille qui correspond à la taille des mots du code (selon les notations de l'exemple t) et une distance notée d. La présente invention est tout particulièrement intéressante lorsque les coefficients fournis correspondent aux coefficients d'une matrice génératrice d'un code linéaire de dimension u, de taille t et de distance d. Une telle matrice aura alors u lignes et t colonnes. Ainsi, l'utilisation d'une matrice génératrice de taille u*t comme donnée de coefficients, d'une valeur initiale x et d'une permutation fκ permet, en une itération de coder u blocs. Chaque itération conserve les mêmes coefficients et la même permutation. Seule la donnée initiale change. Ainsi, lors de la /emθ itération 2 < /, la donnée initiale vaut x + (/- ~\ )*t. En utilisant de cette sorte la présente invention, il est alors possible de prouver la sécurité du mode opératoire ainsi obtenu dans un modèle de sécurité élevé, et en particulier, la distance d du code est directement impliquée dans l'analyse de sécurité. Ainsi, il est possible de montrer que ce mode opératoire, consistant en l'itération du procédé décrit précédemment, reste sûr tant que le nombre de blocs chiffrés reste inférieur à 2nd/d+\ Ainsi, en considérant la matrice génératrice d'un code linéaire de distance 3, la sécurité du mode opératoire décrit ci-dessus est alors garantie tant que le nombre de blocs codés reste inférieur à 23π/4, nombre qu'aucune autre solution de codage connue de l'art antérieur ne peut espérer.
Pour un code linéaire de distance 4, la sécurité pourra être garantie dans que le nombre de blocs codés est inférieur à 24n/5, ce qui est supérieur à 23n/4. En résumé, et de façon générale, il est possible d'utiliser la présente invention pour générer des chaînes de bits pseudo-aléatoires, non nécessairement dédiées à la problématique du codage de message. Exemple de mise en œuvre du procédé selon l'invention au sein d'un système permettant à un utilisateur d'effectuer des transactions avec un serveur bancaire. Considérons une connexion entre un serveur de banque 1 et un client 2. Ces deux entités ont pour objectif de dialoguer ensemble de façon confidentielle (demande de virement, par exemple...).
Supposons que le serveur et le client disposent tous deux d'une même clé secrète K de 128 bits. La présente invention permet de réaliser cette communication confidentielle.
En effet, considérons que le client souhaite transmettre à la banque un ordre de virement et supposons que cet ordre soit représenté par un message électronique M de taille 8*128=1024 bits. Un tel message peut donc s'écrire sous la forme M= /7?i m 2 m 3 /τ?4 m s m e m ? m s
Où chaque m\ représente un bloc de 128 bits.
Pour transmettre son ordre de façon confidentielle, le client va utiliser le procédé selon l'invention décrit ci-dessus. Pour cela, le serveur et le client conviennent alors publiquement (i.e. de façon non secrète) : • d'un algorithme de codage par bloc utilisant des clés de 128 bits, disons l'AES. Nous noterons AES(K" , t) le codage du mot de 128 bits t en utilisant la clé secrète K. • d'une suite de valeurs binaires pouvant être représentée sous la forme d'une matrice G ayant 4 lignes et 5 colonnes définie par 1 0 0 0 1
G= 0 1 0 0 1
0 0 1 0 1
0 0 0 1 1
Dans la suite, l'opérande Θ représente l'opération de « ou exclusif» bit à bit. Cette opérande vérifie
A Θ A = 0; A Θ B = B Θ A; (A Θ B) Θ B = A Θ (B Θ B) = A Θ 0 = A Le client 2 choisit (étape E1) ensuite une première valeur initiale x de taille 128 bits et applique une première fois la présente invention en utilisant G pour calculer (étape E2) 4 (le nombre de lignes de G) blocs S, de 128 bits définis par
51 = AES(K, x) Θ AES[K, x+4)
52 = AES(K, x+1 ) Θ AES(K , x+Λ)
53 = AES(K, x+2) Θ AES(K , x+4)
54 = AES(K, x+3) Θ AES(K , x+4) A partir de ces quatre blocs Si,, le client peut coder (étape E3) les 4 premiers blocs du message M en 4 blocs codés ci définis par C1 = m-, Θ S1 ; C2 = m2 Θ S2; C3 = m3 Θ S3; C4 = m4 Θ S4
Ensuite, le client peut considérer une seconde valeur initiale x\ Le client peut une nouvelle fois appliquer la présente invention avec la valeur initiale x1 et la matrice G représentant la suite de coefficients. Le client obtient alors 4 nouveaux blocs S, de 128 bits définis par
55 = AES(K, x') Θ AES(K , x'+4)
56 = AES(K, x'+1 ) Θ AES(K , x'+4) S7 = AES(K, x'+2) Θ AES(K , x'+4)
S8 = AES(K, x'+3) Θ AES(K , x'+4)
Le client peut alors coder les 4 derniers blocs du message M en utilisant ces 4 nouveaux blocs S,. En effet, le client calcule alors
C5 = m5 Θ S5; C6 = m6 Θ S6; C7 = m7 Θ S7; C8 = m8 Θ S8
Ainsi, en appliquant deux fois la présente invention, le client a été capable de coder le message M en un message codé C défini par
C= C1 C2 C3 C4 C5 C6 C7 C8 A partir de C, il est impossible de retrouver la valeur de M sans la connaissance de la clé secrète K partagée uniquement par le serveur et le client.
Le client envoie (étape E4) alors au serveur le message C ainsi que le couple (x,y) de données initiales.
Lors de la réception du couple (x.x1), le serveur peut, en appliquant également deux fois la présente invention recalculer (étape E5) les valeurs
Si = AES(K, x) ® AES[K, x+4) S2 = AES(K, x+1 ) Θ AES(K , x+Λ)
53 = AES(K, x+2) ® AES(K , x+4)
54 = AES(K, x+3) Θ AES(K , x+4) et
55 = AES(K, x') ® AES(K , x'+4) S6 = AES(K, x'+1 ) Θ AES(K , x'+Λ)
57 = AES(K, x'+2) ® AES(K , x'+4)
58 = AES(K, x'+3) Θ AES(K , x'+4) et ensuite calculer
C1 Θ S1 = [mλ ® S1) Θ S1 = mλ ® (S1 Θ S1) = mλ ® 0 = mλ C2 Θ S2 = (m2 Θ S2) Θ S2 = m2 Θ (S2 Θ S2) = m2 Θ 0 = m2
C3 Θ S3 = (m3 Θ S3) Θ S3 = m3 Θ (S3 Θ S3) = m3 Θ 0 = m3
C4 Θ S4 = (m4 Θ S4) Θ S4 = m4 Θ (S4 Θ S4) = m4 Θ 0 = m4
C5 Θ S5 = (m5 Θ S5) Θ S5 = m5 Θ (S5 Θ S5) = m5 Θ 0 = m5
C6 Θ S6 = (m6 Θ S6) Θ S6 = m6 Θ (S6 Θ S6) = m6 Θ 0 = m6 C7 Θ S7 = (m7 Θ S7) Θ S7 = m7 Θ (S7 Θ S7) = m7 Θ 0 = m7
C8 Θ S8 = (m8 Θ S8) Θ S8 = m8 Θ (S8 Θ S8) = m8 Θ 0 = m8
Le serveur a ainsi pu recalculer (étape E6) le message décodé M = m^ m2 m3 m4 m5 m 6 m 7 m8 grâce à sa connaissance de K Le serveur connaît alors l'ordre de virement qu'il peut maintenant exécuter. Exemple d'utilisation du procédé utilisé dans un dispositif d'authentification
Considérons un distributeur 3 de contenus numériques payants, disposant de différents clients. Pour qu'un client du distributeur puisse avoir accès à un contenu, il doit d'abord prouver au distributeur qu'il a le droit d'obtenir ce contenu.
Pour ce faire, le distributeur fournit au client un terminal 4 et une carte à puce 5 dans laquelle se trouve :
• Une zone mémoire en lecture seule, 5i contenant • Une clé secrète K connue uniquement par le distributeur (qui aura par exemple fabriqué la carte lui-même) et propre à la carte. Par exemple, nous considérons qu'il s'agit d'une clé de taille 128 bits utilisable pour l'AES. Nous noterons AES(K , t) le chiffrement du mot de 128 bits t en utilisant la clé secrète K. • u*t coefficients binaires (pouvant être identique pour chaque carte). Par exemple u=4 et t =5. On pourra supposer que ces coefficients sont représentés dans la ROM 5i sous la forme d'une matrice G de taille 4*5 définie par
1 0 0 0 1
G= 0 1 0 0 1
0 0 1 0 1
0 0 0 1 1
• une zone de logique câblée ou un processeur 52 capable de réaliser les calculs associés à l'invention, en particulier, capable de mettre en œuvre des calculs AES pour cet exemple. • Une interface 53 de communication pour pouvoir échanger des données. Pour authentifier le client, le distributeur peut envoyer au client une valeur initiale x (étape E10). La carte à puce, à la réception de x, va alors mettre en œuvre les étapes du procédé selon l'invention, en prenant comme paramètre la clé K et la matrice G stockées en ROM et la valeur initiale x envoyée par le distributeur. La carte à puce calcule (étape E11) les 4 blocs de 128 bits définis par
51 = AES(K, x) Θ AES[K, x+4)
52 = AES(K, x+1 ) Θ AES(K , x+Λ)
53 = AES(K, x+2) Θ AES(K , x+4)
54 = AES(K, x+3) Θ AES(K , x+4)
La carte à puce renvoie alors les 4 blocs S,, (pouvant être considérés comme un unique bloc de 512 bits) étape E12. A la réception de ces 4 blocs, le distributeur calcule également, selon l'invention et avec les paramètres K, G et x, 4 blocs de 128 bits (étape E13). Si ces 4 blocs sous identiques aux quatre reçus, alors le client est authentifié auprès du distributeur et peut logiquement obtenir le contenu auquel il a légitimement accès (étapes E14 et E15 ).
Sans sortir du cadre de l'invention, le procédé peut aussi être utilisé pour authentifier des données échangées dans un système.
Bibliographie :
[ABAG01 ] 2D-Encryption Mode, A. A. BeIaI and M. A. Abdel-Gawad, SPIE, volume 4793, 2003, 64-75.
[BDJR97] A Concrète Security Treatment of Symmetric Encryption, M Bellare, A. Desai, E. Jokipii et P. Rogaway, FOCS 1997, 394-403.
[IWA06] New Blockcipher Modes of Opération with Beyond the Birthday Bound Security, T. Iwata, Fast Secure Encryption 2006, 331 -348. [KNUOO] Block Chaining Modes of Opération, L. R. Knudsen, NIST call for new modes of opération, 2000.
[NIST01 ] Recommendation for Block Cipher Modes of Opération, Méthodes and Techniques. M Dworkin, NIST Spécial Publication 800-38A,
2001 .
[SLLLY01 ] Concrète Security Analysis of CTR-OFB and CTR-CFB Modes of Opération. J. Sung, S. Lee, J. Lim, W. Lee et O. Yi. 4th International Conférence of Information Security and ryptology 2001 , 103-113.

Claims

REVENDICATIONS
1 - Procédé pour générer des chaînes de bits pseudo-aléatoires dans un système dans lequel les échanges de données entre un premier utilisateur et un deuxième utilisateur sont protégés caractérisé en ce qu'il comporte au moins les étapes suivantes :
• utiliser une application fκ àe taille de sortie n bits,
• déterminer une valeur x et à partir de cette valeur x et en appliquant plusieurs fois l'application fκ, afin de générer t valeurs v,,
• à partir des t valeurs v, et de u*t coefficients déterminer u blocs S, contenant des caractères pseudo-aléatoires.
2 - Procédé selon la revendication 1 pour générer des chaînes de bits pseudo-aléatoires, au sein d'un système comprenant un module de codage de données, telles qu'un message de b= f*u*n + q bits, où f et u sont supérieurs ou égaux à 0, et q est compris entre 0 et u*n, peut se mettre sous la forme de f groupes de u blocs de n bits et d'un (f+1)ième groupe de q bits caractérisé en ce que : le codage d'un groupe considéré de u blocs comporte au moins les étapes suivantes :
• pour le groupe considéré choisir une valeur initiale x,
• à partir des t valeurs v, générées et de u*t coefficients déterminer u blocs S, contenant des caractères pseudo-aléatoires afin de coder les u blocs du groupe considéré,
• combiner les u blocs du groupe considéré avec les u blocs S, afin d'obtenir le groupe codé,
• réitérer ces trois étapes pour les f groupes, pour le (f+1)ième groupe de q bits, • choisir une valeur initiale de x, • à partir des t valeurs v, générées et de u*t coefficients déterminer un nombre de blocs S, égal au moins à la partie entière supérieure de q/n,
• combiner q bits extraits des blocs S, déterminés avec les q bits du (f+1)\ème groupe.
3 - Procédé selon la revendication 2 caractérisé en ce que l'on fait varier les u*t coefficients en faisant varier la valeur de t.
4 - Procédé selon l'une des revendications 1 à 3 caractérisé en ce que les blocs S, sont obtenus de la manière suivante
S, = (σ,,i ® 1/1 ) Θ (σ;>2 ® V2) Θ (σ;>3 ® V3) Θ ... Θ (σα ® vt)
Où ® est la multplication avec o Dans le cas σ,,y = 1 , a,,y® vy = V1 o Dans le cas σ,,y = 0, a,,y® vy = 0
5 - Procédé selon l'une des revendications 1 à 3 caractérisé en ce que les blocs S, sont obtenus de la manière suivante
S, = (σ,,i ® 1/1 ) Θ (σ;>2 ® V2) Θ (σ;>3 ® V3) Θ ... Θ (σα ® i/f) avec, pour les σ;,y tels que 0 < ahl ≤ 1 , a;,y ® vy représentant la sélection de a;,y % des n bits, selon un critère de sélection connu de l'application.
6 - Procédé selon l'une des revendications 2 à 5 caractérisé en ce que l'on détermine la valeur du bloc m, d'indice i codé par C1 = m, ® S, où Θ correspond soit à l'opération xor égale au « ou exclusif » bit à bit ou à l'addition modulaire modulo 2"
7 - Procédé selon l'une des revendications 1 à 6 caractérisé en ce que les valeurs f peuvent être obtenues en appliquant une fonction g choisie parmi la liste suivante : • g,(fκ ,x) = H L1 {x)) où /.' correspond à la /emθ itération d'un LFSR ou d'un registre diviseur,
• g,[fκ ,x) = fκ[ cLiX + b) où a, et b, sont des coefficients d'une transformation affine,
• gt[fκ ,x) = fκ[ cLiX + b, mod 2") où a, et b, sont des coefficients d'une transformation affine,
• gt[fκ ,x) = fκ[x + i) © d,, où Θ représente l'opération de xor bit à bit et d, est une chaîne de bits, • g,[fκ ,x) = fκ[x + / - 1 ) Θ d,, où Θ représente l'opération de xor bit à bit et d, est une chaîne de bits,
• g,[k ,x) = U L1W) © Cl1, où U correspond à la /èmθ itération d'un LFSR ou d'un registre diviseur, Θ représente l'opération de xor bit à bit et d, est une chaîne de bits.
8 - Procédé selon l'une des revendications 1 à 7 caractérisé en ce que la fonction fcest une permutation.
9 - Procédé selon l'une des revendications précédentes caractérisé en ce que les u*t coefficients correspondent aux coefficients d'une matrice d'un code linéaire.
10 - Procédé selon l'une des revendications précédentes caractérisé en ce que la valeur x est stockée ou générée en exécutant un processus aléatoire ou pseudo-aléatoire ou déterministe.
11 - Utilisation du procédé selon la revendication 1 ou l'une des revendications 4 à 5 ou 7 pour l'authentification d'utilisateurs d'un système ou l'authentification de données.
EP08759512A 2007-05-11 2008-05-12 Procede de generation de chaines de bits pseudo-aleatoires Withdrawn EP2147368A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0703384A FR2916064B1 (fr) 2007-05-11 2007-05-11 Procede de generation de chaines de bits pseudo-aleatoires notamment pour la protection de la confidentialite de donnees.
PCT/EP2008/055792 WO2008141962A1 (fr) 2007-05-11 2008-05-12 Procede de generation de chaines de bits pseudo-aleatoires

Publications (1)

Publication Number Publication Date
EP2147368A1 true EP2147368A1 (fr) 2010-01-27

Family

ID=38963145

Family Applications (1)

Application Number Title Priority Date Filing Date
EP08759512A Withdrawn EP2147368A1 (fr) 2007-05-11 2008-05-12 Procede de generation de chaines de bits pseudo-aleatoires

Country Status (4)

Country Link
US (1) US20110142226A1 (fr)
EP (1) EP2147368A1 (fr)
FR (1) FR2916064B1 (fr)
WO (1) WO2008141962A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI641223B (zh) * 2018-02-07 2018-11-11 大陸商北京集創北方科技股份有限公司 Pseudo random bit sequence generation method and device, and integrated circuit generation system for generating pseudo random bit sequence generation device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2008141962A1 *

Also Published As

Publication number Publication date
WO2008141962A1 (fr) 2008-11-27
FR2916064B1 (fr) 2009-09-25
US20110142226A1 (en) 2011-06-16
FR2916064A1 (fr) 2008-11-14

Similar Documents

Publication Publication Date Title
CA2181299C (fr) Procede de communication cryptographique
CN104468090A (zh) 基于图像像素坐标的汉字密码编码方法
WO2009095574A2 (fr) Procede et entite de chiffrement symetrique probabiliste
EP0605289A1 (fr) Procédé et dispositif pour l&#39;authentification utilisant un portocole à connaissance nulle
EP2638660B1 (fr) Protection contre les ecoutes passives
EP1634405B1 (fr) Procede, systeme et supports d&#39;enregistrement de chiffrement et/ou de dechiffrement traçable
EP0818094B1 (fr) Procede de communication cryptographique asymetrique, et objet portatif associe
EP3139363B1 (fr) Protection d&#39;un algorithme de rijndael
FR2853175A1 (fr) Procede et systeme de cryptage
FR3040514A1 (fr) Protection dpa d&#39;un algorithme de rijndael
EP2643943B1 (fr) Procédé et système d&#39;accès conditionnel à un contenu numérique, terminal et dispositif d&#39;abonné associés
EP2940922B1 (fr) Cryptosystèmes symétriques avec clé publique basé sur l&#39;utilisation du groupe symétrique
Sajid et al. Advanced multilayer security framework: integrating AES and LSB for enhanced data protection: M. Sajid et al.
WO2001028153A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
EP0935858B1 (fr) Procede de decorrelation de donnees
WO2023057649A1 (fr) Procédé de génération d&#39;un nombre pseudo-aléatoire et procédé de chiffrement symétrique d&#39;un message
EP2147368A1 (fr) Procede de generation de chaines de bits pseudo-aleatoires
Harshitha et al. Secure medical multimedia data using symmetric cipher based chaotic logistic mapping
CN118158021B (zh) 一种基于Glink总线协议的数据传输处理方法及系统
FR2922393A1 (fr) Systeme tracable de chiffrement/dechiffrement de donnees numeriques diffusees
US20040174994A1 (en) Time based encryption algorithm
FR3052279B1 (fr) Authentification d&#39;une carte par lecture sans contact
EP3843327A1 (fr) Procédé de codage d&#39;un motif d&#39;intégrité cryptographique de faible taille et dispositifs associés
Gulappagol et al. Secured data transmission using knight and LSB technique
Berthet Side channel resistance of Europe's choices for lattice-based post-quantum cryptography: FALCON and FrodoKEM

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: 20091110

AK Designated contracting states

Kind code of ref document: A1

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

17Q First examination report despatched

Effective date: 20100607

DAX Request for extension of the european patent (deleted)
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: 20120814