Re: [dane] Extending TLSA RFC to operate with TLS's new raw public keys

Viktor Dukhovni <viktor1dane@dukhovni.org> Thu, 05 June 2014 15:15 UTC

Return-Path: <viktor1dane@dukhovni.org>
X-Original-To: dane@ietfa.amsl.com
Delivered-To: dane@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B30311A028A for <dane@ietfa.amsl.com>; Thu, 5 Jun 2014 08:15:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.9
X-Spam-Level:
X-Spam-Status: No, score=-101.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, USER_IN_WHITELIST=-100] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kca0zre64_YB for <dane@ietfa.amsl.com>; Thu, 5 Jun 2014 08:15:13 -0700 (PDT)
Received: from mournblade.imrryr.org (mournblade.imrryr.org [38.117.134.19]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6FFBA1A025C for <dane@ietf.org>; Thu, 5 Jun 2014 08:11:53 -0700 (PDT)
Received: by mournblade.imrryr.org (Postfix, from userid 1034) id 692F22AAB4F; Thu, 5 Jun 2014 15:11:45 +0000 (UTC)
Date: Thu, 05 Jun 2014 15:11:45 +0000
From: Viktor Dukhovni <viktor1dane@dukhovni.org>
To: dane@ietf.org
Message-ID: <20140605151145.GA27883@mournblade.imrryr.org>
References: <OFB1999EAD.836E27A5-ON85257CE8.0067D557-85257CEB.000B5F5E@us.ibm.com> <20140602022733.GK27883@mournblade.imrryr.org> <538C86C7.8000805@cs.tcd.ie> <20140602145215.GP27883@mournblade.imrryr.org> <20140602172922.GS27883@mournblade.imrryr.org> <alpine.LFD.2.10.1406030056500.19868@bofh.nohats.ca> <20140603130839.GY27883@mournblade.imrryr.org> <m3ppip5s57.fsf@carbon.jhcloos.org> <20140604025535.GJ27883@mournblade.imrryr.org> <4e941a7fe4be00884d43cf848b30bec228883452@8b5064a13e22126c1b9329f0dc35b8915774b7c3.invalid>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <4e941a7fe4be00884d43cf848b30bec228883452@8b5064a13e22126c1b9329f0dc35b8915774b7c3.invalid>
User-Agent: Mutt/1.5.23 (2014-03-12)
Archived-At: http://mailarchive.ietf.org/arch/msg/dane/8v1nc1aGAPjhisjJgvhRO3kGsC0
Subject: Re: [dane] Extending TLSA RFC to operate with TLS's new raw public keys
X-BeenThere: dane@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: dane@ietf.org
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: Thu, 05 Jun 2014 15:15:14 -0000

On Thu, Jun 05, 2014 at 12:47:58PM +0100, Simon Arlott wrote:

> On Wed, June 4, 2014 03:55, Viktor Dukhovni wrote:
> > On Tue, Jun 03, 2014 at 10:23:39PM -0400, James Cloos wrote:
> > The onus to get this corner case avoided needs to be either on the
> > client or on the server.  The client-side solution is simpler:
> >
> >     * Avoid "oob public key" negotiation when authentication is
> >       via DANE and TLSA records may require a full certificate.
> 
> If at least one TLSA record is DANE-EE(3) then a full certificate
> is not required for that record.

This is false.  Firstly because one cannot match a public key
against a "3 0 [12]" record.  Secondly, because during transitions
between old and new keys which don't preserve the U/S/M combinations
used (old key "3 0 1", new key "3 1 1" not yet deployed) some of the
TLSA records don't match the server's change, and this may be true
for all records with a particular U/S/M combination (until the new
key is deployed).

Due to DNS caching, keys rollover and TLSA record updates are not
synchronized.

> Why do you need to restrict the client behaviour when the other
> currently defined record types are also present?

Because I've written an i's dotted/t's crossed DANE implementation
and have thought through the details that many folks are glossing
over.  Some are with me on the fine details but suggest that the
client should instead fail and retry.  But then, clients need to
know that they should be prepared to retry without oob if they
prefer that for some reason to suppressing oob.

The text can offer clients a choice.

   * Suppress oob public keys when it might well lead to authentication
     failure with servers rolling over keys and the client can handle full
     cert chains.

  * Otherwise, be prepared for authentication to fail, and retry without
    "oob".

Predicated on the existence of "usable" records other than "3 1 X"
and possibly "3 0 0" if the client is prepared to use that with
oob.

Finally, the WG could decide that servers which publish U/S/M
combinations in their TLSA RRset that contain only future or only
past keys are "misconfigured", and that servers SHOULD NOT do that.
In that case arguably the burden to get this right is on the server
and the client can be let off the hook.

I will also add language to the ops draft explaining how servers
can avoid such problem TLSA records and that they SHOULD do so.
(or at least at that it is strongly RECOMMENDED that they do so).

The rationale is that servers have no knowledge of which combinations
of usages, selectors or matching types are unsupported, administratively
disabled or otherwise unavailable/ignored by the client.  The safest
assumption is that each U/S/M combination might be the only one
supported by a given client, and therefore should always match
current (not future or past) server keys.

Still, I am not sure that server operators will reliably "get the
memo".  And thus client caution is approriate where there is little
to lose by suppressing a minor TLS optimization.

> What is the intended behaviour of the oob-capable client when new
> TLSA record types are defined? Do those records also cause it to
> refuse to do OOB or does it ignore them?

No, "unusable" TLSA records (not recognized by the client that could
never be used for matching whether a full cert chain or a bare key
is negotiated) are ignored first.  The language in the ops draft
will spell this out.

-- 
	Viktor.