付録 B. 2層の受信者情報
現在定義されているすべての受信者アルゴリズムクラスは、COSE構造の2つの層のみを使用します。最初の層 (COSE_Encrypt) はメッセージコンテンツであり、2番目の層 (COSE_Recipient) はコンテンツ鍵暗号化です。ただし、RSAキーカプセル化メカニズム (RSA-KEM) などの受信者アルゴリズムを使用する場合(RSA-KEM [RFC5990] の付録Aを参照)、2層のCOSE_Recipient構造を持つことは理にかなっています。
これらの層は次のようになります。
-
レイヤー0: コンテンツ暗号化レイヤー。このレイヤーにはメッセージのペイロードが含まれます。
-
レイヤー1: KEKによるCEKの暗号化。
-
レイヤー2: RSA鍵と鍵導出関数を使用した長いランダムシークレットの暗号化。そのシークレットをKEKに変換します。
これは、3層メッセージがどのように見えるかの例です。読みやすくするために、バイナリダンプではなく、拡張CBOR診断表記([RFC8610]で定義)を使用して提示されます。メッセージには次の層があります。
-
レイヤー0: 128ビット鍵を使用したAES-GCMで暗号化されたコンテンツがあります。
-
レイヤー1: 128ビット鍵を使用したAES Key Wrapアルゴリズムを使用します。
-
レイヤー2: レイヤー1の鍵を生成するためにECDH Ephemeral-Static directを使用します。
事実上、この例はECDH-ES+A128KWアルゴリズムを使用することの分解バージョンです。
バイナリファイルのサイズは183バイトです
96(
[ / COSE_Encrypt /
/ protected h'a10101' / << {
/ alg / 1:1 / AES-GCM 128 /
} >>,
/ unprotected / {
/ iv / 5:h'02d1f7e6f26c43d4868d87ce'
},
/ ciphertext / h'64f84d913ba60a76070a9a48f26e97e863e2852948658f0
811139868826e89218a75715b',
/ recipients / [
[ / COSE_Recipient /
/ protected / h'',
/ unprotected / {
/ alg / 1:-3 / A128KW /
},
/ ciphertext / h'dbd43c4e9d719c27c6275c67d628d493f090593db82
18f11',
/ recipients / [
[ / COSE_Recipient /
/ protected h'a1013818' / << {
/ alg / 1:-25 / ECDH-ES + HKDF-256 /
} >> ,
/ unprotected / {
/ ephemeral / -1:{
/ kty / 1:2,
/ crv / -1:1,
/ x / -2:h'b2add44368ea6d641f9ca9af308b4079aeb519f11
e9b8a55a600b21233e86e68',
/ y / -3:false
},
/ kid / 4:'[email protected]'
},
/ ciphertext / h''
]
]
]
]
]
)