- From: Magnus Nyström <magnus@rsa.com>
- Date: Wed, 3 Jun 2009 12:53:17 +0200 (W. Europe Daylight Time)
- To: XMLSec WG Public List <public-xmlsec@w3.org>
This is an attempt to respond to ACTION-301 that I got yesterday. Given the schema in my earlier proposal http://lists.w3.org/Archives/Public/public-xmlsec/2009May/0056.html one can construct the following example <xenc:EncryptedKey> element: <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig11="http://www.w3.org/2009/xmldsig11#" xmlns:dkey="http://www.w3.org/2009/xmlsec-dkey#" xmlns:kem="http://www.w3.org/2009/xmlsec-kem#"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#GenericHybridCipher"> <kem:GenericHybridCipherMethod> <kem:KeyEncapsulationMethod Algorithm="http://www.w3.org/2009/xmlenc11#EC-KEM-KTS"> <dkey:KeyDerivationMethod Algorithm="KDF2"/> <kem:KeyLen>16</kem:KeyLen> </kem:KeyEncapsulationMethod> <kem:DataEncapsulationMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128"/> </kem:GenericHybridCipherMethod> </xenc:EncryptionMethod> <ds:KeyInfo> <dsig11:ECKeyValue> <dsig11:NamedCurve URI="urn:oid:1.2.840.10045.3.1.7"/> <dsig11:PublicKey>MIIB</dsig11:PublicKey> </dsig11:ECKeyValue> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>DEADBEEF</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> In the above, what has happened is: 1) EncryptionMethod is "GenericHybrid" - as in ISO/IEC 18033 and S/MIME 2) There is a parameter set for GenericHybrid that gives a) the key encapsulation method (EC-KEM-KTS for Elliptic Curve Key Encapsulation Method - Key Transport Scheme (since we're doing key wrapping here), along with its params (derived key length and key derivation method, leveraging the DerivedKeys schema) b) the data encapsulation method (AES key wrap in this case) 3) The key info does *not* need the AgreementMethod even though I suggested this earlier. I realized it is not needed as we have already specified the encapsulation scheme as EC-KEM-KTS, and so this element simply contains an ECKeyValue that is the recipient's public key 4) The CipherData is the concatenation of the ephemeral public key of the originator (as an octet string) and the wrapped key. For RSA, we would have the same structure, it is just that instead of the (algorithm identifier being RSA-KEM-KTS and the) ephemeral key we would have the CipherData consisting of the concatenation of the public-key encrypted random value and the wrapped key. (And in addition this structure brings us pretty close to "ordinary" RSA key transport as Pratik was asking for.) -- Magnus
Received on Wednesday, 3 June 2009 10:53:35 UTC