En envejskomprimeringsfunktion i kryptografi er en funktion , der producerer en outputværdi af længde givet to inputværdier af længde [1] . En envejstransformation betyder, at det er let at beregne hashværdien ud fra preimage, men det er svært at skabe et preimage, hvis hashværdi er lig med den givne værdi [2] [3] .
Envejskomprimeringsfunktionen bruges for eksempel i Merkle-Damgor-strukturen inde i kryptografiske hash-funktioner .
Envejskomprimeringsfunktioner er ofte bygget ud fra blokcifre . For at omdanne enhver standard blokchiffer til en envejs komprimeringsfunktion er der Davis-Meyer, Mathis-Meyer-Oseas, Miaguchi-Presnel-skemaer (enkeltbloklængde komprimeringsfunktioner) [4] .
Kompressionsfunktioner er funktioner, der tager en streng med variabel længde som input og konverterer den til en streng med fast, normalt mindre længde.
For eksempel, hvis input A er 128 bit langt, er input B 128 bit langt, og de komprimeres sammen til en enkelt 128 bit output. Det er det samme, som hvis en enkelt 256-bit input komprimeres sammen til en enkelt 128-bit output.
Nogle komprimeringsfunktioner har forskellige størrelser af de to indgange, men outputtet har normalt samme størrelse som en af indgangene. For eksempel kan input A være 256 bit, input B 128 bit, og de komprimeres sammen med et output på 128 bit. Det vil sige, at i alt 384 inputbits komprimeres sammen til 128 outputbits. [5]
Blanding sker således ved at opnå en lavineeffekt, det vil sige, at hver outputbit afhænger af hver inputbit. [6]
Envejskomprimeringsfunktionen skal have følgende egenskaber:
Lad os reducere problemet med krypteringsanalyse af hashfunktioner til problemet med at finde en kollision: hvor mange beskeder skal scannes for at finde beskeder med to identiske hashes.
Sandsynligheden for at støde på de samme hashes for beskeder fra to forskellige sæt, der indeholder og tekster, er lig med . Hvis , så sandsynligheden for succes for angrebet og kompleksiteten af angrebsoperationerne .
For at finde en kollision skal du generere to pseudo-tilfældige meddelelsessæt (i hvert meddelelsessæt) og finde hashes for dem. Så ifølge fødselsdagsparadokset (se også fødselsdagsangreb ) er sandsynligheden for, at der blandt dem er et par beskeder med de samme hashes større end 0,5. Angrebet kræver en stor mængde hukommelse til at gemme tekster og effektive sorteringsmetoder. [otte]
Essensen af konstruktionen er en iterativ proces af successive transformationer, når input fra hver iteration modtager en blok af kildeteksten og output fra den foregående iteration [9] .
De mest udbredte hash-funktioner baseret på denne konstruktion er i MD5 , SHA-1 og SHA-2 .
Hash-funktionen skal konvertere en inputmeddelelse af vilkårlig længde til et output med fast længde. Dette kan opnås ved at opdele inputmeddelelsen i et antal lige store blokke og behandle dem sekventielt med en envejskomprimeringsfunktion. Kompressionsfunktionen kan enten være specifikt designet til hashing eller være en blokchifferfunktion.
Det andet preimage-angreb (med en besked finder angriberen en anden besked at tilfredsstille ) kan udføres ifølge Kilsey og Schneier, for en besked på 2 k blokke kan udføres i tiden k × 2 n/2+1 + 2 n- k+1 . Det er vigtigt at bemærke, at hvis meddelelserne er lange, så er kompleksiteten af angrebet mellem 2 n/2 og 2 n , og når meddelelseslængden bliver mindre, nærmer kompleksiteten sig 2 n . [ti]
Kompressionsfunktionens rolle kan udføres af enhver blokchiffer E. Denne idé dannede grundlaget for udviklingen af Merkle-Damgor-konstruktionen i Davis-Meyer, Mathis-Meyer-Oseas, Miaguchi-Prenel-skemaerne [11] .
I dette skema føres meddelelsesblokken og den tidligere hashværdi som henholdsvis nøglen og klartekstblokken til input af blokchifferet . Den resulterende blok af krypteret tekst tilføjes ( XOR-operation ) med resultatet af den forrige hash-iteration ( ) for at opnå den næste hashværdi ( ). [elleve]
I matematisk notation kan Davis-Meier-skemaet skrives som:
Hvis blokchifferet f.eks. bruger en 256-bit nøgle, er hver meddelelsesblok ( ) et 256-bit meddelelsesfragment. Hvis blokchifferet bruger en blokstørrelse på 128 bit, så er input- og outputværdierne for hash-funktionen i hver runde 128 bit.
En vigtig egenskab ved Davies-Meyer-konstruktionen er, at selvom den underliggende chifferblok er fuldstændig sikker, kan man beregne de fikspunkter, der skal konstrueres: for enhver kan finde en værdi sådan, at : bare skal indstilles . [12]
Davis-Meyer-strukturens sikkerhed blev først bevist af Winternitz [13] .
Dette er en version af Davis-Meyer-skemaet: meddelelsesblokke anvendes som nøgler til et kryptosystem . Skemaet kan bruges, hvis datablokkene og krypteringsnøglen har samme størrelse. For eksempel er AES velegnet til dette formål.
I denne konstruktion føres meddelelsesblokken og den tidligere hashværdi som henholdsvis nøglen og klartekstblokken til input af blokchifferet . Men værdien er allerede forbehandlet af funktionen på grund af mulige forskelle i størrelsen af hash-summen og størrelsen af chiffernøglen . Denne funktion knytter en n-bit hash-værdi til en k-bit chiffernøgle . Som et resultat af anvendelsen af krypteringsoperationen opnås en blok med privat tekst, som føjes til den tilsvarende blok med almindelig tekst ( ). [fjorten]
I matematisk notation kan Mathis-Meyer-Oseas-skemaet skrives som:
Miaguchi-Prenel-ordningen er en udvidet version af Mathis-Meyer-Oseas-ordningen. Forskellen er, at den private tekstblok summeres ikke kun med den tilsvarende almindelige tekstblok ( ), men også med resultatet af den tidligere hashingiteration ( ). For at gøre algoritmen mere modstandsdygtig over for angreb, bliver klarteksten, chiffernøglen og chifferteksten XORed sammen for at skabe en ny digest . Dette skema bruges i Whirlpool til at skabe en hash-funktion. Summeringsresultatet bestemmes af ligningen [15] :