Re: [TLS] draft-ietf-tls-cached-info-02 / New "Fast-Track" draft

Simon Josefsson <> Fri, 26 February 2010 09:36 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4FF5F3A86B3 for <>; Fri, 26 Feb 2010 01:36:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.702
X-Spam-Status: No, score=-2.702 tagged_above=-999 required=5 tests=[AWL=-0.103, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YJwZXD5fzFwH for <>; Fri, 26 Feb 2010 01:36:10 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 1A1E93A8682 for <>; Fri, 26 Feb 2010 01:36:09 -0800 (PST)
Received: from mocca ( []) (authenticated bits=0) by (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id o1Q9cFLv022110 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Fri, 26 Feb 2010 10:38:17 +0100
From: Simon Josefsson <>
To: Brian Smith <>
References: <> <> <> <>
OpenPGP: id=B565716F; url=
Date: Fri, 26 Feb 2010 10:38:16 +0100
In-Reply-To: <> (Brian Smith's message of "Thu, 25 Feb 2010 10:56:07 -0600")
Message-ID: <>
User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Cc: "" <>
Subject: Re: [TLS] draft-ietf-tls-cached-info-02 / New "Fast-Track" draft
X-Mailman-Version: 2.1.9
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: Fri, 26 Feb 2010 09:36:11 -0000

Brian Smith <> writes:

> Simon Josefsson wrote:
>> Here is a proposal: Say SHA-1 is a MUST when TLS<  1.2 is negotiated but
>> later TLS versions MUST use the same hash as the one used by the PRF?
> This is what I was originally going to suggest. The problem is that
> the client doesn't necessarily know which PRF will be used until it
> receives the ServerHello because the server could be TLS 1.0/1.1-only,
> because the PRF depends on the ciphersuite chosen by the server, and
> because the PRF for the chosen ciphersuite might not be based on a

Ouch.  Maybe we could do it on the TLS protocol version advertised by
the client then?  We'd get agility, but slower transition since older
versions are still advertised.  Thus, clients still advertising at
minimum TLS v1.0 or v1.1 would MUST support/use SHA-1, clients at
minimum advertising TLS v1.2 would MUST support/use SHA-256.  I'm not
sure what to do say about future versions though.  Can we say "use the
default PRF algorithm"?

> My first suggestion, a long time ago, was to just use the fingerprint
> of the end certificate as the key for certificate caching. This is
> something that both sides already have to calculate anyway. In fact,
> many implementations are already using the certificate fingerprint as
> a cache key for internal purposes. Then, have the client and server
> use the Client Certificate URL extension if they want to optimize the
> client certificate part, which potentially saves many many more bytes
> than the caching CertificateRequest.certificate_authorities
> would. Just give up defining a generic mechanism; the level of
> generality and complexity in the current draft is really unwarranted.

I don't think the X.509 certificate is a good idea here -- TLS can be
used without X.509 certificates.

> My second suggestion is to have the server calculate the hash, and
> give the calculated hash to the client along with the content. Then
> the client and the server don't have to agree on any algorithms at
> all, and the server can choose whatever algorithm it wants.

I like this approach.  The server gets to chose the hash, and the client
will have to comply.  It is easy to implement, and it is possible to
transition to other checksum algorithms over time.

One improvement may be for the client to send a list of hashes it
supports, though, and the server picking the best subset of it, as long
as it is compatible with what it supports?