Re: [TLS] Pull request for 1RTT Handshake

Watson Ladd <watsonbladd@gmail.com> Fri, 04 July 2014 02:29 UTC

Return-Path: <watsonbladd@gmail.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 221E71A0428 for <tls@ietfa.amsl.com>; Thu, 3 Jul 2014 19:29:16 -0700 (PDT)
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, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] 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 A6L9e9c9uscv for <tls@ietfa.amsl.com>; Thu, 3 Jul 2014 19:29:14 -0700 (PDT)
Received: from mail-wi0-x232.google.com (mail-wi0-x232.google.com [IPv6:2a00:1450:400c:c05::232]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 01A901A0A97 for <tls@ietf.org>; Thu, 3 Jul 2014 19:29:13 -0700 (PDT)
Received: by mail-wi0-f178.google.com with SMTP id n15so3109013wiw.11 for <tls@ietf.org>; Thu, 03 Jul 2014 19:29:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=22yIAXQdMQOOFioxVjVvLFIxrqPBdnZXAe3FBL0Xgg0=; b=tloBHdFWPQhlY0bcaYvADURFoLkB01ycOhOmsH6KU42p78B8hH+KbOjN+Pm9WoaJBg 7rUipPdjDsn8V5QYObESD7hr6hreoAeF1x3F5HU6qMT6PIo7grLdSVzgjCdsnrfDxLca QOcPtb5hfykPBZ9hK3RTbu/BSM0v2tv9O1UWh7yNbdF5lDduSARgko7Unt2uFOQO4vrB NPm+2d1ueWazmpY8HSgMVVuP5Yyp4W3ZWLZGUWY7vQ4kZexHVFzklUQvTRbrS6afImm/ i++wL+FQMBxyRe4TAABpDSvz7evqF/c8YcsdAWGweIHRPJYPkjdC9FC9k9pijMXcuvW/ WKCw==
MIME-Version: 1.0
X-Received: by 10.194.200.3 with SMTP id jo3mr389127wjc.110.1404440952538; Thu, 03 Jul 2014 19:29:12 -0700 (PDT)
Received: by 10.194.21.69 with HTTP; Thu, 3 Jul 2014 19:29:12 -0700 (PDT)
In-Reply-To: <CABcZeBNTJZo+ua6eV8H1Pwb2MqzD=o20=s+XkiQUL9fftspJrQ@mail.gmail.com>
References: <CABcZeBNTJZo+ua6eV8H1Pwb2MqzD=o20=s+XkiQUL9fftspJrQ@mail.gmail.com>
Date: Thu, 03 Jul 2014 19:29:12 -0700
Message-ID: <CACsn0c=2pFnjt2FWryH+N=kLAL7rnWswnqZbH8C4Q1aNM=qsLg@mail.gmail.com>
From: Watson Ladd <watsonbladd@gmail.com>
To: Eric Rescorla <ekr@rtfm.com>
Content-Type: text/plain; charset="UTF-8"
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/Q0oJqAjmZx1sYhKNXaRB6cSHZ_8
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Pull request for 1RTT Handshake
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: Fri, 04 Jul 2014 02:29:16 -0000

On Thu, Jul 3, 2014 at 7:54 AM, Eric Rescorla <ekr@rtfm.com> wrote:
> I've just put up a pull request that makes the first cut changes from
> the consensus from Denver for 1-RTT handshake without SNI
> protection. As we discussed, I'm leaving the door open for SNI
> protection, but since these are separable work items, and this is
> already a fairly signficant change I wanted to get the 1-RTT stuff
> down first.
>
> The PR can be found at:
>
>   https://github.com/tlswg/tls13-spec/pull/52
>
> It's still kind of rough and there are a bunch of open issues (and
> most likely several mistakes) but I think it's clear what direction
> it's going in.
>
> I wanted to explicitly called out some known open issues in the draft,
> both so I can get feedback/discussion on these and so that people know
> they haven't been forgotten:
>
> - Based on the mailing list and interim discussion and a bunch of
>   private conversations, I wrote this up as requiring named DHE groups
>   (and assuming we will want named ECDHE groups). This makes things
>   quite a bit simpler and seemed like a good idea anyway. I recognize
>   that I'm a bit ahead of the list consensus here, but my sense is
>   that this was the emerging consensus.  If there are major objections
>   to this change, I can rework things otherwise, but I believe it will
>   make things more confusing.
>
> - I have partly removed dh_rsa and dh_dss because they get in the way
>   of having a common handshake pattern and nobody seemed to want
>   them. Assuming nobody screams I will do a separate PR to remove them
>   entirely.
>
> - We need to take care that we don't introduce a downgrade issue in
>   the 2-RTT flow (Figure 2) where the server tells the client he has
>   sent an incorrect CKE. There are some open issues noted in the draft
>   about how to do this exactly. Comments welcome.
>
> - MT convinced me that the client should be able to make multiple
>   ClientKeyExchange offers for different parameter sets, so I did
>   that.

So I don't why a client would change their Client Hello in response to
a Server Hello, and hence
why there can be a downgrade.

The client says "here are my capabilities, and some early guesses as
to what you want to see"
If those guesses are incorrect, there is no need for another Hello:
the server already knows what
the client wants to tell it, and the client knows what the server would see.

There is no state machine issue, because the server knows if it got
the data or not, and
the client will know if the negotiated curve and suite were among the guesses.

Another misfeature is the Finished message ordering: it slows down one
side or another.
If we fix Triple Handshake the right way, it's safe to send data
before receiving the other
Finished message.

>
> - The EarlyData mechanism is a bit overgeneral as opposed to an
>   explicit ClientKeyExchange extension, but it seems like it's going
>   to be useful when we do SNI encryption and 0-RTT.

Are we ever going to be able to turn it off? Clients initially will
use only it for compatibility. Servers will develop bugs
because clients all use it. Lather, rinse, reiterate.

Sincerely,
Watson Ladd