Brevet FR2899352A1 — publié le 20071005

GÉNÉRATEUR DE NOMBRES ALÉATOIRES 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 valeur d'entropie est fourni par la sortie échantillonnée d'un oscillateur respectif. II est injecté en entrée de 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éatoire 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 échantillonneurlbloqueur 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 à 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 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 25 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 30 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 s 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 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 21k des 2q éléments de retard en fonction d'un nombre lk de bits parmi les q bits de rétroaction, où lk 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 m x 2q éléments de retard au total). A la figure 5, les 2'k éléments de retard associés à chaque multiplexeur MUXk sont référencés DELk,1 à DELk, 2'k respectivement, pour tout k tel que 1 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 SI à Sm peuvent par exemple être réalisées en logique combinatoire câblée. Dans un mode de réalisation Ik = q/m pour tout k tel que 1 k 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 s p 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 24i éléments de retard différents, où q; est un nombre entier tel que 1 q; q, et au moins un multiplexeur configuré pour sélectionner l'un des 24i éléments de retard en fonction d'une partie au moins 30 desdits q; bits de rétroaction, où i est un indice tel que 1 s i s 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 INVz;. 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 m; de multiplexeurs, où m; est un nombre entier tel que 1 m; z, 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 m; multiplexeurs, pour 1 m; z, peuvent être configurés chacun pour sélectionner chacun l'un parmi un nombre 2'i des 24i éléments de retard en fonction d'un nombre j; de bits parmi les q bits de rétroaction, où j; pour tout i 15 tel que 1 i p , est un nombre entier tel que 1 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. 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 (120) introduisant un retard variable dans sa boucle de contre-réaction; et, - au moins un échantillonneurlbloqueur (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 s 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 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, et25 14 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 2'k 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 1km. 15 6. Générateur de nombres aléatoires selon la revendication 5, dans lequel Ik = q/m pour tout k tel que 1 7. Générateur de nombres aléatoires selon l'une quelconque des 20 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, 25 - 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 itel que 1ip; - au moins 2Q' éléments de retard différents, où q; est un nombre entier tel que 1 10. Générateur de nombres aléatoires selon la revendication 9, dans lequel chaque oscillateur en anneau comprend un nombre m; de multiplexeurs, où m; pour 1 i p est un nombre entier tel que 1 m, 11. Générateur de nombres aléatoires selon la revendication 10, dans lequel les m; multiplexeurs, pour 1 m; z , sont configurés chacun pour sélectionner chacun l'un parmi un nombre 2'' des 24 éléments de retard en fonction d'un nombre j; de bits parmi les q bits de rétroaction, où j; est un nombre entier tel 20 que 1 12. Générateur de nombres aléatoires selon la revendication 11, dans lequel j; = q/m; pour tout i tel que 1 13. Générateur de nombres aléatoires selon l'une quelconque des revendications 10 à 12, dans lequel m; = z; pour tout i tel que 1 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 bitsde rétroaction parmi les n bits de sortie du LFSR, où q est un nombre entier tel que 1 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