
C-библиотека, реализующая FrodoKEM — постквантовый механизм инкапсуляции ключей, основанный на задаче обучения с ошибками (Learning with Errors), с вариантами для AES и SHAKE, включая эфемерный и стандартный режимы.
Эта библиотека на языке C реализует FrodoKEM — протокол инкапсуляции ключей (KEM), безопасный в модели IND-CCA, основанный на хорошо изученной задаче обучения с ошибками (LWE) [1,3], которая, в свою очередь, тесно связана с гипотетически сложными задачами на общих, «алгебраически неструктурированных» решётках. Этот пакет также включает эталонные реализации на Python. Предполагается, что FrodoKEM устойчив к атакам с использованием квантового компьютера.
FrodoKEM состоит из двух основных вариантов:
В отличие от eFrodoKEM, стандартный FrodoKEM использует увеличенное зерно для генерации зерна выборки секретных матриц и матриц ошибок, а также включает дополнительную соль в одно из хеш-вычислений при инкапсуляции и декапсуляции. Эти контрмеры защищают стандартный FrodoKEM от некоторых атак с несколькими шифротекстами. Более подробную информацию об этих двух вариантах см. в [3].
Конкретно, эта библиотека включает следующие схемы KEM с использованием AES128 для генерации публичной матрицы «A»:
И следующие схемы KEM с использованием SHAKE128 для генерации публичной матрицы «A»:
Метка «eFrodoKEM» соответствует эфемерным вариантам.
Библиотека разработана командой FrodoKEM и Microsoft Research в экспериментальных целях.
common папка: функции случайных чисел, реализации AES и SHA-3.eFrodoKEM папка: реализации eFrodoKEM на C и Python3.estimates папка: оценки криптоанализа FrodoKEM, приведённые в [3].FrodoKEM папка: реализации стандартного FrodoKEM на C и Python3.LICENSE: файл лицензии MIT.README.md: этот файл readme.Библиотека FrodoKEM поддерживается на широком спектре платформ, включая процессоры x64, x86, ARM, PowerPC и s390x под управлением Windows, Linux или macOS, и поддерживает как little-endian, так и big-endian форматы. Мы тестировали библиотеку с Microsoft Visual Studio, GNU GCC и clang.
Это программное обеспечение лицензировано по лицензии MIT; подробности см. в файле LICENSE. Реализация на Python3 лицензирована по лицензии Creative Commons Zero v1.0 Universal. Она включает некоторые сторонние модули, которые лицензированы иным образом. В частности:
common/aes/aes_c.c: общественное достояниеcommon/aes/aes_ni.c: общественное достояниеcommon/sha3/fips202.c: общественное достояниеcommon/sha3/fips202x4.c: общественное достояниеcommon/sha3/keccak4x: все файлы в этой папке являются общественным достоянием (CC0), за исключениемcommon/sha3/keccak4x/brg_endian.h, который защищён авторским правом Брайана Глэдмана и распространяется по лицензии BSD с 3 пунктами.<FrodoKEM_variant>/tests/ds_benchmark.h: общественное достояние<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>.c: защищён авторским правом Лоуренса Э. Бэсшема<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>_shake.c: защищён авторским правом Лоуренса Э. Бэсшема<FrodoKEM_variant>/tests/rng.c: защищён авторским правом Лоуренса Э. Бэсшема[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, and Douglas Stebila,
"FrodoKEM: Learning With Errors Key Encapsulation". Submission to the NIST Post-Quantum Standardization project, 2021-2023. Спецификация FrodoKEM раунда 3 доступна здесь.
[2] Joppe W. Bos, Craig Costello, Léo Ducas, Ilya Mironov, Michael Naehrig, Valeria Nikolaenko, Ananth Raghunathan, and Douglas Stebila,
"Frodo: Take off the ring! Practical, quantum-secure key exchange from LWE".
ACM CCS 2016, 2016. Версия препринта доступна здесь.
[3] Lewis Glabush, Patrick Longa, Michael Naehrig, Chris Peikert, Douglas Stebila, and Fernando Virdia, "FrodoKEM: A CCA-Secure Learning With Errors Key Encapsulation Mechanism". IACR Communications in Cryptology (в печати), 2025.
Этот проект принял Кодекс поведения Microsoft Open Source. Для получения дополнительной информации см. FAQ по Кодексу поведения или свяжитесь с [email protected] по любым дополнительным вопросам или комментариям.