Les générateurs
de nombres aléatoires
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
S'identifier avec un challenge
- Création du challenge avec le générateur aléatoire : il est unique dans l'univers.
- Envoi du challenge à Bob.
- Bob chiffre le challenge avec sa clé privé. Il est le seul dans l'univers à pouvoir le faire.
- Alice reçoit le challenge chiffré par Bob.
- Alice déchiffre ce qu'il a reçu avec la clé publique de Bob.
- 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.
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 !