Re: [TLS] New draft: draft-rescorla-tls13-new-flows-01

Eric Rescorla <ekr@rtfm.com> Sun, 23 February 2014 21:27 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7771A1A0733 for <tls@ietfa.amsl.com>; Sun, 23 Feb 2014 13:27:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.723
X-Spam-Level:
X-Spam-Status: No, score=0.723 tagged_above=-999 required=5 tests=[BAYES_50=0.8, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7] 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 d137S5s3oApW for <tls@ietfa.amsl.com>; Sun, 23 Feb 2014 13:27:20 -0800 (PST)
Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by ietfa.amsl.com (Postfix) with ESMTP id B8BBF1A0720 for <tls@ietf.org>; Sun, 23 Feb 2014 13:27:19 -0800 (PST)
Received: by mail-wi0-f182.google.com with SMTP id f8so2395776wiw.9 for <tls@ietf.org>; Sun, 23 Feb 2014 13:27:19 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=LcencJdK2ZtqGiFMDmge5W0OBRz5N34saUag/M8tzCM=; b=UoiH+CTzykcAcqLh41RCKx+Wzhllr/ZLCArxKM2DJI7UaVr84XeHRSCGtIAJuhSNq9 eGfNFYJDoJrmERdOHtKcInUo76z6fJURDJHylreTuZcFoxoJY3nyk9aqt45btRYKaayZ O9Yl4tudgQNb/W+IXAWlaJeLRjFcC1/gLxUjPTz3dgO6AGlw9kNn4cd2d6S+rItFwniE 8V0tBoank9PWq6oI6PaZpDbzBM0b/wzyZsZ3jQdX/ndjWgtu3hoINggvyJ7g8mAqNJyG 0ksLIB1cD0UKUVfEsTcvOnxe4aaErT5WduXkzuRjqwWcBrmZhiz3KWZQKcBOLzKwRkfY suxw==
X-Gm-Message-State: ALoCoQmPc6z8ZBneoWZeTUbq7BKuKsedyxLwC1yPhlvTOiOGDG++DHCri2LMYo3Soe8uKkvl5RGF
X-Received: by 10.180.164.174 with SMTP id yr14mr11530141wib.18.1393190838946; Sun, 23 Feb 2014 13:27:18 -0800 (PST)
MIME-Version: 1.0
Received: by 10.217.126.132 with HTTP; Sun, 23 Feb 2014 13:26:37 -0800 (PST)
X-Originating-IP: [74.95.2.168]
In-Reply-To: <CACsn0cmZBzrvek_hKTY1Tm-+Win6UOM4paEzJ67JRrk2OZvH7A@mail.gmail.com>
References: <CABcZeBNUjg_Y3MKtRrAMmYAeYFLM1QyHvr1DCbOfA6MB2tJOYQ@mail.gmail.com> <CACsn0cmZBzrvek_hKTY1Tm-+Win6UOM4paEzJ67JRrk2OZvH7A@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Sun, 23 Feb 2014 13:26:37 -0800
Message-ID: <CABcZeBP6miqX3XY=CQfshwfAKoeQRrr5ABhBDa3z+z9hwaYeig@mail.gmail.com>
To: Watson Ladd <watsonbladd@gmail.com>
Content-Type: multipart/alternative; boundary="00248c0d79140f712f04f31985f9"
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/zb07PZrblsB37edw465PeeM3oNA
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] New draft: draft-rescorla-tls13-new-flows-01
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Sun, 23 Feb 2014 21:27:24 -0000

Watson,

Thanks for your comments.

On Sun, Feb 23, 2014 at 12:13 PM, Watson Ladd <watsonbladd@gmail.com> wrote:
> It seems to me the basic idea is to have the client encrypt its
> handshake after learning the server ECDH key, under the idea that this
> protects the client handshake. But this is wrong: the server's key
> isn't authenticated, so the handshake isn't actually being protected.

It's being protected from passive attack.

In general, because the server has multiple certificates and uses
SNI to select between them, we can't really authenticate the DH
exchange until the client has supplied the SNI to indicate which
certificate is to be used to authenticate the exchange.
The idea here is to do an initial unauthenticated DH exchange
to protect the SNI from passive attackers. Obviously this isn't
perfect, but it's an improvement over the current state.

Note that once the client and the server have spoken once and the
client has a valid server key (via ServerParameters or the like), the
client can use that key to form a secure connection and therefore
protect the SNI from an active adversary (in theory).  However (and
this is a big however) if you won't fall back to the non-optimistic
case, you have a permanent commitment for the server to use those
parameters, and if it forgets those for some reason (or you have
multiple servers without totally shared state), then you would have no
way to recover, so it's a tradeoff. [There are similar tradeoffs with
cert pinning.]

See Section 8.1:
http://tools.ietf.org/html/draft-rescorla-tls13-new-flows-01#section-8.1


> This is why we need to know the server ECDH key for the 1RTT
> transaction.
>
> 90% of what people use TLS for can be handled by the following flow:
> C->S: g^x
> S->C: g^y, Sign(g^y, g^x), certificates
> C->S:everything encrypted with g^(xy).

This is effectively what's in Appendix C:

http://tools.ietf.org/html/draft-rescorla-tls13-new-flows-01#appendix-C

I agree it's basically what you want if you don't care about protecting SNI.
As I said in my note, I am assuming we want to try to protect SNI from
passive attackers.

BTW, I note that this still is counting on some degree of
pre-knowledge, namely, of what groups are acceptable to the server, so
there's still a possibility you will end up having to do a second
round trip.


> In particular for SNI we could get some additional information from
> DNS like "hi, I'm hosted with alice.com and bob.com, so if you see
> other certificates, close the connection." I don't see a way to do
> that with the current round trip proposals.

I'm not sure quite what you're proposing here, but there's been a
bunch of work on using DNS and DNSSEC to indicate information
about the server's certificates. See, for instance:

http://tools.ietf.org/html/rfc6698
http://tools.ietf.org/html/draft-ietf-dane-srv-05

However, this work is mostly agnostic to the details of the handshake
flow, so I'm not sure how it interacts with the question of the internals
of TLS.



> As a sidenote: kick DH. ECDH has the DH speed record, and isn't going
> to give it up anytime soon. The IPR issues are long gone for something
> invented in 1985.

This seems like an orthogonal issue, so I suggest we discuss it separately.

-Ekr


 On Wed, Feb 19, 2014 at 12:40 PM, Eric Rescorla <ekr@rtfm.com> wrote:
> > Folks,
> >
> > I have prepared a new version of the TLS 1.3 flows document which
> > should appear in the repository shortly and in the meantime can be
> > found at:
> >
> >
> https://github.com/tlswg/tls13-spec/blob/master/draft-rescorla-tls-1.3.txt
> >
> > This version fleshes out a "recommended" set of flows:
> >
> > - 2-RTT where the client has no knowledge of the
> >   server's capabilities.
> >
> > - 1-RTT where the client knows the server's semi-permanent
> >   DHE/ECDHE key pair.
> >
> > - 0-RTT where the client and the server have shared anti-replay
> >   state.
> >
> > There are still a number of open issues, but this should be clear
> > enough to see the direction I am trying to go. These flows are
> > structured so that the 1-RTT case is the base case with the 2-RTT and
> > 0-RTT versions being variants of the basic 1-RTT handshake. All
> > variants encrypt the client extensions that are not required
> > to define the cryptographic processing (e.g., SNI is encrypted
> > but curve negotiation is not).
> >
> > I think the high order bit here is whether we want to have
> > encrypted SNI, because that dictates the position of the DHE
> > exchanges with respect to the server's messages.
> >
> > There are three options here:
> >
> > - Never
> > - Sometimes
> > - Always
> >
> > The flows in this draft take the position of "Always" which is
> > simple. "Never" is actually simpler. "Sometimes" is the most
> > complicated.  There are two cases where we could shave off latency if
> > we were willing to disclose the SNI to passive attackers (and in cases
> > where the client and server have never talked before.) My sense of
> > recent discussion is that people feel it's important to have modes
> > that protect SNI even if those are not the only modes. However, that
> > means that if we want to have non-SNI protecting modes, they are
> > additional complexity. Please let me know if I have misread the WG
> > here.
> >
> >
> > Here are some other things to keep in mind as you read the document.
> >
> > - Per my sense of the list, I have totally removed static RSA.  If
> > people strongly object to that, please speak up and let me know.
> >
> > - There has been no real security analysis of this material other than
> > at the hand-wavy level. We clearly need that, but the first thing we
> > need is to be clear on whether this is approximately the right set of
> > points in the complexity/performance/privacy tradeoff space and then
> > make sure that the security properties are correct. So, if you see
> > something that looks wrong or even grievously wrong, don't panic (but
> > do point it out).
> >
> >
> > - There is no currently defined support for any kind of resumption.
> > We need to decide if resumption is still an important feature in light
> > of the trend towards more PFS and faster processors.  I'm particularly
> > looking for input from the IoT/DICE guys here.
> >
> > - We will probably need to work out some of the details for DTLS, but
> > I wanted to get TLS nailed down first.
> >
> > - We also need to do some work on the symmetric crypto, e.g., to make
> > encrypt-then-MAC the default, perhaps to deprecate some ciphers,
> > compression, etc. I haven't forgotten that, but I want to deal with
> > the handshakes first.
> >
> > - As before, this incorporates ideas from a lot of different people
> > (and many times the same idea from different people). If you think
> > you should acknowledged in the text and/or acknowledgements
> > differently, please let me know.
> >
> > Thanks and comments welcome
> > -Ekr
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > TLS mailing list
> > TLS@ietf.org
> > https://www.ietf.org/mailman/listinfo/tls
> >
>
>
>
> --
> "Those who would give up Essential Liberty to purchase a little
> Temporary Safety deserve neither  Liberty nor Safety."
> -- Benjamin Franklin
>