Tailles en octets (FIPS 203, tableau 3), clé d’encapsulation / texte chiffré : ML-KEM-512 800 / 768 (catégorie 1), ML-KEM-768 1184 / 1088 (catégorie 3), ML-KEM-1024 1568 / 1568 (catégorie 5) ; le secret partagé fait toujours 32 octets. Les clés de décapsulation peuvent être stockées sous la forme de la graine de 64 octets d ‖ z. Sur un cœur Apple M4 Max, OpenSSL 3.6.5 effectue environ 41 000 générations de clés ML-KEM-768, 63 000 encapsulations et 40 000 décapsulations par seconde.
Une transformation de Fujisaki–Okamoto avec rejet implicite le rend sûr face aux attaques à chiffrés choisis : un texte chiffré invalide produit un secret pseudo-aléatoire au lieu d’une erreur. FIPS 203 exige des contrôles des entrées sur les clés d’encapsulation (§7.2) et de décapsulation (§7.3) ; les implémentations doivent aussi éviter les fuites liées au temps d’exécution qui ont affecté les premières implémentations de Kyber (KyberSlash, 2024).
ML-KEM-768 est la cheville ouvrière de l’échange de clés hybride : X25519MLKEM768 en TLS, mlkem768x25519-sha256 en SSH, HPKE et X-Wing, iMessage PQ3 d’Apple et PQXDH de Signal. ML-KEM-1024 est le choix de la CNSA 2.0. ML-KEM n’est pas interopérable avec le Kyber du 3e tour.