Skip to content
nishi_74322014 edited this page Sep 1, 2026 · 1 revision

CWT

概要

  • CWT : COSE Web Token は、cot(コット)と発音する。
  • COSE : CBOR Object Signing and Encryption のサブセット仕様。
    • JWTと同等の機能を持つ
    • JSONよりも軽量な CBOR
    • IoT 時代に注目されている。

移行メモ(正誤): 元ページは COSE を
COSE Object Signing and Encryption」と記しているが、
正しくは CBOR Object Signing and Encryption である。

また、CWT は COSE の「サブセット仕様」というより、
COSE を利用してクレーム セットを表現する仕様(RFC 8392)である。
JWTJOSEを利用するのと同じ関係にある。

JSON CBOR
メッセージ構造 JOSE COSE
クレーム セット JWT CWT

詳細

クレームの表現

CWT の要点は、クレーム名が整数キーになることである。

JWT(文字列キー) CWT(整数キー) 意味
iss 1 発行者
sub 2 主体
aud 3 対象者
exp 4 有効期限
nbf 5 開始日時
iat 6 発行日時
ctijti 相当) 7 トークン識別子

補足(どれだけ小さくなるか): JWT
JSON をテキストで書き、さらに Base64url するため、
二重に膨らむ。

JWT : {"iss":"coap://as.example.com","sub":"erikw","exp":1444064944}
      → Base64url で 1.33 倍
CWT : バイナリ。キーは整数 1 バイト、日時は数値のまま

実測では JWT の 1/2〜1/3 程度になることが多い。
LPWA(LoRaWAN / NB-IoT)のように
1 パケット数十バイトという制約下では、この差が決定的になる。

その他

呼称 内容
CWS CWS という仕様は無いが、JWSのような COSE の使用方法(Signed CWT)もある模様。
CWE CWE という仕様は無いが、JWEのような COSE の使用方法(Encrypted CWT)もある模様。
CWK CWK という仕様は無いが、JWKのような COSE の使用方法もある模様。
WebAuthnのコンテキストで、COSE_Key というモノが登場する。

補足(名前が無いのは構造が違うため): JOSE側は
JWS / JWE / JWK と別々の仕様書に分かれているが、
COSE 側は RFC 9052 / 9053 の 2 本にまとまっている
このため「CWS」「CWE」という個別の呼称が存在しない。

対応関係は次のとおり(COSEも参照)。

JOSE COSE の構造体
JWS COSE_Sign1 / COSE_Sign
JWE COSE_Encrypt0 / COSE_Encrypt
JWK COSE_Key

主な採用例

補足(実際に広く使われている): CWT は
「IoT 向けのニッチな仕様」に見えるが、次の場面で使われている。

用途 内容
EU デジタル COVID 証明書 QR コードの中身が CWT(COSE_Sign1
ACE-OAuth(RFC 9200) 制約環境向けの OAuth 2.0。アクセス トークンが CWT
CoAP / OSCORE IoT 向けの HTTP 代替プロトコル

特に 1 番目は、QR コードに収めるという要件から
JWTではサイズが足りず CWT が選ばれた実例で、
CWT の存在意義を端的に示している。

参考

ritou([CWT入門そのn] - Qiita)


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

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally