HAIFA ( engelsk HAsh Iterative Framework ) er en iterativ metode til at konstruere kryptografiske hashfunktioner , som er en forbedring af den klassiske Merkle-Damgor struktur .
Det blev foreslået i 2007 for at øge modstanden mod mange angreb og understøtte evnen til at opnå hash-summer af forskellig længde. Baseret på algoritmen er der udviklet hash-funktioner som BLAKE [1] og SHAVite-3 [2] .
Skaberne af algoritmen er Eli Biham og Or Dunkelman , israelske kryptografer fra University of Haifa . Biham er en elev af Adi Shamir , som udviklede et stort antal nye kryptografiske algoritmer, herunder at bryde eksisterende; Dunkelman er en kollega med Shamir på et af projekterne, og fortsatte senere sin forskning på egen hånd [3] .
Merkle-Damgor-strukturen blev længe anset for at være modstandsdygtig over for det andet preimage-angreb , indtil Princeton University -professor Richard Dean i 1999 beviste, at denne antagelse er forkert for lange beskeder, hvis det med en given kontraktionsfunktion nemt er muligt at finde den faste punkter i en sekvens. Også et multipelt kollisionsangreb og et harding-angreb (et angreb på et kendt præfiks) [4] [5] kunne med succes udføres på Merkle-Damgor-strukturen .
Merkle-Damgor strukturen er følgende algoritme:
Der er et budskab opdelt i flere dele: . Der er en eller anden startværdi - og en funktion , der beregner den mellemliggende repræsentation af hashfunktionen på en bestemt måde [5] :
Yderligere iterativt :
Grundlaget for den nye HAIFA-algoritme var tilføjelsen af antallet af hash-bits og en tilfældig værdi. I stedet for den sædvanlige kompressionsfunktion, som nu kan betegnes som følger [4] :
, hvor er størrelsen på , er størrelsen på blokken, (oftest er outputstørrelsen den samme som størrelsen på h)Brugt:
, hvor er længden af antallet af bits og salt ,den interne repræsentation beregnes (i overensstemmelse med notationen introduceret ovenfor):
, hvor er antallet af bits hashed indtil videre.Følg disse trin for at hash en besked:
I HAIFA er meddelelsen polstret med en et, det nødvendige antal nuller, længden af meddelelsen i bits og størrelsen af outputblokken . Det vil sige, vi tilføjer en sekvens (antallet af nuller i dette tilfælde skal være sådan, at [4] , hvor , er antallet af enere og nuller, er blokstørrelsen:
Hashing af en meddelelse polstret med størrelsen af outputblokken eliminerer problemet med at finde kollisioner, da hvis to meddelelser og er hashed med blokstørrelser og , så er det den sidste blok, der gemmer fra kollisioner. Til gengæld, ved at tilføje = 0 i den allersidste blok, skabes et signal til at angive den sidste og komplementære blok [4] .
Muligheden for at supplere den originale besked i denne algoritme giver dig mulighed for at afkorte den hash-kodede, og derved ændre størrelsen af den endelige hash [4] .
Ofte kræves der i praksis forskellige længder af den endelige hash (som f.eks. gjort for SHA-256 , som har to trunkerede versioner), så denne struktur implementerede også muligheden for at variere dens længde ved hjælp af en speciel algoritme (for at opretholde modstand mod angreb på det andet preimage, kan du ikke bruge den åbenlyse løsning med at tage bits fra den endelige hash).
Beviset for, at HAIFA er kollisionsbestandigt, hvis kontraktionsfunktionen er kollisionsbestandigt, svarer til beviset for Merkle-Damgor [4] .
Antallet af hash-bits gør det meget sværere at finde og bruge fikspunkter. Selv efter at have fundet sådanne og , for hvilke , er det umuligt at multiplicere disse værdier på ubestemt tid i denne algoritme, fordi antallet af bits vil ændre sig hele tiden [4] .
Salt ( ), såvel som , bidrager også til stabiliteten af algoritmen [4] :
Nedenfor er skøn over HAIFA's modstand mod forskellige typer angreb.
I angrebet på det andet forbillede søges en sådan værdi, for hvilket , dvs. hashen fra er lig med en eller anden mellemværdi i iterationer, og kombiner derefter den del af den resterende besked ( placeret til højre for ) med vores gættede . Algoritmen blev dog anerkendt som resistent over for dette angreb, da dens størrelse i den forbedrede version blev tilføjet til slutningen af meddelelsen. Richard Dean pegede i sit arbejde på en helt ny måde at angribe på, baseret på den antagelse, at det er let at finde faste punkter for en given funktion (per definition er et fikspunkt et, for hvilket forholdet er opfyldt ). I hans algoritme blev den manglende beskedlængde kompenseret ved at tilføje et sæt fikspunkter, det vil sige, at vi kunne fuldføre vores længde med et tilstrækkeligt antal gentagelser af værdien .
I dette tilfælde beskytter HAIFA mod et fastpunktsangreb, da tilstedeværelsen af et salt og et felt, der indeholder antallet af hash-bits, minimerer sandsynligheden for gentagelse af kontraktionsfunktionsværdier [4] .
For flere kollisioner beskrev den franske kryptograf Antoine Joux muligheden for at finde beskeder, der har samme hash. Hans arbejde er baseret på det faktum, at det er muligt at finde sådanne én-blok kollisioner, hvori , og derefter konstruere forskellige beskeder, af alle muligheder, ved at vælge ved hvert af trinene enten besked eller .
HAIFA, på trods af sin komplekse struktur, garanterer ikke nul succesrate for et angreb med flere kollisioner. Efter ovenstående modifikationer af Merkle-Damgor-algoritmen er kompleksiteten af at finde kollisioner for hver blok ikke ændret, men da en tilfældig blandet værdi er dukket op, kan angriberen ikke forhåndsvælge varianterne af disse kollisioner uden at kende den tilfældige værdi. Beregninger går online [4] .
Et harding-angreb er baseret på, at angriberen forsøger at finde et sådant suffiks for et givet præfiks, der vil give den ønskede hashværdi.
Det er bevist, at det er umuligt at udføre den første fase af et hardingsangreb (opbygning af et beslutningstræ) på HAIFA, før saltværdien er kendt. Det vil sige, at den brute-force , som blev beskrevet ovenfor, ikke længere kan udføres. Betingelsen for succesfuldt at afvise et angreb er længden af den blandede meddelelse, hvis den ønskede kompleksitet af angrebet er indstillet til niveauet , skal det være mindst tegn. Hvis denne regel ikke overholdes, er nogle foreløbige beregninger mulige, hvilket fører til hacking af algoritmen. Hvis saltværdien alligevel blev fundet, vil det tage noget tid at finde det rigtige sted i meddelelsen på grund af tilstedeværelsen af feltet [4] .
Angrebstype | Ideel hash-funktion | MD | HAIFA
(fast værdi salt) |
HAIFA
(med forskellige saltværdier) |
---|---|---|---|---|
Angreb på den første prototype
( mål) |
||||
Angreb på en af de første prototyper | ||||
Angreb på den anden prototype
( blokke) [9] [10] |
||||
Angreb på en af de andre prototyper
( blokke, beskeder) |
||||
Kollisioner | ||||
Flere kollisioner
( er antallet af kollisioner) [9] |
||||
Hyrde [11] [12] | - | offline:
Online: |
offline:
Online: |
offline:
Online: |
HAIFA kan ifølge udviklerne være grundlaget for mange kryptografiske algoritmer, da det er et nyt forbedret grunddesign. Det er blevet bevist, at det kan bruges til at udvikle randomiserede hashing-funktioner [13] , den indpakkede Merkle-Damgard-funktion ( eng. Enveloped Merkle-Damgard , RMC [14] [15] , wide-pipeline hash [16] .
At få en wild-pipe hash-konstruktion med HAIFA er ret nemt; i selve algoritmen, for at øge kompleksiteten, blev længden af de indre blokke gjort dobbelt så stor som længden af den sidste blok (derfor er der to kompressionsfunktioner og ). Det er muligt at udlede formlen for den pipelinede hash direkte, da det er trivielt at finde den sidste blok i HAIFA, da der er sat nuller [4] .
Formlen for konvertering fra HAIFA til en bred pipeline-hash er:
hvor
— den anden initialiseringsvektor [16] .
Metoden foreslået af videnskabsmænd ved HAIFA er af stor praktisk betydning for implementeringen af elektroniske signaturalgoritmer : med introduktionen af antallet af bits og salt blev det sværere at tilføje præfikser og suffikser til beskeden (besætningsangreb), og derfor erstatte meddelelser til signatur [8] .