MS_COSE - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
JSON > JOSE の CBOR版(CBOR > COSE)
| # | フォーマット | メッセージ構造 |
|---|---|---|
| 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) |
補足(
0/1付きの型):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が整数キーで表現される)。
-
RFC 9052 - CBOR Object Signing and Encryption (COSE): Structures and Process
https://datatracker.ietf.org/doc/html/rfc9052 -
RFC 9053 - COSE: Initial Algorithms
https://datatracker.ietf.org/doc/html/rfc9053 -
RFC 8152 - CBOR Object Signing and Encryption (COSE)(旧版)
https://datatracker.ietf.org/doc/html/rfc8152 -
RFC 8392 - CBOR Web Token (CWT)
https://datatracker.ietf.org/doc/html/rfc8392
Tags: 移行, IT国際標準, プログラミング, 通信技術, 認証基盤, クレームベース認証, 暗号化