ML-KEM sur les load balancers AWS : ce qu’une politique TLS post-quantique change (et ce qu’elle ne bloque pas)

Sur les load balancers AWS, le TLS post-quantique s’active à la demande, avec CloudFormation, la CLI ou le CDK. Cet environnement jetable montre ce qu’une politique PQ change, et ce qu’elle ne bloque pas. En bref : une politique PQ ajoute une capacité, elle ne l’impose pas. Choisissez la politique, puis vérifiez les journaux.

C’est l’autre moitié de ma démo KMS : ML-DSA (FIPS 204) signe, ML-KEM (FIPS 203) protège l’échange de clés. Ici, c’est ML-KEM, en forme hybride avec X25519, et le certificat de la démo reste un certificat classique.

Ce qui est déployé

Une seule commande CloudFormation crée un ALB interne avec trois listeners HTTPS, une instance EC2 de test accessible via Session Manager (sans port entrant, OpenSSL 3.5+) et un bucket S3 pour les journaux de connexion :

  • 443 : politique PQ, TLS 1.2 et 1.3
  • 9443 : politique PQ, TLS 1.3 uniquement
  • 8443 : une politique classique, comme témoin

Ce que j’ai observé avec OpenSSL 3.5

  • Un client qui propose ML-KEM obtient X25519MLKEM768, SecP256r1MLKEM768 ou SecP384r1MLKEM1024 sur les listeners PQ.
  • Le listener classique ne se plaint jamais : le même client se rabat discrètement sur x25519.
  • Un client sans ML-KEM n’est PAS bloqué par une politique PQ. Il se connecte en x25519. Je n’ai trouvé aucune politique ALB dans la documentation AWS qui exige ML-KEM, et le test le confirme.
  • Ce qu’une politique peut refuser, c’est une version de TLS : un client TLS 1.2 est rejeté sur le listener TLS 1.3 uniquement.
  • Les journaux de connexion (champ tls_keyexchange) montrent qui est encore en classique. C’est votre liste de migration, avant de durcir quoi que ce soit.

L’échange hybride coûte-t-il quelque chose ?

Côté client, +0,26 ms en médiane sur 200 connexions par cas. Côté ALB, quelques dixièmes de milliseconde. Un seul client, même Région, lien rapide : ce n’est pas un chiffre universel. Les mélanges de clients réels et la latence Internet ou mobile ne sont pas couverts.

Un détail technique

Le certificat auto-signé est généré dans le template lui-même, en Python pur, pour que toute la démo tienne dans un seul template CloudFormation autonome, sans bucket de packaging ni layer. Le code en ligne d’une Lambda est limité à 4 096 caractères et la bibliothèque cryptography n’est pas fournie : la fonction fait tout à la main, de la clé RSA 2048 au certificat X.509 encodé en DER, signé en SHA-256, puis importé dans ACM.

Code, tutoriel et script de nettoyage : https://lnkd.in/eA2hc8Qr (supprimez la stack à la fin, l’ALB est facturé à l’heure).

Sources (documentation AWS)

Publié initialement en anglais sur LinkedIn, le 3 novembre 2026.

Published
Categorized as Labs
Avatar de iama.fr

Par iama.fr

AWS Authorized Instructors and Training contents