Brevet FR2875316A1 — publié le 20060317

Dispositif et procédé pour produire une suite de nombres La présente invention concerne des générateurs de nombres et en 10 particulier, des générateurs de nombres pseudo-aléatoires qui peuvent être utilisés par exemple, en tant que générateurs de clés. La figure 7 illustre un générateur de nombres aléatoires connu. Le générateur de nombres pseudo-aléatoires de la figure 7, également dénommé registre à décalage à rétroaction linéaire , comprend une pluralité d'éléments 51, 52, 53, 54 de mémoire, numérotés de 0 à n sur la figure 7. Des cellules de mémoire peuvent être initialisées à une valeur initiale, à l'aide d'un moyen de 55 d'initialisation. Conjointement, les cellules 51 à 54 de mémoire forment un moyen d'action prédictive, tandis que le registre à décalage linéaire formé par les cellules 51 à 54 de mémoire est réalimenté à l'aide d'un moyen de rétroaction, couplé entre une sortie 56 du circuit et la cellule n de mémoire. En particulier, le moyen de rétroaction comprend un ou plusieurs moyens 57, 58 de combinaison qui est/sont appliqués par des branches 59a, 59b, 59c de rétroaction respectives, ainsi que l'illustre, à titre d'exemple, la figure 7. La valeur de sortie du dernier moyen 58 de combinaison est introduite dans la cellule n de mémoire désignée 54 sur la figure 7. Le registre à décalage à rétroaction linéaire illustré sur la figure 7 est actionné par une horloge, de sorte que l'occupation des cellules de mémoire est décalée vers la gauche, par rapport à la figure 7, d'un étage à chaque cycle d'horloge, de manière à ce que l'état mémorisé dans le moyen 51 formant mémoire soit émis en sortie sous forme de nombre, à chaque cycle d'horloge, tandis que dans le même temps, la valeur est introduite dans la première unité n de mémoire de la série d'unités de mémoire, à la sortie du dernier moyen 51 de combinaison. De ce fait, le registre à décalage à rétroaction linéaire illustré sur la figure 7, fournit une suite de nombres, en réponse à une suite de cycles d'horloge. La suite de nombres obtenue à la sortie 56 est fonction de l'état initial qui est établi par le moyen 55 d'initialisation, avant le démarrage du registre à décalage. On appelle également la valeur initiale introduite par le moyen 55 d'initialisation, le germe , ce qui explique pourquoi on désigne également les dispositifs illustrés sur la figure 7 générateurs de germes . On appelle la suite de nombres obtenue à la sortie 56, suite de nombres pseudo-aléatoires , du fait que les nombres semblent se suivre les uns les autres de façon apparemment aléatoire mais sont globalement périodiques, bien que la période soit longue. En outre, la suite de nombres peut se répéter de façon non ambiguë et a donc un caractère pseudo-aléatoire, lorsque la valeur d'initialisation introduite dans les éléments de mémoire par le moyen 55 d'initialisation est connue. On utilise ces registres à décalage par exemple, en tant que générateurs de flux de clés pour produire un flux de clés de codage/décodage, en fonction d'une valeur d'initialisation spécifique (germe). Les registres à décalage illustrés sur la figure 7 ont l'inconvénient de présenter une faible complexité linéaire. Dès lors, 2 n bits de la suite de sortie sont suffisants pour calculer la suite entière dans un LFSR de n bits (LFSR: registre à décalage à rétroaction linéaire). Néanmoins, l'avantage des LFSR connus, illustrés sur la figure 7 consiste en ce qu'ils occasionnent de très faibles coûts de matériel. En outre, il existe des LFSR cadencés de façon irrégulière. Ils engendrent des coûts de matériel légèrement plus élevés, assortis d'une période généralement inférieure. Toutefois, leur complexité linéaire peut être nettement plus élevée. Cependant, un inconvénient lié à ces dispositifs cadencés de façon irrégulière, réside dans le fait qu'en raison du cadencement irrégulier, en principe, il est possible de déduire la suite de sortie, en mesurant l'intensité, lors d'une SPA (analyse de puissance simple). Lorsque l'on utilise les dispositifs à registres à décalage, en tant que parties de générateurs de clés qui engendrent des données à garder par définition, secrètes, c'est-à-dire des données de clés, il est capital de les sécuriser contre un type quelconque d'attaques cryptographiques. Par ailleurs, dans ces dispositifs, il est nécessaire, en particulier lorsqu'ils doivent être intégrés à des cartes à puce, que les coûts de matériel soient faibles. En d'autres termes, l'aire de puce occupée par ces dispositifs doit être aussi petite que possible. Cela tient au fait que lors de la fabrication de semi- conducteurs, l'aire de puce d'un dispositif complet détermine finalement le prix et donc la marge bénéficiaire du fabricant de puces En outre, en particulier s'agissant de cartes à puce, une spécification est telle qu'un client détermine l'aire maximum d'une puce de processeur, en millimètres carrés, sur laquelle une pluralité de fonctionnalités doit être prise en charge. Dès lors, il appartient au fabricant de circuits de diviser cette aire précieuse entre les composants individuels. Pour ce qui concerne des algorithmes cryptographiques devenant de plus en plus complexes, les efforts du fabricant de puces sont consacrés à la puce offrant la plus grande quantité de mémoire possible, afin de pouvoir calculer des algorithmes pairs qui utilisent la mémoire de façon intensive, en un temps acceptable. Ainsi, l'aire de puce destinée à des générateurs de clés et à d'autres composants de ce type, doit être maintenue aussi faible que possible, afin de pouvoir accueillir une plus grande quantité de mémoire sur l'aire de puce donnée. Dès lors, il est nécessaire, d'une manière générale que les générateurs de clés et les dispositifs pour produire une suite de nombres pseudoaléatoires, respectivement, soient sécurisés, d'une part et qu'ils requièrent aussi peu d'espace que possible, d'autre part, ce qui signifie qu'ils doivent occasionner des coûts de matériel aussi bas que possible. D'autres modes de réalisation de générateurs de nombres aléatoires plus complexes, sont illustrés, à titre d'exemples, sur la figure 8. La figure 8 représente un certain nombre de registres à décalage linéaire qui peuvent, par exemple, être agencés de la manière illustrée en référence à la figure 7 et qui sont désignés par les références numériques 81, 82, 83, 84, sur la figure 8. On applique le signal de sortie de chaque registre 81, 82, 83, 84 à décalage linéaire, désigné 56a, 56b, 56c et 56d, à un étage 85 de sortie, pour obtenir finalement une suite de nombres du côté de la sortie, à la sortie 86 de l'étage 85 de sortie. Cette combinaison de plusieurs registres à décalage à rétroaction linéaire (LFSR) signifie que la sortie de plusieurs LFSR sert de signaux d'entrée d'une fonction dite de combinaison booléenne qui est mise en oeuvre par l'étage 85 de sortie, dont le signal de sortie, ainsi qu'on l'a expliqué, constituera finalement la suite de clés. La demande de brevet allemand non encore publiée, portant le numéro de document officiel 102004013481.2-42, déposée le 18 mars 2004, auprès de l'Office Allemand des Brevets et des Marques, décrit un générateur de nombres aléatoires, dans lequel un registre à décalage est doté d'une logique prédictive non linéaire. Cela signifie que différentes cellules (bascules bistables) du registre à décalage sous-jacent, sont munies de sorties. Les sorties de ces cellules forment de nouveau, les signaux d'entrée d'une fonction non linéaire. Le signal de sortie de cette fonction sera utilisé ensuite en tant que suite de clés. Si l'on utilise un registre à décalage linéaire LFSR, en tant que registre à décalage sous-jacent, la sécurité de ces générateurs de clés n'est pas idéale. On a découvert des attaques de systèmes qui reposent sur des registres à décalage linéaire. Ces attaques sont résumées sous l'appellation d'algorithme XL. XL signifie linéarisation étendue. XL désigne un procédé heuristique pour résoudre efficacement des systèmes d'équations algébriques fortement surdéfinis. Le terme surdéfini signifie qu'il existe plus d'équations que de variables inconnues. Ces attaques sont illustrées par Shamir, Patarin, Courtois, Klimov, dans: Efficient Algorithms for Solving Overdefined Systems of Multivariate Polynomial Equations , Advances in Cryptology EUROCRYPT 2000 (B. Preneel, ed.), Lecture Notes in Computer Science, vol. 1807, pages 392 à 407, Springer-Verlag, 2000. L'article de N. Courtois et W. Meier Algebraic attacks on stream ciphers with linear feedback , Advances in Cryptology, EUROCRYPT 2003 (E. Biham, ed.), Lecture Notes in computer Science, vol. 2656, pages 345 à 359, Springer-Verlag, 2003,constitue un autre document important. Dès lors, les registres à décalage linéaire ne doivent plus être utilisés dans des applications nécessitant un degré élevé de sécurité. La présente invention vise à proposer un meilleur concept pour produire des nombres aléatoires, concept qui est caractérisé, d'une part, par la sécurité et d'autre part, par l'efficacité. La présente invention est fondée sur le constat que l'on peut obtenir une sécurité optimum, d'une part et une grande efficacité, d'autre part, lorsque l'on utilise au moins deux registres à décalage à rétroaction non linéaire, chaque registre à décalage à rétroaction non linéaire ayant un moyen de couplage linéaire, ce qui signifie une action prédictive linéaire, pour engendrer une suite de données de sortie, à partir d'un registre à décalage à rétroaction non linéaire, les suites de données de sortie de chaque registre à décalage à rétroaction non linéaire étant ensuite combinées dans un moyen de combinaison pour produire finalement la suite de nombres. L'utilisation de plusieurs registres (plus petits) à décalage à rétroaction non linéaire, à la place d'un seul registre (grand) à décalage à rétroaction non linéaire permet d'économiser de l'aire de puce, du fait que la périodicité de la suite de sortie de deux registres à décalage plus petits est égale au produit de la périodicité des registres individuels à décalage à rétroaction non linéaire, de sorte qu'en dépit de l'utilisation de deux registres à décalage ayant un plus petit nombre de cellules de mémoires, on peut obtenir une périodicité de la suite de sortie, d'où il résulte que pour obtenir le même résultat avec un seul registre à décalage à rétroaction non linéaire, il faudrait nettement plus de cellules de mémoires que la somme de cellules de mémoires des registres individuels. Ainsi, le concept de l'invention est efficace en termes d'aire de puce et en particulier, applicable de façon souple, du fait que le concepteur de circuits ne nécessite pas une zone étendue de la puce pour intégrer un grand registre individuel à décalage. En effet, plusieurs petites zones de la puce sont suffisantes, pour y disposer les plusieurs petits registres individuels à décalage que l'on peut finalement combiner. Ainsi, le concept est plus sûr, dans la mesure où l'on utilise des registres à décalage non linéaire, contre lesquels les attaques XL échoueront. De surcroît, il est nettement plus difficile pour un assaillant de détecter plusieurs petits registres à décalage en tant qu'un seul grand registre à décalage, en triturant et en inspectant une puce, du fait que les structures régulières d'un grand registre à décalage sont nettement plus visibles que celles de plusieurs petits registres à décalage que l'on ne dispose pas de préférence, au voisinage immédiat les uns des autres sur la puce, mais à des positions différentes de la puce. Dans un mode de réalisation préféré de la présente invention, on utilise des registres individuels à décalage qui engendrent des périodes égales à 2"-1, N étant le nombre de cellules de mémoire dans le registre à décalage, dans le cas d'un corps fini qui non seulement a les nombres 0 et 1, mais aussi un nombre q arbitraire, la période des registres à décalage préférés étant égale à Des périodes même légèrement inférieures sont acceptables. Le maximum de périodes 2" pouvant être obtenues n'est pas aussi bien adapté à la combinaison et à la prédictibilité mathématique, que des périodes 2"-1 légèrement plus courtes. Dans des modes de réalisation préférés, le moyen de couplage linéaire qui signifie le moyen d'action prédictive, est efficace pour multiplier les sorties de plusieurs cellules individuelles de mémoire, dans les registres à décalage, par un élément respectif du corps fini, puis pour les combiner d'une manière linéaire, par exemple par des portes OU exclusif ou par des portes NI exclusif, pour fournir la suite de données de sortie du registre à décalage correspondant, suite qui est fournie de nouveau au moyen de combinaison, conjointement aux autres suites de données de sortie des autres registres à décalage, pour produire la suite de sortie de nombres, à partir du corps fini, d'une manière arbitraire d'effectuer des combinaisons, de préférence, par des éléments de combinaison booléenne, tels que des portes élémentaires. Des modes de réalisation préférés de la présente invention sont décrits ci-dessous, en référence aux dessins annexés. Les dessins représentent: la figure 1 représente un dispositif pour engendrer une suite de nombres, suivant un mode de réalisation préféré de la présente invention; la figure 2 représente un autre mode de réalisation du dispositif de l'invention pour engendrer une suite de nombres, avec un nombre arbitraire de registres à décalage à rétroaction non linéaire et à action prédictive linéaire; la figure 3 est une représentation détaillée d'une mise en oeuvre préférée d'un registre à décalage; la figure 4a est un mode de réalisation d'un registre à décalage à 20 rétroaction non linéaire; la figure 4b est un autre mode de réalisation d'un registre à décalage à rétroaction non linéaire; la figure 5a représente un autre registre à décalage à rétroaction non linéaire; la figure 5b représente un autre registre à décalage à rétroaction non linéaire; la figure 6 est une représentation simplifiée d'un registre à décalage à fonction générale de rétroaction non linéaire; la figure 7 représente un registre à décalage à rétroaction linéaire; et la figure 8 représente une combinaison de registres à décalage linéaire. La figure 1 représente un dispositif de l'invention pour engendrer une suite de nombres à partir d'un corps fini. Le dispositif comprend un premier registre 10 à décalage à rétroaction 101 non linéaire et un premier nombre de N cellules de mémoire, dans lequel, par exemple, la cellule SZ0 est désignée 102. En outre, le premier registre comprend un moyen 103 de couplage qui est mis en oeuvre, de préférence, en tant que moyen de couplage linéaire, et qui combine des suites de sortie des cellules 102 de mémoire, pour engendrer une première suite de données à partir de celles-ci à une sortie 104 du premier registre à décalage, laquelle première suite est le résultat final du premier registre 10 à décalage. Le dispositif de l'invention comprend un deuxième registre 20 à décalage comprenant les mêmes éléments que ceux décrits en référence au premier registre 10 à décalage, à savoir: un moyen de rétroaction non linéaire, un certain nombre de cellules de mémoire ainsi qu'un moyen de couplage qui est également mis en oeuvre de préférence, d'une manière linéaire, de même que dans le premier registre 10 à décalage. Le deuxième registre 20 à décalage engendre une deuxième suite de données, à une sortie 204 qui est reliée à la première suite de données, dans un moyen 12 de combinaison, de préférence, terme à terme, et dans le cas d'un corps fini binaire, bit à bit, pour engendrer une suite de nombres à une sortie 14 du moyen générateur de nombres de l'invention qui est illustré sur la figure 1. Si le corps fini correspond aux éléments 0 et 1 reliés du corps fini binaire, la suite de nombres à la sortie 14, sera une suite de bits. Toutefois, si le corps fini est un corps qui peut comprendre, par exemple, les nombres 0 à 9, la suite de nombres à la sortie 14, sera une suite de nombres qui peuvent prendre une valeur parmi les valeurs 0 à 9. La prédictibilité mathématique de la suite de nombres obtenue à la sortie 14 est la meilleure, lorsque les registres à décalage possèdent une caractéristique 101 de rétroaction non linéaire telle que la périodicité d'une suite de sorties de la cellule SZ; de mémoire est égale à 2N-1. Cela conduit de nouveau à la première suite de données, engendrée par le moyen 103 de couplage ayant la périodicité. Dans le mode de réalisation illustré sur la figure 2, contrairement à celui de la figure 1, un nombre n arbitraire de registres 10, 20, 30, 40 à décalage est couplé au moyen 12 de combinaison, pour combiner un nombre i arbitraire de suites 104, 204, 304, 404 de données de sortie, afin d'obtenir finalement la suite de nombres à la sortie 14. La figure 3 illustre un mode de réalisation préféré d'un registre 10, 20, 30, 40 à décalage qui en principe, peut être séparé en trois blocs différents, à savoir: le moyen 101 de rétroaction non linéaire, la séquence de cellules de mémoire disposées de préférence, en série qui s'étend entre une cellule 102a de mémoire de rang inférieur qui est également désignée par xo et une cellule 102b de mémoire de rang supérieur qui est désignée par XN_1. De préférence, chaque sortie de chaque cellule de mémoire peut être reliée à la fois au moyen 101 de rétroaction non linéaire, et au moyen 103 de couplage. La combinaison linéaire est effectuée par exemple, par une porte 103a OU exclusif qui pourrait être conçue également en tant que porte NI exclusif, pour obtenir une combinaison linéaire des signaux d'entrée. Chaque signal d'entrée provient d'un commutateur 103b, un commutateur 103b étant prévu pour chaque sortie d'un registre à décalage. En outre, chaque sortie d'une cellule de mémoire est formée pour être multipliée par un élément du corps fini, le multiplicateur 103c ou le moyen de pondération, respectivement est également désigné par co à cN_ 1. ci est un élément que l'on a de préférence, programmé, d'une manière fixe, dans le registre 10 à décalage, sous une forme logicielle ou de préférence, matérielle, pour chaque cellule x; de mémoire. Si le corps fini est un corps fini qui ne comporte que les éléments 0 et 1, c; est égal soit à 0 soit à 1. Toutefois, si le corps fini est par exemple, le corps fini comprenant les nombres 0, 1, 2, ..., 8, 9, chaque c; est un nombre entier compris entre 0 et 9. Il convient de préciser que les commutateurs 103b ne sont prévus qu'à titre de préférence. Ils doivent symboliser que le registre à décalage illustré sur la figure 3, peut être configuré d'une utilisation à l'autre, c'est-à-dire, dans la mesure où par exemple, seuls quelques-uns des commutateurs sont fermés, ce qui signifie que seules les suites de sortie de plusieurs (et non de toutes) des cellules x; de mémoire sont appliquées à la porte 103a OU exclusif, en fonction de la pondération de l'élément c; correspondant. De surcroît, il est préférable de n'appliquer qu'un petit nombre de cellules de mémoire de rang inférieur, après leur pondération par l'élément 103c, à la porte OU exclusif, telles que les suites de sortie des cellules xo, xi, x2 de la figure 3, tandis que les suites de sortie des cellules xN_l, XN_2 et xN_3 de mémoire ne sont pas utilisées dans le moyen de couplage linéaire. D'une manière générale, il est préférable d'utiliser environ 40 à 60 % des cellules de mémoire de rang inférieur, ce qui signifie les cellules de mémoire du côté gauche de la figure 3, et de ne pas utiliser les cellules de mémoire de rang supérieur restantes, ce qui signifie des 60 à 40 % restants des cellules de mémoire de rang supérieur, dans la combinaison à l'aide du moyen de couplage linéaire, c'est-à-dire la porte 103a. II a été découvert que cette suite, dans laquelle une partie des cellules de mémoire est combinée par le moyen de couplage, se comporte davantage comme une source physique de nombres aléatoires qu'une suite de données engendrée à la sortie du moyen de couplage linéaire qui repose sur la combinaison de toutes les cellules xo à xN_1 de mémoire. Cela est illustré ci-dessous, en référence à un registre à décalage ayant par exemple 10 cellules de mémoire. En outre, on supposera que les suites de sortie des cinq cellules de mémoire de rang inférieur sont combinées en tant que xo, ..., x4 par la porte 103a OU exclusif de la figure 3. Au contraire, les cellules de mémoire de rang supérieur, à savoir: x5, ..., x9 n'entrent pas dans la combinaison. Pour ces cellules de mémoire, les commutateurs 103b sont ouverts. De cette manière, on obtient qu'une équidistribution statistique de tous les uplets se produise dans la suite de données de sortie qui a une longueur égale au nombre de cellules de mémoire de rang inférieur combinées. Cela signifie que les uplets pour k = 1, c'est-à-dire tous les zéros et les uns, apparaissent à la même fréquence dans la première suite de données. De surcroît, tous les uplets avec k = 2, c'est-à-dire (0, 0), (0, 1), (1, 0) et (1, 1) apparaissent à la même fréquence que dans la première suite de données, à la sortie 104. Cela s'applique également aux uplets avec k = 3, k = 4 et k = 5. Toutefois, cela ne s'applique pas aux uplets avec k = 6, k = 7, k = 8, k = 9 et k = 10. Ici, il existe des écarts à l'intérieur des statistiques, quant à la fréquence à laquelle les k uplets respectifs apparaissent dans la première suite de données à la sortie 104 du registre 10 à décalage de la figure 3. Du fait de cette réelle dégradation par rapport à la statistique idéale d'une suite de données, la nature artificielle de la suite de données statistiquement idéale du registre à décalage de la figure 3 devient floue . L'introduction délibérée d'écarts par rapport à la statistique idéale correspondant à des uplets plus élevés assure qu'un assaillant, lorsqu'il observe la suite de nombres, ne voit pas immédiatement que cette suite de nombres est fournie par un générateur de nombres pseudo-aléatoires et non par un générateur de nombres aléatoires réels, tel qu'une source de bruits. Ainsi qu'il a été découvert, un générateur de nombres aléatoires physiques réels n'a pas la statistique idéale mais toujours un écart par rapport à la statistique idéale. Ce n'est que lorsque la suite de sortie d'un générateur de nombres aléatoires physiques est observée pendant un temps très long que la suite de sortie peut être une statistique idéale. Toutefois, cela ne s'applique que lorsque les conditions du générateur de nombres aléatoires n'ont pas changé, ce qui signifie, par exemple, la température, le courant, etc. Dès lors que les conditions de générateurs de nombres aléatoires physiques se modifieront très probablement pendant la durée d'observation, ce qui signifie que l'on ne peut pas garantir qu'une source de bruits fonctionne pendant une durée indéfinie, à la même température et à la même intensité, on peut observer qu'un écart par rapport à la statistique idéale qui se situe à l'intérieur une trame limitée (petite) ne fait pas ressembler la suite de nombres engendrés à une suite de nombres aléatoires irréels de synthèse, mais à une suite de nombres aléatoires réels, produits par un générateur de bruits réels. La figure 4a illustre une fonction de rétroaction F(x) pour N = 11 cellules de mémoire dans le moyen de couplage prédictif, F(x) étant indiquée sur la figure 4a et comprenant deux portes 212 et 213 ET et deux portes 214 et 215 OU exclusif, ainsi qu'un inverseur 216. Par ce moyen, la caractéristique F(x) de rétroaction illustrée sur la figure 4a peut être mise en oeuvre. Une autre caractéristique de rétroaction G(x) est illustrée sur la figure 4b, conjointement à une mise en oeuvre possible. On peut observer que les deux caractéristiques F(x) et G(x) de rétroaction partagent la porte 212 ET, ainsi que la porte 214 OU exclusif. Dans le mode de réalisation illustré sur la figure 4b,une autre porte 218 OU exclusif, ainsi qu'une porte 219 OU exclusif complémentaire sont requises. Le domaine des deux équations F(x) et G(x), souligné sur les figures 4a et 4b, représente la partie xi x4 + xo partagée par les deux caractéristiques de rétroaction, l'utilisation partagée de ce terme servant à économiser du matériel. Dans le registre à décalage illustré sur la figure 4a ou sur la figure 4b, chaque suite de sortie a une période de 211-1=2047 et une complexité linéaire de 2h1-2=2046, du fait des 11 cellules du registre à décalage et d'une rétroaction non linéaire préférée. Les fonctions de rétroaction sont également illustrées, un tiret au-dessus d'un symbole désignant le complément binaire. Les figures 5a et 5b illustrent une possibilité supplémentaire pour un registre un décalage à quatre cellules ayant deux moyens différents de rétroaction F(x) et G(x) qui peuvent être mis en oeuvre sur la base d'un commutateur 203 inverseur, ainsi que l'illustre la figure 4. De nouveau, le moyen de rétroaction est intégré en tant que premier moyen de combinaison sur la figure 5a, sous la forme d'une porte ET et de trois portes OU exclusif, tandis que le moyen de combinaison correspondant au deuxième moyen de rétroaction, tel qu'illustré sur la figure 5b, comprend de nouveau, deux portes ET et trois portes OU exclusif. La symbiose des figures 5a et 5b est illustrée sur la figure 5c où de nouveau, deux portes ET et trois portes OU exclusif sont utilisées conjointement au commutateur 203 inverseur, pour activer et désactiver respectivement, la caractéristique de rétroaction F(x) et G(x), en fonction du signal z fourni au commutateur 203 inverseur. Ainsi qu'on l'a déjà expliqué, il est préférable que tous les registres à décalage des figures 5a, 5b et 4a, 4b, respectivement, soient non linéaires, c'est-à-dire qu'ils comprennent un élément non linéaire, tel que par exemple, un élément de multiplication non linéaire qui est une porte ET, considérée au niveau logique. La figure 6 illustre un registre à décalage à rétroaction général, ayant les cellules de mémoire Do, ..., Dn_1, avec un moyen d'action prédictive, ainsi qu'un moyen de rétroaction, désigné par F (xo, x1, ..., )(n-1)É On prendra en considération un registre à décalage à rétroaction générale à n étages n (ou n cellules), sur le corps de base GF(2)= {0,1}. Le registre à décalage se compose de n cellules de mémoire (bascules bistables) Do, D1, ..., Dn-1,et la réalisation (électronique) d'une fonction de rétroaction F (xo, x1, ..., xn_1). La fonction de rétroaction associe une valeur non ambiguë de GF(2), ce qui signifie la valeur 0 ou 1, à tous les n uplets composés de n bits. En terminologie mathématique, F est une fonction ayant un domaine de définition GF(2)n et un domaine de cible GF(2). Le registre à décalage est commandé par une horloge externe. Le contenu de la cellule de mémoire Di est décalé vers la cellule adjacente gauche Do, à chaque fréquence d'horloge. 1 j 5 n - 1. Le contenu de la cellule de mémoire Do est émis en sortie. Si le contenu des cellules de mémoire Do, D1, ..., Dn_2, Dn_1, à un temps t est donné par: St, St+1 É .. , St+n- 2, St+n-1 alors, à une fréquence d'horloge plus tard, ce qui signifie à untemps t + 1, les cellules de mémoire contiendront les bits: St+1, 5+2, . , St+n-1, St+n, où la valeur st+n qui est introduite dans la cellule Dn_1 est donnée par: St+n = F (St, st+1, ... , st+n-1) L'uplet n (st, st+ 1, ... , st+n_1) décrit l'état du registre à décalage au temps t. On appelle l'uplet n (so, si, ..., sn_1) l'état initial. On utilise FSR(F) en tant qu'abréviation pour le registre à décalage à rétroaction générale ayant une fonction de rétroaction F (FSR signifie registre à décalage à rétroaction). La figure 6 illustre un registre à décalage à rétroaction générale...DTD: Le registre à décalage émet en sortie un bit à chaque horloge de l'horloge externe. De cette manière, le registre à décalage peut produire une suite périodique de bits so, s1, s2, ..., dite suite de registre à décalage. On suppose que so, s1, ..., sn_1 soient les valeurs initiales de la suite du registre à décalage. La fonction de rétroaction F(xo, x1, . , xn_1) et les valeurs initiales so, si, ..., sn-1 déterminent complètement la suite du registre à décalage. Du fait qu'il existe seulement 2" états différents du registre à décalage, la période de la suite so, s1, s2, ... de registre à décalage est au plus égale à 2"...DTD: On qualifiera un registre FSR(F) à décalage à rétroaction générale d'homogène, si sa fonction de rétroaction F est homogène, c'est-à-dire si F(0, 0, ..., 0) = 0 s'applique. Un registre à décalage homogène mis à l'état initial so = s1 = ... = sn_1 = 0 produira la suite nulle. II s'ensuit que la période de la suite de sortie d'un registre à décalage homogène à n étages peut être au plus égale à 2" 1. Si la période prend la valeur maximum 2" 1, on appelle la suite du registre à décalage une suite M et le registre à décalage est maximum. La recherche de registres à décalage maxima constitue une tâche importante. Deux cas particuliers du registre à décalage à rétroaction générale FSR(R) sont particulièrement intéressants. Dans un cas, la fonction de rétroaction F prend la forme: où les coefficients ait ne sont égaux ni à 0 ni à 1. Dans ce cas, on l'appelle une fonction de rétroaction carrée, à titre d'exemple d'une fonction de rétroaction non linéaire et le terme carré s'applique également au registre à décalage. L'autre cas particulier se produit lorsque la fonction de rétroaction F est linéaire. Dès lors, F prend la forme suivante: F (xo, x1, ... , xn-1) = aoxo + a1x1 + ... + an-lxn-1, où les coefficients a; apparaissant sont de nouveau égaux à 0 ou à 1, ce qui signifie des éléments de GF(2). Dans ce cas, on l'appelle un registre à décalage linéaire ou à rétroaction linéaire et l'on utilise l'abréviation LFSR (registre à décalage à rétroaction linéaire), à cet effet. II convient de préciser que les deux registres à décalage à rétroaction linéaire et à rétroaction carrée sont homogènes. Un registre à décalage à rétroaction linéaire à n étages est caractérisé généralement par un polynôme binaire f(x) du degré n sur une variable x. On appelle ce polynôme f, le polynôme caractéristique du registre à décalage à rétroaction linéaire. On écrit ensuite le registre à décalage LFSR(f). La fonction de rétroaction F(xo, x1, ..., )41) d'un registre à décalage à rétroaction linéaire est un polynôme sur n variables xo, x1, ..., xn_1 et du degré 1. Au contraire, le polynôme caractéristique f(x) du même registre à décalage linéaire est un polynôme à une seule variable, à savoir: x, mais du degré n. Il applique: f (x) = x" + F(1, x, x2, ..., xn1) Ainsi, la non-linéarité de la fonction de rétroaction peut être obtenue par des formes relativement arbitraire de la fonction de rétroaction F. Par conséquent, il suffira fondamentalement de multiplier simplement les signaux de sortie de deux cellules de mémoire D; et D;+1, ce qui donnerait lieu à un registre à décalage carré. Bien entendu, on peut multiplier plus de deux sorties de cellules de mémoire ou les soumettre à une fonction non linéaire quelconque. Toutefois, en principe, on peut également réaliser une rétroaction avec un seul signal de sortie d'une cellule de mémoire unique, par exemple, en réinjectant simplement le signal de sortie de la cellule de mémoire Do, en appliquant celui-ci à la fonction F(xo) et en appliquant le signal de sortie de cette fonction, par exemple, à la cellule de mémoire D"_1 du côté de l'entrée. Cette fonction non linéaire à valeur unique pourrait par exemple, être une inversion, c'est-à-dire une fonction NON logique. Toutefois, la fonction non linéaire pourrait être également une autre fonction quelconque, par exemple, une fonction d'association non linéaire ou une fonction cryptographique. Ainsi qu'on l'a déjà expliqué, le dispositif de l'invention pour produire une longue suite de bits ou, en des termes généraux, d'éléments à partir d'un corps fini, est avantageux d'une part, en ce qu'il nécessite un coût en matériel relativement faible et d'autre part, en ce qu'il produit des suites ayant des caractéristiques favorables. Ces caractéristiques favorables sont une longue période, une complexité linéaire élevée, de bonnes caractéristiques de distribution, une complexité polynomiale idéale (maximum ou de complexité). Ainsi, le dispositif de l'invention pour produire des suites de clés est également adapté à l'utilisation dans un chiffre continu. En outre, on peut également l'utiliser en tant que générateur de nombres pseudo-aléatoires paramétrable (PRNG). Ainsi qu'on l'a déjà expliqué, la solution de l'invention repose sur des registres à décalage à rétroaction non linéaire (NLFSR). Par conséquent, on utilise de préférence, ces NLFSR qui ont une fonction de rétroaction que l'on peut décrire par des formules récurrentes relativement peu occupées, ce qui conduit à une mise en oeuvre peu coûteuse en matériel, au moyen du faible nombre de portes. Par ailleurs, ces registres à décalage à rétroaction linéaire dont les suites de sortie ont une longue période, sont préférés. Pour ce qui concerne les formules récurrentes peu occupées, il convient de préciser que les formules récurrentes où les états de moins de la moitié ou de la moitié des cellules de mémoire sont introduits, sont préférables. Dès lors, dans un registre à décalage ayant environ 10 cellules de mémoire, les suites de sortie respectives de 5 cellules de mémoire ou de moins de 5 cellules de mémoire seraient appliquées à la fonction de rétroaction non linéaire. Si un registre à décalage non linéaire de l'invention a exactement N bascules bistables (en tant que conception d'une cellule de mémoire), la suite de sortie peut avoir une période maximum de 2", lorsque l'on prend en considération le cas binaire ou de q", dans le cas général d'un corps fini sous-jacent du rang = quantité q. Des registres à décalage de cette période maximum possible ne sont néanmoins, que sous-optimaux pour la présente invention. Il est préférable d'utiliser des registres à décalage à rétroaction non linéaire dont les suites engendrées sont plus petites que la suite maximum possible, ce qui signifie des registres à décalage à rétroaction non linéaire engendrant des suites de la période 2"-1 et q"-1, respectivement, où des périodes légèrement inférieures sont néanmoins préférables, précisément pour des périodes exemplaires qui sont supérieures ou égales à 2"-1. Suivant l'invention, ce registre à décalage non linéaire ayant N bascules bistables comprend N sorties. Ainsi qu'il est illustré sur la figure 3, chaque sortie peut être dotée d'un commutateur qui peut être ouvert ou fermé. Si tous les commutateurs sont fermés, il existe N suites de sortie. Celles-ci sont multipliées terme à terme avec un élément c; de corps fini, et les suites engendrées de cette manière, sont liées au moyen d'une porte 103a OU exclusif. En d'autres termes, le registre à décalage non linéaire est doté d'une fonction prédictive linéaire paramétrable. Le dispositif générateur de nombres de l'invention se compose de plusieurs registres à décalage à rétroaction non linéaire dont la longueur deux à deux est de préférence un nombre premier. Cela signifie que le plus grand commun diviseur entre les deux nombres N, M de deux registres 10, 20 à décalage (figure 1) est au plus égal à 1. Chaque registre à décalage à rétroaction non linéaire a en outre, une logique prédictive linéaire paramétrable. Les suites de sortie des logiques prédictives différentes sont ensuite combinées en suite de clés et suite pseudo-aléatoire finales, respectivement, au moyen de la fonction de combinaison booléenne qui est présente, de préférence, dans le moyen 12 de combinaison (figure 1). Le concept de l'invention qui signifie le dispositif de l'invention, le procédé de l'invention et le programme informatique de l'invention, offre les avantages suivants. Le dispositif est à l'épreuve d'attaques faisant appel à l'algorithme XL (voir point 2). Le dispositif est paramétrable. L'occupation des cellules de tous les NLFSR apparaissant compose la clé cryptographique (ou le germe, dans le contexte de la production de nombres pseudo-aléatoires). La position des commutateurs des sorties provenant des cellules des NLFSR individuels constitue la paramétrabilité. II est possible de prouver que les suites de sortie résultant de la logique prédictive d'un NLFSR ont généralement la même longue période et la même complexité linéaire (élevée) que la suite de sortie directe provenant du NLFSR. II est également possible de prouver que les suites de sortie résultant de la logique prédictive possèdent de bonnes caractéristiques statistiques, sous réserve qu'environ la première moitié seulement des cellules du NLFSR soit émise en sortie et appliquée à la logique prédictive linéaire. Dès lors, les suites de sortie ont la même quantité de zéros et de uns, dans le cas binaire. Les paires (0, 0) (0, 1), (1, 0) et (1, 1) ont également la même fréquence à l'intérieur d'une période. II en est de même de tous les uplets de k possibles, à condition que k ne soit pas supérieur à N/2. Ces caractéristiques de distribution idéale s'appliquent également au cas général d'un corps fini du rang q, de façon correspondante. Les suites de sortie issues des logiques prédictives ont généralement la valeur idéale de la complexité de rang maximum. Lorsque le NLFSR a exactement N cellules, la suite de sortie directe a la complexité N de rang maximum. Au contraire, les suites de sortie issues de la fonction prédictive ont généralement la complexité de rang maximum N/2 (une suite aléatoire réelle de longueur 2" aurait également très probablement la complexité de rang maximum 2N). Ainsi, de préférence, les générateurs de nombres de l'invention ont des registres à décalage à rétroaction non linéaire spécifiques ayant des logiques prédictives configurables, dont les suites de sortie sont ensuite combinées terme à terme, à l'aide d'une fonction de combinaison booléenne pour engendrer la suite finale. Cette suite sert ensuite, à chiffrer dans le sens du chiffre de Vigenère ou tient lieu de nombre pseudo-aléatoire, à d'autres fins que le chiffrement, à savoir à des fins de simulation, etc. Ainsi qu'on l'a déjà expliqué, le dispositif de l'invention peut produire des suites d'éléments pour un corps fini Fq. Pour le cas spécifique important, q = 2 s'applique, c'est-à-dire que Fq = F2 = GF(2). Les éléments du corps fini F2 sont 0 ou 1, ce qui signifie des bits dans le cas binaire. Sur les figures, les fonctions de rétroaction sont représentées de Fq" à Fq. Cela signifie que la logique de rétroaction peut être représentée par des opérations arithmétiques dans le corps fini Fq. Ici, N est le nombre de cellules de mémoire d'un registre à décalage. N désigne également la longueur du registre à décalage. Chaque cellule de mémoire peut mémoriser un élément de Fq. Ainsi qu'on l'a expliqué, ces registres à décalage non linéaire servent de base dont les suites de sortie directe ont la période N étant la longueur du registre à décalage. En outre, il est préférable que les longueurs deux à deux des registres à décalage soient un nombre premier. Par ailleurs, une logique prédictive linéaire est préférée. Si tous les commutateurs sont fermés, ce qui suit s'applique: V (X0, X1, ... , XN-1) = C0X0 + c1X1 + ... + CN-1XN-1 Les coefficients co, c1 cN_1 sont des éléments de Fq. En fonction des circonstances, on peut mettre en oeuvre le procédé de l'invention pour produire une suite de nombres, sous une forme matérielle ou logicielle. La mise en oeuvre peut s'effectuer sur des supports d'enregistrement numérique, en particulier sur un disque ou un CD, au moyen de signaux de 2875316 17 commande pouvant être lus électroniquement, qui peuvent coopérer avec un système informatique programmable, de manière à mettre en oeuvre le procédé. Ainsi, en règle générale, l'invention se compose également d'un produit-programme informatique ayant un code de programme mémorisé sur un support pouvant être lu par un ordinateur, pour mettre en oeuvre le procédé de l'invention, lorsque le produit-programme informatique s'exécute sur un ordinateur. En d'autres termes, on peut donc réaliser l'invention en tant que programme informatique ayant un code de programme pour mettre en oeuvre le procédé, lorsque le programme informatique s'exécute sur un ordinateur. i0 Liste de références numériques 12 14 20 30 40 51 52 53 54 55 56 57 58 59a 59b 59c 3o 62a à 62d 81 à 84 101 102a 102b premier registre à décalage deuxième registre à décalage sortie de générateur de nombres deuxième registre à décalage troisième registre à décalage quatrième registre à décalage cellule de mémoire cellule de mémoire cellule de mémoire cellule de mémoire moyen d'initialisation sortie première liaison OU deuxième liaison OU première ligne de rétroaction deuxième ligne de rétroaction troisième ligne de rétroaction sorties des registres à décalage linéaire registres à décalage linéaire moyen de rétroaction non linéaire cellule de mémoire parmi le nombre de cellules de mémoire cellule de mémoire de rang inférieur cellule de mémoire de rang supérieur 103 moyen de combinaison 103a porte OU exclusif 103b commutateur 103c facteur de pondération 104 première suite de données 203 moyen de couplage du deuxième registre à décalage 204 deuxième suite de données 212 porte ET 213 porte ET 214 porte OU exclusif 215 porte OU exclusif 216 inverseur 218 porte OU exclusif 219 porte OU exclusif 303 moyen de couplage du troisième registre à décalage 304 troisième suite de données 403 moyen de couplage du quatrième registre à décalage 404 quatrième suite de données 2875316 19 Revendications 1. Dispositif pour produire une suite de nombres, comprenant: un premier registre (10) à décalage à rétroaction (101) non linéaire, un premier nombre de cellules (102) de mémoire et une première sortie (104) reliée au premier nombre de cellules de mémoire par un premier moyen (103) couplage; un deuxième registre (20) à décalage à rétroaction non linéaire, un deuxième nombre de cellules de mémoire et une deuxième sortie (104) reliée au deuxième nombre de cellules de mémoire par un deuxième moyen de couplage; et un moyen (12) de combinaison pour combiner une suite de données à la première sortie (104) et une suite de données à la deuxième sortie (204) pour obtenir la suite de nombres. 2. Dispositif suivant la revendication 1, dans lequel le premier moyen (103) de combinaison ou le deuxième moyen de combinaison sont des moyens de combinaison linéaire. 3. Dispositif suivant la revendication 1 ou 2, dans lequel le premier registre (10) à décalage ou le deuxième registre (20) à décalage sont formés de telle sorte que le premier nombre de cellules de mémoire et le deuxième nombre de cellules de mémoire sont des nombres premiers deux à deux, c'est-à-dire qu'ils n'ont pas de diviseur commun, excepté 1 . 4. Dispositif suivant l'une des revendications précédentes, dans lequel le premier nombre et le deuxième nombre sont supérieurs ou égaux à 5. 5. Dispositif suivant l'une des revendications précédentes, dans lequel le premier registre à décalage ou le deuxième registre à décalage est formé de telle sorte qu'une suite de sortie du registre à décalage au niveau d'une cellule de mémoire a une période qui est inférieure ou égale à 2N-1, N étant le nombre de cellules de mémoire du registre à décalage. 2875316 20 6. Dispositif suivant l'une des revendications précédentes, dans lequel le premier registre à décalage ou le deuxième registre à décalage est formé de telle sorte qu'une suite de sortie du registre à décalage a une période qui est supérieure ou égale à 2N-1, N étant le nombre de cellules de mémoire du registre à décalage. 7. Dispositif suivant l'une des revendications précédentes, dans lequel le premier registre (10) à décalage ou le deuxième registre (20) à décalage est formé pour comprendre un moyen (101) de rétroaction, conçu pour 1 o combiner des sorties d'au moins deux cellules de mémoire du registre à décalage. 8. Dispositif suivant la revendication 7, dans lequel le premier registre (10) à décalage ou le deuxième registre (20) à décalage est formé pour comprendre un moyen (101) de rétroaction qui est conçu pour combiner des sorties d'au plus N/2 cellules de mémoire, N étant le nombre de cellules de mémoire du registre à décalage. 9. Dispositif suivant l'une des revendications précédentes, dans lequel le premier moyen (101) de combinaison ou le deuxième moyen de combinaison est formé pour combiner des suites de sortie d'au moins deux cellules de mémoire ou des suites dérivées des suites de sortie d'au moins deux cellules de mémoire. 10. Dispositif suivant la revendication 9, dans lequel le premier moyen (101) de combinaison ou le deuxième moyen de combinaison est formé pour combiner les suites de sortie ou les suites dérivées des suites de sortie, bit à bit, au moyen d'une porte (103a) OU exclusif ou d'une porte NI exclusif, pour obtenir la suite de nombres. 11. Dispositif suivant la revendication 9 ou 10, dans lequel le premier registre (10) à décalage ou le deuxième registre (20) à décalage est formé de telle sorte que les cellules de mémoire sont reliées en série, dans lequel il existe une cellule (102a) de mémoire de rang inférieur et une cellule (102b) de mémoire de rang supérieur, dans lequel une sortie d'un moyen (101) de 2875316 21 rétroaction est reliée à une entrée de la cellule de mémoire de rang supérieur, et dans lequel le moyen (103) de couplage est formé pour coupler uniquement des cellules de mémoire de rang inférieur mais pas des cellules de mémoire de rang supérieur, les unes aux autres. 12. Dispositif suivant la revendication 11, dans lequel le moyen de couplage est formé pour coupler au plus N-3 cellules de mémoire ou moins de rang supérieur, les unes aux autres et non pour coupler au moins trois cellules de mémoire de rang inférieur. 13. Dispositif suivant l'une des revendications précédentes, dans lequel le moyen (103) de couplage est formé pour pondérer une suite de sortie d'une cellule de mémoire, à l'aide d'un nombre provenant d'un corps fini, dans lequel la suite de nombres est définie. 14. Dispositif suivant l'une des revendications 9 à 12, dans lequel le moyen (103a) de couplage est formé pour pondérer une suite de sortie à l'aide d'un nombre provenant du corps fini, afin d'obtenir la suite de nombres dérivés de la suite de sortie. 15. Dispositif suivant la revendication 13 ou 14, dans lequel le premier moyen (103) de couplage ou le deuxième moyen de couplage est formé pour utiliser un nombre fixe pour la suite de nombres, à des fins de pondération. 16. Dispositif suivant l'une des revendications précédentes, dans lequel le moyen (12) de combinaison est formé pour relier la suite de données de la première sortie (104) et la suite de données de la deuxième sortie (204), terme à terme, au moyen d'une fonction de combinaison booléenne. 17. Dispositif suivant la revendication 16, dans lequel la première sortie (104) de données et la deuxième sortie (204) de données sont binaires et dans lequel le moyen (12) de combinaison est formé pour utiliser au moins une porte parmi le groupe de portes comprenant une porte ET, une porte NON-ET, une porte OU, une porte NI, une porte OU exclusif et une porte NI exclusif. 2875316 22 18. Dispositif suivant l'une des revendications précédentes, dans lequel le moyen (103) de couplage est formé pour avoir un commutateur (103b) pour une cellule (102) de mémoire, pour utiliser des suites de sortie des cellules de mémoire, en fonction d'un signal de commande du commutateur (103b), à des fins de couplage ou non. 19. Procédé pour produire une suite de nombres, comprenant les étapes consistant à : produire une première suite de données avec le premier registre (10) à décalage ayant un moyen (101) de rétroaction non linéaire, un premier nombre de cellules (102) de mémoire et une première sortie (104) qui est reliée au premier nombre de cellules de mémoire par un premier moyen (103) de couplage. produire une deuxième suite de données, avec le deuxième registre (20) à décalage à rétroaction non linéaire ayant un deuxième nombre de cellules de mémoire et une deuxième sortie (104) qui est reliée au deuxième nombre de cellules de mémoire par un deuxième moyen de couplage; et combiner (12) une suite de données de la première sortie (104) et une suite de données de la deuxième sortie (204) pour obtenir la suite de nombres. 20 20. Programme informatique ayant un code de programme pour mettre en oeuvre le procédé pour produire une suite de nombres, suivant la revendication 19, lorsque le programme informatique s'exécute sur un ordinateur.