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

Paul Wouters <paul@nohats.ca> Fri, 30 May 2014 05:57 UTC

Return-Path: <paul@nohats.ca>
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 7C5E71A07C8 for <dane@ietfa.amsl.com>; Thu, 29 May 2014 22:57:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.651
X-Spam-Level:
X-Spam-Status: No, score=-2.651 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RP_MATCHES_RCVD=-0.651] 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 Tm6qrotjMTyo for <dane@ietfa.amsl.com>; Thu, 29 May 2014 22:57:27 -0700 (PDT)
Received: from bofh.nohats.ca (bofh.nohats.ca [76.10.157.69]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4A7B21A06EE for <dane@ietf.org>; Thu, 29 May 2014 22:57:27 -0700 (PDT)
Received: from bofh.nohats.ca (bofh.nohats.ca [127.0.0.1]) by bofh.nohats.ca (Postfix) with ESMTP id 2A274800C9 for <dane@ietf.org>; Fri, 30 May 2014 01:57:22 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nohats.ca; s=default; t=1401429442; bh=+Qcw0wjH/hrnsx7YYAy+5Y7OV9VswRrqBRD5wNtchL4=; h=Date:From:To:Subject:In-Reply-To:References; b=YtBzjAg6uAQRx9gK24DM25h/Umu2OXKWsgwp9nGIEn0ksMuxCEaQjVEGuuqn7mp1G UzY1r61izAFvnAL1GMwU9Wk4q47DNfVCq/WjUJC2yBx9zTgEYxhXlCpYR4dCvy7Eoa apRVjozch7BOJGBuHCooYB7yt/mFUAIoTOLDRlDw=
Received: from localhost (paul@localhost) by bofh.nohats.ca (8.14.7/8.14.7/Submit) with ESMTP id s4U5vLhI030976 for <dane@ietf.org>; Fri, 30 May 2014 01:57:21 -0400
X-Authentication-Warning: bofh.nohats.ca: paul owned process doing -bs
Date: Fri, 30 May 2014 01:57:21 -0400
From: Paul Wouters <paul@nohats.ca>
To: dane WG list <dane@ietf.org>
In-Reply-To: <20140529180356.GL27883@mournblade.imrryr.org>
Message-ID: <alpine.LFD.2.10.1405300141180.17295@bofh.nohats.ca>
References: <201405290805.s4T85HBT008757@new.toad.com> <20140529141626.GH27883@mournblade.imrryr.org> <alpine.LFD.2.10.1405291257210.14277@bofh.nohats.ca> <20140529180356.GL27883@mournblade.imrryr.org>
User-Agent: Alpine 2.10 (LFD 1266 2009-07-14)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"; format="flowed"
Archived-At: http://mailarchive.ietf.org/arch/msg/dane/lzqwppnKhp-Kv5qHbHtEH4Sd5Y8
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
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: Fri, 30 May 2014 05:57:29 -0000

On Thu, 29 May 2014, Viktor Dukhovni wrote:

>>> I think there is an obvious format, that should be spelled out
>>> explicitly in some suitable document.  Namely the same format as
>>> for the SPKI of a leaf certificate with any supported matching
>>> type:
>>>
>>>   ; Match SPKI of a certificate or just the bare public key
>>>   _25._tcp.mx1.example.com IN TLSA DANE-EE(3) SPKI(1) ? {blob}
>>
>> Where is this not clear in the existing DANE RFCs?
>
> Per John's note, the existing RFCs specifically exclude bare SPKI,

I think that's still up for discussion. But your above comment made it
appear you thought something else was missing, something about leaf
certificates and selector SPI?

>>> DANE TLS clients that also support the new TLS oob public key
>>> extension can include it in their client HELLO, provided every RR
>>> in the TLSA RRset is a "3 1 X" RR (they must perform the DNS lookup
>>> before client HELLO).  If any of the RRs have a different usage,
>>> then a full leaf certificate may be required, and the client MUST
>>> NOT signal oob public key support (since the client would potentially
>>> be unable to match a subset of the TLSA records, which may the
>>> currently active configuration).
>>
>> Can you explain why that is needed? I would envison people to migrate
>> from full certs to bare keys to have both available in their TLS server
>> and in their TLSA record set.
>
> The server will indeed have full certs and corresponding or
> independent bare keys.  However all the TLSA RRs MUST be "3 1 X"
> RRs (matching all the deployed certificates and public keys),
> or else clients MUST NOT indicate support for "oob public key".

A client can indicate support for oob public key that is not based on
DANE.

> The point being that the client does not know which TLSA RRs are
> "live" and which are "legacy" as a result of key rotation.

Why does that matter? the client receives either the server's full
certificate or its 'bare key certificate'. It looks throug the list of
obtained TLSA records and looks if anything matches. It does not need
to prove every TLSA record is valid.

Also, all TLSA records are "live", and I don't understand your
terminology of "live" versus "legacy" at all.

>  If all
> the "3 1 X" records are legacy, and only "3 0 1" or "2 0 1" RRs
> are "live", the client will fail to authenticate the server if it
> learns only the public key of the live leaf certificate.

If the client only has a bare public key of the server and the TLSA record
is only "2 x x" the setup is broken. sure. Don't do that? If there is a
"3 x x" TLSA record, there is no issue.

If the client has the full public cert of the server, then any of the
certificate usage TLSA types could be used, and there is no issue.

> A client that negotiates "oob public key" can only learn the
> server's leaf SPKI, so this needs to be sufficient to perform
> authentication, which is only true when *all* the authentication
> records are "3 1 X".

Why isn't only _one_ TLSA record of type "3 1 x"  good enough? Why can't
the admin publish a "3 1 x" and a "1 x x" or "2 x x" ?

So you brought up John's point (which all centers around "can we call a
ASN.1 SPKI a 'certificate'") and a new issue which I completely don't
understand why it is an issue.

Paul