
wolfCOSE v2.0.0
Быстрая, портативная и легковесная реализация COSE + CBOR для встраиваемых систем. Поддерживает PQC, FIPS 140-3, DO-178 и MISRA C. Работает на базе wolfSSL.
wolfCOSE
wolfCOSE — это легковесная и быстрая библиотека на C, реализующая основные стандарты CBOR и COSE, с криптографической поддержкой на базе wolfSSL.
Поддерживаемые стандарты и RFC
- Основные спецификации:
- Постквантовая криптография:
- Аттестация:
- 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-SHA512AES-MAC
- Распределение ключей:
DirectAES Key WrapECDH-ES + HKDF
Типы сообщений COSE (RFC 9052)
wolfCOSE реализует все сообщения RFC 9052 как в односубъектных, так и в многосубъектных вариантах:
| Сообщение | RFC 9052 | API | Назначение |
|---|---|---|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Подпись одним подписантом |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Мультиподписант (независимые подписи над одной и той же полезной нагрузкой) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD для одного получателя |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Мультиполучатель (один шифротекст, много получателей через Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC для одного получателя |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | Мультиполучатель MAC (общий MAC-ключ, распространяемый получателям) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_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