
wolfCOSE v2.0.0
組み込みシステム向けの高速、ポータブル、軽量なCOSE + CBOR実装。PQC、FIPS 140-3、DO-178、MISRA Cをサポート。wolfSSL採用。
wolfCOSE
wolfCOSEは、CBOR (RFC 8949)、COSE (RFC 9052/9053)、および wolfSSL を暗号バックエンドとして使用した耐量子 ML-DSA for COSE (RFC 9964) を実装する軽量Cライブラリです。
主な機能
- 完全なRFC 9052メッセージセット: 6種類すべてのCOSEメッセージタイプ。複数署名者
COSE_Signや複数受信者COSE_Encrypt/COSE_Macを含む - 耐量子署名: 3つのセキュリティレベルすべてにおけるML-DSA(FIPS 204)。RFC 9964
COSE_Key(AKP鍵タイプ、シードベースの秘密鍵)に対応 - 40種類のアルゴリズム: 署名、暗号化、MAC、鍵配布をカバー
- 動的割り当てゼロ: ヒープ割り当てなし、非再帰。すべての操作は呼び出し元が提供するバッファ上で実行され、スタック使用量はターゲットに合わせてカスタマイズ可能な上限内に収まります(ヒープ不使用、
.data/.bssもゼロ) - 小型フットプリント: ES256
COSE_Sign1wolfCOSE(COSE + CBORエンジン)約5.1 KB(検証のみ)、約6.8 KB(署名+検証)。wolfCryptを含むフラッシュ合計は約26.2 KB(WOLFCOSE_LEAN_VERIFY)、約34.6 KB(署名+検証) - 高速:(ES256
COSE_Sign1、x86_64、wolfCryptsp_256asm): 66,538 署名/秒、26,437 検証/秒 - 同コストでの耐量子: ML-DSA-44
COSE_Sign1のwolfCryptを含むフラッシュ合計は約20.8 KB(WOLFCOSE_LEAN_VERIFY_MLDSA)、約35.8 KB(署名+検証)。従来のES256と約1KB以内の差です。wolfCOSE部分のみではそれぞれ4.6 KBと約6.6 KBです。詳細はフットプリントを参照 - FIPS 140-3への対応: wolfCrypt FIPS Certificate #4718(唯一の暗号依存関係)経由
サポートされているアルゴリズム
署名: 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
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 | 複数受信者(1つの暗号文、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 | すべての鍵タイプの鍵シリアライゼーション |
前提条件(wolfSSL)
wolfCOSEは暗号バックエンドとしてwolfSSLを必要とします。最小サポートバージョン: v5.8.0-stable(公開の wc_ForceZero シンボルを含む最初のリリース)。耐量子署名は正規のFIPS 204 wc_MlDsaKey APIを使用します。このAPIはwolfSSL v5.9.1-stable以降で利用可能です。v5.8.0~v5.9.1に対してwolfCOSEをビルドすると、ML-DSA以外はすべて動作します。古い5.xリリースも技術的にはサポート可能ですが、ソースレベルの変更が必要です。商用サポートについてはwolfSSLにお問い合わせください。
必要なアルゴリズムに基づいてビルド構成を選択してください。
最小ビルド(ECC + AES-GCM)
これにより、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のみ)
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には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-hkdf --enable-aeskeywrap
make && sudo make install
sudo ldconfig
ビルド
# コアライブラリ (libwolfcose.a)
make
# 単体テストの実行
make test
# CLIツールのラウンドトリップテスト(全アルゴリズム)のビルドと実行
make tool-test
# ライフサイクルデモの実行(11アルゴリズム)
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/: ファームウェア署名、アテステーション、フリート設定
CI / テスト
プッシュおよびPRのたびに実行:
- ビルド+テスト: Ubuntu、macOS、GCC 10-14、Clang 14-18
- 網羅的テスト: 約240のアルゴリズム組み合わせテスト
- 静的解析: cppcheck、Clangアナライザー、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.c で99.3%、wolfcose_cbor.c で100%
make coverage # gcovでテストを実行
make coverage-force-failure # 暗号失敗パステストを含める
ドキュメント
完全なドキュメントはWikiで入手可能:
- はじめに: ビルド手順と最初のステップ
- メッセージタイプ: 6種類すべてのRFC 9052メッセージ(Sign1、Sign、Encrypt0、Encrypt、Mac0、Mac)をコードサンプルとともに
- アルゴリズム: サポートする40のアルゴリズムの完全なリストとCOSE ID
- APIリファレンス: 関数シグネチャ、データ構造、エラーコード
- マクロ: コンパイル時設定オプション
- フットプリント: サイズと速度の数値、デスクトップおよびデバイス上
- テスト: テストインフラストラクチャ、カバレッジ、障害注入
- MISRA準拠: MISRA C:2012およびC:2023の準拠状況と逸脱の理由
- プロジェクト構造: ソースファイルのレイアウト
リリースノート
現在のリリースは 1.0.0、最初の安定リリースです。完全なRFC 9052 COSEメッセージセット(6種類すべてのメッセージタイプ、単一アクターおよび複数アクター)、40のアルゴリズム、標準化された耐量子ML-DSA(RFC 9964)、すべて動的割り当てゼロで実現しています。完全なリリースノートはChangeLog.mdを参照してください。
wolfCOSE 1.0.0はwolfSSLの開発およびQAプロセス(https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance 参照)に従って開発され、品質基準を正常に満たしています。
ライセンス
wolfCOSEはGPLv3のもとで提供されるフリーソフトウェアです。全文についてはLICENSEを参照してください。
Copyright (C) 2026 wolfSSL Inc.
サポート
商用ライセンス、プロフェッショナルサポート契約、またはwolfCOSEを本番環境に導入するためのご相談は、wolfSSLまでお問い合わせください。