diff --git a/hannestschofenig-patch-4/draft-ietf-lamps-csr-attestation.html b/hannestschofenig-patch-4/draft-ietf-lamps-csr-attestation.html new file mode 100644 index 0000000..d350bcb --- /dev/null +++ b/hannestschofenig-patch-4/draft-ietf-lamps-csr-attestation.html @@ -0,0 +1,2274 @@ + + +
+ + + +Internet-Draft | +Remote Attestation with CSRs | +December 2023 | +
Ounsworth, et al. | +Expires 20 June 2024 | +[Page] | +
A client requesting a certificate from a Certification Authority (CA) may wish to offer believable claims about the protections afforded to the corresponding private key, such as whether the private key resides on a hardware security module or the protection capabilities provided by the hardware.¶
+This document describes how to encode Evidence produced by an Attester for inclusion in Certificate Signing Requests (CSRs), and any certificates necessary for validating it.¶
+Including Evidence along with a CSR can help to improve the assessment of the security posture for the private key, and the trustworthiness properties of the submitted key to the requested certificate profile. These Evidence Claims can include information about the hardware component's manufacturer, the version of installed or running firmware, the version of software installed or running in layers above the firmware, or the presence of hardware components providing specific protection capabilities or shielded locations (e.g., to protect keys).¶
+This note is to be removed before publishing as an RFC.¶
++ The latest revision of this draft can be found at https://lamps-wg.github.io/csr-attestation/draft-ounsworth-csr-attestation.html. + Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ietf-lamps-csr-attestation/.¶
+Source for this draft and an issue tracker can be found at + https://github.com/lamps-wg/csr-attestation.¶
++ 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 https://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 20 June 2024.¶
++ Copyright (c) 2023 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. Code Components extracted from this + document must include Revised BSD License text as described in + Section 4.e of the Trust Legal Provisions and are provided without + warranty as described in the Revised BSD License.¶
+When requesting a certificate from a Certification Authority (CA), a PKI end entity may wish to include Evidence of the security properties of its environments in which the private keys are stored in that request. +This Evidence can be appraised by authoritative entities, such as a Registration Authority (RA) or a CA, or associated trusted Verifiers as part of validating an incoming certificate request against given certificate policies. +This specification defines an attribute and an extension that allow for conveyance of Evidence in Certificate Signing Requests (CSRs) in either PKCS#10 [RFC2986] or Certificate Request Message Format (CRMF) [RFC4211] payloads.¶
+As outlined in the RATS Architecture [RFC9334], an Attester (typically +a device) produces a signed collection of Claims that constitutes Evidence about its running environment. +While the term "attestation" is not defined in RFC 9334, it was later defined in [I-D.ietf-rats-tpm-based-network-device-attest], it refers to the activity of producing and appraising remote attestation Evidence. +A Relying Party may consult an Attestation Result produced by a Verifier that has appraised the Evidence in making policy decisions about the trustworthiness of the +Target Environment being assessed via appraisal of Evidence. Section 3 provides the basis to illustrate in this document how the various roles +in the RATS architecture map to a certificate requester and a CA/RA.¶
+At the time of writing, several standard and several proprietary attestation technologies +are in use. +This specification thereby is intended to be as technology-agnostic as it is feasible with respect to implemented remote attestation technologies. Instead, it focuses on (1) the conveyance of Evidence via CSRs while making minimal assumptions about content or format of the transported Evidence and (2) the conveyance of sets of certificates used for validation of Evidence. +The certificates typically contain one or more certification paths +rooted in a device manufacture trust anchor and the leaf certificate being +on the device in question; the latter is the Attestation Key that signs the Evidence statement.¶
+This document specifies two ATTRIBUTE/Attribute definitions. The first +Attribute may be used to carry a set of certificates or public keys that +may be required to validate signed Evidence. The second Attribute carries a +structure that may be used to convey Evidence.¶
+A CSR may contain one or more Evidence payloads, for example Evidence +asserting the storage properties of a private key as well Evidence +asserting firmware version and other general properties +of the device, or Evidence signed using different cryptographic +algorithms.¶
+With these attributes, additional +information about whether to issue a certificate and what information +to populate into the certificate is available to an RA or CA. The scope of this document is, however, +limited to the conveyance of Evidence within CSR. The exact format of the +Evidence being conveyed is defined in various standard and proprietary +specifications.¶
+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 BCP 14 [RFC2119] [RFC8174] when, and only when, they +appear in all capitals, as shown here.¶
+This document re-uses the terms defined in [RFC9334] related to remote +attestation. Readers of this document are assumed to be familiar with +the following terms: Evidence, Claim, Attestation Results (AR), Attester, +Verifier, Target Environment, Attesting Environment, and Relying Party (RP).¶
+The term "Certification Request" message is defined in [RFC2986]. +Specifications, such as [RFC7030], later introduced the term +"Certificate Signing Request (CSR)" to refer to the Certification +Request message. While the term "Certification Signing Request" +would have been correct, the mistake was unnoticed. In the meanwhile +CSR is an abbreviation used beyond PKCS#10. Hence, it is equally +applicable to other protocols that use a different syntax and +even a different encoding, in particular this document also +considers Certificate Request Message Format (CRMF) [RFC4211] +to be "CSRs". We use the terms "CSR" and Certificate Request +message interchangeably.¶
+Figure 1 shows the high-level communication pattern of the RATS +background check model where the Attester transmits the Evidence in the +CSR to the RA and the CA, which is subsequently forwarded to the Verifier. +The Verifier appraises the received Evidence and computes an Attestation +Result, which is then processed by the RA/CA prior to the certificate +issuance.¶
+In addition to the background check model the RATS architecture also +specifies the passport model and combinations. See Section 5.2 of +[RFC9334] for a description of the passport model. The passport model +requires the Attester to transmit Evidence to the Verifier directly in order +to obtain the Attestation Result, which is then forwarded to the Relying +Party. This specification utilizes the background model since CSRs are +often used as one-shot messages where no direct real-time interaction +between the Attester and the Verifier is possible.¶
+Note that the Verifier is a logical role that may be included in the +RA/CA product. In this case the Relying Party and Verifier collapse into a +single entity. The Verifier functionality can, however, +also be kept separate from the RA/CA functionality, such as a utility or +library provided by the device manufacturer. For example, +security concerns may require parsers of Evidence formats to be logically +or physically separated from the core CA functionality.¶
+As discussed in RFC 9334, different security and privacy aspects need to be +considered. For example, Evidence may need to be protected against replay and +Section 10 of RFC 9334 lists approach for offering freshness. There are also +concerns about the exposure of persistent identifiers by utilizing attestation +technology, which are discussed in Section 11 of RFC 9334. Finally, the keying +material used by the Attester need to be protected against unauthorized access, +and against signing arbitrary content that originated from outside the device. +This aspect is described in Section 12 of RFC 9334. Most of these aspects are, +however, outside the scope of this specification but relevant for use with a +given attestation technology. The focus of this specification is on the +transport of Evidence from the Attester to the Relying Party via existing +CSR messages.¶
+We reference id-pkix
and id-aa
, both defined in [RFC5912].¶
We define:¶
++-- Arc for Evidence types +id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) } +¶ +
By definition, Attributes within a PKCS#10 CSR are
+typed as ATTRIBUTE and within a CRMF CSR are typed as EXTENSION.
+This attribute definition contains one or more
+Evidence bundles of type EvidenceBundle
which each contain
+one or more Evidence statements of a type EvidenceStatement
along with
+an optional certificate chain.
+This structure allows for grouping Evidence statements that share a
+certificate chain.¶
+EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER + +EvidenceStatementSet EVIDENCE-STATEMENT ::= { + ... -- Empty for now -- +} + +EvidenceStatement ::= SEQUENCE { + type EVIDENCE-STATEMENT.&id({EvidenceStatementSet}), + stmt EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}) +} + +EvidenceBundle ::= SEQUENCE +{ + evidence SEQUENCE OF EvidenceStatement, + certs SEQUENCE OF CertificateAlternatives +} + +id-aa-evidenceStatement OBJECT IDENTIFIER ::= { id-aa TBDAA } + +-- For PKCS#10 +attr-evidence ATTRIBUTE ::= { + TYPE SEQUENCE OF EvidenceBundle + IDENTIFIED BY id-aa-evidenceStatement +} + +-- For CRMF +ext-evidence EXTENSION ::= { + SYNTAX SEQUENCE OF EvidenceBundle + IDENTIFIED BY id-aa-evidenceStatement +} +¶ +
The Extension version is intended only for use within CRMF CSRs and MUST NOT be used within X.509 certificates due to the privacy implications of publishing Evidence about the end entity's hardware environment. See Section 6 for more discussion.¶
+The certs
contains a set of certificates that
+may be needed to validate the contents of an Evidence statement
+contained in evidence
. The set of certificates should contain
+the object that contains the public key needed to directly validate the
+evidence
. The remaining elements should chain that data back to
+an agreed upon trust anchor used for attestation. No order is implied, it is
+up to the Attester and its Verifier to agree on both the order and format
+of certificates contained in certs
.¶
A CSR MAY contain one or more instances of attr-evidence
or ext-evidence
.
+This means that the SEQUENCE OF EvidenceBundle
is redundant with the
+ability to carry multiple attr-evidence
or ext-evidence
at the CSR level;
+either mechanism MAY be used for carrying multiple Evidence bundles.
+We are leaving the SEQUENCE OF EvidenceBundle
since it is in general
+more flexible than relying on the containing structure to handle multiplicity
+and allows for this structure to be re-used in the future in other PKIX
+protocol contexts.¶
This is an ASN.1 CHOICE construct used to represent an encoding of a +broad variety of certificate types.¶
++CertificateAlternatives ::= + CHOICE { + cert Certificate, + typedCert [0] IMPLICIT TypedCert, + typedFlatCert [1] IMPLICIT TypedFlatCert + } +¶ +
"Certificate" is a standard X.509 certificate that MUST be compliant¶
+with RFC 5280. Enforcement of this constraint is left to the relying +parties.¶
+"TypedCert" is an ASN.1 construct that has the charateristics of a +certificate, but is not encoded as an X.509 certificate. The +certType Field (below) indicates how to interpret the certBody field. While +it is possible to carry any type of data in this structure, it's +intended the content field include data for at least one public key +formatted as a SubjectPublicKeyInfo (see [RFC5912]).¶
++TYPED-CERT ::= TYPE-IDENTIFIER + +CertType ::= TYPED-CERT.&id + +TypedCert ::= SEQUENCE { + certType TYPED-CERT.&id({TypedCertSet}), + content TYPED-CERT.&Type ({TypedCertSet}{@certType}) + } + +TypedCertSet TYPED-CERT ::= { + ... -- Empty for now, + } +¶ +
"TypedFlatCert" is a certificate that does not have a valid ASN.1 +encoding. +These are often compact or implicit certificates used by smart cards. +certType indicates the format of the data in the +certBody field, and ideally refers to a published specification.¶
++TypedFlatCert ::= SEQUENCE { + certType OBJECT IDENTIFIER, + certBody OCTET STRING +} +¶ +
IANA is requested to open one new registry, allocate a value +from the "SMI Security for PKIX Module Identifier" registry for the +included ASN.1 module, and allocate values from "SMI Security for +S/MIME Attributes" to identify two Attributes defined within.¶
+Please open up a registry for Evidence Statement Formats within +the SMI-numbers registry, allocating an assignment from id-pkix ("SMI +Security for PKIX" Registry) for the purpose.¶
+Decimal: IANA Assigned - replace TBD1¶
+Description: id-ata¶
+References: This document¶
+Initial contents: None¶
+Registration Regime: Specification Required. +Document must specify an EVIDENCE-STATEMENT definition to which this +Object Identifier shall be bound.¶
+Columns:¶
+ +A PKCS#10 or CRMF Certification Request message consists of a +distinguished name, a public key, and optionally a set of attributes, +collectively signed by the entity requesting certification. +The private key used to sign the CSR MUST be different from the +Attesting Key utilized to sign Evidence about the Target +Environment. Key separation is an important principle in cryptography +and also applies to this specification with regards to the Attestation Key +and the CSR signing key. To demonstrate that the private +key applied to sign the CSR is generated, and stored in a secure +environment that has controls to prevent theft or misuse (including +being non-exportable / non-recoverable), the Attesting Environment +has to collect claims about this secure environment (or Target +Environment, as shown in Figure 2).¶
+Figure 2 shows the interaction inside an Attester. The +Attesting Environment, which is provisioned with an Attestation Key, +retrieves claims about the Target Environment. The Target +Environment offers key generation, storage and usage, which it +makes available to services. The Attesting Environment collects +these claims about the Target Environment and signs them and +exports Evidence for use in remote attestation via a CSR.¶
+Figure 2 places the CSR library outside the Attester, which +is an implementation choice. The CSR library may also be located +inside the trusted computing base. Regardless of the placement +of the CSR library an Attesting Environment MUST be able to collect +claims about the Target Environment such that statements about +the storage of the keying material can be made. For example, one +implementation may perform a software measurement of the CSR library +along with the crypto library implementation that has access to the +keying material. For the Verifier, the provided Evidence must allow +an assessment to be made whether the key used to sign the CSR +is stored in a secure location and cannot be exported.¶
+Evidence communicated in the attributes and structures defined +in this document are meant to be used in a CSR. It is up to +the Verifier and to the Relying Party (RA/CA) to place as much or +as little trust in this information as dictated by policies.¶
+This document defines the transport of Evidence of different formats +in a CSR. Some of these encoding formats are based on standards +while others are proprietary formats. A Verifier will need to understand +these formats for matching the received claim values against policies.¶
+Policies drive the processing of Evidence at the Verifier: the Verifier's +Appraisal Policy for Evidence will often be based on specifications by the manufacturer +of a hardware security module, a regulatory agency, or specified by an +oversight body, such as the CA Browser Forum. The Code-Signing Baseline +Requirements [CSBR] document is an example of such a policy that has +been published by the CA Browser Forum and specifies certain properties, +such as non-exportability, which must be enabled for storing +publicly-trusted code-signing keys. Other +policies influence the decision making at the Relying Party when +evaluating the Attestation Result. The Relying Party is ultimately +responsible for making a decision of what information in the Attestation +Result it will accept. The presence of the attributes defined in this +specification provide the Relying Party with additional assurance about +an Attester. Policies used at the Verifier and the Relying Party are +implementation dependent and out of scope for this document. Whether to +require the use of Evidence in a CSR is out-of-scope for this document.¶
+Evidence generated by an Attester generally needs to be fresh to provide +value to the Verifier since the configuration on the device may change +over time. Section 10 of [RFC9334] discusses different approaches for +providing freshness, including a nonce-based approach, the use of timestamps +and an epoch-based technique. The use of nonces requires an extra message +exchange via the Relying Party and the use of timestamps requires +synchronized clocks. Epochs also require (unidirectional) communication. +None of these things are practical when interacting with Hardware Security +Modules (HSM).¶
+Additionally, the definition of "fresh" is somewhat ambiguous in the context +of CSRs, especially considering that non-automated certificate enrollments +are often asyncronous, and considering the common practice of re-using the +same CSR for multiple certificate renewals across the lifetime of a key. +"Freshness" typically implies both asserting that the data was generated +at a certain point-in-time, as well as providing non-replayability. +Certain use cases may have special properties impacting the freshness +requirements. For example, HSMs are typically designed to not allow downgrade +of private key storage properties; for example if a given key was asserted at +time T to have been generated inside the hardware boundary and to be +non-exportable, then it can be assumed that those properties of that key +will continue to hold into the future.¶
+Developers, operators, and designers of protocols, which embed +Evidence-carrying-CSRs, need to consider what notion of freshness is +appropriate and available in-context; thus the issue of freshness is +left up to the discretion of protocol designers and implementors.¶
+This document specifies and Extension for carrying Evidence in a CRMF Certificate Signing Request (CSR), but it is intentionally NOT RECOMMENDED for a CA to copy the ext-evidence or ext-evidenceCerts extensions into the published certificate. +The reason for this is that certificates are considered public information and the Evidence might contain detailed information about hardware and patch levels of the device on which the private key resides. +The certificate requester has consented to sharing this detailed device information with the CA but might not consent to having these details published. +These privacy considerations are beyond the scope of this document and may require additional signaling mechanisms in the CSR to prevent unintended publication of sensitive information, so we leave it as "NOT RECOMMENDED".¶
+This section provides two non-normative examples for embedding Evidence +in CSRs. The first example embeds Evidence produced by a TPM in the CSR. +The second example conveys an Arm Platform Security Architecture token, +which provides claims about the used hardware and software platform, +into the CSR.¶
+At the time of writing, the authors are not aware of registered OIDs for these evidence formats, and so we leave the OIDs as TBD1 / TBD2.¶
+The following example illustrates a CSR with a signed TPM Quote based on +[TPM20]. The Platform Configuration Registers (PCRs) are fixed-size +registers in a TPM that record measurements of software and configuration +information and are therefore used to capture the system state. The digests +stored in these registers are then digitially signed with an attestation +key known to the hardware.¶
+Note: The information conveyed in the value field of the EvidenceStatement +structure may contain more information than the signed TPM Quote structure +defined in the TPM v2.0 specification [TPM20], such as plaintext PCR values, +the up-time, the event log, etc. The detailed structure of such +payload is, however, not defined in this document and may be subject to +future standardization work in supplementary documents.¶
+The example shown in Figure 4 illustrates how the Arm +Platform Security Architecture (PSA) Attestation Token +is conveyed in a CSR. The content of the Evidence in this example is re-used +from [I-D.tschofenig-rats-psa-token] and contains an Entity Attestation +Token (EAT) digitally signed with an attestation private key.¶
+The decoded Evidence is shown in Appendix A of +[I-D.tschofenig-rats-psa-token], the shown Evidence, provides the following +information to an RA/CA:¶
+ ++CSR-ATTESTATION-2023 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix-attest-01(TBDMOD)} + +DEFINITIONS IMPLICIT TAGS ::= BEGIN + +EXPORTS ALL; + +IMPORTS + +Certificate, id-pkix + FROM PKIX1Explicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)} + + +EXTENSION, ATTRIBUTE, AttributeSet{}, SingleAttribute{} + FROM PKIX-CommonTypes-2009 -- from [RFC5912] + { iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) } + +id-aa +FROM SecureMimeMessageV3dot1 + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) pkcs-9(9) smime(16) modules(0) msg-v3dot1(21) } + ; + + +-- Branch for attestation statement types +id-ata OBJECT IDENTIFIER ::= { id-pkix (TBD1) } + + +CertificateAlternatives ::= + CHOICE { + cert Certificate, + typedCert [0] IMPLICIT TypedCert, + typedFlatCert [1] IMPLICIT TypedFlatCert, + ... + } + +TYPED-CERT ::= TYPE-IDENTIFIER + +CertType ::= TYPED-CERT.&id + +TypedCert ::= SEQUENCE { + certType TYPED-CERT.&id({TypedCertSet}), + content TYPED-CERT.&Type ({TypedCertSet}{@certType}) + } + +TypedCertSet TYPED-CERT ::= { + ... -- Empty for now, + } + +TypedFlatCert ::= SEQUENCE { + certType OBJECT IDENTIFIER, + certBody OCTET STRING +} + +EVIDENCE-STATEMENT ::= TYPE-IDENTIFIER + +EvidenceStatementSet EVIDENCE-STATEMENT ::= { + ... -- Empty for now -- +} + +EvidenceStatement ::= SEQUENCE { + type EVIDENCE-STATEMENT.&id({EvidenceStatementSet}), + stmt EVIDENCE-STATEMENT.&Type({EvidenceStatementSet}{@type}) +} + +id-aa-evidenceStatement OBJECT IDENTIFIER ::= { id-aa TBDAA } + +-- For PKCS#10 +attr-evidence ATTRIBUTE ::= { + TYPE SEQUENCE OF EvidenceBundle + IDENTIFIED BY id-aa-evidenceStatement +} + + +-- For CRMF +ext-evidence EXTENSION ::= { + SYNTAX SEQUENCE OF EvidenceBundle + IDENTIFIED BY id-aa-evidenceStatement +} + +EvidenceBundle ::= SEQUENCE +{ + evidence SEQUENCE OF EvidenceStatement, + certs SEQUENCE OF CertificateAlternatives OPTIONAL +} + + +END +¶ +
This section gives an example of extending the ASN.1 module above to carry an existing ASN.1-based evidence statement. The example used is the Trusted Computing Group DICE Attestation Conceptual Message Wrapper as defined in [TCGDICE1.1].¶
++tcgDiceEvidenceStatementES EVIDENCE-STATEMENT ::= + { ConceptualMessageWrapper IDENTIFIED BY tcg-dice-conceptual-message-wrapper } + +-- where ConceptualMessageWrapper and tcg-dice-conceptual-message-wrapper +-- are defined in DICE-Attestation-Architecture-Version-1.1-Revision-17_1August2023.pdf + +EvidenceStatementSet EVIDENCE-STATEMENT ::= { + tcgDiceEvidenceStatementES, ... +} + +¶ +
This specification is the work of a design team created by the chairs of the +LAMPS working group. The following persons, in no specific order, +contributed to the work: Richard Kettlewell, Chris Trufan, Bruno Couillard, +Jean-Pierre Fiset, Sander Temme, Jethro Beekman, Zsolt Rózsahegyi, Ferenc +Pető, Mike Agrenius Kushner, Tomas Gustavsson, Dieter Bong, Christopher Meyer, +Michael StJohns, Carl Wallace, Michael Ricardson, Tomofumi Okubo, Olivier +Couillard, John Gray, Eric Amador, Johnson Darren, Herman Slatman, Tiru Reddy, +Thomas Fossati, Corey Bonnel, Argenius Kushner, James Hagborg.¶
+We would like to specifically thank Mike StJohns for his work on an earlier +version of this draft.¶
+Remote Attestation with CSRs | +plain text | +same as main | +
Remote Attestation with CSRs | +plain text | +diff with main | +