Snefru er en kryptografisk hashfunktion foreslået af Ralph Merkle . (Selve navnet Snefru, der fortsætter traditionen med blokcifrene Khufu og Khafre , også udviklet af Ralph Merkle, er navnet på en egyptisk farao ). Snefru-funktionen konverterer beskeder af vilkårlig længde til en hash af længde (normalt eller ).
Indgangsmeddelelsen er opdelt i blokke med bitlængde. Grundlaget for algoritmen er en funktion , der tager en bitværdi som input og beregner en bitværdi. Hver ny blok i meddelelsen sammenkædes med hashen beregnet for den forrige blok og føres til funktionens input . Den første blok er sammenkædet med en streng af nuller. Den sidste bloks hash sammenkædes med den binære repræsentation af meddelelseslængden ( MD - amplification ), og den resulterende sammenkædning hashes en sidste gang.
Funktionen er baseret på en (reversibel) blokchifferfunktion, der accepterer og beregner - bitværdier. returnerer XOR - en kombination af de første bits af funktionens input og de sidste bits af funktionens output . Funktionen blander inputdataene i flere trin. Hvert trin består af 64 runder. I én runde tages et meddelelsesord, og den mindst signifikante byte af det ord påføres en blok, hvis output også er et ord. Dernæst udføres XOR-operationen af det modtagne ord med to naboord i meddelelsen. Således ændres to tilstødende ord i meddelelsen i én runde ved at bruge en byte af et ord. I slutningen af runden blandes bytene af det brugte ord, så næste gang en anden byte kommer til input af blokken (der forekommer et antal cykliske skift med 8, 16 eller 24 bit). Da der er 64 runder og 16 ord, bruges hvert ord fire gange, derfor bruges hver byte af meddelelsen som en blokinput. Konstruktionen af blokken svarer til konstruktionen i Khafre- algoritmen .
Hvis antallet af trin i funktionen er ( runder), så kaldes Snefru-funktionen to-pas, hvis antallet af skridt er ( runder), så er Snefru tre-pas, og så videre.
I marts 1990 blev der givet en belønning på $1.000 til den første person, der knækkede to-pass Snefru ved at finde to beskeder med den samme hash-kode (det vil sige for at vise, at Snefru ikke er modstandsdygtig over for type 2 kollisioner ). En lignende dusør blev senere annonceret for hacking af fire-pass varianten af Snefru.
Ved hjælp af differentialanalyseværktøjer viste Eli Biham og Adi Shamir , at to-pass Snefru-funktionen (med en smule hash) ikke er modstandsdygtig over for type 1 og type 2 kollisioner .
Standardangrebet på hash-funktioner er baseret på "fødselsdage" -paradokset . Hvis vi hash ( , når ) forskellige beskeder, så vil det med stor sandsynlighed være muligt at finde et par med den samme hash. Et sådant angreb kan anvendes på enhver hashfunktion, uanset dens implementering.
For Snefru udviklede Biham og Shamir en differentiel kryptoanalysemetode, der ikke afhænger af valget af blokke og endda kan bruges, når blokkene ikke er kendt af kryptoanalytikeren .
Med en hash- længde er længden af de blokke, som inputmeddelelsen er opdelt i, . I dette angreb blev der brugt en algoritme, der søger efter to inputværdier af funktionen ( - bitværdier), der kun adskiller sig i de første bits, der er dannet fra blokke af inputmeddelelsen, men som samtidig har den samme hash.
Algoritme trin:
Ved at beregne en funktion af cirka par af blokke kan man således finde en type 2-kollision for Snefru.
Da ændringerne, der anvendes i trinnet , kun påvirker de bytes, der bruges i og -runderne, vil værdierne af blokkene efter runderne nummereret < i og -trinene være de samme.
I den -te runde bruges byten fra det -te ord til at ændre -th og -th ord. En byte føres til blokkens input, hvis output er et ord. Dernæst udføres XOR-operationen med det -te og -te ord. Hvis denne byte ændres (i trin ), samt byten af det -th ord, som bruges som input til blokken i -th runde, med sandsynlighed for, at efter at have udført XOR-operationen, byten i -th ord vil være det samme som den samme byte i blokken i trin efter -og runder. Derefter, ved at levere denne byte i -th runde til input af blokken, vil vi få den samme værdi ved output som i -th runde, udført på blokken fra trin . Derfor vil det -te ord være det samme efter runden for begge trin. Det -te ord efter runden, -te ord efter runden, ..., -te ord efter runden, -te ord efter runden, ..., -te ord efter runden vil også være det samme , da input af blokken for begge trin i disse runder er det samme og det samme.
-th ord er anderledes for trin allerede efter -th runde. Derfor vil det ved -th runde få betydningen af -th og -th ord til at blive forskellige for de to stadier. Det samme vil ske i th runde for ordene og . Og igen, med sandsynlighed , vil byten i det -te ord, der vil blive brugt som blokinput i -th runde, være den samme for trin og . Så -e, ..., -e, -e, ..., -e ordene vil være de samme. Ændringer vil begynde, når det -th ord bruges i -th runde.
Så hvis efter , , , og -th runder byten i det -th ord, som vil blive brugt som input for blokken i de følgende runder, er den samme for begge trin, så vil ordene , ... , være den samme efter hele runder . Sandsynligheden for denne begivenhed . Da værdien af XOR-operationen fra de første 4 ord i funktionens inputblok og de første 4 ord i funktionens outputblok tages som blokkens hash , vil hasherne beregnet i begge trin være de samme .
Metoden blev også anvendt på tre-pass og fire-pass Snefru-funktionen, hvilket viser bedre resultater sammenlignet med fødselsdagsmetoden.
Antal afleveringer af Snefru-funktionen |
hash længde, | Angrebssvær | Fødselsdagsmetoden |
---|---|---|---|
2 | 128 - 192 | — | |
224 | |||
3 | 128 - 192 | — | |
224 | |||
fire | 128 - 192 | — | |
224 |
Ved at bruge dette angreb kan du finde mange par, der har samme hash, og derudover finde flere beskeder, hvis hash er lig med hashen af denne besked (kollision af 1. slags). Antallet af operationer, der kræves for at finde en kollision af 1. slags i dette angreb, er mindre end i "brute force"-metoden .
Antal afleveringer af Snefru-funktionen |
hash længde, | Angrebssvær | brute force metode |
---|---|---|---|
2 | 128 - 224 | — | |
3 | 128 - 224 | — | |
fire | 128 - 192 | — |
På nuværende tidspunkt råder Merkle til at bruge Snefru-funktionen med mindst otte gennemløb. Men med så mange gennemløb sænkes beregningen af Snefru-funktionen betydeligt sammenlignet med MD5- eller SHA- funktionerne .
Hash funktioner | |
---|---|
generelle formål | |
Kryptografisk | |
Nøglegenereringsfunktioner | |
Tjek nummer ( sammenligning ) | |
Hashes |
|