
wolfCOSE v2.0.0
Uma implementação rápida, portátil e leve de COSE + CBOR para sistemas embarcados. Suporta PQC, FIPS 140-3, DO-178 e MISRA C. Alimentado por wolfSSL.
wolfCOSE
wolfCOSE é uma biblioteca C leve e rápida que implementa os padrões principais CBOR e COSE, com suporte de wolfSSL para criptografia.
Padrões e RFCs Suportados
- Especificações Principais:
- Criptografia Pós-Quântica:
- Atestação:
- RFC 9783 - Perfil de Token de Atestação PSA do EAT
Principais Recursos
- Suíte COSE Completa (RFC 9052): Suporte completo para todos os seis tipos de mensagem, incluindo
COSE_Sign1,COSE_Encrypt0eCOSE_Mac0. - Contra-assinaturas V2 (RFC 9338): Contra-assinaturas in-place completas e abreviadas em todos os seis tipos de mensagem COSE marcados.
- Criptografia Pós-Quântica:
- ML-DSA (FIPS 204 / RFC 9964) em todos os níveis de segurança.
- Assinatura stateful baseada em hash HSS/LMS (RFC 8778 / CNSA 2.0).
- Desempenho Rápido: Em um Intel i9-11950H, o
COSE_Sign1ponta a ponta atinge 66.538 assinaturas/s e 26.437 verificações/s com ES256, e 21.986 assinaturas/s e 53.686 verificações/s com ML-DSA-44. Consulte os detalhes de desempenho e footprint e wolfCOSE vs. The Field. - Atestação PSA: Emissão e verificação de EAT / PSA Token com suporte a assinatura delegada por HSM.
- 41 Algoritmos Criptográficos: Ampla cobertura de algoritmos em assinatura, criptografia, MAC e distribuição de chaves.
- Design Embedded-First: Zero alocação dinâmica de memória (sem heap, zero
.data/.bss). Opera em buffers fornecidos pelo chamador com uso de pilha limitado. - Caminho FIPS 140-3: Usa wolfCrypt (Certificado FIPS #4718) como sua única dependência criptográfica.
- Integrado ao STM32: Pacote STM32Cube drop-in (
I-CUBE-wolfCOSE) disponível para STM32CubeMX / IDE (Detalhes).
Algoritmos Suportados
- Assinaturas Digitais:
- Clássicos:
ESP256,ESP384,ESP512,Ed25519,Ed448,PS256,PS384,PS512 - Pós-Quânticos:
ML-DSA-44,ML-DSA-65,ML-DSA-87 - Stateful Baseados em Hash:
HSS-LMS
- Clássicos:
- Criptografia (AEAD):
AES-GCM(128 / 192 / 256)AES-CCM(variantes)ChaCha20-Poly1305
- Autenticação de Mensagem (MAC):
HMAC-SHA256,HMAC-SHA384,HMAC-SHA512AES-MAC
- Distribuição de Chaves:
DirectAES Key WrapECDH-ES + HKDF
Tipos de Mensagem COSE (RFC 9052)
wolfCOSE implementou todas as mensagens da RFC 9052, tanto nas variantes de ator único quanto multi-ator:
| Mensagem | RFC 9052 | API | Propósito |
|---|---|---|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Assinatura de signatário único |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Multi-signatário (assinaturas independentes sobre o mesmo payload) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD de destinatário único |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Multi-destinatário (um ciphertext, muitos destinatários via Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC de destinatário único |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | MAC multi-destinatário (chave MAC compartilhada, distribuída aos destinatários) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Serialização de chaves para todos os tipos de chave |
Contra-assinaturas da RFC 9338 podem ser anexadas a qualquer mensagem marcada nesta
tabela. Use wc_Cose_AddCounterSignature() ou
wc_Cose_AddCounterSignature0() para adicionar uma, e depois verifique-a independentemente com
a API correspondente wc_Cose_VerifyCounterSignature*().
Dependências (wolfSSL)
wolfCOSE requer wolfSSL como seu backend criptográfico. Versão mínima suportada: v5.8.0-stable. Alguns algoritmos opcionais requerem versões mais recentes; consulte Getting Started para pisos de dependência específicos de recursos e instruções de build. HSS/LMS (RFC 8778) requer v5.9.2-stable ou posterior.
Escolha uma configuração de build com base nos algoritmos que você precisa.
Build Mínimo (ECC + AES-GCM)
Isso fornece COSE Sign1 (ESP256/384/512) e 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 um footprint menor do wolfCrypt, adicione --enable-cryptonly para remover a pilha
TLS e desabilitar os algoritmos que um build 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 e Tuning for Speed para reduzir ainda mais o wolfCOSE e o wolfCrypt em MCUs.
Build Mínimo (Somente Pós-Quântico / ML-DSA)
Para assinatura puramente pós-quântica com 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 são incluídos automaticamente por --enable-mldsa. A
API wc_MlDsaKey requer wolfSSL mais recente que v5.9.1-stable.)
Build Completo (Todos os 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
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