C15.3 : Protocole HTTPS
Contexte
On s'intéresse ici la la communication entre un client et un serveur de pages web dans un réseau.
Le protocole HTTP
Au niveau de la couche application, c'est le protocole HTTP qui est utilisé (Protocoles réseaux : modèle TCP/IP). Il assure l'échange des données entre le client et le serveur.
Limites du protocole HTTP
Le protocole HTTP n'assure, de lui-même, aucune sécurisation de la communication :
- - Les données circulent en clair, elles ne sont donc pas confidentielles.
- - Les données ne sont pas authentifiées (exemple : une personne peut se faire passer pour un serveur et récolter les données d'un client).
- - Rien n'assure l'intégrité des données.
Principe
Généralités
Le protocole HTTPS est un protocole de communication sécurisé entre un client et un serveur. Il ajoute au protocole HTTP de la couche application, le protocole TLS (Transport Layer Security) qui assure la sécurisation cryptographique via la couche transport.
Le protocole TLS
Le protocole TLS permet l'authentification du serveur et le partage sécurisée d'une clé symétrique appelée clé de session.
Une fois la clé symétrique échangée, le protocole HTTP prend le relai en transmettant des données chiffrés.
La "poignée de main" (HandShake)
Les premiers échanges entre le client et le serveur sont les suivants (on parle de "poignée de main", handshake en anglais") :
- - Le client envoie une demande de connexion sécurisée au serveur (Hello).
- - Le serveur envoie sa clé publique et sa signature (son certificat) attesté par un tiers de confiance.
- - Le client vérifie la signature avec la clé publique du tiers de confiance.
- - Le client génère une clé de chiffrement symétrique, la chiffre avec la clé publique du serveur et l'envoie au serveur.
- - Le serveur déchiffre la clé symétrique.
Des échanges chiffrés à l'aide de la clé de sessions
A partir de là, les données sont transmises chiffrées avec la clé symétrique (que l'on appelle clé de session).
Visualisation sur un navigateur
Sur Firefox
Sur Chrome