[TLS] draft-ietf-tls-tls-13-17 posted

Eric Rescorla <ekr@rtfm.com> Thu, 20 October 2016 16:33 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id CF4AA129554 for <tls@ietfa.amsl.com>; Thu, 20 Oct 2016 09:33:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id SiMEpSs87CdK for <tls@ietfa.amsl.com>; Thu, 20 Oct 2016 09:33:18 -0700 (PDT)
Received: from mail-yw0-x22f.google.com (mail-yw0-x22f.google.com [IPv6:2607:f8b0:4002:c05::22f]) (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 2E73D1294BD for <tls@ietf.org>; Thu, 20 Oct 2016 09:33:18 -0700 (PDT)
Received: by mail-yw0-x22f.google.com with SMTP id u124so60483458ywg.3 for <tls@ietf.org>; Thu, 20 Oct 2016 09:33:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=zedh1tfMkXp8Ax1wUgix87Xajaw11IbEy9+Z2vy2IYA=; b=filqB5056Bn0heshopaSusXIjS7sdAmEh3xLuUAn06vL8wl0ChjTfRPk9z3iTq/bW1 lxF57FwUmcdCsFr+n7NyRwEOtauIH1m8p8a3wB/XH3Qy/rNKTYcPcHmgoJd5NM1Zcq5n gWRwhqAwPor0xH6oypMYtNHtGqdHAEisuzH6NpcYif4P7VtXAbE5xJgvPMg2El/uRdq7 0Ey9LeQNgo4GSdUksU4kpfv75Nl2KBKo3ZoJ9cWe9+cbP8tZ3NHkNbIZLnSToVATrW15 GeytJUfOXvwG5cr0TPTlZM/StNz/f/exIDBUBMbjjReLZYBI8jJfic6TkzYmvbWE+RjP vSyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=zedh1tfMkXp8Ax1wUgix87Xajaw11IbEy9+Z2vy2IYA=; b=bfUzVQzKwVL5TNucGq/x1JcrSscOSxuLoz3rDkVhX0HLfPAs9NkVZa+3ct+vapCUvH 9VCRaY2woWqbKYoY/FQgwnYvegV4MsUNJl+aA7xrxztgixgHGH99buKguLgtmFy2JP7t 0YeykG6bkIiDPT1C7HGhh+TwEDUs4T9B0sxfGMWYLYjBBl2ltaNarjxkEd+IbFG9vYmp eCbBPOf4a3/3AjjaW6LQjP+4jPk8supx+/bRvRGgYtB7+jk6f6OQNkq0DPmipkUCXiWc YSNUhYHHfDPINw1qp6xU5+YkRb3EyZDAy/jncIS1r8Nu71BtN1t1Ti9p+DOqZDRKpFJM sReg==
X-Gm-Message-State: AA6/9Rk5vj4709+U5VIlZ7z1XzRjx5/H+7zROTN9J4St0kBcXflZTzn4MzNmy7JA6zkStjZ9FkhqEvH0mcQysQ==
X-Received: by with SMTP id u197mr2262756ywc.146.1476981197116; Thu, 20 Oct 2016 09:33:17 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Thu, 20 Oct 2016 09:32:36 -0700 (PDT)
From: Eric Rescorla <ekr@rtfm.com>
Date: Thu, 20 Oct 2016 09:32:36 -0700
Message-ID: <CABcZeBP6pzqtcT3rmmpjr_4R+fb6ZyiAduxQiJ87B9hnRzVBXA@mail.gmail.com>
To: "tls@ietf.org" <tls@ietf.org>
Content-Type: multipart/alternative; boundary=94eb2c0b0f68984b34053f4e7b67
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/7tKUEmFfAtzK4H9YHMpKg2NFnKs>
Subject: [TLS] draft-ietf-tls-tls-13-17 posted
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.17
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: Thu, 20 Oct 2016 16:33:20 -0000


I have just uploaded draft-ietf-tls-tls13-17.

The major change in this draft is the removal of the 0-RTT Finished
and resumption_context constructs and their replacement with the
psk_binder. This has a number of side effects:

- Binds in the original transcript into the resumed handshake
  whenever resumption-PSK is used.

- Provides proof of possession of the RMS by the client (subject
  to replay issues). I've moved the obfuscated_ticket_age field
  out of the early_data_indication so that it now provides the
  same limited anti-replay for non-0-RTT PSK.

- Removes the need for any early handshake encryption. This change,
  along with the dual key ladders we introduced in -16, also allowed
  us to simplify the traffic key expansion so we don't need explicit
  labels for each key (they are already used in Derive-Secret).

Other changes included:
- Tweaking the PSK key exchange modes a bit (and removing the
  inoperative ability to specify PSK auth modes, while leaving
  a hook to do it later).

- Cleaned up the cipher suite requirements for resumption and 0-RTT.
  You can resume/do PSK as long as the PSK KDF matches, but to do 0-RTT
  you need the whole cipher suite must match.

This revision resolves all the outstanding technical PRs [0] and all but
one of the non-parked technical issues (#144, whether we should remove the
redundant TLSCipherText.opaque_type and TLSCipherText.record_version
fields). We are pursuing measurements to resolve whether this will
be a compat problem but we don't have them yet.

As usual, comments welcome. We are already working on implementing
-17 in NSS/Firefox and should have it before Seoul.


Full Changelog
- Remove the 0-RTT Finished, resumption_context, and replace with a
  psk_binder field in the PSK itself (*)

- Restructure PSK key exchange negotiation modes (*)

- Add max_early_data_size field to TicketEarlyDataInfo (*)

- Add a 0-RTT exporter and change the transcript for the regular exporter

- Merge TicketExtensions and Extensions registry. Changes
  ticket_early_data_info code point (*)

- Replace Client.key_shares in response to HRR (*)

- Remove redundant labels for traffic key derivation (*)

- Harmonize requirements about cipher suite matching: for resumption you
  need to match KDF but for 0-RTT you need whole cipher suite. This
  allows PSKs to actually negotiate cipher suites. (*)

- Explicitly allow non-offered extensions in NewSessionTicket

- Explicitly allow predicting ClientFinished for NST

- Clarify conditions for allowing 0-RTT with PSK

[0] The two remaining outstanding PRs are:
#680: Forbid post-handshake authentication except when permitted by
      application profile. This is almost entirely a requirements-level
      change, though it would allow clients to send "unexpected_message"
      when receiving an unexpected CertificateRequest.

#612: TLS 1.3 -> TLS 2.0
      This has no change on the wire format.