RFC 6489
Certification Authority (CA) Key Rollover in the Resource Public Key Infrastructure (RPKI)
Certification Authority (CA) Key Rollover in the Resource Public Key Infrastructure (RPKI) ๐
- RFC number: 6489
- Series: Internet Engineering Task Force (IETF)
- Authors: G. Huston (APNIC), G. Michaelson (APNIC), S. Kent (BBN)
- Category: Best Current Practice, BCP 174
- ISSN: 2070-1721
- Date: February 2012
- Obsoletes / Updates: nothing is listed in the title block ๐ง
Abstract โจ
okay so this doc describes how a Certification Authority (CA) in the Resource Public Key Infrastructure (RPKI) does a planned rollover of its key pair ๐ it also covers what this key rollover procedure means for relying parties (RPs). generally, RPs are expected to keep a local cache of the objects published in the RPKI repository, so the way a CA does its key rollover affects RPs, and that's the whole reason this matters ๐
Status of This Memo ๐ธ
This memo documents an Internet Best Current Practice.
This doc is an IETF product, so it represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). more on BCPs is in Section 2 of RFC 5741.
more info on the current status of this document, any errata, and how to send feedback is at http://www.rfc-editor.org/info/rfc6489.
Copyright Notice ๐
Copyright (c) 2012 IETF Trust and the people named 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) as in effect on the date of publication. please read these carefully, bestie, because they describe your rights and restrictions for this document. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License.
Table of Contents ๐ฆ
1. Introduction ....................................................2
1.1. Terminology and Concepts ...................................2
2. CA Key Rollover Procedure .......................................3
3. Relying Party Requirements ......................................6
4. Reissuing Certificates and RPKI Signed Objects ..................7
4.1. CA Certificates ............................................7
4.2. RPKI Signed Objects ........................................7
5. Security Considerations .........................................8
6. Acknowledgements ................................................8
7. References ......................................................9
7.1. Normative References .......................................9
7.2. Informative References .....................................9
1. Introduction ๐
okay, so this doc lays out an algorithm that a Certification Authority (CA) in the Resource Public Key Infrastructure (RPKI) [RFC6480] uses to roll over its key pair ๐
this doc defines a "conservative" procedure for those entities to follow when they do a key rollover. it's "conservative" because the CA's actions during the rollover are not meant to disrupt how relying parties (RPs) keep their local cached copy of the RPKI distributed repository running normally ๐ซถ with this procedure, RPs can validate all authentic objects in the RPKI, using the validation procedure in [RFC6480], at all times. main character energy for the RPs, honestly โจ
1.1. Terminology and Concepts ๐
it's assumed you already know the terms and concepts in "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" [RFC5280], "X.509 Extensions for IP Addresses and AS Identifiers" [RFC3779], the profile for RPKI Certificates [RFC6487], and the RPKI repository structure [RFC6481] .
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. these are the words that carry the weight in this doc, so read them carefully ๐
part 1 of 3 down! ๐ part 2 is next, so stay tuned โจ
2. CA Key Rollover Procedure โจ
okay so a CA in the RPKI is basically the entity that issues CA and end-entity (EE) certificates plus Certificate Revocation Lists (CRLs) ๐. Each CA instance is tied to one single key pair [RFC6487], which means if key rollover is a regularly scheduled thing, you end up with lots of CA instances over time ๐ธ. So strictly speaking, a CA doesn't really "roll over" its key. To get the same effect, it makes a brand new instance of itself with a new key pair, then swaps that "new" instance into the RPKI hierarchy in place of the "old" one ๐ฆ.
Also, this procedure is mainly about planned key rollover, not an emergency one, like when a private key gets suspected or detected as compromised ๐จ. It still works for emergencies too, just not for the length of the Staging Period ๐ .
There are a bunch of things a CA performing a key rollover MUST follow, and the biggest one is that the RPKI can be used for control of routing integrity [RFC6480]. So key rollover should never cause a temporary gap where an RP ends up with the wrong idea about whether the attestations in the RPKI are authentic ๐ญ. A CA can't assume every RP does path validation and path discovery the exact same way, so the key rollover procedure MUST preserve the integrity of the CRL Distribution Points (CRLDP), Subject Information Access (SIA), and Authority Information Access (AIA) pointers in RPKI certificates ๐ซถ.
Here's the flow. The CA makes a "new" CA instance and gets its new public key published in a "new" CA certificate. The "current" and "new" CA instances share one repository publication point, but each one has its own CRL and its own manifest ๐ง. At the start, the "new" CA publishes an empty CRL and a manifest with a single entry for that CRL. The "current" CA keeps its published CRL and manifest at that same publication point too ๐.
Then the CA waits. The point of waiting is to give every RP time to find and grab that "new" CA certificate and store it in its local RPKI repository cache instance. This wait is called the Staging Period โณ. During it, the "new" CA instance has no subordinate products yet, while the "current" CA instance has issued all of them ๐.
When the Staging Period ends, the "new" CA instance MUST replace all (valid) subordinate products of the "current" CA instance, overwriting the "current" subordinate products at the CA's repository publication point ๐ฅ. Once that's done, the "current" CA instance gets retired and the "new" CA instance becomes the "current" CA ๐.
While the "current" and "new" instances are swapping, the "new" CA instance MUST reissue all subordinate products of the "current" CA ๐ฆ. This procedure says that, apart from manifests and CRLs, the reissued subordinate products have to be published using the same repository publication point object names, so they basically overwrite the old objects ๐. The whole point of that overwrite is to keep the AIA pointers of subordinate products at lower tiers of the RPKI hierarchy correct, so the key rollover doesn't need any actions from any subordinate CA ๐.
There are three CA states here:
- CURRENT: The CURRENT CA is the active CA instance that accepts and processes certificate issuance and revocation requests ๐ . The starting point for this algorithm is that the key of the CURRENT CA is about to be rolled over.
- NEW: The NEW CA is the CA instance being created ๐ฑ. It isn't active, so it doesn't accept or process certificate issuance and revocation requests. The NEW CA SHOULD issue a CRL and an EE certificate along with its manifest, so it's a trivial, complete, and consistent CA instance ๐ง.
- OLD: The CA instance is being removed ๐๏ธ. An OLD CA instance can't process any certificate issuance or revocation requests. It keeps issuing its regularly scheduled CRLs, and it issues an EE certificate as part of updating its manifest to reflect the updated CRL ๐ซ.
To do a key rollover, the CA MUST perform the following steps in the order given here. Unless specified otherwise, each step SHOULD be performed without any intervening delay โฉ. The process MUST be run through to completion ๐.
- Generate a new key pair for the NEW CA ๐. Since the goal here is key rollover, the key pair generated in this step MUST be different from the pair the CURRENT CA is using ๐ โโ๏ธ.
- Generate a certificate request with this key pair and send it to the CA that issued the CURRENT CA certificate ๐จ. This request MUST include the same SIA extension that's in the CURRENT CA certificate ๐. Once the request is satisfied, the NEW CA certificate gets published ๐ฅณ. This (NEW) CA certificate has a subject name picked by the issuer, and that name MUST be distinct from the subject name used in the CURRENT CA certificate ๐ . The Certificate Practice Statement (CPS) for the issuer of the NEW CA certificate says what time frame to expect for processing a certificate request ๐๏ธ.
- Publish the NEW CA's CRL and manifest ๐. The steps involved are:
- Wait for the issuer of the NEW CA to publish the NEW CA certificate โณ.
- As quickly as possible after the NEW CA certificate is published, use the key pair associated with the NEW CA to generate an initially empty CRL, and publish it at the NEW CA's repository publication point ๐ท. It is RECOMMENDED that the CRL for the NEW CA have a
nextUpdatevalue that causes the CRL to be replaced at the end of the Staging Period (see in Step 4 below) ๐ฆ. - Generate a new key pair, and generate an associated EE certificate request with an AIA value of the NEW CA's repository publication point ๐. Send this EE certificate request to the NEW CA, and use the returned (single-use) EE certificate as the NEW CA's manifest EE certificate ๐๏ธ.
- Generate a manifest that contains the new CA's CRL as the only entry, and sign it with the private key associated with the manifest EE certificate โ๏ธ. Publish the manifest at the NEW CA's repository publication point ๐.
- Destroy the private key associated with the manifest EE certificate ๐ฅ.
- The NEW CA enters a Staging Period โธ๏ธ. The duration of the Staging Period is up to the CA, but it SHOULD be no less than 24 hours โฐ. The Staging Period gives all RPs an opportunity to download the NEW CA certificate before any certificates, CRLs, or RPKI signed objects get published under the NEW CA ๐. During the Staging Period, the NEW CA SHOULD reissue, but not publish, all of the products that were issued under the CURRENT CA ๐ง. That includes all CA certificates, EE certificates, and RPKI signed objects ๐ฆ. Section 4 describes how each reissued product relates to the product it replaces ๐. During the Staging Period, the CURRENT CA SHOULD keep accepting and processing certificate issuance requests, and it MUST keep accepting and processing certificate revocation requests ๐. If the CURRENT CA issues any certificates during the Staging Period, they MUST be reissued under the NEW CA during this period ๐. Any certificates revoked under the CURRENT CA MUST NOT be reissued under the NEW CA ๐ซ. As noted above, in an emergency key rollover, a CA decides whether the 24 hour minimal Staging Period is appropriate or whether a shorter Staging Period is needed ๐. Since the Staging Period puts no extra burden on Relying Parties, there is no stipulated or recommended maximum Staging Period ๐.
- When the Staging Period expires, the NEW CA MUST publish the signed products that were reissued under the NEW CA ๐. These replace the matching products issued under the CURRENT CA at the NEW CA's repository publication point ๐. This replacement is implied by the file naming requirements that [RFC6481] puts on these signed products ๐. The trivial manifest for the NEW CA (which had only one entry, for the NEW CA's CRL) gets replaced by a manifest listing all of these reissued, signed products ๐. At this point, the CURRENT CA becomes the OLD CA, and the NEW CA becomes the CURRENT CA ๐. Use the OLD CA to issue a manifest that lists only the OLD CA's CRL ๐๏ธ. This step is expected to be super brief, maybe a few minutes, because the CA already reissued all the signed products during the Staging Period โก. Still, the activities in this step should be seen as atomic by RPs ๐ซง.
- Generate a certificate revocation request for the OLD CA certificate and submit it to the issuer of that certificate ๐โโ๏ธ. Once the OLD CA certificate is revoked, the CRL for the OLD CA gets removed from the repository, along with the manifest for the OLD CA ๐งน. The private key for the OLD CA is destroyed ๐ฅ.
3. Relying Party Requirements ๐
This procedure defines a Staging Period for CAs doing a key rollover operation ๐ซถ. The period is defined as one no shorter than 24 hours โณ.
RPs who keep a local cache of the distributed RPKI repository MUST run a local cache synchronization operation against the distributed RPKI repository at regular intervals of no longer than 24 hours ๐. Keep those syncs on schedule, bestie ๐ฐ๏ธ.
4. Reissuing Certificates and RPKI Signed Objects ๐
This section has the rules a CA MUST follow when it reissues subordinate certificates and RPKI signed objects [RFC6488] as part of the key rollover process ๐. Quick note: CRLs and manifests don't get reissued, per se ๐. They're generated for each CA instance instead. A manifest catalogues the contents of a publication point relative to a CA instance ๐๏ธ. A CRL lists revoked certificates relative to a CA instance ๐ซ. The key rollover handling for CRLs and manifests is covered above, in Section 3 ๐ธ.
4.1. CA Certificates ๐
okay so when a CA is doing the key rollover thing and reissues its CA certificate, it copies every single field and extension value from the old cert into the new one ๐ no skipping! The only exceptions are that the notBefore value MAY be set to the current date and time, and the certificate serial number MAY change. โจ Since the reissued cert comes from a different CA instance, the serial number doesn't have to change, but the CA MUST make sure that each certificate issued under a specific CA instance (a distinct name and key) has a unique serial number ๐ฅ that part is non-negotiable, bestie!
4.2. RPKI Signed Objects ๐ฆ
An RPKI signed object is a Cryptographic Message Syntax (CMS) signed-data object, containing an EE certificate and a payload (content) [RFC6488]. ๐ฆ When a key rollover happens, the EE certificate for the RPKI signed object MUST be reissued under the key of the NEW CA ๐
Now the CA has two options, and both are giving main character energy ๐ The first option is to treat this EE certificate the same way it treats CA certificates, so it copies over all fields and extensions (i.e., everything), and MAY change only the notBefore date and the serial number ๐ธ If the CA goes this route, the new EE certificate gets slotted into the CMS wrapper, but the signed context stays the same. (If the signing time or binary signing time values in the CMS wrapper are non-null, they MAY be updated to reflect the current time โฐ)
The second option is to generate a brand new key pair for the EE certificate ๐ง If the CA does this, the object content MUST be resigned under the private key that matches the EE certificate. In this case the EE certificate MUST contain a new public key and a new notBefore value, and it MAY contain a new notAfter value. Everything else (all the other field and extension values, except the ones about the digital signature and its certificate validation path) stays unchanged ๐ซถ And again, if the signing time or binary signing time values in the CMS wrapper are non-null, they MAY be updated to reflect the current time ๐
As noted in Sections 2.1.6.4.3 and 2.1.6.4.4 of [RFC6488], the presence or absence of the signing-time and/or the binary-signing-time attribute MUST NOT affect the validity of the RPKI signed object. ๐ซ So whether those attributes are there or not, the object's validity is unaffected, iykyk ๐
5. Security Considerations ๐ฅ
okay this section is SERIOUS but also lowkey iconic ๐ญ No key should be used forever. The longer a key is in use, the greater the probability that it will have been compromised through carelessness, accident, espionage, or cryptanalysis ๐ Infrequent key rollover raises the risk that the rollover procedures won't be followed with the appropriate level of precision, which increases the risk of operational failure of some form in the key rollover process. Regular scheduling of key rollover is generally considered part of prudent key management practice ๐ BUT key rollover also puts extra operational burdens on both the CA and the population of RPs, so it's a trade-off, fr fr.
These considerations mean that when choosing lifetimes for the keys it manages, a CA should balance security and operational impact (on RPs) โ๏ธ A CA should perform key rollover at regularly scheduled intervals. These intervals should be frequent enough to minimize the risks associated with key compromise (noted above) and to maintain local operational proficiency with respect to the key rollover process. However, key lifetimes should be sufficiently long so that the (system-wide) load associated with key rollover events across the entire RPKI does not impose an excessive burden upon the population of RPs ๐ฎโ๐จ RPs are encouraged to maintain an accurate local cache of the current state of the RPKI, which implies frequent queries to the RPKI repository system to detect changes ๐ And when a CA rekeys, it changes many signed objects, so it impacts ALL RPs. Literally everyone feels it ๐
6. Acknowledgements ๐
The authors would like to acknowledge the review comments of Tim Bruijnzeels and Sean Turner in preparing this document. ๐ Big thank-yous to them!
7. References โจ
7.1. Normative References ๐
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP Addresses and AS Identifiers", RFC 3779, June 2004.
- [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.
- [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support Secure Internet Routing", RFC 6480, February 2012.
- [RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for Resource Certificate Repository Structure", RFC 6481, February 2012.
- [RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for X.509 PKIX Resource Certificates", RFC 6487, February 2012.
7.2. Informative References ๐ธ
- [RFC6488] Lepinski, M., Chi, A., and S. Kent, "Signed Object Template for the Resource Public Key Infrastructure (RPKI)", RFC 6488, February 2012.
Authors' Addresses ๐ฆ
Geoff Huston
APNIC
EMail: gih@apnic.net
URI: http://www.apnic.net
George Michaelson
APNIC
EMail: ggm@apnic.net
URI: http://www.apnic.net
Stephen Kent
BBN Technologies
10 Moulton St.
Cambridge, MA 02138
USA
EMail: kent@bbn.com
๐ฆ where this page comes from
- ietf: rfc6489 2012-02
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms