Konstrukce hash funkcí

  • Zpracování po částech (bloky stejné délky)
  • Nutnost zarovnání vstupu na celistvý počet bloků (padding)

Doplnění / zarovnání

  • Zarovnání musí být bezkolizní, musí umožňovat jednoznačné odejmutí
    • Doplnění bitem 1 a poté potřebným počtem bitů 0
    • Demgard-Merklovo zesílení - na konci obsahuje ještě 64 bitů s informací o délce původní zprávy

Příklad špatného zarovnání zprávy

Mějme zprávu

Byla původní zpráva
nebo
nebo
nebo
nebo

?

Všechny by vedly ke kolizi a měly stejný hash.

Damgard-Merklova konstrukce

  • Damgard-Merklovo zesílení

  • Doplnění hashe

  • Zpráva je doplněna bitem a poté bity tak, aby do celistvého násobku 512 bitů zbývalo ještě 64 bitů

  • Posledních 64b je vyplněno hodnotou počtu bitů původní zprávy

  • Funkce zpracovává aktuální blok zprávy a výsledkem je tzv. kontext

  • Ten poté tvoří vstup v dalším kroku

../Attachments/Pasted image 20230610230316.png

  • Iterativní konstrukce
  • Zahashováním posledního boku dostáváme , z něhož bereme buď část nebo celou délku jako výslednou hash

Davies-Meyerova konstrukce

  • Zesiluje vlastnost jednosměrnosti ještě XORem vzoru před výstupem
  • Výstupem je tedy navíc maskován vstupem

Vytvořeno: 7. 8. 2024, 13:25
Poslední aktualizace: 7. 8. 2024, 13:25