TLS (Transport Layer Security)
Définition
TLS (Transport Layer Security) est un protocole cryptographique qui fournit une communication sécurisée sur un réseau. Il assure la confidentialité (chiffrement), l’intégrité (détection de falsification) et l’authentification (vérification de l’identité serveur/client).
TLS est le successeur de SSL (Secure Sockets Layer), qui est maintenant déprécié. TLS 1.3 est le standard actuel (RFC 8446, 2018).
Poignée de main TLS (TLS 1.3)
Client Serveur
│ │
│── ClientHello ──────────────▶│ (versions supportées, ciphers, key share)
│ │
│◀── ServerHello ──────────────│ (cipher choisi, key share, cert)
│ │
│◀── EncryptedExtensions ──────│
│ │
│◀── Certificate ──────────────│ (certificat TLS du serveur)
│ │
│◀── CertificateVerify ────────│ (le serveur signe la poignée de main)
│ │
│◀── Finished ─────────────────│
│ │
│── Finished ──────────────────▶│ (le client vérifie le serveur)
│ │
│◀══ Données applicatives chiffrées ═▶│ (auth mutuelle si certificat client demandé)
Versions TLS
|| Version | Statut | Remarques | |———|——–|——-| | SSL 1.0 | Dépréciée | Jamais publiée | | SSL 2.0 | Insécurisée | Cassée, à ne pas utiliser | | SSL 3.0 | Insécurisée | Attaque POODLE (2014) | | TLS 1.0 | Dépréciée | Dépréciation RFC 8996 (2021) | | TLS 1.1 | Dépréciée | Dépréciation RFC 8996 (2021) | | TLS 1.2 | Supportée | Déployée largement, toujours sécurisée | | TLS 1.3 | Recommandée | Plus rapide, plus sécurisée, poignée de main simplifiée |
Améliorations de TLS 1.3 par rapport à TLS 1.2
- Poignée de main plus rapide : 1-RTT (vs 2-RTT pour TLS 1.2)
- 0-RTT : Les connexions résumées peuvent envoyer des données immédiatement
- Ciphers faibles supprimés : Pas de RC4, DES, 3DES, modes CBC-only
- Forward secrecy requise : Tous les échanges de clés utilisent ECDHE
- Groupes de chiffrement simplifiés : Réduits de 50+ à quelques-uns
- Compression supprimée : Élimine l’attaque CRIME
Groupes de chiffrement TLS (TLS 1.3)
|| Groupe de chiffrement | Échange de clés | Chiffrement | MAC | |————-|————-|————|—–| | TLS_AES_256_GCM_SHA384 | ECDHE | AES-256-GCM | SHA384 | | TLS_AES_128_GCM_SHA256 | ECDHE | AES-128-GCM | SHA256 | | TLS_CHACHA20_POLY1305_SHA256 | ECDHE | ChaCha20 | SHA256 |
Types de certificats TLS
|| Type | Description | Cas d’utilisation | |——|————-|———-| | DV (Domain Validated) | Propriété du domaine vérifiée | Sites web basiques | | OV (Organization Validated) | Organisation vérifiée | Sites web d’entreprise | | EV (Extended Validation) | Validation la plus stricte, barre verte (dépréciée) | Banques, e-commerce | | Wildcard | Couvre le domaine et tous les sous-domaines (*.example.com) | Sites multi-sous-domaines | | SAN (Subject Alternative Name) | Domaines multiples sur un seul certificat | Sites multi-domaines | | Self-signed | Non signé par une CA | Tests, usage interne |
TLS dans l’infrastructure
|| Composant | Rôle de TLS | |———–|———-| | Serveurs web | HTTPS pour tout le trafic | | Bases de données | Connexions chiffrées (MySQL, PostgreSQL) | | APIs | TLS pour tous les endpoints REST/gRPC | | Email | TLS pour SMTP, IMAP, POP3 | | VPN | VPN basés sur TLS (WireGuard, OpenVPN) | | DNS | DoT (DNS over TLS), DoH (DNS over HTTPS) |
Dépannage TLS
# Vérifier le certificat TLS
openssl s_client -connect example.com:443 -servername example.com
# Vérifier les détails du certificat
openssl x509 -in cert.pem -text -noout
# Vérifier le support de la version TLS
nmap --script ssl-enum-ciphers -p 443 example.com
# Tester avec testssl.sh
./testssl.sh example.com
Termes associés
- Ssl — TLS utilise des certificats X.509 pour l’authentification
- Pki — HTTPS = HTTP sur TLS
- Waf: https://datatracker.ietf.org/doc/html/rfc8446
- Configuration TLS Mozilla : https://wiki.mozilla.org/Security/Server_Side_TLS
- SSL Labs : https://www.ssllabs.com/