Retour aux mises à jour
New releaseSep 19, 2026

wolfCOSE v2.0.0

Une implémentation COSE + CBOR rapide, portable et légère pour les systèmes embarqués. Prend en charge PQC, FIPS 140-3, DO-178 et MISRA C. Propulsé par wolfSSL.

Partager

wolfCOSE

wolfCOSE est une bibliothèque C légère et rapide implémentant les normes fondamentales CBOR et COSE, s'appuyant sur wolfSSL pour la cryptographie.

Normes et RFC prises en charge

  • Spécifications principales :
    • RFC 8949 - Concise Binary Object Representation (CBOR)
    • RFC 9052 - CBOR Object Signing and Encryption (COSE)
    • RFC 9053 - Algorithmes COSE
    • RFC 9864 - Fully-Specified Algorithms for JOSE and COSE
    • RFC 9338 - COSE Countersignatures
  • Cryptographie post-quantique :
  • Attestation :
    • RFC 9783 - PSA Attestation Token Profile of EAT

Fonctionnalités principales

  • Suite COSE complète (RFC 9052) : Prise en charge complète des six types de messages, notamment COSE_Sign1, COSE_Encrypt0 et COSE_Mac0.
  • Contre-signatures V2 (RFC 9338) : Contre-signatures in-place complètes et abrégées sur les six types de messages COSE balisés.
  • Cryptographie post-quantique :
    • ML-DSA (FIPS 204 / RFC 9964) à tous les niveaux de sécurité.
    • Signature à base de hachage avec état HSS/LMS (RFC 8778 / CNSA 2.0).
  • Performances élevées : Sur un Intel i9-11950H, le COSE_Sign1 de bout en bout atteint 66 538 sign/s et 26 437 verify/s avec ES256, et 21 986 sign/s et 53 686 verify/s avec ML-DSA-44. Voir les détails de performance et d'empreinte et wolfCOSE vs. The Field.
  • Attestation PSA : Émission et vérification de jetons EAT / PSA avec prise en charge de la signature déléguée par HSM.
  • 41 algorithmes cryptographiques : Large couverture algorithmique pour la signature, le chiffrement, le MAC et la distribution de clés.
  • Conception orientée embarqué : Aucune allocation dynamique de mémoire (pas de tas, zéro .data/.bss). Fonctionne sur des tampons fournis par l'appelant avec une utilisation de pile bornée.
  • Voie FIPS 140-3 : Utilise wolfCrypt (certificat FIPS n° 4718) comme unique dépendance cryptographique.
  • Intégration STM32 : Pack STM32Cube prêt à l'emploi (I-CUBE-wolfCOSE) disponible pour STM32CubeMX / IDE (Détails).

Algorithmes pris en charge

  • Signatures numériques :
    • Classiques : ESP256, ESP384, ESP512, Ed25519, Ed448, PS256, PS384, PS512
    • Post-quantiques : ML-DSA-44, ML-DSA-65, ML-DSA-87
    • À base de hachage avec état : HSS-LMS
  • Chiffrement (AEAD) :
    • AES-GCM (128 / 192 / 256)
    • AES-CCM (variantes)
    • ChaCha20-Poly1305
  • Authentification de message (MAC) :
    • HMAC-SHA256, HMAC-SHA384, HMAC-SHA512
    • AES-MAC
  • Distribution de clés :
    • Direct
    • AES Key Wrap
    • ECDH-ES + HKDF

Types de messages COSE (RFC 9052)

wolfCOSE a implémenté tous les messages de la RFC 9052, dans leurs variantes mono-acteur et multi-acteur :

MessageRFC 9052APIObjectif
COSE_Sign1Sec. 4.2wc_CoseSign1_Sign / wc_CoseSign1_VerifySignature à signataire unique
COSE_SignSec. 4.1wc_CoseSign_Sign / wc_CoseSign_VerifyMulti-signataires (signatures indépendantes sur la même charge utile)
COSE_Encrypt0Sec. 5.2wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_DecryptAEAD à destinataire unique
COSE_EncryptSec. 5.1wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_DecryptMulti-destinataires (un seul texte chiffré, plusieurs destinataires via Direct / AES-KW / ECDH-ES)
COSE_Mac0Sec. 6.2wc_CoseMac0_Create / wc_CoseMac0_VerifyMAC à destinataire unique
COSE_MacSec. 6.1wc_CoseMac_Create / wc_CoseMac_VerifyMAC multi-destinataires (clé MAC partagée, distribuée aux destinataires)
COSE_Key / COSE_KeySetSec. 7wc_CoseKey_Encode / wc_CoseKey_DecodeSérialisation de clés pour tous les types de clés

Les contre-signatures de la RFC 9338 peuvent être attachées à n'importe quel message balisé de ce tableau. Utilisez wc_Cose_AddCounterSignature() ou wc_Cose_AddCounterSignature0() pour en ajouter une, puis vérifiez-la indépendamment avec l'API wc_Cose_VerifyCounterSignature*() correspondante.

Dépendances (wolfSSL)

wolfCOSE nécessite wolfSSL comme backend cryptographique. Version minimale prise en charge : v5.8.0-stable. Certains algorithmes optionnels nécessitent des versions plus récentes ; voir Getting Started pour les seuils de dépendance spécifiques aux fonctionnalités et les instructions de compilation. HSS/LMS (RFC 8778) nécessite v5.9.2-stable ou une version ultérieure.

Choisissez une configuration de compilation en fonction des algorithmes dont vous avez besoin.

Compilation minimale (ECC + AES-GCM)

Cela vous donne COSE Sign1 (ESP256/384/512) et Encrypt0 (AES-GCM) :

cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
            --enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig

Algorithmes activés : ESP256, ESP384, ESP512, AES-GCM-128/192/256

Pour une empreinte wolfCrypt plus réduite, ajoutez --enable-cryptonly afin de supprimer la pile TLS et de désactiver les algorithmes qu'une compilation Sign1 + Encrypt0 n'utilise jamais :

./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

Voir Tuning for Size et Tuning for Speed pour réduire davantage wolfCOSE et wolfCrypt sur les MCU.

Compilation minimale (post-quantique / ML-DSA uniquement)

Pour une signature purement post-quantique avec ML-DSA-44/65/87 :

cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig

Algorithmes activés : ML-DSA-44, ML-DSA-65, ML-DSA-87 (SHAKE-128/256 sont tirés automatiquement par --enable-mldsa. L'API wc_MlDsaKey nécessite une version de wolfSSL plus récente que v5.9.1-stable.)

Compilation complète (tous les algorithmes)

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

Compilation

# 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

Cibles de compilation

Catégories