TLS

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Sécurisation des communications (chiffrement + authentification)
Couche OSI 4/5, au-dessus de TCP
Versions actuelles TLS 1.2 (2008) · TLS 1.3 (2018, recommandée)
Voir aussi HTTPS · CSR

TLS (Transport Layer Security) fournit la confidentialité et lintégrité des données échangées entre deux applications, ainsi que lauthentification d'au moins l'une des parties (le serveur, via son certificat — voir CSR). TLS a succédé à SSL, dont la dernière version (SSLv3) est aujourd'hui considérée non sûre et abandonnée par tous les navigateurs et serveurs à jour.

Le handshake (établissement de session)

Avant tout échange chiffré, client et serveur négocient la version du protocole, la suite cryptographique et les clés de session :

Client                                    Serveur
  |------ ClientHello -------------------->|  versions/suites supportées, aléa client
  |<----- ServerHello ----------------------|  version/suite choisie, aléa serveur
  |<----- Certificate -----------------------|  certificat du serveur (issu d'un CSR)
  |<----- ServerHelloDone -------------------|
  |------ ClientKeyExchange ---------------->|  échange de clé (DHE/ECDHE en TLS 1.3)
  |------ ChangeCipherSpec, Finished ------->|
  |<----- ChangeCipherSpec, Finished --------|
  |<===== données chiffrées ================>|

TLS 1.3 simplifie ce déroulé (poignée de main en un seul aller-retour, 1-RTT, contre deux en TLS 1.2) et impose des échanges de clé offrant la Perfect Forward Secrecy (PFS) : même si la clé privée du serveur est compromise plus tard, les sessions passées ne peuvent pas être déchiffrées rétroactivement.

En authentification mutuelle (mTLS), le client présente également un certificat, validé par le serveur — utilisé par exemple entre microservices ou pour des API à accès restreint.

TLS Record Protocol

Une fois le handshake terminé, chaque message applicatif est découpé en fragments, éventuellement compressés, authentifié (MAC) et chiffré avec les clés de session négociées, avant d'être remis à la couche transport (TCP le plus souvent).

Bonnes pratiques

  • TLS 1.2 minimum, TLS 1.3 recommandé ; désactiver SSLv3/TLS 1.0/1.1.
  • Suites de chiffrement modernes (ECDHE + AES-GCM ou ChaCha20-Poly1305), clé serveur RSA 2048+ ou
 ECDSA P-256/P-384.
  • Renouvellement automatisé des certificats (ex. ACME/Let's Encrypt) plutôt que manuel.

Voir aussi

  • HTTPS — usage le plus répandu de TLS (HTTP sécurisé)
  • CSR — génère la demande de certificat présenté lors du handshake