Internet DRAFT - draft-turner-sodp

draft-turner-sodp



 



Network Working Group                                          S. Turner
Internet-Draft                                                      IECA
Intended status: Standards Track                        January 10, 2012
Expires: July 13, 2012



                 Secure Object Delivery Protocol (SODP)
                        draft-turner-sodp-02.txt

Abstract

   This document describes the Secure Object Delivery Protocol (SODP). 
   SODP enables clients to obtain secured packages from a Secure Object
   Management System (SOMS).  Packages supported by a SOMS server
   include but are not limited to: firmware packages [RFC4108], trust
   anchor (TA) packages [RFC5934], symmetric key packages [RFC6031],
   asymmetric key packages [RFC5958], encrypted key packages [RFC6031],
   public key certificate enrollment packages [RFC5272], public key
   certificates [RFC5280], and Certificate Revocation Lists (CRLs)
   [RFC5280].  Client access is ideally direct and web-based, but access
   via agents acting on behalf of clients is supported.


Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on July 13, 2012.








 


Turner                   Expires July 13, 2012                  [Page 1]

Internet-Draft                    SODP                  January 10, 2012


Copyright Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1 Definitions  . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.2  Key Words . . . . . . . . . . . . . . . . . . . . . . . . .  6
   2.  Secure Object Management System Model  . . . . . . . . . . . .  6
   3.  Server . . . . . . . . . . . . . . . . . . . . . . . . . . . .  8
     3.1.  Server Package Requirements  . . . . . . . . . . . . . . .  9
       3.1.1.  URI: /certificates . . . . . . . . . . . . . . . . . .  9
       3.1.2.  URI: /fullCMC  . . . . . . . . . . . . . . . . . . . . 10
       3.1.3.  URI: /crls . . . . . . . . . . . . . . . . . . . . . . 11
       3.1.4.  URI: /symmetricKey . . . . . . . . . . . . . . . . . . 11
       3.1.5.  URI: /firmware . . . . . . . . . . . . . . . . . . . . 12
       3.1.6.  URI: /tamp . . . . . . . . . . . . . . . . . . . . . . 13
       3.1.7.  Mixed Packages . . . . . . . . . . . . . . . . . . . . 13
     3.2.  Server Authentication Requirements . . . . . . . . . . . . 13
   4.  Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
     4.1.  Client Package Requirements  . . . . . . . . . . . . . . . 14
       4.1.1.  URI: /certificates . . . . . . . . . . . . . . . . . . 14
       4.1.2.  URI: /fullCMC  . . . . . . . . . . . . . . . . . . . . 14
       4.1.3.  URI: /crls . . . . . . . . . . . . . . . . . . . . . . 15
       4.1.4.  URI: /symmetricKey . . . . . . . . . . . . . . . . . . 15
       4.1.5.  URI: /firmware . . . . . . . . . . . . . . . . . . . . 16
       4.1.6.  URI: /tamp . . . . . . . . . . . . . . . . . . . . . . 17
       4.1.7  Mixed Packages  . . . . . . . . . . . . . . . . . . . . 17
     4.2.  Authentication Requirements  . . . . . . . . . . . . . . . 17
   5.  Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
   6.  Universal Unique Identifiers . . . . . . . . . . . . . . . . . 18
   7.  Product Availability List  . . . . . . . . . . . . . . . . . . 18
     7.1.  PAL Format . . . . . . . . . . . . . . . . . . . . . . . . 20
     7.2.  URIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
       7.2.1.  URI Scheme . . . . . . . . . . . . . . . . . . . . . . 23
 


Turner                   Expires July 13, 2012                  [Page 2]

Internet-Draft                    SODP                  January 10, 2012


       7.2.2.  URI Authority  . . . . . . . . . . . . . . . . . . . . 23
       7.2.3.  URI Path . . . . . . . . . . . . . . . . . . . . . . . 24
       7.2.4.  URI Query and Fragments  . . . . . . . . . . . . . . . 24
   8.  SODP Transport Requirements  . . . . . . . . . . . . . . . . . 25
     8.1.  Server Requirements  . . . . . . . . . . . . . . . . . . . 25
     8.2.  Client Requirements  . . . . . . . . . . . . . . . . . . . 26
     8.3.  Agent Requirements . . . . . . . . . . . . . . . . . . . . 27
   9.  Message Sequences  . . . . . . . . . . . . . . . . . . . . . . 27
     9.1.  /certificates Package Types and Message Sequence . . . . . 27
     9.2.  /crls Package Type and Message Sequence  . . . . . . . . . 27
     9.3.  /fullCMC Package Types and Message Sequence  . . . . . . . 28
     9.4.  /symmetricKey Package Types and Message Sequences  . . . . 30
     9.5.  /firmware Package Type and Message Sequences . . . . . . . 31
     9.5.  /tamp Message Types and Sequence . . . . . . . . . . . . . 32
   10.  Cryptographic Algorithm Requirements  . . . . . . . . . . . . 32
     10.1.  Package Protection  . . . . . . . . . . . . . . . . . . . 32
     10.2.  TLS Cipher Suites . . . . . . . . . . . . . . . . . . . . 33
     10.3.  Certificates  . . . . . . . . . . . . . . . . . . . . . . 33
   11.  Security Considerations . . . . . . . . . . . . . . . . . . . 34
   12.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
     12.1.  SODP Name Space . . . . . . . . . . . . . . . . . . . . . 35
     12.2.  SODP Schema . . . . . . . . . . . . . . . . . . . . . . . 35
     12.3.  SODP Package Types  . . . . . . . . . . . . . . . . . . . 36
     12.4.  SODP Path 1 String Values . . . . . . . . . . . . . . . . 37
   13.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . 38
   14.  References  . . . . . . . . . . . . . . . . . . . . . . . . . 38
     14.1.  Normative References  . . . . . . . . . . . . . . . . . . 38
     14.2.  Informative References  . . . . . . . . . . . . . . . . . 41
   Appendix A.  Example Encodings . . . . . . . . . . . . . . . . . . 41
   Appendix B.  Change Log  . . . . . . . . . . . . . . . . . . . . . 42
     B.1. Changes from -01 to -02 . . . . . . . . . . . . . . . . . . 42
     B.2. Changes from -00 to -01 . . . . . . . . . . . . . . . . . . 42
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 43



1.  Introduction

   The Secure Object Delivery Protocol (SODP) enables clients to obtain
   secured packages from a Secure Object Management System (SOMS)
   server.  Packages supported by a SOMS server include but are not
   limited to: firmware packages [RFC4108], Trust Anchor (TA) packages
   [RFC5934], symmetric key packages [RFC6031], asymmetric key packages
   [RFC5958], encrypted key packages [RFC6033], public key certificate
   management packages [RFC5272], public key certificates [RFC5280], and
   Certificate Revocation Lists (CRLs) [RFC5280].  Some are the end
   product of multiple client-server interactions while some are simply
   made by or on behalf of the SOMS for the client.  All packages are at
 


Turner                   Expires July 13, 2012                  [Page 3]

Internet-Draft                    SODP                  January 10, 2012


   a minimum digitally signed and some may be encrypted.  Client
   interactions with a SOMS server is via the HyperText Transfer
   Protocol (HTTP) 1.1 [RFC2616] over Transport Security Layer (TLS)
   [RFC5246] (HTTPS) [RFC2818].  Clients can directly access the SOMS or
   an agent can act on the client's behalf.

   A SOMS server provides access to packages based on Universal Resource
   Identifiers (URIs) [RFC3986].   The Enrollment over Secure Transport
   (EST) [ID.pkix-est] provides a framework that this document expands. 
   In addition, this document provides a mechanism, called a Product
   Availability List (PAL), by which a client can be informed of the
   location of all of its packages.  Processing the packages in the
   provided order ensures the client is provided the packages necessary
   for it to operate.

1.1 Definitions

   Terms are defined below as they are used in this document.  They are
   presented in alphabetical order.

   Agent: An entity that performs functions on behalf of a client.

   Asymmetric Key Package: A package that includes an asymmetric key
   content type [RFC5958].

   Centrally-Generated Asymmetric Keys: Server-generated asymmetric key
   pairs.  Server provides both private key and public key certificate
   in an asymmetric key package [ID.pkix-cmc-serverkeygeneration]. 

   Client: A cryptographic device/module that ultimately consumes and
   uses the SOMS' products to enable communications.

   Encrypted Key Package: A package that includes an encrypted key
   content type [RFC6032].

   Firmware Package: A package that contains a firmware content type
   [RFC4108][RFC5911].

      NOTE: [RFC4108] defines the semantics for the firmware content
      type's fields.  [RFC5911] provides the 2002 ASN.1 definitions. 
      Henceforth when referring to Firmware Packages only [RFC4108] will
      be used.

   Locally-Generated Asymmetric Key: Client-generated asymmetric key
   pairs.  Client provides the public key to the server for enrollment.

   Notifications: Special entries in a PAL that tell the client to
   initiate an action at the server (e.g., begin a certificate rekey).
 


Turner                   Expires July 13, 2012                  [Page 4]

Internet-Draft                    SODP                  January 10, 2012


   Package: An object that contains one or more CMS content types.  At a
   minimum, all packages are protected using the CMS [RFC5652][RFC6268]
   SignedData structure.  There are numerous types of packages:
   Asymmetric Key, Certificate Revocation Lists, Public Key Certificate
   Management, Encrypted Key, Firmware, Public Key Certificates, and
   Symmetric Key Packages.  The notable exception to the CMS SignedData
   rule are public key certificates and CRLs; these are not always
   protected by CMS because they've already been signed by the
   Certification Authority (CA).  They can however be included in a
   package that is protected using SignedData, which is often referred
   to as a degenerate CMS or "certs-only" message [RFC5751][RFC6268].

      NOTE: This document does not define any packages; they are all
      defined elsewhere. 

      NOTE: [RFC5652] defines the semantics for the SignedData content
      type's fields.  [RFC6268] provides the 2008 ASN.1 definitions. 
      Henceforth when referring to CMS SignedData only [RFC5652] will be
      used and when referring to "certs-only" messages only [RFC5751]
      will be used.

   Product Availability List (PAL): A PAL is an XML (Extensible Markup
   Language) [XML] file that furnishes information for packages that are
   currently available and authorized for retrieval by a client or
   agent.

      NOTE: The exception to this are Notifications.

   Public Key Certificate Management Packages: A package that contains a
   Public Key Infrastructure (PKI) Data or a PKI Data Response content
   type [RFC5272][RFC5912][RFC5273][RFC5274].   

      NOTE: [RFC5272] defines the semantics for the PKI Data and Data
      Response content types' fields.  [RFC5912] provides the 2002 ASN.1
      definitions.  [RFC5273] defines the HTTP binding for CMC. 
      [RFC5274] defines the support requirements for CMC.  Henceforth
      when referring to CMC only [RFC5272] will be used.

   Secure Object Management System (SOMS): A set of one or more
   components that is designed to protect, manage, and distribute
   cryptographic products.  In this document, cryptographic products are
   referred to as packages.

   Source Authority: A source authority is trusted by clients to
   generate particular package types.  Clients determine this by
   validating the digital signature on the package back to a Trust
   Anchor (TA).

 


Turner                   Expires July 13, 2012                  [Page 5]

Internet-Draft                    SODP                  January 10, 2012


   Symmetric Key Package: A package that contains a symmetric key
   content type [RFC6031].

   Trust Anchor (TA): From [RFC5914], a TA contains a public key that is
   used to validate digital signatures.  In this document, a TA
   represents an authoritative entity via a public key and associated
   data.  The public key is used to verify digital signatures and the
   associated data is used to constrain the types of information for
   which the TA is authoritative.  A relying party uses TAs to determine
   if a digitally signed object is valid by verifying a digital
   signature using the TA's public key, and by enforcing the constraints
   expressed in the associated data for the TA.

1.2  Key Words

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   [RFC2119].

2.  Secure Object Management System Model

   Figure 1 depicts the SODP model.  It is comprised of three entities:
   the SOMS server, one or more clients, and agents acting on behalf of
   clients.  Server-to-client and server-to-agent protocol interactions
   are in-scope; agent-to-client protocol interactions are out-of-scope.






















 


Turner                   Expires July 13, 2012                  [Page 6]

Internet-Draft                    SODP                  January 10, 2012


      <===>    IP-Based Protocol Profile (in scope)
      <- ->    Client-Specified Access Protocol (out of scope)

        +-------------+
        |             |
        |   Secure    |
        |   Object    |
        | Management  |
        |   System    |
        |             |
        |  +-------+  |                       +----------+
        |  |A's PAL|  |<=====================>| Client A |
        |  +-------+  |                       +----------+
        |             |
        |  +-------+  |       +-------+
        |  |B's PAL|  |       |       |       +----------+
        |  +-------+  |       |       |<- - ->| Client B |
        |             |       | Agent |       +----------+
        |  +-------+  |       |       |
        |  |C's PAL|  |       |       |       +----------+
        |  +-------+  |       |       |<- - ->| Client C |
        |             |<=====>|       |       +----------+
        |   .     .   |       |       |
        |   .     .   |       |       |        .        .
        |   .     .   |       |       |        .        .
        |             |       |       |        .        .
        |  +-------+  |       |       |
        |  |Z's PAL|  |       |       |       +----------+
        |  +-------+  |       |       |<- - ->| Client Z |
        |             |       |       |       +----------+
        +-------------+       +-------+

                        Figure 1 - SODP Model

   While the SOMS is viewed as being a single entity, operationally the
   issuance of different packages can be assigned to different
   authorities within the SOMS.  These authorities are referred to as
   source authorities.  A source authority is trusted by clients to
   generate particular package types.  Entities validate their source
   authorities when validating the digital signature(s) in/on packages. 
   That is, when a client retrieves a package  the client ensures that
   the signatures in/on the package validate to an installed trust
   anchor (TA).

   Figure 2 depicts an example ladder diagram for a protocol flow.  The
   first step is to establish a mutually authenticated HTTPS connection
   between the client/agent and a SOMS server.  The client then requests
   their PAL, which is an XML file that contains URIs for client
 


Turner                   Expires July 13, 2012                  [Page 7]

Internet-Draft                    SODP                  January 10, 2012


   packages, from the SOMS server via an HTTPS GET request.  The server
   replies with the client's PAL via an HTTPS GET response.  Once a
   client has successfully downloaded their PAL, it will process it to
   retrieve the included packages(s).  The processing provided will
   depend on the PAL entry.  Section 3 details the SOMS-package
   requirements, Section 4 details clients-package requirements, and
   Section 5 details agent-package requirements.  Section 7 details the
   PAL requirements.

                      |                      |
       SOMS Server    | Establish HTTPS      |    Client or Agent
                      | Connection           |
                      |<-------------------->|
                      |                      |
                      |          Request PAL |
                      |          (HTTPS GET) |
                      |<---------------------|
                      |--------------------->|
                      | Deliver PAL with URI |
                      | (HTTPS GET Response) |
                      |                      |
                      | Request packages by  |
                      | specified URI        |
                      | (HTTPS GET)          |
                      |<---------------------|
                      |--------------------->|
                      | Deliver requested    |
                      | CMS package product  |
                      | (HTTPS GET Response) |
                      |                      |

              Figure 2 - Example SODP Message Sequence

3.  Server

   The SODP is the interface to the SOMS that clients use to access
   SOMS-provided packages on a SOMS server.  The internal components of
   the SOMS server and their interactions are out-of-scope.  However, if
   a SOMS provides all of the packages, it will need the capability to
   package trust anchors (TAs), generate and package symmetric keys,
   package firmware, generate and package asymmetric keys, issue and
   package public key certificates, and issue and package CRLs.  It will
   also need to generate and receive packages, which includes generating
   and verifying digital signatures on packages as well as encrypting
   and decrypting of packages.  Additionally, it will need a repository
   to store information about clients and to store the client's
   packages.

 


Turner                   Expires July 13, 2012                  [Page 8]

Internet-Draft                    SODP                  January 10, 2012


   Prior to interaction with the SOMS, the client needs to be registered
   with the SOMS.  During registration, information about the client is
   collected an identity is assigned, which at a minimum includes an
   identifier.  There are only two registration requirements:

     o The information collected MUST include a permanent identifier
       that is used to identify the client throughout its lifecycle. 
       See Section 6.

     o The SOMS MUST ensure that the client identity is SOMS-unique. 
       That is, the collection of data that comprises the client
       identity MUST NOT match another client served by the SOMS. 

   The SOMS server MUST support the generation of a PAL.  The SOMS
   server MUST support access to client packages directly and through a
   PAL.

   After the client is registered the client is issued a public key
   certificate [RFC5280].

      NOTE: 1) The process for delivering the certificate to the client
      is out-of-scope; 2) the format and protocol for communicating the
      registration data is out-of-scope; and 3) the client need not
      contribute to or respond to the supplied identity information.

   The remainder of this section describes the SOMS server package
   requirements and the SOMS server authentication requirements.

3.1.  Server Package Requirements

   SOMS servers provide packages based on a URI.  EST  [ID.pkix-est]
   defines 4 URIs.  This document makes use of two defined therein (i.e,
   /certificates, /simpleEnroll, /simpleReEnroll, and /fullCMC) but this
   document specifies additional URIs: /crls, /symmetricKey, /firmware,
   and /tamp.  There are no additional requirements on /simpleEnroll and
   /simpleReEnroll.

      NOTE: I've suggested /crls be added to EST so if it's adopted
      there it'll come out of here.

      NOTE: I also suggested collapsing /simpleEnroll and
      /simpleEnrollment in to one URI.

3.1.1.  URI: /certificates

      NOTE: The URI defined in EST -02 is /CACerts.  As you might guess
      the URI is used to distribute CA certificates.  I think it ought
      to be expanded to include arbitrary EE certificates.  Therefore at
 


Turner                   Expires July 13, 2012                  [Page 9]

Internet-Draft                    SODP                  January 10, 2012


      some point the name of this URI might change based on whether or
      not the comment is accepted.

      NOTE: I've also suggested that the /certificates (or whatever it
      ends up being called) supports "certs-only" packages.  If it's
      adopted, then I'd take it out of here.

   Servers use the /certificates URI to deliver CA certificates that a
   client needs to validate package contents as well as EE certificates
   that the client might need when communicating with other clients. 
   See section 5.1 of [ID.pkix-est].

   Certificates can also be in a "certs-only" package [RFC5751], which
   is a CMS SignedData with no content just certificates.  The SOMS
   server MUST support the "certs-only" package by replying to the HTTPS
   GET request with an HTTPS GET response that includes an HTTP Content-
   Type of application/pkcs7-mime and a file type of .p7c, [RFC5751]. 

   Servers MUST support the /certificates URI.

3.1.2.  URI: /fullCMC

      NOTE: A comment has been entered to rename this URI in EST as
      /fullEnrollment to line up better with /simpleEnrollment.  Just
      saying the name might change.

   Servers use the /fullCMC URI to perform public key certificate
   management using the Certificate Management over CMS (CMC) [RFC5272]
   with Full PKI Request and Responses.  SOMS servers MUST use the HTTP
   binding defined in [RFC5273].  As a result, SOMS servers must
   support:

     o Receiving HTTPS POST requests with an HTTP Content-Type of
       application/pkcs7-mime that contains a ct-PKIData encapsulated in
       an ct-signed-data content type

     o Generating HTTPS POST response with an HTTP Content-Type of
       application/pkcs7-mime that contains a ct-PKIResponse
       encapsulated in an ct-signed-data content type.

   SOMS servers MUST support locally-generated keys.  SOMS servers that
   support centrally-generated keys MUST support [ID.pkix-cmc-
   serverkeygeneration].

   The server MUST support validating signatures on /fullCMC packages
   back to a TA [RFC5652][RFC5280].

   Servers MUST support the /fullCMC URI.
 


Turner                   Expires July 13, 2012                 [Page 10]

Internet-Draft                    SODP                  January 10, 2012


3.1.3.  URI: /crls

   Servers use the /crls URI to distribute CRLs, which are necessary to
   validate certification paths back to a TA.  Clients are however free
   to elect to obtain the CRLs that they rely on from sources other than
   the SOMS (e.g., a local directory).  

   CRLs are offered in the form, or forms, produced by the responsible
   Certification Authority (CA).  The form of the CRL is transparent to
   the SOMS.  CAs may choose to publish compact versions of CRLs (e.g.,
   partitioned CRLs) that are compatible with a disadvantaged client
   within the overall subscriber population.

   Servers MUST support receiving HTTPS GET requests and MUST support
   generating HTTPS GET responses for CRLs.  SOMS servers MUST support
   returning CRLs:

     o The HTTP Content-Type [RFC2616] is application/pkix-crl and a
       file type of .crl [RFC2585], which contains a single CRL.

     o The HTTP Content-Type [RFC2616] is application/pkcs7-mime and a
       file type of .p7c [RFC5751], which contains either a single CRL
       or multiple CRLs.

   The PAL provided to a client will always contain a URI for the most
   current version of each CRL needed to verify the packages in the form
   used by the particular client.  The SOMS will not list CRLs that a
   client does not need or cannot use.  Based on its capabilities, the
   freshness of currently held CRLs, and the circumstances, the client
   will determine whether it needs to download each offered CRL.

   Servers MUST support the /crls URI.

3.1.4.  URI: /symmetricKey

   Servers use the /symmetricKey URI to distribute symmetric key
   packages to clients and to receive receipts and errors about the
   distributed symmetric key packages.  Symmetric key packages are
   defined in [RFC6031].  A symmetric key package can contain one or
   more symmetric keys.  It also can contain attributes that apply to
   one or more keys.  The SOMS server MUST encapsulate the ct-symmetric-
   key-package content type in a ct-signed-data content type [RFC5652]. 

   Distribution of the symmetric key packages requires that these keys
   be disclosed only to the client and to not to anyone else.  The key
   packages need to be enveloped.  The encrypted key package [RFC6032]
   supports encrypting key packages in one of three ways: with key
   exchange algorithms (i.e., using EnvelopedData), with previously
 


Turner                   Expires July 13, 2012                 [Page 11]

Internet-Draft                    SODP                  January 10, 2012


   distributed symmetric algorithms (i.e., using EncryptedData), and
   with authenticated-encryption algorithms (i.e., using
   AuthEnvelopedData).  The server MUST support the ct-encrypted-key-
   package content type and as specified in [RFC6032] the EnvelopedData
   choice must be supported (i.e., support ct-enveloped-data).  The
   serer MUST also encapsulate the ct-encrypted-key-package in a ct-
   signed-data content type.

   Servers MUST support processing HTTPS GET requests and MUST support
   generating HTTPS GET responses for key packages.  The server MUST
   support key packages by replying to the HTTPS GET request with an
   HTTPS GET response that includes an HTTP Content-Type of
   application/pkcs7-mime and a file type of .p7m, as specified in
   [RFC5751].

   Servers MUST support processing HTTPS POST requests and MUST support
   generating HTTPS POST responses for both key package receipts and key
   package errors [ID.turner-ct-keypackage-receipt-n-error].  The server
   MUST support key package error and key package receipt packages by
   replying to the HTTPS GET request with an HTTPS GET response that
   includes an HTTP Content-Type of application/pkcs7-mime and a file
   type of .p7m, as specified in [RFC5751].  The server MUST reject
   /symmetricKey errors and receipts whose signature fails to validate
   back to a TA [RFC5652][RFC5280].

   Servers MUST support the /symmetricKey URI.

3.1.5.  URI: /firmware

   Servers distribute object code for implementing one or more
   cryptographic algorithms in a cryptographic module and software to
   implement a communications protocol with the firmware package
   [RFC4108].  The server MUST support the ct-firmwarePacakge content
   type.  It MUST support receipt of the ct-firmwareLoadReceipt and ct-
   firmwareLoadError content types.  The SOMS server MUST encapsulate
   the ct-firmwarePackage content type in a ct-signed-data content type
   [RFC5652].

   Servers MUST support processing HTTPS GET requests and MUST support
   generating HTTPS GET responses for firmware packages.  The server
   MUST support firmware packages by replying to the HTTPS GET request
   with an HTTPS GET response that includes an HTTP Content-Type of
   application/pkcs7-mime and a file type of .p7m, as specified in
   [RFC5751].

   Servers MUST support HTTPS POST requests and MUST support HTTPS POST
   responses for firmware receipts and errors.  The server MUST support
   firmware packages by replying to the HTTPS GET request with an HTTPS
 


Turner                   Expires July 13, 2012                 [Page 12]

Internet-Draft                    SODP                  January 10, 2012


   GET response that includes an HTTP Content-Type of application/pkcs7-
   mime and a file type of .p7m, as specified in [RFC5751].  The server
   MUST reject /firmware error and receipt packages whose signature
   fails to validate back to a TA [RFC5652][RFC5280].

   Servers MUST support the /firmware URI.

3.1.6.  URI: /tamp

   The SOMS manages TAs to support validating packages with the Trust
   Anchor Management Protocol (TAMP) [RFC5934].  TAMP supports multiple
   formats for the TA.  The SOMS MUST support the Certificate choice. 
   The SOMS MUST support the HTTP binding described in [RFC5934].  As
   specified in [RFC5934]:

     o servers must support the tamp-update content type.  And, the
       tamp-update must be encapsulated in a ct-signed-data content
       type.

     o servers must support the trust-anchor-update-confirm and tamp-
       error content types [RFC5934].

   The server MUST reject /tamp update-confirm and error packages whose
   signature fail to validate back to a TA [RFC5652][RFC5280].

   Servers MUST support the /tamp URI.

3.1.7.  Mixed Packages

      NOTE: certs-only packages allow servers to package up both
      certificates and CRLs in one package.  Should mixed packages have
      their own URI?  This section is obviously TBD.

   To support sending multiple package types to a client, the SOMS can
   use the Content Collection [RFC4073] CMS content type.  To allow the
   SOMS to apply additional attributes to the package the can use the
   Content With Attributes [RFC4073] CMS content type.  The SOMS SHOULD
   support the ct-contentCollection and MAY support the ct-
   contentWithAttributes content type. The SOMS MUST support
   encapsulating these in a ct-signed-data content type. 

3.2.  Server Authentication Requirements

   SOMS-to-client and SOMS-to-agent interactions MUST use mutual
   authentication, provide integrity, and optionally provide
   confidentiality through the use of HTTP over Transport Security Layer
   (HTTPS).  Confidentiality for SOMS-to-client and SOMS-to-agent
   interactions is OPTIONAL because when confidentiality is needed the
 


Turner                   Expires July 13, 2012                 [Page 13]

Internet-Draft                    SODP                  January 10, 2012


   packages are encrypted for the client.  See Section 10 for
   requirements on cryptographic suites.

   The one exception to the requirement for mutual authentication is
   retrieval of certificates from /certificates and CRLs from /crls.

4.  Client

   Clients use SODP to access the SOMS.  Clients need to be registered
   prior to interacting with the SOMS.  Clients need not contribute to
   or respond to the supplied identity information.  After registration
   is completed, the client is supplied with a certificate.  Prior to
   using this certificate, the client MUST verify the certificate back
   to an installed TA.  The number of TAs a client supports is
   implementation specific, but the client MUST support at least one TA.

   The remainder of this section addresses client package and client
   authentication requirements.

4.1.  Client Package Requirements

   Clients retrieve packages based on a URI.  This section specifies the
   package requirements for clients use of the URIs: /certificates,
   /crls, /fullCMC, /symmetricKey, /firmware, and /tamp.

4.1.1.  URI: /certificates

   NOTE: The URI defined in EST -02 is /CACerts.  As you might guess the
   URI is used to distribute CA certificates.  I think it ought to be
   expanded to include arbitrary EE certificates.  Therefore at some
   point the name of this URI might change based on whether or not the
   comment is accepted.

   Clients use the /certificates URI to retrieve CA certificates needed
   to validate package contents as well as other EE certificates that
   the client might need.  See section 5.1 of [ID.pkix-est].

   Certificates can also be in a "certs-only" package [RFC5751], which
   is a CMS SignedData with no content just certificates.  The client
   MUST support the "certs-only" package by generating an HTTPS GET
   request and receiving an HTTPS GET response that includes an HTTP
   Content-Type of application/pkcs7-mime and a file type of .p7c, as
   specified in [RFC5751]. 

   Clients SHOULD support the /certificates URI.

4.1.2.  URI: /fullCMC

 


Turner                   Expires July 13, 2012                 [Page 14]

Internet-Draft                    SODP                  January 10, 2012


      NOTE: A comment has been entered to rename this URI in EST as
      /fullEnrollment to line up better with /simpleEnrollment.  Just
      saying the name might change.

   Clients use the /fullCMC URI when they use the Full PKI Request and
   Full PKI Responses [RFC5272].  Clients MUST use the HTTP binding
   defined in [RFC5273].  As a result, clients must support:

     o Generating HTTPS POST requests with an HTTP Content-Type of
       application/pkcs7-mime that contains a ct-PKIData encapsulated in
       an ct-signed-data content type

     o Processing HTTPS POST response with an HTTP Content-Type of
       application/pkcs7-mime that contains a ct-PKIResponse
       encapsulated in an ct-signed-data content type

   Clients that support centrally-generated keys MUST support [ID.pkix-
   cmc-serverkeygeneration].

   Clients MUST reject /fullCMC packages whose signature fail to
   validate back to a TA [RFC5652][RFC5280].

   Client MUST support the /fullCMC URI.

4.1.3.  URI: /crls

   Clients use the /crls URI to retrieve CRLs, which are necessary to
   validate certification paths back to a TA.  Clients are however free
   to elect to obtain the CRLs that they rely on from sources other than
   the SOMS (e.g., a local directory).  

   Clients MUST support generating HTTPS GET requests and MUST support
   processing HTTPS GET responses for CRLs.  Client MUST support
   receiving CRLs with:

     o The HTTP Content-Type [RFC2616] is application/pkix-crl and a
       file type of .crl [RFC2585], which contains a single CRL.

     o The HTTP Content-Type [RFC2616] is application/pkcs7-mime and a
       file type of .p7c [RFC5751], which contains either a single CRL
       or multiple CRLs.

   Clients SHOULD support the /crls URI unless the client relies on an
   alternate mechanism to retrieve CRLs.

4.1.4.  URI: /symmetricKey

   Clients use the /symmetricKey URI to retrieve key packages and to
 


Turner                   Expires July 13, 2012                 [Page 15]

Internet-Draft                    SODP                  January 10, 2012


   return receipts and errors about the distributed symmetric key
   packages.

   Clients MUST support symmetric key packages defined in [RFC6031]. 
   Clients MUST support a ct-signed-data content type [RFC5652]
   encapsulating a ct-symmetric-key-package content type.  Clients MUST
   reject ct-symmetric-key-package content types that are not
   encapsulated in a ct-signed-data content type.  Clients MUST reject
   symmetric key packages whose signature fail to validate back to a TA
   [RFC5652][RFC5280].

   Clients MUST support the encrypted key package [RFC6032] and the
   EnvelopedData choice must be supported (i.e., support ct-enveloped-
   data).  Clients MUST support a ct-signed-data content type [RFC5652]
   encapsulating a ct-encrypted-key-package content type.  Clients MUST
   reject ct-encrypted-key-package content types that are not
   encapsulated in a ct-signed-data content type.  Clients MUST reject
   encrypted key packages whose signature fail to validate back to a TA
   [RFC5652][RFC5280].

   Clients MUST support generating HTTPS GET requests and MUST support
   processing HTTPS GET responses for key packages.  Clients MUST
   support key packages by submitting HTTPS GET requests and receiving
   HTTPS GET response that includes an HTTP Content-Type of
   application/pkcs7-mime and a file type of .p7m, as specified in
   [RFC5751].

   Cients MUST support generating HTTPS POST requests and MUST support
   processing HTTPS POST responses for both key package receipts and key
   package errors [ID.turner-ct-keypackage-receipt-n-error].  Clients
   MUST support key package error and key package receipt packages by
   generating the HTTPS GET request and processing the HTTPS GET
   response that includes an HTTP Content-Type of application/pkcs7-mime
   and a file type of .p7m, as specified in [RFC5751].

   Clients MAY support the /symmetricKey URI.

4.1.5.  URI: /firmware

   Clients retrieve object code for implementing one or more
   cryptographic algorithms in a cryptographic module and software to
   implement a communications protocol with the Firmware package
   [RFC4108].  Clients MUST support processing the ct-firmwarePacakge
   content type.  Clients MUST support generating the ct-
   firmwareLoadReceipt and ct-firmwareLoadError content types.  Clients
   MUST support the ct-firmwarePackage content type encapsulated in a
   ct-signed-data content type [RFC5652].  Clients MUST reject ct-
   firmware-package content-type whose signature fails to validate back
 


Turner                   Expires July 13, 2012                 [Page 16]

Internet-Draft                    SODP                  January 10, 2012


   to a TA [RFC5652][RFC5280].

   Clients MUST support generating HTTPS GET requests and MUST support
   processing HTTPS GET responses for firmware packages.  Clients MUST
   support firmware packages by generating to the HTTPS GET request and
   processing an HTTPS GET response that includes an HTTP Content-Type
   of application/pkcs7-mime and a file type of .p7m, as specified in
   [RFC5751].

   Clients MUST support generating HTTPS POST requests and MUST support
   processing HTTPS POST responses for firmware receipts and errors. 
   Clients MUST support firmware packages by generating to the HTTPS GET
   request with an HTTPS GET response that includes an HTTP Content-Type
   of application/pkcs7-mime and a file type of .p7m, as specified in
   [RFC5751].  Clients MUST reject /firmware error and receipt packages
   whose signature fails to validate back to a TA [RFC5652][RFC5280].

   Clients MAY support the /firmware URI.

4.1.6.  URI: /tamp

   Client's TAs are managed with the Trust Anchor Management Protocol
   (TAMP) [RFC5934].  TAMP supports multiple formats for the TA. 
   Clients MUST support the Certificate choice.  Clients MUST support
   the HTTP binding described in [RFC5934].  As specified in [RFC5934]:

     o Clients must support the tamp-update content type [RFC5934]. 
       And, the tamp-update must be encapsulated in a ct-signed-data
       content type.

     o Clients must support the trust-anchor-update-confirm and tamp-
       error content types [RFC5934].

   Clients MUST reject /tamp packages whose signature fail to validate
   back to a TA [RFC5652][RFC5280].

   Clients MAY support the /tamp URI.

4.1.7  Mixed Packages

   Client MAY support for the ct-contentCollection [RFC4073] and the ct-
   contentWithAttributes [RFC4073] content types.

4.2.  Authentication Requirements

   Clients MUST use client-side certificate-based TLS authentication
   when communicating with the server.  Clients MUST support processing
   certificate-based TLS authentication.  The exception to this rule is
 


Turner                   Expires July 13, 2012                 [Page 17]

Internet-Draft                    SODP                  January 10, 2012


   when the client uses the /certificates and /crls URIs, clients need
   not use client authentication during these exchanges.

5.  Agents

   Agents act on behalf of the client.  The requirements for agents are
   identical to those of clients with the following exceptions:

     o Agents MUST support PAL processing.
     o Agents MUST support the /symmetricKey URI.
     o Agents MUST support the /firmware URI.
     o Agents MUST support the /tamp URI.

   Agent Authentication requirements go here.

6.  Universal Unique Identifiers

   The Universal Unique Identifier (UUID) is a permanent identifier that
   is used to identify the client throughout its lifecycle. 
   Certificates include the UUID with the Hardware Module Name from
   [RFC4108] in the Subject Alternative Name extension [RFC5280].  The
   hardware module name form is an hwType (an object identifier) and
   hwSerialNumber (octet string).  The hwSerialNumber is a Universal
   Unique Identifier (UUID) [RFC4122].  The server, clients, and agents
   SHOULD support UUIDs at least 16 octets in length. 

7.  Product Availability List

   The PAL provides clients with:

     o Advertisements for available packages that can be retrieved from
       the server;

     o Notifications for public key certificate management, and;

     o Advertisement for another PAL.

   An example PAL is provided in Figure 3.  The explanation of the
   fields is explained in the subsequent text and sections.

   <?xml version="1.0"encoding="utf-8" ?>
   <pal>
     <message>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>1996</size>
       <info>https://www.example.com/certificates/12</info>
     </message>
 


Turner                   Expires July 13, 2012                 [Page 18]

Internet-Draft                    SODP                  January 10, 2012


     <message>
       <type>0100</type>
       <date>00000000000000</date>
       <size>0</size>
       <info>DN of subject</info>
     </message>
     <message>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>2390</size>
       <info>https://www.example.com/symmetricKey/100</info>
     </message>
     <message>
       <type>0001</type>
       <date>00000000000000</date>
       <size>0</size>
       <info>https://www.example.com/symmetricKey/12345</info>
     </message>
   </pal>

                Figure 3 - Example PAL

   PAL processing by clients is OPTIONAL, yet RECOMMENDED.  PALs MUST
   use the application/xml media type [RFC3023].  PAL retrieval can be
   performed by a client or by an agent that is assisting the client. 
   Agents that service clients which do not process PALs, MUST process
   the PAL on behalf of the client.  The agent MUST retrieve and process
   the PAL from the SOMS as well as the packages advertised within the
   PAL.  Once delivered to the agent, the agent MUST provide the package
   to the target client in an implementation specific manner.  The
   method of delivery of the package to the target client may or may not
   implement a PAL type distribution mechanism.

   When a client or agent requests a PAL, the server dynamically
   assembles a PAL based on the current information and packages it has
   for the requesting client or agent.  The server relies on the
   knowledge of the requesting client's ESN, in order to amass the
   proper list of items.  PALs can contain zero (0) or more entries for
   a package type.

   An order of precedence for PAL offerings is based on the following
   rationale:

     o /certificates and /crls packages are the most important because
       they support validation decisions on certificates used to sign
       and encrypt other listed PAL items. 

     o /fullCMC packages items are next in importance, since they can
 


Turner                   Expires July 13, 2012                 [Page 19]

Internet-Draft                    SODP                  January 10, 2012


       impact an certificate used by the device to sign CMS content or a
       certificate to establish keys for encrypting content exchanged
       with the client. 

       * A client engaged in a certificate management SHOULD accept and
         process CA-provided transactions as soon as possible to avoid
         undue delays that might lead to protocol failure.

     o /symmetricKey, /firmware, /tamp packages containing keys and
       other types of products are last.  Precedence SHOULD be given to
       packages that the client has not previously downloaded.  The
       items listed in a PAL may not identify all of the packages
       available for a device.  This can be for any of the following
       reasons:

       * The server may temporarily withhold some outstanding PAL items
         to simplify client processing.

       * /fullCMC PAL entries linked to a near-real-time CA device
         protocol (i.e., not staged through an agent) will be limited to
         one-at-a-time.

       * If a CA has more than one certificate ready to begin a
         certificate management protocol with a client, the server will
         provide a notice for one at a time.  Pending notices will be
         serviced in order of the earliest date when the certificate
         will be used.

       * The SOMS will complete a certificate management activity for
         one certificate, before beginning the process for another.  At
         most one pending certificate management transaction will be
         advertised in the PAL at a time.

     o A PAL is limited to a maximum of thirty-two entries.  If more
       than thirty-two entries are available for the client, additional
       PALs will be identified in the last entry of the PAL.  The first
       PAL in the chain is identified as the Initial PAL.

     o Packages will be removed when their contents are superseded or at
       the direction of a server administrator.

   The remainder of this section describes the PAL format and its use of
   URIs.

7.1.  PAL Format

   The PAL furnishes information for SOMS packages that are currently
   available and authorized for retrieval by a client or an agent.  The
 


Turner                   Expires July 13, 2012                 [Page 20]

Internet-Draft                    SODP                  January 10, 2012


   initially offered PAL, will contain anywhere from zero to thirty-two
   XML-encoded PAL entries following the XML Header.  The PAL's XML
   schema can be found in Section 12.  Each PAL entry is composed of the
   following four REQUIRED elements:

     o The <type> element uniquely identifies each package defined
       within this specification that a client may retrieve from server
       with a 4-digit field.  The Package Types are defined in Section 9
       and registered in Section 12.

     o The <date> element is a 14-character field that contains either:

       o The date and time (expressed as Generalized Time: YYYY-MM-
         DDTHH:MM:SSZ) that the client last successfully downloaded the
         identified package from the server, or

       o 0001-01-01T00:00:00 (i.e., 0), if

         o There is no indication the device has successfully loaded the
           identified package, or

         o The PAL entry corresponds to a notification or pointer to a
           next PAL.

     o The <size> element indicates the size of the package.  If the
       entry is for a notification, this element will be populated with
       a zero character (i.e., "0" without the quotes).  Otherwise, it
       indicates the size of the identified package in bytes.

     o The <info> element provides either a Distinguished Name (DN) or a
       URI of where the identified package can be retrieved.  When the
       entry is a notification, the subcomponent is a DN that identifies
       a certificate that is the subject of the notification. 

   When more than thirty-two PAL entries are available, an additional
   PAL is advertised in the thirty second PAL entry.  The additional PAL
   will have between one and thirty-two PAL entries.

   When the <date> element is not zero (i.e., 0001-01-01T00:00:00) it
   MUST be represented in a form that matches the dateTime production in
   "canonical representation" [XMLSCHEMA]. Implementations SHOULD NOT
   rely on time resolution finer than milliseconds and MUST NOT generate
   time instants that specify leap seconds.

7.2.  URIs

   A client that supports the PAL will use URIs to obtain both the
   packages they need from the SOMS, and to post device information the
 


Turner                   Expires July 13, 2012                 [Page 21]

Internet-Draft                    SODP                  January 10, 2012


   SOMS requires.   Clients and agents that support PALs MUST be capable
   of using URIs [RFC3986].

   In order use HTTPS GET or HTTPS POST, the client or agent needs to
   have a currently valid URI associated with that information.  The URI
   can correspond to:

     o A PAL that provides a unique URI for each package that the SOMS
       holds for the client and URIs identifying client actions that
       need to be taken, or

     o A package that the client believes is being held by the SOMS. 
       The data may contain product, a protocol-related transaction, or
       a collection of packages with various contents.

   When a client performs an HTTPS POST operation, the URI indicates the
   specific package that is targeted to process the information.  A
   client SHALL be capable of requesting information by providing a URI
   in an HTTPS GET request to a connected SOMS.

   A client may know, or believe they know, a specific package URI,
   because:

     o They discovered the URI on a PAL,

     o They are anticipating the next step in a protocol initiated by a
       prior URI submission, or

     o They were provided with the URI out-of-band by a human or an
       agent.

   Clients and agents MUST be capable of accepting a URI that uniquely
   identifies the location of a SOMS package that is available for
   delivery.

   Clients and agents MUST be capable of accepting a URI that identifies
   an action that is to be taken by the client.  In order to POST
   information, the client or agent supplies a URI that identifies
   associated information to the SOMS.  For example, the URI could
   correspond to a request to initiate, furnish intermediate results
   for, or conclude a certificate management protocol.

   Regardless of whether an HTTPS GET or HTTPS POST request is being
   made, URI components have consistent definitions and usage
   requirements.  These are specified in the following subsections. 
   Figure 4 provides a view of the URI components:

     scheme://Authority/Path/query|fragment
 


Turner                   Expires July 13, 2012                 [Page 22]

Internet-Draft                    SODP                  January 10, 2012


      |       Host:Port  |
      |        |         +---------+---------------+ 
      |        |                   | Path 1        | Path 2 (optional)
      |        +- www.example.com  |               |
      +- https                     +- certificates +- unique package 
                                   +- crls            identifier
                                   +- fullCMC
                                   +- symmeticKey
                                   +- firmware
                                   +- tamp

                    Figure 4 - PAL URI Components

7.2.1.  URI Scheme

   All HTTPS GET and POST requests and responses MUST use "https" as the
   scheme [RFC2818].  All processing of scheme data will be case-
   insensitive as required in [RFC3986].

   PALs that do not specify "https" as the URI scheme for every PAL
   entry MUST be rejected.

7.2.2.  URI Authority

   The authority component of a URI identifies the server that the
   client is requesting the specific SOMS Service from.  The authority
   component is in the form of a host name and an optional port number. 
   The host name identifies the HTTPS server by name, and the port
   number identifies the HTTPS server port that will service the
   request.  Inclusion of the port number is OPTIONAL, as the scheme
   component MUST always be "https".

   Clients and agents that access servers are configured with the
   applicable registered name(s) or corresponding IP address(es) of the
   server with which they may establish a connection to. 

   When generating a URI, the server SHALL populate the Authority
   Component of the URI with the registered name of the target server. 
   See Sections 7.2.3 and 12.

   When generating a URI, clients and agents SHALL populate the
   Authority Component of the URI with the registered name of the target
   server.

   Clients and agents SHALL reject the delivery of a received PAL, if
   any URI Authority Component contains a registered name that does not
   correspond to the connected server.

 


Turner                   Expires July 13, 2012                 [Page 23]

Internet-Draft                    SODP                  January 10, 2012


7.2.3.  URI Path

   The Path component of a URI identifies a resource that can be
   retrieved from, or a location that information can be posted to, at
   the SOMS.  Path components are presented in the hierarchical form of
   SOMS Service Identifier followed by a Product Identifier.  They
   adhere to the rules for path-absolute parsing as defined in
   [RFC3986].

   Service Identifiers that constitute the first path (aka Path 1)
   segment in a URI received or generated by a device are:
   /certificates, /crls, /fullCMC, /symmetricKey, /firmware, /tamp.

   The Package Type (aka Path 2), when present, is always the second
   path segment.  It is formatted as a four digit integer and represents
   the unique identifier the server has associated with the package to
   be retrieved.  Package types are included in the Package Type
   registry found in Section 12.  The Product Identifier is only present
   in the URIs that will be included in HTTPS GET requests to obtain a
   package.

   The Package Type is not included in:

     o The URI a client uses to obtain the initial PAL,

     o The URI portion of /certificates and /crls PAL entries or an
       entry the server uses to point to other PALs beyond the initial
       PAL,

     o The /fullCMC URIs that a SOMS server uses to provide the client
       notification for a suggested action, and

     o URIs that a client provides as a part of an HTTPS POST requests. 

   When generating a URI, clients SHALL populate the first Path
   component of the URI with one of the URIs defined by this
   specification.  When generating a URI for the inclusion in a HTTPS
   POST operation, a client SHALL only populate the first Path component
   of the URI (i.e., the client does not include the package type). 
   When generating a URI for the inclusion in a HTTPS GET operation for
   the initial PAL, a client SHALL only populate the first Path
   component of the URI (i.e., the client does not include the package
   type).  A client SHALL reject the delivery of any PAL received that
   contains a URI with the second path component not equal to an
   integer.

7.2.4.  URI Query and Fragments

 


Turner                   Expires July 13, 2012                 [Page 24]

Internet-Draft                    SODP                  January 10, 2012


   Servers do not use Query and Fragment elements.  Servers MUST omit
   query and fragment components from PALs.  Servers SHOULD reject the
   delivery of any PAL that contains a URI with a query or fragment
   components.

   Query and Fragments are not supported by clients in the processing of
   received URIs, or in the generation of URIs.  Clients and agents
   SHOULD reject the delivery of any PAL that contains a URI with a
   query or fragment component.  When generating a URI, clients and
   agents MUST NOT populate the URI with any query or fragment
   components.

8.  SODP Transport Requirements

   This section provides the requirements for SODP interactions.

8.1.  Server Requirements

   The server MUST support processing HTTPS GET and POST requests and
   generating HTTPS GET and HTTPS POST responses [RFC2818].  TLS 1.2
   [RFC5246][RFC6176] MUST be implemented in conjunction with HTTPS.  To
   ensure only authorized clients and agents access the SOMS, the SOMS
   MUST support authentication with both client-side certificates and
   username/password.  See Section 10 for cipher suite requirements.

   When the server receives and processes an HTTPS GET or POST request
   from a client, it will provide a response.  HTTP responses include
   status information and may include a message body, when a request is
   successfully processed.  The status information provided in responses
   to client requests will be restricted to the three-digit HTTP status
   code.

   HTTP response status codes fall into five general classes (where the
   class is indicated by the first digit of the code).

     o Informational - The SOMS will not make use of the Informational
       class of status codes.  Protocol switches and continued client
       processing are not expected. 

     o Success - The SOMS will return this class when the GET results in
       the requested information being returned or the POST action is
       successfully completed. 

     o Redirection - The SOMS will not make use of the Redirection class
       of status codes.  The SOMS will not ask a client to take further
       action to fulfill a request. 

     o Client Error - The SOMS will return this class when they cannot
 


Turner                   Expires July 13, 2012                 [Page 25]

Internet-Draft                    SODP                  January 10, 2012


       fulfill the requested GET or POST because of a client error. 

     o Server Error - The SOMS may return this class, when a valid POST
       or GET request was received, but the SOMS cannot fulfill the
       request for other reasons.

8.2.  Client Requirements

   Clients MUST support generating HTTPS GET and POST requests and
   receiving HTTPS GET and POST responses [RFC2818].  TLS 1.2
   [RFC5246][RFC6176] MUST be implemented in conjunction with HTTPS. 
   Clients MUST support client-side certificate authentication when
   connecting to the server.  See Section 10 for cipher suite
   requirements.

   If a client receives an HTTPS response with an Informational or
   Redirection class status code, it SHALL interpret the response as a
   request failure and terminate its session with the SOMS.

   When an Informational or Redirection class status code is received, a
   client MAY, if configured for an alternate SOMS server, terminate the
   current session and attempt to connect with an alternate SOMS.

   If a client receives an HTTPS response with a Success class status
   code, it SHALL continue to process the response to determine the
   outcome of an HTTPS POST request or to use the information contained
   in the included package.

   If a client receives an HTTP response with a Client Error class
   status code, it SHALL abandon the desired action and not repeat the
   same request to the same SOMS during the connection session.

   The client can provide additional processing of Client Error class
   status codes for a given request; however, this is out-of-scope of
   this document.

   A client can attempt other (different) HTTP requests after a request
   that failed with a Client Error class status code.  However, the
   client incorporate a means to limit the number of consecutive
   requests that fail for any reason in a given connection session with
   the SOMS.

   If a client receives an HTTPS response with a Server Error class
   status code, it SHOULD either:

     o Reattempt the request after a non-deterministic delay, or

     o Attempt the request with a different server. 
 


Turner                   Expires July 13, 2012                 [Page 26]

Internet-Draft                    SODP                  January 10, 2012


8.3.  Agent Requirements

   Agent requirements are identical to those for clients with one
   exception and that is that agents MUST support either agent-side
   certificate authentication or username/password when connecting to
   the SOMS.

9.  Message Sequences

   This section depicts package types when using a PAL.

      NOTE: Package types are not defined for packages that a client
      posts to a server: Key Package Receipts, Key Package Errors,
      Firmware Package Receipts, and Key Package Errors.

9.1.  /certificates Package Types and Message Sequence

   The /certificates URI is used to distribute certificates. The package
   types are defined as follows:

        Package    Package
         Type
        --------   ----------------------------
          TBD      X.509 CA Public Key Certificate
          TBD      X.509 EE Public Key Certificate

   An example PAL entry for a /certificates package is as follows:

     <package>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>1996</size>
       <info>https://www.example.com/certificates/mycert.cer</info>
     </package>

   The package type TBD indicates the message is an X.509 CA Public Key
   Certificate.  The date and time indicates that the package has not
   been downloaded.  The package size indicates the size of the package
   and the additional info element provides a link to the CA Public Key
   Certificate.

   The message sequence is identical to Figure 2.

9.2.  /crls Package Type and Message Sequence

   The /crls URI is used to distribute CRLs. The package types are
   defined as follows:

 


Turner                   Expires July 13, 2012                 [Page 27]

Internet-Draft                    SODP                  January 10, 2012


        Package    Package
         Type
        --------   -------------
          TBD      Root ARL
          TBD      non-Root CRL

   An example PAL entry for a /crls package is as follows:

     <package>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>1996</size>
       <info>https://www.example.com/crls/Root.crl</info>
     </package>

   The package type TBD indicates the package is a Root CRL.  The date
   and time indicates that the package has not been downloaded.  The
   package size indicates the size of the package and the additional
   info element provides a link to the Root CRL.

   The message sequence is identical to Figure 2.

9.3.  /fullCMC Package Types and Message Sequence

   The /fullCMC URI is used to distribute notifications (i.e., start
   rekey) and to manage public key certificates. The package types are
   defined as follows:

        Package    Package
         Type
        --------   -------------------------------------------------
          0100     Certificate Rekey Notification
          N/A      DS Certificate Rekey Transaction One
          TBD      DS Certificate Rekey Transaction Two (Success)
          TBD      DS Certificate Rekey Transaction Two (Failure)
          N/A      KE Certificate Issuance Transaction One
          TBD      KE Certificate Issuance Transaction Two (Success)
          TBD      KE Certificate Issuance Transaction Two (Failure)

   An example PAL entry for a /fullCMC package notification is as
   follows:

     <package>
       <type>0100</type>
       <date>00000000000000</date>
       <size>1996</size>
       <info>DN of DS certificate</info>
     </package>
 


Turner                   Expires July 13, 2012                 [Page 28]

Internet-Draft                    SODP                  January 10, 2012


   The package type TBD indicates the package is a Certificate Rekey
   Notification.  The date and time indicates that the package has not
   been downloaded.  The package size indicates the size of the package
   and the additional info element provides a link to the rekey
   notification.  The info element tells the client which certificate to
   request a rekey for by the DN.

   The message sequence for certificate rekey and issuance is a two-step
   process.  The initial step is client/agent retrieval of the PAL and
   then retrieval of a notification for a certificate rekey.  Step two
   is the client/agent posting of the CMC package followed by the
   certificate request response (success or failure) from the server. 
   Prior to each interaction with the server, the client/agent
   authenticates itself with the server.  The two steps are depicted in
   Figures 5 and 6.

                               Step 1


            SOMS     | Establish HTTPS       |      Client or Agent
                     | Connection            |
                     |<--------------------->|
                     |                       |
                     |           Request PAL |
                     |   (HTTPS GET Request) |
                     |<----------------------|
                     |---------------------->|
                     | Deliver PAL with URI  |
                     | (HTTPS GET Response)  |
                     |                       |
                     |   Request Certificate |
                     |   Rekey Transaction   |
                     |   One                 |
                     |   (HTTPS GET Request) |
                     |<----------------------|
                     |---------------------->|
                     | Deliver Transaction   |
                     | One                   |
                     | (HTTPS GET Response)  |

            Figure 5 - SODP Certificate Management Service
                      Message Sequence - Step 1






 


Turner                   Expires July 13, 2012                 [Page 29]

Internet-Draft                    SODP                  January 10, 2012


                              Step 2

            SOMS     | Establish HTTPS       |      Client or Agent
                     | Connection            |
                     |<--------------------->|
                     |                       |
                     |   Deliver Transaction |
                     |   Two                 |
                     |  (HTTPS POST Request) |
                     |<----------------------|
                     |---------------------->|
                     | Deliver Transaction   |
                     | Three                 |
                     | (HTTPS POST Response) |

           Figure 6 - SODP Certificate Management Service
                      Message Sequence Step 2

9.4.  /symmetricKey Package Types and Message Sequences

   The /symmetricKey URI is used to distribute symmetric and centrally-
   generated asymmetric key packages.  The package types are defined as
   follows:

       Package    Package
        Type
       --------   ----------------------
         TBD      Symmetric Key Package

   An example PAL entry for a /symmetricKey package is as follows:

     <package>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>1996</size>
       <info>https://www.example.com/symmetricKey/symmtrickey1</info>
     </package>

   The package type TBD indicates the message is a symmetric key.  The
   date and time indicates that the package has not been downloaded. 
   The package size indicates the size of the package and the additional
   info element provides a link to the symmetric key.  The info element
   indicates the location of the package.

   The sequence for both symmetric key and asymmetric key packages is
   identical, shown in Figure 2.  The client or agent connects to the
   SOMS, retrieves their PAL, and the requests the package from the URI
   provided in the additional info component.
 


Turner                   Expires July 13, 2012                 [Page 30]

Internet-Draft                    SODP                  January 10, 2012


   Error and receipt message sequence is as shown in Figure 7.


            SOMS     | Establish HTTPS       |      Client or Agent
                     | Connection            |
                     |<--------------------->|
                     |                       |
                     |   Deliver Receipt or  |
                     |   Error               |
                     |  (HTTPS POST Request) |
                     |<----------------------|
                     |---------------------->|
                     | (HTTPS POST Response) |

           Figure 7 - SODP Certificate Management Service
                      Message Sequence Step 2

9.5.  /firmware Package Type and Message Sequences

   The /firmware URI is used to distribute firmware packages.  The
   package types are defined as follows:

       Package    Package
        Type
       --------   -----------------------
         TBD      Firmware Package

   An example PAL entry for a /firmware package is as follows:

     <package>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>2056</size>
       <info>https://www.example.com/firmware/1234</info>
     </package>

   The message type TBD indicates the message is a firmware package. 
   The date and time indicates that the package has not been downloaded.
    The message size indicates the size of the package and the
   additional info element provides a link to the symmetric key.

   The sequence for firmware packages is identical, as shown in Figure
   2.  The client or agent connects to the SOMS, retrieves their PAL,
   and the requests the package from the URI provided in the additional
   info component.

   Errors and receipts message sequence are as shown in Figure 7.

 


Turner                   Expires July 13, 2012                 [Page 31]

Internet-Draft                    SODP                  January 10, 2012


9.5.  /tamp Message Types and Sequence

   The /tamp URI is used to distribute TAMP packages.  The message types
   are defined as follows:

       Message    Package
        Type
       --------   --------------------
         TBD      TAMP Package

   An example PAL entry for a distribution package is as follows:

     <package>
       <type>TBD</type>
       <date>00000000000000</date>
       <size>2056</size>
       <info>https://www.example.com/tamp/1234</info>
     </package>

   The package type TBD indicates the message is a TAMP package.  The
   date and time indicates that the package has not been downloaded. 
   The package size indicates the size of the package and the additional
   info element provides a link to the TAMP package.

   The sequence for TAMP packages is identical, as shown in Figure 2. 
   The client or agent connects to the SOMS, retrieves their PAL, and
   the requests the package from the URI provided in the additional info
   component.

   Errors and receipts message sequence are as shown in Figure 7.

10.  Cryptographic Algorithm Requirements

   This section defines the cryptographic algorithm requirements for
   SODP.  There are three types: package protection requirements, TLS
   cipher suites, and certificate requirements.

10.1.  Package Protection

   For [RFC5958] algorithm requirements see [RFC5959][RFC6162].

   For [RFC6031] algorithm requirements see [RFC6160].

   For [RFC6032] algorithm requirements see [RFC6033][RFC6161].

      NOTE: The "cert-only" package does not have algorithm requirements
      because no cryptographic operations are performed while generating
      this package (i.e., that is there is no signature applied to the
 


Turner                   Expires July 13, 2012                 [Page 32]

Internet-Draft                    SODP                  January 10, 2012


      message - the signature is already on the certificates and/or CRLs
      included in the package).

   For [RFC4108] algorithm requirements see [RFC6160].

      NOTE: The algorithm requirements for [RFC4108] are for symmetric
      keys, but equally apply to firmware packages.  Note the only
      required algorithm is RSA for generating the SignedData that
      encapsulates the firmware package.

   For [RFC5934] algorithm requirements see [RFC6160].

      NOTE: The algorithm requirements for [RFC4108] are for symmetric
      keys, but equally apply to tamp packages.  Note the only required
      algorithm is RSA for generating the SignedData that encapsulates
      the tamp package.


      For [RFC5272] algorithm requirements see [RFC5274].


10.2.  TLS Cipher Suites

      The following requirements apply to servers, clients, and agents:

     o Cipher suites supported MUST include: "TLS_RSA_WITH_", "TLS_DH_",
       "TLS_DHE_", and "TLS_ECDH_".

     o Cipher suites that include "anon" MUST NOT be used.  These suites
       do not support mutual authentication. 

     o Cipher suite that include "EXPORT" and "DES" MUST NOT be used. 
       These ciphers do not offer a sufficient level of protection; 40-
       bit crypto in '11 doesn't cut the mustard and the use of DES is
       deprecated.

     o When confidentially is supported (recall that is optional), the
       "AES_128" ciphers MUST be supported and "AES_256" cipher SHOULD
       be supported. 

     o Cipher suites that include "SHA256" MUST be supported and
       "SHA384" SHOULD be supported.

10.3.  Certificates

   Client, agents, and servers MUST support certificate path validation
   on all packages and HTTPS sessions [RFC5280].

 


Turner                   Expires July 13, 2012                 [Page 33]

Internet-Draft                    SODP                  January 10, 2012


   To support the algorithm requirements in Section 10.1, the following
   are the public key certificate requirements, which alight with 
   [RFC5959], [RFC6033], [RFC6160], [RFC6161], and [RFC6162]: 

      "If an implementation supports RSA, RSASSA-PSS, DSA, RSAES-OAEP,
      or Diffie- Hellman, then it MUST support key lengths from 1024-bit
      to 2048-bit, inclusive.  If an implementation supports ECDSA or
      ECDH, then it MUST support keys on P-256."

11.  Security Considerations

   TO DO: Expand this section!

   This document relies on many other specifications.  For IP and TCP
   security considerations see [RFC791], [RFC793], and [RFC2460]; for
   HTTP, HTTPS, and TLS security considerations see  [RFC2616],
   [RFC2818], and [RFC5246]; for URI security considerations see
   [RFC3986]; for content type security considerations see [RFC4073],
   [RFC4108], [RFC5272], [RFC5652], [RFC5751], [RFC5958], [RFC5934],
   [RFC6031], and [RFC6032]; for certificate security considerations see
   [RFC5280], [RFC5480], and [RFC6010], and; for algorithm security
   considerations see [RFC5959], [RFC6033], [RC6160], [RFC6161],
   [RFC6162].

   TO DO: Probably more references are needed above for algorithms based
   on what gets added in Section 10.1.

   It is critical that the SOMS encrypt symmetric keys and centrally-
   generated asymmetric private keys for the end client.  Failure to
   encrypt these keys will allow intermediaries to intercept the key and
   eavesdrop and/or impersonate the client.

   When packages are encrypted, the source of the package must randomly
   generate package-encryption keys.  Also, the generation of
   public/private signature key pairs relies on a random numbers.  The
   use of inadequate pseudo-random number generators (PRNGs) to generate
   cryptographic keys can result in little or no security.  An attacker
   may find it much easier to reproduce the PRNG environment that
   produced the keys, searching the resulting small set of
   possibilities, rather than brute-force searching the whole key space.
    The generation of quality random numbers is difficult.  [RFC4086]
   offers important guidance in this area.

12.  IANA Considerations

   IANA is requested to perform four registrations: SODP Name Space,
   SODP XML Schema, SODP Message Types, and SODP URI String Types.

 


Turner                   Expires July 13, 2012                 [Page 34]

Internet-Draft                    SODP                  January 10, 2012


12.1.  SODP Name Space

   This section registers a new XML namespace,
   "urn:ietf:params:xml:ns:TBD" per the guidelines in [RFC3688]:

   TO DO: Fill in TBDs after name space is registered.

      URI:  urn:ietf:params:xml:ns:TBD
      Registrant Contact: Sean Turner (turners@ieca.com)
      XML:
         BEGIN
            <?xml version="1.0"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
            <head>
               <title>SODP Messages</title>
            </head>
            <body>
               <h1>Namespace for SODP Messages</h1>
               <h2>urn:ietf:params:xml:ns:sodp</h2>
               <p>See RFC TBD</p>
            </body>
            </html>
         END

12.2.  SODP Schema

   This section registers an XML schema as per the guidelines in
   [RFC3688].

   TO DO: Fill in TBDs after the name space is registered.

      URI: urn:ietf:params:xml:schema:sodp

      Registrant Contact:  Sean Turner turners@ieca.com

      XML: 
   <?xml version="1.0" encoding="UTF-8"?>
   <xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema
    xmlns:sodp="urn:ietf:params:xml:ns:sodp"
    targetNamespace="urn:ietf:params:xml:ns:sodp"
    elementFormDefault="qualified" attributeFormDefault="unqualified"
    version="1.0">

   <!-- ===== Element Declarations ===== -->

   <xsd:element name="pal" type="sodp:PalType" />
 


Turner                   Expires July 13, 2012                 [Page 35]

Internet-Draft                    SODP                  January 10, 2012


   <!-- ===== Complex Data Element Type Definitions ===== -->

   <xsd:complexType name="PalType">
     <xsd:sequence>
       <xsd:element name="message" type="sodp:SODPPackageType"
                    minOccurs="0"  maxOccurs="32">
       </xsd:element>
     </xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="SODPPackageType">
     <xsd:sequence>
       <xsd:element name="type" type="sodp:PackageType" />
       <xsd:element name="date" type="sodp:GeneralizedTimeType" />
       <xsd:element name="size" type="sodp:PackageSizeType" />
       <xsd:element name="info" type="sodp:PackageInfoType" />
     </xsd:sequence>
   </xsd:complexType>

   <!-- =====Simple Data Element Type Definitions ===== -->

   <xsd:simpleType name="PackageType">
     <xsd:restriction base="xsd:string">
       <xsd:pattern value="[0-9]+" />
       <xsd:maxLength value="4" />
     </xsd:restriction>
   </xsd:simpleType>

   <xsd:simpleType name="GeneralizedTimeType" type "xsd:string" />

   <xsd:simpleType name="PackageSizeType">
       <xsd:pattern value="[0-9]+" />
       <xsd:maxLength value="19" />
     </xsd:restriction>
   </xsd:simpleType>

   <xsd:simpleType name="PackageInfoType">
     <xsd:restriction base="xsd:string" />
   </xsd:simpleType>

   </xsd:schema>

12.3.  SODP Package Types

   This section registers the SODP Package Types.  Future SODP Package
   Types registrations are to be subject to Specification Required, as
   defined in RFC 5226 [RFC5226].

 


Turner                   Expires July 13, 2012                 [Page 36]

Internet-Draft                    SODP                  January 10, 2012


   The registry has the following values:

   +-------+--------------------------------+---------------+
   | Value | Package Type                   | Specification |
   +-------+--------------------------------+---------------+
   | 0000  | Reserved                       | This document |
   +-------+--------------------------------+---------------+
   | 0001  | Additional PAL value present   | This document |
   +-------+--------------------------------+---------------+
   | 0100  | DS Rekey Notification          | This document |
   +-------+--------------------------------+---------------+
   | TBD   | X.509 CA Public Key Certificate| This document |
   +-------+--------------------------------+---------------+
   | TBD   | X.509 EE Public Key Certificate| This document |
   +-------+--------------------------------+---------------+
   | TBD   | Root CRL                       | This document |
   +-------+--------------------------------+---------------+
   | TBD   | non-Root CRL                   | This document |
   +-------+--------------------------------+---------------+
   | TBD   | DS Certificate Rekey           | This document |
   |       | Transaction Two - Success      |               |
   +-------+--------------------------------+---------------+
   | TBD   | DS Certificate Rekey           | This document |
   |       | Transaction Two - Fail         |               |
   +-------+--------------------------------+---------------+
   | TBD   | KE Certificate Issuance        | This document |
   |       | Transaction One                |               |
   +-------+--------------------------------+---------------+
   | TBD   | KE Certificate Issuance        | This document |
   |       | Transaction Three - Success    |               |
   +-------+--------------------------------+---------------+
   | TBD   | KE Certificate Issuance        | This document |
   |       | Transaction Three - Fail       |               |
   +-------+--------------------------------+---------------+
   | TBD   | Symmetric Key Package          | This document |
   +-------+--------------------------------+---------------+
   | TBD   | Firmware Package               | This document |
   +-------+--------------------------------+---------------+
   | TBD   | TAMP Package                   | This document |
   +-------+--------------------------------+---------------+

12.4.  SODP Path 1 String Values

   This section registers SODP Path String Types as per [RFC3688]. SODP
   Path 1 String Value registrations are to be subject to Specification
   Required, as defined in RFC 5226 [RFC5226].  The registry has the
   following structure:

 


Turner                   Expires July 13, 2012                 [Page 37]

Internet-Draft                    SODP                  January 10, 2012


      +----------------------------------------+
      |  SODP Service Types  |  Specification  |
      +----------------------------------------+
      |  certificates        |  This document  |
      +----------------------------------------+
      |  crls                |  This document  |
      +----------------------------------------+
      |  fullCMC             |  This document  |
      +----------------------------------------+
      |  symmetricKey        |  This document  |
      +----------------------------------------+
      |  firmware            |  This document  |
      +----------------------------------------+
      |  tamp                |  This document  |
      +----------------------------------------+

13.  Acknowledgements

   Thanks, in alphabetical order, go to Paul Hoffman, Brad McInnis, Max
   Pritikin, and Francois Rousseau for their helpful comments.


14.  References

14.1.  Normative References

   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
             (IPv6) Specification", RFC 2460, December 1998.

   [RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key
             Infrastructure Operational Protocols: FTP and HTTP",
             RFC 2585, May 1999.

   [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter,
             L., Leach, P., and T. Berners-Lee, "Hypertext Transfer
             Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

   [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
             Types", RFC 3023, January 2001.

   [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
             January 2004.

 


Turner                   Expires July 13, 2012                 [Page 38]

Internet-Draft                    SODP                  January 10, 2012


   [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
             Resource Identifier (URI): Generic Syntax", STD 66,
             RFC 3986, January 2005.

   [RFC4073] Housley, R., "Protecting Multiple Contents with the
             Cryptographic Message Syntax (CMS)", RFC 4073, May 2005.

   [RFC4108] Housley, R., "Using Cryptographic Message Syntax (CMS) to
             Protect Firmware Packages", RFC 4108, August 2005.

   [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique
             IDentifier (UUID) URN Namespace", RFC 4122, July 2005.

   [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
             IANA Considerations Section in RFCs", BCP 26, RFC 5226, May
             2008.

   [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
             (TLS) Protocol Version 1.2", RFC 5246, August 2008.

   [RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS
             (CMC)", RFC 5272, June 2008.

   [RFC5273] Schaad, J. and M. Myers, "Certificate Management over CMS
             (CMC): Transport Protocols", RFC 5273, June 2008.

   [RFC5274] Schaad, J. and M. Myers, "Certificate Management Messages
             over CMS (CMC): Compliance Requirements", RFC 5274, June
             2008.

   [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
             Housley, R., and W. Polk, "Internet X.509 Public Key
             Infrastructure Certificate and Certificate Revocation List
             (CRL) Profile", RFC 5280, May 2008.

   [RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk,
             "Elliptic Curve Cryptography Subject Public Key
             Information", RFC 5480, March 2009.

   [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70,
             RFC 5652, September 2009.

   [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet
             Mail Extensions (S/MIME) Version 3.2 Message
             Specification", RFC 5751, January 2010.

   [RFC5911] Hoffman, P. and J. Schaad, "New ASN.1 Modules for
             Cryptographic Message Syntax (CMS) and S/MIME", RFC 5911,
 


Turner                   Expires July 13, 2012                 [Page 39]

Internet-Draft                    SODP                  January 10, 2012


             June 2010.

   [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the
             Public Key Infrastructure Using X.509 (PKIX)", RFC 5912,
             June 2010.

   [RFC5914] Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor
             Format", RFC 5914, June 2010.

   [RFC5934] Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor
             Management Protocol (TAMP)", RFC 5934, August 2010.

   [RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, August
             2010.

   [RFC5959] Turner, S., "Algorithms for Asymmetric Key Package Content
             Type", RFC 5959, August 2010.

   [RFC6010] Housley, R., Ashmore, S., and C. Wallace, "Cryptographic
             Message Syntax (CMS) Content Constraints Extension",
             RFC 6010, September 2010.

   [RFC6031] Turner, S. and R. Housley, "Cryptographic Message Syntax
             (CMS) Symmetric Key Package Content Type", RFC 6031,
             December 2010.

   [RFC6032] Turner, S. and R. Housley, "Cryptographic Message Syntax
             (CMS) Encrypted Key Package Content Type", RFC 6032,
             December 2010.

   [RFC6033] Turner, S., "Algorithms for Cryptographic Message Syntax
             (CMS) Encrypted Key Package Content Type", RFC 6033,
             December 2010.

   [RFC6160] Turner, S., "Algorithms for Cryptographic Message Syntax
             (CMS) Protection of Symmetric Key Package Content Types",
             RFC 6160, April 2011.

   [RFC6161] Turner, S., "Elliptic Curve Algorithms for Cryptographic
             Message Syntax (CMS) Encrypted Key Package Content Type",
             RFC 6161, April 2011.

   [RFC6162] Turner, S., "Elliptic Curve Algorithms for Cryptographic
             Message Syntax (CMS) Asymmetric Key Package Content Type",
             RFC 6162, April 2011.

   [RFC6176] Turner, S. and T. Polk, "Prohibiting Secure Sockets Layer
             (SSL) Version 2.0", RFC 6176, March 2011.
 


Turner                   Expires July 13, 2012                 [Page 40]

Internet-Draft                    SODP                  January 10, 2012


   [XML]     W3C, "Extensible Markup Language (XML) 1.0 (Fifth
             Edition)", W3C Recommendation, November 2008,
             <http://www.w3.org/TR/2006/REC-xml-20060816/>.

   [XMLSCHEMA]
             Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes
             Second Edition", World Wide Web Consortium Recommendation
             REC-xmlschema-2-20041082, October 2004,
             <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

   [ID.pkix-est] Pritikin, M, and P. Yee, "Enrollment over Secure
             Transport", work-in-progress, draft-ietf-pkix-est-00.

   [ID.pkix-cmc-serverkeygeneration]
             Schaad, J., Turner, S., and P. Timmel, "CMC Extensions:
             Server Key Generation", work-in-progress, draft-ietf-pkix-
             cmc-serverkeygeneration-00.

14.2.  Informative References

   [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, "Randomness
             Requirements for Security", BCP 106, RFC 4086, June 2005.

   [RFC4880] Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R.
             Thayer, "OpenPGP Message Format", RFC 4880, November 2007.

   [RFC5996] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, "Internet
             Key Exchange Protocol Version 2 (IKEv2)", RFC 5996,
             September 2010.


   [XMLNS]   Hollander, D., Bray, T., and A. Layman, "Namespaces in
             XML", World Wide Web Consortium FirstEdition REC-xml-names-
             19990114, January 1999, <http://www.w3.org/TR/1999/REC-xml-
             names-19990114>.

Appendix A.  Example Encodings

   TO DO: Include BASE64 encodings of ASN.1 encodings of selected
   packages.  They're a lot smaller than the ASN.1 pretty prints and
   there are tons of available to tools to convert.

Appendix B.  Change Log

   [[RFC EDITOR: Please delete this Appendix prior to publication.]]

B.1. Changes from -01 to -02

 


Turner                   Expires July 13, 2012                 [Page 41]

Internet-Draft                    SODP                  January 10, 2012


   Removed the term Key Management System.  SODP is about more than just
   keys.

   Beefed up the introduction to provide more context.

   Refined/Removed some definitions: ECU concept scrubbed, IA/KE
   Certificates, KMS, Operator, Sponsor, and Service Messages.

   Added some definitions: Centrally-Generated Asymmetric Keys, Locally-
   Generated Asymmetric Keys, Notifications, and PAL.

   Significantly shorted the description of the SODP Model, but removing
   the optional concept of having two sets of certificates: one for
   communicating with the infrastructure and another for communicating
   with peers.

   Removed the distraction about services being instantiated by
   packages.  Now it just talks about packages served from a URI.  But,
   maintained the split of Server, Client, and Agent.

   Embraced the EST concept by replacing /pki with /fullCMC, adding
   /certificates (EST calls it /CAcerts), and recommending /crls.

   Centrally-generated keys are now distributed via the /fullCMC URI. 
   This made sense as the draft describing centrally-generated keys uses
   CMC.

   Allowed clients to retrieve from /certificates and /crls without
   client authentication.

   Added in Agent requirements.

   Replaced ESN with UUID from RFC 4122.

   PAL changes: corrected the date fields in the PAL to be compliant
   with the XMLSCHEMA, removed 2.1 Gbyte size constraint, changed
   encoding from us-ascii to UTF-8.


B.2. Changes from -00 to -01

   Keep alive draft. Only the issue and expiry dates changed.

Authors' Addresses

   Sean Turner
   IECA, Inc.
   3057 Nutley Street, Suite 106
 


Turner                   Expires July 13, 2012                 [Page 42]

Internet-Draft                    SODP                  January 10, 2012


   Fairfax, VA 22031
   USA

   EMail: turners@ieca.com















































Turner                   Expires July 13, 2012                 [Page 43]