FR 3029310 A1 20160603 FR 1502452 A 20151124 PROCEDE DE CALCUL DE LA VARIANCE DE LA GIGUE DE PHASE DANS UN GENERATEUR DE NOMBRES VRAIMENT ALEATOIRES ET PROCEDE DE CONTROLE ASSOCIE La présente invention concerne le domaine de la cryptographie, et porte plus particulièrement sur un procédé de contrôle de la variance de la gigue de phase g dans un générateur de nombres vraiment aléatoires (TRNG), mis en oeuvre sur un circuit logique programmable. La publication « Sur la sécurité des générateurs de nombres aléatoires basés sur oscillateurs » (On the security of oscillator-based random number generators), M. Baudet et al., Journal of Cryptology, 24 :398-425, 2011 est incorporée par référence dans son intégralité à la présente description. Les générateurs de nombres aléatoires (Random Number Generators - RNG) sont des composants cruciaux des systèmes cryptographiques. Les nombres aléatoires sont en effet utilisés en tant que clés confidentielles, vecteurs d'initialisation, valeurs de remplissage et également dans le cadre de contre-mesures à l'encontre d'attaques par canal auxiliaire. En plus de produire un flux binaire en sortie avec de bonnes propriétés statistiques, les RNG pour applications cryptographiques doivent satisfaire des exigences de sécurité supplémentaires : ils doivent pouvoir être testés en temps réel et leur sécurité doit être prouvée sous une hypothèse physique minutieusement testée. Les RNG cryptographiques classiques sont 30 constitués de deux niveaux : un générateur de nombres vraiment aléatoires (True Random Number Generator - TRNG) qui produit l'entropie, et un post-traitement cryptographique pour obtenir un certain niveau de sécurité, même dans le cas d'une défaillance non détectée du TRNG sous-jacent. Pour des applications cryptographiques, la sécurité d'un TRNG dépend de son taux d'entropie qui mesure 5 le temps d'exécution d'une attaque par force brute sur une clé par échantillonnage de la distribution du TRNG. Le taux d'entropie du TRNG dépend d'un modèle statistique de celui-ci qui décrit la distribution de sa séquence de sortie à partir de la connaissance de 10 paramètres physiques. Le taux d'entropie ne peut en conséquence pas être trouvé uniquement à partir de la seule connaissance d'une séquence de sortie du TRNG, aussi importante soit-elle. Par approximation de cette distribution par une source ergodique stationnaire, il est 15 possible de trouver le taux d'entropie d'un TRNG. Une source de caractère aléatoire couramment utilisée dans les mises en oeuvre de TRNG par composant logique programmable, que ce soit par matrice prédif fusée programmable par l'utilisateur (Field Programmable Gate 20 Array ou en abrégé FPGA) ou par circuit intégré spécifique (Application Specific Integrated Circuit ou en abrégé ASIC), est l'instabilité du temps de propagation des signaux à travers les portes logiques. Cette instabilité est typiquement accumulée dans des oscillateurs en anneau, 25 qui consistent en une série d'inverseurs ou d'éléments de retard connectés en anneau, dont le signal boucle sur lui-même. Un tel oscillateur en anneau produit spontanément un signal presque périodique. Deux oscillateurs en anneau implémentés sur le 30 même circuit logique programmable vont avoir tendance à se déphaser du fait d'un phénomène appelé gigue de phase (« phase jitter » en anglais). La loi décrivant ce déphasage (au moins sur des temps de l'ordre de la milliseconde) est une marche aléatoire qui permet de fabriquer la distribution qui sera utilisée pour produire des nombres aléatoires. Cette gigue de phase peut être extraite par une 5 unité d'échantillonnage. On peut par exemple utiliser la sortie d'un premier oscillateur en anneau pour déterminer les instants d'échantillonnage, par exemple par l'intermédiaire d'une bascule D, de la sortie d'un second oscillateur en anneau, 10 sur le même circuit que le premier oscillateur en anneau. La fréquence de l'oscillateur en anneau d'échantillonnage (premier oscillateur en anneau) peut facultativement être divisée d'un facteur KD. Le facteur KD permet de déterminer l'intervalle de temps nécessaire pour 15 accumuler suffisamment de gigue de phase. Cette structure simple est appelée dans ce qui suit un TRNG élémentaire. La gigue de phase est un phénomène complexe en ce qu'elle est constituée par la superposition de différentes 20 sources de bruit. On distingue la composante locale de la gigue de phase, elle-même constituée d'une combinaison de différents types de bruits avec différentes propriétés statistiques et correspondant à la source d'entropie du TRNG, des bruits déterministes globaux qui peuvent être 25 manipulés depuis l'extérieur du TRNG. Dans le document « Sur la sécurité des générateurs de nombres aléatoires à base d'oscillateurs » (On the security of oscillator-based random number generators), M. Baudet et al., Journal of Cryptology, 30 24 :398-425, 2011, il est proposé un modèle statistique pour un TRNG élémentaire qui calcule le taux d'entropie provenant du bruit de phase de marche aléatoire. Une manière habituelle de caractériser la gigue de phase est d'émettre en sortie le signal produit par un oscillateur en anneau et de l'analyser avec un oscilloscope ou avec un analyseur de spectre, cette technique étant 5 décrite par exemple dans « Mesures de temporisation numérique : des oscilloscopes et sondes à la temporisation et à la gigue » (Digital Timing Measurements : From Scopes and Probes to Timing and Jitter), W. Maichen, Frontières en test électronique (Frontiers in Electronic Testing), 10 Springer, 2010. Le problème avec cette technique est qu'elle introduit une gigue de phase supplémentaire ainsi que des distorsions sur le signal mesuré issu de la chaîne d'acquisition de données. En outre, cette technique ne 15 permet pas de qualifier chaque puce comportant un TRNG sur une ligne de production et ne permet pas de vérifier correctement le fonctionnement du dispositif. La présente invention vise à surmonter les inconvénients de l'état antérieur de la technique, en 20 proposant un procédé de contrôle de la variance de la gigue de phase au sein d'un circuit logique programmable, le procédé n'utilisant que des opérations simples et ne nécessitant aucun calcul complexe. Avec le procédé de l'invention, on peut 25 s'affranchir du calcul complexe de la distribution de probabilité de la gigue de phase en contrôlant, par rapport à une valeur de référence déterminée, la valeur de la variance de cette gigue de phase, et facultativement en remontant une alarme voire en arrêtant le traitement si la 30 valeur de la variance de la gigue de phase devient inférieure à la valeur de référence. On dispose ainsi d'un procédé simple pour garantir que le TRNG ne fonctionne que lorsque la variance de sa gigue de phase est suffisamment importante, donc lorsque son entropie est suffisante, sans avoir besoin de calculer pratiquement la valeur de la distribution de probabilité de la gigue de phase. En outre, le procédé est mis en oeuvre directement dans le circuit logique programmable, ce qui permet de s'affranchir des outils de mesure externes et d'une évaluation en ligne de l'entropie par l'intermédiaire du contrôle de la valeur de la variance de la gigue de phase. L'invention a donc pour objet un procédé de calcul de la variance de la gigue de phase dans un générateur de nombres vraiment aléatoires (TRNG), mis en oeuvre sur un circuit logique programmable, caractérisé par le fait qu'il comprend les étapes consistant à : générer, dans le circuit logique programmable, une séquence binaire [bl, bn] de n bits, n étant un entier naturel supérieur à 1, en sortie d'une bascule D ayant en entrée la sortie d'un premier oscillateur en anneau 01 de période moyenne T1 et en signal d'horloge la sortie d'un deuxième oscillateur en anneau 02 de période moyenne T2 choisir deux entiers naturels M et N tels que 21\IM La variance peut donc être simplement obtenue dans le circuit logique programmable, sans nécessiter de calculs complexes. Selon un mode de réalisation, un diviseur de 5 fréquence de facteur de division KD est disposé entre la sortie du deuxième oscillateur en anneau 02 et l'entrée de signal d'horloge de la bascule D. KD est lié à la variance de la gigue de phase du TRNG et au taux d'entropie minimal souhaité du TRNG par la 10 formule (1) ci-dessous : - Ill 2 v/(1 - //min) ln( 2)) (1) OÙ Hinin est le taux d'entropie minimal souhaité du TRNG, T1 et T2 sont les périodes des oscillateurs 01 et 02, et o2c/T21 représente la variance de la gigue de phase du TRNG. On peut ainsi se servir de KD pour obtenir un 15 taux d'entropie minimal souhaité. La norme AIS 31 (décrite dans le document « [AIS31] : Functionality classes and evaluation methodology for physical random number genera tors » ([AIS31} : classes de fonctionnalité et méthodologie 20 d'évaluation pour des générateurs de nombres aléatoires), Référence : AIS31 version 1 du 25/09/2001, Bundesamt für Sicherheit in der Informationsstechnik) stipule en particulier que le taux d'entropie minimal doit être de 0,997. Avec la formule (1) ci-dessus, on peut donc aisément 25 calculer, la variance du composant logique programmable étant fixée, la valeur de KD à choisir pour obtenir le taux d'entropie minimal souhaité. Selon un mode de réalisation, la valeur Kr= 1(n-M)/NJ est une puissance de 2. Ainsi, les calculs de Vo sont rendus plus simples sur le composant logique programmable : la division par K est obtenue par un décalage de log2(K) bits, les additions sont réalisées par additionneur, les élévations au carré par multiplieur. L'invention a également pour objet un procédé de contrôle de la gigue de phase dans un générateur de nombres vraiment aléatoires (TRNG), mis en oeuvre sur un circuit logique programmable, caractérisé par le fait qu'il comprend le calcul de la variance de la gigue de phase selon le procédé décrit ci-dessus, la comparaison de la valeur calculée de la gigue de phase à un valeur de référence, et facultativement l'émission d'un signal d'alarme si la valeur de la gigue de phase est inférieure à une valeur de référence. On peut ainsi facilement s'assurer, par un calcul simple ne nécessitant aucun algorithme de tri comme dans le cas d'un calcul du taux d'entropie, que la variance de la gigue de phase a une valeur acceptable, en remontant facultativement une alarme si la valeur calculée est inférieure à une valeur de référence. La valeur de référence peut être déterminée par étalonnage à l'aide de la formule (1), avec KD et le taux d'entropie minimal fixés. L'invention a également pour objet un circuit logique programmable, caractérisé par le fait qu'il comprend des circuits programmés pour mettre en oeuvre un procédé tel que décrit ci-dessus. Ledit circuit logique programmable peut être une 30 matrice prédiffusée programmable par l'utilisateur (FPGA) ou par circuit intégré spécifique (ASIC). Pour mieux illustrer l'objet de la présente invention, on va maintenant en décrire un mode de réalisation particulier, en référence aux dessins annexés. Sur ces dessins : - La Figure 1 est un schéma d'un exemple d'implémentation d'un TRNG à base d'oscillateurs en anneau dont le taux d'entropie est évalué de manière concurrente à son fonctionnement ; et - la Figure 2 est un schéma d'une implémentation du procédé selon l'invention. Les Figures 1 et 2 présentent un exemple de mise en oeuvre du procédé de calcul selon l'invention. La Figure 1 représente un exemple d'implémentation d'un TRNG à base d'oscillateurs en anneau, le taux d'entropie du TRNG étant évalué de manière concurrente à son fonctionnement. Le TRNG se compose du bloc classique constitué d'un couple d'oscillateurs Oscl et Osc2 en anneau, la sortie de l'oscillateur Osc2 étant tout d'abord divisée par un facteur K _D par un diviseur de fréquence Divl, la sortie du diviseur de fréquence Divl étant utilisée pour échantillonner l'oscillateur Oscl par l'intermédiaire de la bascule D Basl, la sortie de la bascule D Basl constituant la sortie du TRNG. Par ailleurs, l'oscillateur Osc2 échantillonne également l'oscillateur Oscl par l'intermédiaire d'une bascule D Bas2, la fréquence du signal de Osc2 n'étant pas 30 divisée au préalable pour cet échantillonnage. Le bit issu de ce second échantillonnage au temps i est alors comparé par une porte XOR au bit produit au temps i-M qui est stocké dans un registre à décalage Regl ayant M étages. La sortie de la porte XOR est mise en entrée d'un compteur Cptl, dont l'entrée d'horloge est commandée par le signal d'Osc2 et dont l'entrée de réinitialisation est commandée par une version divisée en fréquence d'un facteur N par le diviseur de fréquence Div2. La sortie du compteur Cptl est alors N fois la probabilité c[i] (le facteur N n'est pas un problème dans la mesure où toutes les formules sont homogènes), correspondant au nombre de bits différents entre deux séquences de bits [bN.i+i, bwri+N_1] et [bw,i+1+14, bN*i+N-11-m] espacées de M bits. La Figure 2 représente une implémentation du 15 calcul mis en oeuvre dans le procédé. Le bloc prend en entrée la sortie de la Figure 2, à savoir les Nc[i]. On a successivement : 0A= E N c[i] OC = (Nc[i])^2 20 OB = (E N c[1])^2 OD = E (Nc[i])^2 OE = N^2 (1/K E c[i]^2 - (1/K E c[i])^2), qui est la sortie du bloc et est proportionnel à Vo. On peut se servir de OE soit pour calculer le 25 taux d'entropie du TRNG, soit pour remonter une alarme au cas où ce taux d'entropie serait en dessous d'une valeur fixée. Le procédé de calcul de variance de gigue de phase de l'invention a été évalué par simulation. 30 Un flux binaire représentant une gigue de phase dans un TRNG mis en oeuvre sur un composant logique programmable a été généré de manière logicielle. Le fichier de flux binaire a ensuite été utilisé en tant qu'entrée d'évaluations mathématiques pour calculer une fonction de densité de probabilité de la gigue de phase correspondante, la longueur de la séquence binaire étant de 197780 bits, et correspondait à un oscillateur en anneau 01 de période T1=9050 ps et un oscillateur en anneau 02 de période T2=9100 ps. L'écart-type de cette fonction de densité de probabilité a été calculé de manière mathématique, et a été 10 comparé à l'écart-type calculé à partir du procédé de calcul de variance de gigue de phase de l'invention. Le Tableau 1 ci-dessous indique l'écart-type réel et l'écart type correspondant calculé, pour différentes valeurs de l'écart-type réel : 15 Ecart-type réel % erreur par rapport à écart- type calculé ps 2% ps 3% ps 5% Tableau 1 REVENDICATIONS1 - Procédé de calcul de la variance de la gigue de phase dans un générateur de nombres vraiment aléatoires (TRNG), mis en oeuvre sur un circuit logique programmable, caractérisé par le fait qu'il comprend les étapes consistant à : - générer, dans le circuit logique programmable, une séquence binaire [bl, -, bn] de n bits, n étant un entier naturel supérieur à 1, en sortie d'une bascule D ayant en entrée la sortie d'un premier oscillateur en anneau 01 de période moyenne T1 et en signal d'horloge la sortie d'un deuxième oscillateur en anneau 02 de période moyenne T2 ; - choisir deux entiers naturels M et N tels que 21\IM 2 - Procédé selon la revendication 1, caractérisé par le fait qu'un diviseur de fréquence de facteur de division KD est disposé entre la sortie du deuxième oscillateur en anneau 02 et l'entrée de signal d'horloge de la bascule D. 3 - Procédé selon la revendication 1 ou la revendication 2, caractérisé par le fait que la valeur K=I(n-M)/N1 est une puissance de 2. 4 - Procédé de contrôle de la gigue de phase dans un générateur de nombres vraiment aléatoires (TRNG), mis en oeuvre sur un circuit logique programmable, caractérisé par 5 le fait qu'il comprend le calcul de la variance de la gigue de phase selon le procédé de l'une quelconque des revendications 1 à 3, la comparaison de la valeur calculée de la gigue de phase à un valeur de référence, et facultativement l'émission d'un signal d'alarme si la 10 valeur de la gigue de phase est inférieure à une valeur de référence. - Circuit logique programmable, caractérisé par le fait qu'il comprend des circuits programmés pour mettre en oeuvre un procédé selon l'une quelconque des 15 revendications 1 à 4. 6 - Circuit logique programmable selon la revendication 5, caractérisé par le fait que ledit circuit logique programmable est une matrice prédif fusée programmable par l'utilisateur (FPGA) ou par circuit 20 intégré spécifique (ASIC).