Dans le chapitre précédent, nous avons vu comment Alice peut chiffrer un mot de passe avec la clé publique de Bob, puis l’envoyer par radio pour qu’il soit déchiffré avec la clé privée correspondante. Tant que la clé publique utilisée est la bonne, le système fonctionne : seul Bob peut lire le message.
Si l’on regarde maintenant notre solution de plus près, on remarque un point important :
- Alice ne connaît Bob qu’à travers un nom (par exemple « SERVEUR ») et une clé publique associée à ce nom ;
- dans le code, cette association « nom → clé publique » est simplement stockée dans une variable, un tableau ou un message qu’Alice reçoit ;
- À aucun moment Alice ne vérifie par elle-même que cette clé publique est bien celle de Bob : elle se contente de croire ce qui est écrit dans ce « certificat ».
Autrement dit, notre système chiffre correctement les messages, mais il repose entièrement sur l’hypothèse suivante : le certificat utilisé par Alice décrit honnêtement la clé publique de Bob.
Dans ce chapitre, nous allons introduire une troisième carte, Mallory, qui jouera le rôle d’une carte malveillante. Il n’essaiera pas de casser le chiffrement lui-même, mais de profiter de cette confiance accordée au certificat pour perturber la communication entre Alice et Bob.