← Prev in month ← Prev in thread
Next in thread → Next in month →

[wss] WSS Issue#1: Support for carrying PKCS7 Encryption Payloads inSO AP Message

From
Ahmed, Zahid <>
Date
2002-10-21T23:06:25+00:00
ID
Thread
[wss] WSS Issue#1: Support for carrying PKCS7 Encryption Payloads inSO AP Message
Title: WSS Issue#1: Support for carrying PKCS7 Encryption Payloads in SOAP Message

Following up on Issue #1 in latest WSS Issues List at:

http://lists.oasis-open.org/archives/wss/200210/msg00039.html

where we capture the issue of supporting alternative mechanism of signature and 

encryption other than XML DSIG and XML Encryption, included here is specific 

problem description and possible options for supporting PKCS7 encrypted payloads 

in SOAP messages.

Parts of the following discussion could be extended for PKCS7 Signatures also. 

However, our primary interests here is standardized support for PKCS7 encryption 

in SOAP messages using WSS extension.

I have on purpose discarded from the discussion below some obvious steps

such as access to public encryption certificate, decryption key, etc.

Problem Scope

SOAP messages need a standardized way to support carrying and processing of PKCS7 

encrypted payloads that may originate from legacy applications and that may be exposed externally 

using EAI-oriented web services solutions. The encrypted payload is generated by the EAI/legacy 

application using PKCS7 Enveloped Data. Alternatively, it may be the case that a SOAP node, 

acting as gateway between the legacy application and external system, may directly apply 

PKCS7 encryption at SOAP message creation/transmision time. 

 

Use Case: EAI/Legacy application sends PKCS7 Content over SOAP 

1. The legacy applications passes the required PKCS7 encrypted content to the sending 

    SOAP node.

2. The SOAP node carries PKCS7 encrypted payload as a SOAP secondary part, e.g., 

    MIME attachment.

3. The intermediary SOAP nodes in SOAP message path do not process PKCS7 

    encrypted payloads in SOAP message.

4. The target SOAP node extracts the required PKCS7 encrypted content and passes

    it to the legacy application.

5. Legacy application decrypts the PKCS7 encrypted content using its decryption key.

Solutions

There are two options that may be considered to support the carrying of PKCS7 encrypted 

contents in SOAP security extensions: 

1. Employ W3C XML Encryption constructs to carry PKCS7 encrypted content (suggested by 

    )

2. Create PKCS7 encrypted element to be carried within SOAP wsse:security header extension 

    element

Option#1: W3C XML Encryption Support for PKCS7 encryption

It may be possible to duplicate PKCS7 encrypted key (i.e., the bytes of the RSA-encrypted session key)

in XML ENC encrypted key such that we define a custom transform (and/or keyInfo's) that extracts the 

ciphertext content of the PKCS7 encrypted data. The transform would be from a PKCS#7 encrypted 

data object, or the ciphertext within it (if you choose to extract it) to XMLENC-format ciphertext. 

However, XMLENC does not use PKCS#1 padding; it uses 'xmlenc' padding. Transformation of the 

ciphertext is required. Alternatively, we can manually convert the data when it is extracted from the p7, 

and then insert it into an EncryptedData structure, in which case no transform would be required. 

For example, 

<EncryptedData>

     <EncryptionMethod ...>

     <KeyInfo>

             <RetrievalMethod URI="encrypted-data.p7" Type="urn:pkcs7:encrypted-key" />

OR

             <EncryptedKey>

                 ... algorithms and ciphertext extracted from p7 ...

            </EncryptedKey>

      </KeyInfo>

      <CipherData>

        <CipherReference URI="encrypted-data.p7">

            <Transforms>

               <Transforms Algorithm="urn:pkcs7:encrypted-payload" />

            </Transforms>

        </CipherReference>

     </CipherData>

</EncryptedData> 

However, realistically, the above approach is not really useful in terms of interoperability

since there is no useful cross-over between PKCS7 encrypted content and W3C XML ENC.

Note: Option#1 approach can not be extended to support PKCS7 signed data conversions

to W3C XML Signature. However, in this e-mail we are restricting discussion to encryption

only.

Option#2: Adding PKCS7Encrypted Element in WSSE/SOAP Security Extension

We can define a PKCS7 encrypted content type such that zero or more instances of it

may be carried in SOAP security header extension. The <pkcs7EncryptedContent> 

element will only be processed by the SOAP sending application and by the target

SOAP receiving application. The <pkcs7EncryptedContent> will not be processed

by a SOAP intermediary node.

The schema subset for such an extension is:

<xsd:element name="pkcs7EncryptedContent">

      <xsd:complexType>

        <xsd:annotation>

              <xsd:documentation>

                     This element may be used to specify the reference to PKCS7 encrypted data, i.e.,

                      (i.e., EnvelopedData content type), is carried in SOAP secondary part, e.g., MIME 

                      attachment. 

                  </xsd:documentation>

             </xsd:annotation>

         <xsd:attribute name="encryptionAttachmentURI" type="xsd:anyURI"/>

         <xsd:attribute name="symmetricEncyptionAlgorithm" type="xsd:string"/>

      </xsd:complexType>

</xsd:element>

 

<xsd:element ref="wsse:pkcs7EncryptedContent" minOccurs="0" maxOccurs="unbounded">

    <xsd:annotation>

                <xsd:documentation>

                            The pkcs7EncryptedContent element provides a reference to

                             PKCS7-based encrypted content carried in SOAP message payloads.

                 </xsd:documentation>

    </xsd:annotation>

</xsd:element>

Analysis of Options

Option#1 seems like a bad option due to limited cross-over between PKCS7 encryption

and W3C XML ENC Specs. Furthermore, using XML ENC is the carrier for PKCS7 encrypted

data would imply usage of data and key encryption algorithms that are mutually supported

by PKCS#7 and W3C XML ENC. Furthermore, option#1 assumes that transformation of

ciphertext between the different ciphertext padding schemes is possible which is a

problem if algorithms used/supported in XML ENC and PKCS#7 diverge. This implies

that Option#1 could theoratically be supported only for a subset of all algorithms. 

Option#2 does not require any transformaiton between PKCS7 encrypted data and W3C

XML ENC. Option#2 also allows end user web services application to use freely all

supported encryption algorithms within PKCS#7. Option#2 is also consistent with

WSS Core specification, Section 1.1.1 that states that web services security must

support a variety of encryption technologies. 

Possible Resolution

1. Refine Option# 1 for inclusion in WSS v. 1.0.

2. Refine Option #2 for inclusion in WSS v. 1.0

3. Postpone support for PKCS7 encryption in WSS

thanks,

Zahid Ahmed
← Prev in month ← Prev in thread
Next in thread → Next in month →