
wolfCOSE v2.0.0
एम्बेडेड सिस्टम के लिए एक तेज़, पोर्टेबल और हल्का COSE + CBOR कार्यान्वयन। PQC, FIPS 140-3, DO-178, और MISRA C का समर्थन करता है। wolfSSL द्वारा संचालित।
wolfCOSE
wolfCOSE एक हल्का और तेज़ C लाइब्रेरी है जो मुख्य CBOR और COSE मानकों को लागू करता है, जिसमें क्रिप्टोग्राफी के लिए wolfSSL का समर्थन है।
समर्थित मानक और RFC
- मुख्य विनिर्देश:
- पोस्ट-क्वांटम क्रिप्टोग्राफी:
- अटेस्टेशन:
- RFC 9783 - EAT का PSA अटेस्टेशन टोकन प्रोफ़ाइल
मुख्य विशेषताएँ
- पूर्ण COSE सूट (RFC 9052): सभी छह संदेश प्रकारों के लिए पूर्ण समर्थन, जिसमें
COSE_Sign1,COSE_Encrypt0, औरCOSE_Mac0शामिल हैं। - V2 काउंटरसिग्नेचर (RFC 9338): सभी छह टैग किए गए COSE संदेश प्रकारों में पूर्ण और संक्षिप्त इन-प्लेस काउंटरसिग्नेचर।
- पोस्ट-क्वांटम क्रिप्टोग्राफी:
- सभी सुरक्षा स्तरों पर ML-DSA (FIPS 204 / RFC 9964)।
- HSS/LMS स्टेटफुल हैश-आधारित साइनिंग (RFC 8778 / CNSA 2.0)।
- तेज़ प्रदर्शन: Intel i9-11950H पर, एंड-टू-एंड
COSE_Sign1ES256 के साथ 66,538 sign/s और 26,437 verify/s तक पहुँचता है, और ML-DSA-44 के साथ 21,986 sign/s और 53,686 verify/s। प्रदर्शन और फुटप्रिंट विवरण और wolfCOSE बनाम द फील्ड देखें। - PSA अटेस्टेशन: प्रतिनिधि HSM साइनिंग समर्थन के साथ EAT / PSA टोकन जारी करना और सत्यापन।
- 41 क्रिप्टोग्राफिक एल्गोरिदम: साइनिंग, एन्क्रिप्शन, MAC, और कुंजी वितरण में व्यापक एल्गोरिदम कवरेज।
- एम्बेडेड-फर्स्ट डिज़ाइन: शून्य डायनामिक मेमोरी आवंटन (कोई हीप नहीं, शून्य
.data/.bss)। कॉलर-आपूर्ति बफ़र्स पर सीमित स्टैक उपयोग के साथ संचालित होता है। - FIPS 140-3 पथ: अपनी एकमात्र क्रिप्टोग्राफिक निर्भरता के रूप में wolfCrypt (FIPS प्रमाणपत्र #4718) का उपयोग करता है।
- STM32 एकीकृत: STM32CubeMX / IDE के लिए ड्रॉप-इन STM32Cube पैक (
I-CUBE-wolfCOSE) उपलब्ध (विवरण)।
समर्थित एल्गोरिदम
- डिजिटल हस्ताक्षर:
- क्लासिकल:
ESP256,ESP384,ESP512,Ed25519,Ed448,PS256,PS384,PS512 - पोस्ट-क्वांटम:
ML-DSA-44,ML-DSA-65,ML-DSA-87 - स्टेटफुल हैश-आधारित:
HSS-LMS
- क्लासिकल:
- एन्क्रिप्शन (AEAD):
AES-GCM(128 / 192 / 256)AES-CCM(वेरिएंट)ChaCha20-Poly1305
- संदेश प्रमाणीकरण (MAC):
HMAC-SHA256,HMAC-SHA384,HMAC-SHA512AES-MAC
- कुंजी वितरण:
DirectAES Key WrapECDH-ES + HKDF
COSE संदेश प्रकार (RFC 9052)
wolfCOSE ने सभी RFC 9052 संदेशों को सिंगल-एक्टर और मल्टी-एक्टर दोनों वेरिएंट में लागू किया है:
| संदेश | RFC 9052 | API | उद्देश्य |
|---|---|---|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | सिंगल-साइनर हस्ताक्षर |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | मल्टी-साइनर (एक ही पेलोड पर स्वतंत्र हस्ताक्षर) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | सिंगल-रिसिपिएंट AEAD |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | मल्टी-रिसिपिएंट (एक सिफरटेक्स्ट, Direct / AES-KW / ECDH-ES के माध्यम से कई प्राप्तकर्ता) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | सिंगल-रिसिपिएंट MAC |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | मल्टी-रिसिपिएंट MAC (साझा MAC कुंजी, प्राप्तकर्ताओं को वितरित) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | सभी कुंजी प्रकारों के लिए कुंजी सीरियलाइज़ेशन |
RFC 9338 काउंटरसिग्नेचर इस तालिका में किसी भी टैग किए गए संदेश से जोड़े जा सकते हैं। एक जोड़ने के लिए wc_Cose_AddCounterSignature() या wc_Cose_AddCounterSignature0() का उपयोग करें, फिर संबंधित wc_Cose_VerifyCounterSignature*() API के साथ स्वतंत्र रूप से सत्यापित करें।
निर्भरताएँ (wolfSSL)
wolfCOSE को अपने क्रिप्टो बैकएंड के रूप में wolfSSL की आवश्यकता है। न्यूनतम समर्थित संस्करण: v5.8.0-stable। कुछ वैकल्पिक एल्गोरिदम के लिए नए रिलीज़ की आवश्यकता होती है; फीचर-विशिष्ट निर्भरता सीमाओं और बिल्ड निर्देशों के लिए Getting Started देखें। HSS/LMS (RFC 8778) के लिए v5.9.2-stable या बाद का संस्करण आवश्यक है।
आपको जिन एल्गोरिदम की आवश्यकता है, उनके आधार पर बिल्ड कॉन्फ़िगरेशन चुनें।
न्यूनतम बिल्ड (ECC + AES-GCM)
यह आपको COSE Sign1 (ESP256/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
सक्षम एल्गोरिदम: ESP256, ESP384, ESP512, AES-GCM-128/192/256
छोटे wolfCrypt फुटप्रिंट के लिए, TLS स्टैक को हटाने और उन एल्गोरिदम को अक्षम करने के लिए --enable-cryptonly जोड़ें जिनका 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
MCU पर wolfCOSE और wolfCrypt को और अधिक अनुकूलित करने के लिए Tuning for Size और Tuning for Speed देखें।
न्यूनतम बिल्ड (केवल पोस्ट-क्वांटम / 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 API के लिए v5.9.1-stable से नए wolfSSL की आवश्यकता है।)
पूर्ण बिल्ड (सभी एल्गोरिदम)
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-lms \
--enable-hkdf --enable-aeskeywrap
make && sudo make install
sudo ldconfig
बिल्ड
# Core library (libwolfcose.a)
make
# Run unit tests
make test
# Build and run CLI tool round-trip tests (all algorithms)
make tool-test
# Run lifecycle demo (11 algorithms)
make demo