La cryptographie a cle publique (egalement appelee cryptographie asymetrique) est le fondement de SSL/TLS. Elle utilise une paire de cles mathematiquement liees — une publique, une privee — pour chiffrer les donnees, verifier les identites et etablir des connexions securisees. Chaque connexion HTTPS en depend.
Le concept de paire de cles
| Cle publique | Cle privee | |
|---|---|---|
| Qui la possede | Tout le monde (elle est dans le certificat) | Seul le proprietaire du serveur |
| Peut chiffrer | Oui | Oui |
| Peut dechiffrer | Uniquement ce que la cle privee a chiffre | Uniquement ce que la cle publique a chiffre |
| La partager ? | Oui — c’est le but | Jamais |
La magie : les donnees chiffrees avec la cle publique ne peuvent etre dechiffrees qu’avec la cle privee correspondante. Et vice versa. Les deux cles sont mathematiquement liees, mais on ne peut pas deduire la cle privee a partir de la cle publique.
Comment c’est utilise dans SSL/TLS
La cryptographie a cle publique remplit trois fonctions dans chaque connexion HTTPS :
1. Echange de cles — etablir un secret partage
Pendant le handshake TLS, le serveur et le navigateur doivent s’accorder sur une cle de session partagee pour chiffrer le trafic. Ils ne peuvent pas envoyer cette cle en clair — quelqu’un pourrait l’intercepter.
Solution : l’echange de cles Diffie-Hellman (specifiquement ECDHE dans le TLS moderne). Les deux parties contribuent des valeurs aleatoires, et les mathematiques leur permettent de calculer le meme secret partage sans jamais le transmettre. La cle privee du serveur signe sa contribution, prouvant l’identite du serveur.
2. Authentification — prouver l’identite
Le certificat SSL du serveur contient sa cle publique. Le certificat est signe par une Autorite de Certification. Pendant le handshake, le serveur prouve qu’il detient la cle privee correspondante. Cela prouve que le serveur est bien celui que le certificat indique.
Sans cette etape, n’importe qui pourrait pretendre etre google.com.
3. Signatures numeriques — prouver l’integrite des donnees
La cle privee peut creer une signature numerique — une preuve mathematique qu’une donnee specifique a ete signee par le detenteur de la cle et n’a pas ete modifiee. Les messages du handshake TLS sont signes pour empecher toute falsification.
Chiffrement symetrique vs asymetrique
| Asymetrique (cle publique) | Symetrique (cle de session) | |
|---|---|---|
| Cles | Deux (publique + privee) | Une (secret partage) |
| Vitesse | Lent (~1000x plus lent) | Rapide |
| Utilise pour | Echange de cles + authentification | Chiffrement des donnees reelles |
| Algorithmes | RSA, ECDSA, ECDHE | AES-GCM, ChaCha20 |
| Dans TLS | Uniquement pendant le handshake | Apres le handshake (tout le trafic) |
HTTPS utilise les deux : le chiffrement asymetrique pour le handshake (prouver l’identite, echanger les cles), puis le chiffrement symetrique pour le transfert de donnees reel (car il est beaucoup plus rapide).
Les algorithmes derriere SSL
RSA
Le plus ancien algorithme a cle publique encore en usage (1977). Base sur la difficulte de factoriser de grands nombres premiers. Utilise pour les signatures et l’echange de cles, bien que l’echange de cles RSA (sans Diffie-Hellman) ne fournisse pas de confidentialite persistante et ait ete retire de TLS 1.3.
ECDSA (Elliptic Curve Digital Signature Algorithm)
Algorithme de signature moderne utilisant les mathematiques des courbes elliptiques. Une cle ECC de 256 bits offre une securite equivalente a une cle RSA de 3072 bits — cles plus petites, signatures plus rapides. GetHTTPS utilise ECDSA P-256 par defaut.
ECDHE (Elliptic Curve Diffie-Hellman Ephemeral)
Le mecanisme d’echange de cles utilise dans le TLS moderne. “Ephemeral” signifie qu’une nouvelle paire de cles est generee pour chaque connexion — fournissant la confidentialite persistante. Utilise dans TLS 1.2 et 1.3.
AES-GCM
Le chiffrement symetrique utilise apres le handshake pour chiffrer le trafic reel. AES (Advanced Encryption Standard) avec GCM (Galois/Counter Mode) fournit a la fois le chiffrement et l’authentification. Accelere materiellement sur les CPU modernes via les instructions AES-NI.
Comment GetHTTPS utilise la cryptographie a cle publique
Lorsque vous utilisez GetHTTPS :
- Votre navigateur genere une paire de cles en utilisant la Web Crypto API — les memes primitives cryptographiques que TLS lui-meme utilise
- La cle publique est integree dans un CSR envoye a Let’s Encrypt
- La cle privee reste dans la memoire de votre navigateur — jamais transmise
- Let’s Encrypt signe la cle publique et renvoie votre certificat
- Vous telechargez le certificat (public) et la cle privee sur votre serveur
Le fait que la cle privee n’existe que dans la memoire du navigateur est la raison pour laquelle GetHTTPS est plus prive que les outils qui generent les cles sur un serveur distant.
Questions frequemment posees
Les ordinateurs quantiques peuvent-ils casser la cryptographie a cle publique ?
Les ordinateurs quantiques actuels ne le peuvent pas. Mais un ordinateur quantique suffisamment puissant executant l’algorithme de Shor pourrait casser RSA et ECC. L’industrie se prepare avec la cryptographie post-quantique — de nouveaux algorithmes (ML-KEM, ML-DSA) resistants aux attaques quantiques. TLS les adoptera en mode hybride (classique + post-quantique) sans changer le fonctionnement des certificats.
Pourquoi ne pas utiliser le chiffrement asymetrique pour tout ?
La vitesse. Les operations asymetriques sont environ 1000 fois plus lentes que les symetriques. Chiffrer une page web avec RSA serait d’une lenteur impraticable. Au lieu de cela, TLS n’utilise la cryptographie asymetrique que pour le handshake (~1ms), puis passe au symetrique (AES) pour les donnees — qui s’execute a la vitesse du materiel.
Une cle ECC de 256 bits est-elle vraiment suffisamment securisee ?
L’ECC 256 bits fournit ~128 bits de securite — ce qui signifie qu’un attaquant aurait besoin d’environ 2^128 operations pour la casser. C’est plus d’operations qu’il n’y a d’atomes dans l’univers observable. C’est securise pour un avenir previsible (a l’exclusion des ordinateurs quantiques, qui necessitent des algorithmes entierement differents).
Quelle est la difference entre le chiffrement et la signature ?
Chiffrement : Proteger la confidentialite. Chiffrer avec la cle publique du destinataire -> seule sa cle privee peut dechiffrer. Signature : Prouver l’authenticite. Signer avec votre cle privee -> toute personne possedant votre cle publique peut verifier que cela vient de vous et n’a pas ete modifie. Les certificats TLS utilisent des signatures ; le transfert de donnees TLS utilise le chiffrement.