Appendice B. Due livelli di informazioni sul destinatario
Tutte le classi di algoritmi del destinatario attualmente definite utilizzano solo due livelli della struttura COSE. Il primo livello (COSE_Encrypt) è il contenuto del messaggio e il secondo livello (COSE_Recipient) è la crittografia della chiave del contenuto. Tuttavia, se si utilizza un algoritmo del destinatario come il meccanismo di incapsulamento della chiave RSA (RSA-KEM) (vedere l'appendice A di RSA-KEM [RFC5990]), allora ha senso avere due livelli della struttura COSE_Recipient.
Questi livelli sarebbero:
-
Livello 0: Il livello di crittografia del contenuto. Questo livello contiene il payload del messaggio.
-
Livello 1: La crittografia della CEK da parte di una KEK.
-
Livello 2: La crittografia di un lungo segreto casuale utilizzando una chiave RSA e una funzione di derivazione della chiave per convertire quel segreto nella KEK.
Questo è un esempio di come apparirebbe un messaggio a tre livelli. Per renderlo più facile da leggere, viene presentato utilizzando la notazione diagnostica CBOR estesa (definita in [RFC8610]) piuttosto che come dump binario. Il messaggio ha i seguenti livelli:
-
Livello 0: Ha il contenuto crittografato con AES-GCM utilizzando una chiave a 128 bit.
-
Livello 1: Utilizza l'algoritmo AES Key Wrap con una chiave a 128 bit.
-
Livello 2: Utilizza ECDH Ephemeral-Static diretto per generare la chiave del Livello 1.
In effetti, questo esempio è una versione scomposta dell'utilizzo dell'algoritmo ECDH-ES+A128KW.
La dimensione del file binario è di 183 byte
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''
]
]
]
]
]
)