wolfCOSE v2.0.0 では、次の4つの機能を追加しました。本記事では、それぞれの概要と対応するプルリクエストをまとめてご紹介します。
- COSE HPKE 暗号化(PR #70)
- 耐量子 LMS 署名(PR #72)
- COSE カウンター署名(PR #74)
- PSA アテステーションと EAT(PR #75)
v2.0.0 のその他の変更点については、wolfCOSE v2.0.0 のリリース記事をご覧ください。
COSE HPKE 暗号化
wolfSSL は、wolfCOSE に Hybrid Public Key Encryption(HPKE)のサポートを追加しました。RFC 9180 で標準化された HPKE は、KEM、KDF、AEAD を組み合わせた、誤用に強い最新の公開鍵暗号方式です。HPKE を COSE で使えるようにすることで、リソースに制約のあるデバイスや IoT デバイスでも、鍵ラッピングを独自に実装することなく、CBOR ベースのメッセージを単一または複数の受信者に向けて暗号化できます。この機能はデフォルトでは無効とし、WOLFCOSE_EXPERIMENTAL と操作ごとのマクロで有効にする設計にしたため、コアライブラリは軽量なままです。
主な機能は次のとおりです。
- 単一受信者向けの COSE_Encrypt0 と、複数受信者向けの COSE_Encrypt による HPKE
- HPKE を操作ごとに有効にする6つのマクロすべて(それぞれ個別に指定可能)
- 対になる CLI コマンド、セルフテスト、実行可能な HPKE サンプル
- 明示的に有効にしない限り機能が無効のままであることを確認するネガティブテスト
- CLI による全44件のテストで失敗ゼロを確認
HPKE サポートは現時点では実験的な基盤(P0)として導入しており、正式機能へ移行するまでの道筋もドキュメントで示しています。利用には WOLFCOSE_EXPERIMENTAL と、使用する各 HPKE 操作のマクロの両方が必要です。
詳細は PR #70 をご覧ください。
耐量子 LMS 署名
wolfSSL は、RFC 8778 に基づく HSS/LMS ステートフルハッシュベース署名のサポートを wolfCOSE に追加しました。これにより、NIST が承認した耐量子署名方式を COSE でも利用できるようになりました。ハッシュベース署名は安全性がハッシュ関数のみに依存するため、ファームウェア署名や、長期にわたって運用するアテステーションに適しています。セキュアブートや更新、デバイス ID に既に使用しているコンパクトな CBOR メッセージ形式のまま、耐量子署名を導入できます。
主な機能は次のとおりです。
- COSE アルゴリズム HSS-LMS(-46)と、COSE_Key の鍵タイプ kty 5
- COSE_Sign1、複数署名者の COSE_Sign、および委任署名での署名と検証
- 公開鍵 COSE_Key のエンコードとデコード
- 新しい API
wc_CoseKey_SetLms()、2つのサンプル、ユニットテスト - 検証専用デバイス向けのビルドプロファイル
WOLFCOSE_LEAN_LMSとWOLFCOSE_LEAN_VERIFY_LMS
LMS サポートには、--enable-lms を指定してビルドした wolfSSL が必要です。検証専用ビルドでは WOLFSSL_LMS_VERIFY_ONLY と組み合わせます。XMSS にはまだ COSE のコードポイントが割り当てられていないため、現時点では対象外としています。
詳細は PR #72 をご覧ください。
COSE カウンター署名
wolfSSL は、wolfCOSE に RFC 9338 COSE カウンター署名のサポートを追加しました。これにより、署名済み、暗号化済み、または MAC 付与済みの COSE メッセージに対して、別の当事者がさらに署名できるようになります。カウンター署名は、メッセージが存在していたことと、後から別の機関がそれを承認したことを証明できるため、公証、タイムスタンプ付与、複数の当事者が関わるワークフローで重要な役割を果たします。カウンター署名の追加により、wolfCOSE は、独立して検証可能な署名を重ねる必要があるサプライチェーンやアテステーションのユースケースにも対応できます。
主な機能は次のとおりです。
- Countersignature と Countersignature0 の作成と検証
- COSE_Sign1、COSE_Sign、COSE_Encrypt0、COSE_Encrypt、COSE_Mac0、COSE_Mac へのカウンター署名
- 現行のヘッダーラベル 11・12 への対応と、旧ラベル 7・9 の検証
- バッファのオーバーラップを明示的に検出して拒否する、インプレースでのカウンター署名(スタック使用量は実測で最大 1,912 バイト)
- コマンドラインサポートと、RFC 9338 Appendix A および旧 RFC 8152 の相互運用テストベクター
検証テストでは、テキストおよび整数のヘッダーラベル、重複ラベル、保護ヘッダーの配置、ネストした COSE 構造を網羅しています。
詳細は PR #74 をご覧ください。
PSA アテステーションと EAT
wolfSSL は、PSA Initial Attestation API 2.0 と RFC 9783 PSA Entity Attestation Token(EAT)のサポートを wolfCOSE に追加しました。これにより、デバイスは自身の ID、セキュリティライフサイクルの状態、ブート時の測定値を、IoT 分野で広く使われているコンパクトな COSE/CBOR 形式でリライングパーティに証明できます。wolfCOSE の設計方針に沿って PSA/EAT はデフォルトで完全に無効としており、有効にしない限り PSA/EAT のシンボルや解析用のコードは一切生成されません。
主な機能は次のとおりです。
- PSA Initial Attestation API 2.0 と RFC 9783 EAT トークンの発行(issue)と受信処理(consume)
- 個別に選択可能な10個のマクロ(profile、consume、issue、envelope、legacy、ヘルパーの各パス)
- 既存の機能ごとのマクロ(ES256/384/512、HMAC256/384/512、Sign1、Mac0、エンコード、デコード)の再利用
- デモ、検証専用の軽量サンプル、曲線・ハッシュ・鍵サイズの各マクロにわたるテストマトリクス
RFC 9783 のクレームは個別のマクロに分けず、まとめて扱います。プロファイルの必須動作をコンパイル対象から外すと、規格に準拠しなくなるためです。
詳細は PR #75 をご覧ください。
もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。
原文:https://www.wolfssl.com/wolfcose-adds-cose-hpke-encryption/
原文:https://www.wolfssl.com/wolfcose-adds-post-quantum-lms-signatures/
原文:https://www.wolfssl.com/wolfcose-adds-cose-countersignatures/
原文:https://www.wolfssl.com/wolfcose-adds-psa-attestation-and-eat-support/
