
wolfCOSE v2.0.0
تطبيق سريع، محمول، وخفيف الوزن لـ COSE + CBOR للأنظمة المضمنة. يدعم PQC، FIPS 140-3، DO-178، وMISRA C. مدعوم من wolfSSL.
wolfCOSE
wolfCOSE هي مكتبة C خفيفة الوزن تقوم بتنفيذ CBOR (RFC 8949) وCOSE (RFC 9052/9053) وML-DSA ما بعد الكم لـ COSE (RFC 9964) باستخدام wolfSSL كخلفية تشفير.
الميزات الرئيسية
- مجموعة رسائل RFC 9052 الكاملة: جميع أنواع رسائل COSE الستة، بما في ذلك
COSE_Signمتعدد الموقعين وCOSE_Encrypt/COSE_Macمتعدد المستلمين - التوقيع ما بعد الكم: ML-DSA (FIPS 204) في جميع مستويات الأمان الثلاثة، مع
COSE_Keyوفق RFC 9964 (نوع مفتاح AKP، مفاتيح خاصة قائمة على البذور) - 40 خوارزمية عبر التوقيع والتشفير وMAC وتوزيع المفاتيح
- تخصيص ديناميكي صفري: خالٍ من تخصيص الكومة وغير متكرر. كل عملية تعمل على مخازن مؤقتة يقدمها المستدعي ضمن سقف مكدس محدد قابل للتخصيص للهدف (لا شيء على الكومة، صفر
.data/.bss) - بصمة صغيرة جداً: wolfCOSE لـ ES256
COSE_Sign1(محرك COSE + CBOR) حوالي 5.1 كيلوبايت للتحقق فقط وحوالي 6.8 كيلوبايت للتوقيع والتحقق. إجمالي الفلاش بما في ذلك wolfCrypt هو حوالي 26.2 كيلوبايت للتحقق فقط (WOLFCOSE_LEAN_VERIFY) وحوالي 34.6 كيلوبايت للتوقيع والتحقق - سريع: (ES256
COSE_Sign1، x86_64، wolfCryptsp_256asm): 66,538 توقيع/ثانية، 26,437 تحقق/ثانية - ما بعد الكم بنفس التكلفة: إجمالي الفلاش لـ ML-DSA-44
COSE_Sign1بما في ذلك wolfCrypt هو حوالي 20.8 كيلوبايت للتحقق فقط (WOLFCOSE_LEAN_VERIFY_MLDSA) وحوالي 35.8 كيلوبايت للتوقيع والتحقق، أي في حدود 1 كيلوبايت تقريباً من ES256 التقليدية. جزء wolfCOSE وحده هو 4.6 كيلوبايت وحوالي 6.6 كيلوبايت على التوالي. انظر البصمة - الطريق إلى FIPS 140-3: عبر wolfCrypt شهادة FIPS #4718 (التبعية الوحيدة للتشفير)
الخوارزميات المدعومة
التوقيع: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
التشفير: AES-GCM (128/192/256), ChaCha20-Poly1305, متغيرات AES-CCM
MAC: HMAC-SHA256/384/512, AES-MAC
توزيع المفاتيح: مباشر، تغليف مفاتيح AES، ECDH-ES+HKDF
أنواع رسائل COSE (RFC 9052)
قامت wolfCOSE بتنفيذ جميع رسائل RFC 9052 بكل من المتغيرات أحادية الفاعل ومتعددة الفاعل:
| الرسالة | RFC 9052 | API | الغرض |
|---|---|---|---|
COSE_Sign1 | القسم 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | توقيع موقع واحد |
COSE_Sign | القسم 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | متعدد الموقعين (توقيعات مستقلة على نفس الحمولة) |
COSE_Encrypt0 | القسم 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD لمستلم واحد |
COSE_Encrypt | القسم 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | متعدد المستلمين (نص مشفر واحد، عدة مستلمين عبر Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | القسم 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC لمستلم واحد |
COSE_Mac | القسم 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | MAC متعدد المستلمين (مفتاح MAC مشترك، موزع على المستلمين) |
COSE_Key / COSE_KeySet | القسم 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | تسلسل المفاتيح لجميع أنواع المفاتيح |
المتطلبات الأساسية (wolfSSL)
تتطلب wolfCOSE wolfSSL كخلفية التشفير. الحد الأدنى للإصدار المدعوم: v5.8.0-stable (الإصدار الأول مع الرمز العام wc_ForceZero). يستخدم التوقيع ما بعد الكم واجهة برمجة التطبيقات القياسية FIPS 204 wc_MlDsaKey، والتي تظهر في wolfSSL بعد v5.9.1-stable؛ بناء wolfCOSE ضد v5.8.0–v5.9.1 يعمل لكل شيء باستثناء ML-DSA. يمكن دعم الإصدارات القديمة 5.x تقنياً لكنها تتطلب تغييرات على مستوى المصدر؛ اتصل بـ wolfSSL للحصول على الدعم التجاري.
اختر تكوين بناء بناءً على الخوارزميات التي تحتاجها.
بناء الحد الأدنى (ECC + AES-GCM)
يمنحك ذلك COSE Sign1 (ES256/384/512) وEncrypt0 (AES-GCM):
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
الخوارزميات الممكنة: ES256, ES384, ES512, AES-GCM-128/192/256
للحصول على بصمة wolfCrypt أصغر، أضف --enable-cryptonly لإسقاط مجموعة TLS وتعطيل الخوارزميات التي لا يستخدمها بناء Sign1 + Encrypt0 مطلقاً:
./configure --enable-cryptonly --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen \
--enable-lowresource \
--disable-dh --disable-rsa --disable-aescbc \
--disable-sha --disable-md5 --disable-chacha --disable-poly1305 \
--disable-errorstrings
انظر الضبط من أجل الحجم والضبط من أجل السرعة لضغط wolfCOSE وwolfCrypt بشكل أكبر على وحدات التحكم الدقيقة.
بناء الحد الأدنى (ما بعد الكم / ML-DSA فقط)
للتوقيع ما بعد الكم الخالص باستخدام ML-DSA-44/65/87:
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
الخوارزميات الممكنة: ML-DSA-44, ML-DSA-65, ML-DSA-87
(يتم جلب SHAKE-128/256 تلقائياً بواسطة --enable-mldsa. تتطلب واجهة برمجة التطبيقات wc_MlDsaKey wolfSSL أحدث من v5.9.1-stable.)
البناء الكامل (جميع الخوارزميات)
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-ed25519 --enable-ed448 \
--enable-curve25519 --enable-aesgcm --enable-aesccm \
--enable-sha384 --enable-sha512 --enable-keygen \
--enable-rsapss --enable-chacha --enable-poly1305 \
--enable-mldsa \
--enable-hkdf --enable-aeskeywrap
make && sudo make install
sudo ldconfig
البناء
# المكتبة الأساسية (libwolfcose.a)
make
# تشغيل اختبارات الوحدة
make test
# بناء وتشغيل اختبارات الدائرة لأداة سطر الأوامر (جميع الخوارزميات)
make tool-test
# تشغيل تجربة دورة الحياة (11 خوارزمية)
make demo
أهداف البناء
| الهدف | الوصف |
|---|---|
make all | بناء libwolfcose.a (المكتبة الأساسية فقط) |
make shared | بناء libwolfcose.so |
make test | بناء + تشغيل اختبارات وحدة CBOR وCOSE |
make tool | بناء أداة سطر الأوامر (tools/wolfcose_tool) |
make tool-test | اختبار ذاتي لدائرة مغلقة لجميع الخوارزميات السبع عشرة |
make demo | بناء + تشغيل تجربة دورة الحياة (11 خوارزمية) |
make clean | إزالة جميع مخرجات البناء |
البداية السريعة
أمثلة
راجع examples/ للحصول على كود عمل كامل:
sign1_demo.c,encrypt0_demo.c,mac0_demo.c: عروض توضيحية للخوارزمياتlifecycle_demo.c: سير عمل كامل من الحافة إلى السحابةcomprehensive/: اختبارات مصفوفة الخوارزمياتscenarios/: توقيع البرامج الثابتة، الإثبات، تكوين الأسطول
CI / الاختبار
يتم تشغيله في كل دفعة وطلب سحب:
- بناء + اختبار: Ubuntu, macOS, GCC 10-14, Clang 14-18
- اختبارات شاملة: ~240 اختبار تركيبة خوارزميات
- تحليل ثابت: cppcheck، Clang analyzer، GCC
-fanalyzer - MISRA C 2012: فحص cppcheck
--addon=misraلجميع مسارات كود wolfCOSE - MISRA C 2023: تحذيرات GCC صارمة وclang-tidy (
bugprone-*,cert-*,clang-analyzer-*,misc-*) - Coverity Scan: تحليل العيوب الليلي
- تحليل ثابت داخلي متقدم: أدوات تحليل ثابت متقدمة من Fenrir wolfssl
- تغطية الكود: 99.3% لـ wolfcose.c، 100% لـ wolfcose_cbor.c
make coverage # تشغيل الاختبارات مع gcov
make coverage-force-failure # تضمين اختبار مسار فشل التشفير
التوثيق
التوثيق الكامل متاح في الويكي:
- بدء الاستخدام: تعليمات البناء والخطوات الأولى
- أنواع الرسائل: جميع رسائل RFC 9052 الستة (Sign1, Sign, Encrypt0, Encrypt, Mac0, Mac) مع أمثلة كود
- الخوارزميات: القائمة الكاملة للخوارزميات الأربعين المدعومة مع معرّفات COSE
- مرجع API: توقيعات الدوال، هياكل البيانات، رموز الأخطاء
- الماكروات: خيارات التهيئة وقت التجميع
- البصمة: أرقام الحجم والسرعة، على الحاسوب المكتبي وعلى الجهاز
- الاختبار: بنية الاختبار، التغطية، وحقن الفشل
- الامتثال لـ MISRA: حالة الامتثال لـ MISRA C:2012 وC:2023 وأساسيات الانحراف
- بنية المشروع: توزيع ملفات المصدر
ملاحظات الإصدار
الإصدار الحالي هو 1.0.0، أول إصدار مستقر: مجموعة رسائل COSE RFC 9052 الكاملة (جميع أنواع الرسائل الستة، أحادية ومتعددة الفاعل)، 40 خوارزمية، وML-DSA ما بعد الكم الموحد (RFC 9964)، كل ذلك بدون تخصيص ديناميكي. انظر ChangeLog.md للحصول على ملاحظات الإصدار الكاملة.
تم تطوير wolfCOSE 1.0.0 وفقاً لعملية التطوير وضمان الجودة من wolfSSL (انظر https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance) واجتازت معايير الجودة بنجاح.
الترخيص
wolfCOSE هي برمجيات حرة مرخصة تحت GPLv3؛ انظر LICENSE للحصول على النص الكامل.
حقوق النشر (C) 2026 wolfSSL Inc.
الدعم
للترخيص التجاري أو عقود الدعم المهني أو لمناقشة نقل wolfCOSE إلى بيئة الإنتاج الخاصة بك، اتصل بـ wolfSSL.