Voltar às atualizações
New releaseSep 19, 2026

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.

Compartilhar

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:
    • RFC 8949 - Concise Binary Object Representation (CBOR)
    • RFC 9052 - CBOR Object Signing and Encryption (COSE)
    • RFC 9053 - Algoritmos COSE
    • RFC 9864 - Algoritmos Totalmente Especificados para JOSE e COSE
    • RFC 9338 - Contra-assinaturas COSE
  • 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_Encrypt0 e COSE_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_Sign1 ponta 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
  • Criptografia (AEAD):
    • AES-GCM (128 / 192 / 256)
    • AES-CCM (variantes)
    • ChaCha20-Poly1305
  • Autenticação de Mensagem (MAC):
    • HMAC-SHA256, HMAC-SHA384, HMAC-SHA512
    • AES-MAC
  • Distribuição de Chaves:
    • Direct
    • AES Key Wrap
    • ECDH-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:

MensagemRFC 9052APIPropósito
COSE_Sign1Sec. 4.2wc_CoseSign1_Sign / wc_CoseSign1_VerifyAssinatura de signatário único
COSE_SignSec. 4.1wc_CoseSign_Sign / wc_CoseSign_VerifyMulti-signatário (assinaturas independentes sobre o mesmo payload)
COSE_Encrypt0Sec. 5.2wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_DecryptAEAD de destinatário único
COSE_EncryptSec. 5.1wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_DecryptMulti-destinatário (um ciphertext, muitos destinatários via Direct / AES-KW / ECDH-ES)
COSE_Mac0Sec. 6.2wc_CoseMac0_Create / wc_CoseMac0_VerifyMAC de destinatário único
COSE_MacSec. 6.1wc_CoseMac_Create / wc_CoseMac_VerifyMAC multi-destinatário (chave MAC compartilhada, distribuída aos destinatários)
COSE_Key / COSE_KeySetSec. 7wc_CoseKey_Encode / wc_CoseKey_DecodeSerializaçã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

Alvos de Build

Categorias