À qui fait-on confiance ?

Une clé publique, mais à qui appartient-elle ?

La cryptographie à clé publique résout l'échange de clés, mais laisse une question entière : cette clé publique, à qui appartient-elle vraiment ?

Le problème

Tu veux joindre ta banque. Un serveur te répond et t'envoie une clé publique en affirmant être la banque.

Alice  <---- K_pub ----  ???     (mais a qui appartient K_pub ?)

Tu peux chiffrer avec cette clé, et seul son détenteur pourra lire. Mais rien n'indique que ce détenteur est ta banque. Une clé publique est une suite de nombres : elle ne porte aucune identité.

C'est l'attaque de l'homme du milieu, transposée. Et elle ne se résout par aucun calcul supplémentaire : aucune propriété mathématique ne relie des nombres à une organisation du monde réel.

Les pistes qui échouent

Se rencontrer fonctionne parfaitement, et c'est ce que font les messageries avec leurs empreintes à comparer. Mais rencontrer chaque site que tu visites est évidemment impraticable.

Un annuaire mondial déplace le problème : comment sais-tu que tu consultes le vrai annuaire ?

Faire confiance à la première clé vue est la solution retenue par SSH, sous le nom de TOFU (Trust On First Use). Le premier contact reste vulnérable, mais tout changement ultérieur déclenche une alerte.

La solution du web

Le web a choisi une autre voie : déléguer la vérification à un petit nombre d'organisations, les autorités de certification.

Tu ne connais pas ta banque, mais ton système connaît une centaine d'autorités. Si l'une d'elles atteste que cette clé appartient bien à ta banque, tu l'acceptes.

La confiance n'est pas créée — elle est déplacée vers ces autorités. Toute la question devient : que valent-elles ?