WO2007110506A1 - Generateur de nombres aleatoires - Google Patents

Generateur de nombres aleatoires Download PDF

Info

Publication number
WO2007110506A1
WO2007110506A1 PCT/FR2007/000519 FR2007000519W WO2007110506A1 WO 2007110506 A1 WO2007110506 A1 WO 2007110506A1 FR 2007000519 W FR2007000519 W FR 2007000519W WO 2007110506 A1 WO2007110506 A1 WO 2007110506A1
Authority
WO
WIPO (PCT)
Prior art keywords
oscillator
bits
lfsr
integer
random number
Prior art date
Application number
PCT/FR2007/000519
Other languages
English (en)
Inventor
Patrick Radja
Roland Stoffel
Original Assignee
Eads Secure Networks
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 Eads Secure Networks filed Critical Eads Secure Networks
Priority to US12/280,767 priority Critical patent/US8209367B2/en
Priority to EP07731202A priority patent/EP1999569A1/fr
Publication of WO2007110506A1 publication Critical patent/WO2007110506A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/588Random number generators, i.e. based on natural stochastic processes

Abstract

Un générateur de nombres aléatoires comprend un LFSR à n bits (300) au moins un oscillateur (100) ayant au moins un élément de retard (110) introduisant un retard variable dans sa boucle de contre-rétroaction, et au moins un échanti Honneur /bloqueur (200) ayant au moins une entrée couplée à une sortie de l'oscillateur, et au moins une sortie couplée à une entrée du LFSR, et une entrée d'horloge recevant un signal d'horloge d'échantillonnage (CLKl ) à une fréquence très inférieure à la fréquence de l'oscillateur. Ce générateur est par exemple configuré pour faire varier le retard introduit par l'élément de retard de l'oscillateur en fonction d'un nombre q de bits de rétroaction parmi les n bits de sortie du LFSR, où q est un nombre entier tel que 1 <= q <= n.

Description

GENERATEUR DE NOMBRES ALEATOIRES
La présente invention se rapporte de manière générale à la génération de nombres aléatoires.
Des nombres aléatoires sont utilisés dans diverses applications de chiffrement, en particulier pour le chiffrement des données échangées dans les systèmes de communication sécurisés tels que les systèmes de radiocommunications professionnels ou PMR ("Professionnal Mobile Radio"). Le chiffrement de données requiert en effet des nombres aléatoires tels que, par exemple, des numéros d'identification secrets, des clés de chiffrement ou des valeurs initiales pour des algorithmes de chiffrement itératifs, ou autres. Une approche connue pour la génération de nombres aléatoires consiste à utiliser un registre à décalage avec rétroaction linéaire ou LFSR ("Linear Feedback Shift Register"). Un LFSR à n bits est un générateur de nombres pseudo aléatoires qui traite un polynôme de degré n. Une structure classique comprend un LFSR dont une valeur d'entrée sur 1 bit est fournie par la sortie échantillonnée d'un oscillateur à fort bruit de phase dont la fréquence est très supérieure à la fréquence d'échantillonnage. Cette valeur d'entrée est appelée bit d'entropie. Le LFSR est cadencé par un signal d'horloge à la fréquence d'échantillonnage.
Cette structure, qui présente en particulier l'avantage d'occuper peu de surface de silicium et donc d'être bien adaptée pour des applications en circuit intégré, a néanmoins un inconvénient. Cet inconvénient réside dans le fait que la structure génère des nombres qui, sur une longue durée, ne sont pas totalement aléatoires, ils sont corrélés à la fréquence de l'oscillateur qui est stable car elle ne dépend que des conditions d'environnement (température, tension ...) .
Diverses propositions ont été faites pour augmenter le caractère aléatoire des nombres générés.
Ainsi, le document US 6,954,770 divulgue une structure dans laquelle une valeur d'entropie sur un nombre N de bits est fournie en entrée du LFSR, où N est un nombre entier supérieur à l'unité. Chaque bit d'entropie est fourni par la sortie échantillonnée d'un oscillateur respectif. Il est injecté en entrée dé l'un des éléments de registre à décalage formant le LFSR, via une porte logique de type "OU Exclusif" couplée par ailleurs à la sortie de l'élément de registre à décalage précédent. Cette structure plus complexe augmente en effet le caractère aléatoire des nombres générés, mais elle conserve le même inconvénient décrit précédemment c'est à dire que les nombres générés ne sont pas totalement indépendants, chaque oscillateur ayant une fréquence stable. Un autre inconvénient de cette solution est l'augmentation de la puissance dissipée du fait d'un plus grand nombre d'oscillateurs fonctionnant à fréquence élevée.
Dans le document US 6,480,072 il est proposé d'obtenir le bit d'entropie alimentant un LFSR, ou un autre dispositif tel qu'un circuit CRC ("Cyclic Redundancy Check"), en échantillonnant la sortie d'un oscillateur commandé en tension ou VCO ("Voltage Controlled Oscillator") à une fréquence d'échantillonnage très inférieure. Pour diminuer le caractère prédictible de la relation de phase qui lie la fréquence de sortie du VCO et la fréquence d'échantillonnage, la fréquence de sortie du VCO est modifiée pendant chaque période d'échantillonnage. Cette modification est obtenue en produisant une tension de commande du VCO qui résulte de la combinaison, dans un opérateur "OU Exclusif", du signal d'horloge d'échantillonnage et de la sortie d'un LFSR à 8 bits dédié à cette seule fonction. Cette proposition permet aussi d'améliorer la qualité des nombres aléatoires générés, mais elle est également assez complexe et elle a d'autre part l'inconvénient d'utiliser de modules analogiques qui sont facilement repérable sur une puce.
Des modes de réalisation de la présente invention permettent de renforcer encore le caractère aléatoire des nombres générés à l'aide d'un LFSR en réduisant la corrélation des nombres générés avec la fréquence de l'oscillateur en utilisant un oscillateur variant aléatoirement en phase et en fréquence en exploitant toutes les caractéristiques aléatoires des matériaux (température, localisation,...). Ils permettent de minimiser la puissance dissipée en limitant le nombre d'oscillateurs, et/ou de dissimuler la structure qui n'utilise que des cellules logiques standard qui sont noyées dans un ensemble de portes.
Un premier aspect de l'invention propose ainsi un générateur de nombres aléatoires comprenant: - un registre à décalage avec rétroaction linéaire, ou LFSR, à n bits, où n est un nombre entier déterminé;
- au moins un oscillateur ayant au moins un élément de retard introduisant un retard variable dans sa boucle de contre-réaction, et, - au moins un échantillonneur/bloqueur ayant au moins une entrée couplée à une sortie de l'oscillateur, et au moins une sortie couplée à une entrée du LFSR, et une entrée d'horloge recevant un signal d'horloge d'échantillonnage à une fréquence très inférieure à la fréquence de l'oscillateur.
Ce générateur est configuré pour faire varier le retard introduit par l'élément de retard dans la boucle de contre-réaction de l'oscillateur en fonction d'un nombre q de bits de rétroaction parmi les n bits de sortie du LFSR, où q est un nombre entier tel que 1 < q < n .
Un second aspect de l'invention propose un procédé de génération de nombres aléatoire en utilisant : - un registre à décalage avec rétroaction linéaire, ou LFSR, à n bits, où n est un nombre entier déterminé;
- au moins un oscillateur ayant au moins un élément de retard introduisant un retard variable dans sa boucle de contre-réaction; et,
- au moins un échantillonneur ayant au moins une entrée couplée à une sortie de l'oscillateur, et au moins une sortie couplée à une entrée du
LFSR, et une entrée d'horloge recevant un signal d'horloge d'échantillonnage à une fréquence très inférieure à la fréquence de l'oscillateur.
Selon ce procédé, on fait varier le retard introduit dans la boucle de contre-réaction de l'oscillateur en fonction d'un nombre q de bits de rétroaction parmi les n bits de sortie du LFSR, où q est un nombre entier tel que 1 < q < n .
La structure intrinsèque de l'élément de retard possède une nature fortement variable en fonction de l'environnement en exploitant l'ensemble des variations physique de la structure microélectronique et du substrat
(température, tension, position sur le substrat semiconducteur ) entraînant un bruit de phase important. Le fait de faire varier le retard introduit dans la boucle de contre-réaction de l'oscillateur en fonction d'une partie au moins des bits de sortie du LFSR crée une boucle de rétroaction aléatoire, qui a pour effet d'ajouter un bruit en fréquence dans l'oscillateur et de créer une instabilité forte dans le comportement du LFSR permettant d'éliminer le caractère déterministe de la séquence de nombres délivrés en sortie par le LFSR.
D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés, sur lesquels:
- la figure 1 est un schéma d'une structure de base d'un générateur de nombres pseudo aléatoires utilisant un LFSR et un oscillateur ;
- la figure 2 donne des chronogrammes illustrant le principe de fonctionnement de la structure de base de la figure 1 ; - la figure 3 est un schéma d'une première structure de générateur de nombres aléatoires bouclé, selon des premiers modes de réalisation de la présente invention ;
- la figure 4 est un schéma illustrant le principe d'un LFSR à n entrées ;
- la figure 5 est un schéma d'un exemple d'oscillateur pouvant être utilisé dans des modes de réalisation de la présente invention ; et,
- la figure 6 est un schéma d'une structure de générateur de nombres aléatoires à deux boucles, selon des seconds modes de réalisation de la présente invention.
Dans ce qui suit et aux figures, les mêmes éléments portent des références identiques.
Une structure de générateur de nombres pseudo aléatoires sur laquelle sont basés des modes de réalisation de la présente invention, comprend un LFSR et un oscillateur avec un élément introduisant un retard déterminé.
En référence à la figure 1 , une structure classique, montrée par exemple à la figure 6 du document US 6,480,072 cité et discuté en introduction, comprend un oscillateur en anneau 1 dont la sortie est bouclée avec l'entrée via un élément à retard 11. Un oscillateur en anneau est composé d'une chaîne d'éléments ou étages inverseurs en nombre impair (supérieur à l'unité), fermée sur elle même. L'élément de retard 11 est conçu de telle manière qu'il introduit un retard fortement variable en fonction des caractéristiques physiques de l'environnement, notamment mais pas uniquement la température du circuit. Il s'ensuit que le signal CLK_R délivré par l'oscillateur est instable en phase, comme étant affecté d'un bruit de phase aléatoire. C'est pourquoi on parlera parfois, dans la suite, de signal d'horloge aléatoire pour désigner le signal délivré par l'oscillateur.
La sortie de l'oscillateur 1 est échantillonnée par une bascule 2 ("flip- flop" en anglais) à la fréquence d'un signal d'horloge CLK stable en phase, dont la fréquence est très inférieure à la fréquence de l'oscillateur. Le bit correspondant à la valeur binaire délivrée par la bascule 2 est fourni en tant que bit d'entropie sur 1 bit en entrée d'un LFSR 3 à n bits, lequel est cadencé par le signal d'horloge CLK. La sortie du LFSR produit des nombres pseudo aléatoires RN sur n bits, qui changent de valeur à chaque front d'activation du signal CLK. La valeur accumulée du nombre RN dépend de l'évolution naturelle de la valeur du polynôme traité par le LFSR au rythme du signal d'horloge CLK, et en outre des valeurs de la valeur d'entropie injectée au rythme plus lent du signal CLK_R.
En référence à la figure 2 sur laquelle le signal CLK_R et le signal CLK sont représentés respectivement sur la première ligne et sur la seconde ligne, le bruit de phase du signal CLK_R correspond à une gigue ("jitter" en anglais) qui se traduit par une certaine distribution de la position temporelle des fronts du signal CLK_R. Lorsque la fréquence du signal d'horloge CLK est très inférieure à la fréquence nominale du signal CLK_R, les valeurs successives du signal CLK_R échantillonné à la fréquence du signal CLK constituent une séquence de valeurs binaires aléatoirement égales à 1 ou 0.
On va maintenant décrire des premiers modes de réalisation du générateur de nombres aléatoires, en référence au schéma fonctionnel de la figure 3. Dans ces premiers modes de réalisation, un oscillateur 100 à fort bruit de phase (OSC1) comprend un élément de retard 110. L'oscillateur peut par exemple être un oscillateur en anneau comprenant un nombre z d'étages mis en cascade, où z est un nombre entier impair. L'oscillateur 100 comprend un nombre p de sorties distinctes, correspondant par exemple chacune à la sortie d'un étage inverseur respectif de l'oscillateur, où p est un nombre entier tel que 1 < p < n et p < z . Ces p sorties délivrent un signal d'horloge aléatoire CLK_R1 sur p bits (en pratique, il s'agit en fait de p signaux parallèles). Le signal CLK_R1 est fourni en entrée d'un échantillonneur/bloqueur 200 qui est activé par un signal d'horloge CLK1 stable en phase. Cet échantillonneur/bloqueur comprend par exemple p bascules en parallèle, par exemple des bascules S-R, T, J-K, ou D, recevant chacune l'un des p bits du signal CLK_R1 , respectivement, sur son entrée de donnée. Les p bascules de l'échantillonneur 200 sont toutes activées par le signal CLK1. Cet échantillonneur a pour fonction de synchroniser le signal CLK_R1 avec le signal d'horloge CLK1.
La sortie de l'échantillonneur 200 délivre un signal IN sur p bits (en pratique, il s'agit en fait ici aussi de p signaux parallèles), correspondant chacun à la sortie de l'une respective des bascules de l'échantillonneur 200. Le signal IN est fourni en tant que valeur d'entropie sur p bits, en entrée d'un
LFSR 300 à n bits. Le LFSR 300 est activé par le signal d'horloge CLK1. Il traite un polynôme de degré n, et délivre en sortie un nombre aléatoire RN codé sur n bits.
Parmi les n bits du nombre RN, un nombre q de bits forment un signal de rétroaction FB1 sur q bits, où q est un nombre entier tel que 1 < q ≤ n . Les q bits du signal FB1 , appelés bits de rétroaction, sont utilisés pour faire varier le retard introduit par l'élément de retard 110 de l'oscillateur 100. Ainsi qu'on le voit clairement à la figure 3, on crée ainsi une boucle de rétroaction aléatoire entre le LFSR 300 et l'oscillateur 100. Grâce à ce principe, la valeur d'entropie IN introduite en entrée du LFSR a un caractère aléatoire fort, et permet de générer des nombres RN de n bits vraiment aléatoires. En effet, les éléments constitutifs de la structure que sont l'oscillateur 100 et le LFSR 300, sont bouclés, chacun interagissant avec l'autre de façon aléatoire, ce qui garantit un fonctionnement global très aléatoire. Ainsi, les nombres RN prélevés en sortie du LFSR 300 à chaque tirage ont un caractère aléatoire et non dépendant fort, ce qui rend possible des tirages consécutifs nombreux dans les applications qui l'exigent. Ce principe permet de générer des nombres aléatoires de bonne qualité, et ce quelque soit leur taille n. Cela permet aussi d'utiliser un LFSR de degré moins élevé qu'avec une structure de l'art antérieur, à qualité égale des nombres générés. En référence à la figure 4, le principe, connu en soi, d'un LFSR à p entrées et n sorties va maintenant être exposé.
Le LFSR 300 comprend n bascules (par exemple des bascules D appelées "Flip-Flop") respectivement FF1 à FFn couplées en cascade les unes avec les autres,. La sortie de la dernière bascule FFn est couplée à l'entrée de la première bascule FF1 par l'intermédiaire d'une porte logique XOR1 de type
"OU Exclusif". De même, la sortie de chacune des bascules FFi est reliée à l'entrée de la bascule suivante FFi+1 soit directement soit, comme représenté, via une porte logique XORi+1 , pour tout i tel que 1 < i < n - 1. Selon la valeur du polynôme traité par le LFSR, la sortie d'une bascule peut être reliée à l'entrée d'une autre. Dans l'exemple montré, la sortie de la bascule FFn-1 est ainsi couplée à l'entrée de la bascule FF2 par l'intermédiaire de la porte XOR2.
De même, les p bits de la valeur d'entropie IN sont délivrés chacun sur l'entrée de l'une respective des bascules FF1 à FFn via la porte logique correspondante, respectivement XOR1 à XORn.
Les n sorties du LFSR, qui délivrent les n bits du nombre aléatoire généré, sont prises sur les sorties des n bascules FF1 à FFn, respectivement.
On notera que, lorsque l'entrée d'une bascule FFi quelconque ne reçoit aucun des p bits de la valeur d'entropie IN et n'est pas non plus couplée à la sortie d'une bascule autre que la bascule précédente FFi-1 , alors elle peut être directement couplée à cette dernière, c'est-à-dire sans passer par la porte
XORi-1 , qui peut donc être absente.
En référence à la figure 5, l'oscillateur 100 selon des modes de réalisation est basé sur un oscillateur en anneau. L'oscillateur comprend ainsi un nombre z d'étages inverseurs mis en cascade, où z est un nombre entier impair, respectivement INV1 à INVz. Ces éléments inverseurs peuvent être réalisés très simplement en technologie CMOS. L'oscillateur comprend par ailleurs un nombre p de sorties distinctes correspondant chacune à la sortie d'un inverseur respectif, où p est un nombre entier tel que 1 < p < n et p < z (on rappelle que p correspond au nombre de bits codant les valeurs d'entropie IN fournies en entrée du LFSR). Ces sorties délivrent les p bits formant le signal CLK R1. L'oscillateur comprend de préférence au moins 2q éléments de retard différents, et au moins un multiplexeur configuré pour sélectionner l'un des 2q éléments de retard en fonction d'une partie au moins des q bits de rétroaction. Ces éléments de retard peuvent correspondre à des chemins de retard introduisant chacun un retard respectif. Chaque chemin de retard comprend un ou plusieurs éléments logiques ayant des caractéristiques différentes (taille, composition, ...) afin d'assurer un retard différent pour chacun d'entre eux ainsi qu'un comportement différent vis à vis des phénomènes physiques entraînant une variation différente de ce retard les affectant (localisation sur le substrat semiconducteur, tension, température, ..) entraînant ainsi un comportement du bruit de phase différent pour les 2q retards
Toujours en référence à la figure 5, un mode de réalisation de l'oscillateur comprend de préférence un nombre m de multiplexeurs, où m est un nombre entier tel que 1 < m < z , disposés chacun en amont de l'un des z étages inverseurs INV1 à INVz. Ces multiplexeurs MUX1 à MUXm sont configurés chacun pour sélectionner l'un des 2q éléments de retard en fonction d'une partie au moins des q bits de rétroaction. On obtient ainsi l'application d'un retard variable en m endroits différents de l'oscillateur, ce qui multiplie les configurations possibles, et donc contribue à augmenter le caractère aléatoire des états logiques du signal CLK_R1 délivré par l'oscillateur.
Dans un mode de réalisation, les m multiplexeurs sont configurés pour sélectionner chacun l'un déterminé parmi un nombre 2lk des 2q éléments de retard en fonction d'un nombre Ik de bits parmi les q bits de rétroaction, où Ik est un nombre entier tel que 1 < lk < q pour tout k tel que 1 < k < m . Dit autrement, les 2q éléments de retard sont répartis entre les m multiplexeur MUX1 à MUXm, ce qui revient à diminuer le nombre total d'éléments de retard à prévoir par rapport à une structure dans laquelle chaque multiplexeur permettrait de sélectionner l'un parmi 2q éléments de retard (en sorte qu'il faudrait en fait mx2q éléments de retard au total). A la figure 5, les 2lk éléments de retard associés à chaque multiplexeur MUXk sont référencés DELk,1 à DELk, 2lk , respectivement, pour tout k tel que 1 < k < m . Par exemple, pour tout k tel que 1 < k < m , les Ik de bits qui servent à sélectionner l'élément de retard appliqué par le multiplexeur MUXk, sont obtenus à partir des q bits de rétroaction par l'intermédiaire d'une fonction logique respectivement Sk. Les fonctions logiques S1 à Sm peuvent par exemple être réalisées en logique combinatoire câblée.
Dans un mode de réalisation lk = q/m pour tout k tel que 1 < k < m . Dit autrement, les 2q éléments de retard sont équitablement répartis entre les m multiplexeurs MUX1 à MUXm. Cela simplifie la conception du circuit, en permettant d'utiliser des masques avec des motifs répétitifs pour la fabrication sur le substrat semiconducteur.
Dans un mode de réalisation, on prévoit par ailleurs que m = z c'est-à- dire que chaque étage inverseur de l'oscillateur en anneau est couplé à l'étage précédent via un élément de retard variable en fonction de tout ou partie des q bits de rétroaction. On optimise ainsi la taille de l'oscillateur en anneau. D'autres modes de réalisation de l'oscillateur sont bien entendu envisageables. Il n'est pas obligatoire qu'il s'agisse d'un oscillateur en anneau. Il suffit que l'oscillateur comprenne un élément qu'on peut faire varier en fonction des q bits de rétroaction pour influencer de manière aléatoire la gigue (bruit de phase) du signal généré par l'oscillateur. De même, on peut avoir plus d'un oscillateur pour générer les p bits formant la valeur d'entropie injectée dans le LFSR. Ainsi, l'oscillateur 100 peut être remplacé par un nombre p d'oscillateurs distincts ayant chacun une sortie respective, où p est un nombre entier tel que 1 < p < n , fournissant l'un des bits de la valeur d'entropie IN. Chacun des p oscillateurs peut par exemple être un oscillateur en anneau qui comprend un nombre zι d'étages en cascade, où z\ est un nombre entier déterminé, au moins 2q' éléments de retard différents, où qj est un nombre entier tel que 1 < qs < q , et au moins un multiplexeur configuré pour sélectionner l'un des 2q' éléments de retard en fonction d'une partie au moins desdits q-, bits de rétroaction, où i est un indice tel que 1 < i < p permettant de distinguer entre eux les p oscillateurs. Un tel oscillateur aurait la même structure que l'oscillateur représenté à la figure 5 déjà décrite (sur laquelle on ajouterait l'indice i aux lettres q, z et m), mais n'aurait qu'une seule sortie correspondant par exemple à la sortie du dernier élément inverseur INVZJ. Cet oscillateur n'est pas décrit en détails à nouveau ici, mais peut être décliné selon les mêmes modes de réalisation que celui de la figure 5, ce qui permet d'obtenir les avantages correspondants qui ont été indiqués précédemment.
Dit autrement, chaque oscillateur en anneau peut comprendre un nombre mi de multiplexeurs, où rrij est un nombre entier tel que 1 < m, < Z1 pour tout i tel que 1 < i ≤ p , configurés chacun pour sélectionner l'un des 2 éléments de retard en fonction d'une partie au moins des qι bits de rétroaction. Les mj multiplexeurs, pour 1 < n^ < z , peuvent être configurés chacun pour sélectionner chacun l'un parmi un nombre 2j| des 2 éléments de retard en fonction d'un nombre jj de bits parmi les q bits de rétroaction, où J1 pour tout i tel que 1 < i < p , est un nombre entier tel que 1 < j, < q, .
De préférence, on choisit J1 = q/nrii pour tout i tel que 1 < i < p .
De manière encore plus avantageuse, on choisit m, = z, pour tout i tel que 1 < i ≤ p .
D'autres modes de réalisation du générateur permettent d'accroître encore le caractère aléatoire des nombres générés, et ce dès les premiers tirages (c'est-à-dire sans qu'il soit besoin d'attendre que le polynôme traité par le LFSR ait progressé un certain temps).
Ces seconds modes de réalisation du générateur de nombres aléatoires vont maintenant être décrits en référence au schéma fonctionnel de la figure 6, sur laquelle les mêmes éléments qu'à la figure 3 portent les mêmes références et ne sont pas à nouveau décrits en détails.
Le générateur comprend ici, en plus de l'oscillateur 100, un oscillateur additionnel 200 (OSC2) ayant au moins un élément de retard 410. L'élément
410 introduit un retard déterminé, qui varie en fonction d'un nombre w de bits de rétroaction parmi les n bits de sortie du LFSR, où w est un nombre entier tel que 1 < w < n . Ces w bits de rétroaction forment un signal de rétroaction FB2. Ils peuvent ou non, en tout ou en partie, être les mêmes que les q bits de rétroaction formant le signal de rétroaction FB1 fournis à l'oscillateur 100.
Pour le reste, l'oscillateur 400 peut être de même nature et être réalisé de la même manière que l'oscillateur 100 décrit plus haut en référence au schéma de la figure 3. Dit autrement, l'oscillateur 400 peut être un oscillateur en anneau qui présente les caractéristiques de l'oscillateur en anneau 100 décrit précédemment. Le lecteur est donc renvoyé à cette description, dans laquelle il faut simplement remplacer la lettre q par la lettre w (c'est-à-dire qu'il faut remplacer les q bits de FB1 par les w bits de FB2). Le signal CLK_R2 délivré par l'oscillateur 400 est un signal d'horloge aléatoire au sens mentionné plus haut. Il est utilisé en lieu et place du signal CLK1 de la figure 3, pour cadencer l'échantillonneur 200 et le LFSR 300. Dit autrement, le signal CLK_R2 sert de signal d'horloge d'échantillonnage du signal CLK_R1 délivré par l'oscillateur 100. Etant donné que l'oscillateur 400 est bouclé avec le LFSR 300, le signal CLK_R2 présente une gigue très aléatoire. Ce caractère aléatoire en phase et en fréquence dont est affecté le signal d'échantillonnage du signal CLK_R2, qui lui-même est affecté d'un bruit de phase fortement aléatoire, renforce très sensiblement le caractère aléatoire des valeurs d'entropie IN injectées en entrée du LFSR au rythme du signal CLK_R2. Comme on le remarque aisément, le générateur selon ces modes de réalisation comporte en effet deux boucles d'injection de bruit, une au travers du signal d'entrée et une autre au travers de l'horloge du LFSR, alors que celui de la figure 3 n'en comporte qu'une. Ceci permet d'augmenter la qualité, c'est-à-dire le caractère aléatoire, des nombres RN délivrés en sortie du LFSR.
Avantageusement, la seconde boucle implique une variation de la vitesse de fonctionnement du LFSR, qui se traduit par des variations de température du circuit, ce qui contribue à rajouter de l'aléa qui se reboucle accélérant les phénomènes parallèles et rendant imprédictible le comportement de la structure.
On notera que les nombres RN sont de préférence synchronisés avec un signal d'horloge stable en phase. A cet effet, le générateur peut comprendre un échantillonneur/bloqueur à n bits 500, dont les n entrées de données sont couplée aux n sorties du LFSR 300, dont l'entrée d'horloge reçoit un signal CLK2 stable en phase (comme l'est le signal CLK1 de la figure 3), et dont les n sorties stabilisées délivrent les n bits du nombre RN généré.
Dans un mode de réalisation conforme à la figure 6, le signal d'échantillonnage du premier signal d'horloge aléatoire CLK_R1 a une fréquence sélectivement stable (comme dans le cas de la figure 3) ou instable (comme décrit ci-dessus). Dit autrement, on peut sélectionner un fonctionnement à une boucle ou un fonctionnement à deux boucles, en fonction des performances attendues, sachant que le mode de fonctionnement à deux boucles consomme plus de courant. A cet effet, le générateur peut comprendre un multiplexeur 600, dont une première entrée reçoit le signal CLK1 (signal d'horloge stable en phase) de la figure 3, dont une seconde entrée reçoit le signal CLK_R2 délivré par le second oscillateur (signal d'horloge aléatoire), et dont une entrée de commande reçoit un signal de commande CTRL assurant la sélection de l'un ou l'autre des signaux CLK1 et CLK_R2 en tant que signal d'échantillonnage du signal d'horloge aléatoire CLK_R1 délivré par le premier oscillateur.

Claims

REVENDICATIONS
1. Générateur de nombres aléatoires comprenant:
- un registre à décalage avec rétroaction linéaire (300), ou LFSR, à n bits, où n est un nombre entier déterminé;
- au moins un oscillateur (100) ayant au moins un élément de retard (110) introduisant un retard variable dans sa boucle de contre-réaction; et,
- au moins un échantillonneur/bloqueur (200) ayant une au moins entrée couplée à une sortie de l'oscillateur, et au moins une sortie couplée à une entrée du LFSR, et une entrée d'horloge recevant un signal d'horloge d'échantillonnage (CLK1) à une fréquence très inférieure à la fréquence de l'oscillateur, caractérisé en ce qu'il est configuré pour faire varier le retard introduit par l'élément de retard dans la boucle de contre-réaction de l'oscillateur en fonction d'un nombre q de bits de rétroaction (FB1) parmi les n bits de sortie du LFSR, où q est un nombre entier tel que 1 < q < n .
2. Générateur de nombres aléatoires selon la revendication 1 , dans lequel;
- l'oscillateur est un oscillateur en anneau qui comprend un nombre z d'étages (INVI-INVz) mis en cascade, où z est un nombre entier impair déterminé, et un nombre p de sorties distinctes correspondant chacune à la sortie d'un étage respectif, où p est un nombre entier tel que 1 < p < n et p ≤ z ;
- le LFSR comprend p entrées pour recevoir une valeur d'entropie sur p bits; et,
- l'échantillonneur comprend p entrées respectivement couplées aux p sorties de l'oscillateur en anneau, et p sorties respectivement couplées aux p entrées du LFSR pour délivrer la valeur d'entropie sur p bits.
3. Générateur de nombres aléatoires selon la revendication 2, dans lequel l'oscillateur en anneau comprend au moins 2q éléments de retard différents, et au moins un multiplexeur configuré pour sélectionner l'un des 2q éléments de retard en fonction d'une partie au moins des q bits de rétroaction.
4. Générateur de nombres aléatoires selon la revendication 3, dans lequel l'oscillateur en anneau comprend un nombre m de multiplexeurs (MUX1- MUXm), où m est un nombre entier tel que 1 < m < z , configurés chacun pour sélectionner l'un des 2q éléments de retard en fonction d'une partie au moins des q bits de rétroaction.
5. Générateur de nombres aléatoires selon la revendication 4, dans lequel les m multiplexeurs sont configurés pour sélectionner chacun l'un parmi un nombre 2lk des 2q éléments de retard en fonction d'un nombre I de bits parmi les q bits de rétroaction, où I est un nombre entier tel que 1 < lk < q pour tout k tel que 1 < k < m .
6. Générateur de nombres aléatoires selon la revendication 5, dans lequel lk = q/m pour tout k tel que 1 < k < m .
7. Générateur de nombres aléatoires selon l'une quelconque des revendications précédentes dans lequel m = z .
8. Générateur de nombres aléatoires selon la revendication 1 , comprenant un nombre p d'oscillateurs en anneau distincts, où p est un nombre entier tel que 1 < p ≤ n , ayant chacun une sortie respective; dans lequel,
- le LFSR comprend p entrées pour recevoir une valeur d'entropie sur p bits; et,
- l'échantillonneur/bloqueur comprend p entrées respectivement couplées aux p sorties respectives des p oscillateurs en anneau, et p sorties respectivement couplées aux p entrées du LFSR pour délivrer la valeur d'entropie sur p bits.
9. Générateur de nombres aléatoires selon la revendication 8, dans lequel chacun des p oscillateurs en anneau comprend:
- un nombre z\ d'étages en cascade, où z-, est un nombre entier déterminé pour tout i tel que 1 ≤ i < p ;
- au moins 2 éléments de retard différents, où qι est un nombre entier tel que 1 ≤ qi ≤ q , pour tout i tel que 1 ≤ i < p ; et,
- au moins un multiplexeur configuré pour sélectionner l'un des 2 éléments de retard en fonction d'une partie au moins des qι bits de rétroaction.
10. Générateur de nombres aléatoires selon la revendication 9, dans lequel chaque oscillateur en anneau comprend un nombre mi de multiplexeurs, où
Figure imgf000017_0001
pour 1 < i ≤ p est un nombre entier tel que 1 ≤ m, < z, , configurés chacun pour sélectionner l'un des 2q' éléments de retard en fonction d'une partie au moins des qi bits de rétroaction.
11. Générateur de nombres aléatoires selon la revendication 10, dans lequel les mi multiplexeurs, pour 1 ≤ m, < z , sont configurés chacun pour sélectionner chacun l'un parmi un nombre 21' des 2q' éléments de retard en fonction d'un nombre jj de bits parmi les q bits de rétroaction, où ji est un nombre entier tel que î ≤ k' ≤ q, pour tout i tel que 1 ≤ i < p .
12. Générateur de nombres aléatoires selon la revendication 11 , dans lequel jι = q/rrii pour tout i tel que 1 < i ≤ p .
13. Générateur de nombres aléatoires selon l'une quelconque des revendications 10 à 12, dans lequel m, = Z1 pour tout i tel que 1 < i < p .
14. Générateur de nombres aléatoires selon l'une quelconque des revendications 1 à 13, dans lequel le signal d'horloge d'échantillonnage (CLK_R2) a une fréquence instable.
15. Générateur de nombres aléatoires selon l'une quelconque des revendications 1 à 13, dans lequel le signal d'horloge d'échantillonnage a une fréquence sélectivement stable ou instable.
16. Générateur de nombres aléatoires selon la revendication 15, comprenant un oscillateur additionnel (400) ayant au moins un élément de retard (410) introduisant un retard variable dans sa boucle de contre-réaction qui varie en fonction d'un nombre w de bits de rétroaction parmi les n bits de sortie du LFSR, où w est un nombre entier tel que 1 < w < n .
17. Générateur de nombres aléatoires selon la revendication 16, dans lequel l'oscillateur additionnel est un oscillateur en anneau qui présente les caractéristiques de l'oscillateur en anneau tel que défini dans l'une quelconque des revendications 2 à 7, en remplaçant q par w.
18. Procédé de génération de nombres aléatoires en utilisant:
- un registre à décalage avec rétroaction linéaire (300), ou LFSR, à n bits, où n est un nombre entier déterminé;
- au moins un oscillateur (100) ayant au moins un élément de retard (110) introduisant un retard variable dans sa boucle de contre-réaction; et, - au moins un échantillonneur (200) ayant au moins une entrée couplée à une sortie de l'oscillateur, et au moins une sortie couplée à une entrée du LFSR, et une entrée d'horloge recevant un signal d'horloge d'échantillonnage à une fréquence très inférieure à la fréquence de l'oscillateur, caractérisé en ce qu'on fait varier le retard introduit par l'élément de retard dans la boucle de contre-réaction de l'oscillateur en fonction d'un nombre q de bits de rétroaction parmi les n bits de sortie du LFSR, où q est un nombre entier tel que 1 < q < n .
19. Procédé de génération de nombres aléatoires selon la revendication 18, dans lequel on fournit en entrée du LFSR une valeur d'entropie sur p bits générée à partir de p sorties distinctes de l'oscillateur ou à partir des sorties respectives de p oscillateurs distincts.
20. Procédé selon la revendication 18 ou 19, dans lequel la fréquence d'échantillonnage est produite en utilisant un oscillateur additionnel (400) ayant un élément de retard (410) introduisant un retard variable dans sa boucle de contre-réaction, et dans lequel on fait varier le retard introduit par l'élément de retard dans la boucle de contre-réaction de l'oscillateur additionnel en fonction d'un nombre w de bits de rétroaction parmi les n bits de sortie du LFSR, où w est un nombre entier tel que 1 < w < n .
PCT/FR2007/000519 2006-03-29 2007-03-26 Generateur de nombres aleatoires WO2007110506A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/280,767 US8209367B2 (en) 2006-03-29 2007-03-26 Random number generator
EP07731202A EP1999569A1 (fr) 2006-03-29 2007-03-26 Generateur de nombres aleatoires

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0602728 2006-03-29
FR0602728A FR2899352B1 (fr) 2006-03-29 2006-03-29 Generateur de nombres aleatoires

Publications (1)

Publication Number Publication Date
WO2007110506A1 true WO2007110506A1 (fr) 2007-10-04

Family

ID=37412233

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2007/000519 WO2007110506A1 (fr) 2006-03-29 2007-03-26 Generateur de nombres aleatoires

Country Status (4)

Country Link
US (1) US8209367B2 (fr)
EP (1) EP1999569A1 (fr)
FR (1) FR2899352B1 (fr)
WO (1) WO2007110506A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103813313A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN108833043A (zh) * 2018-05-31 2018-11-16 西安电子科技大学 基于Polar法改进的AWGN信道实现方法及装置

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382165B2 (en) * 2006-08-23 2008-06-03 International Business Machines Corporation Method for matching semiconductor device behavior
US7793235B2 (en) * 2007-10-25 2010-09-07 International Business Machines Corporation Method and circuit for matching semiconductor device behavior
US8131789B2 (en) * 2008-03-28 2012-03-06 Atmel Corporation True random number generator
US8958550B2 (en) 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
US9141338B2 (en) 2012-11-16 2015-09-22 Arm Limited Storage circuit with random number generation mode
US9075674B2 (en) 2012-12-12 2015-07-07 Freescale Semiconductor, Inc. Systems with adjustable sampling parameters and methods of their operation
US10708043B2 (en) * 2013-03-07 2020-07-07 David Mayer Hutchinson One pad communications
EP2796987A1 (fr) * 2013-04-26 2014-10-29 EM Microelectronic-Marin SA Générateur de nombres aléatoires
US10057250B2 (en) 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security
US9454653B1 (en) 2014-05-14 2016-09-27 Brian Penny Technologies for enhancing computer security
FR3023396B1 (fr) 2014-07-02 2016-07-29 Stmicroelectronics Rousset Generateur de nombres aleatoires
TWI497409B (zh) * 2014-07-18 2015-08-21 Winbond Electronics Corp 亂數產生器及其亂數產生方法
CN105322920B (zh) * 2014-08-05 2018-02-23 华邦电子股份有限公司 乱数产生器及其乱数产生方法
US9557964B2 (en) * 2014-11-21 2017-01-31 Winbond Electronics Corp. Random number generator and method for generating random number thereof
FR3051085B1 (fr) 2016-05-04 2020-02-14 Stmicroelectronics (Rousset) Sas Structure de multiplexeur
FR3051084B1 (fr) * 2016-05-04 2019-08-02 Stmicroelectronics (Rousset) Sas Generateur de nombres d'oscillations
FR3051086B1 (fr) 2016-05-04 2019-07-26 Stmicroelectronics (Rousset) Sas Circuit de comptage d'impulsions
CN106293617B (zh) * 2016-08-12 2018-11-09 上海坚芯电子科技有限公司 真随机数发生器
JP2019012944A (ja) * 2017-06-30 2019-01-24 株式会社デンソー クロック信号生成回路
US20210143915A1 (en) * 2018-04-27 2021-05-13 Arsen Georgievich KHALATIAN Method and apparatus for acoustic communication between closely located devices
TWI662471B (zh) * 2018-05-31 2019-06-11 華邦電子股份有限公司 真實隨機數產生裝置及其產生方法
CN110609672B (zh) * 2018-06-15 2023-11-07 华邦电子股份有限公司 真实随机数产生装置及其产生方法
US10790837B1 (en) 2019-10-22 2020-09-29 Qualcomm Incorporated Self-tuning digital clock generator
US10761809B1 (en) * 2020-03-12 2020-09-01 Katholieke Universiteit Leuven Random number generator
CN111506296B (zh) * 2020-04-24 2023-08-22 苏州盛科通信股份有限公司 基于lfsr的报文采样方法及系统
CN111900958A (zh) * 2020-06-19 2020-11-06 上海美仁半导体有限公司 随机数产生电路、芯片及家用电器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54137950A (en) * 1978-04-19 1979-10-26 Nec Corp Digital control oscillator
US6480072B1 (en) * 2000-04-18 2002-11-12 Advanced Micro Devices, Inc. Method and apparatus for generating random numbers
US20020186086A1 (en) * 2001-06-12 2002-12-12 Dallas Semiconductor Corporation Random number generator
US6687321B1 (en) * 1999-09-24 2004-02-03 Kabushiki Kaisha Toshiba Digital PLL circuit

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CH674423A5 (fr) 1987-03-25 1990-05-31 Crypto Ag
SE470242B (sv) * 1992-05-12 1993-12-13 Ericsson Telefon Ab L M Anordning för generering av slumptal
US5878075A (en) * 1996-07-26 1999-03-02 Motorola, Inc. Method of and apparatus for generating a pseudorandom noise sequence
JP2937919B2 (ja) * 1997-01-16 1999-08-23 日本電気アイシーマイコンシステム株式会社 疑似乱数発生回路
US6009135A (en) 1997-10-10 1999-12-28 Interdigtal Technology Corporation Method and apparatus for generating a stream cipher
US6807553B2 (en) * 2001-04-23 2004-10-19 Safenet B.V. Digital true random number generator circuit
US6954770B1 (en) * 2001-08-23 2005-10-11 Cavium Networks Random number generator
JP3732188B2 (ja) 2003-03-31 2006-01-05 Necマイクロシステム株式会社 擬似乱数発生回路
DE10347455B4 (de) * 2003-10-13 2010-08-26 Infineon Technologies Ag Pseudozufallszahlengenerator für einen Stream Cipher
US7293054B2 (en) * 2004-03-11 2007-11-06 Harris Corporation Random number source and associated methods
JP4559985B2 (ja) * 2005-03-15 2010-10-13 株式会社東芝 乱数発生回路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54137950A (en) * 1978-04-19 1979-10-26 Nec Corp Digital control oscillator
US6687321B1 (en) * 1999-09-24 2004-02-03 Kabushiki Kaisha Toshiba Digital PLL circuit
US6480072B1 (en) * 2000-04-18 2002-11-12 Advanced Micro Devices, Inc. Method and apparatus for generating random numbers
US20020186086A1 (en) * 2001-06-12 2002-12-12 Dallas Semiconductor Corporation Random number generator

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103813313A (zh) * 2012-11-07 2014-05-21 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN103813313B (zh) * 2012-11-07 2017-06-06 中国科学院微电子研究所 一种祖冲之算法的硬件实现装置及方法
CN108833043A (zh) * 2018-05-31 2018-11-16 西安电子科技大学 基于Polar法改进的AWGN信道实现方法及装置
CN108833043B (zh) * 2018-05-31 2020-10-30 西安电子科技大学 基于Polar法改进的AWGN信道实现方法及装置

Also Published As

Publication number Publication date
EP1999569A1 (fr) 2008-12-10
US20090172055A1 (en) 2009-07-02
US8209367B2 (en) 2012-06-26
FR2899352A1 (fr) 2007-10-05
FR2899352B1 (fr) 2008-06-20

Similar Documents

Publication Publication Date Title
WO2007110506A1 (fr) Generateur de nombres aleatoires
EP0826169B1 (fr) Circuit integre perfectionne et procede d&#39;utilisation d&#39;un tel circuit integre
EP3242398B1 (fr) Générateur de nombres d&#39;oscillations
EP2071729B1 (fr) Circuit compteur-diviseur double mode pour opérer à très haute fréquence
FR2868628A1 (fr) Generateur de nombres aleatoires et procede de production de nombres aleatoires
FR2859290A1 (fr) Generateur de nombres pseudoaleatoires
FR2833119A1 (fr) Generation de quantites secretes d&#39;identification d&#39;un circuit integre
FR2860892A1 (fr) Generateur de nombres pseudo-aleatoires pour un dispositif de chiffrement continu
EP3242401B1 (fr) Circuit de comptage d&#39;impulsions
FR2768276A1 (fr) Generateur d&#39;alea
EP3376670B1 (fr) Ligne à retard configurable
EP1730848A1 (fr) Procede de synchronisation rapide d&#39;un dispositif de reception de donnees brouillees au moyen d&#39;un calcul optimise d&#39;une valeur de synchronisation
EP3147774A1 (fr) Generateur d&#39;horloge aleatoire
CA2249158C (fr) Oscillateur a boucle de verrouillage de phase
EP1606880B1 (fr) Diviseur de frequence a taux de division variable
FR2986679A1 (fr) Generateur de nombres aleatoires vrais
EP1113579A1 (fr) Procédé pour diviser la fréquence d&#39;un signal
FR3025901A1 (fr) Dispositif de generation d&#39;un signal d&#39;horloge par multiplication de frequence
FR3133458A1 (fr) Circuit de génération de séquence temporelle
FR2914808A1 (fr) Dispositif d&#39;extraction d&#39;horloge et de donnees numeriques sans reglage externe
FR2773652A1 (fr) Circuit de generation d&#39;un signal d&#39;activation commande
Tehranipoor et al. True Random Number Generators
FR2619976A1 (fr) Generateur de sequence de caractere pseudo-aleatoire de grande longueur
WO2013121149A1 (fr) Procédé et dispositif électronique de génération d&#39;un signal d&#39;horloge variable
FR2476893A1 (fr) Registre a decalage statique i2l

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2007731202

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 12280767

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE