Re: [TLS] OPTLS: Signature-less TLS 1.3

Eric Rescorla <> Tue, 04 November 2014 14:13 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 519F21A8765 for <>; Tue, 4 Nov 2014 06:13:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.977
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 ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id BImwj6Dkizvh for <>; Tue, 4 Nov 2014 06:13:14 -0800 (PST)
Received: from ( []) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 500CE1A6F90 for <>; Tue, 4 Nov 2014 06:13:14 -0800 (PST)
Received: by with SMTP id n3so9514419wiv.6 for <>; Tue, 04 Nov 2014 06:13:13 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=WGFIbYCVW9xQdpkRhD7D4AHcu0ADOY1Z5MtVI0nVMNg=; b=K7Wd10JSz8cmu228UemsFB+T/T4tTnYaCx+79Ix7PWITFdoUXEZcA857xPSEndEINN jwhUgUhPeO0Zg+jaikvv4Clv09SnZlg+bL1zGJRJCNNCwEbKhZc76MvA2jkmv5YGRgYf kQ3kLrrwZdV8cbaIfQYi2Xg1SB4KtCc3MprxQgRrIUy1TaIoRx1hrCylN0YhJWvL7Ucq WX6BCnyRbunr0C2sO67eJhB7iUIQcXbHtUFYuL4XrICAaV420wOW8Ry3AYF3TAhn5b2q YNa7p8JPOf4obuITUmj3D2JY1NnQ0wnb7nuOPVfomHNWaABgOeEvFWAfIqlSLjxcsifC rUeg==
X-Gm-Message-State: ALoCoQkYG22boqQ49rR+p6nPoI8h3OkZWcjT/w7lVvdjNfel8yQyXZkCIj41lmMYZ3CelMvyqZKB
X-Received: by with SMTP id l9mr56767250wjx.59.1415110392948; Tue, 04 Nov 2014 06:13:12 -0800 (PST)
MIME-Version: 1.0
Received: by with HTTP; Tue, 4 Nov 2014 06:12:31 -0800 (PST)
In-Reply-To: <>
References: <> <> <> <> <>
From: Eric Rescorla <>
Date: Tue, 04 Nov 2014 06:12:31 -0800
Message-ID: <>
To: Watson Ladd <>
Content-Type: multipart/alternative; boundary="047d7bf0d0f64a38570507091052"
Cc: "" <>
Subject: Re: [TLS] OPTLS: Signature-less TLS 1.3
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." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 04 Nov 2014 14:13:17 -0000

On Mon, Nov 3, 2014 at 7:02 PM, Watson Ladd <> wrote:

> On Sun, Nov 2, 2014 at 2:33 PM, Eric Rescorla <> wrote:
> > On Sun, Nov 2, 2014 at 2:05 PM, Hugo Krawczyk <>>
> The second option may be trivial, if the client already has some
> > generic key storage mechanism (e.g., one in software) though it's of
> > course more work for the programmer. However, if the client has a
> > non-generic key storage mechanism, such as a smart card with their
> > key, then this becomes a significant problem, as it may not be able to
> > store a DH key and/or use it for the kind of key derivation that
> > would be required here. In that case, the client must find somewhere
> > to store the DH key, which may entail significant effort.
> >
> >
> > This last point points us to a larger issue we need to consider here,
> > which is as follows. In TLS as it currently stands (both in 1.2 and
> > the current TLS 1.3 draft), you can implement a system where the
> > authentication keys are stored in hardware and an attacker who
> > compromises either the client and the server cannot steal a credential
> > which he can then use to establish new sessions [Note that if
> > he steals the session cache, he can use it to resume old sessions.]
> > In particular, because each signature is tied to a specific exchange,
> > the attacker cannot reuse signed ephemeral values to impersonate the
> > server.
> 1: If ephemerals are reused, you can MITM until they are refreshed. A
> time-bounded cert equivalent isn't worse in this regard.

I'm not following your reasoning here. For convenience, let's
restrict ourselves to thinking about 1-RTT handshakes. With
TLS 1.2 (or the current TLS 1.3 draft), the server can stop future clients
from accepting any DH share simply by refusing to sign any
further handshakes with that share. If, for instance, it determines
a share has been compromised, it can prevent any new connection
initiations with that share. By contrast, with a time-bounded
cert, an attacker can get clients to continue using that share until
the time expires (or perhaps longer, as you suggested elsewhere).

The situation is of course somewhat more complicated with 0-RTT
because the server must provide the client with a DH share which
he can use for future connections. However, he need not provide
every client with the *same* key, and if the key is authenticated
as part of the initial connection establishment, an attacker cannot
convince other clients to use that key. This is not true with certificates
(or of statically signed keys) which are inherently portable.

3: 0-RTT requires a certificate that can be used for encryption as
> well as signing, in ways that don't interfere. We need to use a DH
> share anyway for this, and might as well use it again.

I'm not sure I follow what you're saying here either. It's true that the
server needs to supply a semi-static DH share, but there's no inherent
reason it needs to be supplied as part of a free-standing transferrable
credential such as a certificate, though of course doing so allows you
to amortize the signature.

> However, in a system where the server signs a long-term DH value, it
> > may be the case that that value cannot be stored in the same hardware
> > module that you are using for your signature key (purely for
> > implementation reasons having to do with the interface the module
> > exposes). In that case, the DH secret will be stored in software and
> > compromise of the server potentially leaks a credential which can be
> > used to impersonate the server for a significant period of time, where
> > that time is dictated by the maximum amount of client-side clock error
> > the server is willing to tolerate, so probably measured in days to
> > weeks (and more if you are concerned about the time resetting attack
> > Watson, Ilari, and I were discussing.) I haven't decided yet sure how
> > serious an issue this is, but it's probably worth addressing
> > explicitly.
> I'm not sure, because it wasn't explicitly addressed in Hugo's
> original email, but it seems that the relevant server question is how
> long it wants to receive 0-RTT without requiring the client to find
> the new address: I don't remember resumption being addressed one way
> or the other. So the server isn't picking the DH share lifetime for
> reasons of clock skew, but rather for PFS refreshment if 0-RTT is
> being used.

I think we may be talking past each other. Let me try again.

Forget about 0-RTT and just consider the 1-RTT flow. In the first flight
the server needs to supply a signed version of g^s. Unless we want
that value to be acceptable to clients indefinitely, it must have some
validity interval. However, because clients have inaccurate clocks,
that interval can't be too narrow or it will cause clients to reject the
g^s value. I'm not sure how narrow it can be, but I would be surprised
if it were less than 12 hours or so. Perhaps someone who runs a
large server farm can report on the values they have historically
seen in the GMT field of the ClientRandom.