
임베디드 시스템을 위한 빠르고, 이식성이 뛰어나며, 가벼운 COSE + CBOR 구현체입니다. PQC, FIPS 140-3, DO-178 및 MISRA C를 지원합니다. wolfSSL 기반입니다.
wolfCOSE는 wolfSSL을 암호화 백엔드로 사용하여 CBOR (RFC 8949), COSE (RFC 9052/9053), 그리고 포스트퀀텀 COSE용 ML-DSA (RFC 9964)를 구현하는 경량 C 라이브러리입니다.
COSE_Sign 및 다중 수신자 COSE_Encrypt / COSE_Mac을 포함한 6가지 COSE 메시지 유형 전체COSE_Key(AKP 키 유형, 시드 기반 개인 키).data/.bss 사용량 0).COSE_Sign1 wolfCOSE(COSE + CBOR 엔진)는 검증 전용 ~5.1 KB, 서명 + 검증 ~6.8 KB입니다.
wolfCrypt를 포함한 총 플래시는 검증 전용(WOLFCOSE_LEAN_VERIFY) ~26.2 KB, 서명 + 검증 ~34.6 KB입니다.COSE_Sign1, x86_64, wolfCrypt sp_256 asm): 초당 66,538회 서명, 초당 26,437회 검증COSE_Sign1은 wolfCrypt를 포함한 총 플래시가 검증 전용
(WOLFCOSE_LEAN_VERIFY_MLDSA) ~20.8 KB, 서명 + 검증 ~35.8 KB로 기존 ES256과 약 1 KB 이내의 차이입니다. wolfCOSE 부분만으로는
각각 4.6 KB 및 ~6.6 KB입니다. 풋프린트 참조서명: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
암호화: AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM variants
MAC: HMAC-SHA256/384/512, AES-MAC
키 분배: Direct, AES Key Wrap, ECDH-ES+HKDF
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 | 모든 키 유형에 대한 키 직렬화 |
wolfCOSE는 암호화 백엔드로 wolfSSL이 필요합니다. 최소 지원 버전: v5.8.0-stable(공개 wc_ForceZero 심볼이 포함된 첫 릴리스). 포스트퀀텀 서명은 wolfSSL v5.9.1-stable 이후 버전에 포함된 표준 FIPS 204 wc_MlDsaKey API를 사용합니다. v5.8.0–v5.9.1에 대해 wolfCOSE를 빌드하면 ML-DSA를 제외한 모든 기능이 작동합니다. 이전 5.x 릴리스도 기술적으로 지원할 수 있지만 소스 수준의 변경이 필요합니다. 상업적 지원은 wolfSSL에 문의하세요.
필요한 알고리즘에 따라 빌드 구성을 선택하세요.
이 구성을 사용하면 COSE Sign1(ES256/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
활성화되는 알고리즘: ES256, ES384, ES512, 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
MCU에서 wolfCOSE와 wolfCrypt를 더욱 최적화하려면 크기 조정 및 속도 조정을 참조하세요.
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에 의해 자동으로 포함됩니다.
wc_MlDsaKey API는 v5.9.1-stable보다 최신 wolfSSL이 필요합니다.)
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-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
| 대상 | 설명 |
|---|---|
make all | libwolfcose.a 빌드(코어 라이브러리 전용) |
make shared | libwolfcose.so 빌드 |
make test | CBOR 및 COSE 단위 테스트 빌드 + 실행 |
make tool | CLI 도구 빌드(tools/wolfcose_tool) |
make tool-test | 17개 전체 알고리즘에 대한 왕복 자체 테스트 |
make demo | 수명 주기 데모 빌드 + 실행(11개 알고리즘) |
make clean | 모든 빌드 산출물 제거 |
완전한 작동 코드는 examples/를 참조하세요:
sign1_demo.c, encrypt0_demo.c, mac0_demo.c: 알고리즘 데모lifecycle_demo.c: 엣지-클라우드 전체 워크플로comprehensive/: 알고리즘 매트릭스 테스트scenarios/: 펌웨어 서명, 증명, 플릿 구성모든 푸시와 PR에서 실행됩니다:
-fanalyzer--addon=misra로 모든 wolfCOSE 코드 경로 검사bugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # Run tests with gcov
make coverage-force-failure # Include crypto failure path testing
전체 문서는 Wiki에서 확인할 수 있습니다: