Re: [TLS] Collisions (Re: Nico's suggestions - Re: Consensus Call: FNV vs SHA1)

Stefan Santesson <> Mon, 10 May 2010 22:07 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CB7A93A68AE for <>; Mon, 10 May 2010 15:07:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.295
X-Spam-Status: No, score=-1.295 tagged_above=-999 required=5 tests=[AWL=-0.460, BAYES_40=-0.185, HELO_EQ_SE=0.35, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 1JrSiddbicbf for <>; Mon, 10 May 2010 15:07:03 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id B85B93A6767 for <>; Mon, 10 May 2010 15:07:03 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 6CFE928A598 for <>; Tue, 11 May 2010 00:07:00 +0200 (CEST)
Received: (qmail 27357 invoked from network); 10 May 2010 22:06:51 -0000
Received: from (HELO []) ([]) (envelope-sender <>) by (qmail-ldap-1.03) with DES-CBC3-SHA encrypted SMTP for <>; 10 May 2010 22:06:51 -0000
User-Agent: Microsoft-Entourage/
Date: Tue, 11 May 2010 00:06:48 +0200
From: Stefan Santesson <>
To: Nicolas Williams <>
Message-ID: <>
Thread-Topic: Collisions (Re: Nico's suggestions - Re: [TLS] Consensus Call: FNV vs SHA1)
Thread-Index: AcrwjRXIFxVym9h7e0mtYH83kHWRUA==
In-Reply-To: <>
Mime-version: 1.0
Content-type: text/plain; charset="US-ASCII"
Content-transfer-encoding: 7bit
Cc: Paul Hoffman <>,
Subject: Re: [TLS] Collisions (Re: Nico's suggestions - Re: Consensus Call: FNV vs SHA1)
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: Mon, 10 May 2010 22:07:04 -0000

On 10-05-10 11:39 PM, "Nicolas Williams" <>

>> On the last question I think the correct answer is: Yes it is possible to do
>> a variant of the protocol without a hash function but it does not make the
>> protocol any better. Rather it make it worse. Both in terms of functionality
>> and complexity.
> That's just a statement without an argument; I'm unconvinced.  Convince
> us.  If you can show that collisions don't result in failure to complete
> a TLS handshake successfully then all will be fine, so start there.
> Else I think you should explain how a collision-free protocol would be
> worse than the current proposal, then we could weigh the two approaches.

Yeah I know,

I was hoping I didn't have to since we have been through that debate

If you force the Server to assign identifier you are adding complexity to
the protocol. The server now need to remember the relationship between
identifiers and objects instead of just calculating them when needed.

It also limits functionality since the client now first have to ask each
server about their identifiers, store them (per server) and replay them to
the server. With a hash, the client can try caching directly without first
asking the server for it's identifiers as soon as the client have a guess
about the cached info (e.g. By pulling info from a repository)

What if this is a cluster and two servers give out different identifiers for
the same cached object???  To me this simply smells like a lot of
un-necessary problems.

What if a collision occurs?

That is pretty deterministic too. The server and the client may then agree
on a cached value by mistake. They will then go ahead and try to complete
the handshake with different opinions on a cached security critical value,
such as disagreeing about the server certificate chain. This will inevitably
lead to a handshake failure.

Upon a failed cached handshake, the client and server tries a new handshake
without caching, updates it's cache and moves on with life.

However, the risk that a 64 bit FNV will collide by mistake (not as a result
of a malicious attack) is so small that the risk inconvenience of a
collision is acceptable.

Does this make any sense?