Protocole d’établissement de liaison TLS
Le protocole tls (Transport Layer Security) est responsable de l’authentification et de l’échange de clés nécessaires pour établir ou reprendre des sessions sécurisées. Lors de l’établissement d’une session de sécurisée, le protocole de négociation gère les opérations suivantes :
- Négociation de suite de chiffrement
- Authentification du serveur et éventuellement, le client
- Échange d’informations de clé de session.
Négociation de suite de chiffrement
Le client et le serveur communiquent et choisissent la suite de chiffrement qui sera utilisée tout au long de leur échange de messages.
Authentification
Dans TLS, un serveur prouve son identité au client. Le client peut également avoir besoin de prouver son identité au serveur. L’utilisation d'paires de clés publiques/privéesest la base de cette authentification. La méthode exacte utilisée pour l’authentification est déterminée par la suite de chiffrement négociée.
Échange de clés
Le client et le serveur échangent des nombres aléatoires et un nombre spécial appelé secret de prémaître. Ces nombres sont combinés avec des données supplémentaires permettant au client et au serveur de créer leur secret partagé, appelé secret principal. Le secret principal est utilisé par le client et le serveur pour générer le secret MAC d’écriture, qui est la clé de session utilisée pour hachage, et la clé d’écriture, qui est la clé de session utilisée pour le chiffrement.
Établissement d’une session sécurisée à l’aide de TLS
Le protocole de négociation TLS implique les étapes suivantes :
- Le client envoie un message « Client hello » au serveur, ainsi que la valeur aléatoire du client et les suites de chiffrement prises en charge.
- Le serveur répond en envoyant un message « Server hello » au client, ainsi que la valeur aléatoire du serveur.
- Le serveur envoie son certificat au client pour l’authentification et peut demander un certificat auprès du client. Le serveur envoie le message « Server hello done ».
- Si le serveur a demandé un certificat auprès du client, le client l’envoie.
- Le client crée un secret prémaître aléatoire et le chiffre avec la clé publique à partir du certificat du serveur, en envoyant le secret prémaître chiffré au serveur.
- Le serveur reçoit le secret de prémaître. Le serveur et le client génèrent chacun le secret principal et les clés de session basées sur le secret prémaître.
- Le client envoie une notification « Modifier la spécification de chiffrement » au serveur pour indiquer que le client commence à utiliser les nouvelles clés de session pour hachage et chiffrer les messages. Le client envoie également le message « Client terminé ».
- Le serveur reçoit « Modifier la spécification de chiffrement » et bascule son état de sécurité de couche d’enregistrement pour chiffrement symétrique à l’aide des clés de session . Le serveur envoie le message « Serveur terminé » au client.
- Le client et le serveur peuvent désormais échanger des données d’application sur le canal sécurisé qu’ils ont établi. Tous les messages envoyés du client au serveur et du serveur au client sont chiffrés à l’aide de la clé de session.
Reprise d’une session sécurisée à l’aide de TLS
Le client envoie un message « Client hello » à l’aide de l’ID de session de la session à reprendre.
Le serveur vérifie son cache de session pour obtenir un ID de session correspondant. Si une correspondance est trouvée et que le serveur est en mesure de reprendre la session, il envoie un message « Server hello » avec l’ID de session.
Note
Si une correspondance d’ID de session est introuvable, le serveur génère un nouvel ID de session et le client TLS et le serveur effectuent une négociation complète.
Le client et le serveur doivent échanger des messages « Modifier les spécifications de chiffrement » et envoyer des messages « Client terminé » et « Serveur terminé ».
Le client et le serveur peuvent maintenant reprendre l’échange de données d’application sur le canal sécurisé.