# Collision resistance – HandWiki

**Short description**: property of cryptanalytic hashish functions

In cryptanalysis,

**collision resistance**is a property of cryptanalytic hash functions : a hash serve

*H*is collision-resistant if it is hard to find two inputs that hash to the same output ; that is, two inputs

*a*and

*b*where

*a*≠

*b*but

*H*(

*a*) =

*H*(

*b*). [ 1 ] :136 The pigeonhole principle means that any hash function with more inputs than outputs will inevitably have such collisions ; [ 1 ] :136 the hard they are to find, the more cryptographically secure the hash function is. The “ birthday paradox ” places an upper bound on collision resistance : if a hashish officiate produces

*N*bits of output, an attacker who computes merely 2

*N*/2 ( or [ mathematics ] \displaystyle { \scriptstyle \sqrt { 2^N } } [ /math ] ) hashish operations on random input signal is probable to find two matching outputs. If there is an easier method than this brute-force attack, it is typically considered a flaw in the hashish routine. [ 2 ] cryptanalytic hash functions are normally designed to be collision immune. however, many hash functions that were once thought to be collision tolerant were by and by broken. MD5 and SHA-1 in particular both have published techniques more effective than animal force for finding collisions. [ 3 ] [ 4 ] however, some hash functions have a proof that finding collisions is at least angstrom difficult as some hard mathematical problem ( such as integer factorization or discrete logarithm ). Those functions are called demonstrably dependable. [ 2 ]

Reading: Collision resistance – HandWiki

## definition

A class of functions { *h* *k* : { 0, 1 } *m* ( *k* ) → { 0, 1 } *l* ( *k* ) } generated by some algorithm *G* is a class of collision-resistant hash functions, if | *m* ( *k* ) | > | *l* ( *k* ) | for any *k*, i, *h* *k* compresses the input string, and every *h* *k* can be computed within polynomial time given *k*, but for any probabilistic polynomial algorithm *A*, we have

Read more: A Few Thoughts on Cryptographic Engineering

- Pr [
*k*←*G*(1*n*), (*x*1,*x*2) ←*A*(*k*, 1*n*) s.t.*x*1 ≠*x*2 but*h**k*(*x*1) =*h**k*(*x*2)] < negl(*n*), (*glass*)

where negl ( · ) denotes some negligible function, and *n* is the security parameter. [ 5 ]

Read more: A Few Thoughts on Cryptographic Engineering

## rationale

collision resistance is desirable for respective reasons .

- In some digital signature systems, a party attests to a document by publishing a public key signature on a hash of the document. If it is possible to produce two documents with the same hash, an attacker could get a party to attest to one, and then claim that the party had attested to the other.
- In some distributed content systems, parties compare cryptographic hashes of files in order to make sure they have the same version. An attacker who could produce two files with the same hash could trick users into believing they had the same version of a file when they in fact did not.