
Biblioteca en C que implementa FrodoKEM, un mecanismo de encapsulamiento de claves post-cuántico basado en el problema de Learning with Errors, con variantes para AES y SHAKE, incluyendo modos efímeros y estándar.
Esta biblioteca en C implementa FrodoKEM, un protocolo de encapsulación de claves (KEM) seguro bajo IND-CCA basado en el bien estudiado problema Learning with Errors (LWE) [1,3], que a su vez tiene estrechas conexiones con problemas conjeturados como difíciles en retículos genéricos y "algebraicamente no estructurados". Este paquete también incluye implementaciones de referencia en Python. Se conjetura que FrodoKEM es seguro contra ataques de computadoras cuánticas.
FrodoKEM consta de dos variantes principales:
En contraste con eFrodoKEM, el FrodoKEM estándar utiliza una semilla ampliada para generar la semilla de muestreo de las matrices secreta y de error, e incluye una sal adicional en uno de los cálculos hash durante la encapsulación y la desencapsulación. Estas contramedidas protegen al FrodoKEM estándar contra algunos ataques de múltiples textos cifrados. Consulte [3] para más detalles sobre estas dos variantes.
Concretamente, esta biblioteca incluye los siguientes esquemas KEM que utilizan AES128 para la generación de la matriz pública "A":
Y los siguientes esquemas KEM que utilizan SHAKE128 para la generación de la matriz pública "A":
La etiqueta "eFrodoKEM" corresponde a las variantes efímeras.
La biblioteca fue desarrollada por el equipo FrodoKEM y Microsoft Research con fines de experimentación.
carpeta common: funciones aleatorias, implementaciones de AES y SHA-3.carpeta eFrodoKEM: implementaciones en C y Python3 de eFrodoKEM.carpeta estimates: estimaciones de criptoanálisis de FrodoKEM reportadas en [3].carpeta FrodoKEM: implementaciones en C y Python3 del FrodoKEM estándar.LICENSE: archivo de licencia MIT.README.md: este archivo readme.La biblioteca FrodoKEM es compatible con una amplia gama de plataformas, incluidos procesadores x64, x86, ARM, PowerPC y s390x que ejecutan Windows, Linux o macOS, y admite formatos tanto little-endian como big-endian. Hemos probado la biblioteca con Microsoft Visual Studio, GNU GCC y clang.
Este software está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles. La implementación en Python3 está licenciada bajo la licencia Creative Commons Zero v1.0 Universal. Incluye algunos módulos de terceros que están licenciados de manera diferente. En particular:
common/aes/aes_c.c: dominio públicocommon/aes/aes_ni.c: dominio públicocommon/sha3/fips202.c: dominio públicocommon/sha3/fips202x4.c: dominio públicocommon/sha3/keccak4x: todos los archivos en esta carpeta son de dominio público (CC0), exceptocommon/sha3/keccak4x/brg_endian.h que tiene derechos de autor de Brian Gladman y viene con una licencia BSD de 3 cláusulas.<FrodoKEM_variant>/tests/ds_benchmark.h: dominio público<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>.c: con derechos de autor de Lawrence E. Bassham<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>_shake.c: con derechos de autor de Lawrence E. Bassham<FrodoKEM_variant>/tests/rng.c: con derechos de autor 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 y Douglas Stebila,
"FrodoKEM: Learning With Errors Key Encapsulation". Envío al proyecto de Estandarización Post-Cuántica del NIST, 2021-2023. La especificación de la ronda 3 de FrodoKEM está disponible aquí.
[2] Joppe W. Bos, Craig Costello, Léo Ducas, Ilya Mironov, Michael Naehrig, Valeria Nikolaenko, Ananth Raghunathan y Douglas Stebila,
"Frodo: Take off the ring! Practical, quantum-secure key exchange from LWE".
ACM CCS 2016, 2016. La versión preliminar está disponible aquí.
[3] Lewis Glabush, Patrick Longa, Michael Naehrig, Chris Peikert, Douglas Stebila y Fernando Virdia, "FrodoKEM: A CCA-Secure Learning With Errors Key Encapsulation Mechanism". IACR Communications in Cryptology (próximamente), 2025.
Este proyecto ha adoptado el Código de Conducta de Código Abierto de Microsoft. Para más información, consulte las Preguntas Frecuentes sobre el Código de Conducta o contacte a [email protected] con cualquier pregunta o comentario adicional.