Re: [TLS] Collisions (Re: Nico's suggestions - Re: Consensus Call:

Yoav Nir <> Thu, 13 May 2010 07:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5B7283A6AB1 for <>; Thu, 13 May 2010 00:18:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.559
X-Spam-Status: No, score=-1.559 tagged_above=-999 required=5 tests=[AWL=-0.560, BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id am0adou083rO for <>; Thu, 13 May 2010 00:18:10 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 462D83A6ABD for <>; Thu, 13 May 2010 00:16:01 -0700 (PDT)
X-CheckPoint: {4BEBB423-0-1B201DC2-1FFFF}
Received: from ( []) by (8.12.10+Sun/8.12.10) with ESMTP id o4D7F9pp006099; Thu, 13 May 2010 10:15:09 +0300 (IDT)
Received: from ([]) by ([]) with mapi; Thu, 13 May 2010 10:15:37 +0300
From: Yoav Nir <>
To: "'Marsh Ray'" <>, Simon Josefsson <>
Date: Thu, 13 May 2010 10:15:36 +0300
Thread-Topic: [TLS] Collisions (Re: Nico's suggestions - Re: Consensus Call:
Thread-Index: Acrx4kge2BcBmY74R7+Kap33WvFRwwAh/jWw
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "Kemp, David P." <>, "" <>
Subject: Re: [TLS] Collisions (Re: Nico's suggestions - Re: Consensus Call:
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: Thu, 13 May 2010 07:18:13 -0000

I kind of fail to see where the discussion shifted. In fact we have NOT determined that *malicious* collision resistance is a concern.

A client connects to a server and caches the credentials. Next time it connects to the *same* server, it shows an extension that proves knowledge of the credentials. Assuming the credentials haven't changed, the server can skip sending the credentials, but still has to prove ownership by signing something or by decrypting the pre-master secret. So what could an attacker do?

- It can hijack the connection, and not accept the cached credentials, but then it would need to present credentials of its own. Fail.

- It can hijack the connection, and accept the cached credentials, but assuming it doesn't have the same public/private key pair, it will then not be able to sign or decrypt. If it does have the same public/private key pair, it could use the legitimate server's credentials anyway. Fail again.

- It could get the client to connect to his malicious server first. In some magical way he has acceptable credentials, which the client caches. What happens next is not relevant, because the attacker has already won, but for the sake of argument, let's go on. The next time, the client connects to the legitimate server. It tries to use the cached credentials, which somehow collide with the attackers' even though the public key is different (I don't think we could attack even CRC this way). So the legitimate server accepts the cached credentials, but the handshake fails, and the client clears the cache. 

The third thing seems to succeed, but it depends on being able to predict a CA signature to such an extent, that you can make two certificates with a different public key collide in FNV, and it depends on being able to at least once dupe the client into thinking your server is the legitimate one. And all you get is a one-time DoS.

OK. So where's the real attack?

-----Original Message-----
From: [] On Behalf of Marsh Ray
Sent: Wednesday, May 12, 2010 5:33 PM
To: Simon Josefsson
Cc: Kemp, David P.;
Subject: Re: [TLS] Collisions (Re: Nico's suggestions - Re: Consensus Call:

On 5/12/2010 4:30 AM, Simon Josefsson wrote:
> Marsh Ray <> writes:
>> Alternatively, if we determine that indeed the non-collision-resistance
>> of the hash function is the root of all remaining concerns that would be
>> very positive. We could solve them all in one stroke with
>> s/FNV-1a/SHA-256/g.
> If collision-resistance is a required property (I'm not convinced yet),
> I believe we need hash agility for the possibility that SHA-256 is weak.

But perhaps that agility already exists in the form of the protocol
version negotiation.

TLS 1.2 appears to effectively depend on SHA-256 (at least in HMAC form)
for the PRF. If that gets broken, we can probably not trust anything
else negotiated in the handshake and a rev of the base protocol will be
required to fix it anyway.

If bare SHA-256 is a concern, the hash could be defined as something
like hmac_sha256("Cached Info", object_bytes).

Just a thought.

- Marsh