
C-Bibliothek, die FrodoKEM implementiert, einen Post-Quanten-Schlüsselkapselungsmechanismus, der auf dem Learning-with-Errors-Problem basiert, mit Varianten für AES und SHAKE, einschließlich ephemerer und standardmäßiger Modi.
Diese C-Bibliothek implementiert FrodoKEM, ein IND-CCA-sicheres Key-Encapsulation-Protokoll (KEM), das auf dem gut untersuchten Learning-with-Errors-Problem (LWE) [1,3] basiert, welches wiederum enge Verbindungen zu vermutlich schweren Problemen auf generischen, "algebraisch unstrukturierten" Gittern aufweist. Dieses Paket enthält außerdem Python-Referenzimplementierungen. FrodoKEM gilt als sicher gegen Angriffe durch Quantencomputer.
FrodoKEM besteht aus zwei Hauptvarianten:
Im Gegensatz zu eFrodoKEM verwendet das Standard-FrodoKEM einen vergrößerten Seed zur Erzeugung des Seeds für das Abtasten der geheimen und Fehlermatrizen und enthält zusätzlich ein Salt in einer der Hash-Berechnungen bei der Verkapselung und Entkapselung. Diese Gegenmaßnahmen schützen das Standard-FrodoKEM vor bestimmten Multi-Chiffrat-Angriffen. Weitere Details zu diesen beiden Varianten finden Sie in [3].
Konkret enthält diese Bibliothek die folgenden KEM-Schemata unter Verwendung von AES128 zur Erzeugung der öffentlichen Matrix "A":
Und die folgenden KEM-Schemata unter Verwendung von SHAKE128 zur Erzeugung der öffentlichen Matrix "A":
Die Bezeichnung "eFrodoKEM" entspricht den ephemeren Varianten.
Die Bibliothek wurde vom FrodoKEM-Team und Microsoft Research zu Experimentierzwecken entwickelt.
common-Ordner: Zufallsfunktionen, Implementierungen von AES und SHA-3.eFrodoKEM-Ordner: C- und Python3-Implementierungen von eFrodoKEM.estimates-Ordner: Kryptoanalyse-Schätzungen von FrodoKEM, berichtet in [3].FrodoKEM-Ordner: C- und Python3-Implementierungen des Standard-FrodoKEM.LICENSE: MIT-Lizenzdatei.README.md: diese Readme-Datei.Die FrodoKEM-Bibliothek wird auf einer breiten Palette von Plattformen unterstützt, einschließlich x64-, x86-, ARM-, PowerPC- und s390x-Prozessoren unter Windows, Linux oder macOS, und unterstützt sowohl Little-Endian- als auch Big-Endian-Formate. Wir haben die Bibliothek mit Microsoft Visual Studio, GNU GCC und clang getestet.
Diese Software ist unter der MIT-Lizenz lizenziert; siehe die LICENSE-Datei für Details. Die Python3-Implementierung ist unter der Creative Commons Zero v1.0 Universal-Lizenz lizenziert. Sie enthält einige Drittanbieter-Module, die anders lizenziert sind. Insbesondere:
common/aes/aes_c.c: public domaincommon/aes/aes_ni.c: public domaincommon/sha3/fips202.c: public domaincommon/sha3/fips202x4.c: public domaincommon/sha3/keccak4x: alle Dateien in diesem Ordner sind public domain (CC0), mit Ausnahme voncommon/sha3/keccak4x/brg_endian.h, das von Brian Gladman urheberrechtlich geschützt ist und unter einer BSD-3-Klausel-Lizenz vertrieben wird.<FrodoKEM_variant>/tests/ds_benchmark.h: public domain<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>.c: urheberrechtlich geschützt von Lawrence E. Bassham<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>_shake.c: urheberrechtlich geschützt von Lawrence E. Bassham<FrodoKEM_variant>/tests/rng.c: urheberrechtlich geschützt von 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 und Douglas Stebila,
"FrodoKEM: Learning With Errors Key Encapsulation". Einreichung zum NIST Post-Quantum Standardization Project, 2021-2023. Die Round-3-Spezifikation von FrodoKEM ist hier verfügbar.
[2] Joppe W. Bos, Craig Costello, Léo Ducas, Ilya Mironov, Michael Naehrig, Valeria Nikolaenko, Ananth Raghunathan und Douglas Stebila,
"Frodo: Take off the ring! Practical, quantum-secure key exchange from LWE".
ACM CCS 2016, 2016. Die Preprint-Version ist hier verfügbar.
[3] Lewis Glabush, Patrick Longa, Michael Naehrig, Chris Peikert, Douglas Stebila und Fernando Virdia, "FrodoKEM: A CCA-Secure Learning With Errors Key Encapsulation Mechanism". IACR Communications in Cryptology (in Erscheinung), 2025.
Dieses Projekt hat den Microsoft Open Source Code of Conduct übernommen. Weitere Informationen finden Sie in den FAQ zum Code of Conduct oder kontaktieren Sie [email protected] bei weiteren Fragen oder Kommentaren.