RFC 9152 | The SODP Server Interfaces | August 2021 |
Jenkins & Turner | Informational | [Page] |
This document specifies protocol interfaces profiled by the United States National Security Agency (NSA) for National Security System (NSS) servers that provide public key certificates, Certificate Revocation Lists (CRLs), and symmetric keys to NSS clients. Servers that support these interfaces are referred to as Secure Object Delivery Protocol (SODP) servers. The intended audience for this profile comprises developers of client devices that will obtain key management services from NSA-operated SODP servers. Interfaces supported by SODP servers include Enrollment over Secure Transport (EST) and its extensions as well as Certificate Management over CMS (CMC).¶
This profile applies to the capabilities, configuration, and operation of all components of US National Security Systems (SP 800-59). It is also appropriate for other US Government systems that process high-value information. It is made publicly available for use by developers and operators of these and any other system deployments.¶
This document is not an Internet Standards Track specification; it is published for informational purposes.¶
This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not candidates for any level of Internet Standard; see Section 2 of RFC 7841.¶
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9152.¶
Copyright (c) 2021 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 (https://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.¶
This document specifies protocol interfaces profiled by the United States National Security Agency (NSA) for National Security System (NSS) servers that provide public key certificates, Certificate Revocation Lists (CRLs), and symmetric keys to NSS clients. Servers that support these interfaces are referred to as Secure Object Delivery Protocol (SODP) servers. The purpose of this document is to indicate options from, and requirements in addition to, the base specifications listed in Section 1.1 that are necessary for client interoperability with NSA-operated SODP servers. Clients are always devices and need not implement all of the interfaces specified herein; clients are free to choose which interfaces to implement based on their operational requirements. Interfaces supported by SODP servers include:¶
This profile applies to the capabilities, configuration, and operation of all components of US National Security Systems [SP-800-59]. It is also appropriate for other US Government systems that process high-value information. It is made publicly available for use by developers and operators of these and any other system deployments.¶
This profile conforms to the existing requirements of the NSA's Commercial National Security Algorithms (CNSAs). As operational needs evolve over time, this profile will be updated to incorporate new commercial algorithms and protocols as they are developed and approved for use.¶
Familiarity with the follow specifications is assumed:¶
The requirements from RFCs apply throughout this profile and are generally not repeated here. This document is purposely written without using the requirements language described in [RFC2119] and [RFC8174].¶
The document is organized as follows:¶
The environment is client-server-based, from which clients obtain secure "objects" or "packages". Objects/packages vary based on the Source of Authority (SOA), but all objects are "secured" minimally through the use of one or more digital signatures and zero or more layers of encryption, as profiled in this document. An SOA is the authority for the creation of objects that the client will recognize as valid. An SOA can delegate its authority to other actors; delegation occurs through the issuance of certificates. An object or package is the generic term for certificates, certificate status information, and keys (both asymmetric and symmetric). All of the objects except for the certificates and certificate status information are directly encapsulated in and protected by CMS content types. CMS content types that provide security are referred to as "CMS-protecting content types". All others are simply referred to as "CMS content types". All secured objects are distributed either as CMS packages or as part of a CMS package.¶
In the example depicted in Figure 1, there are two SOAs: one for symmetric keys, as depicted by the Key Trust Anchor (KTA), and one for public key certificates, as depicted by the PKI Trust Anchor (TA). The KTA is responsible for the creation and distribution of symmetric keys. The KTA delegates the creation and distribution responsibilities to separate entities through the issuance of certificates to a Key Source Authority (KSA) and a Key Distribution Authority (KDA). The KSA generates the keys, digitally signs the keys, and encrypts the key for the end client using CMS content types for each step. The KDA distributes the KSA-generated and KSA-protected key to the client; the key may also be signed by the KDA. The resulting CMS package is provided to the client through the EST extension's /symmetrickey service. The PKI TA is responsible for the creation, distribution, and management of public key certificates. The PKI TA delegates these responsibilities to Certification Authorities (CAs), and CAs, in turn, are responsible for creating, distributing, and managing End-Entity (EE) certificates. CAs distribute PKI-related information through the /cacerts, /crls, /eecerts, /fullcmc, /simpleenroll, /simplereenroll, and /csrattrs EST and EST extension services.¶
For clients that support the CMC interface and not the EST interface, the environment includes only the PKI TAs.¶
Implementations of this specification use the 2002/2008 ASN.1 version; 2002/2008 ASN.1 modules can be found in [RFC5911], [RFC5912], and [RFC6268] (use [RFC6268] for the CMS syntax), while other specifications already include the 2002/2008 ASN.1 along with the 1988 ASN.1. See Section 1.1 of [RFC6268] for a discussion about the differences between the 2002 and 2008 ASN.1 versions.¶
EST [RFC7030] and EST extensions [RFC8295] client options are specified in this section.¶
Clients that receive redirection responses (3xx status codes) will terminate the connection ([RFC7030], Section 3.2.1).¶
Per Section 2.2 of [RFC8295], clients indicate the format ("application/xml" or "application/json") of the PAL information ([RFC8295], Section 2.1.1) via the HTTP Accept header.¶
TLS implementations are configured as specified in [RFC9151]; the notable exception is that only EC-based algorithms are used.¶
At the EST interface, servers enroll only clients that they have a prior established relationship with, established independently of the EST service. To accomplish this, client owners/operators interact in person with the human acting as the Registration Authority (RA) to ensure the information included in the transmitted certificate request, which is sometimes called a Certificate Signing Request (CSR), is associated with a client. The mechanism by which the owner/operator interacts with the RA as well as the information provided is beyond the scope of this document. The information exchanged by the owner/operator might be something as simple as the subject name included in the CSR to be sent or a copy of the certificate that will be used to verify the certificate request, which is provided out of band.¶
Mutual authentication occurs via "Certificate TLS Authentication" ([RFC7030], Section 2.1). Clients provide their certificate to servers in the TLS Certificate message, which is sent in response to the server's TLS Certificate Request message. Both servers and clients reject all attempts to authenticate based on certificates that cannot be validated back to an installed TA.¶
Clients always use an explicit TA database ([RFC7030], Section 3.6.1). At a minimum, clients support two TAs: one for the PKI and one for symmetric keys.¶
Clients check that the server's certificate includes the id-kp-cmcRA Extended Key Usage (EKU) value ([RFC6402], Section 2.10).¶
Clients that support processing of the CMS Content Constraints extension [RFC6010] ensure returned CMS content is from an SOA or an entity authorized by an SOA for that CMS content; see Section 6 for SOA certificates.¶
This section profiles SODP's EST [RFC7030] and EST extension [RFC8295] interfaces.¶
The Package Availability List (PAL) is limited to 32 entries, where the 32nd PAL entry links to an additional PAL (i.e., PAL Package Type 0001).¶
The CA certificates located in the explicit TA database are distributed to the client when it is registered. This TA distribution mechanism is out of scope.¶
CA certificates provided through this service are as specified in Sections 5 and 6 of this document.¶
CSRs follow the specifications in Section 4.2 of [RFC8756], except that the CMC-specific Change Subject Name and the POP Link Witness V2 attributes do not apply. Second, only EC-based algorithms are used.¶
Client certificates provided through this service are as specified in Section 7 of this document.¶
The HTTP content type of "text/plain" ([RFC2046], Section 4.1) is used to return human-readable errors.¶
There are no additional requirements for requests beyond those specified in Sections 3.4 and 3.6.3 of this document.¶
The HTTP content type of "text/plain" ([RFC2046], Section 4.1) is used to return human-readable errors.¶
Requests are as specified in [RFC8756] with the notable exception that only EC-based algorithms are used.¶
Additional attributes for returned CMS packages can be found in [RFC7906].¶
Certificates provided through this service are as specified in Section 7 of this document.¶
PKCS#12 [RFC7292], sometimes referred to as "PFX" (Personal Information Exchange), "P12", and "PKCS#12" files, are used to provide server-generated asymmetric private keys and the associated certificate to clients. This interface is a one-way interface as the RA requests these from the server.¶
PFXs [RFC7292] are exchanged using both password privacy mode and integrity password mode. The PRF algorithm for PBKDF2 (the KDF for PBES2 and PBMAC1) is HMAC-SHA-384, and the PBES2 encryption scheme is AES-256.¶
The HTTP content type of "text/plain" ([RFC2046], Section 4.1) is used to return human-readable errors.¶
/serverkeygen/return is not supported at this time.¶
Clients use this service to retrieve partially filled PKIRequests: PKIRequests with no public key or proof-of-possession signature, i.e., their values are set to zero length, either a zero length BIT STRING or OCTET STRING. The pKCS7PDU attribute, defined in [RFC2985], includes the partially filled PKIRequest as the only element in the CsrAttrs sequence. Even though the CsrAttrs syntax is defined as a set, there is only ever exactly one instance of values present.¶
Clients that claim to support SODP interoperation will be able to process the following messages from an SODP server: additional encryption and origin authentication ([RFC8295], Section 5); server-provided Symmetric Key Content Type [RFC6032] encapsulated in an Encrypted Key Content Type using the EnvelopedData choice [RFC6033] with an SOA certificate that includes the CMS Content Constraints extension (see Section 7.1).¶
Client-supported algorithms to decrypt the server-returned symmetric key are as follows:¶
/symmetrickeys/return is not used at this time.¶
/eecerts, /firmware, and /tamp are not used at this time.¶
CMC [RFC5274] [RFC6402] client options are specified in this section.¶
Clients only use the HTTPS-based transport. The TLS implementation and configuration are as specified in [RFC9151]; the notable exceptions are that only EC-based algorithms are used.¶
Clients that receive HTTP redirection responses (3xx status codes) will terminate the connection ([RFC7030], Section 3.2.1).¶
At the CMC interface, servers enroll only clients that they have a prior established relationship with, established independently of the EST service. To accomplish this, client owners/operators interact in person with the human acting as the Registration Authority (RA) to ensure the information included in the transmitted certificate request, which is sometimes called a Certificate Signing Request (CSR), is associated with a client. The mechanism by which the owner/operator interacts with the RA as well as the information provided is beyond the scope of this document. The information exchanged by the owner/operator might be something as simple as the subject name included in the CSR to be sent or a copy of the certificate that will be used to verify the certificate request, which is provided out of band.¶
Mutual authentication occurs via client and server signing of CMC protocol elements, as required by [RFC8756]. All such signatures must be validated against an installed TA; any that fail validation are rejected.¶
Clients support the simultaneous presence of as many TAs as are required for all of the functions of the client, and only these TAs.¶
Clients check that the server's certificate includes the id-kp-cmcRA Extended Key Usage (EKU) value ([RFC6402], Section 2.10).¶
Clients that support processing of the CMS Content Constraints extension [RFC6010] ensure returned CMS content is from an SOA or an entity authorized by an SOA for that CMS content; see Section 6 for SOA certificates.¶
Requests are as specified in [RFC8756] with the notable exception that only EC-based algorithms are used.¶
Additional attributes for returned CMC packages can be found in [RFC7906].¶
Certificates provided through this service are as specified in Section 7 of this document.¶
Clients are free to store the TA in the format of their choosing; however, servers provide TA information in the form of self-signed CA certificates. This section documents requirements for self-signed certificates in addition to those specified in [RFC8603], which in turn specifies requirements in addition to those in [RFC5280].¶
Only EC-based algorithms are used.¶
Issuer and subject names are composed of only the following naming attributes: country name, domain component, organization name, organizational unit name, common name, state or province name, distinguished name qualifier, and serial number.¶
In the Subject Key Identifier extension, the keyIdentifier is the 64 low-order bits of the subject's subjectPublicKey field.¶
In the Key Usage extension, the nonRepudiation bit is never set.¶
This section documents requirements for non-self-signed CA certificates in addition to those specified in [RFC8603], which in turn specifies requirements in addition to those in [RFC5280].¶
Only EC-based algorithms are used.¶
Subject names are composed of only the following naming attributes: country name, domain component, organization name, organizational unit name, common name, state or province name, distinguished name qualifier, and serial number.¶
In the Authority Key Identifier extension, the keyIdentifier choice is always used. The keyIdentifier is the 64 low-order bits of the issuer's subjectPublicKey field.¶
In the Subject Key Identifier extension, the keyIdentifier is the 64 low-order bits of the subject's subjectPublicKey field.¶
In the Key Usage extension, the nonRepudiation bit is never set.¶
The Certificate Policies extension is always included, and policyQualifiers are never used.¶
Non-self-signed CA certificates can also include the following:¶
Issuers include the Authority Clearance Constraints extension [RFC5913] in non-self-signed CA certificates that are issued to non-SOAs; values for the Certificate Policy (CP) Object Identifier (OID) and the supported classList values are found in the issuer's CP. Criticality is determined by the issuer, and a securityCategories is never included. Only one instance of Clearance is generated in the AuthorityClearanceConstraints sequence.¶
Issuers include a critical CMS Content Constraints extension [RFC6010] in CA certificates used to issue SOA certificates; this is necessary to enable enforcement of scope of the SOA authority. The content types included depend on the packages the SOA sources but include key packages (i.e., Encrypted Key Packages, Symmetric Key Packages, and Asymmetric Key Packages).¶
This section documents requirements for EE signature and key establishment certificates in addition to those listed in [RFC8603], which in turn specifies requirements in addition to those in [RFC5280].¶
Only EC-based algorithms are used.¶
Subject names are composed of the following naming attributes: country name, domain component, organization name, organizational unit name, common name, state or province name, distinguished name qualifier, and serial number.¶
In the Authority Key Identifier extension, the keyIdentifier choice is always used. The keyIdentifier is the 64 low-order bits of the issuer's subjectPublicKey field.¶
In the Subject Key Identifier extension, the keyIdentifier is the 64 low-order bits of the subject's subjectPublicKey field.¶
In the Key Usage extension, signature certificates only assert digitalSignature, and key establishment certificates only assert keyAgreement.¶
The Certificate Policies extension is always included, and policyQualifiers are never used.¶
When included, the non-critical CRL Distribution Point extension's distributionPoint is always identified by the fullName choice; the uniformResourceIdentifier GeneralName choice is always included, but others can also be used as long as the first element in the sequence of distribution points is the URI choice and it is an HTTP/HTTPS scheme; the reasons and cRLIssuer fields are never populated.¶
The following subsections provide additional requirements for the different types of EE certificates.¶
This section specifies the format for SOA certificates, i.e., certificates issued to those entities that are authorized to create, digitally sign, encrypt, and distribute key packages; these certificates are issued by non-PKI TAs.¶
The Subject Alternative Name extension is always included. The following choices are supported: rfc822Name, dnsName, ediPartyName, uniformResourceIdentifier, or ipAddress (both IPv4 and IPv6). This extension is never critical.¶
A critical CMS Content Constraints extension [RFC6010] is included in SOA signature certificates. The content types included depend on the packages the SOA sources (e.g., Encrypted Key Packages, Symmetric Key Packages, and Asymmetric Key Packages).¶
This section specifies the format for certificates issued to clients.¶
A non-critical Subject Directory Attributes extension is always included with the following attributes:¶
The following extensions are also included at the discretion of the CA:¶
This section documents requirements for Relying Parties (RPs) in addition to those listed in [RFC8603], which in turn specifies requirements in addition to those in [RFC5280].¶
Only EC-based algorithms are used.¶
RPs support the Authority Key Identifier and the Subject Key Identifier extensions.¶
RPs should support the following extensions: CRL Distribution Points, Authority Information Access, Subject Directory Attribute, Authority Clearance Constraints, and CMS Content Constraints.¶
Within the Subject Directory Attribute extension, RPs should support the Clearance Sponsor, Clearance, and Device Owner attributes.¶
RPs support the id-kp-cmcRA and id-kp-cmcCA EKUs.¶
Failure to support extensions in this section might limit the suitability of a device for certain applications.¶
This section documents requirements for CRLs in addition to those listed in [RFC8603], which in turn specifies requirements in addition to those in [RFC5280].¶
Only EC-based algorithms are used.¶
Two types of CRLs are produced: complete base CRLs and partitioned base CRLs.¶
crlEntryExtensions are never included, and the reasons and cRLIssuer fields are never populated.¶
All CRLs include the following CRL extensions:¶
The only other extension included in partitioned base CRLs is the Issuing Distribution Point extension. The distributionPoint is always identified by the fullName choice; the uniformResourceIdentifier GeneralName choice is always included, but others can also be used as long as the first element in the sequence of distribution points is the uniformResourceIdentifier choice and the scheme is an HTTP/HTTPS scheme; all other fields are omitted.¶
This document has no IANA actions.¶
This entire document is about security. This document profiles the use of many protocols and services: EST, CMC, and PKCS#10/#7/#12 as well as certificates, CRLs, and their extensions [RFC5280]. These have been referred to throughout this document, and those specifications should be consulted for security considerations related to implemented protocol and services.¶