
wolfCOSE v2.0.0
임베디드 시스템을 위한 빠르고, 이식성이 뛰어나며, 가벼운 COSE + CBOR 구현체입니다. PQC, FIPS 140-3, DO-178 및 MISRA C를 지원합니다. wolfSSL 기반입니다.
wolfCOSE
wolfCOSE는 핵심 CBOR 및 COSE 표준을 구현한 경량 고속 C 라이브러리로, 암호화를 위해 wolfSSL을 기반으로 합니다.
지원 표준 및 RFC
- 핵심 사양:
- 양자 내성 암호:
- 증명(Attestation):
- RFC 9783 - PSA Attestation Token Profile of EAT
주요 기능
- 완전한 COSE 제품군 (RFC 9052):
COSE_Sign1,COSE_Encrypt0,COSE_Mac0을 포함한 6가지 메시지 유형 모두를 완벽하게 지원합니다. - V2 카운터서명 (RFC 9338): 6가지 태그된 COSE 메시지 유형 모두에 대해 전체 및 축약형 인플레이스 카운터서명을 지원합니다.
- 양자 내성 암호:
- 모든 보안 수준에서의 ML-DSA (FIPS 204 / RFC 9964).
- HSS/LMS 상태 기반 해시 서명 (RFC 8778 / CNSA 2.0).
- 빠른 성능: Intel i9-11950H에서 엔드투엔드
COSE_Sign1은 ES256으로 66,538 sign/s 및 26,437 verify/s에 도달하며, ML-DSA-44로 21,986 sign/s 및 53,686 verify/s를 기록합니다. 성능 및 풋프린트 세부 정보와 wolfCOSE vs. The Field를 참조하세요. - PSA 증명: 위임된 HSM 서명 지원을 통한 EAT / PSA 토큰 발급 및 검증.
- 41가지 암호화 알고리즘: 서명, 암호화, MAC, 키 분배 전반에 걸친 폭넓은 알고리즘 지원.
- 임베디드 우선 설계: 동적 메모리 할당 없음(힙 없음,
.data/.bss제로). 호출자가 제공한 버퍼에서 동작하며 스택 사용량이 제한적입니다. - FIPS 140-3 경로: wolfCrypt (FIPS Certificate #4718)를 유일한 암호화 의존성으로 사용합니다.
- STM32 통합: STM32CubeMX / IDE용 드롭인 STM32Cube 팩(
I-CUBE-wolfCOSE) 제공 (세부 정보).
지원 알고리즘
- 디지털 서명:
- 클래식:
ESP256,ESP384,ESP512,Ed25519,Ed448,PS256,PS384,PS512 - 양자 내성:
ML-DSA-44,ML-DSA-65,ML-DSA-87 - 상태 기반 해시:
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 메시지의 단일 액터 및 다중 액터 변형을 모두 구현했습니다:
| Message | RFC 9052 | API | Purpose |
|---|---|---|---|
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 | 모든 키 유형에 대한 키 직렬화 |
RFC 9338 카운터서명은 이 표의 모든 태그된 메시지에 첨부할 수 있습니다.
wc_Cose_AddCounterSignature() 또는
wc_Cose_AddCounterSignature0()를 사용하여 추가한 다음, 대응하는
wc_Cose_VerifyCounterSignature*() API로 독립적으로 검증하세요.
의존성 (wolfSSL)
wolfCOSE는 암호화 백엔드로 wolfSSL을 필요로 합니다. 최소 지원 버전: v5.8.0-stable. 일부 선택적 알고리즘은 더 최신 릴리스를 필요로 합니다. 기능별 의존성 하한 및 빌드 지침은 시작하기를 참조하세요. 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
MCU에서 wolfCOSE와 wolfCrypt를 더욱 압축하는 방법은 크기 최적화 및 속도 최적화를 참조하세요.
최소 빌드 (양자 내성 / 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에 의해 자동으로 포함됩니다.
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-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
빌드 타겟
| Target | Description |
|---|---|
make all | libwolfcose.a 빌드 (핵심 라이브러리만) |
make shared | libwolfcose.so 빌드 |
make test | CBOR 및 COSE 단위 테스트 빌드 + 실행 |
make pkg-config-test | wolfSSL 패키지 검색 및 재정의 확인 |
make eat-psa-test | 명시적 전체 RFC 9783 PSA/EAT 적합성 제품군 빌드 + 실행 |
make eat-psa-min-buffers-test | WOLFCOSE_MIN_BUFFERS 제한 타겟 한도로 전체 PSA/EAT 제품군 실행 |
make eat-psa-config-check | PSA/EAT가 기본적으로 없음을 확인하고 기능 게이트 조합 검증 |
make psa-eat-lean-verify | 전체 #tfm 검증 전용 PSA/EAT RFC 벡터 예제 빌드 + 실행 |
make psa-eat-demo | 현재 RFC 9783 디바이스 온보딩 토큰 발급, 검증 및 평가 |
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/: 펌웨어 서명, 증명, 플릿 구성psa_eat_demo.c: 측정 평가를 포함한 RFC 9783 디바이스 온보딩psa_eat_verify_lean.c: 린 빌드에서의 RFC 9783 현재 프로필 Sign1 검증
CI / 테스트
모든 푸시 및 PR에서 실행됩니다:
- 빌드 + 테스트: Ubuntu, macOS, GCC 10-14, Clang 14-18
- 종합 테스트: 약 240가지 알고리즘 조합 테스트
- 정적 분석: cppcheck, Clang analyzer, GCC
-fanalyzer - MISRA C 2012: 모든 wolfCOSE 코드 경로를 검사하는 cppcheck
--addon=misra - MISRA C 2023: 엄격한 GCC 경고 및 clang-tidy (
bugprone-*,cert-*,clang-analyzer-*,misc-*) - Coverity Scan: 야간 결함 분석
- 내부 정적 분석: Fenrir wolfssl 고급 정적 분석 도구
- 코드 커버리지: 모든 wolfCOSE 소스 파일에 대해 100% 라인 커버리지 강제
make coverage # Run tests with gcov
make coverage-force-failure # Include crypto failure path testing