On Jul 20, 2010, at 5:31 PM, Ondřej Surý wrote: > Olaf, > > here you have diff (against up-to-date SVN) and full text for Key Algorithm > Rollover. The attached text was created as joint effort by me and Olafur. > > Ondrej. >
Thanks Ondrej and Olafur, Turns out that you pulled the text from the SVN just a little early and that I had already modified the table in a way similar to how you modified the table.. :-). Besides the text had changed slightly so the diff did apply cleanly. Anyway, I did copy most of your suggestions. Except that I did not want to clutter the table with RRSIG_ZSK_1(*) since the SOA signature already represents that. I did make a note about that representation in the text leading to the table. Adding the parent is off value, but I choose to follow the representation as in 4.1.2. Also version 3 of the draft had a paragraph about introducing NSEC3, I believe you have special experience in that field, and that paragraph needs careful review. In any case the section now reads as below. I would appreciate a review to see if this is according to your liking. Also see http://tinyurl.com/27odxco for the diffs abains I-D-03 and http://www.secret-wg.org/draft-ietf-dnsop-rfc4641bis.txt for the version on the trunk. --Olaf 4.1.5. Key algorithm rollover A special class of key rollover is the one needed for a change of key algorithms (either adding a new algorithm, removing an old algorithm, or both). Additional steps are needed to retain integrity during this rollover. Because of the algorithm downgrade protection in RFC4035 section 2.2, you may not have a key of an algorithm for which you do not have signatures, and you may not have a DS record in the parent zone of an algorithm for which you don't have a corresponding key in the zone apex. When adding a new algorithm, the signatures should be added first. After the TTL of RRSIGS has expired, and caches have dropped the old data covered by those signatures, the DNSKEY with the new algorithm can be added. After the new algorithm has been added, the DS record can be exchanged using Double Signature Key Rollover. You cannot use Pre- publish key rollover method when you do key algorithm rollover. When removing an old algorithm, the DNSKEY should be removed first, but only after the DS for the old algorithm was removed from the parent zone. The following figure describes the steps. Whereby the trailing underscored number indicates the algorithm and ZSK and KSK indicate the obvious difference in key use. For example DNSKEY_KSK_1 is a the DNSKEY RR representing the public part of the old key signing key of algorithm type 1 while RRSIG_ZSK_2(SOA3) is the RRSIG RR made with the private part of the new zone signing key of algorithm type 2 over a SOA RR (that has serial number 3). It is assumed that the key that signes the SOA RR also signes all other non-DNSKEY RRset data. Kolkman Expires January 13, 2011 [Page 26] Internet-Draft DNSSEC Operational Practices, Version 2 July 2010 ---------------------------------------------------------------- 1 Initial 2 New RRSIGS 3 New DNSKEY ---------------------------------------------------------------- Parent: SOA0 -------------- ( SOA0 )--------------> RRSIGpar(SOA0) -------------------------------------> DS_KSK_1 -------------------------------------> RRSIGpar(DS_KSK_1) -------------------------------------> Child: SOA0 SOA1 SOA2 RRSIG_ZSK_1(SOA0) RRSIG_ZSK_1(SOA1) RRSIG_ZSK_1(SOA2) RRSIG_ZSK_2(SOA1) RRSIG_ZSK_2(SOA2) DNSKEY_KSK_1 DNSKEY_KSK_1 DNSKEY_KSK_1 DNSKEY_ZSK_1 DNSKEY_ZSK_1 DNSKEY_ZSK_1 RRSIG_KSK_1(DNSKEY) RRSIG_KSK_1(DNSKEY) DNSKEY_KSK_2 RRSIG_KSK_2(DNSKEY) DNSKEY_ZKS_2 RRSIG_KSK_1(DNSKEY) RRSIG_KSK_2(DNSKEY) ---------------------------------------------------------------- 4 Exchange DS 5 Remove DNSKEY 6 Remove RRSIGS ---------------------------------------------------------------- Parent: SOA1 -------------( SOA1 )----------------> RRSIGpar(SOA1) -------------------------------------> DS_KSK_2 -------------------------------------> RRSIGpar(DS_KSK_2) -------------------------------------> Child: ---- (SOA2 ) ---> SOA3 SOA4 ----------------> RRSIG_ZSK_1(SOA3) RRSIG_ZSK_2(SOA4) ----------------> RRSIG_ZSK_2(SOA3) ----------------> DNSKEY_KSK_2 DNSKEY_KSK_2 ----------------> DNSKEY_ZSK_2 DNSKEY_ZSK_2 ----------------> RRSIG_KSK_1(DNSKEY) RRSIG_KSK_2(DNSKEY) ----------------> RRSIG_KSK_2(DNSKEY) ---------------------------------------------------------------- Stages of Deployment during an Algorithm Rollover. Step 1 describes state of the zone before any transition is done. Number of the keys may vary, but the algorithm of keys in the zone is same for all DNSKEY records. Step 2: the signatures made with the new key over all records in the Kolkman Expires January 13, 2011 [Page 27] Internet-Draft DNSSEC Operational Practices, Version 2 July 2010 zone are added, but the key itself is not. This includes the signature for the DNSKEY rrset. While in theory, the signatures of the keyset should always be synchronized with the keyset itself, it can be possible that RRSIGS are requested separately, so it is prudent to also sign the DNSKEY set with the new signature. Step 3: After the cache data has expired, the new key can be added to the zone. Step 4: After the cache data for the DNSKEY has expired, the DS record for the new key can be added to the parent zone and the DS record for the old key can be removed in the same step. Step 5: After the cache data for the DS has expired, the old algorithm can be removed. This time the key needs to be removed first, before removing the signatures. The key is removed in this step , and after the cache data for the DNSKEY has expired, the signatures can also be removed during this step. [OK:The following paragrapgh is provisional and needs careful review.] A special case is the rollover from an NSEC signed zone to an NSEC3 signed zone. In this case algorithm numbers are used to signal support for NSEC3 but they do not mandate the use of NSEC3. Therefore NSEC records should remain in the zone until the rollover to a new algorithm has completed and the new DNSKEY RR set has populated distant caches(at least one TTL into stage 4, or at any time during stage 5). At that point the validators that have not implemented NSEC3 will treat the zone as unsecured as soon as they follow the chain of trust to DS that points to a DNSKEY of the new algorithm while validators that support NSEC3 will happily validate using NSEC. Turning on NSEC3 can then be done when changing from zone serial number, realizing that that involves a resigning of the zone and the introduction of the NSECPARAM record in order to signal authoritative servers to start serving NSEC3 authenticated denial of existence. ________________________________________________________ Olaf M. Kolkman NLnet Labs Science Park 140, http://www.nlnetlabs.nl/ 1098 XG Amsterdam _______________________________________________ DNSOP mailing list DNSOP@ietf.org https://www.ietf.org/mailman/listinfo/dnsop