{11} Active Tickets by Component (Full Description) (50 matches)

List active tickets, grouped by component. This report demonstrates the use of full-row display.

bind-patches

Ticket Summary Milestone Type Severity Created
Description
#8 Make BIND use base32 defect normal 11/02/05

Currently using hex, which is wrong.


#9 Stop dependency on SOA defect normal 11/02/05

prove_nx_domain() uses the SOA to create FQDNs from hash values. This is not necessary, and doesn't always work, since the SOA may not be present in the response.

Make it compare hashes directly instead of as FQDNs.


#10 NSEC3 checks in bind are incomplete defect normal 11/02/05

NSEC3 should check that:

a) All NSEC3s come from the same zone b) None of them prove an NS that delegates to qname (or records from a parent zone can be used for denial).


drafts

Ticket Summary Milestone Type Severity Created
Description
#18 Check signatures before checking NSEC3 if iterations are high defect major 03/18/06

This is the opposite to standard practice so note it in the I-D.


#47 nsec3 zones can have CNAME and other data issues w/ older servers defect blocker 09/19/06

Documennt that there are some NSEC3 zones that are not DNSSEC 4034 safe let alone RFC 1035 safe.

e.g.

MM6OHIUFMG05ST4UQQUVIJ0QG6UF1PIF.optoutempty.ws.nsec3.org. 3600 IN NSEC3 1 1 10 AFFE 0DIBIVDPK0P88S11VP5OVOILSLC21QLI MM6OHIUFMG05ST4UQQUVIJ0QG6UF1PIF.optoutempty.ws.nsec3.org. 3600 IN CNAME foo


#2 Describe salt rollover and determination of parameters defect normal 10/31/05

Show how a large zone can incrementally roll the salt.

Specify that the apex NSEC3 determines which paramaters cover the whole zone.


#4 Reference "closest encloser" definition defect normal 10/31/05

#5 Make it clear that NSEC and NSEC3 can coexist defect normal 10/31/05

i.e. NSEC3 doesn't replace NSEC, it is a choice zone owners make.


#6 Mandate same parameters in a response defect normal 10/31/05

All NSEC3s in a response MUST use the same parameters (otherwise a resolver has to hash the qname multiple times to parse the response).


#7 Fix Zone Size estimation defect normal 11/01/05

In order to estimate zone size it is not necessary to walk the whole zone, or even much of it. Just query random names and look at the interval between hashes - a few of these will give an accurate estimate.


#11 Signalling NSEC3 to NSEC3-unaware resolvers defect normal 11/13/05

Do we signal, or don't we?

If we signal, what mechanism do we use?

http://www.ietf.org/internet-drafts/draft-ietf-dnsext-dnssec-trans-03.txt discusses alternatives (and is to be updated to include EDNS version roll).


#12 Test ticket... defect normal 11/13/05

...to see what happens with updates...


#13 NSEC3 hashes have owner names whose existence is denied defect normal 11/13/05

No one has yet to present a technical argument on how this is a problem. Peter Koch felt that we don't know yet whether this will be a problem and as such we can't summarily dismiss it. Especially considering we have a precedent of ignoring "problems" that have come back to haunt us. He has half-seriously proposed on the mailing list a solution involving using a new label type. Olafur Gudmundsson felt that we should do some experimentation to better determine if this will be a problem and keep this issue open until then. Olaf Kolkman said that the working group has agreed that for this document, it will not proceed until and engineering workshop has occurred and code has been tested. Ben Laurie stated that there are 3 implementations close to being completed. Ed Lewis said he won't consider this issue closed until he sees it in working operation. Russ Mundy said he wants the working group to figure out a way we can move forward. Mark Andrews stated that there is a way to do this that will have zero impact on the namespace of the zone.

David Blacka has proposed a mechanism which will fix this problem almost everywhere. He and I will write it up.


#14 NSEC3 hash name and legitimate zone name collision is okay defect normal 11/13/05

The editor believes this is not an issue. Rob Austein said that he's 3/4 close to leaning towards Peter Koch's half-serious new label type proposal. He feels this is a much cleaner solution to all this collision stuff and has the added benefit that it can be defined as a binary-only label type which removes the sort order issue as well. Ben Laurie asked how this would interact with caches that don't grok the new label type. Rob replied that dnssec-bis doesn't work through dnssec-oblivious middle boxes, so this might just be a non-issue. Paul Vixie stated that the original idea behind the separate label type was to provide a way to store the various sets of metadata that aren't truly dns data and hence don't really belong in the actual database proper. This data we're talking about here is also not dns data and so a separate label type would go a long way to helping this. Ben asked if people were okay waiting until implementations were done before deciding on this.


#16 Document rationale and design choices defect normal 11/13/05

Explain, for example:

* why salt

* why iterations


#17 Make hash field 8 bits... defect normal 11/13/05

...so we can share the DS hash registry.

http://www.iana.org/assignments/ds-rr-types


#43 Upper limit for names is 254 not 255 defect normal 07/10/06

and the draft says 255.


#1 Mandate same parameters for all responses defect normal 10/28/05

'I think that the document should say "...all included NSEC3 rrsets MUST use the same set of parameters..." (or something like that). And possibly additionally "...if the response contains NSEC3 records that use different hash parameters, then treat as a validation failure..."' (David Blacka)


#3 Specify a base32 alphabet that preserves canonical ordering defect normal 10/31/05

#15 High iteration count could be used to DoS resolvers defect normal 11/13/05

Evil authoritative servers can select such a high number of iterations that resolvers are overwhelmed. The proposal is to allow resolvers to specify an upper limit for iterations that it will accept and if a response has a higher number the resolver will treat is as bogus. Olafur Gudmundsson asked why we can't get rid of iterations and just use the salt. Ben explained that the iterations are designed to increase the cost of a dictionary attack, while the salt is used to increase the cost of a pre-computed dictionary attack. Olafur rephrased his question to is the salt sufficient for the threats people are seeing? Ben feels this is no, as a single iteration is very easy to handle with a network probe. Olaf expressed a concern that leaving this up to resolvers will cause some resolvers to set a low number and some a high number causing a zone to appear secure or bogus to different resolvers. Ben answered that by picking a sufficiently high number this shouldn't be a problem. It should be a single number and not in the draft. Mike St.Johns said that if a number is going to be chosen, please put it in the draft and be nice to implementors and users, don't make it configurable, just set it across the board. Ben says if the working group feels strongly about this it will be done. Someone asked if a mechanism could be added such that parent zones can set limits for the iterations. The room response was highly negative.


nsec3-issues

Ticket Summary Milestone Type Severity Created
Description
#21 NSEC3 Issue 10: Potential DoS on Servers defect blocker 05/30/06
Issue:

Significantly more work is required for a name server to respond to
queries which require negative proofs using NSEC3 than is required for
a client to compose and send them.  For each such query, the name
server must repeat the hash function for the number of iterations
specified in the NSEC3 RRs.  Consequently, name servers with NSEC3
zones are susceptible to asymmetric DoS attacks.


Resolution:

None at present.

If name servers serving NSEC3 zones were to have suitable hardware
acceleration for SHA-1, it's possible that the rate of queries required
to degrade server function could be made to be higher than that
required to saturate the server's network connection(s).

Also, while not optimal, implementations could provide a reduced
quality of service for queries which require negative proofs, so that
resolution and validation of existing names will not be compromised.

#22 NSEC3 Issue 11: Queries for NSEC3 RRs defect blocker 05/30/06
Issue:

What should be contained in responses to queries where the QNAME is the
owner name of an existing NSEC3 RR and the QTYPE is NSEC3?


Discussion:

There are several possible responses:

1.  Return the actual NSEC3 RR with owner name

    - The response returns status RCODE = 0 and contains the NSEC3 RR
      with the owner name (and corresponding RRSIG RR if the bit is set
      in query).

2.  Return proof of nonexistence of owner name

    - The response returns status RCODE = 3 (NXDOMAIN) and contains the
      NSEC3 RRs required to prove nonexistence (and corresponding RRSIG
      RRs if DO bit is set in query).

3.  Return both the NSEC3 RR at with the owner name and proof of
    non-existence of the owner name.

    - The response returns status RCODE = 3 (NXDOMAIN) and contains both
      the NSEC3 RR with that owner name and the the NSEC3 RRs required
      to prove nonexistence (and corresponding RRSIG RRs if DO bit is
      set in query).

      It's possible for the NSEC3 RR for which the query was received
      to be also one of those required to prove non-existence.  In this
      case, duplicate NSEC3 RRs are eliminated.  Consequently as few as
      one and as many as four NSEC3 RRs may be returned.

Resolution:

We propose to use the third type of response, as it is the most
unambiguous.

#23 NSEC3 Issue 12: NSEC3 RR Owner Name Coincidence defect blocker 05/30/06
Issue:

It's possible for an NSEC3 RR and other RRs to have the same owner name
in an NSEC3 zone.  For example, a zone might contain the following RRs:

------------------------ Begin included text ------------------------
$ORIGIN example.com.

;; A RR for "die75kdbpq7tm7u8klq4kgoor752cqmd.example.com"

die75kdbpq7tm7u8klq4kgoor752cqmd        IN      A       10.10.10.10

        IN      RRSIG   A  5  3  86400  20060223000000 (
                        20060220000000 64106  example.com.
                        iNwnknCEiWpfrOOgZtgLSiaUs24J2f7pzwZomaLu6VbaX
                        QVUI2Z43S20OaQz7W/WfaNqn19u9mrA2aN2SUQhX4n6BE
                        NoGybS/IaEh6bw4JquOttK6KgAhVQoIh0uOCNgNrAUH5G
                        vTy8eH6g3fg8wYvxp6dGb+w6Bt5WGHQOYg9M= )

;; NSEC3 RR for A RR with original owner name "www.example.com"
;;       but same actual owner name as A RR above

        IN      NSEC3   (
                        0 1 200 0a0b0c0d h6eef7tgm0loe6m4nvf1plfinl8ip4gp
                        A NSEC3 RRSIG )

        IN      RRSIG   NSEC3  5  3  3600  20060223000000 (
                        20060220000000 64106  example.com.
                        JRFFPPc6Dr5BN31Bjhp6HIrmkJra5JJLpRRZ7b9bc77E+
                        gXYXqqhfB0Yv6nkN/M5qNAe01aMB//MKzzpkJdMW1mzpZ
                        VICFy5VHeYx9XZJSzLxfNVfS45otdivFJX2pQWXfgN2wF
                        y829jT4ZlaQXdzOmOtdXjDlUyJi9qu9OFbfA= )

;; NSEC3 RR for A RR with original owner name
;;       "die75kdbpq7tm7u8klq4kgoor752cqmd.example.com"

h6eef7tgm0loe6m4nvf1plfinl8ip4gp.example.com.   IN      NSEC3   (
                        0 1 200 0a0b0c0d vhhqc3cluh445sdpgrl8j8i0arntf49c
                        A NSEC3 RRSIG )

        IN      RRSIG   NSEC3  5  3  3600  20060223000000 (
                        20060220000000 64106  example.com.
                        wB2nYKNXgceFLh5LtbuJmCoLShUd3t10hUsQM8vU976HG
                        yOnaam0Z9Ki38MlFphhcfkDXmR8ChJNr1akXVJprdqmc5
                        oi6UBM2QWAysCZVSVXFlIsxW+Te4KdqJm5s6sbQZS4534
                        D+TFEeZP3M/IQemMMoeT4ZevRtdB7T3CQS64= )
------------------------- End included text -------------------------

This could occur under the following circumstances:

1.  An A RR with owner name `die75kdbpq7tm7u8klq4kgoor752cqmd.example.com'
    is present in the zone and then another owner name hashes to
    `die75kdbpq7tm7u8klq4kgoor752cqmd' during signing (_extremely_
    improbable).

2.  An owner name hashes to `die75kdbpq7tm7u8klq4kgoor752cqmd' and
    an A RR with owner name `die75kdbpq7tm7u8klq4kgoor752cqmd.example.com' is
    subsequently added to the zone, perhaps deliberately.


Discussion:

In either case, the coincidence is inconsequential, as the NSEC3 RR chain
is in effect orthogonal to the other RRs in the zone.  Specifically,
a query with QNAME = "die75kdbpq7tm7u8klq4kgoor752cqmd.example.com" and
QTYPE = TXT and with the DO bit set would cause the NSEC3 RR associated
with the hash of the owner name to be returned; the NSEC3 RR with the
actual owner name would be ignored.

The only case in which the coincidence would noticeable is for a query
with QNAME = "die75kdbpq7tm7u8klq4kgoor752cqmd.example.com" and
QTYPE = NSEC3, for which the reply would contain:

- the NSEC3 RR with the owner name of QNAME

- the NSEC3 RR with the _original_ owner name of QNAME

- the corresponding RRSIG RRs for that name (if the DO bit was set in
  the query)

In other words:

------------------------ Begin included text ------------------------
;; Header: QR AA DO RCODE=0
;;
;; Question
die75kdbpq7tm7u8klq4kgoor752cqmd.example.com. IN NSEC3

;; Answer
;; (empty)

;; Authority
die75kdbpq7tm7u8klq4kgoor752cqmd.example.com. 3600 IN NSEC3 (
                        0 1 200 0a0b0c0d h6eef7tgm0loe6m4nvf1plfinl8ip4gp
                        A NSEC3 RRSIG )
die75kdbpq7tm7u8klq4kgoor752cqmd.example.com. 3600 IN RRSIG NSEC3 (
                        5 3 3600 20060223000000 20060220000000
                        64106 example.com.
                        JRFFPPc6Dr5BN31Bjhp6HIrmkJra5JJLpRRZ7b9bc77E+
                        gXYXqqhfB0Yv6nkN/M5qNAe01aMB//MKzzpkJdMW1mzpZ
                        VICFy5VHeYx9XZJSzLxfNVfS45otdivFJX2pQWXfgN2wF
                        y829jT4ZlaQXdzOmOtdXjDlUyJi9qu9OFbfA= )
h6eef7tgm0loe6m4nvf1plfinl8ip4gp.example.com. 3600 IN NSEC3 (
                        0 1 200 0a0b0c0d vhhqc3cluh445sdpgrl8j8i0arntf49c
                        A NSEC3 RRSIG )
h6eef7tgm0loe6m4nvf1plfinl8ip4gp.example.com. 3600 IN RRSIG NSEC3 (
                        5 3 3600 20060223000000 20060220000000
                        64106 example.com.
                        wB2nYKNXgceFLh5LtbuJmCoLShUd3t10hUsQM8vU976HG
                        yOnaam0Z9Ki38MlFphhcfkDXmR8ChJNr1akXVJprdqmc5
                        oi6UBM2QWAysCZVSVXFlIsxW+Te4KdqJm5s6sbQZS4534
                        D+TFEeZP3M/IQemMMoeT4ZevRtdB7T3CQS64= )

;; Additional
;; (empty)
------------------------- End included text -------------------------

This artifact should have no effect as queries with QNAME = NSEC3
would never be used during validation.


Resolution:

No special procedures are needed for either preventing an NSEC3 RR and
other RRs from having the same owner name, nor is any special
processing required when they do.

#24 NSEC3 Issue 13: DDNS and Opt-In Determination defect blocker 05/30/06
Issue:

When a DDNS client sends an UPDATE transaction containing RRs for a new
unsigned delegation to be inserted into an NSEC3 zone, there is no
obvious way for the server to determine whether or not the new
delegation should be included in the NSEC3 chain.  This is because the
values of the Opt-In fields of NSEC3 RRs in the zone need not be
uniform.  In other words, it's permissible to include and exclude
unsigned delegations in the NSEC3 chain in any combination.


Discussion:


Possible approaches:

1.  No support for Opt-In in DDNS

    - All NSEC3 RRs produced as a result an UPDATE will
      default to Opt-In = 0

    - Cannot change value of NSEC RR.

2.  Use overloaded NSEC3 RR to signal Opt-In

    - New unsigned delegations will default to Opt-In = 0, i.e. they
      will be included in the NSEC3 chain.  An unsigned delegation may
      be removed from the NSEC3 chain by sending an UPDATE containing
      an NSEC3 RR with the /unhashed/ owner name of the delegation and
      the Opt-In flag set to 1.  If the NSEC3 RR is included in the
      same atomic update as the RRs of the new unsigned delegation,
      the new delegation will not be inserted into the NSEC3 chain in
      the first place.

    - This method is in effect an overloading of the NSEC3 RR.
      The owner name of the NSEC3 RR in the UPDATE is be the owner name of
      the delegation, not the hashed value.  Only the value of the Opt-In
      field is meaningful; the other data in the RDATA section is ignored.

    - UPDATEs containing NSEC3 RRs with the owner name of an unsigned
      delegation and Opt-In = 0 will cause the owner name to be inserted
      into the NSEC3 chain if it isn't already.

    - UPDATEs containing RRs for existing unsigned delegations but no
      NSEC3 RR will leave the current value of the Opt-In field of the
      relevant NSEC3 RR unchanged.

    - If an UPDATE contains an NSEC3 RR for a non-existent owner name, an
      owner name that is a signed delegation, or for any owner name for
      which RRs other than on RRs exist, the server will return an error.

    However:

    - Convoluted use of NSEC3 RR.

    - NSEC3 RR is larger than required, as only one bit of the
      16 octet RDATA section will be meaningful in a DDNS context.

    - Has unresolved corner cases, e.g. what if an UPDATE removes
      an unsigned delegation which is at the boundary of two
      spans, one with Opt-In = 0 and the other with Opt-In = 1?

3.  Introduce a new RRTYPE for used with DDNS updates

    - Similar to previous, but uses a new RRTYPE, e.g. `OPTOUT', rather
      than overloading the NSEC3 RR.

    - RR more compact as only one octet will be required for RDATA
      section.

    However:

    - requires use of a dedicated RRTYPE which would be meaningful only
      in the context of DDNS updates.

    - Has corner cases such as the one described in Approach 2.

4.  Inherited behaviour

    - If an update containing a new unsigned delegation falls in
      a span with Opt-In = 1, then it's not added to the NSEC3
      chain; if falls on one one which is Opt-In = 0, it is added.

    However:

    - Mismatch between granularity of control permitted by

    - Has corner cases such as the one described in Approach 2.

5.  Discourage or prohibit partial Opt-In zones.

    - Opt-In = 0 or Opt-In = 1 for all NSEC3 RRs in a chain.

    - Use cases unknown for partial Opt-In zones.

    However:

    - Adds unnecessary restrictions to the protocol.


Resolution:

None.  We are still investigating the problem space.

#25 NSEC3 Issue 14 - Presentation Format Mnemonics defect blocker 05/30/06
Issue:

The draft discusses a presentation format in which the algorithm
mnemonics are represented as alphanumeric labels; however there
is no registry for any such representation.  The mnemonics are
_implied_ by the IANA registry at:

    http://www.iana.org/assignments/ds-rr-types

Resolution:

None.  We will investigate the feasability of establishing an
IANA registry for presentation format mnemonics.

#26 NSEC3 Issue 14 - Presentation Format Mnemonics defect blocker 05/30/06
Issue:

The draft discusses a presentation format in which the algorithm
mnemonics are represented as alphanumeric labels; however there
is no registry for any such representation.  The mnemonics are
_implied_ by the IANA registry at:

    http://www.iana.org/assignments/ds-rr-types

Resolution:

None.  We will investigate the feasability of establishing an
IANA registry for presentation format mnemonics.

#27 NSEC3 Issue 15: Partially opt-out zones introduces unnecessary complexity. defect blocker 05/30/06
Issue:

A single zone may contain NSEC3 records with the optout bit set or clear. To cope with the granularity of a per-record signal of opt-out introduces additional complexity for signing and dynamically updating such a zone. The use case for this granularity is not clear.

Discussion:

To cope with partially opt-out zone, a signer needs to know if an unsigned delegation is supposed to be optout or not. When such a zone is dynamically updated, there needs to be a signal that informs the server that an added unsigned delegation is supposed to be optout or not.

If the granularity is per zone, a signer can be signalled by a single command-line option, or by some meta data. When such a zone is dynamically updated, the server can determine if the added unsigned delegation is supposed to be optout or not by looking at the nsec3 at the SOA.

Resolution:

We haven't found a practical case where partially optout zones are preferred over fully opt-out zones. We therefor propose to add text to the draft that discourages or prohibits partially opt-out zones. 

#42 NSEC3 Issue 22: Defining new hash algorithms defect blocker 07/10/06

Currently, the NSEC3 draft indicates that it uses the same IANA registry as DS for its hash algorithms. This leads to a number of potential concerns:

a) Operators might get the impression that if a new hash algorithm is added to the DS registry, then it is automatically defined for use in NSEC3. I'm not sure that this is correct.

b) The desirable criteria for a DS digest algorithm and an NSEC3 hash algorithm are not exactly the same. For instance, NSEC3 is less sensitive to the second pre-image resistance property of a hash. In fact, algorithms that would simply not be acceptable for DS may be totally fine for NSEC3 (e.g., MD5.)

c) There are things that must be defined about how a hash works with NSEC3 before it can be successfully used. For instance, if the hash length is longer that 63 characters in base 32, then the hash must be split across multiple labels. The consequences of this will no doubt require a significant amount of specification, possibly modifying the current NSEC3 specification.

Discussion:

1) The draft can establish a new IANA registry for NSEC3 hash algorithms, or

2) the draft can continue to use the DS registry. This will prevent people from defining new hash algorithms that are fine for use with NSEC3 but not acceptable for use with DS (point b, above).

Independent from this decision the draft could be modified to stress that hash algorithms MUST be specified before use.

My recommendation:

Both establish a new registry and require that new algorithms have a specification describing its use with NSEC3.


#44 NSEC3 Issue 22: Defining new hash algorithms. defect blocker 08/23/06

Currently, the NSEC3 draft indicates that it uses the same IANA registry as DS for its hash algorithms. This leads to a number of potential concerns:

a) Operators might get the impression that if a new hash algorithm is added to the DS registry, then it is automatically defined for use in NSEC3. I'm not sure that this is correct.

b) The desirable criteria for a DS digest algorithm and an NSEC3 hash algorithm are not exactly the same. For instance, NSEC3 is less sensitive to the second pre-image resistance property of a hash. In fact, algorithms that would simply not be acceptable for DS may be totally fine for NSEC3 (e.g., MD5.)

c) There are things that must be defined about how a hash works with NSEC3 before it can be successfully used. For instance, if the hash length is longer that 63 characters in base 32, then the hash must be split across multiple labels. The consequences of this will no doubt require a significant amount of specification, possibly modifying the current NSEC3 specification.


#45 NSEC3 Issue 23: dealing with unknown hashes defect blocker 08/24/06

If a validator ignores an NSEC3 resource record because it contains an unknown hash algorithm and subsequently treat a dnssec/nsec3 response as 'unsigned', the validator must check that the NSEC3 record came from the proper zone.

This check needs to be done to avoid a replay of some arbitrary NSEC3 with an unknown hash algorithm, that happens to be signed with a key that the validator trusts. A successful replay can lead to a downgrade attack.

The ownername of the NSEC3 record contains the hash value, prepended to the zone name. Since we want the NSEC3 record to be future proof, we have to allow digests to be longer than the maximum label size, and so, a future hash algorithm might have a digest that is presented over multiple labels.

We can therefor not safely assume that the first label contains the hash value, and the rest of the name is the zone name.

So, we need to find a way to discover the zone that the NSEC3 is from.

We have several approaches for this, described here in no particular order:

1) it is possible to calculate the number of labels that contains the hash from the hash length field. The hash length field contains the length of the hash of the Next Hashed Owner Name field. This length is in octets. The following formula determines the amount of labels used for the hash, and indicates that the rest of the labels contain the zone.

Let L be the value of the hash length field

Then labelcount = 1+((L*8)/315)

This approach assumes that all hash outputs for this single (unknown) algorithm have the same length, since the hash length field applies to the Next Hashed Ownername, not to the Owner Name of the NSEC3 record. Hence, an Identity Hash function, a function with variable length output, can not be easily defined this way.

2) it is possible to use the Signer's Name field of the RRSIG record that accompanies this NSEC3 record. The drawback is that the validator, while checking the applicability of the NSEC3 record, must have knowledge of the RRSIG at that stage. Note that the validator _has_ to check the validity of the signature anyway if it decides to treat a response as insecure due to an unknown hash algorithm.

3) Add a 'Zone labels field' to the rdata field that indicates of how many labels the zone consists of, and hence, use that as a mask for the ownername of the NSEC3 record to determine the zone name. The drawback here is that the NSEC3 rdata is changed Yet Again.

4) drop the 'unknown hash' methodology alltogether. This means that if an unknown hash is encountered, it is discarded. When the validator tries to validate the response, it ignores unknown hash NSEC3's and will treat the response as bogus. The drawback is that it will be hard to introduce new hash algorithms, unknown to a deployed base. The penalty is that zones using this new hash algorithm will be treated as bogus, thus unresolveable, for the deployed base.

5) truncate all hash outputs over 315 bits to 315 bits so it will always fit in a single label. The drawback here is that the 2nd-preimage resistance of a hash function is then restricted to 2315,and thus less futureproof.

Note, the number 315 is the amount of significant bits of a base32 decoded maximum length label (5 * 63)


#46 NSEC3 Issue 24: Significance of Algorithm Numbers defect blocker 09/19/06

Issue:

The precise meaning of algorithm numbers needs to be determined.

Discussion:

(tbd)


#48 NSEC3 Issue 25: NSEC3 and DNAME at a zone apex defect blocker 09/20/06

The NSEC3 owner names would be below the DNAME, which is illegal. The draft needs to clarify and allow this exception to that rule.


#49 NSEC3 Issue 26: Checking for CNAME in NODATA proof defect blocker 09/20/06

When validating a NODATA proof, in addition to checking that the qtype doesn't exist, one must also check that a CNAME doesn't exist with the exception of a yet-to-be-determined list of types that can co-exist with CNAME.


#50 NSEC3 Issue 27: Create flag octet, reduce iterations field to two octets defect blocker 09/20/06

To create additional flags for future expansion, we take the first octet of iterations and designate it as a flags octet. One bit is opt out (0x01, the same presentation format) and the rest are reserved. The iterations field is reduced to two octets.

Dave will write up the proposal and send to namedroppers.


#19 NSEC3 Issue 8: NSEC3 Signaling Mechanism defect critical 05/30/06
Issue:

Should a name server for a DNSSEC zone that uses NSEC3 RRs only somehow
signal this to NSEC3-unaware DNSSEC applications?

Example: if an NSEC3-unaware validating resolver queries for a
non-existent RRset in an NSEC3 zone, the response will contain one or
more NSEC3 RRs in place of the expected NSEC RR(s).  In RFC 4035,
omission of NSEC RRs in a No Data/Name Error response is a protocol
violation [Section 3.1.3]; consequently, the resolver will mark it
bogus.


Discussion:

Several approaches have been considered for handling this:

1.  Use a full type code rollover (a.k.a. `DNSSECter')

    - Fully independent DNSSEC scheme (third one, if RFC 2535 is
      considered).

    - Four new RRs:

        DNSKEY -> DNSKEY2
        RRSIG  -> RRSIG2
        NSEC   -> NSEC3
        DS     -> DS2

    - All RR formats identical except for NSEC vs NSEC3

    - NSEC3-unaware validators see only DNSSECbis RRs.  In NSEC3 zones
      only new RRs are used.  Either or both validation schemes may be
      used independently without reference to one another.

    However:

    - A validating resolver must have special (non-RFC 4033-35) rules
      for recognising and processing DS2 RRs in DNSSECbis zones, e.g.
      when a DNSSECter-only zone has a DNSSSECbis-only parent.
      Otherwise the DS2 RR will not be identified as part of any
      validation chain.  So while a type-code rollover may at first
      glance appear to be an elegant solution, it only works if one or
      another set of type codes is used exclusively throughout the
      entire validation chain.

2.  Use a partial type code rollover

    - Two new RRs:

        NSEC   -> NSEC3
        DS     -> DS2

    - DS2 same as D2 but with a different Type Code.

    - Presence of DS2 RR in parent will be "uninteresting" to
      validating resolver, so child will be regarded insecure rather
      than bogus.

    However:

    - This has the same problem as approach #1 above: a validating
      resolver would have to have special rules to handle DS2 RRs in a
      DNSSECbis zone.

    - If the KSK of the NSEC3 is a trust anchor, care must be taken not
      to use it in the `trusted-keys' store of a non-NSEC3-aware
      validating resolver.

3.  Use a new DS message digest number

    - Use the DS message digest field for signaling both:

        a. that NSEC3 is in use in the child zone, and

        b. which hash algorithm is in use by the NSEC3 RRs in the
           child zone.

     - Proposed in this post to namedroppers:

    http://ops.ietf.org/lists/namedroppers/namedroppers.2005/msg01087.html

    However:

    - Only works if all subsequent children are NSEC3.  If the chain of
      trust is NSEC -> NSEC3 -> NSEC then the NSEC descendant will
      appear bogus.

4.  Use an unknown algorithm identifier

    - Described in draft-ietf-dnsext-dnssec-experiments-01.txt

    - Use algorithm identifiers in RRSIG and DS RRs that would not be
      recognised by NSEC3-unaware validating resolver, so that
      No Data/Name Error responses would appear insecure rather than
      bogus.

    However:

    - Would require the use of multiple algorithm identifiers for the
      same algorithm, at least until NSEC3 was folded into a revised
      version of DNSSECbis.  This would mean SHA-1 (and probably
      SHA-256) would have two identifiers each.  This is mitigated by
      the fact that:

      -  the algorithm identifier is an 8-bit number out of which
         only 10 assignments have been made:

             http://www.iana.org/assignments/dns-sec-alg-numbers

      -  The rate of new assignments is expected to be low.


5.  Do nothing

    No Data/Name Error responses for queries that have NSEC3 somewhere in
    the validation chain will be marked bogus.

    - If DNSSEC deployment is sufficiently minimal before NSEC3 (or
      other NSEC++) is available, this may have a negligible impact.

    However:

    - DNS operators considering the deployment of DNSSEC might choose
      to wait until NSEC3 is available, or, conversely,

    - DNSSEC deployment might become sufficiently advanced that
      operators will be unwilling to deploy NSEC3.


Proposed Resolution:

Approach #4 appears to be the most promising.  Thorough testing will be
required to determine whether any non-obvious issues exist, though it's
been shown to work in previous testing.

#20 NSEC3 Issue 9: Potential DoS on Resolvers defect major 05/30/06
Issue:

A potential DoS condition exists in which the operator of a malicious
server could select an impractically high number of iterations for the
NSEC3 RRs in an signed zone.  The NSEC3 RDATA format permits values as
high as 2 ^ 23, or 8,388,608 (N.B. this is a change in -04; in -03 it
was 2 ^ 24).  Consequently, when a resolver receives multiple queries
for names (existent or non-existent) in this zone, the resolver must
perform the same number of hash iterations for each query.  This could
result in a significant denial-of-service on the resolver.


Discussion:

One solution would be to permit resolvers to set an upper limit for the
number of iterations that would be permitted in an NSEC3 RR, and to
treat NSEC3 RRs with values exceeding this as insecure or bogus.  This
could be accomplished at the implementation level alone, or it could be
governed by a recommendation or standard.

One subsidiary issue is that any limit may have to change over time in
response to increases in computational speed: a limit which may
initially reflect an unjustifiably high number of iterations may later
be considered cryptographically weak.


Proposed Resolution:

We agree that it is desirable for resolvers to set an upper limit.

We propose to submit the following two questions for consideration by
the IETF Security Area Directorate:

1.  Should an upper limit be specified in the standard?

2.  If so, should the upper limit be specified in a separate document
    so that the it may be updated without having to re-publish the
    entire standard.

#28 NSEC3 Issue 1: Use of Hashes Creates New Owner Names defect normal 06/22/06

A signed zone which uses NSEC3 introduces new owner names which are Base32-encoded hashes of existing owner names in the zone.


#29 NSEC3 Issue 2: RFC 3548 Base32 Sort Order defect normal 06/22/06

RFC 3548 describes a Base32 encoding that is unsuitable for NSEC3 hashes, as the sort order of the encodings differ from binary sort order. This issue was raised in this post to namedroppers:

http://ops.ietf.org/lists/namedroppers/namedroppers.2005/msg01423.html

Subsequent to this post, the author of RFC 3548 submitted a new draft:

http://www.ietf.org/internet-drafts/draft-josefsson-rfc3548bis-00.txt

This draft adds a new encoding called "base 32 extended hex alphabet" which preserves the sort order of encoded data, and describes the encoding used in -nsec-03. This is the same encoding used in Section 3.1 of RFC 2938.


#30 NSEC3 Issue 3: Determination of Correct Zone Parameters defect normal 06/22/06

A name server has to be able to look up the NSEC3 RR associated with an owner name. To do this, it must have the correct values for the salt and number of iterations required to produce the hash value which is the owner name of the NSEC3 RR. However, an NSEC3 zone may contain any number of incomplete chains of NSEC3 RRs provided that at least one is complete. Consequently it cannot use the values contained in any arbitrary NSEC3 RR in the zone. So how does a name server determine the correct values for the zone?


#31 NSEC3 Issue 4: Design Rationale defect normal 06/22/06

The draft needs to include more information about rationale underlying various design decisions, for example:

- Why use a salt?

- Why use iterations?


#32 NSEC3 Issue 5: Hash Function RDATA Too Short defect normal 06/22/06

The hash function field of the RDATA section of the NSEC3 RR is seven bits long; however RFC 4034 specifies that DNSSEC security algorithms are identified by 8-bit numbers (Appendix A, Section 1).


#33 NSEC3 Issue 6: Owner names of hashes are limited to case-folded names defect normal 06/22/06

The owner names of NSEC3 RRs are currently restricted to case-folded names as non-case folded names will not be ordered properly in a zone. Base32 has been selected for this encoding. As a consequence, NSEC3 RRs require a 32 octet owner name to represent each hash, 12 more than the binary representation of the hash. If NSEC3 were to be subsequently modified to use SHA-256, then each owner name would require 20 more octets than the binary representation.

Some have suggested that NSEC3 could use a new binary label type for owner names rather than Base32-encoded labels; this would marginally reduce the size of DNSSEC responses for zones using NSEC3. It would also marginally increase the total length domain names which could be permitted in an NSEC3 zone.


#34 NSEC3 Issue 7: Maximum Domain Name Length defect normal 06/22/06

The owner name of the apex of an NSEC3 zone is limited to 222 octets, as the NSEC3 hash for the apex (and any other owner names in the zone) is constrained to 255 octets. In practise vanishingly few domain names approach this length. Zones that require such long names will be constrained to using NSEC RRs.


#35 NSEC3 Issue 15: recommend against the use of partially opt-out zones. defect normal 06/22/06

A single zone may contain NSEC3 records with the optout bit set or clear. To cope with the granularity of a per-record signal of opt-out introduces additional complexity for signing and dynamically updating such a zone while the use case for this granularity is not clear.


#36 NSEC3 Issue 16: The need for a Hash Length Field. defect normal 06/22/06

The length of a hash is dependend on the hash function used. SHA1 produces 160 bit values, while SHA256 produces 256 bit values. Currently, the NSEC3 rdata lacks a hash length field, which makes the length of the Next Hashed Ownername field dependend on the hash algorithm listed in the Hash Algorithm field. However, when the hash algorithm is unknown, the length of the Next Hashed Ownername field is unknown. It is then impossible to express the NSEC3 record in proper presentation format.


#37 NSEC3 Issue 17: opt-out for delegation only is not enforcable. defect normal 06/22/06

The use of Optout is restricted to unsigned delegations. This restriction is inherited from the experimental Opt-In draft. Even-though the restriction is in place, it can't be enforced on the server side, i.e. there is a way to allow unsigned records other than delegations to exist in an optout span, without it ever to appear as such on the wire, by means of delegating them to unsigned subzones with the same name.


#38 NSEC3 Issue 18: signalling complete NSEC3 chains defect normal 06/22/06

A server must use NSEC3 records from a complete chain. How does it know what parameters (salt, iterations, algorithm) to use that belong to a complete chain.

NOTE: this is a duplicate of NSEC3 Issue 3.

More specifically, how do implementations *efficiently* learn the parameters for a zone?


#39 NSEC3 Issue 19: NSEC3 processing order defect normal 06/22/06

Should the document specify a recommendation about if a validating resolver should process first the range of NSEC3 names covers query name or the signature on the NSEC3 records is valid.

RFC4035 specifies/recommends that validating resolver first check that the name range applies before validating the signature, as that is the less expensive operation. For a NSEC3 with high iteration count it is possible that validating the signature is less expensive than checking the name range.


#40 NSEC3 Issue 20: Server behavior wrt unknown hash algorithms defect normal 06/22/06

n NSEC3 capable server might, on load or during a zone transfer, encounter an NSEC3 with an unknown hash algorithm. As it is unable to determine which NSEC3 to send back in a response, the server can't fully provide the service intended.

Approach 1) Refuse to load/accept the zone. Return rcode 2 on requests related to this zone.

Approach 2) load/accept the zone with a warning. Return rcode 2 where the responses normally would contain NSEC3 records. This allows the server to provide service for DO=0 requests, and for DO=1 where the responses do not contain NSEC3's

Approach 3) Load/accept the zone with a warning. Return rcode 2 except for qtype=axfr/ixfr. This allows the server to provide service for secondaries.

This is not an exhaustive list.


#41 NSEC3 Issue 21: Signer behavior in case of hash collision. defect normal 06/22/06

If there exists a name and a wildcard record where the corresponding hash values collide, an attacker can replace a positive answer with a wildcard and vice versa. Though hash functions are designed to be collision resistant, the question has been raised if signers are allowed to, or should check.


Note: See TracReports for help on using and creating reports.