Re: [dane] Behavior in the face of no answer?

Paul Wouters <paul@cypherpunks.ca> Tue, 15 May 2012 04:23 UTC

Return-Path: <paul@cypherpunks.ca>
X-Original-To: dane@ietfa.amsl.com
Delivered-To: dane@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 238FA21F850C for <dane@ietfa.amsl.com>; Mon, 14 May 2012 21:23:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.58
X-Spam-Level:
X-Spam-Status: No, score=-2.58 tagged_above=-999 required=5 tests=[AWL=0.019, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7PoBxc726Hkz for <dane@ietfa.amsl.com>; Mon, 14 May 2012 21:23:14 -0700 (PDT)
Received: from letoams.cypherpunks.ca (bofh.nohats.ca [76.10.157.69]) by ietfa.amsl.com (Postfix) with ESMTP id 6BEFB21F84FF for <dane@ietf.org>; Mon, 14 May 2012 21:23:14 -0700 (PDT)
Received: by letoams.cypherpunks.ca (Postfix, from userid 500) id 820AB853FE; Tue, 15 May 2012 00:23:13 -0400 (EDT)
Received: from localhost (localhost [127.0.0.1]) by letoams.cypherpunks.ca (Postfix) with ESMTP id 7979D803A3; Tue, 15 May 2012 00:23:13 -0400 (EDT)
Date: Tue, 15 May 2012 00:23:13 -0400 (EDT)
From: Paul Wouters <paul@cypherpunks.ca>
X-X-Sender: paul@bofh.nohats.ca
To: Eric Rescorla <ekr@rtfm.com>
In-Reply-To: <CABcZeBMS9cJ3m6JwJED7XAqdsF=zbTUUU_o3-opiZvqMyr7mdw@mail.gmail.com>
Message-ID: <alpine.LFD.2.02.1205142352010.10990@bofh.nohats.ca>
References: <CABcZeBMY26xrfvAx=UsYN2XnuONZ2vPy9tNwHQALudd=yQDvgA@mail.gmail.com> <643D87CD-D01E-47B8-82E5-D3F57D50C80B@vpnc.org> <alpine.LFD.2.02.1205142229552.10990@bofh.nohats.ca> <CABcZeBMS9cJ3m6JwJED7XAqdsF=zbTUUU_o3-opiZvqMyr7mdw@mail.gmail.com>
User-Agent: Alpine 2.02 (LFD 1266 2009-07-14)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: Paul Hoffman <paul.hoffman@vpnc.org>, dane@ietf.org
Subject: Re: [dane] Behavior in the face of no answer?
X-BeenThere: dane@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: DNS-based Authentication of Named Entities <dane.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dane>, <mailto:dane-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dane>
List-Post: <mailto:dane@ietf.org>
List-Help: <mailto:dane-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dane>, <mailto:dane-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 May 2012 04:23:15 -0000

On Mon, 14 May 2012, Eric Rescorla wrote:

> I don't think this is what we want.. There appear to be five relevant
> states:
>
> * secure, bogus, indeterminate, or insecure [specified in section 4.1]
> * no response, DNS error, etc. [the state in question here]

We had these discussions before, where there is a disagreement about
some cases where you are not getting some responses and what state it
is supposed to be. I'm not sure we all agreed in the end - I thought
some people argued that "indeterminate" does not really exist.

> The relevant point here is that in the case where you were expecting
> DNSSEC but you get some error in the last category

if you expect a dnssec signed answer (eg because you have a validated
parental DS) but you did not, the reseult is what? bogus? But if there
might be a zone cut in between the parental DS you have (eg the root)
and the zone, it is indeterminate? I think for TLSA, these should both
be treated the same, as bogus.

> to get security benefit from restrictive modes, you must treat that as
> if it were bogus. That's different from cases where you weren't
> expecting DNSSEC (insecure, indeterminate), and therefore you
> should just be ignoring the TLSA records.

You cannot know when you were NOT expecting DNSSEC unless you do DNSSEC
and you a get a validated anwser that leads to an end of the trust chain
before it reaches the domain you were interested in. So an attacker
would also prevent you from knowing that. And if you know a domain is
insecure, you don't even need to query for TLSA records, unless your
model assumes a full validator logic built into the browser, as opposed
to using a trusted validator on localhost.

Are we expecting browsers to just query for TLSA records and ignore
those received without AD bit? Or are we expecting them to implement
full resolver logic?

Right now, a browser can just query for TLSA records to its local
resolver, and make a decision based on the AD bit. If any filtering
of DNSSEC is taking place, the local resolver should be returning
SERVFAIL. Do we want the browser to extract more details with CD? Or
should they just hard/soft fail based on their local settings? Should
they find out if this would be "bogus" or "indeterminate", or is there
no point?

>> I'm also not sure why the statement is limited to certficate usage 0 and
>> 1. Is that because you assume no PKIX alternatives are available and
>> thus it always has to abort for insecure/indeterminate?
>
> The security logic is different for restrictive records and additive records.
> Say that you're not willing to hard fail on TLSA failures but you're willing
> to suppress error warnings if you get resolvable records of type 2 and 3.
> Then you are getting security benefit for those records, but you're not
> getting any security benefit if type 0 or 1 records exist.

Now I'm completely lost. Usage 0 and 1 is for pinning PKIX, so if you
want to use TLSA to avoid rogue CA's, you can't suppress those error
warnings. It's really the same as disabling TLSA. Or else we're going to
have to teach browsers to remember previous TLSA state and only warn
when we knew the site used to publish TLSA, but now we are
indeterminate.

> Arguably, it would be best to serve two different classes of records to
> make this clearer.

I'm not sure that matters, because if you cannot get those records, eg
an indeterminate answer, you cannot make a decision based on a supposed
different class of record you can't receive.

The only way out to signal something about hard/soft fail for TLSA
outside the DNS would be to put a market in the certificate. But then
we're back to square one with rogue CAs.

Paul