Besked forlænger angrebet

Inden for kryptografi og computersikkerhed er et meddelelsesforlængende angreb  en type angreb på en hashfunktion, der tilføjer ny information til slutningen af ​​den originale meddelelse. I dette tilfælde kan en ny hashværdi beregnes, selvom indholdet af den oprindelige besked forbliver ukendt. Når du bruger en hash-funktion som en mock insert , vil den nye værdi være den gyldige godkendelseskode for den nye besked.

Et angreb kan udføres på hashes med konstruktionen H (K || m), hvor K er en bestemt hemmelig nøgle , m er en besked og || betyder sammenkædning . [1] Således er SHA-1- og MD5 -hash-funktionerne baseret på Merkle-Damgard-strukturen sårbare over for denne type angreb. [1] [2] [3] På den anden side er HMAC ikke modtagelig for et meddelelsesforlængende angreb, fordi det ikke bruger den beskrevne H (K || m) konstruktion. [4] SHA-3- algoritmen er heller ikke sårbar over for dette angreb. [5]

Beskrivelse

Algoritmen for hashing-funktioner, der er sårbare over for denne type angreb, er at iterativt beregne deres værdi. Indtastningsmeddelelsen er opdelt i dele, og funktionen behandler hver del efter tur. Som et resultat af at arbejde med hver blok af beskeden, transformerer hash-funktionen sin interne tilstand, som bruges til at behandle den næste del. For den første beskedblok anvendes en foruddefineret initialiseringsværdi .

Efter at alle dele af meddelelsen er blevet behandlet, genereres hash-output, som er en repræsentation af dens interne tilstand efter behandling af den sidste blok af meddelelsen. Derfor kan du ud fra værdien af ​​funktionen gendanne dens interne tilstand, som derefter kan bruges til at behandle nye data. Nu kan du forlænge den originale besked ved at tilføje ny information til slutningen og beregne en hashværdi, der vil være gyldig for den nye besked.

Således kan vi skelne mellem følgende principper for drift af de tilsvarende hash-funktioner [6]

Det vil sige, at beskeden faktisk er hashed

m' = m || polstring,

hvor m er den oprindelige besked, Padding er hvad hash-funktionen fyldte den sidste blok med.

For at udføre et angreb er det nødvendigt at hash beskeden

m' = m || Polstring || nye data || NewPadding ,

det vil sige at tilskrive ny information til den oprindelige besked.

For at forlænge en besked skal man således gætte længden af ​​den originale besked og derefter bestemme værdien af ​​Padding. Fyldformatet skal defineres , ellers ville funktionen give forskellige resultater for det samme input. [6]

Angrebsforsvar

Følgende metoder kan bruges som beskyttelse mod et meddelelsesforlængende angreb [7] H' = f(H(m)) H' = H(K || H(K || m)), hvor K er den hemmelige nøgle H' = H(K || Padding || m || K ), hvor Padding udfylder beskeden til et helt antal blokke

Eksempel

Vaffelleveringstjenesten af ​​en given vaffeltype til en specifik bruger user_id er implementeret til at behandle anmodninger i dette format :

Oprindelig besked: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo Original signatur: 6d5f807e23db210bc254a28be2d6759a0f5f5d99

Serveren vil kun opfylde denne anmodning (levere wafers som "Eggo" for bruger- id 1), hvis signaturen er gyldig for den pågældende bruger. Signaturen er en meddelelsesgodkendelseskode, den er signeret med en nøgle, der er ukendt for angriberen . Dette eksempel er også sårbart over for gentagelsesangreb, når den samme anmodning og signatur sendes en anden gang.

En angriber kunne ændre anmodningen i dette eksempel ved at ændre den ønskede vaffeltype fra "Eggo" til "Liege". Dette kan gøres ved at bruge meddelelsesformatets fleksibilitet: hvis der er flere ordrer på en linje, foretrækkes den sidste. Sikring af kryptografisk sikkerhed i dette eksempel ligger udelukkende i signaturen.

Ønsket besked: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo&waffle=liege

For at underskrive en ny anmodning skal angriberen kende den nøgle, der blev brugt til at signere den oprindelige besked. Her kan han dog bruge et forlængelsesangreb.

Efter at have gættet længden af ​​meddelelsen genererer angriberen en ny anmodning:

Ny besked: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo\x80\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x02\x28&waffle=liege

Denne meddelelse inkluderer de originale data og den del, der er tilføjet til dem, som hash-funktionen tidligere genererede under sit arbejde ( Padding ). I eksemplet er denne del repræsenteret i hexadecimal . I dette tilfælde udfylder funktionen beskeden med et, efterfulgt af nuller, og længden af ​​beskeden tilføjes til sidst. Angriberen ved, at tilstanden af ​​hash-funktionen for den oprindelige besked er identisk med dens tilstand for den nye besked op til det sidste "&". Den interne tilstand af hash-funktionen på dette tidspunkt bestemmes af hash-værdien fra den oprindelige meddelelse, dvs. signaturen.

Hash-algoritmen i den korrekte tilstand vil derefter behandle resten af ​​den nye besked og skabe en ny gyldig signatur.

Ny signatur: 0e41270260895979317fff3898ab85668953aaa2

Således opnåede angriberen en gyldig signatur uden at kende den hemmelige nøgle.

Ved modtagelse af en ny anmodning vil serveren betragte den som gyldig, da signaturen er identisk med den, der ville blive genereret, hvis hemmeligheden var kendt.

Kilder

Links

  1. 1 2 MD5 Length Extension Attack Revisited - Vũs indre fred . vudang.com . Arkiveret fra originalen den 29. oktober 2014.
  2. Sårbarhed ved Flickr API-signaturforfalskning . Hentet 12. november 2015. Arkiveret fra originalen 09. april 2021.
  3. Christopher Meyer. Hash Length Extension Attacks . Java Code Geeks . Hentet 12. november 2015. Arkiveret fra originalen 14. april 2021.
  4. Stop med at bruge usikre nøglehash, brug HMAC . root labs rdist . Hentet 12. november 2015. Arkiveret fra originalen 6. maj 2021.
  5. Keccak-holdet. Styrker ved Keccak-Design og sikkerhed . - " I modsætning til SHA-1 og SHA-2 har Keccak ikke længdeforlængelsesvagheden, og har derfor ikke brug for den indlejrede HMAC-konstruktion. I stedet kan MAC-beregning udføres ved blot at sætte nøglen foran beskeden. ". Hentet 30. januar 2013. Arkiveret fra originalen 6. juni 2017.
  6. 1 2 Artikel af C. Meyer "Hash længde forlængelsesangreb" . Hentet 12. november 2015. Arkiveret fra originalen 14. april 2021.
  7. H. Travis. Web 2.0 Kryptologi, en undersøgelse i fiasko. . Hentet 12. november 2015. Arkiveret fra originalen 19. november 2015.