Cybersécurité

Cryptographie à clé publique et SSL

Cryptographie à clé publique et SSL

Le cryptage à clé publique, également appelé cryptage asymétrique, utilise deux clés distinctes au lieu d’une clé partagée : une clé publique et une clé privée. Le cryptage à clé publique est une technologie importante pour la sécurité sur Internet.

Qu’est-ce que le cryptage à clé publique ?

Le cryptage à clé publique, ou cryptographie à clé publique, est une méthode de cryptage des données avec deux clés différentes et de mise à disposition de l’une des clés, la clé publique, pour que chacun puisse l’utiliser. L’autre clé est connue sous le nom de clé privée. Les données cryptées avec la clé publique ne peuvent être décryptées qu’avec la clé privée, et les données cryptées avec la clé privée ne peuvent être décryptées qu’avec la clé publique. Le cryptage à clé publique est également connu sous le nom de cryptage asymétrique. Il est largement utilisé, en particulier pour le TLS/SSL, qui rend possible le HTTPS.

Qu’est-ce qu’une clé cryptographique ?

En cryptographie, une clé est un élément d’information utilisé pour brouiller les données de manière à ce qu’elles apparaissent aléatoires ; il s’agit souvent d’un grand nombre, ou d’une chaîne de chiffres et de lettres. Lorsque des données non cryptées, également appelées texte en clair, sont introduites dans un algorithme de cryptage à l’aide de la clé, le texte en clair ressort de l’autre côté sous la forme de données d’apparence aléatoire. Cependant, toute personne possédant la bonne clé pour décrypter les données peut les remettre sous forme de texte en clair.

Par exemple, supposons que nous prenions un message en texte clair, « hello », et que nous le chiffrions avec une clé* ; disons que la clé est « 2jd8932kd8 ». Chiffré avec cette clé, notre simple « bonjour » se lit maintenant « X5xJCSycg14= », ce qui ressemble à des données aléatoires de la poubelle. Cependant, en le décryptant avec cette même clé, nous récupérons « hello ».

Plaintext + clé = texte chiffré :

hello + 2jd8932kd8 = X5xJCSycg14=

Texte chiffré + clé = texte en clair :

X5xJCSycg14= + 2jd8932kd8 = bonjour

(Il s’agit d’un exemple de cryptage symétrique, dans lequel une seule clé est utilisée).

*Utilisant l’algorithme Blowfish, le mode CBC, l’encodage Base64.

Comment fonctionne le cryptage à clé publique ?

La cryptographie à clé publique peut sembler complexe pour les non-initiés ; heureusement, un écrivain du nom de Panayotis a Vryonis trouvé une analogie qui se présente à peu près comme suit.

Imaginez une malle avec une serrure que deux personnes, Bob et Alice, utilisent pour expédier des documents dans les deux sens. Une serrure typique n’a que deux états : verrouillé et déverrouillé. Quiconque possède un double de la clé peut déverrouiller le coffre s’il est verrouillé, et vice versa. Lorsque Bob verrouille le coffre et l’envoie à Alice, il sait qu’Alice peut utiliser son double de la clé pour déverrouiller le coffre. C’est essentiellement ainsi que fonctionne ce que l’on appelle la cryptographie symétrique : une clé secrète est utilisée à la fois pour le cryptage et le décryptage, et les deux parties d’une conversation utilisent la même clé.

Imaginez plutôt que Bob fabrique un coffre avec une serrure d’un type particulier. Cette serrure a trois états au lieu de deux :

  • Verrouillé, clé tournée à fond vers la gauche
  • Déverrouillé, au milieu.
  • Verrouillé, clé tournée à fond à droite.

Au lieu d’une clé, deux clés vont avec cette serrure :

  • La clé n°1 ne peut tourner qu’à gauche
  • La clé n°2 ne peut tourner que vers la droite

Cela signifie que si le coffre est verrouillé et que la clé est tournée en position A, seule la clé n° 2 peut le déverrouiller en tournant à droite, en position B (déverrouillé). Si le coffre est verrouillé en position C, seule la clé n° 1 peut le déverrouiller en tournant la serrure à gauche, en position B.

En d’autres termes, chaque clé peut verrouiller le coffre, mais une fois qu’il est verrouillé, seule l’autre clé peut le déverrouiller.

Supposons maintenant que Bob fasse quelques dizaines de copies de la clé n°2, la clé qui ne tourne qu’à droite, et qu’il les partage avec tous ceux qu’il connaît et tous ceux qui en veulent une copie, en en faisant sa clé publique. Il garde la clé n°1 pour lui – c’est sa clé privée. Qu’est-ce que cela permet d’accomplir ?

  1. Alice peut envoyer à Bob des données confidentielles via le coffre et être sûre que seul Bob peut les déverrouiller. Une fois qu’Alice a verrouillé le coffre avec la clé publique, qui tourne de gauche à droite, seule une clé qui peut tourner de droite à gauche peut le déverrouiller. Cela signifie que seule la clé privée de Bob peut le déverrouiller.
  2. Alice peut être sûre que la malle vient bien de Bob, et non d’un imitateur, si elle est fermée avec sa clé privée. Une seule clé peut verrouiller le coffre de sorte que la serrure soit en position A, ou tournée complètement à gauche : La clé privée de Bob. Il est vrai que n’importe qui peut la déverrouiller avec la clé publique en tournant la clé vers la droite, mais il est garanti que le coffre est de Bob.

Remplacez le tronc par des données en texte clair et les clés cryptographiques par les clés physiques à partir de cette analogie, et c’est ainsi que fonctionne la cryptographie à clé publique. Seul le propriétaire de la clé privée peut chiffrer les données de sorte que la clé publique les déchiffre ; pendant ce temps, n’importe qui peut chiffrer des données avec la clé publique, mais seul le propriétaire de la clé privée peut les déchiffrer.

Par conséquent, n’importe qui peut envoyer des données en toute sécurité au propriétaire de la clé privée. De plus, chacun peut vérifier que les données qu’il reçoit du propriétaire de la clé privée proviennent bien de cette source, et non d’un imitateur (voir Qu’est-ce qu’une man-in-the-middle attack?).

Comment TLS/SSL utilise-t-il le cryptage à clé publique ?

Le cryptage à clé publique est extrêmement utile pour établir des communications sécurisées sur l’internet (via HTTPS). Le certificat SSL/TLS d’un site web, qui est partagé publiquement, contient la clé publique, et la clé privée est installée sur l’origine server – elle est « détenue » par le site web.

Les poignées de main TLS utilisent la cryptographie à clé publique pour authentifier l’identité du serveur d’origine et pour échanger des données qui sont utilisées pour générer les clés de session. Un algorithme d’échange de clés, tel que RSA ou Diffie-Hellman, utilise la paire de clés publique-privée pour convenir des clés de session, qui sont utilisées pour le cryptage symétrique une fois que la poignée de main est terminée. Les clients et les serveurs peuvent convenir de nouvelles clés de session pour chaque session de communication, de sorte que les mauvais acteurs sont incapables de décrypter les communications même s’ils identifient ou volent l’une des clés de session.

Ecrire un commentaire