30.01.2013 Views

Logical Analysis and Verification of Cryptographic Protocols - Loria

Logical Analysis and Verification of Cryptographic Protocols - Loria

Logical Analysis and Verification of Cryptographic Protocols - Loria

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

60 CHAPTER 3. PROTOCOLS WITH VULNERABLE HASH FUNCTIONS<br />

Motivations. We give now one motivation for each <strong>of</strong> the three major properties<br />

above. Consider a digital signature scheme wherein the signature is applied<br />

to the hash h(x) rather than the message x. Here h should be a second-preimage<br />

resistant hash function, otherwise, a intruder I may observe the signature <strong>of</strong><br />

some agent A on h(x), then find an x ′ such that h(x ′ ) = h(x), <strong>and</strong> claim that A<br />

has signed x ′ . If I is able to actually choose the message which A signs, then<br />

I needs only find a pair x, x ′ such that h(x) = h(x ′ ) rather than the harder task<br />

<strong>of</strong> finding a second preimage <strong>of</strong> x; in this case, collision resistance is also necessary<br />

[153]. Less obvious is the requirement <strong>of</strong> preimage resistance for some<br />

public-key signature schemes; consider RSA [174], where agent A has public<br />

key (e, n). I may choose a r<strong>and</strong>om value y, compute z = y e (mod n), <strong>and</strong> claim<br />

that y is As signature on z. This attack is possible if I can find an input x such<br />

that h(x) = z.<br />

3.1.3 Examples <strong>of</strong> hash functions<br />

Let us consider the following function: h(x) = x 2 - 1 (mod p), with p a prime<br />

number. This function h is a hash function as per Definition 34, but h is not a<br />

one-way hash function because finding x such that h(x) = y for a given y is easy<br />

[153].<br />

Let us consider the following function: h(x) = x 2 (mod n) with n = p ∗ q, p, q<br />

are two r<strong>and</strong>omly chosen primes. h is a one-way hash function because finding<br />

a x such that h(x) = y for a given y is computationally equivalent to factoring<br />

<strong>and</strong> thus intractable, but finding a 2nd-preimage, <strong>and</strong>, therefore, collisions,<br />

is trivial (given x, we have that h(x) = h(−x)), <strong>and</strong> thus h is neither secondpreimage<br />

resistant hash function nor collision resistant hash function [153].<br />

3.2 Collision vulnerability property<br />

A hash function is a function h : D → R with �D� > �R� (Definition 34),<br />

that is a hash function is many-to-one. This implies that the existence <strong>of</strong> pair <strong>of</strong><br />

inputs x, x ′ with x �= x ′ <strong>and</strong> h(x) = h(x ′ ) is unavoidable, we call such pair <strong>of</strong><br />

inputs a collision. However, only a few years ago, it was intractable to compute<br />

collisions on hash functions, so they were considered to be collision resistant<br />

by cryptographers, <strong>and</strong> protocols were built upon this assumption. From the<br />

nineties on, several authors [98, 103, 199, 201] have proved the tractability <strong>of</strong><br />

finding pseudo-collision <strong>and</strong> collision attacks over several hash functions. Taking<br />

this into account, we consider in this chapter hash functions having the following<br />

properties: preimage resistance, second-preimage resistance, <strong>and</strong> collision<br />

vulnerability. From now on, we call a collision vulnerable hash function a hash<br />

function having these properties. The collision vulnerability means that the hash<br />

function is not collision resistant, i.e. it is computationally feasible to compute

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!