
Libreria C che implementa FrodoKEM, un meccanismo di incapsulamento delle chiavi post-quantistico basato sul problema Learning with Errors, con varianti per AES e SHAKE, incluse le modalità effimera e standard.
Questa libreria C implementa FrodoKEM, un protocollo di incapsulamento di chiavi (KEM) sicuro IND-CCA basato sul noto problema Learning with Errors (LWE) [1,3], che a sua volta ha strette connessioni con problemi congetturati come difficili su reticoli generici e "algebricamente non strutturati". Questo pacchetto include anche implementazioni di riferimento in Python. Si congettura che FrodoKEM sia sicuro contro gli attacchi dei computer quantistici.
FrodoKEM consiste in due varianti principali:
A differenza di eFrodoKEM, il FrodoKEM standard utilizza un seed ingrandito per generare il seed per il campionamento delle matrici segrete e di errore, e include un sale aggiuntivo in uno dei calcoli di hashing durante l'incapsulamento e il decapsulamento. Queste contromisure proteggono il FrodoKEM standard da alcuni attacchi multi-ciphertext. Fare riferimento a [3] per maggiori dettagli su queste due varianti.
Concretamente, questa libreria include i seguenti schemi KEM che utilizzano AES128 per la generazione della matrice pubblica "A":
E i seguenti schemi KEM che utilizzano SHAKE128 per la generazione della matrice pubblica "A":
L'etichetta "eFrodoKEM" corrisponde alle varianti effimere.
La libreria è stata sviluppata dal team FrodoKEM e da Microsoft Research a scopo sperimentale.
cartella common: funzioni casuali, implementazioni di AES e SHA-3.cartella eFrodoKEM: implementazioni in C e Python3 di eFrodoKEM.cartella estimates: stime di crittanalisi di FrodoKEM riportate in [3].cartella FrodoKEM: implementazioni in C e Python3 del FrodoKEM standard.LICENSE: file di licenza MIT.README.md: questo file readme.La libreria FrodoKEM è supportata su un'ampia gamma di piattaforme, inclusi processori x64, x86, ARM, PowerPC e s390x che eseguono Windows, Linux o macOS, e supporta sia i formati little-endian che big-endian. Abbiamo testato la libreria con Microsoft Visual Studio, GNU GCC e clang.
Questo software è concesso in licenza sotto la MIT License; vedere il file LICENSE per i dettagli. L'implementazione in Python3 è concessa in licenza sotto la Creative Commons Zero v1.0 Universal license. Include alcuni moduli di terze parti concessi in licenza in modo diverso. In particolare:
common/aes/aes_c.c: pubblico dominiocommon/aes/aes_ni.c: pubblico dominiocommon/sha3/fips202.c: pubblico dominiocommon/sha3/fips202x4.c: pubblico dominiocommon/sha3/keccak4x: tutti i file in questa cartella sono di pubblico dominio (CC0), ad eccezione dicommon/sha3/keccak4x/brg_endian.h che è protetto da copyright di Brian Gladman e viene distribuito con una licenza BSD a 3 clausole.<FrodoKEM_variant>/tests/ds_benchmark.h: pubblico dominio<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>.c: protetto da copyright di Lawrence E. Bassham<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>_shake.c: protetto da copyright di Lawrence E. Bassham<FrodoKEM_variant>/tests/rng.c: protetto da copyright di 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 e Douglas Stebila,
"FrodoKEM: Learning With Errors Key Encapsulation". Sottomissione al progetto di standardizzazione post-quantistica NIST, 2021-2023. La specifica del round 3 di FrodoKEM è disponibile qui.
[2] Joppe W. Bos, Craig Costello, Léo Ducas, Ilya Mironov, Michael Naehrig, Valeria Nikolaenko, Ananth Raghunathan e Douglas Stebila,
"Frodo: Take off the ring! Practical, quantum-secure key exchange from LWE".
ACM CCS 2016, 2016. La versione preprint è disponibile qui.
[3] Lewis Glabush, Patrick Longa, Michael Naehrig, Chris Peikert, Douglas Stebila e Fernando Virdia, "FrodoKEM: A CCA-Secure Learning With Errors Key Encapsulation Mechanism". IACR Communications in Cryptology (in pubblicazione), 2025.
Questo progetto ha adottato il Microsoft Open Source Code of Conduct. Per maggiori informazioni vedere le FAQ sul Code of Conduct o contattare [email protected] per eventuali domande o commenti aggiuntivi.