アップデート一覧に戻る
New releaseSep 19, 2026

wolfCOSE v2.0.0

組み込みシステム向けの高速、ポータブル、軽量なCOSE + CBOR実装。PQC、FIPS 140-3、DO-178、MISRA Cをサポート。wolfSSL採用。

共有

wolfCOSE

wolfCOSEは、暗号処理にwolfSSLを採用した、CBORおよびCOSEのコア標準を実装する軽量かつ高速なCライブラリです。

サポートする標準規格とRFC

  • コア仕様:
    • RFC 8949 - Concise Binary Object Representation (CBOR)
    • RFC 9052 - CBOR Object Signing and Encryption (COSE)
    • RFC 9053 - COSEアルゴリズム
    • RFC 9864 - JOSEおよびCOSE向けの完全指定アルゴリズム
    • RFC 9338 - COSEカウンター署名
  • 耐量子暗号:
  • アテステーション:
    • RFC 9783 - EATのPSAアテステーショントークンプロファイル

主な機能

  • 完全な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-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_Decrypt単一受信者AEAD
COSE_EncryptSec. 5.1wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decryptマルチ受信者 (1つの暗号文をDirect / AES-KW / ECDH-ES経由で多数の受信者へ)
COSE_Mac0Sec. 6.2wc_CoseMac0_Create / wc_CoseMac0_Verify単一受信者MAC
COSE_MacSec. 6.1wc_CoseMac_Create / wc_CoseMac_Verifyマルチ受信者MAC (共有MAC鍵を受信者へ配布)
COSE_Key / COSE_KeySetSec. 7wc_CoseKey_Encode / wc_CoseKey_Decodeすべての鍵タイプの鍵シリアライゼーション

RFC 9338カウンター署名は、この表の任意のタグ付きメッセージに付加できます。 wc_Cose_AddCounterSignature()または wc_Cose_AddCounterSignature0()で追加し、対応する wc_Cose_VerifyCounterSignature*() APIで独立して検証します。

依存関係 (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

MCU上でwolfCOSEとwolfCryptをさらに絞り込む方法については、Tuning for SizeおよびTuning for Speed を参照してください。

最小ビルド (耐量子 / 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

ビルドターゲット

ターゲット説明
make alllibwolfcose.aをビルド (コアライブラリのみ)
make sharedlibwolfcose.soをビルド
make testCBORおよびCOSEの単体テストをビルドして実行
make pkg-config-testwolfSSLのパッケージ検出とオーバーライドを検証
make eat-psa-test明示的な完全RFC 9783 PSA/EAT準拠スイートをビルドして実行
make eat-psa-min-buffers-testWOLFCOSE_MIN_BUFFERS制約ターゲット制限付きで完全なPSA/EATスイートを実行
make eat-psa-config-checkPSA/EATがデフォルトで無効であることを検証し、機能ゲートの組み合わせを検証
make psa-eat-lean-verify完全な#tfm検証専用PSA/EAT RFCベクター例をビルドして実行
make psa-eat-demo現在のRFC 9783デバイスオンボーディングトークンを発行、検証、評価
make toolCLIツール (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アナライザー、GCC -fanalyzer
  • MISRA C 2012: cppcheck --addon=misraで全wolfCOSEコードパスをチェック
  • 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
Coverity Scan Build Status CI Status

ドキュメント

カテゴリ