Anhang B. Zwei Ebenen von Empfängerinformationen
Alle derzeit definierten Empfängeralgorithmusklassen verwenden nur zwei Schichten der COSE-Struktur. Die erste Schicht (COSE_Encrypt) ist der Nachrichteninhalt, und die zweite Schicht (COSE_Recipient) ist die Inhaltsverschlüsselung. Wenn man jedoch einen Empfängeralgorithmus wie den RSA Key Encapsulation Mechanism (RSA-KEM) verwendet (siehe Anhang A von RSA-KEM [RFC5990]), dann ist es sinnvoll, zwei Schichten der COSE_Recipient-Struktur zu haben.
Diese Schichten wären:
-
Schicht 0: Die Inhaltsverschlüsselungsschicht. Diese Schicht enthält die Nutzlast der Nachricht.
-
Schicht 1: Die Verschlüsselung des CEK durch einen KEK.
-
Schicht 2: Die Verschlüsselung eines langen zufälligen Geheimnisses unter Verwendung eines RSA-Schlüssels und einer Schlüssenableitungsfunktion, um dieses Geheimnis in den KEK umzuwandeln.
Dies ist ein Beispiel dafür, wie eine dreischichtige Nachricht aussehen würde. Um es leichter lesbar zu machen, wird es unter Verwendung der erweiterten CBOR-Diagnosenotation (definiert in [RFC8610]) anstelle eines Binär-Dumps dargestellt. Die Nachricht hat die folgenden Schichten:
-
Schicht 0: Hat Inhalt, der mit AES-GCM unter Verwendung eines 128-Bit-Schlüssels verschlüsselt ist.
-
Schicht 1: Verwendet den AES Key Wrap-Algorithmus mit einem 128-Bit-Schlüssel.
-
Schicht 2: Verwendet ECDH Ephemeral-Static direkt, um den Schlüssel der Schicht 1 zu generieren.
Tatsächlich ist dieses Beispiel eine zerlegte Version der Verwendung des ECDH-ES+A128KW-Algorithmus.
Die Größe der Binärdatei beträgt 183 Bytes
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''
]
]
]
]
]
)