
Cライブラリで、Learning with Errors問題に基づく耐量子鍵カプセル化メカニズムであるFrodoKEMを実装しており、AESおよびSHAKE用のバリアント、エフェメラルモードと標準モードを含みます。
このCライブラリは、よく研究されたLearning with Errors (LWE) 問題 [1,3] に基づくIND-CCA安全な鍵カプセル化 (KEM) プロトコルである FrodoKEM を実装しています。LWE問題は、汎用的で「代数的に非構造化された」格子に関する困難性が予想される問題と密接な関係があります。このパッケージにはPythonリファレンス実装も含まれています。FrodoKEM は、量子コンピュータ攻撃に対しても安全であると予想されています。
FrodoKEM は、主に2つのバリアントで構成されています:
eFrodoKEM とは対照的に、標準の FrodoKEM は、秘密行列と誤差行列をサンプリングするためのシードを生成する際に拡張されたシードを使用し、カプセル化および非カプセル化におけるハッシュ計算の1つに追加のソルトを含みます。 これらの対策により、標準の FrodoKEM は一部のマルチ暗号文攻撃から保護されます。これら2つのバリアントの詳細については、[3] を参照してください。
具体的には、このライブラリには、公開行列 "A" の生成にAES128を使用する以下のKEMスキームが含まれています:
また、公開行列 "A" の生成にSHAKE128を使用する以下のKEMスキームも含まれています:
ラベル "eFrodoKEM" は一時的 (エフェメラル) バリアントに対応します。
このライブラリは、実験目的のために FrodoKEMチーム と Microsoft Research によって開発されました。
common フォルダ: 乱数関数、AESおよびSHA-3の実装。eFrodoKEM フォルダ: eFrodoKEMのCおよびPython3実装。estimates フォルダ: [3] で報告されているFrodoKEMの暗号解読推定。FrodoKEM フォルダ: 標準FrodoKEMのCおよびPython3実装。LICENSE: MITライセンスファイル。README.md: このREADMEファイル。FrodoKEMライブラリは、Windows、Linux、macOS上で動作するx64、x86、ARM、PowerPC、s390xプロセッサを含む幅広いプラットフォームでサポートされており、 リトルエンディアンとビッグエンディアンの両方の形式をサポートしています。 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 はBrian Gladmanによって著作権が保持されており、BSD 3-clauseライセンスが付属しています。<FrodoKEM_variant>/tests/ds_benchmark.h: パブリックドメイン<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>.c: Lawrence E. Bassham によって著作権が保持されています。<FrodoKEM_variant>/tests/PQCtestKAT_kem<#>_shake.c: Lawrence E. Bassham によって著作権が保持されています。<FrodoKEM_variant>/tests/rng.c: 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, and Douglas Stebila,
"FrodoKEM: Learning With Errors Key Encapsulation". NIST Post-Quantum Standardizationプロジェクトへの提出物、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 Code of Conduct を採用しています。詳細については Code of Conduct FAQ を参照するか、追加の質問やコメントは [email protected] までご連絡ください。