Annexe B. Deux couches d'informations sur le destinataire
Toutes les classes d'algorithmes de destinataire actuellement définies n'utilisent que deux couches de la structure COSE. La première couche (COSE_Encrypt) est le contenu du message, et la deuxième couche (COSE_Recipient) est le chiffrement de la clé de contenu. Cependant, si l'on utilise un algorithme de destinataire tel que le mécanisme d'encapsulation de clé RSA (RSA-KEM) (voir l'annexe A de RSA-KEM [RFC5990]), alors il est logique d'avoir deux couches de la structure COSE_Recipient.
Ces couches seraient :
-
Couche 0 : La couche de chiffrement de contenu. Cette couche contient la charge utile du message.
-
Couche 1 : Le chiffrement de la CEK par une KEK.
-
Couche 2 : Le chiffrement d'un long secret aléatoire à l'aide d'une clé RSA et d'une fonction de dérivation de clé pour convertir ce secret en KEK.
Ceci est un exemple de ce à quoi ressemblerait un message à trois couches. Pour le rendre plus facile à lire, il est présenté en utilisant la notation de diagnostic CBOR étendue (définie dans [RFC8610]) plutôt que comme un vidage binaire. Le message a les couches suivantes :
-
Couche 0 : A le contenu chiffré avec AES-GCM en utilisant une clé de 128 bits.
-
Couche 1 : Utilise l'algorithme AES Key Wrap avec une clé de 128 bits.
-
Couche 2 : Utilise ECDH Ephemeral-Static direct pour générer la clé de la couche 1.
En effet, cet exemple est une version décomposée de l'utilisation de l'algorithme ECDH-ES+A128KW.
La taille du fichier binaire est de 183 octets
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''
]
]
]
]
]
)