MS_COSE - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

COSE

概要

JSON > JOSECBOR版(CBOR > COSE)

  • CBORオブジェクト署名と暗号化に関する仕様。
  • COSE のサブセット仕様に CWTがある。
  • 読み方が不明。コース?
# フォーマット メッセージ構造
1 JSON JOSE
2 CBOR COSE

移行メモ(正式名称と読み): COSE = CBOR Object Signing and Encryption
(RFC 8152、後継は RFC 9052 / 9053)。
「コーズ」と読まれることが多い(JOSE が「ホゼ」「ジョーズ」と
読まれるのと同様、定訳は無い)。

補足(なぜ CBOR 版が必要だったのか): JOSE(JSON ベース)で
十分に見えるが、IoT / 組込みの制約環境では次が問題になる。

JOSE(JSON) COSE(CBOR)
エンコード テキスト。Base64url で 33% 膨らむ バイナリ。そのまま埋め込める
サイズ 大きい 小さい(数割〜半分)
パーサ 文字列処理が必要 小さく実装できる
対象 Web / HTTP IoT / LPWA / NFC / BLE

「通信量が課金や電池消費に直結する」世界では、
この差が採用理由になる。
IoT関連の通信プロトコルの多くが CBOR / COSE を前提としている。

詳細

主な構成

COSE JOSEの対応物 内容
COSE_Sign / COSE_Sign1 JWS 署名
COSE_Encrypt / COSE_Encrypt0 JWE 暗号化
COSE_Key JWK 鍵の表現
CWT JWT クレーム セット(RFC 8392)

補足(01 付きの型): COSE_Sign1 / COSE_Encrypt0
末尾の数字は受信者・署名者の数を意味する。

用途
COSE_Sign 複数の署名者
COSE_Sign1 署名者 1 人(最も多用される。サイズが小さい)
COSE_Encrypt 複数の受信者
COSE_Encrypt0 受信者 1 人(鍵管理レイヤ無し)

制約環境では、ほぼ COSE_Sign1 / COSE_Encrypt0 が使われる。

主な採用例

補足(実は身近で使われている): COSE は「IoT 向けのマイナー仕様」に
見えるが、次のような広く使われる技術の基盤になっている。

用途 内容
WebAuthn / FIDO2 認証器の公開鍵が COSE_Key 形式で表現される
EU デジタル COVID 証明書 QR コードの中身が CWT(COSE_Sign1)
CoAP / OSCORE IoT 向けの HTTP 代替プロトコル群
SUIT IoT デバイスのファームウェア更新マニフェスト

特に WebAuthnを実装する場合、
認証器から返る公開鍵をパースするために COSE_Key の知識が要る
kty / alg / crv / x / y が整数キーで表現される)。

参考


Tags: 移行, IT国際標準, プログラミング, 通信技術, 認証基盤, クレームベース認証, 暗号化

⚠️ **GitHub.com Fallback** ⚠️