draft-ietf-lamps-hash-of-root-key-cert-extn-02.txt | draft-ietf-lamps-hash-of-root-key-cert-extn-03.txt | |||
---|---|---|---|---|
Network Working Group R. Housley | Network Working Group R. Housley | |||
Internet-Draft Vigil Security | Internet-Draft Vigil Security | |||
Intended status: Informational December 27, 2018 | Intended status: Informational January 03, 2019 | |||
Expires: June 30, 2019 | Expires: July 7, 2019 | |||
Hash Of Root Key Certificate Extension | Hash Of Root Key Certificate Extension | |||
draft-ietf-lamps-hash-of-root-key-cert-extn-02 | draft-ietf-lamps-hash-of-root-key-cert-extn-03 | |||
Abstract | Abstract | |||
This document specifies the Hash Of Root Key certificate extension. | This document specifies the Hash Of Root Key certificate extension. | |||
This certificate extension is carried in the self-signed certificate | This certificate extension is carried in the self-signed certificate | |||
for a trust anchor, which is often called a Root Certification | for a trust anchor, which is often called a Root Certification | |||
Authority (CA) certificate. This certificate extension unambiguously | Authority (CA) certificate. This certificate extension unambiguously | |||
identifies the next public key that will be used by the trust anchor | identifies the next public key that will be used at some point in the | |||
at some point in the future. | future as the next Root CA certificate, replacing the current one. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on June 30, 2019. | This Internet-Draft will expire on July 7, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 16 ¶ | skipping to change at page 2, line 16 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.2. ASN.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. ASN.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Hash Of Root Key Certificate Extension . . . . . . . . . . . 4 | 3. Hash Of Root Key Certificate Extension . . . . . . . . . . . 4 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | |||
5. Operational Considerations . . . . . . . . . . . . . . . . . 4 | 5. Operational Considerations . . . . . . . . . . . . . . . . . 4 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 6 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 6 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 7 | 8.2. Informative References . . . . . . . . . . . . . . . . . 7 | |||
Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 7 | Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 7 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
1. Introduction | 1. Introduction | |||
This document specifies the Hash Of Root Key X.509 version 3 | This document specifies the Hash Of Root Key X.509 version 3 | |||
certificate extension. The extension is an optional addition to the | certificate extension. The extension is an optional addition to the | |||
Internet X.509 Public Key Infrastructure Certificate and Certificate | Internet X.509 Public Key Infrastructure Certificate and Certificate | |||
Revocation List (CRL) Profile [RFC5280]. The certificate extension | Revocation List (CRL) Profile [RFC5280]. The certificate extension | |||
facilitates the orderly transition from one Root Certification | facilitates the orderly transition from one Root Certification | |||
Authority (CA) public key to the next. It does so by publishing the | Authority (CA) public key to the next. It does so by publishing the | |||
hash value of the next generation public key in the current self- | hash value of the next generation public key in the current self- | |||
signed certificate. This allows a relying party to unambiguously | signed certificate. This hash value is a commitment to a particular | |||
recognize the next generation public key when it becomes available, | public key in the next generation self-signed certificate. This | |||
install that public key in the trust anchor store, and remove the | commitment allows a relying party to unambiguously recognize the next | |||
previous public key from the trust anchor store. | generation self-signed certificate when it becomes available, install | |||
the new self-signed certificate in the trust anchor store, and remove | ||||
the previous one from the trust anchor store. | ||||
A Root CA Certificate MAY include the Hashed Root Key certificate | A Root CA Certificate MAY include the Hashed Root Key certificate | |||
extension to provide the hash value of the next public key that will | extension to provide the hash value of the next public key that will | |||
be used by the Root CA. | be used by the Root CA. | |||
1.1. Terminology | 1.1. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119][RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119][RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
1.2. ASN.1 | 1.2. ASN.1 | |||
Certificates [RFC5280] are generated using ASN.1 [X680]; certificates | Certificates [RFC5280] are generated using ASN.1 [X680]; certificates | |||
are always encoded with the Distinguished Encoding Rules (DER) | are always encoded with the Distinguished Encoding Rules (DER) | |||
[X690]. | [X690]. | |||
2. Overview | 2. Overview | |||
Before the initial deployment of the Root CA, the following are | Before the initial deployment of the Root CA, the following are | |||
generated: | generated: | |||
R1 = The initial Root key pair | R1 = The initial Root key pair | |||
C1 = Self-signed certificate for R1, which also contains H2 | ||||
R2 = The second generation Root key pair | R2 = The second generation Root key pair | |||
H2 = Thumbprint (hash) of the public key of R2 | H2 = Thumbprint (hash) of the public key of R2 | |||
C1 = Self-signed certificate for R1, which also contains H2 | ||||
C1 is a self-signed certificate, and it contains H2 within the | C1 is a self-signed certificate, and it contains H2 within the | |||
HashOfRootKey extension. C1 is distributed as part of the initial | HashOfRootKey extension. C1 is distributed as part of the initial | |||
the system deployment. The HashOfRootKey certificate extension is | the system deployment. The HashOfRootKey certificate extension is | |||
described in Section 3. | described in Section 3. | |||
When the time comes to replace the initial Root CA certificate, R1, | When the time comes to replace the initial Root CA certificate, R1, | |||
the following are generated: | the following are generated: | |||
R3 = The third generation Root key pair | R3 = The third generation Root key pair | |||
H3 = Thumbprint (hash) the public key of R3 | H3 = Thumbprint (hash) the public key of R3 | |||
C2 = Self-signed certificate for R2, which contains H3 | C2 = Self-signed certificate for R2, which contains H3 | |||
This is an iterative process. That is, R4 and H4 are generated when | This is an iterative process. That is, R4 and H4 are generated when | |||
it is time for C3 to replace C2. And so on. | it is time for C3 to replace C2. And so on. | |||
The successors to the Root CA self-signed certificate can be | The successor to the Root CA self-signed certificate can be delivered | |||
delivered by any means. Whenever a new Root CA certificate is | by any means. Whenever a new Root CA certificate is received, the | |||
received, the recipient is able to verify that the potential Root CA | recipient is able to verify that the potential Root CA certificate | |||
certificate links back to a previously authenticated Root CA | links back to a previously authenticated Root CA certificate with the | |||
certificate with the hashOfRootKey certificate extension. That is, | hashOfRootKey certificate extension. That is, the recipient verifies | |||
verify the signature on the self-signed certificate and verify that | the signature on the self-signed certificate and verifies that the | |||
the hash of the DER-encoded SubjectPublicKeyInfo from the potential | hash of the DER-encoded SubjectPublicKeyInfo from the potential Root | |||
Root CA certificate matches the value from the HashOfRootKey | CA certificate matches the value from the HashOfRootKey certificate | |||
certificate extension of the current Root CA certificate. Checking | extension of the current Root CA certificate. Checking the self- | |||
the self-signed certificate signature ensures that the certificate | signed certificate signature ensures that the certificate contains | |||
contains the subject name that the key owner intends, which is | the subject name, public key algorithm identifier, and public key | |||
important for path validation. Checking the hash of the | algorithm parameters intended by the key owner intends; these are | |||
important inputs to certification path validation as defined in | ||||
Section 6 of [RFC5280]. Checking the hash of the | ||||
SubjectPublicKeyInfo ensures that the certificate contains the | SubjectPublicKeyInfo ensures that the certificate contains the | |||
intended public key. If either check fails, then potential Root CA | intended public key. If either check fails, then potential Root CA | |||
certificate is not a valid replacement, and the recipient continues | certificate is not a valid replacement, and the recipient continues | |||
to use the current Root CA certificate. | to use the current Root CA certificate. | |||
3. Hash Of Root Key Certificate Extension | 3. Hash Of Root Key Certificate Extension | |||
The HashOfRootKey certificate extension MUST NOT be critical. | The HashOfRootKey certificate extension MUST NOT be critical. | |||
The following ASN.1 [X680][X690] syntax defines the HashOfRootKey | The following ASN.1 [X680][X690] syntax defines the HashOfRootKey | |||
skipping to change at page 4, line 48 ¶ | skipping to change at page 4, line 50 ¶ | |||
5. Operational Considerations | 5. Operational Considerations | |||
Guidance on the transition from one trust anchor to another is | Guidance on the transition from one trust anchor to another is | |||
available in [RFC2510]. In particular, the oldWithNew and newWithOld | available in [RFC2510]. In particular, the oldWithNew and newWithOld | |||
advice ensures that relying parties are able to validate certificates | advice ensures that relying parties are able to validate certificates | |||
issued under the current Root CA certificate and the next generation | issued under the current Root CA certificate and the next generation | |||
Root CA certificate throughout the transition. Further, this | Root CA certificate throughout the transition. Further, this | |||
technique avoids the need for all relying parties to make the | technique avoids the need for all relying parties to make the | |||
transition at the same time. | transition at the same time. | |||
The Root CA must securely back up the yet-to-be-deployed key pair. | ||||
If the Root CA stores the key pair in a hardware security module, and | ||||
that module fails, the Root CA remains committed to the now | ||||
unavailable key pair. The remedy is to deploy a new self-signed | ||||
certificate that contains a newly-generated key pair in the same | ||||
manner as the initial self-signed certificate, thus loosing the | ||||
benefits of the Hash Of Root Key certificate extension altogether. | ||||
6. Security Considerations | 6. Security Considerations | |||
The security considerations from [RFC5280] apply, especially the | The security considerations from [RFC5280] apply, especially the | |||
discussion of self-issued certificates. | discussion of self-issued certificates. | |||
The Hash Of Root Key certificate extension facilitates the orderly | The Hash Of Root Key certificate extension facilitates the orderly | |||
transition from one Root CA public key to the next by publishing the | transition from one Root CA public key to the next by publishing the | |||
hash value of the next generation public key in the current | hash value of the next generation public key in the current | |||
certificate. This allows a relying party to unambiguously recognize | certificate. This allows a relying party to unambiguously recognize | |||
the next generation public key when it becomes available; however, | the next generation public key when it becomes available; however, | |||
the full public key is not disclosed until the Root CA releases the | the full public key is not disclosed until the Root CA releases the | |||
next generation certificate. In this way, attackers cannot begin to | next generation certificate. In this way, attackers cannot begin to | |||
analyze the public key before the next generation Root CA certificate | analyze the public key before the next generation Root CA self-signed | |||
is released. | certificate is released. | |||
The Root CA needs to ensure that the public key in the next | The Root CA needs to ensure that the public key in the next | |||
generation certificate is as strong or stronger than the key that it | generation certificate is as strong or stronger than the key that it | |||
is replacing. | is replacing. Of course, a significant advance in cryptoanalytic | |||
capability can break the yet-to-be-deployed key pair. Such advances | ||||
are rare and difficult to predict. If such an advance occurs, the | ||||
Root CA remains committed to the now broken key. The remedy is to | ||||
deploy a new public key and algorithm in the same manner as the | ||||
initial Root CA self-signed certificate, thus loosing the benefits of | ||||
the Hash Of Root Key certificate extension altogether. | ||||
The Root CA needs to employ a hash function that is resistant to | The Root CA needs to employ a hash function that is resistant to | |||
preimage attacks [RFC4270]. A first-preimage attack against the hash | preimage attacks [RFC4270]. A first-preimage attack against the hash | |||
function would allow an attacker to find another input that results | function would allow an attacker to find another input that results | |||
published hash value. For the attack to be successful, the input | published hash value. For the attack to be successful, the input | |||
would have to be a valid SubjectPublicKeyInfo that contains the | would have to be a valid SubjectPublicKeyInfo that contains the | |||
public key that corresponds to a private key known to the attacker. | public key that corresponds to a private key known to the attacker. | |||
A second-preimage attack becomes possible once the Root CA releases | A second-preimage attack becomes possible once the Root CA releases | |||
the next generation public key, which makes the input to the hash | the next generation public key, which makes the input to the hash | |||
function becomes available to the attacker and everyone else. Again, | function becomes available to the attacker and everyone else. Again, | |||
skipping to change at page 6, line 9 ¶ | skipping to change at page 6, line 23 ¶ | |||
The Secure Electronic Transaction (SET) [SET] specification published | The Secure Electronic Transaction (SET) [SET] specification published | |||
by MasterCard and VISA in 1997 includes a very similar certificate | by MasterCard and VISA in 1997 includes a very similar certificate | |||
extension. The SET certificate extension has essentially the same | extension. The SET certificate extension has essentially the same | |||
semantics, but the syntax fairly different. | semantics, but the syntax fairly different. | |||
CTIA - The Wireless Association is developing a public key | CTIA - The Wireless Association is developing a public key | |||
infrastructure that will make use of the certificate extension | infrastructure that will make use of the certificate extension | |||
described in this document. | described in this document. | |||
Many thanks to Jim Schaad and Stefan Santesson. Their review and | Many thanks to Jim Schaad, Stefan Santesson, and Paul Hoffman. Their | |||
comments have greatly improved the document, especially the | review and comments have greatly improved the document, especially | |||
Operational Considerations and Security Considerations sections. | the Operational Considerations and Security Considerations sections. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 9, line 9 ¶ | skipping to change at page 9, line 9 ¶ | |||
HashAlgorithmId ::= AlgorithmIdentifier {DIGEST-ALGORITHM,{ ... }} | HashAlgorithmId ::= AlgorithmIdentifier {DIGEST-ALGORITHM,{ ... }} | |||
id-ce-hashOfRootKey OBJECT IDENTIFIER ::= { 1 3 6 1 4 1 51483 2 1 } | id-ce-hashOfRootKey OBJECT IDENTIFIER ::= { 1 3 6 1 4 1 51483 2 1 } | |||
END | END | |||
Author's Address | Author's Address | |||
Russ Housley | Russ Housley | |||
Vigil Security | Vigil Security | |||
918 Spring Knoll Drive | 516 Dranesville Road | |||
Herndon, VA 20170 | Herndon, VA 20170 | |||
US | US | |||
Email: housley@vigilsec.com | Email: housley@vigilsec.com | |||
End of changes. 16 change blocks. | ||||
35 lines changed or deleted | 53 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |