Brevet FR3123472A1 — publié le 20221202

Procédé de génération de nombre aléatoires Ce procédé est mis en œuvre au sein d'un processeur numérique (10) par : a) interrogation d'un registre interne (30) du processeur dont le contenu se modifie au cours du temps ; b) extraction à un instant donné de n bits du registre, n ≥ 1 ; c) utilisation des n bits extraits en tant que bit(s) constitutif(s) d'un nombre aléatoire de N bits à générer ; d) réitération des étapes a) à c) jusqu'à obtention des N bits du nombre aléatoire ; et e) délivrance du nombre aléatoire à un circuit ou logiciel applicatifs. Le registre interrogé à l'étape a) peut notamment être un registre (30) de comptage des impulsions d'une horloge (24) de séquencement du processeur issues d'un oscillateur (26) de l'horloge (24). Une part d'aléa supplémentaire peut être introduit avec une sélection aléatoire ou pseudo-aléatoire du registre à interroger, de l'instant d'interrogation du registre, du nombre n de bits extraits et/ou de la position des bits extraits du registre. (Figure à publier avec l’abrégé : Figure 1) Procédé de génération de nombre aléatoires Domaine technique de l'invention L'invention concerne la génération des nombres aléatoires. De nombreuses techniques nécessitent de disposer de nombres aléatoires, tout particulièrement dans le domaine de la cryptographie lorsqu'il s'agit de mettre en œuvre des algorithmes de chiffrement de haute sécurité tels que AES, RSA, Diffie-Hellman, etc. Mais le recours à des tirages de nombres aléatoires intervient dans bien d'autres domaines, notamment les jeux de hasard, ou encore les techniques de modélisation probabilistes ou la sélection d'échantillons à des fins statistique État de la technique antérieure Il existe de multiples manières de générer des nombres aléatoires, avec des niveaux d'entropie variables, l'entropie étant définie comme la mesure du degré effectif d'aléa (absence de caractère déterministe et de prévisibilité au tirage) de la valeur générée. Dans certains cas, la génération de nombres "pseudo-aléatoires" peut suffire, c'est-à-dire de nombres qui sont obtenus par un procédé qui est déterministe, mais qui produit des valeurs suffisamment indépendantes les unes des autres pour satisfaire les besoins des applications considérées : par exemple les algorithmes de modélisation utilisant des techniques probabilistes, ou les méthodes d'échantillonnage à des fins statistiques. En revanche, dans le cas notamment du chiffrement des données, il est essentiel que les séries de nombres aléatoires délivrées par le générateur ne présentent aucun lien décelable entre les nombres successifs, c'est-à-dire que les nombres produits soient absolument impossibles à prédire. Les procédés de génération de nombres aléatoires (et non simplement pseudo-aléatoires) utilisés jusqu'à présent se basent principalement sur des phénomènes physiques, matériels (par exemple un bruit thermique ou électromagnétique) ou sur une interaction non prévisible avec un utilisateur, par exemple les mouvements erratiques d'une souris, qui ne sont ni cycliques ni déterministes. Ces générateurs délivrent des nombres aléatoires avec une entropie très élevée mais ils présentent l'inconvénient d'être relativement complexes, car ils requièrent une circuiterie matérielle pour le recueil du phénomène physique ou de l'interaction avec l'utilisateur, des circuits convertisseurs analogique/numérique, un module algorithmique de génération de la valeur numérique aléatoire, etc. De plus, ils sont mal adaptés à la génération de nombres aléatoires de très grande dimension (plusieurs dizaines ou centaines de bits), si ce n'est au prix d'un temps de réponse excessivement long entre la requête d'obtention du nombre aléatoire et la délivrance effective du résultat par le générateur. Or les applications les plus récentes de chiffrement de haute sécurité nécessitent la génération très rapide de nombres aléatoires longs et présentant une entropie élevée. Le but de l'invention est de remédier à ces difficultés et limitations, en proposant une technique de génération de nombres aléatoires offrant, simultanément : une très grande simplicité de réalisation, sans recours à aucune circuiterie matérielle ; la possibilité de délivrer à une cadence très élevée des nombres aléatoires aussi longs que souhaité ; une entropie maximale des nombres générés, ceux-ci ne présentant entre eux aucun lien déterministe ; et la possibilité, dans certaines mises en œuvre, de faire dépendre le fonctionnement propre du générateur aléatoire d'un paramètre de niveau supérieur, lui-même modifié de manière aléatoire à chaque itération du processus, c'est-à-dire avec un double degré d'aléa pour chaque nombre obtenu. Ces buts sont atteints selon l'invention, par un procédé comprenant les étapes successives suivantes : interrogation d'un registre interne du processeur, le contenu du registre étant un contenu évolutif se modifiant au cours du temps ; extraction à un instant donné de n bits du registre, n ≥ 1 ; utilisation des n bits extraits à l'étape b) en tant que bit(s) constitutif(s) d'un nombre aléatoire de N bits à générer ; réitération des étapes a) à c) jusqu'à obtention des N bits du nombre aléatoire ; et délivrance du nombre aléatoire à un circuit ou logiciel applicatifs. Selon diverses formes de mise en œuvre subsidiaires avantageuses : le registre est un registre de comptage des impulsions d'une horloge de séquencement du processeur, notamment un registre de comptage des impulsions directement issues d'un oscillateur de l'horloge ; le registre est un registre de comptage d'évènements du ; les étapes a) à d) sont exécutées au sein d'un micrologiciel du processeur ; les n bits extraits à l'étape b) sont le(s) bit(s) de poids le plus faible du registre ; l'instant donné d'extraction des n bits à l'étape b) est un instant déterminé par un processus aléatoire ou pseudo-aléatoire ; l'instant donné d'extraction des n bits à l'étape b) est un instant déterminé en réponse à une requête reçue du circuit ou logiciel applicatifs ; le processeur comprend une pluralité de registres internes potentiellement interrogeables, et le procédé comprend en outre avant l'étape a) une étape préalable de sélection, par un processus aléatoire ou pseudo-aléatoire, de l'un des registres de la pluralité de registres internes potentiellement interrogeables et la sélection des n bits du registre sélectionné, notamment la sélection par un processus aléatoire ou pseudo-aléatoire de l'un au moins des bits du registre sélectionné ; et/ou le procédé comprend en outre avant l'étape b) une étape préalable de sélection, par un processus aléatoire ou pseudo-aléatoire, de ceux des n bits du registre qui seront extraits à l'étape b). On va maintenant exposer des exemples de mise en œuvre de l'invention, en référence aux dessins annexés où les mêmes références désignent d'une figure à l'autre des éléments identiques ou fonctionnellement semblables. illustre de façon schématique un processeur numérique avec les divers blocs auxquels il est interfacé, l'ensemble étant utilisé pour la mise en œuvre du procédé de l'invention. explicite la manière de générer un nombre aléatoire par interrogation d'un registre du système de la . est un organigramme présentant les étapes successives de mise en œuvre du procédé de l'invention. est un diagramme décrivant un mode de mise en œuvre perfectionné de l'invention, combinant plusieurs techniques de sélection aléatoire pour l'obtention de la valeur à générer. Un procédé de génération d'un nombre aléatoire mis en œuvre au moyen d'un processeur numérique (10), caractérisé en ce qu'il comprend : l'interrogation (120) d'un registre interne (30) du processeur, le contenu du registre étant un contenu évolutif se modifiant au cours du temps. l'extraction (130) à un instant donné de n bits du registre, n ≥ 1 ; l'utilisation (140) des n bits extraits à l'étape b) en tant que bit(s) constitutif(s) d'un nombre aléatoire de N bits (34) à générer ; la réitération des étapes a) à c) jusqu'à obtention des N bits du nombre aléatoire ; et la délivrance (160) du nombre aléatoire à un circuit ou logiciel applicatifs. Le procédé de la revendication 1, dans lequel le registre (30) est un registre de comptage des impulsions d'une horloge (24) de séquencement du processeur. Le procédé de la revendication 2, dans lequel le registre (30) est un registre de comptage des impulsions directement issues d'un oscillateur (26) de l'horloge (24). Le procédé de la revendication 1, dans lequel le registre est un registre de comptage d'évènements du processeur. Le procédé de la revendication 1, dans lequel les étapes a) à d) sont exécutées au sein d'un micrologiciel du processeur. Le procédé de la revendication 1, dans lequel les n bits extraits à l'étape b) sont le(s) bit(s) de poids le plus faible du registre. Le procédé de la revendication 1, dans lequel l'instant donné d'extraction des n bits à l'étape b) est un instant déterminé par un processus aléatoire ou pseudo-aléatoire. Le procédé de la revendication 1, dans lequel l'instant donné d'extraction des n bits à l'étape b) est un instant déterminé en réponse à une requête reçue du circuit ou logiciel applicatifs. Le procédé de la revendication 1, dans lequel le processeur comprend une pluralité de registres internes potentiellement interrogeables, et dans lequel le procédé comprend en outre avant l'étape a) une étape préalable de sélection, par un processus aléatoire ou pseudo-aléatoire, de l'un des registres de la pluralité de registres internes potentiellement interrogeables et la sélection des n bits du registre sélectionné, notamment la sélection par un processus aléatoire ou pseudo-aléatoire de l'un au moins des bits du registre sélectionné. Le procédé de la revendication 1, comprenant en outre avant l'étape b) une étape préalable de sélection, par un processus aléatoire ou pseudo-aléatoire, de ceux des n bits du registre qui seront extraits à l'étape b).