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

John Gilmore <gnu@toad.com> Wed, 16 May 2012 01:16 UTC

Return-Path: <gnu@toad.com>
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 876C521F8757 for <dane@ietfa.amsl.com>; Tue, 15 May 2012 18:16:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.363
X-Spam-Level:
X-Spam-Status: No, score=0.363 tagged_above=-999 required=5 tests=[AWL=0.266, BAYES_00=-2.599, RCVD_IN_NJABL_RELAY=2.696]
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 G3M493NgBo65 for <dane@ietfa.amsl.com>; Tue, 15 May 2012 18:16:30 -0700 (PDT)
Received: from new.toad.com (new.toad.com [209.237.225.253]) by ietfa.amsl.com (Postfix) with ESMTP id C545921F86E8 for <dane@ietf.org>; Tue, 15 May 2012 18:16:30 -0700 (PDT)
Received: from new.toad.com (localhost.localdomain [127.0.0.1]) by new.toad.com (8.12.9/8.12.9) with ESMTP id q4G1GTcF015332; Tue, 15 May 2012 18:16:29 -0700
Message-Id: <201205160116.q4G1GTcF015332@new.toad.com>
To: Paul Hoffman <paul.hoffman@vpnc.org>
In-reply-to: <643D87CD-D01E-47B8-82E5-D3F57D50C80B@vpnc.org>
References: <CABcZeBMY26xrfvAx=UsYN2XnuONZ2vPy9tNwHQALudd=yQDvgA@mail.gmail.com> <643D87CD-D01E-47B8-82E5-D3F57D50C80B@vpnc.org>
Comments: In-reply-to Paul Hoffman <paul.hoffman@vpnc.org> message dated "Mon, 14 May 2012 19:12:23 -0700."
Date: Tue, 15 May 2012 18:16:29 -0700
From: John Gilmore <gnu@toad.com>
Cc: 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: Wed, 16 May 2012 01:16:31 -0000

Here's my review of the text Paul Hoffman posted Monday 14 May 19:12:23:

> An attacker who is able to divert a user to a server under his control is also
> likely to be able to block DNS requests from the user or DNS responses being
> sent to the user. Thus, in order to achieve any security benefit from
> certificate usage 0 or 1, an application that sends a request for TLSA records
> needs to get either a valid signed response containing TLSA records or
> verification that the domain is insecure or indeterminate. If a request for a
> TLSA record does not meet one of those two criteria but the application
> continues with the TLS handshake anyway, the application has gotten no benefit
> from TLSA and should not make any internal or external indication that TLSA
> was applied. If an application has any indication that TLSA is in use (such as
> through a configuration setting), that application MUST not start a TLS
> connection or abort a TLS handshake if either of the two criteria above are
> not met.

An attacker who is able to divert a user to a server under his control
is also likely to be able to block DNS requests from the user or DNS
responses being sent to the user.  Thus, in order to achieve any
security benefit from certificate usage 0 or 1, the protocol requires
that when DNS responses have not arrived or are not valid, the TLS
connection must not succeed.

To proceed with a DANE TLSA transaction, an application MUST get
either a Secure response containing TLSA records for the relevant
domain name, a Secure response proving that there are no TLSA records
for the relevant domain name, or verification that the domain name is
Insecure.  (Secure and Insecure are defined in section 4.3 of RFC
4035.)

If the response(s) from a TLSA record query do not meet any of the
above criteria, but the application continues with the TLS handshake
anyway, the application is in violation of this protocol
specification.  It MUST NOT make any internal or external indication
that the DANE TLSA protocol is in effect.  If an application has any
indication that the DANE TLSA protocol is in use (such as through a
configuration setting), that application MUST NOT start a TLS
connection, and MUST abort any pending TLS handshake, if none of the
criteria in the previous paragraph are not met.

(End of text for somewhere in RFC.)

It isn't clear where in the RFC this text would go.  Some of it
seems to be explanatory and other parts seem to be normative.

My comments are that this text is not usable, even after my
modifications.  It chats about motivations.  It tries to define a
protocol specification, saying what the application should do to
follow that spec.  It then says "if you violate this spec in this
particular way, don't call it DANE TLSA".  Then it says that twice, or
three times.  I don't see the point of that.  If they violate the spec
in any other way, they shouldn't call it DANE TLSA either.

I would remove the last paragraph entirely.  I would move the first
paragraph off into a security-related section.  I'd keep the short
paragraph beginning "To proceed with a DANE TLSA transaction,".

I think it's progress to have text that defines the VALID ways to
proceed with the protocol, rather than getting lost in the weeds of
all the possible INVALID ways to fail.

	John