Kollisionsresistens
I kryptografi är kollisionsresistens en egenskap hos kryptografiska hashfunktioner: en hashfunktion H är kollisionsresistent om det är svårt att hitta två inmatningar som ger samma utdata med en hashfunktion; det vill säga inmatningarna a och b där a ≠ b men H(a) = H(b).[1]:136 Postfacksprincipen innebär att alla hashfunktioner med fler möjlig inmatningar (definitionsmängd) än resultat (värdemängd) nödvändigtvis kommer att ha sådana kollisioner;[1]:136 dock ju svårare de är att hitta, desto säkrare är hashfunktionen kryptografiskt.
På grund av födelsedagsparadoxen så behöver en angripare bara beräkna 2N/2 (eller ) hashoperationer, där N är mängden av alla möjliga resultat, för att troligen hitta två matchande resultat. Detta sätter en övre gräns för kollisionsresistens. Om det finns en enklare metod än att göra en totalsökning av hashoperationerna, anses hashfunktionen vara trasig.[2]
Kryptografiska hashfunktioner är vanligtvis utformade för att vara kollisionsresistenta. Men många hashfunktioner som en gång ansågs vara kollisionsresistenta är inte det längre; till exempel har både MD5 och SHA-1 publicerade tekniker som är effektivare än totalsökning för att hitta kollisioner.[3][4] Vissa hashfunktioner har dock ett bevis på att det är minst lika svårt att hitta kollisioner som något svårt matematiskt problem (som heltalsfaktorisering eller diskret logaritm). Dessa funktioner kallas bevisligen säkra.[2]
Definition
[redigera | redigera wikitext]En familj av funktioner {hk :{0, 1}m(k) → {0, 1}l(k)} genererad av någon algoritm G är en familj av kollisionsresistenta hashfunktioner, om |m(k)| > |l(k)| för vilket k som helst, dvs hk komprimerar inmatningssträngen, och varje hk kan beräknas inom polynomtiden givet k, men för vilken som helst probabilistisk polynomalgoritm A har vi:
- Pr [k ← G(1n), (x1, x2) ← A(k, 1n) så att x1 ≠ x2 men hk(x1) = hk(x2)] < negl(n),
Där negl(·) anger någon försumbar funktion, och n är säkerhetsparametern.[5]
Logisk grund
[redigera | redigera wikitext]Kollisionsmotstånd är önskvärt av flera skäl.
- I vissa digitala signatursystem intygar en part ett dokument genom att publicera en offentlig nyckelsignatur på en hash av dokumentet. Om det är möjligt att ta fram två dokument med samma hash, kan en angripare få en part att intyga det ena, och sedan hävda att parten har intygat det andra.
- I vissa distribuerade innehållssystem jämför parterna kryptografiska hash av filer för att säkerställa att de har samma version. En angripare som kan producera två filer med samma hash kan lura användare att tro att de har samma version av en fil när de faktiskt inte har det.
Se även
[redigera | redigera wikitext]Referenser
[redigera | redigera wikitext]- ^ [a b] Goldwasser, S. and Bellare, M. "Lecture Notes on Cryptography" Arkiverad 21 april 2012 hämtat från the Wayback Machine.. Summer course on cryptography, MIT, 1996-2001
- ^ [a b] Pass, R. "Lecture 21: Collision-Resistant Hash Functions and General Digital Signature Scheme". Course on Cryptography, Cornell University, 2009
- ^ ”How to Break MD5 and Other Hash Functions”. http://merlot.usc.edu/csac-f06/papers/Wang05a.pdf. Läst 21 december 2009.
- ^ Xiaoyun Wang. Finding Collisions in the Full SHA-1. http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf.
- ^ Dodis, Yevgeniy. ”Lecture 12 of Introduction to Cryptography”. http://cs.nyu.edu/courses/fall08/G22.3210-001/lect/lecture12.pdf. Läst 3 januari 2016., def 1.