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 2qι é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 2qι é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.