Volver a actualizaciones
Nuevo releaseSep 19, 2026

wolfCOSE v2.0.0

Una implementación rápida, portátil y ligera de COSE + CBOR para sistemas embebidos. Admite PQC, FIPS 140-3, DO-178 y MISRA C. Desarrollado por wolfSSL.

Compartir

wolfCOSE

wolfCOSE es una biblioteca C ligera y rápida que implementa los estándares básicos CBOR y COSE, respaldada por wolfSSL para criptografía.

Estándares y RFC compatibles

  • Especificaciones principales:
    • RFC 8949 - Concise Binary Object Representation (CBOR)
    • RFC 9052 - CBOR Object Signing and Encryption (COSE)
    • RFC 9053 - Algoritmos COSE
    • RFC 9864 - Fully-Specified Algorithms for JOSE and COSE
    • RFC 9338 - COSE Countersignatures
  • Criptografía post-cuántica:
  • Atestación:
    • RFC 9783 - PSA Attestation Token Profile of EAT

Características principales

  • Suite COSE completa (RFC 9052): Soporte completo para los seis tipos de mensaje, incluidos COSE_Sign1, COSE_Encrypt0 y COSE_Mac0.
  • Contrafirmas V2 (RFC 9338): Contrafirmas in-place completas y abreviadas en los seis tipos de mensaje COSE etiquetados.
  • Criptografía post-cuántica:
    • ML-DSA (FIPS 204 / RFC 9964) en todos los niveles de seguridad.
    • Firma con hash con estado HSS/LMS (RFC 8778 / CNSA 2.0).
  • Rendimiento rápido: En un Intel i9-11950H, COSE_Sign1 de extremo a extremo alcanza 66.538 firmas/s y 26.437 verificaciones/s con ES256, y 21.986 firmas/s y 53.686 verificaciones/s con ML-DSA-44. Consulte los detalles de rendimiento y huella y wolfCOSE vs. The Field.
  • Atestación PSA: Emisión y verificación de tokens EAT / PSA con soporte de firma HSM delegada.
  • 41 algoritmos criptográficos: Amplia cobertura de algoritmos en firma, cifrado, MAC y distribución de claves.
  • Diseño orientado a sistemas embebidos: Cero asignación dinámica de memoria (sin heap, cero .data/.bss). Opera sobre búferes proporcionados por el llamador con uso de pila acotado.
  • Ruta FIPS 140-3: Utiliza wolfCrypt (Certificado FIPS #4718) como su única dependencia criptográfica.
  • Integrado con STM32: Paquete STM32Cube listo para usar (I-CUBE-wolfCOSE) disponible para STM32CubeMX / IDE (Detalles).

Algoritmos compatibles

  • Firmas digitales:
    • Clásicos: ESP256, ESP384, ESP512, Ed25519, Ed448, PS256, PS384, PS512
    • Post-cuánticos: ML-DSA-44, ML-DSA-65, ML-DSA-87
    • Hash con estado: HSS-LMS
  • Cifrado (AEAD):
    • AES-GCM (128 / 192 / 256)
    • AES-CCM (variantes)
    • ChaCha20-Poly1305
  • Autenticación de mensajes (MAC):
    • HMAC-SHA256, HMAC-SHA384, HMAC-SHA512
    • AES-MAC
  • Distribución de claves:
    • Direct
    • AES Key Wrap
    • ECDH-ES + HKDF

Tipos de mensaje COSE (RFC 9052)

wolfCOSE ha implementado todos los mensajes del RFC 9052 tanto en variantes de un solo actor como multi-actor:

MensajeRFC 9052APIPropósito
COSE_Sign1Sec. 4.2wc_CoseSign1_Sign / wc_CoseSign1_VerifyFirma de un solo firmante
COSE_SignSec. 4.1wc_CoseSign_Sign / wc_CoseSign_VerifyMulti-firmante (firmas independientes sobre el mismo payload)
COSE_Encrypt0Sec. 5.2wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_DecryptAEAD de un solo destinatario
COSE_EncryptSec. 5.1wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_DecryptMulti-destinatario (un ciphertext, muchos destinatarios vía Direct / AES-KW / ECDH-ES)
COSE_Mac0Sec. 6.2wc_CoseMac0_Create / wc_CoseMac0_VerifyMAC de un solo destinatario
COSE_MacSec. 6.1wc_CoseMac_Create / wc_CoseMac_VerifyMAC multi-destinatario (clave MAC compartida, distribuida a los destinatarios)
COSE_Key / COSE_KeySetSec. 7wc_CoseKey_Encode / wc_CoseKey_DecodeSerialización de claves para todos los tipos de clave

Las contrafirmas del RFC 9338 se pueden adjuntar a cualquier mensaje etiquetado en esta tabla. Use wc_Cose_AddCounterSignature() o wc_Cose_AddCounterSignature0() para añadir una, y luego verifíquela de forma independiente con la API correspondiente wc_Cose_VerifyCounterSignature*().

Dependencias (wolfSSL)

wolfCOSE requiere wolfSSL como su backend criptográfico. Versión mínima compatible: v5.8.0-stable. Algunos algoritmos opcionales requieren versiones más recientes; consulte Getting Started para los mínimos de dependencia específicos de cada característica y las instrucciones de compilación. HSS/LMS (RFC 8778) requiere v5.9.2-stable o posterior.

Elija una configuración de compilación según los algoritmos que necesite.

Compilación mínima (ECC + AES-GCM)

Esto le proporciona COSE Sign1 (ESP256/384/512) y Encrypt0 (AES-GCM):

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

Algoritmos habilitados: ESP256, ESP384, ESP512, AES-GCM-128/192/256

Para una huella de wolfCrypt más pequeña, añada --enable-cryptonly para eliminar la pila TLS y deshabilitar los algoritmos que una compilación de Sign1 + Encrypt0 nunca usa:

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

Consulte Tuning for Size y Tuning for Speed para reducir aún más wolfCOSE y wolfCrypt en MCUs.

Compilación mínima (solo post-cuántica / ML-DSA)

Para firma puramente post-cuántica con ML-DSA-44/65/87:

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

Algoritmos habilitados: ML-DSA-44, ML-DSA-65, ML-DSA-87 (SHAKE-128/256 se incluyen automáticamente con --enable-mldsa. La API wc_MlDsaKey requiere wolfSSL más reciente que v5.9.1-stable.)

Compilación completa (todos los algoritmos)

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

Compilación

# 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

Objetivos de compilación

Categorías