Назад к обновлениям
New releaseSep 19, 2026

wolfCOSE v2.0.0

Быстрая, портативная и легковесная реализация COSE + CBOR для встраиваемых систем. Поддерживает PQC, FIPS 140-3, DO-178 и MISRA C. Работает на базе wolfSSL.

Поделиться

wolfCOSE

wolfCOSE — это легковесная и быстрая библиотека на C, реализующая основные стандарты CBOR и COSE, с криптографической поддержкой на базе wolfSSL.

Поддерживаемые стандарты и RFC

  • Основные спецификации:
    • RFC 8949 — Concise Binary Object Representation (CBOR)
    • RFC 9052 — CBOR Object Signing and Encryption (COSE)
    • RFC 9053 — алгоритмы COSE
    • RFC 9864 — Fully-Specified Algorithms for JOSE and COSE
    • RFC 9338 — COSE Countersignatures
  • Постквантовая криптография:
  • Аттестация:
    • RFC 9783 — PSA Attestation Token Profile of EAT

Основные возможности

  • Полный набор COSE (RFC 9052): Полная поддержка всех шести типов сообщений, включая COSE_Sign1, COSE_Encrypt0 и COSE_Mac0.
  • Countersignatures V2 (RFC 9338): Полные и сокращённые встроенные countersignatures для всех шести типизированных типов сообщений COSE.
  • Постквантовая криптография:
    • ML-DSA (FIPS 204 / RFC 9964) на всех уровнях безопасности.
    • HSS/LMS — stateful hash-based подпись (RFC 8778 / CNSA 2.0).
  • Высокая производительность: На Intel i9-11950H сквозной COSE_Sign1 достигает 66 538 sign/s и 26 437 verify/s с ES256, а также 21 986 sign/s и 53 686 verify/s с ML-DSA-44. См. детали производительности и размера и wolfCOSE vs. The Field.
  • PSA Attestation: Выпуск и проверка EAT / PSA Token с поддержкой делегированной подписи через HSM.
  • 41 криптографический алгоритм: Широкий охват алгоритмов для подписи, шифрования, MAC и распределения ключей.
  • Дизайн для встраиваемых систем: Нулевое динамическое выделение памяти (без кучи, ноль .data/.bss). Работа с буферами, предоставляемыми вызывающей стороной, с ограниченным использованием стека.
  • Путь к FIPS 140-3: Использует wolfCrypt (FIPS Certificate #4718) в качестве единственной криптографической зависимости.
  • Интеграция со STM32: Доступен готовый пакет STM32Cube (I-CUBE-wolfCOSE) для STM32CubeMX / IDE (Подробности).

Поддерживаемые алгоритмы

  • Цифровые подписи:
    • Классические: ESP256, ESP384, ESP512, Ed25519, Ed448, PS256, PS384, PS512
    • Постквантовые: ML-DSA-44, ML-DSA-65, ML-DSA-87
    • Stateful Hash-Based: HSS-LMS
  • Шифрование (AEAD):
    • AES-GCM (128 / 192 / 256)
    • AES-CCM (варианты)
    • ChaCha20-Poly1305
  • Аутентификация сообщений (MAC):
    • HMAC-SHA256, HMAC-SHA384, HMAC-SHA512
    • AES-MAC
  • Распределение ключей:
    • Direct
    • AES Key Wrap
    • ECDH-ES + HKDF

Типы сообщений COSE (RFC 9052)

wolfCOSE реализует все сообщения RFC 9052 как в односубъектных, так и в многосубъектных вариантах:

СообщениеRFC 9052APIНазначение
COSE_Sign1Sec. 4.2wc_CoseSign1_Sign / wc_CoseSign1_VerifyПодпись одним подписантом
COSE_SignSec. 4.1wc_CoseSign_Sign / wc_CoseSign_VerifyМультиподписант (независимые подписи над одной и той же полезной нагрузкой)
COSE_Encrypt0Sec. 5.2wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_DecryptAEAD для одного получателя
COSE_EncryptSec. 5.1wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_DecryptМультиполучатель (один шифротекст, много получателей через Direct / AES-KW / ECDH-ES)
COSE_Mac0Sec. 6.2wc_CoseMac0_Create / wc_CoseMac0_VerifyMAC для одного получателя
COSE_MacSec. 6.1wc_CoseMac_Create / wc_CoseMac_VerifyМультиполучатель MAC (общий MAC-ключ, распространяемый получателям)
COSE_Key / COSE_KeySetSec. 7wc_CoseKey_Encode / wc_CoseKey_DecodeСериализация ключей для всех типов ключей

Countersignatures из RFC 9338 могут быть прикреплены к любому типизированному сообщению из этой таблицы. Используйте wc_Cose_AddCounterSignature() или wc_Cose_AddCounterSignature0() для добавления, затем проверяйте её независимо с помощью соответствующего API wc_Cose_VerifyCounterSignature*().

Зависимости (wolfSSL)

wolfCOSE требует wolfSSL в качестве криптографического бэкенда. Минимальная поддерживаемая версия: v5.8.0-stable. Некоторые опциональные алгоритмы требуют более новых релизов; см. Getting Started для минимальных версий зависимостей по функциям и инструкций по сборке. HSS/LMS (RFC 8778) требует v5.9.2-stable или новее.

Выберите конфигурацию сборки в зависимости от нужных вам алгоритмов.

Минимальная сборка (ECC + AES-GCM)

Это даёт вам COSE Sign1 (ESP256/384/512) и Encrypt0 (AES-GCM):

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

Включённые алгоритмы: ESP256, ESP384, ESP512, AES-GCM-128/192/256

Для меньшего размера wolfCrypt добавьте --enable-cryptonly, чтобы исключить стек TLS и отключить алгоритмы, которые сборка Sign1 + Encrypt0 никогда не использует:

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

См. Tuning for Size и Tuning for Speed для дальнейшей оптимизации wolfCOSE и wolfCrypt на MCU.

Минимальная сборка (только постквантовая / ML-DSA)

Для чисто постквантовой подписи с ML-DSA-44/65/87:

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

Включённые алгоритмы: ML-DSA-44, ML-DSA-65, ML-DSA-87 (SHAKE-128/256 подключаются автоматически через --enable-mldsa. API wc_MlDsaKey требует wolfSSL новее v5.9.1-stable.)

Полная сборка (все алгоритмы)

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

Сборка

# 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

Цели сборки

Категории