
مكتبة بلغة C تنفّذ FrodoKEM، وهي آلية تغليف مفاتيح ما بعد الكمومية مبنية على مسألة التعلّم مع الأخطاء، مع متغيرات لـ 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: تنفيذات بلغة C و Python3 لـ eFrodoKEM.مجلد estimates: تقديرات تحليل الشفرات لـ FrodoKEM المذكورة في [3].مجلد FrodoKEM: تنفيذات بلغة C و Python3 لـ FrodoKEM القياسي.LICENSE: ملف ترخيص MIT.README.md: ملف القراءة هذا.مكتبة 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 وهو محمي بحقوق الطبع والنشر لـ 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". Submission to the NIST Post-Quantum Standardization project, 2021-2023. مواصفات الجولة الثالثة من FrodoKEM متاحة هنا.
[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. لمزيد من المعلومات، راجع الأسئلة الشائعة حول مدونة قواعد السلوك أو تواصل مع [email protected] لأي أسئلة أو تعليقات إضافية.