Meddelande förlänger attacken

Inom kryptografi och datorsäkerhet är en meddelandeförlängande attack  en typ av attack på en hashfunktion som lägger till ny information i slutet av det ursprungliga meddelandet. I det här fallet kan ett nytt hashvärde beräknas även om innehållet i det ursprungliga meddelandet förblir okänt. När du använder en hash-funktion som en skeninlägg kommer det nya värdet att vara den giltiga autentiseringskoden för det nya meddelandet.

En attack kan utföras på hash med konstruktionen H (K || m), där K är en viss hemlig nyckel , m är ett meddelande och || betyder sammanlänkning . [1] Således är hashfunktionerna SHA-1 och MD5 baserade på Merkle-Damgard-strukturen sårbara för denna typ av attack. [1] [2] [3] Å andra sidan är HMAC inte mottaglig för en meddelandeförlängningsattack eftersom den inte använder den beskrivna H (K || m)-konstruktionen. [4] SHA-3- algoritmen är inte heller sårbar för denna attack. [5]

Beskrivning

Algoritmen för att hasha funktioner som är sårbara för denna typ av attack är att iterativt beräkna deras värde. Inmatningsmeddelandet är uppdelat i delar och funktionen bearbetar varje del i tur och ordning. Som ett resultat av att arbeta med varje block i meddelandet omvandlar hashfunktionen sitt interna tillstånd, vilket används för att bearbeta nästa del. För det första meddelandeblocket tillämpas ett fördefinierat initialiseringsvärde .

Efter att alla delar av meddelandet har bearbetats genereras hash-utgången, som är en representation av dess interna tillstånd efter bearbetning av det sista blocket i meddelandet. Därför kan du från värdet av funktionen återställa dess interna tillstånd, som sedan kan användas för att bearbeta nya data. Nu kan du förlänga det ursprungliga meddelandet genom att lägga till ny information i slutet och beräkna ett hashvärde som kommer att vara giltigt för det nya meddelandet.

Sålunda kan vi särskilja följande funktionsprinciper för motsvarande hashfunktioner [6]

Det vill säga att meddelandet faktiskt hashas

m' = m || stoppning,

där m är det ursprungliga meddelandet, är Padding vad hashfunktionen fyllde det sista blocket med.

För att utföra en attack är det nödvändigt att hasha meddelandet

m' = m || Vaddering || nya data || NewPadding ,

det vill säga att tillskriva ny information till det ursprungliga meddelandet.

För att förlänga ett meddelande måste man alltså gissa längden på det ursprungliga meddelandet och sedan bestämma värdet på Padding. Fyllningsformatet måste definieras , annars skulle funktionen ge olika resultat för samma indata. [6]

Attack Defense

Följande metoder kan användas som skydd mot en meddelandeförlängande attack [7] H' = f(H(m)) H' = H(K || H(K || m)), där K är den hemliga nyckeln H' = H(K || Utfyllnad || m || K ), där utfyllnad fyller meddelandet till ett heltal av block

Exempel

Våffelleveranstjänsten av en given våffeltyp till ett specifikt användar -ID implementeras för att behandla förfrågningar av detta format :

Ursprungligt meddelande: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo Originalsignatur: 6d5f807e23db210bc254a28be2d6759a0f5f5d99

Servern kommer att uppfylla denna begäran (leverera wafers som "Eggo" för användar -id 1) endast om signaturen är giltig för den användaren. Signaturen är en meddelandeautentiseringskod, den är signerad med en nyckel som är okänd för angriparen . Det här exemplet är också sårbart för omspelsattacker när samma begäran och signatur skickas en andra gång.

En angripare kan modifiera begäran, i det här exemplet, genom att ändra önskad våffeltyp från "Eggo" till "Liege". Detta kan göras genom att använda meddelandeformatets flexibilitet: om det finns flera order på en rad är den sista att föredra. Att säkerställa kryptografisk säkerhet i detta exempel ligger helt och hållet på signaturen.

Önskat meddelande: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo&waffle=liege

För att signera en ny begäran måste angriparen känna till nyckeln som användes för att signera det ursprungliga meddelandet. Däremot kan han här använda en förlängningsattack.

Efter att ha gissat längden på meddelandet genererar angriparen en ny begäran:

Nytt meddelande: 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

Detta meddelande inkluderar originaldata och den del som lagts till, som hashfunktionen tidigare genererade under sitt arbete ( Padding ). I exemplet är denna del representerad i hexadecimal . I det här fallet fyller funktionen meddelandet med en, följt av nollor, och längden på meddelandet läggs till i slutet. Angriparen vet att tillståndet för hashfunktionen för det ursprungliga meddelandet är identiskt med dess tillstånd för det nya meddelandet upp till sista "&". Det interna tillståndet för hashfunktionen vid denna punkt bestäms av hashvärdet från det ursprungliga meddelandet, d.v.s. signaturen.

Hashalgoritmen i rätt tillstånd kommer sedan att bearbeta resten av det nya meddelandet och skapa en ny giltig signatur.

Ny signatur: 0e41270260895979317fff3898ab85668953aaa2

Således fick angriparen en giltig signatur utan att känna till den hemliga nyckeln.

Vid mottagande av en ny begäran kommer servern att betrakta den som giltig, eftersom signaturen är identisk med den som skulle genereras om hemligheten var känd.

Källor

Länkar

  1. 1 2 MD5 Length Extension Attack Revisited - Vũs inre fred . vudang.com . Arkiverad från originalet den 29 oktober 2014.
  2. Sårbarhet för Flickr API-signaturförfalskning . Hämtad 12 november 2015. Arkiverad från originalet 09 april 2021.
  3. Christopher Meyer. Hash Length Extension Attacks . Java Code Geeks . Hämtad 12 november 2015. Arkiverad från originalet 14 april 2021.
  4. Sluta använda osäkra nyckelhashar, använd HMAC . root labs rdist . Hämtad 12 november 2015. Arkiverad från originalet 6 maj 2021.
  5. Keccak-laget. Styrkor med Keccak-Design och säkerhet . - " Till skillnad från SHA-1 och SHA-2 har Keccak inte längdförlängningssvagheten, och behöver därför inte den kapslade HMAC-konstruktionen. Istället kan MAC-beräkning utföras genom att helt enkelt lägga till nyckeln för meddelandet. ". Hämtad 30 januari 2013. Arkiverad från originalet 6 juni 2017.
  6. 1 2 Artikel av C. Meyer "Hash längd förlängning attack" . Hämtad 12 november 2015. Arkiverad från originalet 14 april 2021.
  7. H. Travis. Web 2.0 Kryptologi, en studie i misslyckande. . Hämtad 12 november 2015. Arkiverad från originalet 19 november 2015.