
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.
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:
- 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_Encrypt0yCOSE_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_Sign1de 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
- Clásicos:
- Cifrado (AEAD):
AES-GCM(128 / 192 / 256)AES-CCM(variantes)ChaCha20-Poly1305
- Autenticación de mensajes (MAC):
HMAC-SHA256,HMAC-SHA384,HMAC-SHA512AES-MAC
- Distribución de claves:
DirectAES Key WrapECDH-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:
| Mensaje | RFC 9052 | API | Propósito |
|---|---|---|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Firma de un solo firmante |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Multi-firmante (firmas independientes sobre el mismo payload) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD de un solo destinatario |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Multi-destinatario (un ciphertext, muchos destinatarios vía Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC de un solo destinatario |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | MAC multi-destinatario (clave MAC compartida, distribuida a los destinatarios) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Serializació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