Un serveur TLS 1.3 qui négocie une version plus ancienne doit fixer les 8 derniers octets de ServerHello.random à 44 4F 57 4E 47 52 44 01 (DOWNGRD en ASCII, suivi de 0x01) pour TLS 1.2, ou à …00 pour TLS 1.1 et les versions antérieures ; un client TLS 1.3 qui reçoit cette valeur doit interrompre le handshake (RFC 9846 §4.2.3). Comme l’aléa du serveur (server random) est couvert par la signature du serveur, un attaquant ne peut pas le supprimer.
Défenses plus anciennes : la valeur de signalisation TLS_FALLBACK_SCSV (RFC 7507), contre les navigateurs qui réessayaient avec des versions inférieures (l’époque de POODLE), et le condensat de la transcription du handshake dans Finished, qui détecte toute altération des paramètres négociés. En TLS 1.2, les replis vers un échange de clés de niveau export ou vers l’échange de clés RSA (FREAK, Logjam) réussissaient parce que les serveurs prenaient encore en charge ces options faibles ; les désactiver est la vraie solution.
La même idée s’applique ailleurs : HSTS et MTA-STS empêchent le repli de HTTPS ou de STARTTLS vers une communication en clair, et un échange de clés hybride ne doit pas permettre à un pair de retirer la partie post-quantique, c’est pourquoi il est négocié comme un seul groupe.