Re: [dane] I-D Action: draft-ietf-dane-srv-04.txt (Martin Rex) Sat, 15 February 2014 06:53 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id F3F341A0079 for <>; Fri, 14 Feb 2014 22:53:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.552
X-Spam-Status: No, score=-6.552 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YqP6fBguLhK8 for <>; Fri, 14 Feb 2014 22:53:50 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 47E031A0069 for <>; Fri, 14 Feb 2014 22:53:49 -0800 (PST)
Received: from by (26) with ESMTP id s1F6rkvo027977 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <>; Sat, 15 Feb 2014 07:53:46 +0100 (MET)
In-Reply-To: <>
Date: Sat, 15 Feb 2014 07:53:46 +0100 (CET)
X-Mailer: ELM [version 2.4ME+ PL125 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="US-ASCII"
Message-Id: <>
From: (Martin Rex)
X-SAP: out
Subject: Re: [dane] I-D Action: draft-ietf-dane-srv-04.txt
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DNS-based Authentication of Named Entities <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 15 Feb 2014 06:53:54 -0000

Viktor Dukhovni wrote:
> Martin Rex wrote:
>> Viktor Dukhovni wrote:
>>> You could mention that both name checks and key usage are
>>> effectively handled by the TLSA record for DANE-EE(3).
>> I'm sorry, but this simply isn't true today, I do not believe that
>> this is (nor should be) the intention of DANE, and I'm strongly
>> opposed to changing that part of the implementations.
> No name checks for CU-3 IIRC was discussed and agreed many months ago.

I'm sorry for having been so unclear.  I wasn't objecting to
the "name checks" part here, only to the "both ... and key usage".

> There is no "true today" for DANE, as there are in effect no "real"
> DANE implementations aside from the one in Postfix (I've looked at
> some experimental implementations, but they are all incomplete and
> often insecure).

This is about TLS implementations.  Keep in mind that the server does
not even need to know about DANE at all -- anyhow the server WILL
be acting on the KeyUsage in his very own certificate and drive
the choice of cipher suites based on the KeyUsage requirements
from the quoted part of the TLS spec:

>> DANE does NOT invalidate the key Usage checks and requirements that are
>> normally part of TLS itself and described here:
> Those other documents assume that the content of the certificate
> is from a trusted authority.  This is true for CU in {0, 1, 2},
> but false for CU=3.


Defective implementations excepted, the TLS protocol engine will
look at the KeyUsage attribute of the Server certificate and check
the cipher suite selection for compatibility -- and the application
call will NOT have a say in this.

> The requirement to not do name checks, EKU checks, date checks for
> DANE is satisfied by the Postfix DANE implementation, and will be
> satisfied by the OpenSSL implementation on which I'm collaborating
> with one of the OpenSSL developers.

You should not confuse EKU checks on the leaf certificate with
KeyUsage checks on the leaf certificate.  EKU checks on the leaf
certificate are extremely application specific, and simply undefined
for the majority of application protocols.
TLS itself (rfc2246,rfc4346,rfc5246) is entirely ignorant of EKU,
and so is HTTP-over-TLS (rfc2818).

Browser vendors together with CAs have defined semantics for EKUs
that browsers (but not necessarily generic TLS libs and programmatic
HTTP clients) will typically check, such as the two
id-kp-serverAuth and id-kp-clientAuth from PKIX(rfc5280)

Curiously, these EKUs are primarily a PKIX obsession, TLS just doesn't care.
And PKIX has defined these two serverAuth and clientAuth purposes with
an extremely narrow semantics:  "TLS WWW server authentication"
and "TLS WWW client authentication", which means that these would
explicitly *NOT* apply to something like "TLS SMTP authentication"
or "TLS SIP authentication", "TLS POP/IMAP authentication",
"TLS XMPP authentication", etc.

Whether a TLS server or TLS client will act on the expiration of an
X.509 server certificate is also implementation dependent, and similarly,
the application caller (that is using DANE for establishing trust),
may not get a say in that.  That is particularly true for the server-side
which may not necessarily see/use any DANE code.

I would really appreciate if you would refrain from suggesting to
create and use bogus X.509 certificates with DANE, _including_ CU=3.
DANE is an alternative means to establish trust, and for
CU=3 it additionally shortcuts/omits the name checks.  But not more.
If you desperately want naked keys, join Paul Wouters in his effort
to get that working with TLS.