Guide d'autodéfense numérique

Reprenons l'exemple d'Alice qui souhaite recevoir un message chiffré de la part de Betty, en présence d'une adversaire Carole qui peut avoir accès aux messages échangés :

  • Alice commence par envoyer sa clé publique à Betty. Carole peut la lire.
  • Betty chiffre son message avec la clé publique qu'elle a reçue, puis l'envoie à Alice.
  • Carole qui ne possède pas la clé privée d'Alice, mais seulement sa clé publique, ne peut pas déchiffrer le message.
  • Alice elle, peut déchiffrer le message à l'aide de la clé privée qu'elle garde précieusement.

Cependant si Carole est en mesure de modifier les échanges entre Alice et Betty, les choses se corsent :

  • Lorsqu'Alice envoie sa clé publique à Betty, Carole l'intercepte et renvoie à Betty, en lieu et place de celle d'Alice, une clé publique dont elle détient la clé privée correspondante.

  • Betty chiffre son message avec la clé publique qu'elle a reçue, puis l'envoie à Alice. Mais la clé qu'elle a reçue appartenait à Carole : elle l'a substituée à celle d'Alice.

  • Carole intercepte à nouveau le message. Mais cette fois, il est chiffré avec sa clé publique, dont elle a la clé privée. Elle peut donc déchiffrer le message pour le lire et éventuellement le modifier. Puis elle chiffre à nouveau le message avec la véritable clé publique d'Alice, avant de l'envoyer à Alice.

  • Alice peut alors déchiffrer le message avec sa clé privée, sans se rendre compte de rien.

Ainsi, Betty est persuadée d'utiliser la clé d'Alice, alors qu'elle utilise en réalité celle de Carole. De la même manière, Carole peut usurper la clé publique de Betty et falsifier la signature du message transmis par Betty à Alice. Alice recevra un message chiffré et dûment signé... par Carole.

On appelle cette attaque l'attaque de l'homme du milieu (Man in the Middle attack, ou MitM, en anglais)1. Dans notre exemple, Carole était l'« homme du milieu », capable de lire et de modifier la communication chiffrée en se faisant passer, aux yeux de chaque partie de la communication, pour l'autre.

Un adversaire peut se positionner en homme du milieu par différent biais.

Le fournisseur d'accès à Internet est par exemple particulièrement bien placé, car tout le trafic passera obligatoirement par lui. De même un gros nœud du réseau par lequel passe une quantité importante du trafic sera en bonne mesure de mettre en place cette attaque2. Enfin un adversaire ayant accès au réseau local que vous utilisez pourra toujours faire transiter le trafic réseau par son ordinateur utilisant pour cela des techniques plus spécifiques3.

Pour se prémunir contre cette attaque, il faut que Betty ait une façon de vérifier que la clé publique qu'elle utilise est bien celle d'Alice. Si la clé publique n'est pas une information confidentielle, il faut donc toutefois s'assurer de son authenticité avant de l'utiliser.

Parfois, la façon la plus simple, pour Betty, est de rencontrer Alice afin de vérifier que la clé publique dont elle dispose est bien la sienne. Peu importe que Carole soit présente au moment de cette rencontre : seule une vérification de clé publique aura lieu, et aucun secret ne va être échangé (à part que Betty et Alice souhaitent communiquer, mais ça, vu sa position, Carole peut le savoir d'autres façons). Une fois cette vérification faite, du chiffrement de bout-à-bout pourra être mis en place entre Alice et Betty. Le chiffrement est dit de bout-à-bout lorsqu'il a lieu entre la source et la destinataire d'une communication électronique, et cela sans interruption. Le chiffrement a lieu dans l'ordinateur d'Alice et le déchiffrement dans celui de Betty. Entre les deux, un message dont le contenu sera chiffré circulera ; seul l'en-tête de la communication, que ce soit une requête HTTP ou un email, circulera en clair.

Cependant, il arrive souvent que Betty ne puisse pas rencontrer Alice – a fortiori si elle ne la connaît pas : si elle rencontre une personne qui se présente comme étant Alice, Betty ne peut pas être sûre qu'il s'agit bien d'Alice. Or, c'est généralement le cas lorsqu'on veut chiffrer ses connexions vers un site web : on ne connaît pas les personnes qui sont derrière.