
wolfCOSE v2.0.0
Eine schnelle, portable und leichtgewichtige Implementierung von COSE + CBOR für eingebettete Systeme. Unterstützt PQC, FIPS 140-3, DO-178 und MISRA C. Basiert auf wolfSSL.
wolfCOSE
wolfCOSE ist eine leichtgewichtige und schnelle C-Bibliothek, die die Kernstandards CBOR und COSE implementiert und für die Kryptographie auf wolfSSL aufbaut.
Unterstützte Standards & RFCs
- Kernspezifikationen:
- Post-Quanten-Kryptographie:
- Attestierung:
- RFC 9783 - PSA Attestation Token Profile of EAT
Hauptmerkmale
- Vollständige COSE-Suite (RFC 9052): Vollständige Unterstützung aller sechs Nachrichtentypen, einschließlich
COSE_Sign1,COSE_Encrypt0undCOSE_Mac0. - V2-Countersignaturen (RFC 9338): Vollständige und abgekürzte In-Place-Countersignaturen über alle sechs getaggten COSE-Nachrichtentypen hinweg.
- Post-Quanten-Kryptographie:
- ML-DSA (FIPS 204 / RFC 9964) auf allen Sicherheitsstufen.
- HSS/LMS zustandsbehaftete hashbasierte Signierung (RFC 8778 / CNSA 2.0).
- Hohe Performance: Auf einem Intel i9-11950H erreicht End-to-End
COSE_Sign166.538 Sign/s und 26.437 Verify/s mit ES256 sowie 21.986 Sign/s und 53.686 Verify/s mit ML-DSA-44. Siehe die Details zu Performance und Footprint und wolfCOSE vs. The Field. - PSA-Attestierung: EAT-/PSA-Token-Ausstellung und -Verifikation mit Unterstützung für delegierte HSM-Signierung.
- 41 kryptographische Algorithmen: Breite Algorithmusabdeckung über Signierung, Verschlüsselung, MAC und Schlüsselverteilung.
- Embedded-First-Design: Keine dynamische Speicherallokation (kein Heap, kein
.data/.bss). Arbeitet mit vom Aufrufer bereitgestellten Puffern bei begrenzter Stack-Nutzung. - FIPS 140-3-Pfad: Verwendet wolfCrypt (FIPS-Zertifikat #4718) als einzige kryptographische Abhängigkeit.
- STM32-Integration: Drop-in-STM32Cube-Pack (
I-CUBE-wolfCOSE) für STM32CubeMX / IDE verfügbar (Details).
Unterstützte Algorithmen
- Digitale Signaturen:
- Klassisch:
ESP256,ESP384,ESP512,Ed25519,Ed448,PS256,PS384,PS512 - Post-Quanten:
ML-DSA-44,ML-DSA-65,ML-DSA-87 - Zustandsbehaftet hashbasiert:
HSS-LMS
- Klassisch:
- Verschlüsselung (AEAD):
AES-GCM(128 / 192 / 256)AES-CCM(Varianten)ChaCha20-Poly1305
- Nachrichtenauthentifizierung (MAC):
HMAC-SHA256,HMAC-SHA384,HMAC-SHA512AES-MAC
- Schlüsselverteilung:
DirectAES Key WrapECDH-ES + HKDF
COSE-Nachrichtentypen (RFC 9052)
wolfCOSE hat alle RFC 9052-Nachrichten sowohl als Single-Actor- als auch als Multi-Actor-Varianten implementiert:
| Nachricht | RFC 9052 | API | Zweck |
|---|---|---|---|
COSE_Sign1 | Abschn. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Signatur mit einem Unterzeichner |
COSE_Sign | Abschn. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Multi-Signer (unabhängige Signaturen über dieselbe Nutzlast) |
COSE_Encrypt0 | Abschn. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD mit einem Empfänger |
COSE_Encrypt | Abschn. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Multi-Empfänger (ein Chiffrat, viele Empfänger über Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Abschn. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC mit einem Empfänger |
COSE_Mac | Abschn. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | Multi-Empfänger-MAC (gemeinsamer MAC-Schlüssel, an Empfänger verteilt) |
COSE_Key / COSE_KeySet | Abschn. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Schlüsselserialisierung für alle Schlüsseltypen |
RFC 9338-Countersignaturen können an jede getaggte Nachricht in dieser
Tabelle angehängt werden. Verwenden Sie wc_Cose_AddCounterSignature() oder
wc_Cose_AddCounterSignature0(), um eine hinzuzufügen, und verifizieren Sie sie dann unabhängig mit
der entsprechenden wc_Cose_VerifyCounterSignature*()-API.
Abhängigkeiten (wolfSSL)
wolfCOSE benötigt wolfSSL als Krypto-Backend. Mindestens unterstützte Version: v5.8.0-stable. Einige optionale Algorithmen benötigen neuere Releases; siehe Getting Started für merkmalspezifische Abhängigkeitsuntergrenzen und Build-Anweisungen. HSS/LMS (RFC 8778) erfordert v5.9.2-stable oder neuer.
Wählen Sie eine Build-Konfiguration basierend auf den Algorithmen, die Sie benötigen.
Minimaler Build (ECC + AES-GCM)
Dies liefert Ihnen COSE Sign1 (ESP256/384/512) und Encrypt0 (AES-GCM):
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
Aktivierte Algorithmen: ESP256, ESP384, ESP512, AES-GCM-128/192/256
Für einen kleineren wolfCrypt-Footprint fügen Sie --enable-cryptonly hinzu, um den TLS-
Stack zu entfernen und die Algorithmen zu deaktivieren, die ein Sign1 + Encrypt0-Build nie verwendet:
./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
Siehe Tuning for Size und Tuning for Speed für weitere Optimierungen von wolfCOSE und wolfCrypt auf MCUs.
Minimaler Build (nur Post-Quanten / ML-DSA)
Für reine Post-Quanten-Signierung mit ML-DSA-44/65/87:
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
Aktivierte Algorithmen: ML-DSA-44, ML-DSA-65, ML-DSA-87
(SHAKE-128/256 werden automatisch durch --enable-mldsa eingebunden. Die
wc_MlDsaKey-API erfordert wolfSSL neuer als v5.9.1-stable.)
Vollständiger Build (alle Algorithmen)
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
Build
# 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