Re: [TLS] Alternative ESNI?

Nico Williams <nico@cryptonector.com> Sat, 15 December 2018 05:48 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 34961128CF3 for <tls@ietfa.amsl.com>; Fri, 14 Dec 2018 21:48:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cryptonector.com
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 6W5kfFVm42qY for <tls@ietfa.amsl.com>; Fri, 14 Dec 2018 21:48:43 -0800 (PST)
Received: from cichlid.maple.relay.mailchannels.net (cichlid.maple.relay.mailchannels.net [23.83.214.36]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 54857124D68 for <tls@ietf.org>; Fri, 14 Dec 2018 21:48:42 -0800 (PST)
X-Sender-Id: dreamhost|x-authsender|nico@cryptonector.com
Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id A4FEB123FC9; Sat, 15 Dec 2018 05:48:41 +0000 (UTC)
Received: from pdx1-sub0-mail-a49.g.dreamhost.com (unknown [100.96.36.160]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 5EC4C12232D; Sat, 15 Dec 2018 05:48:41 +0000 (UTC)
X-Sender-Id: dreamhost|x-authsender|nico@cryptonector.com
Received: from pdx1-sub0-mail-a49.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.16.2); Sat, 15 Dec 2018 05:48:41 +0000
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|nico@cryptonector.com
X-MailChannels-Auth-Id: dreamhost
X-Chemical-Abaft: 0908f4567a5574cf_1544852921506_4235140460
X-MC-Loop-Signature: 1544852921506:244101155
X-MC-Ingress-Time: 1544852921506
Received: from pdx1-sub0-mail-a49.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a49.g.dreamhost.com (Postfix) with ESMTP id 1C62380680; Fri, 14 Dec 2018 21:48:41 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cryptonector.com; h=date :from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to; s=cryptonector.com; bh=9MCt84QiP9Xqcn 6zD4rU8O73e5s=; b=zBBHdWy6GZEkweL0Dc6aEnvqTWpq5YadJILKOiixitxOOK /dz/LkspKD/URmRgGFLZWKPMgjGGCADKDT922rIzmzaORX5U0B0UTae4eK9iNaDd uOVYb6ZYeAIpP2POFPOMtxV0YYJ18iW2Y6fPYZogPeqOPjKpb9OjSRCi6P4pc=
Received: from localhost (rrcs-172-254-26-194.nyc.biz.rr.com [172.254.26.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by pdx1-sub0-mail-a49.g.dreamhost.com (Postfix) with ESMTPSA id C753B80678; Fri, 14 Dec 2018 21:48:39 -0800 (PST)
Date: Fri, 14 Dec 2018 23:48:37 -0600
X-DH-BACKEND: pdx1-sub0-mail-a49
From: Nico Williams <nico@cryptonector.com>
To: Eric Rescorla <ekr@rtfm.com>
Cc: "<tls@ietf.org>" <tls@ietf.org>
Message-ID: <20181215054836.GK15561@localhost>
References: <20181215025346.GJ15561@localhost> <CABcZeBM_7LF-UDH8NR3Kad-8zSJBWwuNsDEJVAagHf1cV4Ow6g@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CABcZeBM_7LF-UDH8NR3Kad-8zSJBWwuNsDEJVAagHf1cV4Ow6g@mail.gmail.com>
User-Agent: Mutt/1.5.24 (2015-08-30)
X-VR-OUT-STATUS: OK
X-VR-OUT-SCORE: 0
X-VR-OUT-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedtkedrudehiedgkeeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgdpffftgfetoffjqffuvfenuceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujggfsehttdertddtredvnecuhfhrohhmpefpihgtohcuhghilhhlihgrmhhsuceonhhitghosegtrhihphhtohhnvggtthhorhdrtghomheqnecukfhppedujedvrddvheegrddviedrudelgeenucfrrghrrghmpehmohguvgepshhmthhppdhhvghloheplhhotggrlhhhohhsthdpihhnvghtpedujedvrddvheegrddviedrudelgedprhgvthhurhhnqdhprghthheppfhitghoucghihhllhhirghmshcuoehnihgtohestghrhihpthhonhgvtghtohhrrdgtohhmqedpmhgrihhlfhhrohhmpehnihgtohestghrhihpthhonhgvtghtohhrrdgtohhmpdhnrhgtphhtthhopehnihgtohestghrhihpthhonhgvtghtohhrrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/FlPzAkD54kfXbQgGKfwQtEnD-dc>
Subject: Re: [TLS] Alternative ESNI?
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 15 Dec 2018 05:48:45 -0000

On Fri, Dec 14, 2018 at 08:01:35PM -0800, Eric Rescorla wrote:
> On Fri, Dec 14, 2018 at 6:54 PM Nico Williams <nico@cryptonector.com> wrote:
> > OpenSSL extracts and uses SNI from session resumption tickets.
> > This gave Viktor Dukhovni and Matt Caswell an idea that I'll relay here
> > on their behalf.
> >
> > Also, while we're at it, I'd like to note that SNI is not the only thing
> > requiring privacy protection from the client.  There's also the PSK
> > identity payload for non-resumption PSKs...  Not as important as SNI,
> > perhaps, nonetheless I think we should maximize privacy, else we'll be
> > engaging in repeated encrypted-{fill-in-the-blank} exercises.
> >
> > Our proposal makes DNS optional (for co-tenancy fronting discovery) and
> > DNSSEC not necessary.
> >
> > The basic idea is to use a HelloRetryRequest to make a handshake traffic
> > secret available to the client for it to use in its subsequent hanshake
> > messages.  This form is susceptible to an SNI disclosure active attack
> > -- same as the current ESNI proposal w/o DNSSEC.  This variant adds one
> > round-trip to full handshakes.
> >
> 
> We looked at this class of design during the initial work on TLS 1.3
> because (a) it has trivial active attacks, as you note and (b) we
> don't want people to have to accept an extra round trip in order to
> get ESNI, because that's a major disincentive to doing it.

One of the two has no active attack, and the extra round trip is already
possible due to the existing HelloRetryRequest flow.  The variant that
is resistant to active attack has a worst case additional round-trip,
but again, only on initial handshake.

BTW, the flows I presented have no multi-CDN keyshare private key
distribution issues because there are no keyshares to publish in the
DNS.

> WRT to the active attack point, DNSSEC isn't necessary with the
> current ESNI design. What's necessary is that the client be able to
> get the ESNIKeys record (and the A/AAAA records) securely wrt to the
> attacker trying to get the SNI.  However, in a large number of cases
> (e.g., an attacker on your local network, there are non-DNSSEC ways of
> obtaining this property, such as using DoH.  In addition, if the

DoH?

> attacker controls DNS (or generally can observe DNS traffic) then
> getting the SNI encryption key securely isn't sufficient because the
> attacker can just learn the domain name from the DNS lookup (or return
> a unique IP for each query and then use that to look up the SNI from
> the IP).

Sure.  DPRIV is still needed, no doubt.

> > We can then optionally piggy-back the server's Certificate and
> > CertificateVerify along with the HelloRetryRequest (provided the
> > client's initial key_share is acceptable to the server), and now we have
> > authenticated the server under its fronted name, which means there is no
> > active attack on the ESNI.  This still only adds just the one round-trip
> > to full handshakes.  And look ma', now w/ no DNSSEC requirement to avoid
> > active attacks.
> >
> 
> This seems like a more invasive version of what David Benjamin et al.
> proposed the other day, just without the ESNI key at all. I don't
> think this is an acceptable general solution for latency reasons (as
> opposed to fallback), and of course you still need some way to

Again, it's comparable to the existing HelloRequestRetry flow case.

> securely obtain the domain name you put in the SNI, and if this isn't
> done with DNS, then you end up with a situation where very few people
> use ESNI and so you stick out.

Granted.  But not having to coordinate privte keys for the keyshares to
be published in the DNS seems like a very big win.

Nico
-- 

Nico
--