Folks,

The design team (Roque, Sean, and I) has been working on an I-D to deal with algorithm migration (as directed by our cognizant AD, Tim). In the course of exploring ways to do this, we (at least I) became convinced that we first needed to document how to perform (non-emergency) key rollover when the algorithm suite stays constant. I view this as a very similar transition problem, and one that needs to be addressed first, to provide guidance to the algorithm migration problem.

Anyway, in the course of exploring solutions we have encountered some problems with some aspects of the current RPKI design details. So, before we proceed too far, we wanted to share our perceptions of the requirements for key rollover (and algorithm migration), to make sure that there is WG agreement on the basis for this work. Also, this provides a context and rationale for some of the changes that we believe may be needed for two, current SIDR I-Ds (resource certificate profile and repository structure).

The RPKI must accommodate transitions between the public keys used by CAs. Transitions of this sort are usually termed "key rollover". Planned key rollover will occur at regular intervals throughout the life of the RPKI, as each CA changes its public keys, in a non-coordinated fashion. (By non-coordinated we mean that the time at which each CA elects to change its keys is locally determined, not coordinated across the RPKI.) Moreover, because a key change might be necessitated by suspected private key compromise, one can never assume coordination of these events among all of the CAs in the RPKI. In an emergency key rollover, the old certificate is revoked and a new certificate with a new key is issued. (We do not plan to provided a detailed discussion regarding emergency key rollover in this document unless the WG requires such.)

In discussing key rollover we make a few assumptions (goals?):

1. We assume that each relying party (RP) accesses the repository system in a locally-controlled fashion. The RP may employ a top-down tree walk, as suggested in the repository structure I-D, but that tree walk may be interrupted by communication problems, publication point lockout (to enable a publisher to add or remove objects in an "atomic" fashion, local processing problems, etc. As a result, an RP may skip over one or more publication points and return to them later. Moreover, an RP may suffer a partial of total loss of data from the local cache that the repository structure documents suggests each RP maintain. Thus we cannot assume that an RP visits every publication point in order, in a continuous, top-down fashion. We also cannot be certain how long it may take an RP to complete its traversal of the repository tree. Thus we must be prepared to accommodate situations in which an RP elects to process the data it has collected, even if that data is a mix of old and new retrievals. We are pursuing a strategy for key rollover (and algorithm suite migration) that minimizes the likelihood that an RP will be unable to verify data that it has retrieved from the repository, under the processing and communication assumptions noted above.

2. It is necessary for a CA to be able to rollover a key without affecting subordinate CAs, e.g., these CAs MUST NOT be required to reissue any certificates or signed objects that they manage in their directory (repository publication point). This assumption implies that only CAs are involved in key rollover: the CA requesting the rekey, and its parent.

3. In the case of algorithm migration, we expect that it will take some time for ALL CAs and ALL RPs to be prepared to generate and consume signed objects produced using a new algorithm suite. To simplify the migration, we assume that the upper tiers of the RPKI, e.g., IANA and the RIRs, will be the first to support a new algorithm suite. This assumption means that a lower tier CA will not be able to issue certificates, CRLs, and signed objects under a new algorithm suite until all of its parents have begun to do so. We want to know if this is a reasonable assumption. Because we also assume that migration will take a while (a year or more?), it will be essential a CA that has begun to use the new suite publish certificates, CRLs, and signed objects under both the old and new suites during the migration period.

Given these assumptions, we have adopted an initial design in which both key rollover and algorithm suite migration entail an interval during which old and new CA certificates, CRLs, and signed objects are maintained in parallel in the repository system. For key rollover, we anticipate that this interval will be relatively brief, say 3-7 days. For algorithm suite migration we anticipate that it will be much longer, as noted above in assumption #3.

One implication of this initial design is that the definition of the AIA pointer in each (non-self-signed) certificate needs to be changed. The certificate profile calls for this extension to point to the file containing the parent (CA) certificate. The problem with this definition is that it conflicts with assumption/goal #2. When a CA rekeys it is issued a new certificate, by definition. That CA will then have to reissue certificates to its subordinate CAs, under the rekeyed CA's new key. This can be done without coordinating with the subordinate CAs. However, each certificate issued by one these subordinate CAs contains an AIA extension that points back to the OLD subordinate CA certificate. That means that these subordinate CAs would have to reissue their EE and subordinate CA certificates, to incorporate a new AIA extension, and this would have to propagate down the whole RPKI hierarchy! There is a simple fix to this, i.e., make the AIA extension point to the directory in which the parent CA certificate is stored. That way, when a CA rekeys and reissues subordinate CA certificates, IF those certificates are stored in the same directory as the old certificates, the rekey event does not affect subordinate CAs, as per #2 above. Note that this approach to using the AIA extension is consistent with what PKIX mandates for other, directory environments, i.e., X.500 and LDAP. The SKI/AKI extensions, which are mandated in the RPKI, are designed to enable an RP to select the "right" CA certificate from a directory that may contain more than one certificate associated with the same CA, but containing different keys. So, the RPKI certificate profile already includes the needed extensions to enable an RP to determine which CA certificate is appropriate for a given child certificate (CA or EE).

An implication of assumptions #1 and #3 is that, during a transition interval, old and new CA certificates, CRLs, and signed objects associated with a rekeying CA will co-exist. This means that there must be a way to generate file names for these entities that do not conflict. The current file name generation approach described in the repository structure I-D does not accommodate this for subordinate CA certificates. There is no problem for CRL or manifest files, because their file names are generated form the rekeying CA's public key, and that has changed, by definition. However, the files that contain subordinate CA certificates need a slightly modified naming procedure, since the public key for each of these certificates has not changed. It should be easy to modify the naming generation algorithm to call for appending a delimiter (maybe a dash?) and one digit, to allow old and new to coexist. A single digit qualifier should suffice as we don't seem to need to maintain more than that two instances of these CA certificate files. (We might make the value be a mod 2 counter?)

We would like to receive feedback from the WG before we go to far with this design. Please consider the assumptions/goals described above and let us know if you agree with them, if you think they should be modified, or if you want to suggest others. Also, please consider the impact of the two changes noted above, relative to the resource certificate profile and repository structure I-D's. We have tried to explain why we believe that these changes are required, but we recognize that a number of folks have been writing code based on these I-Ds, and thus there are impacts when changes of this sort are proposed.

Finally, as I noted in my comments on the repository structure I-D on 5/26, and in my review and suggested edits of that document posted a few days before, I am still wondering why we need to change the name of CA when we rekey it. This is not normally mandated in a PKI, although we are free to impose such a requirement for the RPKI if appropriate. I even generated text for the resource certificate profile to specify how to do this, using a combination of the common name and serial number attributes. (This was proposed as a way to accommodate the need to change the CA name, while retaining some part of it that might be a locally significant ID, e.g., a database key.) While I don't see a problem with performing key rollover and algorithm migration if we have to retain this requirement, I do believe that we ought to document the rationale for it.

Thanks,

Steve
_______________________________________________
sidr mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/sidr

Reply via email to