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.

On 20.3.2010 17:10, Olaf Kolkman wrote:



Colleagues

This is a status update on RFC4641bis. Please refer to links provided for more 
details on the issues. I have no particular issues I need to discuss in the 
face to face meeting and will present what is written below in a somewhat 
condensed form. If folk have something they would like to discuss it is 
probably best to give a heads-up here.


High level summary:

Most changes in the document are with respect to the description about keys and 
key maintenance (section 3). I've tried to stress the operational tradeoffs and 
make those the basis of the cryptographic considerations. The idea is that the 
tradeoff between costs and threats set the operational handling of the keys. 
Once you know how you want to handle the keys operationally set the appropriate 
crypto parameters.

Also there is a completely new section on the Next Record types (section 5) and 
there are considerations added about the changing ones dns operator (section 
4.4.5)





In detail
- http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/HSMs
Addressed in a section 3.1.4.3  "Private Key Storage"
I believe this issue to be resolved.

- http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/NSEC-NSEC3
Complete new section 5.

There is one remaining point there brought up in
        From:   Florian Weimer<fwei...@bfk.de>
        Subject:        Re: [DNSOP] rfc4641bis: NSEC vs NSEC3.
        Date:   February 22, 2010 11:20:16 PM PST
        To:     Olaf Kolkman<o...@nlnetlabs.nl>
        Cc:     Alex Bligh<a...@alex.org.uk>, Paul Wouters<p...@xelerance.com>, dnsop 
WG<dnsop@ietf.org>

NSEC making the packet too big base on the argument that " However, NSEC 
records are sometimes returned in response to
DO=0 queries"

I believe there is consensus that that is caused by an implementation bug. 
Therefore the issue can be closed.


- http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/Review-NIST

Scott reported that this issue can be closed.

- http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/ZSK-roll-frequency
- http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/cryptography_flawed
- 
http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/discussion_of_timescales
- http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/rollover_assumptions

I believe these issues where addressed by reordering and rewriting parts of 
section 3. But this section may need a little more work to clarify that the 
approach is from operational perspective rather than a highest achievable 
crypto perspective.

http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/non-cooperative-registrars
Added as:
4.4.5.2.  Non Cooperationg DNS Operators

This issue is resolved although a review of the supporting figure is needed.



The following issues have not yet been addressed and the issue needs to be 
reviewed on relevance against the current version

http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/trust_anchor_and_parent_keys
http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/differentiation_trustanchor_parent
http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/trust_anchor_configuration
http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/timing_terminology


I've added
http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/Signature_validity
 From the recent mail from Sebastian where he asks for guidance on signature 
validity intervals

that is an issue that is probably closely related to

http://www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/timing_terminology

which I will address in the next version.


--
 Ondřej Surý
 vedoucí výzkumu/Head of R&D department
 -------------------------------------------
 CZ.NIC, z.s.p.o.    --    Laboratoře CZ.NIC
 Americka 23, 120 00 Praha 2, Czech Republic
 mailto:ondrej.s...@nic.cz    http://nic.cz/
 tel:+420.222745110       fax:+420.222745112
 -------------------------------------------
$Id: Key_algorithm_roll 38 2010-02-17 14:12:44Z olaf $
2008090400
   
    Key algorithm rollover section
    Jelte Jansen
    Added: 5 Sept 2008
    http://www.ietf.org/mail-archive/web/dnsop/current/msg06707.html

During some work on DNSKEY maintenance, I think i found a potential
operational issue. If we are going to do new work on DNSSEC Operational
Practices, I would like to suggest to add a text similar to that
attached to this message.

The issue lies in the combination of algorithm downgrade protection and
caching, and can result in a small window of time (depending on TTLs),
where all data in a zone could be considered bogus by validators.

RFC4035 states the following (section 2.2):

   There MUST be an RRSIG for each RRset using at least one DNSKEY of
   each algorithm in the zone apex DNSKEY RRset.

   While this poses no problem when an admistrator rolls a key with an
   algorithm that is already present in the keyset, it can do so when
   introducing new or removing old algorithms.

   Caches may have both the old keyset and the old rrsets with signatures
   stored. When a new keyset is introduced, and the keyset happens to
   expire in the cache before the signatures do, the cache will retrieve
   the new keyset. Since it still has the rrsets with old signatures, it
   will see no reason to update those.

   Now the validator will encounter a key with an algorithm for which
   there are no signatures. This is prohibited by the earlier statement
   in RFC4035, resulting in rejection of the data.

   [Jelte Suggests text with tables]



Resolution:

Section 4.2.5 was introduced version 01.


4.2.4.  Key algorithm rollover

   [OK: The txt of this section is a strawman for the issue in: http://
   www.nlnetlabs.nl/svn/rfc4641bis/trunk/open-issues/Key_algorithm_roll
   ]

   A special class of keyrollover is the rollover of key algorithms
   (either adding a new algorithm, removing an old algorithm, or both),
   additional steps are needed to retain integrity during the 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.

   To do both, the following steps can be used.  For clarity, we use one
   key signing key and one zone signing key for each algorithm.  In
   following table, we assume that DNSKEY_KSK_1 and DNSKEY_ZSK_1 are
   DNSKEYS with the old algorithm and DNSKEY_KSK_2 and DNSKEY_ZSK_2 are
   DNSKEYS with the new algorithm.

   ----------------------------------------------------------------
   1 Initial            2 New RRSIGS         3 New DNSKEY
   ----------------------------------------------------------------
 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_ZSK_2
                                             RRSIG_KSK_1(DNSKEY)
                                             RRSIG_KSK_2(DNSKEY)

   RRSIG_ZSK_1(*)       RRSIG_ZSK_1(*)       RRSIG_ZSK_1(*)
                        RRSIG_ZSK_2(*)       RRSIG_ZSK_2(*)


 Parent:
   SOA0                 SOA0                 SOA0
   RRSIGpar(SOA0)       RRSIGpar(SOA0)       RRSIGpar(SOA0)
   DS_KSK_1             DS_KSK_1             DS_KSK_1
   RRSIGpar(DS_KSK_1)   RRSIGpar(DS_KSK_1)   RRSIGpar(DS_KSK_1)

   ----------------------------------------------------------------
   4 Exchange DS        5 Remove DNSKEY      6 Remove RRSIGS
   ----------------------------------------------------------------
   SOA2                 SOA3                 SOA4
   RRSIG_ZSK_1(SOA3)    RRSIG_ZSK_1(SOA3)    RRSIG_ZSK_2(SOA4)
   RRSIG_ZSK_2(SOA3)    RRSIG_ZSK_2(SOA3)

   DNSKEY_KSK_1         DNSKEY_KSK_2         DNSKEY_KSK_2
   DNSKEY_ZSK_1         DNSKEY_ZSK_2         DNSKEY_ZSK_2
   DNSKEY_KSK_2         RRSIG_KSK_1(DNSKEY)  RRSIG_KSK_2(DNSKEY)
   DNSKEY_ZSK_2         RRSIG_KSK_2(DNSKEY)
   RRSIG_KSK_1(DNSKEY)
   RRSIG_KSK_2(DNSKEY)

   RRSIG_ZSK_1(*)       RRSIG_ZSK_1(*)       RRSIG_ZSK_2(*)
   RRSIG_ZSK_2(*)       RRSIG_ZSK_2(*)

 Parent:
   SOA1                 SOA1                 SOA1
   RRSIGpar(SOA1)       RRSIGpar(SOA1)       RRSIGpar(SOA1)
   DS_KSK_2             DS_KSK_2             DS_KSK_2
   RRSIGpar(DS_KSK_2)   RRSIGpar(DS_KSK_2)   RRSIGpar(DS_KSK_2)

   ----------------------------------------------------------------

   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.

   In step 2, the signatures for the new key for all records in the 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 might be prudent
   to also sign the DNSKEY set with the new signature.

   After the cached data for all RRSIGS in the zone has expired, the new
   key can be added to the zone, as done in step 3.

   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.

   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 step 5, and after
   the cache data for the DNSKEY has expired, the signatures can be
   removed in step 5.

   The above steps ensure that during the rollover to a new algorithm,
   the integrity of the zone is never broken.
Index: Key_algorithm_roll
===================================================================
--- Key_algorithm_roll	(revision 63)
+++ Key_algorithm_roll	(working copy)
@@ -55,55 +55,104 @@
 
    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.
+   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 has expired, and caches have dropped the old data
-   covered by those signatures, the DNSKEY with the new algorithm can be
-   added.  When removing an old algorithm, the DNSKEY should be removed
-   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.
 
-   To do both, the following steps can be used.  For simplicity, we use
-   a zone that is only signed by one zone signing key.
+   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.
+
+   To do both, the following steps can be used.  For clarity, we use one
+   key signing key and one zone signing key for each algorithm.  In
+   following table, we assume that DNSKEY_KSK_1 and DNSKEY_ZSK_1 are
+   DNSKEYS with the old algorithm and DNSKEY_KSK_2 and DNSKEY_ZSK_2 are
+   DNSKEYS with the new algorithm.
+
    ----------------------------------------------------------------
-   1 Initial           2 New RRSIGS       3 New DNSKEY
+   1 Initial            2 New RRSIGS         3 New DNSKEY
    ----------------------------------------------------------------
-   SOA0                SOA1               SOA2
-   RRSIG1(SOA0)        RRSIG1(SOA1)       RRSIG1(SOA2)
-                       RRSIG2(SOA1)       RRSIG2(SOA2)
+ Child:
+   SOA0                 SOA1                 SOA2
+   RRSIG_ZSK_1(SOA0)    RRSIG_ZSK_1(SOA1)    RRSIG_ZSK_1(SOA2)
+                        RRSIG_ZSK_2(SOA1)    RRSIG_ZSK_2(SOA2)
 
-   DNSKEY1             DNSKEY1            DNSKEY1
-   RRSIG1(DNSKEY)      RRSIG1(DNSKEY)     DNSKEY2
-                       RRSIG2(DNSKEY)     RRSIG1(DNSKEY)
-                                          RRSIG2(DNSKEY)
+   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_ZSK_2
+                                             RRSIG_KSK_1(DNSKEY)
+                                             RRSIG_KSK_2(DNSKEY)
+
+   RRSIG_ZSK_1(*)       RRSIG_ZSK_1(*)       RRSIG_ZSK_1(*)
+                        RRSIG_ZSK_2(*)       RRSIG_ZSK_2(*)
+
+
+ Parent:
+   SOA0                 SOA0                 SOA0
+   RRSIGpar(SOA0)       RRSIGpar(SOA0)       RRSIGpar(SOA0)
+   DS_KSK_1             DS_KSK_1             DS_KSK_1
+   RRSIGpar(DS_KSK_1)   RRSIGpar(DS_KSK_1)   RRSIGpar(DS_KSK_1)
+
    ----------------------------------------------------------------
-   4 Remove DNSKEY     5 Remove RRSIGS
+   4 Exchange DS        5 Remove DNSKEY      6 Remove RRSIGS
    ----------------------------------------------------------------
-   SOA3                SOA4
-   RRSIG1(SOA3)        RRSIG2(SOA4)
-   RRSIG2(SOA3)
+   SOA2                 SOA3                 SOA4
+   RRSIG_ZSK_1(SOA3)    RRSIG_ZSK_1(SOA3)    RRSIG_ZSK_2(SOA4)
+   RRSIG_ZSK_2(SOA3)    RRSIG_ZSK_2(SOA3)
 
-   DNSKEY2             DNSKEY2
-   RRSIG1(DNSKEY)      RRSIG2(DNSKEY)
-   RRSIG2(DNSKEY)
+   DNSKEY_KSK_1         DNSKEY_KSK_2         DNSKEY_KSK_2
+   DNSKEY_ZSK_1         DNSKEY_ZSK_2         DNSKEY_ZSK_2
+   DNSKEY_KSK_2         RRSIG_KSK_1(DNSKEY)  RRSIG_KSK_2(DNSKEY)
+   DNSKEY_ZSK_2         RRSIG_KSK_2(DNSKEY)
+   RRSIG_KSK_1(DNSKEY)
+   RRSIG_KSK_2(DNSKEY)
+
+   RRSIG_ZSK_1(*)       RRSIG_ZSK_1(*)       RRSIG_ZSK_2(*)
+   RRSIG_ZSK_2(*)       RRSIG_ZSK_2(*)
+
+ Parent:
+   SOA1                 SOA1                 SOA1
+   RRSIGpar(SOA1)       RRSIGpar(SOA1)       RRSIGpar(SOA1)
+   DS_KSK_2             DS_KSK_2             DS_KSK_2
+   RRSIGpar(DS_KSK_2)   RRSIGpar(DS_KSK_2)   RRSIGpar(DS_KSK_2)
+
    ----------------------------------------------------------------
 
    Stages of Deployment during an Algorithm Rollover.
 
-   In step 2, the signatures for the new key are added, but the key
-   itself is not.  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 might be prudent to also
-   sign the DNSKEY set with the new signature.
+   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.
 
-   After the cache data has expired, the new key can be added to the
-   zone, as done in step 3.
+   In step 2, the signatures for the new key for all records in the 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 might be prudent
+   to also sign the DNSKEY set with the new signature.
 
-   The next step is to remove the old algorithm.  This time the key
-   needs to be removed first, before removing the signatures.  The key
-   is removed in step 4, and after the cache data has expired, the
-   signatures can be removed in step 5.
+   After the cached data for all RRSIGS in the zone has expired, the new
+   key can be added to the zone, as done in step 3.
 
+   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.
+
+   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 step 5, and after
+   the cache data for the DNSKEY has expired, the signatures can be
+   removed in step 5.
+
    The above steps ensure that during the rollover to a new algorithm,
    the integrity of the zone is never broken.
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to