V češtině označována i jako Hašovací funkce je speciální druh jednosměrného šifrovacího algoritmu. Hashovací funkce zpracovávájí řetězce/soubory a vytvářejí z nich tzv. otisk (Hash). Hashovací funkce se využívají ve spoustě odvětvích informačních technologii (ukládání hesel, digitální podpis, kryptoměny...). [1]

Základní vlastnosti hashovacích funkcí

Každá hashovací funcke by měla splňovat následující vlastnosti [1; 2]

  1. Hashovací funkce vždy pro stejný vstup vygeneruje stejný výstupní Hash
  2. Hash má vždy stejnou délku bez ohledu na to, jak dlouhý byl vstupní řetězec/data
  3. I drobná změna ve vstupním řetezci/souboru vyvolá velkou změnu ve výsledném otisku
  4. Z hashe není možné zjistit vstupní data - jednosměrnost
  5. Nemělo by být možné najít stejný hash pro různá vstupní data

Ukládání hesel pomocí hashovacích funkcí

Při ukládání hesel do databáze by bylo nerozumné ukládat je v podobě běžného snadno šitelného textu. Takto uložená hesla by byla velmi náchylná na odhalení a stejně tak by k nim měli přístup i lidé, kteří by se o databázi starali. Proto se k ukládání hesel využívá hashovacích funkcí.

Hesla jsou v databázích ukládána jako otisk z vhodně zvolené hashovací funkce. Není tedy možné snadno odhalit uložené heslo. Hesla jsou ukládána například takto: 79c2b46ce2594ecbcb5b73e9

Standardním útokem na takto ukládána hesla je využití rainbow table (v češtině duhová tabulka), což je vlastně obdoba slovníkového útoku. Místo zkoušení standardních hesel nebo jejich variací, jsou porovnávány jejich otisky (za předpokladu, že útočník ví, která hashovací funkce byla použita)

Pro tyto případy e další vrstvou zabezpečení využití kryptografické soli. Ke každému heslu se před hashováním přidá ještě unikátní řetězec (například přihlašovací jméno, datum registrace a jiné). Otisky takto upravených hesel pak neodpovídájí položkám v duhové tabulce. Útočník by musel mít znalost o tom, jaká kryptografická sůl se v konkrétní databázi používá. [1]

Nejznámější hashovací funkce

  1. MD5 - zkratka anglického Message-diggest algorythm. hashovací funkce, která vytváří otisky o pevné délce 128bitů. Funkce MD5 se používá pro kontrolu konzistence zasílaných souborů. V dnešní době není považován za bezpečný (jelikož je velmi snadné vytvořit různý soubor se s tejným otiskem), i přes to je možné se s tímto algoritmem potkat v různých aplikacích. [2]
  2. SHA1 - z anglického secure hash algorithm generuje otisky o velikosti 160 bitů. V dnešní době je považován za nevhodnou z pohledu bezpečnosti. [3]
  3. SHA2 - tento typ hashovací funcke existuje v několika variantách podle toho jak dlouhé generuje otisky (224, 256, 384 nebo 512bitů). SHA-2 o velikosti hashe 256bitů je nejšastěji používanou hashovací funkci (často je označován i jako SHA-256). Otisk je generován jako hexadecimální číslo o 64 znacích. [3]

Videa

https://www.youtube.com/watch?v=b4b8ktEV4Bg

https://www.youtube.com/watch?v=8ZtInClXe1Q

https://www.youtube.com/watch?v=gTfNtop9vzM

https://www.youtube.com/watch?v=DMtFhACPnTY