MS_CWT - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
移行メモ(正誤): 元ページは COSE を
「COSE Object Signing and Encryption」と記しているが、
正しくは CBOR Object Signing and Encryption である。また、CWT は COSE の「サブセット仕様」というより、
COSE を利用してクレーム セットを表現する仕様(RFC 8392)である。
JWTが JOSEを利用するのと同じ関係にある。
JSON系 CBOR系 メッセージ構造 JOSE COSE クレーム セット JWT CWT
CWT の要点は、クレーム名が整数キーになることである。
| JWT(文字列キー) | CWT(整数キー) | 意味 |
|---|---|---|
iss |
1 | 発行者 |
sub |
2 | 主体 |
aud |
3 | 対象者 |
exp |
4 | 有効期限 |
nbf |
5 | 開始日時 |
iat |
6 | 発行日時 |
cti(jti 相当) |
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_SignJWE COSE_Encrypt0/COSE_EncryptJWK 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 の存在意義を端的に示している。
-
RFC 8392 - CBOR Web Token (CWT)
https://datatracker.ietf.org/doc/html/rfc8392 -
RFC 9200 - Authentication and Authorization for Constrained Environments (ACE-OAuth)
https://datatracker.ietf.org/doc/html/rfc9200
- (1) CBORによるオブジェクトのバイナリ表現
https://qiita.com/ritou/items/f3eafedab038d17e3066 - (2) CBOR Object Signing and Encryption (COSE)
https://qiita.com/ritou/items/bd2d429dae63bf0ad325 - (3) クレームもコンパクトに表現された CBOR Web Token (RFC8392)
https://qiita.com/ritou/items/d6a6c635ce72b14982f6
Tags: 移行, IT国際標準, プログラミング, 通信技術, 認証基盤, クレームベース認証, 暗号化