0Pricing
Security+ Academy · Leçon

Négociation TLS 1.3 et reprise 0-RTT

Suivez la négociation TLS 1.3 étape par étape, comprenez comment elle assure par défaut la confidentialité persistante et évaluez les compromis de sécurité de la reprise de session 0-RTT.

Négociation TLS 1.3 et reprise 0-RTT est une leçon Security+ Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Security+ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Security+ Academy comprend 4 leçons au total.

Pourquoi TLS 1.3 était nécessaire

TLS 1.3, publié en 2018 (RFC 8446), a été conçu pour corriger les faiblesses qui s'étaient accumulées dans TLS 1.2 au fil d'une décennie d'attaques réelles. Les versions précédentes permettaient de négocier des suites cryptographiques faibles, prenaient en charge la cryptographie de niveau exportation et exigeaient plusieurs allers-retours avant que les données puissent circuler. TLS 1.3 supprime tous les algorithmes obsolètes et simplifie l'établissement de la connexion à un seul aller-retour dans le cas normal, ce qui améliore considérablement à la fois la sécurité et les performances.

Vue d'ensemble de l'établissement de la connexion : un aller-retour

Dans TLS 1.3, le client et le serveur terminent l'établissement de la connexion en 1-RTT (un aller-retour). Le client envoie un ClientHello qui inclut les suites cryptographiques prises en charge et un partage de clé (utilisant Diffie-Hellman). Le serveur répond avec un ServerHello, son propre partage de clé, un certificat et les premières données d'application chiffrées — le tout en un seul échange. Le client vérifie ensuite le certificat et envoie un message Finished avant d'échanger les données d'application.

# Trace TLS 1.3 handshake with openssl
openssl s_client -connect example.com:443 -tls1_3 -msg 2>&1 | grep -E 'ClientHello|ServerHello|Finished'

Échange de clés : Diffie-Hellman éphémère uniquement

TLS 1.3 impose un échange de clés éphémères : il a supprimé entièrement l'échange de clés RSA. Tout échange de clés doit utiliser ECDHE (Diffie-Hellman éphémère sur courbe elliptique) ou DHE (Diffie-Hellman éphémère). Le terme « éphémère » signifie qu'une nouvelle paire de clés est générée pour chaque session. C'est le fondement de la perfect forward secrecy : la compromission de la clé privée à long terme du serveur ne permet pas de déchiffrer les sessions passées, car chaque session utilisait une clé temporaire unique.

Explication de la Perfect Forward Secrecy

La Perfect Forward Secrecy (PFS) garantit que, même si un attaquant enregistre aujourd'hui tout le trafic chiffré et obtient ultérieurement la clé privée du serveur, il ne pourra toujours pas déchiffrer les anciennes sessions. Dans TLS 1.2 avec échange de clés RSA, la clé privée du serveur pouvait déchiffrer le secret prém maître de toute session passée — une défaillance catastrophique. Les clés DH éphémères de TLS 1.3 signifient que chaque session dérive ses propres clés et que ces clés éphémères sont supprimées après utilisation.

Simplification des suites cryptographiques

TLS 1.2 prenait en charge plus de 300 suites cryptographiques, dont beaucoup étaient faibles ou compromises. TLS 1.3 réduit ce nombre à seulement cinq suites cryptographiques, qui utilisent toutes AEAD (chiffrement authentifié avec Data associées) : TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_CCM_SHA256 et TLS_AES_128_CCM_8_SHA256. Cela élimine des catégories entières d'attaques comme BEAST, POODLE et FREAK, qui exploitaient la négociation de chiffrements faibles.

# Check supported TLS 1.3 cipher suites on a server
nmap --script ssl-enum-ciphers -p 443 example.com

Reprise 0-RTT : rapidité contre sécurité

La reprise 0-RTT (Zero Round Trip Time) est une fonctionnalité facultative de TLS 1.3 qui permet à un client d'envoyer des données d'application dès son tout premier message, avant la fin de l'établissement de la connexion. Elle fonctionne grâce à une Pre-Shared Key (PSK) issue d'une session précédente. Bien que le 0-RTT réduise considérablement la latence — ce qui est essentiel pour les API à fort trafic —, il introduit un compromis important : les premières données ne sont pas protégées contre les attaques par rejeu.

Risque d'attaque par rejeu en 0-RTT

Lors d'une attaque par rejeu visant des données 0-RTT, un attaquant qui intercepte le message de premières données peut le renvoyer au serveur et potentiellement déclencher deux fois la même action (par exemple, un paiement ou une modification d'état). La spécification de TLS 1.3 avertit explicitement que les premières données 0-RTT ne doivent transporter que des opérations idempotentes — c'est-à-dire des opérations qui produisent le même résultat quel que soit le nombre de leurs exécutions, comme une requête GET. Les opérations non idempotentes (POST, DELETE) ne doivent jamais utiliser le 0-RTT.

Clés prépartagées et reprise de session

Après un établissement complet de la connexion TLS 1.3 réussi, le serveur émet un message NewSessionTicket contenant une PSK (Pre-Shared Key) que le client conserve. Lors de la reconnexion, le client inclut cette PSK dans son ClientHello à l'aide de l'extension pre_shared_key. Le serveur la reconnaît et autorise les données 0-RTT ou revient à une reprise 1-RTT. Les tickets PSK sont limités dans le temps et doivent être renouvelés fréquemment afin de réduire leur fenêtre d'exposition.

Établissement de connexion chiffré : dissimulation des métadonnées

Une amélioration majeure de TLS 1.3 est que la majeure partie de l'établissement de la connexion est chiffrée, y compris le certificat du serveur. Dans TLS 1.2, le certificat du serveur était envoyé en clair, ce qui permettait à un observateur du réseau d'identifier le domaine auquel le client se connectait. TLS 1.3 chiffre le certificat et la plupart des messages ultérieurs d'établissement de la connexion, réduisant les métadonnées accessibles aux observateurs passifs. Encrypted Client Hello (ECH) est une extension émergente qui dissimule même le champ SNI (Server Name Indication).

Fonctionnalités supprimées : ce que TLS 1.3 a éliminé

TLS 1.3 a supprimé de nombreuses fonctionnalités historiques devenues des faiblesses : l'échange de clés RSA (sans perfect forward secrecy), les suites cryptographiques en mode CBC (vulnérables aux attaques par oracle de bourrage), RC4 (chiffrement par flux complètement compromis), la cryptographie de niveau exportation (à l'origine de FREAK et de Logjam), MD5 et SHA-1 dans les signatures numériques, la compression (à l'origine de CRIME) et la renégociation (à l'origine de plusieurs attaques). En les supprimant, TLS 1.3 possède une surface d'attaque considérablement réduite.

Configurer les serveurs pour TLS 1.3

Déployer correctement TLS 1.3 nécessite de configurer votre serveur web pour le privilégier tout en désactivant TLS 1.0 et 1.1. La plupart des serveurs web modernes (Nginx, Apache, IIS) prennent nativement TLS 1.3 en charge. Vous devez également vérifier que l'OCSP Stapling est activé afin de fournir l'état de révocation du certificat sans que le client contacte l'autorité de certification, et que les en-têtes HSTS empêchent les attaques par rétrogradation vers HTTP. Utilisez des outils tels que SSL Labs pour vérifier que votre configuration obtient la note A+.

# Nginx TLS 1.3 configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security 'max-age=63072000' always;

Vérification rapide

Testez votre compréhension des notions de CompTIA Security+ (SY0-701) présentées dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que TLS 1.3 termine l'établissement de la connexion en 1-RTT en utilisant uniquement un échange de clés DH éphémères pour assurer la perfect forward secrecy ; que la reprise 0-RTT permet une reconnexion plus rapide grâce aux PSK, mais reste vulnérable aux attaques par rejeu et ne doit transporter que des opérations idempotentes ; et que TLS 1.3 supprime toutes les fonctionnalités faibles historiques — échange de clés RSA, chiffrements CBC, RC4, cryptographie d'exportation et compression —, réduisant considérablement la surface d'attaque. Nous allons maintenant étudier des algorithmes de chiffrement authentifié tels que AES-GCM.

Questions Fréquemment Posées

La leçon « Négociation TLS 1.3 et reprise 0-RTT » est-elle gratuite ?

Oui — le texte complet de « Négociation TLS 1.3 et reprise 0-RTT » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Security+ Academy, passe à CoddyKit PRO. Le cours Security+ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Négociation TLS 1.3 et reprise 0-RTT » ?

Suivez la négociation TLS 1.3 étape par étape, comprenez comment elle assure par défaut la confidentialité persistante et évaluez les compromis de sécurité de la reprise de session 0-RTT. Tu pratiques Security+ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Security+ Academy ?

Aucune expérience préalable n'est requise. Security+ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Négociation TLS 1.3 et reprise 0-RTT » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Security+ Academy ?

Oui. Chaque leçon Security+ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Négociation TLS 1.3 et reprise 0-RTT
  2. Chiffrement authentifié : AES-GCM et ChaCha20-Poly1305
  3. Fonctions de dérivation de clés : PBKDF2, bcrypt et Argon2
  4. Cryptographie post-quantique : CRYSTALS-Kyber et Dilithium
← Retour à Security+ Academy