Re: [TLS] TLS 1.3 draft-07 sneak peek

Eric Rescorla <ekr@rtfm.com> Tue, 30 June 2015 22:25 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 6EFC71B332E for <tls@ietfa.amsl.com>; Tue, 30 Jun 2015 15:25:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.977
X-Spam-Level:
X-Spam-Status: No, score=-1.977 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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 zGiXJnZk0DIY for <tls@ietfa.amsl.com>; Tue, 30 Jun 2015 15:25:45 -0700 (PDT)
Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 435E31B3346 for <tls@ietf.org>; Tue, 30 Jun 2015 15:25:37 -0700 (PDT)
Received: by wiar9 with SMTP id r9so50902791wia.1 for <tls@ietf.org>; Tue, 30 Jun 2015 15:25:35 -0700 (PDT)
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:content-type; bh=CLxK4NzcZtxISWkefxUFQTmDXdFvhFkRSxdNq1NMJ1Q=; b=PY5plBz48PxZAJSQICeLdO37Fdw6pNftziZWDWBRpykB6Z9OihcZmTcJN9V25VCjEm Z3GxzPpm9ztHgMdvYUyUebWIWwPnqu1skRmp51mwZKk4i9Tb7+soyfG8LiwnEaM1mw8D w4QVBnm3BkEmKIXDehm4aZfwo4Vn5vqxf93/65ecgEpiNcR5hHZdGpoMwIF9vHiC7s3J UdDsPrcSPGWaRE/VOkud8ELNq+KA79bhKmUk/PiTo9TIxxbSnX7Gceap6xPN+9jlOKmD mckmzaVfjZxQSvi9Z12e/mCBnclcPJuVvtyV/03JX2w7EZvJAnGZSBUG0ft6Qi/sUjSZ 1ogw==
X-Gm-Message-State: ALoCoQnbq6yFplbyNZG3WGQCd+xQn1wmo3VLwMp/zdNWWBLFj5J8L1ugAHDM1uqgnJXUeno6bUSE
X-Received: by 10.180.83.137 with SMTP id q9mr39439472wiy.68.1435703135633; Tue, 30 Jun 2015 15:25:35 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.27.95.211 with HTTP; Tue, 30 Jun 2015 15:24:56 -0700 (PDT)
In-Reply-To: <CABcZeBOWK_WnHAefsZUBr4UyEkyiZqi1mhoZH8ZeGFftdOqTTw@mail.gmail.com>
References: <CABcZeBOWK_WnHAefsZUBr4UyEkyiZqi1mhoZH8ZeGFftdOqTTw@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Tue, 30 Jun 2015 15:24:56 -0700
Message-ID: <CABcZeBMbgUrGazM3JVM4sGjpbByu0EEjm07pOWO3M=3=RaMa6Q@mail.gmail.com>
To: "tls@ietf.org" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="f46d044401966715780519c3affe"
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/MuJZpKcsWxKO0D0JYAvy1op5gKc>
Subject: Re: [TLS] TLS 1.3 draft-07 sneak peek
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: <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: Tue, 30 Jun 2015 22:25:48 -0000

I see I forgot to provide a link. Here:

https://github.com/ekr/tls13-spec/tree/WIP_draft_07

On Tue, Jun 30, 2015 at 3:23 PM, Eric Rescorla <ekr@rtfm.com> wrote:

> Folks,
>
> Yesterday, I posted the -06 draft which snapshots the consensus changes
> made since -05, specifically:
>
> - Prohibit RC4 negotiation for backwards compatibility.
> - Freeze & deprecate record layer version field.
> - Update format of signatures with context.
> - Remove explicit IV.
>
>
> In the background, I've also been working with Hugo, Hoeteck, Karthik,
> and others to develop a new draft using semi-ephemeral DH based on
> Hugo's ideas as discussed in Dallas. I'm planning to merge this into
> master soon and submit it as draft-07 next week, but I wanted to
> e-mail the list and give people a chance to comment before I do
> that. I've provided a summary of the major changes and open issues
> below. Remember, this is a WIP so if you see something wrong, don't
> panic, but do let me know.
>
>
> CHANGES
> 1. Move ClientKeyShare into an extension so that the ClientHello
>    is the only message in the client's first flight. This removes
>    a bunch of ugliness around the "early_data" extension which
>    could encapsulate handshake and application data.
>
> 2. Added a mechanism for the server to indicate a known (EC)DHE
>    key/configuration which the client can then use in subsequent
>    handshakes (via the known_configuration extension). The net
>    effect here is that the client and server can skip over the
>    signature in subsequent handshakes, which provides benefit
>    when signatures are much slower than key exchange, as with
>    RSA; it also enables 0-RTT.
>
> 3. Added support for 0-RTT data, both with and without
>    client authentication.
>
> 4. Removed most of the support for resumption in favor of
>    a mechanism proposed by Karthik where you just establish
>    a PSK in connection N which you then use to key a PSK
>    cipher suite in connection N+1.
>
> All of these keying mechanisms use a unified key schedule based on two
> keys the "Ephemeral Secret" (ES) and the "Static Secret"
> (SS). Depending on the exact handshake type, these may be equal, but
> the logic is the same regardless. In the process, I also converted
> the key schedule to use HKDF (per WG consensus).
>
>
> OPEN ISSUES
> There are still a number of known open issues to discuss:
>
> 1. The present known_configuration mechanism allows the client to
> resurrect the handshake parameters (though not the keys) which were
> negotiated in a previous handshake, but this is done implicitly,
> i.e., the server provides a label and the client returns it on
> the next connection. This has the advantage of keeping things short
> but the disadvantage the it means that you can't have a static
> configuration ID for everyone (instead, the server has to somehow
> embed the properties in the configuration ID). There are (at least)
> three potential alternative designs:
>
>    (a) Have the client indicate in his first flight "these are the
>        parameters I expect you to negotiate", along with the
>        configuration identifier, based on what the server
>        negotiated the previous time. [Optionally, the server
>        can run the same negotiation locally and abort on mismatch.]
>
>    (b) As in (a) but with no indication of the expected parameters,
>        just the configuration ID, and the client just preemptively
>        uses the parameters from the last time and if the negotiation
>        ends up differently, all the data is undecryptable
>        (ugh) and you somehow fall back.
>
>    (c) Have the server provide a preference list in his
>        ServerConfiguration (this can be the same as in the
>        ClientHello) and have the client do the negotiation based on
>        that rather than the server (as in QUIC). This is a little odd
>        in that it means that sometimes the server selects the
>        parameters and sometimes the client does, but it's not that
>        hard to make this code symmetrical.
>
> As I think this through, I am leaning towards (a) but other people's
> opinions on this topic would be welcome.
>
>
> 2. Should we require that PSK cipher suites where the PSK is used for
> resumption use compatible ciphers? This is the way it was in TLS 1.2
> and below for resumption and tickets, but once you have a PSK, that's
> not really necessary [0]. So, for instance, if you had the following
> cipher list order:
>
>     ECDHE + AES-GCM
>     ECDHE + ChaCha/Poly
>     PSK + ChaCha/Poly
>     PSK + AES-GCM
>
> You could potentially negotiate one connection with GCM, use it
> to establish a shared key, and then reconnect with ChaCha/Poly.
> This seems like it probably should be something we avoid, though
> I'm not sure we have a concrete reason why, and it means a
> weird special case for PSK. Note that this issue might be
> ameliorated some (though not completely) with a la carte negotiation.
>
>
> 3. I don't currently have PSK/Resumption + 0-RTT working, because you
> need a way to indicate the expected parameters (see point #1 above).
>
>
> 4. I plan to rewrite the Handshake Protocol Overview (S 6.2)
> to be clearer. I hope to do this before submitting -07.
>
> 5. Security Considerations is badly out of date, so I plan to
> rewrite that soon, but probably not before Prague. I also intend
> to do a pretty substantial editorial cleanup pass and potentially
> some restructuring after Prague.
>
>
> As indicated above, this is still a WIP, so no doubt contains
> a number of errors, potentially serious ones. Comments and PRs
> welcome.
>
> Thanks,
> -Ekr
>
>
> [0] With the exception of cryptographic concerns about the use
> of the same IKM with different hash functions for HKDF, but this
> is a problem that applies to any use of PSK, not just this one.
>
>