WO2010133795A1 - Generation de nombres pseudo-aleatoires - Google Patents
Generation de nombres pseudo-aleatoires Download PDFInfo
- Publication number
- WO2010133795A1 WO2010133795A1 PCT/FR2010/050955 FR2010050955W WO2010133795A1 WO 2010133795 A1 WO2010133795 A1 WO 2010133795A1 FR 2010050955 W FR2010050955 W FR 2010050955W WO 2010133795 A1 WO2010133795 A1 WO 2010133795A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bits
- multiplicand
- truncation
- multiplier
- iteration
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/4806—Computations with complex numbers
- G06F7/4812—Complex multiplication
Definitions
- the field of the invention is that of the generation of pseudorandom numbers (PRNG for Pseudo-Random Number Generator in English). More specifically, the invention relates to the generation of pseudo-random numbers including, but not only, for hardware architectures constrained in computing power, memory and energy.
- PRNG Pseudo-Random Number Generator
- pseudo-random number generators For architectures constrained in computing power, in memory and in energy, two types of pseudo-random number generators are of greater interest than the others because of their simplicity. These are generators based on shift registers and linear generators based on modular arithmetic.
- a shift register is such that the series of bits obtained at the output of the register is shifted with respect to the series of bits presented at the input. For example, if we consider a series of 4 bits 1001 presented at the input of a right shift register, at the output B100 is obtained where B is a random bit equal to 0 or 1. It is easy to see that with a single register only one random bit is obtained for processing. If we want to generate a random number represented on several bits, then we have two solutions. The first solution is to parallelize as many shift registers as random bits to generate. This first solution has the disadvantage of being long for initialization and expensive hardware.
- the second solution is to repeat the operation as many times as random bits to generate. This second solution has the disadvantage of increasing the generation time of a random number.
- a linear generator based on modular arithmetic is such that the pseudo-random numbers obtained form a sequence whose each term depends on the precedent according to the following formula: or :
- S n and S n + I are two consecutive terms (or two numbers) of the sequence
- - mod corresponds to the modulo and d to the module (operation to define the congruence between two numbers).
- this type of generator uses operations in modular arithmetic which generates a great complexity except in the particular case where d is a power of 2 and reduces, in the general case, the speed of generation of a random number.
- the present invention relates to a method for generating signed real pseudo-random numbers represented on an integer number w of bits, which method comprises steps:
- multiplicand which multiplicand is a complex number, by the multiplier, the result of the multiplication being a complex number whose real part and the imaginary part are represented on 2w bits; the multiplicand of the first iteration being the initial complex number,
- the number of iterations is determined by the amount of pseudo-random numbers to be generated.
- the pseudo-random number generation method is based on a simple calculation of multiplication of complex numbers resulting in multiplications and additions of real numbers.
- the method has a large capacity by being able to generate at least w random bits by iteration.
- the truncation operation makes it possible to divide into two parts the result of the multiplication, the part making it possible to generate a pseudo-random number that can be known and the part making it possible to generate the next multiplicand remaining secret.
- the internal state of the generator is not revealed by the output of the generator.
- the real part and the imaginary part of the multiplier are signed real numbers represented on the integer number w of bits, the multiplier module being between a predefined minimum value and a maximum value and the absolute value of the product of the real part by the imaginary part being greater than a third predefined value.
- the minimum value is equal to 1 and the maximum value is equal to 2.
- the conditions fulfilled by the multiplier make it possible to define a method of generating pseudorandom numbers of good quality while avoiding the drawbacks of a recursive calculation which can degenerate and tend to obtain the same number at each iteration or else become periodic of such that the same number is periodically generated.
- the real part and the imaginary part of the initial complex number and the multiplicand are signed real numbers represented on the integer number w of bits and the module of the initial complex number and the multiplicand module are between the minimum datum. and the predefined maximum data.
- the determination of the initial complex number is arbitrary in a set of complex numbers whose real part and the imaginary part are signed real numbers represented on an integer number w of bits and whose module is between a predefined minimum and a maximum.
- the truncation function belongs to the following list:
- the initialization step comprises determining the integer number w of bits.
- the initialization step comprises the determination of the truncation function.
- the method according to the invention comprises a step of determining an output, which output is a pseudo-random number obtained by concatenating a first number of most significant bits of the truncation error of the real part and a second number of most significant bits of the imaginary part of the result of the multiplication.
- the determined output is on w bits and w the first number and the second number are equal to -.
- the method according to the invention comprises a step of determining an output, which output is a pseudo-random number on w bits obtained respectively from an operation performed between a positive integer number h of bits the more significant and the same number h of the least significant bits of the truncation error of the real part and of the same operation performed between the positive integer h of the most significant bits and the same number h of the least significant bits of the imaginary part of the result of the multiplication.
- This operation mixes the low-order bits with the high-order bits. This solution is particularly advantageous for applications for which it is desirable to limit the constraints on the initialization parameters (in particular the multiplier).
- the operation is an exclusive OR.
- This mixing operation is the simplest.
- the method according to the invention comprises the predetermination of a threshold value of number of iterations and the initialization of a counter of the number of iterations, which counter of the number of iterations is incremented at each iteration. so that when the counter value of the number of iterations reaches the threshold value of iteration numbers the multiplier is changed.
- the method according to the invention comprises the predetermination of a threshold value of number of iterations and the initialization of a counter of the number of iterations, which counter of the number of iterations is incremented at each iteration so that when the value of the counter of the number of iterations reaches the threshold value of iteration numbers, the multiplicand is replaced by a complex number whose real part and the imaginary part are signed real numbers represented on the integer number w of bits and whose module is between the minimum data and the predefined maximum data.
- the invention also relates to a device for generating signed real pseudo-random numbers represented on an integer number w of bits, which device comprises means:
- multiplicand which multiplicand is a complex number, by the multiplier, the result of the multiplication being a complex number whose real part and the imaginary part are represented on 2w bits; the multiplicand of the first iteration being the initial complex number,
- the invention further relates to a computer program product comprising program code instructions recorded on or transmitted by a computer readable medium, for carrying out the steps of the method described above when said program is running on a computer.
- FIG. 1 illustrates a representation in a plane of a set of complex numbers
- FIG. 2 represents an embodiment of a method for generating pseudorandom numbers
- FIG. 3 represents an embodiment of a pseudo-random number generating device or generator capable of implementing the method of FIG. 2.
- a generation method and a pseudo-random number generator generating signed numbers represented on w bits (w being a positive integer), with:
- w is an integer equal to a power of 2, for example 8, 16, 32, 64. It is convenient to call E the set of numbers thus represented.
- the set E is a subset of the set R of real numbers and includes numbers x having a bitwise development on w WtS [X 01 X 1 , ..., X ⁇ 1 ], with X 0 being the most significant bit and x w being the least significant bit.
- a number x of the set E is such that:
- a complex number is represented by a pair (y, z) of real numbers, each belonging to the set E and having a binary development on w bits.
- a complex number thus represented comprises w bits for the real part and w bits for the imaginary part.
- G the set of complex numbers represented in this way, namely:
- G ⁇ (y, z) with y and ze E ⁇ .
- FIG. 1 illustrates a representation in a plane of the set G of the complex numbers thus defined.
- the set G can be represented by a grid of 2 W ⁇ 1 rows and 2 w 1 columns.
- the coordinates of the (2 W ⁇ 2 W "1 ) points at the intersections of the rows and columns of this grid are numbers belonging to the set E.
- Figure 1 also shows the representation of a subset D of the set G.
- the subset D is defined as the set of points of the set G lying between two concentric circles of radii Ri and R 2 , namely:
- Ri and R 2 are two positive real numbers.
- the generation method and the generator according to the invention make it possible to generate signed pseudo-random numbers represented on w bits (that is to say belonging to the set E) by performing a multiplication of complex numbers. .
- Fig. 2 shows an embodiment of a method for generating pseudorandom numbers.
- the first step E1 is an initialization step.
- the initial complex number (y o , z o ) intervenes only in the first multiplication of complex numbers of the recursive computation as initial multiplicand.
- the multiplier (y m , z m ) occurs at each iteration of the recursive calculation as long as it is not explicitly modified.
- the initial complex number (y 0 , Z 0 ) is arbitrarily chosen in the subset D defined previously.
- the values of the multiplier (y m , z m ) are chosen so as to obtain a pseudorandom number generator of good quality while avoiding certain disadvantages due to recursive calculation.
- the quality of a pseudo-random number generator is given by the results obtained in a series of statistical tests such as those presented in the aforementioned DE Knuth's book, G. Marsaglia's Diehard Suite, or the NIST suite, etc.
- the multiplier can be expressed as ⁇ m ⁇ 2 ⁇ r-, with p and qe N, where N q is the set of positive integers.
- the multiplier module is close to 1, then the recursive calculation corresponds to a quasi-periodic function and has a high probability of becoming periodic for low values of q. As a result, the bits obtained and therefore the numbers obtained are periodically the same.
- a third disadvantage can occur when y m or z m is close to 0. Under these conditions, the randomness of the generated bits and thus generated numbers is no longer guaranteed. This risk is greater for the low-order bits.
- the values of the multiplier (y m , z m ) are chosen in the subset D so that they satisfy the following conditions: V2.2- (w ⁇ 1) and ⁇ 2 > 2.2
- the multiplier module is between a minimum value and a maximum value such that the multiplier module is greater than 1 without being much greater than 1.
- TT multiplier can not be equal to 0, -, ⁇ , -.
- initialization parameters initial complex number and multiplier
- the initial complex number (y o , z o ) at the input of the generator (or generation device) is presented and the multiplier (y m , z m ) is introduced into a generator calculation module.
- the generator calculation module is a multiplier of complex numbers.
- Step E2 is a step of multiplying complex numbers.
- - (y k _.,, Z 1 ⁇ 1 ) is a complex number obtained from the result of the multiplication carried out at the previous iteration k-1 and corresponds to the multiplicand of the current iteration k, - (y m , z m ) is the multiplier determined during step E1.
- the result of the multiplication of complex numbers (i.e., the real part y k and the imaginary part z k obtained) is stored in a double length accumulator (Double Length Accumulator).
- the next step E3 is a truncation step.
- the result of the multiplication of complex numbers performed in step E2 comprises a real part and an imaginary part, each represented on 2w bits.
- the truncation allows, from a number n represented on 2w bits, to obtain a number ⁇ represented on w bits.
- This operation can be carried out using one of the following functions: whole part (rounded close to 0), whole part by excess (rounded away from 0), rounded.
- the error T is representable on w bits.
- truncation is applied to complex numbers.
- the error introduced by this operation comprises w bits coming from the real part and w bits coming from the imaginary part.
- - ⁇ is the result of the truncation of the number n
- - ⁇ n is the truncation error
- step E3 the function Q w is applied to the real part y k and to the imaginary part z k obtained in the preceding complex number multiplication step E2.
- ⁇ Yk and ⁇ Zk represent the truncation error corresponding to the truncated bits respectively for the real part y k and for the imaginary part z k .
- T 7 1 V> T Z k '- " 1 Z ,.
- the next step E4 is a step of determining the output of the pseudorandom number generator.
- the output of the generator is determined from the w bits of ⁇ yk and w bits of ⁇ 7 .
- an output of at most 2w bits can be generated by taking a first number of most significant bits of T and a second number of most significant bits of ⁇ A and then concatenating them.
- bits By significant bits is meant bits as they represent a number whose value is close to the number to which the truncation has been applied.
- the S output of the pseudorandom number generator can be expressed as follows:
- S is the w-bit representation of a signed pseudo-random number.
- the next step E5 is a calibration step.
- the calculations and operations described above are performed as many times as the quantity of pseudorandom numbers desired.
- the calibration step makes it possible to ensure that the calculations and operations are carried out in the subset D.
- the iteration k + 1 comprises a multiplication of complex numbers of a complex or multiplicand number by the multiplier (y m , z m ) obtained in step E1.
- the multiplicand of the iteration k + 1 is obtained from the result of the multiplication of complex numbers carried out at the preceding iteration k.
- the multiplication of complex numbers is done in subset D. Therefore, the multiplicand (y ' k , z' k ) belongs to subset D.
- the subset D is a set of complex numbers whose real part and the imaginary part are signed numbers represented on w bits (one bit for the sign, one bit for the integer part and (w - 2) bits for the fractional part) and whose module is between a minimum value R 1 and a maximum value R 2 .
- the multiplicand (y ' k , z' k ) of the iteration k + 1 is deduced from the pair (y k , z k ), the result of the truncation of each of the components of the pair (y k , z k ), itself same result of the multiplication of complex numbers carried out at the iteration k.
- the components of the pair (y k , z k ) are represented on w bits.
- (y k , z k ) is the result of truncation by the function Q w applied to each of the components of the pair (y k , z k ).
- (y k , z k ) does not belong to D means that the modulus of (y k , z k ) is not between the minimum value R 1 and the maximum value R 2 . This can, for example, occur when the recursive calculation degenerates.
- - (y k , z k ) is the result of the truncation by the function Q w applied to each of the components of the pair (y k , z k ), - R 2 is the radius of the circle that made it possible to define the subset D.
- step E5 the pair (y ' k , z' k ) at the input of the device for generating pseudo-random numbers is presented and the method resumes at step E2 to generate a new pseudo-random number. random.
- the number of random bits to be generated and / or the truncation function to be used is determined. These additional initialization parameters are provided to the pseudo-random number generating device.
- the pseudo-random number generation device is provided with the argument ⁇ m of the multiplier instead of the values of the real part and the imaginary part.
- this multiplier is the pair (y m , z m ).
- the generator is reset to avoid too many iterations with the same initialization values (initial complex number or multiplier).
- the counter C1 is incremented by the number of iterations.
- the pseudo-random number generation device is reset with a multiplier different from that used during the previous iterations.
- the device for generating pseudorandom numbers is reset by presenting at the input of the latter not the multiplicand obtained at the end of the calibration step E5, but a complex number arbitrarily chosen from the subset D, in the same way as for the initial complex number (y o , z o ).
- the two preceding sub-variants are not exclusive of each other and can be implemented simultaneously.
- multiplier which can then take the values 0, -, ⁇ , -.
- step E4 is used to determine the output of the pseudorandom number generator.
- the random w bits which define the output S of the device for generating pseudorandom numbers according to the invention are determined in respectively performing an operation between a positive integer h of the most significant bits and the same positive integer h of the least significant bits of ⁇ yk (real part of the result of the multiplication of complex numbers) and the same operation between the h bits the most significant and the least significant bits of i Zk (real part of the result of the multiplication of complex numbers).
- h -.
- the operation performed can be an exclusive OR (or XOR for exclusive OR in English).
- exclusive OR or XOR for exclusive OR in English
- a cycle detection is carried out by one of the known cycle detection algorithms. It may, for example, be the hare and turtle algorithm presented in the aforementioned D. E. Knuth book, or the algorithm presented by RP. Brent in "An improved
- FIG. 3 represents an embodiment of a device for generating or generating pseudorandom numbers capable of implementing the method described above.
- the device for generating (or generating) pseudo-random numbers according to the invention makes it possible to generate signed pseudo-random numbers represented on w bits such as those belonging to the set E defined above by the execution of a multiplication of numbers. complex.
- the GEN device for generating pseudorandom numbers represented in FIG. 3 comprises an initialization INIT module.
- the INIT module determines an initial complex number (y o , z o ) and presents it at the input EN of the generator GEN as described above in the initialization step E1.
- y o and z 0 are each signed real numbers represented on w bits.
- the initial complex number (y 0 , z 0 ) is presented once at the input of the generator GEN from where the dotted lines between the initialization module INIT and the input EN.
- the initialization INIT module also determines a multiplier (y m , z m ) and introduces it into a computing module MC of the generator GEN.
- y m and z m are each signed real numbers represented on w bits.
- the calculation module MC is a multiplier of complex numbers.
- the calculation module MC performs iteratively as many multiplications of complex numbers as the quantity of pseudo-random numbers to generate.
- the calculation module MC performs a multiplication of complex numbers between a multiplicand (y ' k _i, z' k -i) obtained from the result of the multiplication carried out at the previous iteration k-1 and the multiplier (y m , z m ) determined by the initialization INIT module.
- the calculation module MC performs step E2 described above.
- the GEN generator of pseudorandom numbers comprises a double-length accumulator DLA in which is stored the result of the multiplication of complex numbers performed by the calculation module MC.
- the GEN device for generating pseudorandom numbers also includes a TR truncation and truncation error recovery module as described in step E3 above.
- the GEN generator of pseudo-random numbers also comprises a module SO for determining the output of the pseudo-random number generator as previously described in step E4.
- the SO module for determining the output of the generator makes it possible, from the truncation errors (obtained at the output of the module TR), to truncate respectively each of the components of the pair (y k , z k ) to retain w bits among the random bits generated.
- the w bits retained represent a pseudo-random number S.
- the number S is presented at the output SO of the GEN generator.
- the GEN generator of pseudorandom numbers also includes a calibration module CAL which makes it possible to determine the multiplicand (y ' k , z' k ) of the next iteration.
- the calibration module CAL makes it possible, starting from a truncation of each of the components of the pair (y k , z k ), to define the pair of values (y ' k , z' k ) each of whose components is represented on w bits.
- the pair of values (y ' k , z' k ) thus obtained is then presented to the input EN of the GEN device for generating pseudorandom numbers for carrying out the next iteration in order to obtain a new pseudo-random number.
- the INIT initialization module, the truncation TR module, the generator output determination SO module and the calibration CAL module can be modules software forming a computer program.
- the invention thus also relates to a computer program for a pseudo-random number generation device comprising program code instructions for executing the method previously described by the device.
- the different software modules can be stored in or transmitted by a data carrier.
- a data carrier This may be a hardware storage medium, for example a CD-ROM, a magnetic diskette or a hard disk, or a transmissible medium such as an electrical signal, optical or radio.
- the invention can be implemented in any application using the generation of pseudo-random numbers whether for simulation, analysis, decision-making, security or cryptography, etc.
- the hardware architecture comprising a multiplier of complex numbers and a double-length accumulator is very simple and adapted to be implemented on embedded microprocessors, processors specialized in signal processing (or DSP for Digital Signal Processoren English) or even silicon processors.
- the invention can therefore be used in applications that are constrained in computing power, in memory and in energy.
- the invention can be used in sensor networks.
- the internal state of the generator according to the invention is not revealed by the results obtained at the output thereof.
- Such a generator can be used to define authentication / encryption devices by providing a secret portion equivalent to a private key and a visible portion equivalent to a public key.
- the application of such a generator can be the security of communications, particularly in sensor / actuator networks constrained in computing power, memory and energy.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
L'invention concerne un procédé de génération de nombres pseudo-aléatoires réels signés représentés sur un nombre w entier de bits, lequel procédé comporte des étapes : d'initialisation (E1 ) comportant la détermination d'un nombre complexe initial et d'au moins un multiplicateur, lequel multiplicateur est un nombre complexe; de multiplication (E2), pour une itération donnée, d'un multiplicande par le multiplicateur; de troncature (E3), par application d'une fonction de troncature, respectivement de la partie réelle et de la partie imaginaire du résultat de la multiplication, le résultat de la troncature permettant de définir le multiplicande de l'itération suivante et l'erreur de troncature permettant de définir un nombre pseudo-aléatoire; de calibrage (E5) pour obtenir le multiplicande de l'itération suivante. Le nombre d'itérations est déterminé par la quantité de nombres pseudo-aléatoires à générer.
Description
Génération de nombres pseudo-aléatoires
Le domaine de l'invention est celui de la génération de nombres pseudo-aléatoires (PRNG pour Pseudo-Random Number Generator en anglais). Plus précisément, l'invention concerne la génération de nombres pseudo-aléatoires notamment, mais pas seulement, pour des architectures matérielles contraintes en puissance de calcul, en mémoire et en énergie.
II existe une multiplicité d'applications utilisant la génération de nombres pseudo-aléatoires que ce soit pour de la simulation, de l'analyse, de la prise de décision, de la sécurité informatique ou encore de la cryptographie, etc.
Parallèlement, il existe de nombreuses techniques de génération de nombres pseudo-aléatoires. Dans le livre intitulé, The Art of Computer Programming, Volume 2: Seminumerical Algorithms, troisième édition Addison-Wesley, 1997, D. E. Knuth dresse un panorama assez exhaustif des techniques de génération et des générateurs de nombres pseudo-aléatoires existants ainsi que des tests envisagés pour l'évaluation de leur qualité.
Pour des architectures contraintes en puissance de calcul, en mémoire et en énergie, deux types de générateurs de nombres pseudo-aléatoires présentent un plus grand intérêt que les autres étant donné leur simplicité. Il s'agit des générateurs basés sur les registres à décalage et des générateurs linéaires basés sur l'arithmétique modulaire.
Un registre à décalage est tel que la série de bits obtenue en sortie du registre est décalée par rapport à la série de bits présentée en entrée. Par exemple, si on considère une série de 4 bits 1001 présentée en entrée d'un registre à décalage à droite, en sortie on obtient B100 où B est un bit aléatoire égal à 0 ou 1. On constate facilement qu'avec un seul registre on n'obtient qu'un seul bit aléatoire pour un traitement. Si on souhaite générer un nombre aléatoire représenté sur plusieurs bits, on a alors deux solutions.
La première solution consiste à mettre en parallèle autant de registres à décalage que de bits aléatoires à générer. Cette première solution présente l'inconvénient d'être longue pour l'initialisation et coûteuse en matériel.
La deuxième solution consiste à répéter l'opération autant de fois que de bits aléatoires à générer. Cette deuxième solution présente l'inconvénient d'accroître le temps de génération d'un nombre aléatoire.
Un générateur linéaire basé sur l'arithmétique modulaire est tel que les nombres pseudo-aléatoires obtenus forment une suite dont chaque terme dépend du précédent selon la formule suivante :
où :
- Sn et Sn+I sont deux termes (ou deux nombres) consécutifs de la suite,
- a est un multiplicateur,
- c est un incrément, - mod correspond au modulo et d au module (opération permettant de définir la congruence entre deux nombres).
La qualité d'un tel générateur dépend fortement du choix des paramètres a, c et d mais aussi du premier terme de la série (S0).
En outre, ce type de générateur utilise des opérations en arithmétique modulaire ce qui génère une grande complexité sauf dans le cas particulier où d est une puissance de 2 et réduit, dans le cas général, la vitesse de génération d'un nombre aléatoire.
Les générateurs basés sur les registres à décalage et les générateurs linéaires basés sur l'arithmétique modulaire présentent tous les deux l'inconvénient, pour un procédé de génération itératif, d'utiliser en entrée du générateur le nombre obtenu en sortie lors de l'itération précédente. Ainsi, l'état interne du générateur est connu. Ceci rend impossible l'utilisation directe de tels générateurs dans des applications de sécurité ou de cryptographie.
Un des buts de l'invention est de remédier aux inconvénients de l'art antérieur précité.
Ainsi, la présente invention concerne, selon un premier aspect, un procédé de génération de nombres pseudo-aléatoires réels signés représentés sur un nombre w entier de bits, lequel procédé comporte des étapes :
- d'initialisation comportant la détermination d'un nombre complexe initial et d'au moins un multiplicateur, lequel multiplicateur est un nombre complexe,
- de multiplication, pour une itération donnée, d'un multiplicande, lequel multiplicande est un nombre complexe, par le multiplicateur, le résultat de la multiplication étant un nombre complexe dont la partie réelle et la partie imaginaire sont représentées sur 2w bits; le multiplicande de la première itération étant le nombre complexe initial,
- de troncature, par application d'une fonction de troncature, respectivement de la partie réelle et de la partie imaginaire du résultat de la multiplication, le résultat de la troncature permettant de définir le multiplicande de l'itération suivante et l'erreur de troncature permettant de définir un nombre pseudo-aléatoire,
- de calibrage pour obtenir le multiplicande de l'itération suivante sous la forme d'un nombre complexe dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur le nombre w entier de bits et dont le module est compris entre une donnée minimum et une donnée maximum prédéfinies.
Le nombre d'itérations est déterminé par la quantité de nombres pseudo-aléatoires à générer.
Le procédé de génération de nombre pseudo-aléatoires selon l'invention repose sur un calcul simple de multiplication de nombres complexes se traduisant par des multiplications et des additions de nombres réels. Le procédé présente une grande capacité en pouvant générer au moins w bits aléatoires par itération.
L'opération de troncature permet de scinder en deux parties le résultat de la multiplication, la partie permettant de générer un nombre pseudoaléatoire pouvant être connue et la partie permettant de générer le multiplicande suivant restant secrète. Ainsi, l'état interne du générateur n'est pas révélé par la sortie du générateur.
Selon une caractéristique préférée, la partie réelle et la partie imaginaire du multiplicateur sont des nombres réels signés représentés sur le nombre w entier de bits, le module du multiplicateur étant compris entre une valeur minimum et une valeur maximum prédéfinies et la valeur absolue du produit de la partie réelle par la partie imaginaire étant supérieure à une troisième valeur prédéfinie.
Selon une caractéristique préférée, la valeur minimum est égale à 1 et la valeur maximum est égale à 2.
Les conditions remplies par le multiplicateur permettent de définir un procédé de génération de nombres pseudo-aléatoires de bonne qualité en évitant les inconvénients d'un calcul récursif qui peut dégénérer et tendre vers l'obtention du même nombre à chaque itération ou encore devenir périodique de telle sorte qu'un même nombre est périodiquement généré.
Selon une caractéristique préférée, la partie réelle et la partie imaginaire du nombre complexe initial et du multiplicande sont des nombres réels signés représentés sur le nombre w entier de bits et le module du nombre complexe initial et le module du multiplicande sont compris entre la donnée minimum et la donnée maximum prédéfinies.
La détermination du nombre complexe initial est arbitraire dans un ensemble de nombres complexes dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur un nombre w entier de bits et dont le module est compris entre un minimum et un maximum prédéfinis.
L'étape de calibrage permet de s'assurer que le multiplicande utilisé pour une itération donnée satisfait aux mêmes conditions que le nombre complexe initial.
Selon une caractéristique préférée, la fonction de troncature appartient à la liste suivante :
- fonction partie entière,
- fonction partie entière par excès, - fonction d'arrondi.
Les différentes fonctions de troncature sont équivalentes du point de vue de la génération de nombres pseudo-aléatoires. Néanmoins le fait de pouvoir choisir entre différentes fonctions de troncature offre une plus grande souplesse pour la mise en œuvre du procédé. Selon une caractéristique préférée, l'étape d'initialisation comporte la détermination du nombre w entier de bits.
Ainsi, le procédé selon l'invention offre une grande flexibilité et est facilement adaptable en fonction de l'application dans laquelle il est mis en œuvre. Selon une caractéristique préférée, l'étape d'initialisation comporte la détermination de la fonction de troncature.
Ce choix d'initialisation supplémentaire augmente la difficulté pour un observateur malveillant de trouver la configuration du générateur par une approche essai/erreur directe. Ceci présente un intérêt pour les applications de sécurité informatique.
Selon une caractéristique préférée, le procédé selon l'invention comporte une étape de détermination d'une sortie, laquelle sortie est un nombre pseudo-aléatoire obtenu par concaténation d'un premier nombre de bits les plus significatifs de l'erreur de troncature de la partie réelle et d'un deuxième nombre de bits les plus significatifs de la partie imaginaire du résultat de la multiplication.
Selon une caractéristique préférée, la sortie déterminée est sur w bits et w le premier nombre et le second nombre sont égaux à — .
L'avantage de cette approche est que les bits de poids faible qui peuvent engendrer des périodicités courtes du procédé de génération de
nombres pseudo-aléatoires sont éliminés. Un autre avantage est que l'obtention du nombre pseudo-aléatoire généré en sortie se fait avec un minimum d'opérations.
Selon une caractéristique préférée, le procédé selon l'invention comporte une étape de détermination d'une sortie, laquelle sortie est un nombre pseudo-aléatoire sur w bits obtenu à partir respectivement d'une opération effectuée entre un nombre entier h positif de bits les plus significatifs et le même nombre h de bits les moins significatifs de l'erreur de troncature de la partie réelle et de la même opération effectuée entre le nombre entier h positif de bits les plus significatifs et le même nombre h de bits les moins significatifs de la partie imaginaire du résultat de la multiplication.
Cette opération permet de mélanger les bits de poids faible avec les bits de poids fort. Cette solution est particulièrement avantageuse pour des applications pour lesquelles il est souhaitable de limiter les contraintes sur les paramètres d'initialisation (notamment du multiplicateur).
Selon une caractéristique préférée, l'opération est un OU exclusif. Cette opération de mélange est la plus simple.
Selon une caractéristique préférée, le procédé selon l'invention comporte la prédétermination d'une valeur seuil de nombre d'itérations et l'initialisation d'un compteur du nombre d'itérations, lequel compteur du nombre d'itérations est incrémenté à chaque itération de telle sorte que lorsque la valeur du compteur du nombre d'itérations atteint la valeur seuil de nombres d'itérations on change le multiplicateur.
Ceci permet d'éviter un nombre trop important d'itérations avec le même multiplicateur et permet donc d'obtenir un procédé de génération de nombres pseudo-aléatoires de bonne qualité dans la mesure où grâce à cette approche il n'est pas possible de retrouver périodiquement le même nombre pseudo-aléatoire en sortie.
Selon une caractéristique préférée, le procédé selon l'invention comporte la prédétermination d'une valeur seuil de nombre d'itérations et l'initialisation d'un compteur du nombre d'itérations, lequel compteur du
nombre d'itérations est incrémenté à chaque itération de telle sorte que lorsque la valeur du compteur du nombre d'itérations atteint la valeur seuil de nombres d'itérations, le multiplicande est remplacé par un nombre complexe dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur le nombre w entier de bits et dont le module est compris entre la donnée minimum et la donnée maximum prédéfinies.
Ceci permet d'éviter un nombre trop important d'itérations à partir du même nombre complexe initial et permet donc d'obtenir un procédé de génération de nombres pseudo-aléatoires de bonne qualité en empêchant de retrouver périodiquement le même nombre pseudo-aléatoire en sortie.
L'invention concerne aussi un dispositif de génération de nombres pseudo-aléatoires réels signés représentés sur un nombre w entier de bits, lequel dispositif comporte des moyens :
- d'initialisation permettant de déterminer un nombre complexe initial et au moins un multiplicateur, lequel multiplicateur est un nombre complexe,
- de multiplication, pour une itération donnée, d'un multiplicande, lequel multiplicande est un nombre complexe, par le multiplicateur, le résultat de la multiplication étant un nombre complexe dont la partie réelle et la partie imaginaire sont représentées sur 2w bits; le multiplicande de la première itération étant le nombre complexe initial,
- de troncature, par application d'une fonction de troncature, respectivement de la partie réelle et de la partie imaginaire du résultat de la multiplication, le résultat de la troncature permettant de définir le multiplicande de l'itération suivante et l'erreur de troncature permettant de définir un nombre pseudo-aléatoire,
- de calibrage permettant d'obtenir le multiplicande de l'itération suivante sous la forme d'un nombre complexe dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur le nombre w entier de bits et dont le module est compris entre une donnée minimum et une donnée maximum prédéfinies;
le nombre d'itérations étant déterminé par la quantité de nombres pseudoaléatoires à générer.
L'invention concerne encore, un produit programme d'ordinateur comprenant des instructions de code de programme enregistrées sur ou transmises par un support lisible par un ordinateur, pour mettre en œuvre les étapes du procédé décrit ci-dessus lorsque ledit programme fonctionne sur ordinateur.
D'autres caractéristiques et avantages de la présente invention apparaîtront dans la description ci-après de modes de réalisation préférés décrits en référence aux figures dans lesquelles :
- la figure 1 illustre une représentation dans un plan d'un ensemble de nombres complexes,
- la figure 2 représente un mode de réalisation d'un procédé de génération de nombres pseudo-aléatoires,
- la figure 3 représente un mode de réalisation d'un dispositif de génération ou générateur de nombre pseudo-aléatoires apte à mettre en œuvre le procédé de la figure 2.
Dans un mode de réalisation non limitatif de l'invention décrit ci-après, on considère un procédé de génération et un générateur de nombres pseudoaléatoires générant des nombres signés représentés sur w bits (w étant un nombre entier positif), avec :
- un bit réservé pour le signe, - un bit réservé pour la partie entière,
- (w - 2) bits réservés pour la partie fractionnelle (partie du nombre située après la virgule).
En variante, w est un nombre entier égal à une puissance de 2 soit, par exemple, 8, 16, 32, 64. On convient d'appeler E l'ensemble des nombres ainsi représentés.
L'ensemble E est un sous-ensemble de l'ensemble R des nombres réels et
comprend des nombres x ayant un développement binaire sur w WtS[X01X1,..., X^1] , avec X0 le bit de poids le plus fort et xw^ le bit de poids le plus faible.
Un nombre x de l'ensemble E est tel que :
χ = H)x° -(w∑ χ k -2-(k-1)
\ k=i
De manière analogue, on représente un nombre complexe par un couple (y,z) de nombres réels, chacun appartenant à l'ensemble E et ayant un développement binaire sur w bits. Un nombre complexe ainsi représenté comporte w bits pour la partie réelle et w bits pour la partie imaginaire. On convient d'appeler G l'ensemble des nombres complexes représentés de cette façon, soit :
G = {(y,z) avec y et ze E} .
La figure 1 illustre une représentation dans un plan de l'ensemble G des nombres complexes ainsi défini.
L'ensemble G peut être représenté par une grille de 2W~1 lignes et 2w 1 colonnes. Les coordonnées des (2W Λ 2W"1 ) points aux intersections des lignes et colonnes de cette grille sont des nombres appartenant à l'ensemble E.
La figure 1 fait également apparaître la représentation d'un sous- ensemble D de l'ensemble G.
Le sous-ensemble D est défini comme l'ensemble des points de l'ensemble G compris entre deux cercles concentriques de rayons Ri et R2, soit :
D = G n|(y,z)€ R2 avec R1 <
Ri et R2 sont deux nombres réels positifs. R2 est supérieur à R1 et la valeur de R2 n'excède pas la valeur 2 pour le mode de représentation considéré (nombres signés représentés sur w bits avec un bit pour le signe, un bit pour la partie entière, et (w - 2) bits pour la partie fractionnelle).
Dans la suite de la description, on considère R1 = 1 et R2 = 2.
Le procédé de génération et le générateur selon l'invention permettent de générer des nombres pseudo-aléatoires signés représentés sur w bits (c'est-à-dire appartenant à l'ensemble E) par l'exécution d'une multiplication de nombres complexes.
On réitère cette multiplication de nombres complexes autant de fois que la quantité de nombres pseudo-aléatoires souhaités.
Les calculs et opérations nécessaires pour effectuer ce calcul récursif sont décrits ci-après pour un mode particulier de réalisation de l'invention.
La figure 2 représente un mode de réalisation d'un procédé de génération de nombres pseudo-aléatoires.
La première étape E1 est une étape d'initialisation.
Au cours de cette étape, on détermine les valeurs d'un nombre complexe initial (yo ,zo )et d'un nombre complexe multiplicateur(ym ,zm) .
Le nombre complexe initial (yo ,zo) n'intervient que dans la première multiplication de nombres complexes du calcul récursif comme multiplicande initial.
Le multiplicateur (ym ,zm) intervient à chaque itération du calcul récursif tant qu'il n'est pas explicitement modifié.
Le nombre complexe initial (y0 , Z0) est choisi arbitrairement dans le sous-ensemble D défini précédemment. Les valeurs du multiplicateur (ym ,zm) sont choisies de façon à obtenir un générateur de nombres pseudo-aléatoires de bonne qualité en évitant certains inconvénients dus au calcul récursif.
La qualité d'un générateur de nombres pseudo-aléatoires est donnée par les résultats obtenus à une suite de tests statistiques tels que ceux
présentés dans le livre de D. E. Knuth précédemment cité, la suite Diehard de G. Marsaglia ou encore la suite du NIST (pour National Institute of Standards and Technology en anglais), etc.
Un premier inconvénient à éviter est que le calcul récursif dégénère progressivement vers la valeur 0 (ou vers un dépassement de la capacité du dispositif). En effet, dans ces conditions, les bits obtenus et donc les nombres obtenus ne sont plus pseudo-aléatoires. Ceci peut se produire lorsque le module du multiplicateur défini par rm =
est proche de 1 (inférieur ou supérieur e 1 ). Un deuxième inconvénient peut se rencontrer lorsque le module du multiplicateur (soit rm = ^ym 2 + z2 m ) est voisin de 1. Dans ce cas, l'argument φm
du multiplicateur peut s'exprimer sous la forme φm ≈ 2τr-, avec p et qe N , N q étant l'ensemble des entiers positifs. Lorsque le module du multiplicateur est voisin de 1 alors le calcul récursif correspond à une fonction quasi-périodique et présente une forte probabilité de devenir périodique pour de faibles valeurs de q. En conséquence, les bits obtenus et donc les nombres obtenus sont périodiquement les mêmes.
Un troisième inconvénient peut se produire lorsque ymou zm est voisin de 0. Dans ces conditions, le caractère aléatoire des bits générés et donc des nombres générés n'est plus garanti. Ce risque est plus grand pour les bits de poids faible.
Afin d'éviter ces inconvénients, les valeurs du multiplicateur (ym ,zm) sont choisies dans le sous-ensemble D de telle sorte qu'elles satisfont les conditions suivantes : V2.2-(w~1) et ε2 > 2.2
Selon la première condition, le module du multiplicateur est compris entre une valeur minimale et une valeur maximale telles que le module du multiplicateur est supérieur à 1 sans être très supérieur à 1. Cette première condition permet d'éviter des problèmes de périodicité du deuxième inconvénient cité et les problèmes de dégénérescence du premier inconvénient cité.
Le respect de la seconde condition entraine que l'argument du
TT multiplicateur ne peut pas être égal à 0, — , π , — . Cette deuxième condition
permet d'éviter de perdre le caractère aléatoire des bits générés, ceci correspondant au troisième inconvénient cité.
Le choix des paramètres d'initialisation (nombre complexe initial et multiplicateur) est tel que le générateur de nombres pseudo-aléatoires selon l'invention est stable et non cyclique et le demeure pour un très grand nombre d'itérations.
A l'issue de l'étape E1 d'initialisation, on présente le nombre complexe initial (yo ,zo)en entrée du générateur (ou dispositif de génération) et on introduit le multiplicateur (ym ,zm) dans un module de calcul du générateur. En l'occurrence, le module de calcul du générateur est un multiplicateur de nombres complexes.
Les étapes suivantes E2 à E5 sont répétées autant de fois que la quantité de nombres pseudo-aléatoires à générer.
L'étape E2 est une étape de multiplication de nombres complexes.
Les nombres complexes intervenant dans la multiplication appartiennent au sous-ensemble D défini plus haut.
A la première itération, on obtient un couple (V^z1) défini par la multiplication de nombres complexes suivante :
(y1 ,z1) = (yo + jzo) . (ym + jzm)
où (yo ,zo) et (ym ,zm) sont respectivement le nombre complexe (ou multiplicande) initial et le multiplicateur déterminés au cours de l'étape E1. A la k'eme itération, on obtient un couple de valeurs (yk ,zk ) défini par :
- (yk_., , Z1^1) est un nombre complexe obtenu à partir du résultat de la multiplication réalisée à l'itération précédente k-1 et correspond au multiplicande de l'itération courante k, - (ym ,zm) est le multiplicateur déterminé au cours de l'étape E1.
A partir de ce dernier développement, on constate que la multiplication de nombres complexes nécessite quatre multiplications et deux additions pour obtenir la partie réelle et la partie imaginaire du résultat à partir de la partie réelle et de la partie imaginaire du nombre complexe (ou multiplicande) présenté en entrée du générateur.
On déduit également de ce développement que la partie réelle et la partie imaginaire du résultat sont chacune représentées sur 2w bits.
Le résultat de la multiplication de nombres complexes (c'est-à-dire la partie réelle yk et la partie imaginaire zk obtenues) est stocké dans un accumulateur double longueur (Double Length Accumulator en anglais).
L'étape suivante E3 est une étape de troncature. Comme on l'a souligné précédemment, le résultat de la multiplication de nombres complexes réalisée à l'étape E2 comporte une partie réelle et une partie imaginaire, chacune représentée sur 2w bits.
Avant de passer à l'itération suivante, on tronque la partie réelle et la partie imaginaire afin d'obtenir une représentation sur w bits. Cette opération est réalisée à l'aide d'un opérateur de troncature.
De manière générale, la troncature permet, à partir d'un nombre n représenté sur 2w bits, d'obtenir un nombre ή représenté sur w bits.
Cette opération peut être réalisée en utilisant une des fonctions suivantes : partie entière (arrondi proche de 0), partie entière par excès (arrondi éloigné de 0), arrondi. En appliquant la fonction partie entière, on obtient :
En appliquant la fonction partie entière par excès, on obtient : ή = ([n .2w-2J + (-1)[n>0l.2-(w-2)) .
En appliquant la fonction d'arrondi, on obtient : ή = Ln .2w-2 +0,5j .2~(w~2).
La troncature introduit une erreur T telle que τ = n -ή . L'erreur T est représentable sur w bits.
Dans le cas de l'invention, la troncature est appliquée à des nombres complexes. L'erreur introduite par cette opération comporte w bits en provenance de la partie réelle et w bits en provenance de la partie imaginaire.
Il est intéressant de conserver ces 2w bits qui sont des bits aléatoires.
On convient de désigner par une fonction Qw l'opération de troncature et de récupération de l'erreur de troncature.
Par exemple, si on applique la fonction Qw à un nombre n représenté sur 2w bits en utilisant la fonction arrondi, on obtient : | .2-(w-2)
où
- ή est le résultat de la troncature du nombre n,
- τn est l'erreur de troncature.
Ainsi, à l'étape E3, on applique la fonction Qw à la partie réelle yket à la partie imaginaire zk obtenues à l'étape précédente E2 de multiplication de nombres complexes. On obtient alors :
- yket zk correspondent au résultat de la troncature respectivement de la partie réelle yk et de la partie imaginaire zk ,
- τYk et τZk représentent l'erreur de troncature correspondant aux bits tronqués respectivement pour la partie réelle yket pour la partie imaginaire zk .
T y« et T sont chacun représentés sur w bits. Ainsi, on a :
T7 = 1V > TZk ' - " ' 1Z,.
^) K1 *<(w-1)
L'étape suivante E4 est une étape de détermination de la sortie du générateur de nombres pseudo-aléatoires.
La sortie du générateur est déterminée à partir des w bits de τyk et des w bits de τ7 .
Ainsi, on peut générer une sortie d'au plus 2w bits en prenant un premier nombre de bits les plus significatifs de T et un deuxième nombre de bits les plus significatifs de τA puis de les concaténer.
On convient de retenir le même nombre de bits les plus significatifs de τYk que de bits les plus significatifs de τZk puis de les concaténer.
Pour obtenir un générateur avec une qualité optimum, on retient les w w
— bbiittss lleess p plluuss ssiiggnniiffiiccaattiiffss ddee τTu eett lleess — — bits les plus significatifs de τz
2 yk 2
On dispose alors de w bits aléatoires qui définissent la sortie S du dispositif de génération de nombres pseudo-aléatoires selon l'invention.
Par bits significatifs, on entend les bits tels qu'ils représentent un nombre dont la valeur est proche du nombre auquel la troncature a été appliquée.
La sortie S du générateur de nombres pseudo-aléatoires peut s'exprimer de la façon suivante :
S est la représentation sur w bits d'un nombre pseudo-aléatoire signé.
L'étape suivante E5 est une étape de calibrage. Les calculs et opérations décrits ci-dessus sont réalisés autant de fois que la quantité de nombres pseudo-aléatoires souhaités.
Ces calculs et opérations sont réalisés dans le sous-ensemble D défini plus haut.
L'étape de calibrage permet de s'assurer que les calculs et opérations sont réalisés dans le sous-ensemble D. L'itération k+1 comporte une multiplication de nombres complexes d'un nombre complexe ou multiplicande par le multiplicateur (ym ,zm) obtenu à l'étape E1.
On convient de désigner par (y'k ,z'k) le multiplicande de l'itération k+1.
Le multiplicande de l'itération k+1 est obtenu à partir du résultat de la multiplication de nombres complexes réalisée à l'itération précédente k.
La multiplication de nombres complexes est effectuée dans le sous- ensemble D. Par conséquent, le multiplicande (y'k ,z'k ) appartient au sous- ensemble D.
On rappelle, pour mémoire, que le sous-ensemble D est un ensemble de nombres complexes dont la partie réelle et la partie imaginaire sont des nombres signés représentés sur w bits (un bit pour le signe, un bit pour la partie entière et (w - 2) bits pour la partie fractionnelle) et dont le module est compris entre une valeur minimum R1 et une valeur maximum R2.
Le multiplicande (y'k ,z'k)de l'itération k+1 est déduit du couple (yk,zk ) , résultat de la troncature de chacune des composantes du couple (yk ,zk) , lui- même résultat de la multiplication de nombres complexes réalisée à l'itération k.
Les composantes du couple (yk,zk) sont représentées sur w bits.
Ainsi, si (yk,zk) appartient à D, c'est-à-dire que le module de (yk,zk) est compris entre la valeur minimum R1 et la valeur maximum R2, alors on prend :
) . où
- (yk,zk ) est le résultat de la troncature par la fonction Qw appliquée à chacune des composantes du couple (yk ,zk) . Dans le cas contraire, (yk,zk ) n'appartient pas à D signifie que le module de (yk,zk) n'est pas compris entre la valeur minimum R1 et la valeur maximum R2. Ceci peut, par exemple, se produire lorsque le calcul récursif dégénère.
Si (yk,zk ) n'appartient pas à D, l'équation suivante est alors satisfaite :
- (yk,zk ) est le résultat de la troncature par la fonction Qw appliquée à chacune des composantes du couple (yk ,zk) , - R2 est le rayon du cercle ayant permis de définir le sous-ensemble D.
A l'issue de l'étape E5, on présente le couple (y'k ,z'k)en entrée du dispositif de génération de nombres pseudo-aléatoires et le procédé reprend à l'étape E2 pour générer un nouveau nombre pseudo-aléatoire.
Le procédé selon l'invention est décrit ci-dessus pour un mode de réalisation particulier. Cependant, plusieurs variantes à ce mode de réalisation peuvent être envisagées.
Selon une première variante, au cours de l'étape d'initialisation E1 , on détermine le nombre de bits aléatoires à générer et/ou la fonction de troncature à utiliser. Ces paramètres supplémentaires d'initialisation sont fournis au dispositif de génération de nombres pseudo-aléatoires.
Selon une deuxième variante, à l'issue de l'étape d'initialisation E1 , on fournit au dispositif de génération de nombres pseudo-aléatoires l'argument φm du multiplicateur à la place des valeurs de la partie réelle et de la partie imaginaire de ce multiplicateur, soit le couple (ym , zm ) .
Selon une autre variante, au cours de l'étape d'initialisation E1 , on définit plusieurs (au moins deux) multiplicateurs.
En variante, on effectue une réinitialisation du générateur afin d'éviter un nombre trop important d'itérations avec les mêmes valeurs d'initialisation (nombre complexe initial ou multiplicateur).
Pour cela, on prédétermine une valeur seuil de nombre d'itérations (Cl|im) et on initialise à zéro un compteur Cl du nombre d'itérations.
Puis, à chaque itération, on incrémente le compteur Cl du nombre d'itérations.
Selon une première variante à cette variante, lorsque la valeur seuil de nombre d'itérations est atteinte (soit CI > Cllιm ), on réinitialise le dispositif de génération de nombre pseudo-aléatoires avec un multiplicateur différent de celui utilisé au cours des itérations précédentes.
Selon une deuxième variante à cette variante, lorsque la valeur seuil de nombre d'itérations est atteinte (soit Cl > Cllιrn), on réinitialise le dispositif de génération de nombres pseudo-aléatoires en présentant en entrée de celui-ci non pas le multiplicande obtenu à l'issue de l'étape E5 de calibrage mais un nombre complexe arbitrairement choisi dans le sous-ensemble D, de la même façon que pour le nombre complexe initial (yo ,zo ) .
Les deux sous variantes précédentes ne sont pas exclusives l'une de l'autre et peuvent être mises en œuvre simultanément.
Dans certains cas d'application, on peut souhaiter limiter les contraintes des paramètres déterminés au cours de l'étape E1 d'initialisation.
On peut notamment souhaiter supprimer la contrainte sur l'argument du
multiplicateur, celui-ci pouvant alors prendre les valeurs 0, — , π , — .
Pour garantir avec ces nouvelles conditions, un très bon niveau de qualité au générateur de nombres pseudo-aléatoires, on fait varier l'étape E4 de détermination de la sortie du générateur de nombres pseudo-aléatoires.
On détermine les w bits aléatoires qui définissent la sortie S du dispositif de génération de nombres pseudo-aléatoires selon l'invention en
effectuant respectivement une opération entre un nombre entier positif h de bits les plus significatifs et le même nombre entier positif h de bits les moins significatifs de τyk (partie réelle du résultat de la multiplication de nombres complexes) et la même opération entre les h bits les plus significatifs et les h bits les moins significatifs de iZk (partie réelle du résultat de la multiplication de nombres complexes). w Pour obtenir un générateur avec une qualité optimum, on prend h = — .
A titre d'exemple non limitatif de l'invention, l'opération effectuée peut être un OU exclusif (ou XOR pour exclusive OR en anglais). Ainsi, en appliquant l'opérateur OU exclusif, on obtient :
Selon une autre variante, on effectue une détection de cycles par un des algorithmes connus de détection de cycles. Il peut, par exemple s'agir de l'algorithme du lièvre et de la tortue présenté dans le livre de D. E. Knuth cité précédemment, ou de l'algorithme présenté par RP. Brent dans "An improved
Monte Carlo factorization algorithni', 1980, BIT 20, 176-184, etc.
La figure 3 représente un mode de réalisation d'un dispositif de génération ou générateur de nombres pseudo-aléatoires apte à mettre en œuvre le procédé décrit ci-dessus.
Le dispositif de génération (ou générateur) de nombres pseudoaléatoires selon l'invention permet de générer des nombres pseudo-aléatoires signés représentés sur w bits tels que ceux appartenant à l'ensemble E défini plus haut par l'exécution d'une multiplication de nombres complexes. Le dispositif GEN de génération de nombres pseudo-aléatoires représenté à la figure 3 comporte un module INIT d'initialisation.
Le module INIT détermine un nombre complexe initial (yo ,zo )et le présente en entrée EN du générateur GEN tel que décrit ci-dessus dans l'étape E1 d'initialisation. yo et z0 sont chacun des nombres réels signés représentés sur w bits.
Le nombre complexe initial (y0 , z0 ) est présenté une fois en entrée du générateur GEN d'où les pointillés entre le module INIT d'initialisation et l'entrée EN.
Le module INIT d'initialisation détermine également un multiplicateur (ym ,zm) et l'introduit dans un module MC de calcul du générateur GEN. ymet zm sont chacun des nombres réels signés représentés sur w bits.
Le module MC de calcul est un multiplicateur de nombres complexes.
Le module MC de calcul réalise itérativement autant de multiplications de nombres complexes que la quantité de nombres pseudo-aléatoires à générer.
Ainsi, au cours d'une itération k, le module MC de calcul effectue une multiplication de nombres complexes entre un multiplicande (y'k_i ,z'k-i) obtenu à partir du résultat de la multiplication réalisée à l'itération précédente k-1 et le multiplicateur (ym ,zm) déterminé par le module INIT d'initialisation. Ainsi, le module MC de calcul réalise l'étape E2 décrite précédemment.
En sortie du module MC de calcul on obtient un couple (yk ,zk ) dont chacune des composantes est représentée sur 2w bits.
Le générateur GEN de nombres pseudo-aléatoires comporte un accumulateur double longueur DLA dans lequel est stocké le résultat de la multiplication de nombres complexes effectuée par le module MC de calcul.
Le dispositif GEN de génération de nombres pseudo-aléatoires comporte également un module TR de troncature et de récupération d'erreur de troncature tel que décrit à l'étape E3 ci-dessus
Le générateur GEN de nombres pseudo-aléatoires comporte aussi un module SO de détermination de la sortie du générateur de nombres pseudoaléatoires tel que précédemment décrit à l'étape E4. En référence à l'étape E4, le module SO de détermination de la sortie du générateur permet à partir des erreurs de troncature (obtenues en sortie du module TR) d'une troncature respectivement de chacune des composantes du couple (yk ,zk) de retenir w bits parmi les bits aléatoires générés. Les w bits retenus représentent un nombre S pseudo-aléatoire. Le nombre S est présenté en sortie SO du générateur GEN.
Le générateur GEN de nombres pseudo-aléatoires comporte aussi un module CAL de calibrage qui permet de déterminer le multiplicande (y'k ,z'k)de l'itération suivante.
En référence à l'étape E5 décrite ci-dessus, le module CAL de calibrage permet à partir d'une troncature de chacune des composantes du couple (yk ,zk ) de définir le couple de valeurs (y'k ,z'k)dont chacune des composantes est représentée sur w bits.
Le couple de valeurs (y'k ,z'k)ainsi obtenu est ensuite présenté en entrée EN du dispositif GEN de génération de nombres pseudo-aléatoires pour la réalisation de l'itération suivante afin d'obtenir un nouveau nombre pseudo-aléatoire.
Les modules INIT d'initialisation, TR de troncature, SO de détermination de la sortie du générateur et CAL de calibrage peuvent être des modules
logiciels formant un programme d'ordinateur. L'invention concerne donc également un programme d'ordinateur pour un dispositif de génération de nombre pseudo-aléatoires comprenant des instructions de code de programme pour faire exécuter le procédé précédemment décrit par le dispositif.
Les différents modules logiciels peuvent être stockés dans ou transmis par un support de données. Celui-ci peut être un support matériel de stockage, par exemple un CD-ROM, une disquette magnétique ou un disque dur, ou bien un support transmissible tel qu'un signal électrique, optique ou radio.
L'invention peut être mise en œuvre dans toute application utilisant la génération de nombres pseudo-aléatoires que ce soit pour de la simulation, de l'analyse, de la prise de décision, de la sécurité ou encore de la cryptographie, etc.
L'architecture matérielle comprenant un multiplicateur de nombres complexes et un accumulateur double longueur est très simple et adaptée pour être mise en œuvre sur des microprocesseurs embarqués, des processeurs spécialisés dans le traitement des signaux (ou DSP pour Digital Signal Processoren anglais) ou encore des processeurs au silicium.
L'invention peut donc être utilisée dans des applications contraintes en puissance de calcul, en mémoire et en énergie. En particulier, l'invention peut être utilisée dans des réseaux de capteurs. L'état interne du générateur selon l'invention n'est pas révélé par les résultats obtenus en sortie de celui-ci. Un tel générateur peut être utilisé pour définir des dispositifs d'authentification/chiffrement en fournissant une partie secrète équivalente à une clé privée et une partie visible équivalente à une clé publique. Ainsi, l'application d'un tel générateur peut être la sécurisation de communications, notamment dans des réseaux de capteurs/actionneurs contraints en puissance de calcul, en mémoire et en énergie.
Claims
1. Procédé de génération de nombres pseudo-aléatoires réels signés représentés sur un nombre w entier de bits, destiné à être mis en œuvre dans un dispositif embarqué, caractérisé en ce qu'il comporte des étapes :
- d'initialisation (E1 ) comportant la détermination d'un nombre complexe initial et d'au moins un multiplicateur, lequel multiplicateur est un nombre complexe (ym, zm), qui satisfait les conditions suivantes :
1 + ε, < Vy* + z* < 1 + ε2 avec E1 = V2.2~(w-1> et ε2 > 2.2^1)
- de multiplication (E2), pour une itération donnée, d'un multiplicande, lequel multiplicande est un nombre complexe, par le multiplicateur, le résultat de la multiplication étant un nombre complexe dont la partie réelle et la partie imaginaire sont représentées sur 2w bits; le multiplicande de la première itération étant le nombre complexe initial,
- de troncature (E3), par application d'une fonction de troncature, respectivement de la partie réelle et de la partie imaginaire du résultat de la multiplication, le résultat de la troncature permettant de définir le multiplicande de l'itération suivante et l'erreur de troncature permettant de définir un nombre pseudo-aléatoire,
- de calibrage (E5) pour obtenir le multiplicande de l'itération suivante sous la forme d'un nombre complexe dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur le nombre w entier de bits et dont le module est compris entre une donnée minimum et une donnée maximum prédéfinies;
le nombre d'itérations étant déterminé par la quantité de nombres pseudoaléatoires à générer.
2. Procédé selon la revendication 1 , caractérisé en ce que la partie réelle et la partie imaginaire du multiplicateur sont des nombres réels signés représentés sur le nombre w entier de bits, le module du multiplicateur étant compris entre une valeur minimum et une valeur maximum prédéfinies et la valeur absolue du produit de la partie réelle par la partie imaginaire étant supérieure à une troisième valeur prédéfinie.
3. Procédé selon la revendication 2, caractérisé en ce que la valeur minimum est égale à 1 et la valeur maximum est égale à 2.
4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que la partie réelle et la partie imaginaire du nombre complexe initial et du multiplicande sont des nombres réels signés représentés sur le nombre w entier de bits et le module du nombre complexe initial et le module du multiplicande sont compris entre la donnée minimum et la donnée maximum prédéfinies.
5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que la fonction de troncature appartient à la liste suivante : - fonction partie entière,
- fonction partie entière par excès,
- fonction d'arrondi.
6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que l'étape (E1 ) d'initialisation comporte la détermination du nombre w entier de bits.
7. Procédé selon l'une quelconque des revendications 1 à 6, caractérisé en ce que l'étape (E1) d'initialisation comporte la détermination de la fonction de troncature.
8. Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce qu'il comporte une étape (E4) de détermination d'une sortie, laquelle sortie est un nombre pseudo-aléatoire obtenu par concaténation d'un premier nombre de bits les plus significatifs de la partie réelle et d'un deuxième nombre de bits les plus significatifs de la partie imaginaire de l'erreur de troncature du résultat de la multiplication.
9. Procédé selon la revendication 8, caractérisé en ce que la sortie déterminée est sur w bits et le premier nombre et le second nombre sont w égaux à
10. Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce qu'il comporte une étape (E4) de détermination d'une sortie, laquelle sortie est un nombre pseudo-aléatoire sur w bits obtenu à partir respectivement d'une opération effectuée entre un nombre entier h positif de bits les plus significatifs et le même nombre h de bits les moins significatifs de la partie réelle et de la même opération effectuée entre le nombre entier h positif de bits les plus significatifs et le même nombre h de bits les moins significatifs de la partie imaginaire de l'erreur de troncature du résultat de la multiplication.
1 1. Procédé selon la revendication 10, caractérisé en ce que l'opération est un OU exclusif.
12. Procédé selon l'une quelconque des revendications 1 à 11 , caractérisé en ce qu'il comporte la prédétermination d'une valeur seuil de nombre d'itérations et l'initialisation d'un compteur du nombre d'itérations, lequel compteur du nombre d'itérations est incrémenté à chaque itération de telle sorte que lorsque la valeur du compteur du nombre d'itérations atteint la valeur seuil de nombres d'itérations on change le multiplicateur.
13. Procédé selon l'une quelconque des revendications 1 à 12, caractérisé en ce qu'il comporte la prédétermination d'une valeur seuil de nombre d'itérations et l'initialisation d'un compteur du nombre d'itérations, lequel compteur du nombre d'itérations est incrémenté à chaque itération de telle sorte que lorsque la valeur du compteur du nombre d'itérations atteint la valeur seuil de nombres d'itérations, le multiplicande est remplacé par un nombre complexe dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur le nombre w entier de bits et dont le module est compris entre la donnée minimum et la donnée maximum prédéfinies.
14. Dispositif embarqué de génération de nombres pseudo-aléatoires réels signés représentés sur un nombre w entier de bits, caractérisé en ce qu'il comporte des moyens : - d'initialisation (INIT) permettant de déterminer un nombre complexe initial et au moins un multiplicateur, lequel multiplicateur est un nombre complexe, (ym, zm), qui satisfait les conditions suivantes : V2.2"(W-1> et ε2 > 2.2~(w-1>
- de multiplication (MC), pour une itération donnée, d'un multiplicande, lequel multiplicande est un nombre complexe, par le multiplicateur, le résultat de la multiplication étant un nombre complexe dont la partie réelle et la partie imaginaire sont représentées sur 2w bits; le multiplicande de la première itération étant le nombre complexe initial,
- de troncature (TR), par application d'une fonction de troncature, respectivement de la partie réelle et de la partie imaginaire du résultat de la multiplication, le résultat de la troncature permettant de définir le multiplicande de l'itération suivante et l'erreur de troncature permettant de définir un nombre pseudo-aléatoire, - de calibrage (CAL) permettant d'obtenir le multiplicande de l'itération suivante sous la forme d'un nombre complexe dont la partie réelle et la partie imaginaire sont des nombres réels signés représentés sur le nombre w entier de bits et dont le module est compris entre une donnée minimum et une donnée maximum prédéfinies;
le nombre d'itérations étant déterminé par la quantité de nombres pseudoaléatoires à générer.
15. Produit programme d'ordinateur comprenant des instructions de code de programme enregistrées sur ou transmises par un support lisible par un ordinateur, pour mettre en œuvre les étapes du procédé selon l'une quelconque des revendications 1 à 13 lorsque ledit programme fonctionne sur ordinateur.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0953362 | 2009-05-20 | ||
| FR0953362 | 2009-05-20 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2010133795A1 true WO2010133795A1 (fr) | 2010-11-25 |
Family
ID=41351600
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/FR2010/050955 Ceased WO2010133795A1 (fr) | 2009-05-20 | 2010-05-18 | Generation de nombres pseudo-aleatoires |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2010133795A1 (fr) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2851385A1 (fr) * | 2003-02-14 | 2004-08-20 | France Telecom | Generation de code de brouillage pour communications umts |
| EP2012214A1 (fr) * | 2007-06-26 | 2009-01-07 | France Telecom | Procédé et dispositif de génération numérique d'une fréquence |
-
2010
- 2010-05-18 WO PCT/FR2010/050955 patent/WO2010133795A1/fr not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2851385A1 (fr) * | 2003-02-14 | 2004-08-20 | France Telecom | Generation de code de brouillage pour communications umts |
| EP2012214A1 (fr) * | 2007-06-26 | 2009-01-07 | France Telecom | Procédé et dispositif de génération numérique d'une fréquence |
Non-Patent Citations (1)
| Title |
|---|
| R.P. BRENT: "An improved Monte Carlo factorization algorithm", BIT, vol. 20, 1980, pages 176 - 184 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1441313B1 (fr) | Procédé cryptographique à clé publique pour la protection d' une puce électronique contre la fraude | |
| CH634161A5 (fr) | Appareil de dechiffrage d'un message chiffre et son utilisation dans une installation de transmission. | |
| WO2007116171A2 (fr) | Procede et dispositif pour engendrer une suite pseudo-aleatoire | |
| FR3048102A1 (fr) | Methode d'execution confidentielle d'un programme operant sur des donnees chiffrees par un chiffrement homomorphe | |
| EP1368747A1 (fr) | Procede et dispositif pour reduire le temps de calcul d'un produit, d'une multiplication et d'une exponentiation modulaire selon la methode de montgomery | |
| EP2166696B1 (fr) | Protection de l'intégrité de données chiffrées en utilisant un état intermédiare de chiffrement pour générer une signature | |
| EP2391051B1 (fr) | Procédé de détermination d'une représentation d'un produit d'éléments d'un corps fini | |
| EP2012214B1 (fr) | Procédé et dispositif de génération numérique d'une fréquence | |
| EP1493078B8 (fr) | Procédé cryptographique protégé contre les attaques de type à canal caché | |
| FR3083885A1 (fr) | Circuit de generation de facteurs de rotation pour processeur ntt | |
| EP1449067B1 (fr) | Securisation d'un generateur pseudo-aleatoire | |
| WO2010133795A1 (fr) | Generation de nombres pseudo-aleatoires | |
| EP3857810B1 (fr) | Procédé cryptographique de comparaison sécurisée de deux données secrètes x et y | |
| EP3451316B1 (fr) | Dispositif de réduction modulaire | |
| EP2153575B1 (fr) | Obtention de valeurs dérivées dépendant d'une valeur maîtresse secrète | |
| EP1989820B1 (fr) | Dispositif et procédé de hachage cryptographique | |
| EP2274869A2 (fr) | Protection en boite-blanche d'algorithmes cryptographiques comprenant le calcul d'une forme quadratique | |
| EP1199628B1 (fr) | Unité de calcul dans laquelle on détermine l'inverse d'un entier modulo un grand nombre | |
| EP1891769B1 (fr) | Protection d'un calcul d'exponentiation modulaire effectue par un circuit integre | |
| FR3134909A1 (fr) | Protection contre les attaques par canal auxiliaire a l’aide d’un masquage carre | |
| FR3053862A1 (fr) | Procede de generation des parametres caracterisant un protocole cryptographique | |
| EP4672066A1 (fr) | Procede d'interrogation confidentielle de bases de donnees | |
| FR3163796A1 (fr) | Dispositif et procédé de génération d’une signature aveugle d’un message | |
| EP3614617A1 (fr) | Procédé et dispositif de génération de paramètre(s) d'un protocole cryptographique asymétrique à partir d'une blockchain, procédé et appareil de cryptage ou de décryptage et programme d'ordinateur associés | |
| FR2985128A1 (fr) | Procede de determination de la valeur de u = 2^r mod n, avec 2^r > r ou r est une constante de montgomery. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10728774 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 10728774 Country of ref document: EP Kind code of ref document: A1 |









