Les générateurs
de nombres aléatoires

Décembre 2022

Le plus souvent en sécurité, on a besoin d'un TRNG, un vrai générateur de nombres aléatoires et pas un pseudo où on pourrait copier le système ou connaitre à l'avance les nombres produits.

Générer une clé de chiffrement unique

Tu sais comment marchent les algorithmes de chiffrement ?
Ben oui, on chiffre un message avec une clé.
Tu peux réviser le chiffrement symétrique ou asymétrique si tu veux.
Dans tous les cas, on a besoin d'une clé de chiffrement.
Certes.
Et c'est quand même mieux d'avoir une clé secrète, que personne ne connait. Surtout s'il s'agit de ta clé RSA.
En principe. Où tu veux en venir ?
Comment sont créées ces clés de chiffrement ?
Je lance le logiciel qui va me créer ma clé.
Un logiciel. Pour créer une clé au hasard. Ah là là... 😬
Eh bien voilà, c'est là que ça se joue : il ne faudrait pas que tout le monde ait la même clé, ou même qu'il existe une probabilité non négligeable de créer une clé déjà existante.
Et donc on a besoin de vrai hasard à ce moment-là.

S'identifier avec un challenge

Mais ce n'est pas le pire.
Lors de n'importe quelle transaction où on veut prouver son identité, et bien on a besoin de hasard pour éviter le re-jeu.
Ah ! 😮 Quelqu'un pourrait écouter, et donner les bonnes réponses aux questions si ce sont toujours les mêmes...
C'est cela même. Genre "nom de votre premier chien ? "
Les gens de la sécurité ont l'habitude de donner des noms de gens aux machines, c'est toujours Alice et Bob qui s'échangent des messages.
Comment fait Bob pour prouver à Alice qu'il est bien Bob ?
😀 J'ai bien suivi les cours, c'est du même tonneau que les histoires de signature et de sceaux.
Alice envoie un message que Bob va chiffrer avec sa clé secrète -que lui seul possède.
C'est bien. On appelle ce message un challenge.
Pour rappel, il existe cependant des chausse-trappes, comme le problème de l'homme au milieu (man in the middle).
Mais ce mécanisme de challenge marche bien si on est sûr de la connexion, qui peut être publique.
🤔 Eh ! Mais on a le même problème de re-jeu si jamais le challenge est toujours le même !
Effectivement.
Il faut absolument qu'Alice possède un vrai générateur de nombres aléatoires pour créer son challenge.
Comme ça on est sûr qu'on ne pourra pas rejouer l'authentification.
  1. Création du challenge avec le générateur aléatoire : il est unique dans l'univers.
  2. Envoi du challenge à Bob.
  3. Bob chiffre le challenge avec sa clé privé. Il est le seul dans l'univers à pouvoir le faire.
  4. Alice reçoit le challenge chiffré par Bob.
  5. Alice déchiffre ce qu'il a reçu avec la clé publique de Bob.
  6. Alice compare le résultat du déchiffrement avec le challenge envoyé: ce sera identique uniquement si le chiffrement a eu lieu avec la clé privée de Bob.

Eve, la méchante, peut écouter et enregistrer tout ce qu'elle veut. Ça ne lui servira à rien, car la prochaine fois, un nouveau challenge sera généré, il ne sert qu'une seule fois, empêchant tout re-jeu.

Et, dis-donc, t'as chiffré avec la clé privée. Normalement elle sert à déchiffrer.
T'as raison, mais ça marche aussi dans ce sens-là.
Eve peut aussi déchiffrer le challenge, mais pour en faire quoi ? Il ne sert qu'une seule fois !
Les paranoïaques ajouteront une couche de chiffrement en plus pour être peinards, histoire qu'Eve ne sache même pas ce qui se trame.

On peut faire des choses plus compliquées, bien sûr, vu que souvent il faut également faire la preuve d'identité en sens inverse.

Par exemple, lorsque vous insérez votre carte bancaire dans un terminal de paiement, il est recommandé de répondre à ces questions :

  • [carte bancaire] eh dis-donc, toi, est-ce que tu es un vrai terminal dûment accrédité ?
  • [terminal de paiement] et toi alors, est-ce que tu es une vraie carte ?

Carte de préférence pas volée, mais là, le terminal s'adressera à la banque pour voir si la carte n'est pas en liste noire, c'est pour ça qu'il faut attendre un peu après avoir entré le code PIN à 4 chiffres. Mais bon, cette vérification ne se fait pas toujours car il faut être connecté, et que le montant vaille le coup.

Dès qu'un humain est mis dans la boucle d'authentification, cela complique singulièrement les choses, vu leur faible fiabilité. Des protocoles ad-hoc sont alors proposés, comme de la biométrie, ma vraie spécialité.

Autres utilisations d'un TRNG

Il existe d'autres cas où des nombres aléatoires sont bien utiles.

Par exemple, on aime bien ajouter "du sel", une série de bits aléatoires, pas secrets, pour effectuer du chiffrement. Ceci permet de ne pas obtenir un message chiffré identique lorsque vous envoyez deux fois le même message, car le résultat chiffré sera différent à cause de ces bits aléatoires rajoutés (vous ne l'avez pas salé à chaque fois de la même manière, il n'aura pas le même goût).

L'intérêt est qu'Eve (l'attaquante) ne pourra pas en déduire une information.

Imaginez qu'à chaque fois que vous envoyez un ordre pour tirer un missile, vous utilisiez exactement le même message : et bien Eve finira par faire le lien entre le message chiffré, incompréhensible mais à chaque fois identique, et le missile qu'elle reçoit sur la tronche...


Normalement, vous devriez être à présent convaincu que nous avons besoin de vrai hasard en sécurité.

Il nous faut donc voir comment on peut créer ce vrai hasard de manière pratique. On sait déjà qu'il ne faut pas utiliser un algorithme informatique !