ML-KEM
ML-KEM (Module-Lattice-based Key-Encapsulation Mechanism), également connu sous son nom d'origine Kyber ou CRYSTALS-Kyber[1], est mécanisme d'encapsulation de clef (KEM) post-quantique (conçu pour résister aux attaques des ordinateurs quantiques) standardisé en 2024[2]. Il permet d'établir un secret entre deux interlocuteurs sans qu'un attaquant puisse l'intercepter en écoutant les messages échangés. Ce cryptosystÚme asymétrique est basé sur le problÚme algorithmique de l'apprentissage avec erreurs (M-LWE) comme fonction à trappe.
Il a gagné le concours du NIST comme le premier algorithme de cryptographie post-quantique standardisé sous le nom FIPS 203[3].
Propriétés mathématiques
[modifier | modifier le code]ML-KEM est basé sur le problÚme algorithmique d'apprentissage avec erreurs modulaire (M-LWE).
Histoire
[modifier | modifier le code]D'abord connu sous le nom Kyber, ce mĂ©canisme est dĂ©rivĂ© d'une mĂ©thode publiĂ©e en 2005 par Oded Regev[4],[5]. Il fait partie de CRYSTALS (Cryptographic Suite for Algebraic Lattices), une suite composĂ©e de lui-mĂȘme, et de CRYSTALS-Dilithium, un algorithme de signature post-quantique [6].
En 2017, Kyber est soumis au NIST pour le concours de standardisation des primitives cryptographiques post-quantiques. Il s'agit du premier mécanisme d'encapsulation de clef sélectionné pour devenir une norme (FIPS 203) lors du processus de standardisation, au troisiÚme tour[7]. D'aprÚs une note de bas de page du relevé de décision, sa standardisation est conditionnée à divers accords relatifs aux brevets, sans lesquels le NIST pourrait se tourner vers NTRU plutÎt que Kyber d'ici fin 2022[8]. En 2025, lors du quatriÚme tour processus de standardisation, le schéma HQC a été sélectionné comme solution de replis[9].
Lors d'une deuxiÚme phase du processus de standardisation, plusieurs paramÚtres de l'algorithme ont été ajustés, et la compression des clefs publiques a été supprimée[10].
Ăvolutions
[modifier | modifier le code]Kyber a subi plusieurs modifications durant le processus de standardisation du NIST. En particulier, lors du deuxiĂšme tour, la version Kyber v2 a subi les changements suivants[11]Â :
- la compression de la clef publique a été supprimée ;
- le module q a été réduit de 7681 à 3329 ;
- des paramÚtres de compression du chiffré ont été changés ;
- les spécifications de transformation de Fourier à valeurs dans un corps fini (NTT) ont été modifiées ;
- la borne dâĂ©chantillonnage du bruit a Ă©tĂ© rĂ©duite à η = 2 pour augmenter la vitesse ;
- la représentation de la clef publique est passée dans le domaine NTT pour économiser des opérations.
D'autres modifications ont été apportées lors du troisiÚme tour[8] :
- l'usage de la transformation FujisakiâOkamoto a Ă©tĂ© modifié ;
- le niveau de bruit a été augmenté, et la compression du chiffré a été réduite pour le niveau 1 ;
- l'algorithme d'échantillionage du paramÚtre A a été amélioré.
Lors de la publication de la version préliminaire publique du standard FIPS 203, d'autres changements ont été apportés[12] :
- la taille de la clef prépartagée a été fixée à 256 bits ;
- une diffĂ©rente variante de la transformation FujisakiâOkamoto est utilisĂ©e ;
- un usage d'une fonction de hachage sur un aléa généré a été supprimé dans la fonction d'encapsulation de clef, pour se conformer au NIST ;
- des vérifications des données d'entrée ont été ajoutées, notamment à la fonction d'encapsulation.
Enfin, depuis la version préliminaire, les changements suivants ont été apportés au standard FIPS 203[12] :
- une séparation de domaines a été ajoutée à la génération de clef ;
- la version préliminaire avait par inadvertance inversée les indices de la matrice à dans la fonction de génération et de chiffrement, ceux-ci sont revenus à leur état d'origine dans la version finale.
Usage
[modifier | modifier le code]Les développeurs ont publiés une implémentation de référence dans le domaine public (ou en licence CC0), en C[13].
La librairie liboqs du projet Open Quantum Safe (OQS) contient une implémentation basée sur l'implémentation de référence[14]. Le projet OQC maintient également un module pour Openssl 3.x[15], et a intégré son code dans BoringSSL.
La librairie wolfSSL maintient sa propre implémentation de ML-KEM[16].
Il existe diverses implémentations dans divers langages de programmation, dont JavaScript[17] ou Java[18].
Certaines implémentations matérielles optimisée existent, résistantes aux attaques par canaux auxillaires[19],[20].
Amazon Web Services (AWS) a intégré Kyber dans leur service de gestion de clefs en 2020 comme option d'hybridation post-quantique pour TLS[21].
En 2023, Signal (service de messagerie chiffrĂ©e implĂ©mente Post-Quantum Extended DiffieâHellman (PQXDH), un mĂ©canisme d'encapsulation de clef basĂ© sur ML-KEM[22] au Signal Protocol.
Notes et références
[modifier | modifier le code]Notes
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « ML-KEM » (voir la liste des auteurs).
Références
[modifier | modifier le code]- â (en-US) Dustin Moody, « What was NIST thinking? : Round 2 of the NIST PQC "Competition" » [archive du ]
[PDF], sur csrc.nist.gov (consultĂ© le ) - â (en) National Institute of Standards and Technology, « Module-Lattice-Based Key-Encapsulation Mechanism Standard », csrc.nist.gov, U.S. Department of Commerce, no Federal Information Processing Standard (FIPS) 203,â (DOI 10.6028/NIST.FIPS.203, lire en ligne, consultĂ© le )
- â (en-US) « NIST introduces first post-quantum encryption standards | Kaspersky official blog », (consultĂ© le )
- â (en-GB) « Lattice-Based Cryptography, The Complete Guide To FIPS 203 », (consultĂ© le )
- â Oded Regev, « On lattices, learning with errors, random linear codes, and cryptography », Journal of the ACM (JACM), Association for Computing Machinery, vol. 56, no 6,â , p. 34:1â34:40 (ISSN 0004-5411, DOI 10.1145/1568318.1568324, lire en ligne, consultĂ© le )
- â Peter Schwabe, « CRYSTALS », sur pq-crystals.org (consultĂ© le )
- â (en) Adnan Masood PhD, « Quantum Sundays |21â© Federal Transition to PostâQuantum Cryptography â Kyber Key Exchange andâŠÂ », sur Medium, (consultĂ© le )
- 1 2 Roberto Avanzi, Joppe Bos, LĂ©o Ducas, Eike Kiltz, TancrĂšde Lepoint, Vadim Lyubashevsky, John M. Schanck, Peter Schwabe, Gregor Seiler, Damien StehlĂ©. CRYSTALSâKyber (Round 3 presentation) June 9, 2021.
- â (en-US) Kevin Townsend, « NIST Announces HQC as Fifth Standardized Post Quantum Algorithm », sur SecurityWeek, (consultĂ© le )
- â (en) Leon Botros, Matthias J. Kannwischer et Peter Schwabe, « Memory-Efficient High-Speed Implementation of Kyber on Cortex-M4 », dans Progress in Cryptology â AFRICACRYPT 2019, vol. 11627, Springer International Publishing, , 209â228 p. (ISBN 978-3-030-23695-3, DOI 10.1007/978-3-030-23696-0_11, lire en ligne)
- â Roberto Avanzi, Joppe Bos, LĂ©o Ducas, Eike Kiltz, TancrĂšde Lepoint, Vadim Lyubashevsky, John M. Schanck, Peter Schwabe, Gregor Seiler, Damien StehlĂ©. CRYSTALSâKyber (Round 2 presentation) 23 aoĂ»t 2019.
- 1 2 National Institute of Standards and Technology (US), « Module-lattice-based key-encapsulation mechanism standard », CrossRef, National Institute of Standards and Technology (U.S.), no NIST FIPS 203,â (DOI 10.6028/NIST.FIPS.203, lire en ligne, consultĂ© le )
- â (en) pq-crystals, « kyber/LICENSE at main · pq-crystals/kyber », sur GitHub (consultĂ© le )
- â « Kyber â Open Quantum Safe » [archive du ] (consultĂ© le )
- â open-quantum-safe/oqs-provider, Open Quantum Safe, (lire en ligne)
- â (en-US) Shizuka Ishikiriyama, « wolfCrypt Post Quantum | Products - wolfSSL », (consultĂ© le )
- â Anton Tutoveanu, antontutoveanu/crystals-kyber-javascript, (lire en ligne)
- â Steven K. Fisher, fisherstevenk/kyberJCE, (lire en ligne)
- â B. Dang, Kamyar Mohajerani, K. Gaj (2021), High-Speed Hardware Architectures and Fair FPGA Benchmarking of CRYSTALS-Kyber, NTRU, and Saber (PDF) (de)
- â Arpan Jati, Naina Gupta, A. Chattopadhyay, S. Sanadhya (2021),A Configurable Crystals-Kyber Hardware Implementation with Side-Channel Protection (PDF) (de)
- â « Round 2 post-quantum TLS is now supported in AWS KMS | AWS Security Blog », sur aws.amazon.com, (consultĂ© le )
- â (en) signalapp, « Add Kyber KEM and implement PQXDH protocol · signalapp/libsignal@ff09619 », sur GitHub (consultĂ© le )