CBOR/COSE
CBORとは、JSONとほぼ同じ種類のデータを、人が読む文字ではなく機械向けの詰めた形(バイナリ形式)で表すための形式のことです。COSEは、その形式を使って署名や暗号化、鍵を表す方法を定めたものです。
別表記:CBOR/COSE/Concise Binary Object Representation/CBOR Object Signing and Encryption
どういう形式なのか
データの種類はJSONを土台に広げたもので、文字にできない値(バイト列)もそのまま扱えます。データの定義(スキーマ)を知らなくても読み取れることが目標の1つです。2020年12月に、IETFの標準の文書(RFC)として発行されました。
COSEは何を定めているのか
JSONについて署名、暗号化、鍵の表し方を定めた一連の文書(JOSE)と同じことを、CBORについて行うものです。署名、暗号化、改ざんを見つけるための値(MAC)のそれぞれに、用途の違う2つの形が定められています。署名であれば、複数人で署名する形(COSE_Sign)と、署名する者が1人の形(COSE_Sign1)です。
鍵を運ぶ形(COSE_Key)と、鍵をまとめて運ぶ形(COSE_Key Set)もあります。デジタルの証明を入れ物に収めるW3Cの標準は、このうちCOSE_Sign1を使います。
よくある誤解:データを最も小さくすることが第一の目的なのか
CBORの目標では、読み書きする側のソフト(エンコーダ・デコーダ)を小さくできることが、データを小さくできることより優先されます。メモリや処理能力が限られた機器でも動かせるようにするためで、データの小ささはその次の位置づけです。
