Üzenethosszabbító támadás

A kriptográfiában és a számítógépes biztonságban az üzenethosszabbító támadás  egy olyan hash-függvény elleni támadás , amely új információkat ad az eredeti üzenet végéhez. Ebben az esetben akkor is számítható új hash érték, ha az eredeti üzenet tartalma ismeretlen marad. Ha hash függvényt használ hamis beszúrásként , az új érték lesz az új üzenet érvényes hitelesítési kódja .

Támadás hajtható végre H (K || m) konstrukciójú hashekre, ahol K egy bizonyos titkos kulcs , m egy üzenet és || összefűzést jelenti . [1] Így a Merkle-Damgard struktúrán alapuló SHA-1 és MD5 hash függvények sebezhetőek az ilyen típusú támadásokkal szemben. [1] [2] [3] Másrészt a HMAC nem érzékeny az üzenethosszabbító támadásokra, mert nem használja a leírt H (K || m) konstrukciót. [4] Az SHA-3 algoritmus szintén nem sebezhető ezzel a támadással szemben. [5]

Leírás

Az ilyen típusú támadásokkal szemben sebezhető kivonatoló függvények algoritmusa az értékük iteratív kiszámítása. A bemeneti üzenet részekre oszlik, és a függvény minden részt felváltva dolgoz fel. Az üzenet egyes blokkjaival végzett munka eredményeként a hash függvény átalakítja a belső állapotát, amely a következő rész feldolgozására szolgál. Az első üzenetblokkhoz egy előre meghatározott inicializálási érték kerül alkalmazásra .

Az üzenet minden részének feldolgozása után létrejön a hash kimenet, amely az üzenet utolsó blokkjának feldolgozása utáni belső állapotának reprezentációja. Ezért a függvény értékéből visszaállíthatja a belső állapotát, amely aztán felhasználható új adatok feldolgozására. Most meghosszabbíthatja az eredeti üzenetet úgy, hogy új információkat ad hozzá a végéhez, és kiszámíthatja az új üzenetre érvényes hash értéket.

Így a megfelelő hash függvények alábbi működési elveit különböztethetjük meg [6]

Vagyis az üzenet valójában kivonatolt

m' = m || párnázás,

ahol m az eredeti üzenet, a kitöltés pedig az, amivel a hash függvény kitöltötte az utolsó blokkot.

A támadás végrehajtásához ki kell hasítani az üzenetet

m' = m || Bélés || új adatok || Új Padding ,

vagyis új információt tulajdonítani az eredeti üzenetnek.

Így egy üzenet meghosszabbításához meg kell találni az eredeti üzenet hosszát, majd meg kell határozni a Padding értékét. Meg kell határozni a kitöltési formátumot , különben a függvény eltérő eredményeket adna ugyanarra a bemenetre. [6]

Attack Defense

A következő módszerek használhatók az üzenethosszabbító támadások elleni védelemként [7] H' = f(H(m)) H' = H(K || H(K || m)), ahol K a titkos kulcs H' = H(K || Kitöltés || m || K ), ahol a kitöltés egész számú blokkra egészíti ki az üzenetet

Példa

Egy adott waffle-típusú waffle-kézbesítési szolgáltatás egy adott user_id felhasználóhoz az alábbi formátumú kérések feldolgozására valósul meg :

Eredeti üzenet: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo Eredeti aláírás: 6d5f807e23db210bc254a28be2d6759a0f5f5d99

A szerver csak akkor teljesíti ezt a kérést (az 1. felhasználói azonosítóhoz tartozó "Eggo"-hoz hasonló ostyákat ) csak akkor, ha az aláírás érvényes az adott felhasználó számára. Az aláírás egy üzenet-hitelesítési kód, amelyet a támadó számára ismeretlen kulccsal írnak alá . Ez a példa is sebezhető az újrajátszható támadásokkal szemben , amikor ugyanazt a kérést és aláírást másodszor is elküldik.

A támadó módosíthatja a kérést, ebben a példában a kívánt gofri típust "Eggo"-ról "Liege"-re módosítva. Ez megtehető az üzenetformátum rugalmasságával: ha több megbízás van egy sorban, akkor az utolsót részesítjük előnyben. A kriptográfiai biztonság biztosítása ebben a példában teljes mértékben az aláíráson múlik.

Kívánt üzenet: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo&waffle=liege

Egy új kérelem aláírásához a támadónak ismernie kell az eredeti üzenet aláírásához használt kulcsot. Itt azonban használhat kiterjesztő támadást.

Miután kitalálta az üzenet hosszát , a támadó új kérést generál:

Új üzenet: 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

Ez az üzenet tartalmazza az eredeti adatokat és a hozzá adott részt, amelyet a hash függvény korábban generált a munkája során ( Padding ). A példában ez a rész hexadecimálisan van ábrázolva . Ebben az esetben a függvény eggyel, majd nullákkal kiegészíti az üzenetet, és a végére hozzáadja az üzenet hosszát. A támadó tudja, hogy az eredeti üzenet hash-függvényének állapota megegyezik az új üzenet állapotával egészen az utolsó „&”-ig. A hash függvény belső állapotát ezen a ponton az eredeti üzenetből származó hash értéke, azaz az aláírás határozza meg.

A megfelelő állapotban lévő hash algoritmus ezután feldolgozza az új üzenet fennmaradó részét, és új érvényes aláírást hoz létre.

Új aláírás: 0e41270260895979317fff3898ab85668953aaa2

Így a támadó érvényes aláírást szerzett a titkos kulcs ismerete nélkül.

Új kérés érkezésekor a szerver érvényesnek tekinti azt, mivel az aláírás megegyezik azzal, amely akkor jönne létre, ha a titok ismert lenne.

Források

Linkek

  1. 1 2 MD5 hosszabbító támadás újralátogatva – Vũ belső békéje . vudang.com . Az eredetiből archiválva : 2014. október 29.
  2. Flickr API aláírás-hamisítási biztonsági rése . Letöltve: 2015. november 12. Az eredetiből archiválva : 2021. április 09.
  3. Christopher Meyer. Hash Length Extension Attacks . Java Code Geeks . Letöltve: 2015. november 12. Az eredetiből archiválva : 2021. április 14..
  4. Hagyja abba a nem biztonságos kulcsolt kivonatok használatát, használja a HMAC-et . root labs rdist . Letöltve: 2015. november 12. Az eredetiből archiválva : 2021. május 6..
  5. Keccak csapat. A Keccak erősségei - Tervezés és biztonság . - " Az SHA-1-től és az SHA-2-től eltérően a Keccak nem rendelkezik hossz-kiterjesztési gyengeséggel, ezért nincs szüksége a HMAC beágyazott konstrukcióra. Ehelyett a MAC-számítás végrehajtható úgy, hogy egyszerűen hozzáfűzi az üzenetet a kulccsal. ". Letöltve: 2013. január 30. Az eredetiből archiválva : 2017. június 6..
  6. 1 2 C. Meyer cikke "Hash length extension attack" . Letöltve: 2015. november 12. Az eredetiből archiválva : 2021. április 14..
  7. H. Travis. Web 2.0 Cryptology, A Study in Failure. . Letöltve: 2015. november 12. Az eredetiből archiválva : 2015. november 19.