[TLS] Renegotiation: trying to summarize

Martin Thomson <martin.thomson@gmail.com> Thu, 19 June 2014 22:44 UTC

Return-Path: <martin.thomson@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 6149B1A0183 for <tls@ietfa.amsl.com>; Thu, 19 Jun 2014 15:44:11 -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 S64O42kciWAa for <tls@ietfa.amsl.com>; Thu, 19 Jun 2014 15:44:09 -0700 (PDT)
Received: from mail-we0-x231.google.com (mail-we0-x231.google.com [IPv6:2a00:1450:400c:c03::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8C97C1A0320 for <tls@ietf.org>; Thu, 19 Jun 2014 15:44:09 -0700 (PDT)
Received: by mail-we0-f177.google.com with SMTP id u56so2910629wes.8 for <tls@ietf.org>; Thu, 19 Jun 2014 15:44:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=41dYVIDxbFl6bEby61E1sUHM6ZErPM9lZJj8+KNZ5wc=; b=z9qOkBzqp2L1qAATkerZxehacY2OPxX5cOvjsc5Bz8lG4ObZu6+/izr5Y8B9SZC58r pq6V42A+EHo3URNgeLetsY+JazWcnuHQvjlLzXYcWVww5yA1N70QosysPOvZ+j7JGc98 zyRW10pruRITALUF9mZPax6OghV8kWaAFSBXlQq9XkUeF2KuYXrTQ9WOOyPzkAp/7OEB 37kX/r9dR+yqbC/2rV8hLSJblxr/lkGdKFO/cl0AHRD9bFfMbgM53aljWFms6os0am7/ RR6HhwYu/B/m7GDVBmBV0kaYKRLnAnkAZNYhPNFGsc5570O/TpJuC4lmgDc2jn0JHN/l Xe6w==
MIME-Version: 1.0
X-Received: by 10.195.17.164 with SMTP id gf4mr727340wjd.45.1403217848078; Thu, 19 Jun 2014 15:44:08 -0700 (PDT)
Received: by 10.194.51.134 with HTTP; Thu, 19 Jun 2014 15:44:08 -0700 (PDT)
Date: Thu, 19 Jun 2014 15:44:08 -0700
Message-ID: <CABkgnnU+9mBdqffcbrmcghH9b3cb_Qh2R-XGWSu6MwB-0y99Lg@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
To: "tls@ietf.org" <tls@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/-d8tuhw0d_yNuHl2VsCHc-TeTV0
Subject: [TLS] Renegotiation: trying to summarize
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: Thu, 19 Jun 2014 22:44:11 -0000

It's been a long thread, I think a recap is in order.  Here's the
options I've seen thus far:

1. Remove renegotiation entirely

Brian Smith proposed this.  Arguments for are its beautiful simplicity
and the fact that it ensures that you limit the time that a single
session (and the corresponding keys) live.  Arguments against are that
it doesn't allow for long-lived connections; and we've evidence
(thanks David) that suggests that rekeying on very short timescales is
interesting to some TLS users, misguided or not.

2. Remove renegotiation and replace it with a key refresh

This is what I've proposed, though the details could easily be
different (e.g., you could do a new DH exchange for maximal PFS, or
you could invent a new message type).  The advantage over #1 is that
you can have a much longer connection lifetime.  That could equally be
considered a disadvantage.

3. End TLS and use the same L4 for a new session

Here we effectively end TLS, but keep the TCP connection (or
equivalent) around for use in a new TLS session.  In some versions,
this has an "end TLS" message that signals the end of the old session.
In others, starting a new handshake terminates the old session
implicitly.

Some have suggested that it be phrased in API terms as a new
connection, that the application needs to request a new connection to
get the handshake to happen.  In others, this is just a different spin
on renegotiation, with a little dead air while everything is changed
out.  In the latter case, I don't see how this is any different to
retaining renegotiation.  The former seems like an optimization of #1.

4. It ain't broke, don't fix it

The general thread here is that any problems are either fictional, or
the result of problems in the TLS API or the application that uses it.


In short, I think that #1 and #2 suggest that there is a potential
problem if session properties can change; #3 and #4 reject that
thesis.

You could treat the 1&2 vs. 3&4 as the high order bit.  Then, you
either choose to limit the lifetime of sessions (#1) or go long (#2).
Alternatively, you decide whether to break sessions apart (#3) or keep
the old renegotiation scheme (#4).  On the other hand, 3 could looks a
lot like an optimization of #1, though it might suggest the potential
to get things wrong.