
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 ist eine leichtgewichtige C-Bibliothek, die CBOR (RFC 8949), COSE (RFC 9052/9053) und die Post-Quanten-Spezifikation ML-DSA für COSE (RFC 9964) implementiert und wolfSSL als Krypto-Backend verwendet.
COSE_Sign mit mehreren Signierern und COSE_Encrypt / COSE_Mac mit mehreren EmpfängernCOSE_Key nach RFC 9964 (AKP-Schlüsseltyp, seed-basierte private Schlüssel).data/.bss)COSE_Sign1 wolfCOSE (COSE + CBOR-Engine) ~5,1 KB nur Verifizierung und ~6,8 KB Signieren + Verifizieren. Der gesamte Flash-Speicher inklusive wolfCrypt beträgt ~26,2 KB nur Verifizierung (WOLFCOSE_LEAN_VERIFY) und ~34,6 KB Signieren + VerifizierenCOSE_Sign1, x86_64, wolfCrypt sp_256 asm): 66.538 Signierungen/s, 26.437 Verifizierungen/sCOSE_Sign1 inklusive wolfCrypt beträgt ~20,8 KB nur Verifizierung (WOLFCOSE_LEAN_VERIFY_MLDSA) und ~35,8 KB Signieren + Verifizieren und liegt damit innerhalb von etwa 1 KB des klassischen ES256. Der wolfCOSE-Anteil allein beträgt 4,6 KB bzw. ~6,6 KB. Siehe FootprintSignierung: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
Verschlüsselung: AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM variants
MAC: HMAC-SHA256/384/512, AES-MAC
Schlüsselverteilung: Direct, AES Key Wrap, ECDH-ES+HKDF
wolfCOSE hat alle RFC-9052-Nachrichten sowohl in Einzelakteur- als auch in Mehrfachakteur-Varianten implementiert:
| Nachricht | RFC 9052 | API | Zweck |
|---|---|---|---|
COSE_Sign1 | Abschn. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Signatur mit einem Signierer |
COSE_Sign | Abschn. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Mehrere Signierer (unabhängige Signaturen über dieselben Nutzdaten) |
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 | Mehrere 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 | Mehrere Empfänger: MAC (gemeinsamer MAC-Schlüssel, verteilt an die Empfänger) |
COSE_Key / COSE_KeySet | Abschn. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Schlüsselserialisierung für alle Schlüsseltypen |
wolfCOSE benötigt wolfSSL als Krypto-Backend. Mindestens unterstützte Version: v5.8.0-stable (erste Version mit dem öffentlichen wc_ForceZero-Symbol). Die Post-Quanten-Signierung verwendet die kanonische wc_MlDsaKey-API (FIPS 204), die in wolfSSL nach v5.9.1-stable erscheint; ein Build von wolfCOSE gegen v5.8.0–v5.9.1 funktioniert für alles außer ML-DSA. Ältere 5.x-Versionen können technisch unterstützt werden, erfordern jedoch Änderungen auf Quellcode-Ebene; wenden Sie sich für kommerziellen Support an wolfSSL.
Wählen Sie eine Build-Konfiguration basierend auf den Algorithmen, die Sie benötigen.
Damit erhalten Sie COSE Sign1 (ES256/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: ES256, ES384, ES512, AES-GCM-128/192/256
Für einen kleineren wolfCrypt-Speicherbedarf 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 für die Größe und Tuning für die Geschwindigkeit, um wolfCOSE und wolfCrypt auf MCUs weiter zu verkleinern bzw. zu beschleunigen.
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.)
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
# Kernbibliothek (libwolfcose.a)
make
# Unit-Tests ausführen
make test
# Roundtrip-Tests des CLI-Tools erstellen und ausführen (alle Algorithmen)
make tool-test
# Lebenszyklus-Demo ausführen (11 Algorithmen)
make demo
| Ziel | Beschreibung |
|---|---|
make all | Erstellt libwolfcose.a (nur Kernbibliothek) |
make shared | Erstellt libwolfcose.so |
make test | Erstellt und führt CBOR- und COSE-Unit-Tests aus |
make tool | Erstellt CLI-Tool (tools/wolfcose_tool) |
make tool-test | Roundtrip-Selbsttest für alle 17 Algorithmen |
make demo | Erstellt und führt Lebenszyklus-Demo aus (11 Algorithmen) |
make clean | Entfernt alle Build-Artefakte |
Siehe examples/ für vollständigen funktionsfähigen Code:
sign1_demo.c, encrypt0_demo.c, mac0_demo.c: Algorithmus-Demoslifecycle_demo.c: vollständiger Edge-to-Cloud-Workflowcomprehensive/: Algorithmus-Matrixtestsscenarios/: Firmware-Signierung, Attestierung, FlottenkonfigurationLäuft bei jedem Push und jeder PR:
-fanalyzer--addon=misra prüft alle wolfCOSE-Codepfadebugprone-*, cert-*, clang-analyzer-*, misc-*)