
Bibliothèque C implémentant FrodoKEM, un mécanisme d'encapsulation de clé post-quantique basé sur le problème Learning with Errors, avec des variantes pour AES et SHAKE, incluant les modes éphémère et standard.
Cette bibliothèque C implémente FrodoKEM, un protocole d'encapsulation de clé (KEM) sécurisé IND-CCA basé sur le problème bien étudié Learning with Errors (LWE) [1,3], qui lui-même est étroitement lié à des problèmes conjecturés comme difficiles sur des réseaux génériques, « algébriquement non structurés ». Ce paquet inclut également des implémentations de référence en Python. FrodoKEM est conjecturé comme étant sûr contre les attaques par ordinateur quantique.
FrodoKEM se décline en deux variantes principales :
Contrairement à eFrodoKEM, le FrodoKEM standard utilise une graine agrandie pour générer la graine servant à échantillonner les matrices secrètes et d'erreur, et inclut un sel supplémentaire dans l'un des calculs de hachage lors de l'encapsulation et de la décapsulation. Ces contre-mesures protègent le FrodoKEM standard contre certaines attaques multi-textes chiffrés. Reportez-vous à [3] pour plus de détails sur ces deux variantes.
Concrètement, cette bibliothèque inclut les schémas KEM suivants utilisant AES128 pour la génération de la matrice publique « A » :
Et les schémas KEM suivants utilisant SHAKE128 pour la génération de la matrice publique « A » :
Le label « eFrodoKEM » correspond aux variantes éphémères.
La bibliothèque a été développée par l'équipe FrodoKEM et Microsoft Research à des fins d'expérimentation.
dossier common : fonctions aléatoires, implémentations d'AES et de SHA-3.dossier eFrodoKEM : implémentations C et Python3 d'eFrodoKEM.dossier estimates : estimations cryptanalytiques de FrodoKEM rapportées dans [3].dossier FrodoKEM : implémentations C et Python3 du FrodoKEM standard.LICENSE : fichier de licence MIT.README.md : ce fichier readme.La bibliothèque FrodoKEM est prise en charge sur une large gamme de plateformes, notamment les processeurs x64, x86, ARM, PowerPC et s390x exécutant Windows, Linux ou macOS, et prend en charge les formats petit-boutiste et gros-boutiste. Nous avons testé la bibliothèque avec Microsoft Visual Studio, GNU GCC et clang.
Ce logiciel est sous licence MIT ; voir le fichier LICENSE pour plus de détails. L'implémentation Python3 est sous licence Creative Commons Zero v1.0 Universal. Elle inclut certains modules tiers sous des licences différentes. En particulier :
common/aes/aes_c.c : domaine publiccommon/aes/aes_ni.c : domaine publiccommon/sha3/fips202.c : domaine publiccommon/sha3/fips202x4.c : domaine publiccommon/sha3/keccak4x : tous les fichiers de ce dossier sont dans le domaine public (CC0), à l'exception decommon/sha3/keccak4x/brg_endian.h qui est protégé par le droit d'auteur de Brian Gladman et est distribué sous licence BSD à 3 clauses.<FrodoKEM_variant>/tests/ds_benchmark.h : domaine public<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>.c : protégé par le droit d'auteur de Lawrence E. Bassham<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>_shake.c : protégé par le droit d'auteur de Lawrence E. Bassham<FrodoKEM_variant>/tests/rng.c : protégé par le droit d'auteur de Lawrence E. Bassham[1] Erdem Alkim, Joppe W. Bos, Léo Ducas, Karen Easterbrook, Brian LaMacchia, Patrick Longa, Ilya Mironov, Michael Naehrig, Valeria Nikolaenko, Chris Peikert, Ananth Raghunathan, et Douglas Stebila,
« FrodoKEM: Learning With Errors Key Encapsulation ». Soumission au projet de standardisation post-quantique du NIST, 2021-2023. La spécification du round 3 de FrodoKEM est disponible ici.
[2] Joppe W. Bos, Craig Costello, Léo Ducas, Ilya Mironov, Michael Naehrig, Valeria Nikolaenko, Ananth Raghunathan, et Douglas Stebila,
« Frodo: Take off the ring! Practical, quantum-secure key exchange from LWE ».
ACM CCS 2016, 2016. La version prépubliée est disponible ici.
[3] Lewis Glabush, Patrick Longa, Michael Naehrig, Chris Peikert, Douglas Stebila, et Fernando Virdia, « FrodoKEM: A CCA-Secure Learning With Errors Key Encapsulation Mechanism ». IACR Communications in Cryptology (à paraître), 2025.
Ce projet a adopté le Code de conduite open source de Microsoft. Pour plus d'informations, consultez la FAQ sur le Code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.