• Aucun résultat trouvé

Résumé de la techniqueUn oscillateur basse-fréquence échantillonne un oscillateur haute-fréquence (accumulation du jitter)

L’article référencé [FMC85], est fondateur dans le domaine de la génération d’aléa dans les circuits numériques. Il présente la première implantation de TRNG dans un circuit électronique intégré, ainsi qu’une analyse mathématique très complète sur son fonctionnement. La technique proposée exploite la propriété d’accumulation du jitter dans le temps. L’architecture utilise une simple bascule D (flip-flop) qui échantillonne un signal jitté pour en extraire les nombres aléatoires. Ce sera dorénavant un des principes de base largement repris et améliorés par la communauté scientifique ultérieurement. Le principe de fonctionnement est décrit dans Fig. 1.8. Un signal haute

fréquence, généré grâce à un oscillateur embarqué de 8 MHz, est échantillonné par un signal basse fréquence ajustable grâce à des composants externes. La valeur échantillonnée dépend des variations temporelles accumulées sur le signal haute fréquence, ainsi que du jitter du signal basse fréquence.

Figure 1.8 – Principe de fonctionnement du TRNG proposé dans [FMC85]

Les auteurs proposent ensuite un modèle mathématique permettant de calculer la probabilité de connaitre un bit en ayant la connaissance de son précédent, et lient cette probabilité aux paramètres du jitter. Ce dernier est modélisé par une loi normale et quantifié par son écart-type. Les auteurs étudient également l’effet du rapport entre les deux fréquences sur l’apparition de motifs (patterns) dans la suite de séquences générées. Une modélisation stochastique plus complète de ce type de générateurs est présentée dans [BLMT11].

Une analyse mathématique approfondie des suites générées est proposée et révèle que l’im-perfection du rapport cyclique des signaux périodiques introduit nécessairement un biais dans les nombres aléatoires générés. Ceci est d’ailleurs un constat général pour tous les TRNG utilisant des signaux périodiques. Pour remédier à cela, les auteurs utilisent un filtre de parité qui corrige le biais au détriment d’un plus faible débit. Une autre solution proposée, plus coûteuse, consiste à utiliser un brouilleur (scrambler) qui réduit également les corrélation entre les bits. Les débits donnant de bonnes suites aléatoires sont de l’ordre du Kb par seconde.

18 ans plus tard, Tsoiet al. proposent une implantation de ce principe dans des cibles FPGA [TLL03]. Dans cette première version, le signal basse fréquence est généré à l’extérieur du FPGA, ce qui peut poser un problème de sécurité (un attaquant peut en prendre le contrôle). Pour remédier à cela, les auteurs proposent dans [TLL07] d’utiliser un oscillateur en anneau à inverseurs et un diviseur de fréquences à la place de l’oscillateur externe. D’après les auteurs, les données post-traitées par un filtre de parité passent les tests statistiques NIST SP 800-22 et DIEHARD avec un débit de 29 Kb/s.

Une autre variante de ce TRNG, implantée dans les familles FPGA de Xilinx, est proposée par Kwork et al. dans [KL06]. Elle utilise la DFS (Digital Frequency synthetiser) intégrée dans le

FPGA pour générer le signal haute fréquence. D’après les auteurs, en choisissant judicieusement les paramètres de multiplication (m = 31) et de division (d = 32), il est possible de maximiser le jitter. Cependant, la nature du jitter n’est pas discutée dans le papier. Dans [Val10], il est démontré que le jitter généré de cette manière est majoritairement déterministe. Le fait que les auteurs utilisent une fonction de hachage MD5 complexe et couteuse comme post-traitement semble aller dans le sens de ce constat.

Dans [BGL+03], Bucci et al. proposent une amélioration de cette famille de TRNG en ajoutant un réglage dynamique de la fréquence d’échantillonnage. L’objectif de ce réglage est de calibrer les fréquences des oscillateurs pour minimiser les corrélations et augmenter l’entropie en sortie du générateur. De plus, le signal basse fréquence est généré avec un oscillateur dont les caractéristiques de bruit ont été boostées en amplifiant une source de bruit. Cependant, cette source de bruit et la nature du jitter obtenu dans l’oscillateur ne sont pas caractérisés dans l’article. Les séquences gé-nérées passent les tests FIPS 140-2 sans post-traitement avec un débit de 10 Mbit/s (en technologie CMOS 180 nm). Ce générateur est exclusivement destiné à une implantation ASIC.

8. TRNG proposé par Bucci et al.

Résumé de la technique Détection du jitter relatif de deux oscillateurs ayant les mêmes caractéristiques

Dans [BGL+06], Bucci et al. présentent une nouvelle technique d’extraction du jitter qui est d’après les auteurs, sans mémoire (stateless), i.e. qu’elle produit des bits décorrélés. Le principe se base sur la détection de la course relative de deux oscillateurs ayant les même caractéristiques (comme le montre Fig. 1.9) qui sont réinitialisés à chaque fois qu’un bit aléatoire est généré. Les deux signaux oscillants sont générés à l’aide d’une chaine de délais et d’un commutateur qui permet aux signaux d’emprunter les mêmes branches afin de garantir deux fréquences égales. Le circuit de détection déclenche l’échantillonnage lorsque le jitter relatif accumulé des deux oscillateurs dépasse un certain seuil.

Figure 1.9 – Schéma équivalent du TRNG proposé dans [BGL+06]

du circuit, les auteurs prévoient un débit autour de 13 Mb/s. Cependant, aucune évaluation du principe n’est donnée dans le papier.

9. TRNG proposé par Kohlebrenner et al.

Résumé de la technique Échantillonnage cohérent entre deux oscillateurs ayant des fré-quences très proches

Cette architecture, proposée dans [KG04] reprend le même principe que celui de [FD02] mais offre une alternative à l’utilisation de la PLL. Kohlebrenner et al. proposent d’utiliser deux os-cillateurs ayant les mêmes caractéristiques afin de générer deux fréquences extrêmement proches. La résolution de balayage correspond alors à la différence entre les demi-périodes de ces deux oscillateurs. L’architecture proposée est décrite dans Fig. 1.10. Le signal s, de fréquence Fs, est échantillonné par le signal clk, de fréquence Fclk (avec Fs' Fclk). Le signal résultant est composé de longues suites de ’1’ suivi de longues suites de ’0’ avec de courtes suites aléatoires intercalés entre elles. L’aléa est capté en comptant ces bit durant une fenêtre de comptage donnée par le contrôleur, celle-ci doit être réglée en fonction de la différence entre les périodes des oscillateurs.

Figure 1.10 – Architecture du TRNG proposé dans [KG04]

Pour que la résolution de balayage soit la plus fine possible, les deux oscillateurs doivent avoir des fréquences extrêmement proches. Il s’agit de la principale difficulté concernant l’implantation de ce TRNG, en particulier dans les circuits FPGA. Il est généralement, difficile de générer des fréquences proches avec des éléments re-programmables à cause des différences de délais dues au placement/routage et variabilité des procédés de fabrications. Dans [KG04], les auteurs proposent de réaliser ces oscillateurs dans un FPGA Xilinx Virtex au sein d’un seul CLB (Configurable Logic

Block). D’après les auteurs, la variabilité de fréquence obtenue dans ce cas est de l’ordre de 7%. Les auteurs utilisent en sortie du générateur un post-traitement de type filtre de parité pour éliminer le biais statistique. Les suites générées ont été validées à l’aide de NIST SP 800-22 avec un débit de 295 Kb/s.

[FD02] (il ne nécessite pas de composant dédié), mais ne permet pas un contrôle aussi précis de la résolution de balayage. Par ailleurs, la mise en place de ce générateur n’est pas aisée car elle nécessite une phase de dimensionnement longue et impossible à automatiser. En effet, celle-ci est spécifique à chaque implantation (y compris au sein de la même famille/technologie). En particulier dans les FPGA, pour chaque carte, il faut tester différentes configuration de placement/routage jusqu’à obtenir une différence de fréquence satisfaisante. Évidemment, cela limite une potentielle utilisation industrielle tant que ce problème ne sera pas résolu.

Dans [VFA09], B. Valtchanov et al. proposent plusieurs implantations de ce TRNG en introdui-sant quelques modifications mineures (notamment l’utilisation de plusieurs instances du TRNG) et en essayant différentes sources d’horloges (oscillateurs en anneau à inverseurs, PLL et DFS) sur des cibles Actel (actuellement Microsemi) et Altera. Deux configurations utilisant des anneaux à inverseurs ont fourni des suites validées avec NIST SP 800-22 avec un débit de 2 Mb/s, elles ont néanmoins nécessité un placement/routage manuel. Par contre la configuration utilisant la PLL donne des performances similaires mais ne nécessite aucune intervention manuelle.