Les générateurs
de nombres aléatoires
Il existe carrément des myriades de propositions afin de réaliser vrai générateur de nombres aléatoires, un TRNG pour True Random Number Generator, mais toutes suivent le même schéma général (ouf !).
Structure de base
Un générateur de nombres aléatoires est toujours constitué de :
- D'une source d'entropie: c'est le phénomène physique exploité. Par exemple, une source radioactive (plutonium).
- D'un extracteur d'entropie, qui va transformer le phénomène physique en électrons, autrement dit en signal électrique la plupart du temps analogique. Par exemple un compteur Geiger qui va produire des "clicks".
- D'un échantillonneur qui transforme le signal électrique en signal binaire. Par exemple un convertisseur analogique-numérique suivi d'un chronomètre qui donnera le temps écoulé depuis le click précédent en binaire.
- D'un correcteur d'entropie qui va "normaliser" le signal binaire, afin que la distribution de zéros et de uns soit 50/50.
L'entropie est une notion thermodynamique qui a été créée pour manipuler mathématiquement la notion de désordre.
Si vous laissez un ado seul à gérer sa chambre, et bien au bout d'un moment, c'est le bordel, un désordre infâme
(sauf si vous avez un ado bien élevé).
On constate que naturellement, si on laisse faire "la nature",
le désordre a tendance à s'installer.
Si vous voulez ranger, il faut injecter de l'énergie, généralement les parents...
C'est la même chose avec un paquet de molécules d'oxygène
que vous avez dans un flacon, et un paquet de molécules d'azote,
par exemple le même nombre, dans un second flacon.
Si vous reliez les deux flacons, et bien,
sans rien faire la magie est là les molécules vont se mélanger,
et vous serez incapable de récupérer d'un côté l'oxygène
et de l'autre l'azote sans dépenser de l'énergie.
On dit que l'entropie a augmentée.
Pareil si c'est un paquet de molécules qui vont à petite vitesse, et un autre paquet de molécules à grande vitesse. Une fois mises ensemble, et bien toutes iront à vitesse moyenne en se mélangeant, et sans rien faire de spécial. On appelle ça la température. Si on veut les séparer de nouveau, il faudra une pompe à chaleur, un truc bien à la mode ces dernières années, et de l'énergie.
L'entropie d'un système augmente toujours, c'est un constat.
C'est lié à la statistique : il "suffit " de compter le nombre d'états possibles et on se rend compte du nombre astronomique d'états où la situation est désordonnée, et de la rareté d'états où "c'est bien rangé ". Nous avons donc simplement nettement plus de chances de tomber sur un état désordonné. C'est comme perdre au loto.
Si l'entropie est élevée, le désordre est élevé, et donc on peut s'en servir pour extraire de l'aléa. C'est pour ça que les gens parlent de sources d'entropie, en ajoutant "maximum" pour renforcer l'effet de manche.
Voilà, maintenant vous pouvez faire le cake en parlant d'entropie. Ce que je viens de faire.
D'une manière un peu évidente, on s'attend à obtenir en sortie d'un tel système une suite de zéros et de uns, dont la distribution vaut 50/50, et qu'il soit impossible de prédire la valeur.
Mais ce n'est pas tout. C'est même assez compliqué en fait.
Qualités attendues d'un TRNG
Je vais vous lister les qualités requises en plus des évidences ci-après, probablement pas exhaustivement, mais ce sera déjà assez casse-pied car certaines seront difficiles à appréhender si vous n'êtes pas dans l'électronique.
IMPORTANT
Un problème de fond se pose : on veut un générateur de nombres aléatoires qui soit quasiment inattaquable comme la puce d'une carte bancaire.
Cela implique qu'il vaut mieux le mettre avec le processeur qui va appliquer le processus de sécurité, car si le TRNG est à l'extérieur, la transmission des données posera un problème, un malandrin pourrait perturber ou remplacer le générateur —rien de plus facile de remplacer une chose qui produit de l'aléatoire par une autre.
Il faudra alors impérativement sécuriser la liaison, ce qui implique du chiffrement, et donc ... un processeur à mettre avec le TRNG qui soit protégé. Ça se mord la queue.
Conclusion : idéalement, il faudrait que le TRNG soit compatible des procédés de fabrication CMOS avec lequel le processeur sécurisé est fondu. Et ça, c'est compliqué à réaliser.
- Résistance contre les attaques
- Aucun moyen de réduire l'entropie sous une valeur minimale.
Autrement dit, même dans les pires conditions, la source d'entropie fonctionne suffisamment bien.
Trois cas de figures se présentent :
- Une preuve de robustesse existe contre toutes les attaques possibles (bonne chance ! )
- Aucune preuve ni aucune attaque n'existent (cas courant)
- Des attaques particulières sur un TRNG particulier sont reportées (par exemple en modifiant la température).
- Aucun moyen de réduire l'entropie sous une valeur minimale.
Autrement dit, même dans les pires conditions, la source d'entropie fonctionne suffisamment bien.
Trois cas de figures se présentent :
- Existence d'un modèle statistique (c'est déjà mieux que rien)
- Un modèle mathématique dit stochastique permet de définir des limites de fonctionnement entropique dépendant de :
- la source d'entropie
- l'extracteur d'entropie (les éléments qui permettent de transformer la physique en signal électrique)
- Un modèle mathématique dit stochastique permet de définir des limites de fonctionnement entropique dépendant de :
- Auto-test (testabilité interne) :
- les signaux binaires internes bruts doivent être disponibles
- et sans aucun élément pseudo-aléatoire
- idéalement on devrait aussi pouvoir tester le signal électrique issu de l'extracteur
- et sans que cela ne perturbe le fonctionnement
- Compatible avec la technologie CMOS employée pour le processeur
- Idéalement, implémentation entièrement automatisée, simple et peu de contraintes
- Sinon peu d'interventions manuelles, et pas besoin de refaire si on reste dans la même famille technologique
- Consommation électrique :
- Possibilité d'arrêter le générateur
- La plus faible possible (dépendra probablement du principe et de la fréquence d'horloge)
- Faible coût = minimiser la surface de silicium utilisée par le TRNG :
- pas/peu d'énormes blocs analogiques
- le moins de portes logiques possibles
- ... et éviter les interférences avec le reste du circuit.
- Vitesse :
- Un débit suffisant pour l'application, régulier
- Sinon possibilité de paralléliser
Et il doit y en avoir d'autres, mais rien que ceux-là occuperont un concepteur un moment...
Pour aider à réaliser un bon TRNG, et aussi permettre à des laboratoires d'analyse de vérifier la bonne conformité, permettant ensuite de certifier, des tests et des normes ont été proposées.