Subject: Re: Gen-ART review of draft-ietf-dnsext-dnssec-bis-updates-18

From: "Richard L. Barnes" <[email-masked]>
Date: Mon, 30 Jul 2012 10:18:19 -0700

Hey Andrew,

Thanks for following up, and sorry for the lag.  Thank goodness for IETF meetings giving us time to process email :)

Couple of responses inline.

>> MAJOR:
>> 
>> 4.1.  
>> It's not clear what the threat model is that this section is
>> designed to address.  If the zone operator is malicious, then it can
>> simulate the necessary zone cut and still prove the non-existence of
>> records in the child zone.
> 
> The problem here is not a malicious parent operator, but "an NSEC or
> NSEC3 RR from an ancestor zone".  In the original specification, an
> attacker could use such an RR to prove the non-existence of some name
> in a subordinate zone.  That was the problem.  (Remember, in DNS there
> is a good chance that you are not talking to an authoritative server.)
> If you have suggestions on ways to make that clearer, it'd be welcome.
> The editors tried to come up with compact examples that would be
> anything other than mystifying, and were unsuccessful.  

I guess I still don't understand this.  Aren't ancestors the only people that can generate a valid, signed NSEC or NSEC3 RR?  So if there were a bad NSEC[3], wouldn't it be the ancestor's fault?

If the provisioning is *intentional*, then as I noted before, then there's not really anything to be done, since the ancestor can provide whatever information he wants for the child zones (as above).  So are you worried about *inadvertent* provisioning of these bad records?  

>> 5.10.  
>> I find the recommendation of the "Accept Any Success" policy
>> troubling.  It deals very poorly with compromise (and other
>> roll-over scenarios): Suppose there are two trust anchors, one for
>> example.com and one for child.example.com.  If the private key
>> corresponding to the TA for child.example.com is compromised, but
>> the validator continues to trust it, this negates the benefit
>> provided by the parent (example.com) facilitating a rollover.
>> Suggest an alternative policy, "Highest Signer": Out of the set of
>> keys configured as TAs, the validator only uses a key as a TA (for
>> purposes of validation) if there does not exist a DNSSEC path from
>> it to any other TA.  This policy seems like more work to enforce
>> (because you have to do more backward chaining), but ISTM that the
>> validator should have the necessary DNSSEC records anyway, so it's
>> just a matter a couple of quick checks.
> 
> First, the Working Group debated this matter at considerable length,
> several times.  The Accept Any Success policy provides greater
> robustness in the face of configuration errors, and is more likely to
> lead to continued resolution.  We believe, based on experience so far,
> that such configuration errors are vastly more likely than key
> compromise.  If we are to reopen this, we will need to go back to the
> WG again.  
> 
> Note that Appendix C does discuss other options and 5.10 explicitly
> suggests that this be configurable; but, because the biggest problem
> we have is resolution failure in the face of mucked up configurations,
> the consensus was that Accept Any Success was the best default.  That
> could, of course, change in future, at which time an update to the
> document would be advisable.
> 
> The suggestion for "Highest Signer" is interesting but has never to my
> knowledge been previously mooted in relation to this draft.  I
> therefore think that including it in particular would require some
> review.  I don't know of any implementation that currently uses that
> approach, either (but since there are vast gaps in my knowledge even
> of what's on my desk, it wouldn't surprise me to learn that there were
> some).  Do you know of any?  If not, it seems to me that it would be a
> good idea to have some fielded experience with the approach before
> recommending it as default.  It's an intriguing idea, however, and
> seems to me to be worth pursuing.  I'm just not sure it should be in
> this draft.  I personally think it would be premature to recommend it
> as default, but if you take your position very firmly I am prepared to
> take the question up with the Working Group.

Ok, I can understand these considerations.  Typical usability/security trade-off.

As per the normal security MO, if you're going to recommend an approach with known security weaknesses, then you need to document them.  I think it would be helpful to note how this approach can lead to problems, e.g., by causing you to miss a roll-over of a compromised key.  The current text seems insufficient, especially because it's relegated to an appendix. Suggested text at the end of Section 5.10:
NEW:
"
This policy minimizes the likelihood that configuration errors in servers or resolvers will result in validation failures.  However, by the same token, a resolver following this policy is vulnerable to a broader set of attacks than one following a more restrictive policy.  For example, if the resolver has TAs for a parent domain and a child of that parent, and the child's key is compromised, then the resolver will continue to validate responses signed under the compromised key even if a new key for the child is published in a DS record signed by the parent.  
"

May also be helpful to say something like "as we get more experience with validation, we may find that it's OK to be more restrictive".

If you're willing to, it might be helpful to document the "Highest signer" approach.  If so, let me know and I can provide text.

Thanks,
--Richard

---

From: "Blacka, David" <[email-masked]>
Date: Mon, 30 Jul 2012 20:30:49 +0000

> I guess I still don't understand this.  Aren't ancestors the only people that can generate a valid, signed NSEC or NSEC3 RR?  So if there were a bad NSEC[3], wouldn't it be the ancestor's fault?

This isn't about "bad NSEC[3]" RRs.  It is about an attacker (think "man-in-the-middle") using the valid, completely correct NSEC[3] RR from the parent zone in an inappropriate context.

> If the provisioning is *intentional*, then as I noted before, then there's not really anything to be done, since the ancestor can provide whatever information he wants for the child zones (as above…

Again, the record isn't "bad", but being used in the wrong context (either via a software bug or on purpose as an attack).  This section isn't about malicious zone operators at all.

I still don't have any great ideas for how to change the text to make this more clear, however.

--
David Blacka                          <[email-masked]> 
Principal               Verisign Infrastructure Engineering