FR2986679A1 - Generateur de nombres aleatoires vrais - Google Patents
Generateur de nombres aleatoires vrais Download PDFInfo
- Publication number
- FR2986679A1 FR2986679A1 FR1251079A FR1251079A FR2986679A1 FR 2986679 A1 FR2986679 A1 FR 2986679A1 FR 1251079 A FR1251079 A FR 1251079A FR 1251079 A FR1251079 A FR 1251079A FR 2986679 A1 FR2986679 A1 FR 2986679A1
- Authority
- FR
- France
- Prior art keywords
- stage
- output
- random number
- number generator
- true random
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K3/00—Circuits for generating electric pulses; Monostable, bistable or multistable circuits
- H03K3/84—Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
Abstract
Générateur de nombres aléatoires vrais (100) comportant un oscillateur en anneau asynchrone (102) comprenant L étages de mémorisation de valeurs binaires reliés entre eux en série et en boucle fermée, et tels que : - une sortie non inversée de chaque étage soit reliée à une première entrée de l'étage suivant, - une sortie inversée de chaque étage soit reliée à une deuxième entrée d'un étage précédent, - chaque étage soit apte à délivrer sur sa sortie non inversée une valeur égale celle délivrée sur la sortie non inversée de l'étage précédent lorsque les signaux d'entrée ont des valeurs similaires, - chaque étage soit apte à mémoriser sa valeur de sortie lorsque les signaux d'entrée ont des valeurs différentes, le générateur de nombres aléatoires vrais (100) comportant en outre des moyens d'échantillonnage des signaux de sortie de l'oscillateur.
Description
GENERATEUR DE NOMBRES ALEATOIRES VRAIS DESCRIPTION DOMAINE TECHNIQUE L'invention concerne un générateur de nombres aléatoires vrais (TRNG pour « True Random Number Generator ») comportant un oscillateur en anneau asynchrone. L'invention concerne également un circuit électronique numérique, par exemple implémenté dans un FPGA (circuit logique programmable) ou un ASIC (circuit intégré à application spécialisée) et comprenant un tel générateur de nombres aléatoires vrais. ÉTAT DE LA TECHNIQUE ANTÉRIEURE En électronique, la génération de nombres aléatoires vrais repose sur le principe d'exploiter une ou plusieurs sources d'aléas physiques pour produire une suite de bits aléatoires. Dans les circuits électroniques numériques, les sources d'aléas physiques sont multiples (bruit thermique, bruit de scintillation, etc.) et se manifestent notamment par des variations aléatoires des délais de propagation dans les portes logiques et les interconnexions des circuits. Ces délais aléatoires sont la cause d'une gigue (ou « jitter ») non-déterministe présente sur les signaux générés dans ces circuits et pouvant être utilisée comme source d'aléas physiques pour produire des nombres aléatoires vrais. Un exemple de réalisation d'un générateur de nombres aléatoires vrais consiste à utiliser un oscillateur en anneau, obtenu par exemple en reliant entre eux plusieurs inverseurs en boucle fermée, dont une sortie est reliée à une entrée d'un élément réalisant un échantillonnage de la sortie de l'oscillateur, par exemple une bascule D. Dans un tel circuit, la génération de nombres aléatoires vrais est obtenue en réalisant un échantillonnage, par la bascule D, du signal obtenu en sortie de l'oscillateur au moment précis de sa commutation, de manière à mémoriser un nombre binaire aléatoire, 0 ou 1, dont la valeur dépend de la gigue de ce signal de sortie. La réalisation d'un tel générateur de nombres aléatoires vrais est toutefois complexe en raison de la très courte durée de la gigue. En effet, 15 pour que les bits produits par ce type de générateur soient réellement aléatoires, il faut que l'échantillonnage intervienne précisément au moment de la commutation du signal de sortie de l'oscillateur. Il est donc nécessaire de synchroniser le signal 20 commandant l'échantillonnage de la bascule D et la commutation de l'oscillateur avec une résolution inférieure à la durée de la gigue, c'est-à-dire une résolution de quelques picosecondes. Pour obtenir une telle résolution, il est possible d'utiliser des 25 systèmes asservis de type PLL (boucle à verrouillage de phase) analogique. De tels systèmes ont toutefois pour inconvénient d'être coûteux en termes de surface de circuit ainsi qu'en termes de consommation électrique. Une première alternative à l'utilisation 30 d'une PLL analogique consiste à dégrader les caractéristiques électriques des éléments formant l'oscillateur afin d'augmenter la durée de la gigue, et ainsi relâcher les contraintes temporelles liées à la synchronisation entre l'instant d'échantillonnage de la bascule D et l'instant de commutation de l'oscillateur.
Cette première alternative n'est toutefois applicable qu'à la condition de pouvoir modifier les caractéristiques électriques des éléments de l'oscillateur. De plus, une telle dégradation des caractéristiques électriques des éléments de l'oscillateur risque de rendre la gigue très sensible aux variations de la tension d'alimentation de l'oscillateur, et donc de rendre le générateur de nombres aléatoires vrais vulnérable à des attaques par manipulation de cette tension d'alimentation (attaques ayant par exemple pour but que les nombres générés ne soient pas des nombres aléatoires vrais). Une deuxième alternative à l'utilisation d'une PLL analogique consiste à augmenter la période d'échantillonnage de la bascule D de manière à accumuler la gigue présente en sortie de l'oscillateur sur plusieurs périodes de l'oscillateur. Une telle alternative, bien qu'efficace, a toutefois pour inconvénient de limiter fortement le débit de nombres aléatoires vrais générés en raison de la longue période d'échantillonnage alors nécessaire pour générer chaque nombre aléatoire. Une troisième alternative consiste à combiner les sorties de plusieurs oscillateurs en anneau non-synchronisés entre eux, puis d'échantillonner cette combinaison afin de maximiser la probabilité que la bascule D effectue un échantillonnage dans la zone de gigue. Une telle alternative est par exemple décrite dans le document JP 2007-011347. Là encore, cette solution est coûteuse en termes de surface de circuit et en termes de consommation électrique en raison des multiples oscillateurs nécessaires. EXPOSÉ DE L'INVENTION Un but de la présente invention est de proposer un générateur de nombres aléatoires vrais ne présentant pas les inconvénients des générateurs de nombres aléatoires vrais de l'art antérieur, c'est-à-dire qui soit peu coûteux en termes de surface de circuit ainsi qu'en termes de consommation électrique, qui ne soit pas vulnérable face à des attaques par manipulation de la tension d'alimentation du générateur, et cela tout en pouvant générer des nombres aléatoires vrais avec un débit important. Pour cela, la présente invention propose un générateur de nombres aléatoires vrais comportant au moins un oscillateur en anneau asynchrone comprenant L étages de mémorisation de valeurs binaires reliés entre eux en série et en boucle fermée, et tels que : - une sortie non inversée de chaque étage i soit reliée à une première entrée de l'étage suivant 25 1+1, - une sortie inversée de chaque étage 1 soit reliée à une deuxième entrée d'au moins un étage précédent I-j, - chaque étage 1 soit apte à délivrer sur 30 sa sortie non inversée un signal binaire de valeur égale à la valeur d'un signal binaire délivré sur la sortie non inversée de l'étage précédent i-1 lorsque les signaux appliqués sur la première entrée et la deuxième entrée de l'étage 1 ont des valeurs similaires, - chaque étage i soit apte à mémoriser la valeur du signal précédemment délivré sur sa sortie non inversée et à délivrer sur sa sortie non inversée un signal binaire de valeur égale à la valeur mémorisée lorsque les signaux appliqués sur la première entrée et la deuxième entrée de l'étage 1 ont des valeurs différentes, le générateur de nombres aléatoires vrais comportant en outre des moyens d'échantillonnage aptes à échantillonner les signaux délivrés sur les sorties, de préférence les sorties non inversées, d'au moins une partie des étages de l'oscillateur en anneau asynchrone ; avec L : nombre entier supérieur ou égal à 3 ; i : nombre entier compris entre 0 et L-1 ; j : nombre entier compris entre 1 et L-2. Un tel oscillateur en anneau asynchrone peut être configuré pour générer un déphasage, entre les différents étages de mémorisation de l'oscillateur, fractionnaire du temps de propagation du signal à travers les étages de l'oscillateur. Ainsi, contrairement aux oscillateurs en anneau composés d'inverseurs et dont la résolution ne peut être 30 inférieure au temps de propagation dans tous les étages, la résolution d'un tel oscillateur en anneau asynchrone peut être choisie aussi fine que nécessaire. Un tel oscillateur en anneau asynchrone fonctionne sur un système de requêtes (les requêtes 5 correspondant par exemple aux signaux envoyés depuis les sorties non inversées des étages vers les premières entrées des étages suivants) et d'acquittements (les acquittements correspondant alors aux signaux envoyés depuis les sorties inversées des étages vers les 10 deuxièmes entrées des étages précédents) permettant de faire circuler des transitions (les transitions correspondant à des signaux successifs de valeurs binaires différentes) dans l'anneau, cette circulation de transitions étant synchronisée par les éléments de 15 l'oscillateur eux-mêmes grâce aux signaux de requête et d'acquittement envoyés. En configurant l'oscillateur en anneau asynchrone de manière à obtenir un déphasage inférieur à la durée de la gigue, on garantit ainsi qu'au moins 20 une des sorties des étages de l'oscillateur sera dans la zone de gigue au moment de l'échantillonnage. On obtient ainsi un générateur de nombres aléatoires vrais offrant un débit de sortie très important tout en maintenant une surface d'occupation et une consommation 25 raisonnable, du fait notamment que le générateur de nombres aléatoires vrais selon l'invention peut ne comporter qu'un seul oscillateur en anneau asynchrone. La configuration de l'oscillateur en anneau asynchrone peut correspondre au choix du nombre 30 d'étages de l'oscillateur, ainsi qu'aux valeurs d'initialisation de l'oscillateur en anneau asynchrone qui correspondent aux valeurs initiales injectées dans l'oscillateur avant sa mise en route. Il est également proposé un générateur de nombres aléatoires vrais comportant au moins : - un oscillateur en anneau asynchrone comprenant L portes de Muller reliées entre elles en série et en boucle fermée, et telles qu'une sortie non inversée de chacune des L portes de Muller soit reliée à une première entrée de la porte de Muller suivante, et qu'une sortie inversée de chacune des L portes de Muller soit reliée à une deuxième entrée de la porte de Muller précédente et/ou à une deuxième entrée d'une ou plusieurs portes de Muller antérieures à la porte de Muller précédente ; - des moyens d'échantillonnage aptes à échantillonner les signaux délivrés sur les sorties d'au moins une partie des L portes de Muller ; L étant un nombre entier supérieur ou égal à 3.
Chaque étage i de l'oscillateur en anneau asynchrone peut comporter deux sorties, une première des deux sorties pouvant correspondre à la sortie non inversée de l'étage 1 et une seconde des deux sorties pouvant correspondre à la sortie inversée de l'étage 1, et peut être tel qu'un signal binaire destiné à être délivré sur la seconde des deux sorties de l'étage 1 ait une valeur inverse à celle d'un signal binaire destiné à être délivré au même moment sur la première sortie de l'étage 1.
La sortie non inversée de chaque étage 1 peut être reliée en outre à une entrée d'un inverseur, la sortie de l'inverseur pouvant correspondre à la sortie inversée de l'étage 1. Chaque étage de l'oscillateur en anneau asynchrone peut comporter au moins une porte de Muller.
Les moyens d'échantillonnage peuvent comporter L-1 bascules D comprenant chacune une entrée d'horloge reliée à une sortie d'un des L étages de l'oscillateur en anneau asynchrone et une entrée de donnée reliée à une sortie d'un des L-1 autres étages de l'oscillateur en anneau asynchrone, chacune des L-1 bascules D pouvant être apte à délivrer en sortie un signal échantillonné du signal reçu sur son entrée de donnée. En variante, les premiers moyens d'échantillonnage peuvent comporter L bascules D comprenant chacune une entrée de donnée reliée à une sortie d'un des L étages de l'oscillateur en anneau asynchrone, chacune des L bascules D étant apte à délivrer en sortie un signal échantillonné du signal reçu sur son entrée de donnée. Le générateur de nombres aléatoires vrais peut comporter en outre des deuxièmes moyens aptes à sélectionner et/ou propager au moins un des signaux échantillonnés délivrés par les moyens d'échantillonnage vers une sortie du générateur de nombres aléatoires vrais. Dans ce cas, les deuxièmes moyens peuvent comporter une pluralité de portes OU EXCLUSIF reliées entre elles en formant un arbre de propagation des 30 signaux échantillonnés délivrés par les moyens d'échantillonnage vers la sortie du générateur de nombres aléatoires vrais. Le nombre L, c'est-à-dire le nombre total d'étages de l'oscillateur, peut être choisi en fonction de la technologie de réalisation du générateur de nombres aléatoires vrais, de la durée de la gigue ainsi que du temps de propagation dans les étages de l'oscillateur. L'invention concerne également un circuit 10 électronique numérique comportant un générateur de nombres aléatoires vrais tel que défini précédemment, implémenté dans un FPGA ou un ASIC. BRÈVE DESCRIPTION DES DESSINS La présente invention sera mieux comprise à 15 la lecture de la description d'exemples de réalisation donnés à titre purement indicatif et nullement limitatif en faisant référence aux dessins annexés sur lesquels : - la figure 1 représente schématiquement un 20 générateur de nombres aléatoires vrais, objet de la présente invention, selon un mode de réalisation particulier ; - les figures 2, 3, 4 et 6 représentent schématiquement plusieurs exemples de réalisation d'un 25 oscillateur en anneau asynchrone d'un générateur de nombres aléatoires vrais, objet de la présente invention ; - la figure 5 représente un exemple de réalisation d'une porte de Muller ; - la figure 7 représente schématiquement un circuit électronique numérique comportant un générateur de nombres aléatoires vrais, objet de la présente invention.
Des parties identiques, similaires ou équivalentes des différentes figures décrites ci-après portent les mêmes références numériques de façon à faciliter le passage d'une figure à l'autre. Les différentes parties représentées sur 10 les figures ne le sont pas nécessairement selon une échelle uniforme, pour rendre les figures plus lisibles. Les différentes possibilités (variantes et modes de réalisation) doivent être comprises comme 15 n'étant pas exclusives les unes des autres et peuvent se combiner entre elles. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS On se réfère tout d'abord à la figure 1 qui représente schématiquement un générateur de nombres 20 aléatoires vrais 100 selon un mode de réalisation particulier. Le générateur de nombres aléatoires vrais 100 comporte un oscillateur en anneau asynchrone 102 composé de L étages de mémorisation de valeurs 25 binaires, L étant un nombre entier supérieur ou égal à 3. L'oscillateur 102 comporte L sorties, numérotées 103.0 à 103.L-1 sur la figure 1, sur lesquelles sont délivrés chacun des signaux de sorties binaires des L étages de l'oscillateur 102.
Le signal binaire obtenu à la sortie du premier étage de l'oscillateur en anneau asynchrone 102 (sortie numérotée 103.0 sur la figure 1) est ici utilisé pour commander l'échantillonnage des sorties des autres L-1 étages de l'oscillateur 102. Sur l'exemple de la figure 1, ce signal est envoyé sur les entrées d'horloge de L-1 bascules D, référencées 104 sur la figure 1, comprenant chacune leur entrée de données, c'est-à-dire l'entrée sur laquelle le signal à échantillonner est destiné à être appliqué, reliée à l'une des L-1 sorties 103.1 à 103.L-1 de l'oscillateur 102. Ainsi, à chaque front montant, ou front descendant, du signal délivré sur la première sortie 103.0 de l'oscillateur 102, les L-1 bascules D 104 réalisent un échantillonnage des L-1 sorties 103.1 à 103.L-1 de l'oscillateur en anneau asynchrone 102. Dans une variante de réalisation, le générateur de nombres aléatoires vrais 100 peut comporter des moyens d'échantillonnage correspondant à L bascules D 104 aptes à échantillonner les L sorties 103.0 à 103.L-1 de l'oscillateur 102. L'échantillonnage est dans ce cas commandé par un signal d'horloge externe, qui ne correspond pas à un des signaux de sortie délivré par l'oscillateur 102, appliqué sur les entrées d'horloge des L bascules D 104. Les L bascules D 104 comportent chacune leur entrée de données reliée à l'une des L sorties 103.0 à 103.L-1 de l'oscillateur 102. Ainsi, à chaque front montant, ou front descendant, du signal d'horloge, les L bascules D 104 réalisent un échantillonnage de l'ensemble des sorties 103.0 à 103.L-1 de l'oscillateur en anneau asynchrone 102. Des sorties 105.1 à 105.L-1 des L-1 bascules D 104 sont reliées à une pluralité de portes logiques de type OU EXCLUSIF 106, reliées entre elles en formant un arbre de propagation des signaux appliqués en entrées de l'arbre, c'est-à-dire les signaux échantillonnés par les bascules D 104, vers la sortie 107 de la dernière porte logique OU EXCLUSIF 106, référencée 106.n, cette sortie 107 correspondant à la sortie du générateur de nombres aléatoires vrais 100 sur laquelle les signaux binaires de valeurs aléatoires sont délivrés. Ces portes OU EXCLUSIF 106 ont pour fonction de propager l'aléa ou les aléas produits par l'oscillateur en anneau asynchrone 102 sur une ou plusieurs des sorties 103.1 à 103.L-1 et échantillonnés par les L-1 bascules D 104, vers la sortie 107 du générateur de nombres aléatoires vrais 100.
Ainsi, sur l'exemple représenté sur la figure 1, les sorties 105.1 à 105.L-1 des L-1 bascules D 104 sont reliées à des entrées d'un premier niveau 106.1 de l'arbre de portes logiques OU EXCLUSIF 106, les sorties 105 de deux bascules D 104 adjacentes étant reliées à deux entrées d'une des portes logiques de ce premier niveau 106.1. Les sorties des portes logiques OU EXCLUSIF du premier niveau 106.1 sont reliées à des entrées de portes logiques OU EXCLUSIF d'un deuxième niveau 106.2 de l'arbre. L'arbre continu jusqu'à se terminer par la dernière porte logiques OU EXCLUSIF 106.n, correspondant au dernier niveau de l'arbre de propagation, sur laquelle sont récupérés les nombres aléatoires vrais générés par le générateur 100. Lorsque le générateur de nombres aléatoires vrais 100 comporte des moyens d'échantillonnage correspondant à L bascules D 104, l'arbre de portes logiques OU EXCLUSIF 106 est dimensionné dans ce cas pour réaliser la propagation des signaux échantillonnés par les L bascules D 104 vers la sortie 107.
Dans une variante, lorsqu'il est possible d'identifier un étage de l'oscillateur 102 au niveau duquel un aléa est généré, il est alors possible de ne pas utiliser l'arbre de portes logiques OU EXCLUSIF 106 mais de récupérer directement les nombres aléatoires générés au niveau de la sortie 103 de cet étage de l'oscillateur 102, la sortie 107 du générateur de nombres aléatoires vrais 100 correspondant alors à cette sortie. De manière analogue, lorsqu'il est possible d'identifier plusieurs étages de l'oscillateur 102 au niveau desquels des aléas sont générés, il est alors possible d'utiliser un arbre de portes logiques OU EXCLUSIF 106 comportant un nombre restreint d'entrées reliées uniquement aux sorties de ces étages, sélectionnant ainsi les sorties de ces étages et 25 propageant uniquement les signaux délivrés sur ces sorties afin de récupérer les nombres aléatoires générés au niveau de ces sorties sur la sortie 107. Un premier exemple de réalisation schématique de l'oscillateur en anneau asynchrone 102 30 est représenté sur la figure 2.
L'oscillateur 102 comporte L étages 109.0 à 109.L-1 de mémorisation de valeurs binaires reliés entre eux en série et en boucle fermée. Chacun des L étages 109 comporte une sortie non inversée 117.0 5 à 117.L-1, pouvant correspondre à chacune des sorties 103.0 à 103.L-1 de l'oscillateur 102, et reliée à une première entrée 111.0 à 111.L-1 de l'étage suivant. Ainsi, sur l'exemple de la figure 2, la sortie non inversée 117.i-1 de l'étage 109.i-1 est reliée à la 10 première entrée 111.i de l'étage suivant 109.i, et la sortie non inversée 117.i de l'étage 109.i est reliée à la première entrée 111.i+1 de l'étage suivant 109.i+1. De plus, étant donné que les L étages 109 sont reliés en série et en boucle fermée, le premier 15 étage 0 est considéré comme étant l'étage suivant du dernier étage L-1. La sortie non inversée 117.L-1 du dernier étage 109.L-1 est donc reliée à la première entrée 111.0 du premier étage 109.0. Chaque étage 109 comporte également une 20 deuxième entrée 112.0 à 112.L-1 reliée à une sortie inversée 113.0 à 113.L-1 de l'étage suivant. Ces sorties inversées 113.0 à 113.L-1 sont obtenues via des inverseurs 110.0 à 110.L-1 dont les entrées sont reliées aux sorties non inversées 117.0 à 117.L-1 25 et dont les sorties, correspondant aux sorties inversées 113.0 à 113.L-1, sont reliées aux deuxièmes entrées 112.0 à 112.L-1. Ainsi, sur l'exemple de la figure 2, le signal de sortie destiné à être envoyé sur la sortie non inversée 117.i de l'étage 109.i est 30 également envoyé à l'entrée d'un inverseur 110.i dont la sortie, correspondant à la sortie inversée 113.i de l'étage 109.i, est reliée à la deuxième entrée 112.i-1 de l'étage précédent 109.i-1. De même, le signal de sortie destiné à être envoyé sur la sortie non inversée 117.i+1 de l'étage 109.i+1 est également envoyé à l'entrée d'un inverseur 110.i+1 dont la sortie, correspondant à la sortie inversée 113.i+1 de l'étage 109.i+1, est reliée à la deuxième entrée 112.i de l'étage précédent 109.i. Enfin, étant donné que les L étages 109 sont reliés en série en boucle fermée, la sortie non inversée 117.0 du premier étage 109.0 en reliée à l'entrée d'un inverseur 110.0 dont la sortie 113.0 est reliée à la deuxième entrée 112.L-1 du dernier étage 109.L-1. En variante, il est possible que les 15 sorties 103.0 à 103.L-1 de l'oscillateur 102 correspondent aux sorties inversées 113.0 à 113.L-1. Chacun des L étages 109 est apte à délivrer sur sa sortie non inversée 117 un signal binaire de valeur égale à la valeur d'un signal binaire délivré 20 sur la sortie non inversée 117 de l'étage précédent lorsque les signaux appliqués sur les deux entrées 111 et 112 dudit étage ont des valeurs similaires. De plus, chaque étage 109 est apte à mémoriser la valeur du signal précédemment délivré sur sa sortie non inversée 25 117 et à délivrer sur sa sortie non inversée 117 un signal binaire de valeur égale à la valeur mémorisée lorsque les signaux appliqués sur la première entrée 111 et la deuxième entrée 112 de l'étage ont des valeurs différentes. 30 L'oscillateur 102 est qualifié d'asynchrone car il implémente un protocole de communication asynchrone de type requête / acquittement. Le transfert de l'information d'étage en étage dans l'oscillateur 102 est géré localement au niveau de chaque étage 109. Chaque étage se synchronise avec l'étage 5 suivant et l'étage précédent auxquels il est relié, indépendamment des autres étages de l'oscillateur 102 auxquels il n'est pas directement relié. Le signal de sortie d'un étage précédent 109.i-1 et reçu par l'étage 109.i est vu par cet étage 109.i comme une requête de 10 transfert de données (transfert de la valeur binaire mémorisée par l'étage précédent 109.i-1 à l'étage 109.i), et le signal envoyé par l'étage suivant 109.i+1 à l'étage 109.i est vu par l'étage 109.i comme un acquittement à ce transfert de données. Ainsi, dans 15 l'oscillateur 102, toute action de transfert de données d'un étage à l'autre doit être acquittée par l'étage récepteur afin que l'étage émetteur puisse émettre à nouveau. Chacun des étages 109 implémente donc une 20 synchronisation des requêtes et des acquittements arrivant à ses entrées. Ainsi, dans l'oscillateur en anneau asynchrone 102, contrairement aux oscillateurs en anneau composés d'inverseurs pour lesquels les signaux se propagent dans un seul sens, les signaux se 25 propagent ici dans deux sens : le sens des requêtes (de l'étage 109.i-1 vers l'étage 109.i) et le sens des acquittements (de l'étage 109.i+1 vers l'étage 109.i). Dans un tel oscillateur en anneau asynchrone 102, on définit qu'un étage 109.i contient 30 un « jeton » si la valeur du signal délivré sur la sortie non inversée 117.i de cet étage 109.i est différente de celle du signal délivré sur la sortie non inversée 117.i+1 de l'étage suivant 109.i+1, et qu'un étage 109.i contient une « bulle » si la valeur du signal délivré sur la sortie non inversée 117.i de cet étage 109.i est égale à celle du signal délivré sur la sortie non inversée 117.i+1 de l'étage suivant 109.i+1. Suivant cette définition de l'oscillateur en anneau synchrone 102, le nombre de jetons est toujours pair. Si un jeton est présent dans un étage 10 109.i, il passe alors à l'étage suivant 109.i+1 si l'étage suivant 109.i+1 contient à ce moment là une bulle, cette bulle passant alors à l'étage 109.i. Les simulations et les observations expérimentales montrent que l'oscillateur en anneau 15 asynchrone 102 peut fonctionner selon deux modes d'oscillation : un mode appelé « rafale » dans lequel des série de transitions, c'est-à-dire des jetons, rapides se propagent à travers l'anneau de manière groupée en n'occupant qu'une partie de l'anneau à un 20 instant donné, et un mode appelé « équilibré » pour lequel les transitions se répartissent de manière homogène dans l'ensemble de l'anneau et se propagent avec un espacement sensiblement constant entre chaque transition. Le fonctionnement de l'oscillateur 102 dans 25 l'un ou l'autre mode est fonction notamment de l'initialisation de l'oscillateur 102 réalisée ainsi que des caractéristiques temporelles des étages 109 de l'oscillateur 102. En effet, lors de la mise en marche du générateur de nombres aléatoires vrais 100, 30 l'oscillateur en anneau asynchrone 102 est initialisé en choisissant les valeurs mémorisées dans chaque étage 109. On peut ainsi définir le nombre et les emplacements initiaux des jetons et bulles dans les différents étages 109 de l'oscillateur 102. Une modélisation du comportement de l'oscillateur 102 montre qu'il est possible, en choisissant judicieusement le nombre initial de jetons et de bulles dans l'oscillateur 102, d'obtenir un déphasage entre étages aussi petit que nécessaire. L'oscillateur en anneau asynchrone 102 est ainsi configuré pour produire, entre deux étages consécutifs, un déphasage inférieur à la durée de la gigue présente sur les signaux générés par l'oscillateur 102. On garantit ainsi qu'au moins une des sorties 103 de l'oscillateur 102 est dans la zone de gigue au moment de l'échantillonnage des sorties de l'oscillateur 102 par les bascules D 104. On peut par exemple configurer l'oscillateur 102 tel qu'il comporte initialement dans ses étages 109 L/2 jetons et L/2 bulles mémorisées, ou plus généralement tel que le ratio nombre de jetons/nombre de bulles soit irréductible (à 2 près), ce qui garantit qu'il y a autant de phases que d'étages de l'oscillateur 102. C'est propriété est utile car la résolution temporelle entre deux phases (sorties) sera alors minimale pour le nombre d'étages donné, ce qui permet d'accroître l'entropie du générateur de nombres aléatoires vrais 100. Chaque étage 109 correspond par exemple à une porte de Muller 108, également appelée porte C de 30 Muller (« C-element » en anglais), comme sur l'exemple de réalisation de l'oscillateur 102 représenté sur la figure 3. Sur cette figure, les sorties inversées des étages 109 correspondent aux sorties des inverseurs 110 de chaque étage 109 disposés au niveau des deuxièmes entrées des porte de Muller 108 des étages précédents.
Une porte de Muller, lorsqu'elle ne comporte pas un inverseur disposé en amont d'une de ses entrées, permet de synchroniser l'arrivée de signaux binaires de même valeur appliqués sur ses deux entrées : quand les valeurs des signaux appliqués sur ses deux entrées sont égales, elle délivre alors en sortie un signal de même valeur que celle des deux signaux appliqués sur ses entrées. Par contre, quand les signaux appliqués sur ses deux entrées ont des valeurs différentes, la valeur du signal présent sur sa sortie juste avant l'application des deux signaux de valeurs différentes est mémorisée et conservée sur sa sortie, c'est-à-dire ne change pas tant que les valeurs des signaux d'entrée ne redeviennent pas identiques. Dans l'oscillateur en anneau asynchrone 102 de la figure 2, compte tenu de l'inversion réalisée par les inverseurs 110 entre la sortie d'un étage et la deuxième entrée 112 de l'étage précédent, chacun des L étages 109 de l'oscillateur 102 délivre sur sa sortie non inversée un signal binaire de valeur égale à la valeur du signal binaire délivré sur la sortie non inversée de l'étage précédent lorsque les signaux délivrés sur les sorties non inversées de l'étage précédent et de l'étage suivant ont des valeurs différentes, la valeur du signal de sortie d'un étage étant mémorisée et ne change pas lorsque les signaux délivrés sur les sorties non inversées de l'étage précédent et de l'étage suivant ont des valeurs similaires. Dans l'exemple précédemment décrit en liaison avec la figure 3, une sortie inversée 113 de chaque étage 109 est obtenue en utilisant un inverseur 110 interposé entre la sortie non inversée 117 de cet étage 108 et la deuxième entrée de l'étage précédent. Dans un autre exemple de réalisation représenté sur la figure 4, chaque porte de Muller 108 comporte une première sortie 117 correspondant à la sortie non inversée précédemment décrite, et une deuxième sortie 113 correspondant à la sortie inversée et sur laquelle est délivré un signal binaire de valeur inverse à celle du signal binaire délivré au même moment sur la première sortie 117 de cette porte de Muller 108. La deuxième sortie 113 de chaque porte de Muller 108 est donc ici directement reliée à la deuxième entrée 112 de la porte de Muller 108 de l'étage précédent.
Un exemple de réalisation d'une porte de Muller 108 est représenté sur la figure 5. La porte de Muller 108 comporte deux transistors de type N 114a, 114b et deux transistors de type P 115a, 115b reliés en série (drain de l'un relié à la source de l'autre). La première entrée 111 est reliée aux grilles d'un premier des deux transistors de type N 114a et d'un premier des deux transistors de type P 115a. La deuxième entrée 112 est reliée aux grilles des deux autres transistors 114b et 115b. La source du transistor 114b et le drain du transistor 115b sont reliés à un élément de mémoire statique 116 formé de deux inverseurs reliés tête-bêche l'un par rapport à l'autre. La sortie non inversée 117 de la porte de Muller est récupérée en sortie de l'élément de mémoire statique 116. Lorsque l'oscillateur 102 est réalisé comme précédemment décrit sur la figure 4, la deuxième sortie 113 est dans ce cas récupérée juste en amont de l'élément mémoire 116. La porte de Muller 108 peut être réalisée de manière différente de celle représentée sur la figure 5. Il est par exemple possible que l'effet mémoire de la porte de Muller soit obtenu de manière dynamique en utilisant les capacités parasites drain/substrat d'un ou plusieurs des transistors 114, 115, et non via un élément mémoire 116. De plus, il est également possible que la porte de Muller 108 comporte des entrées « Set » et « Reset » permettant d'initialiser de manière aisée la valeur de l'étage correspondant de l'oscillateur 102. Dans une autre variante, il est par exemple possible d'utiliser des portes de Muller à plus de deux entrées, par exemple trois entrées nommées a, b et c, la valeur du signal sur la sortie non inversée de cette porte étant égale à 0 lorsque les valeurs des signaux appliqués sur les entrées a et b sont égales à 0, et la valeur du signal sur la sortie non inversée de cette porte étant égale à 1 lorsque les valeurs des signaux appliqués sur les entrées b et c sont égales à 1. Dans les exemples précédemment décrits, chaque étage 109.i reçoit sur sa deuxième entrée 112.i un acquittement provenant de l'étage suivant 109.i+1.
En variante, il est possible que chaque étage 109.i reçoive sur sa deuxième entrée 112.i un acquittement provenant d'un étage ultérieur à l'étage 109.i+1, par exemple provenant de l'étage 109.i+2, ou 109.i+3, etc. On obtient ainsi un oscillateur en anneau asynchrone dit « contraint », permettant d'obtenir une meilleure réjection de l'aléa déterministe, et présentant des caractéristiques temporelles différentes permettant une plus grande robustesse aux variations des procédés de fabrication entre autres.
Un exemple de réalisation d'un tel oscillateur en anneau 102 contraint est représenté schématiquement sur la figure 6. Dans cet exemple de réalisation, les deuxièmes entrées 112 des étages 109 ne sont pas reliés aux sorties inversées des étages immédiatement suivants, mais aux sorties inversées des étages ultérieurs aux étages suivants. Sur exemple de la figure 6, la sortie inversée 113.i+1 de l'étage 109.i+1 est reliée à la deuxième entrée 112.i-1 de l'étage 109.i-1. De même, la sortie inversée 113.i de l'étage 109.i est reliée à la deuxième entrée 112.i-2 de l'étage 109.i-2, etc. La sortie inversée 113.0 du premier étage 109.0 est reliée à la deuxième entrée 112.L-2 de l'avant-dernier étage 109.L-2 (non représenté sur la figure 6). Par contre, les signaux de requête sont envoyés depuis la sortie non inversée d'un étage i à la première entrée de l'étage suivant i+1, comme sur l'exemple précédemment décrit de la figure 2. De manière générale, un oscillateur en anneau contraint peut comporter des étages envoyant 30 chacun un signal de requête à l'étage suivant, mais recevant en entrée un signal d'acquittement provenant d'un étage ultérieur à l'étage suivant (étage i+2, i+3, etc.) ou correspondant à la combinaison de plusieurs signaux d'acquittement provenant de plusieurs étages ultérieurs. Dans ce dernier cas, on peut par exemple utiliser des portes de Muller comportant plus de deux entrées comme précédemment décrit. L'initialisation des bulles et jetons dans l'oscillateur 102 peut être réalisée via des entrées « Set » et « Reset » lorsque les portes logiques formant les étages 109 de l'oscillateur 102 sont munies de telles entrées, ou bien en « ouvrant » l'oscillateur (en interrompant les liaisons entre deux étages) et en « injectant » les jetons et les bulles dans l'oscillateur 102 (via l'application de signaux sur la première et la deuxième entrée de l'étage qui a été déconnecté de son étage précédent), puis en refermant l'oscillateur 102, c'est-à-dire en reliant de nouveau en boucle fermée les différents étages de l'oscillateur 102.
Plus l'oscillateur 102 comporte un nombre d'étages important avec un rapport fractionnaire du nombre de jetons et de bulles irréductible, plus la résolution de celui-ci sera meilleure, l'oscillateur 102 maîtrisant de manière fractionnaire le temps de propagation des signaux à travers ses étages. Par exemple, un oscillateur en anneau asynchrone 102 à 41 étages, avec 20 jetons et 21 bulles, réalisé sur ASIC en technologie 65 nm oscille à 6,02 GHz, et offre donc une résolution d'environ 4 ps. Le générateur 100 comportant un tel oscillateur 102 peut alors délivrer des nombres aléatoires avec un débit de 6 Gbits/s. La figure 7 représente schématiquement un circuit électronique numérique 200 implémenté sur FPGA, comportant le générateur de nombres aléatoires vrais 100 précédemment décrit. En fonction notamment du nombre d'étages de l'oscillateur, la fréquence d'oscillation de cet oscillateur peut être supérieure aux fréquences d'utilisation en mode synchrone du FPGA. Dans ces conditions, le débit maximal obtenu est limité par la fréquence maximale du FPGA.
Claims (9)
- REVENDICATIONS1. Générateur de nombres aléatoires vrais (100) comportant au moins un oscillateur en anneau asynchrone (102) comprenant L étages (109) de mémorisation de valeurs binaires reliés entre eux en série et en boucle fermée, et tels que : - une sortie non inversée (117) de chaque étage I soit reliée à une première entrée (111) de l'étage suivant i+1, - une sortie inversée (113) de chaque étage I soit reliée à une deuxième entrée (112) d'au moins un étage précédent 1-j, - chaque étage i soit apte à délivrer sur sa sortie non inversée (117) un signal binaire de valeur égale à la valeur d'un signal binaire délivré sur la sortie non inversée (117) de l'étage précédent i-1 lorsque les signaux appliqués sur la première entrée (111) et la deuxième entrée (112) de l'étage i ont des valeurs similaires, - chaque étage i soit apte à mémoriser la valeur du signal précédemment délivré sur sa sortie non inversée (117) et à délivrer sur sa sortie non inversée (117) un signal binaire de valeur égale à la valeur mémorisée lorsque les signaux appliqués sur la première entrée (111) et la deuxième entrée (112) de l'étage i ont des valeurs différentes, le générateur de nombres aléatoires vrais (100) comportant en outre des moyens d'échantillonnage (104) aptes à échantillonner les signaux délivrés sur des sorties (103) d'au moins une partie desétages (109) de l'oscillateur en anneau asynchrone (102) ; avec L : nombre entier supérieur ou égal à 3 ; i : nombre entier compris entre 0 et L-1 ; j : nombre entier compris entre 1 et L-2.
- 2. Générateur de nombres aléatoires vrais (100) selon la revendication 1, dans lequel chaque 10 étage 1 de l'oscillateur en anneau asynchrone (102) comporte deux sorties, une première des deux sorties correspondant à la sortie non inversée (117) de l'étage 1 et une seconde des deux sorties correspondant à la sortie inversée (113) de l'étage 1, et étant tel qu'un 15 signal binaire destiné à être délivré sur la seconde des deux sorties de l'étage 1 ait une valeur inverse à celle d'un signal binaire destiné à être délivré au même moment sur la première sortie de l'étage 1. 20
- 3. Générateur de nombres aléatoires vrais (100) selon l'une des revendications précédentes, dans lequel la sortie non inversée (117) de chaque étage 1 est reliée en outre à une entrée d'un inverseur (110), la sortie de l'inverseur (110) correspondant à la 25 sortie inversée (113) de l'étage 1.
- 4. Générateur de nombres aléatoires vrais (100) selon l'une des revendications précédentes, dans lequel chaque étage (109) de l'oscillateur en anneau 30 asynchrone (102) comporte au moins une porte de Muller (108).
- 5. Générateur de nombres aléatoires vrais (100) selon l'une des revendications précédentes, dans lequel les moyens d'échantillonnage (104) comportent L-1 bascules D comprenant chacune une entrée d'horloge reliée à une sortie (103.0) d'un des L étages (109.0) de l'oscillateur en anneau asynchrone (102) et une entrée de donnée reliée à une sortie (103.1 - 103.L-1) d'un des L-1 autres étages (109.1 - 109.L-1) de l'oscillateur en anneau asynchrone (102), chacune des L-1 bascules D étant apte à délivrer en sortie (105.1 - 105.L-1) un signal échantillonné du signal reçu sur son entrée de donnée.
- 6. Générateur de nombres aléatoires vrais (100) selon l'une des revendications 1 à 4, dans lequel les premiers moyens d'échantillonnage (104) comportent L bascules D comprenant chacune une entrée de donnée reliée à une sortie (103) d'un des L étages (109) de l'oscillateur en anneau asynchrone (102), chacune des L bascules D étant apte à délivrer en sortie (105) un signal échantillonné du signal reçu sur son entrée de donnée.
- 7. Générateur de nombres aléatoires vrais 25 (100) selon l'une des revendications précédentes, comportant en outre des deuxièmes moyens (106) aptes à sélectionner et/ou propager au moins un des signaux échantillonnés délivrés par les moyens d'échantillonnage (104) vers une sortie (107) du 30 générateur de nombres aléatoires vrais (100).
- 8. Générateur de nombres aléatoires vrais (100) selon la revendication 7, dans lequel les deuxièmes moyens (106) comportent une pluralité de portes OU EXCLUSIF reliées entre elles en formant un arbre de propagation des signaux échantillonnés délivrés par les moyens d'échantillonnage (104) vers la sortie (107) du générateur de nombres aléatoires vrais (100).
- 9. Circuit électronique numérique (200) comportant un générateur de nombres aléatoires vrais (100) selon l'une des revendications précédentes, implémenté dans un FPGA ou un ASIC.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1251079A FR2986679B1 (fr) | 2012-02-06 | 2012-02-06 | Generateur de nombres aleatoires vrais |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1251079A FR2986679B1 (fr) | 2012-02-06 | 2012-02-06 | Generateur de nombres aleatoires vrais |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2986679A1 true FR2986679A1 (fr) | 2013-08-09 |
FR2986679B1 FR2986679B1 (fr) | 2014-03-07 |
Family
ID=46062485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1251079A Expired - Fee Related FR2986679B1 (fr) | 2012-02-06 | 2012-02-06 | Generateur de nombres aleatoires vrais |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2986679B1 (fr) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344343A1 (en) * | 2014-12-18 | 2017-11-30 | Cryptography Research, Inc | Self-timed random number generator |
WO2020008229A1 (fr) | 2018-07-03 | 2020-01-09 | Dolphin Integration | Circuit et procédé de protection de circuits asynchrones |
CN111198671A (zh) * | 2018-11-20 | 2020-05-26 | 三星电子株式会社 | 随机数发生器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966313A (en) * | 1996-07-11 | 1999-10-12 | Nec Corporation | Apparatus and method for generating random numbers |
US20090206937A1 (en) * | 2008-02-20 | 2009-08-20 | Infineon Technologies Ag | Inverting cell |
US20090327380A1 (en) * | 2006-04-04 | 2009-12-31 | Samsung Electronics Co., Ltd. | Circuit and method of generating a random number using a phass-locked-loop circuit |
-
2012
- 2012-02-06 FR FR1251079A patent/FR2986679B1/fr not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966313A (en) * | 1996-07-11 | 1999-10-12 | Nec Corporation | Apparatus and method for generating random numbers |
US20090327380A1 (en) * | 2006-04-04 | 2009-12-31 | Samsung Electronics Co., Ltd. | Circuit and method of generating a random number using a phass-locked-loop circuit |
US20090206937A1 (en) * | 2008-02-20 | 2009-08-20 | Infineon Technologies Ag | Inverting cell |
Non-Patent Citations (2)
Title |
---|
CHERKAOUI ET AL: "Self-Timed Rings as Entropy Sources in FPGA", 1 October 2011 (2011-10-01), pages 55pp, XP009163442, Retrieved from the Internet <URL:http://projet-semba-cluster-isle-rhone-alpes.org/semba11/ExposesValence2011/Theme-3-Abdelkarim_Cherkaoui.pdf> [retrieved on 20121008] * |
HAMON J ET AL: "High-Level Time-Accurate Model for the Design of Self-Timed Ring Oscillators", ASYNCHRONOUS CIRCUITS AND SYSTEMS, 2008. ASYNC '08. 14TH IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA, 7 April 2008 (2008-04-07), pages 29 - 38, XP031281913, ISBN: 978-0-7695-3107-6 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170344343A1 (en) * | 2014-12-18 | 2017-11-30 | Cryptography Research, Inc | Self-timed random number generator |
US10095477B2 (en) * | 2014-12-18 | 2018-10-09 | Cryptography Research Inc. | Self-timed random number generator |
US10503476B2 (en) * | 2014-12-18 | 2019-12-10 | Cryptography Research, Inc. | Self-timed random number generator |
US10754620B2 (en) | 2014-12-18 | 2020-08-25 | Cryptography Research Inc. | Self-timed random number generator |
US11301216B2 (en) | 2014-12-18 | 2022-04-12 | Cryptography Research, Inc. | Self-timed random number generator |
WO2020008229A1 (fr) | 2018-07-03 | 2020-01-09 | Dolphin Integration | Circuit et procédé de protection de circuits asynchrones |
CN111198671A (zh) * | 2018-11-20 | 2020-05-26 | 三星电子株式会社 | 随机数发生器 |
Also Published As
Publication number | Publication date |
---|---|
FR2986679B1 (fr) | 2014-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2137873B1 (fr) | Dispositif d'extraction d'horloge a asservissement numerique de phase sans reglage externe | |
FR92366E (fr) | ||
FR3051084B1 (fr) | Generateur de nombres d'oscillations | |
WO2007110506A1 (fr) | Generateur de nombres aleatoires | |
EP1863179B1 (fr) | Circuit décaleur de niveau | |
WO2007006909A2 (fr) | Cellule de memorisation durcie | |
EP1993057A1 (fr) | Détection d'une perturbation d'état d'une bascule d'un circuit électronique | |
EP3242401B1 (fr) | Circuit de comptage d'impulsions | |
FR2986679A1 (fr) | Generateur de nombres aleatoires vrais | |
EP3376670B1 (fr) | Ligne à retard configurable | |
EP3242397A1 (fr) | Structure de multiplexeur | |
FR2725572A1 (fr) | Circuit de synchronisation comprenant une synchronisation de bit | |
FR3083889A1 (fr) | Registre a decalage protege contre les attaques physiques | |
EP3018827B1 (fr) | Compteur de gray et convertisseur analogique - numerique utilisant un tel compteur | |
EP1521365A2 (fr) | Dispositif de retard numérique, oscillateur numérique générateur de signal d'horloge, et interface mémoire | |
EP3716523B1 (fr) | Procédé de synchronisation de données numériques envoyées en série | |
EP1168618B1 (fr) | Dispositif à circuit(s) logique(s) pour la génération d'un signal aléatoire | |
EP3231173A1 (fr) | Procédé de distribution synchrone d'un signal numérique sur n blocs identiques adjacents d'un circuit integré | |
FR3034593A1 (fr) | ||
WO2008139063A2 (fr) | Dispositif d'extraction d'horloge et de donnees numeriques sans reglage externe | |
EP1445865A1 (fr) | Diviseur de frequence a structure entonnoir | |
FR3025901A1 (fr) | Dispositif de generation d'un signal d'horloge par multiplication de frequence | |
EP4354279A1 (fr) | Generation de nombres vraiment aleatoires a echantillonnage coherent en technologie fd-soi | |
FR2476893A1 (fr) | Registre a decalage statique i2l | |
WO2013121149A1 (fr) | Procédé et dispositif électronique de génération d'un signal d'horloge variable |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 4 |
|
ST | Notification of lapse |
Effective date: 20161028 |