Middle
Comment le chiffrement des messages entre le navigateur et le serveur est-il effectué?
sobes.tech IA
Réponse de l'IA
Le chiffrement entre le navigateur et le serveur est effectué à l'aide du protocole HTTPS, qui est une couche supplémentaire au-dessus de HTTP utilisant les protocoles SSL/TLS (Secure Sockets Layer / Transport Layer Security).
Processus d'établissement d'une connexion sécurisée (Handshake) :
- Client Hello : Le navigateur envoie au serveur un message contenant les versions SSL/TLS supportées, la liste des suites de chiffrement (cipher suites), les algorithmes de compression et un nombre aléatoire (du client).
- Server Hello : Le serveur choisit la meilleure version du protocole, la suite de chiffrement et l'algorithme de compression parmi ceux proposés par le navigateur, génère également son propre nombre aléatoire (du serveur) et l'envoie au navigateur avec son certificat SSL/TLS.
- Authentification : Le navigateur vérifie le certificat du serveur :
- La validité de l'autorité de certification racine (Root CA).
- La validité du certificat.
- La correspondance du nom de domaine dans le certificat avec l'adresse du site web.
- L'absence de certificat révoqué dans la liste (CRL ou OCSP).
- Premaster Secret : Le navigateur génère un nombre aléatoire (premaster secret), le chiffre avec la clé publique du serveur (du certificat) et l'envoie au serveur.
- Génération de la clé de session : Le navigateur et le serveur utilisent les nombres aléatoires du client (Client Random), du serveur (Server Random) et le premaster secret pour générer une clé de session symétrique.
- Change Cipher Spec : Le navigateur envoie au serveur un message indiquant la transition vers l'utilisation de la clé de session générée pour la communication future.
- Finished : Le navigateur envoie au serveur un hash de tous les messages précédents de la poignée de main, chiffré avec la clé de session. Ce message vérifie la correction de la poignée de main.
- Change Cipher Spec : Le serveur envoie au navigateur un message indiquant la transition vers une connexion chiffrée.
- Finished : Le serveur envoie au navigateur un hash de tous les messages précédents de la poignée de main, chiffré avec la clé de session.
Après la poignée de main réussie, toute la transmission de données entre le navigateur et le serveur se fait en utilisant un chiffrement symétrique basé sur la clé de session générée. Le chiffrement symétrique est beaucoup plus performant que l'asymétrique, ce qui le rend adapté au chiffrement de grands volumes de données.
Algorithmes utilisés (exemple) :
- Chiffrement asymétrique (pour l'échange de la clé de session) : RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
- Chiffrement symétrique (pour le chiffrement des données) : AES, 3DES, ChaCha20.
- Hachage (pour vérifier l'intégrité des messages) : SHA-256, SHA-384.