Salt (Hashing): Ochrana hesel před útoky

Když si vytvoříte účet na webové stránce, většina lidí si představí, že se jejich heslo někam „uloží“ a je to. Ale jak přesně se hesla ukládají? A co se stane, když databáze unikne? Právě zde vstupuje do hry pojem „salt“ – jednoduchý, ale klíčový bezpečnostní prvek při hashování hesel.


Co je hashování?

Než si vysvětlíme, co je salt, je důležité pochopit hashování. Hashování je proces, který vezme vstupní data (například heslo) a pomocí matematického algoritmu je převede na pevně daný řetězec znaků – tzv. hash. Tento výstup je (v ideálním případě) jedinečný pro každou kombinaci vstupních dat.

Např.:
Heslo heslo123 může být hashováno funkcí SHA-256 na něco jako:
ef92b778bafe771e89245b89ecbcfbd3a0b40bcd8e5d76e2c8f3d0a3c9e37e9b

Problém? Pokud dva lidé použijí stejné heslo, výsledný hash bude identický.


Proč je to problém?

Útočníci mohou použít tzv. rainbow tables – databáze předpočítaných hashů pro nejčastější hesla. Pokud útočník získá databázi hashovaných hesel, může je porovnat s těmito tabulkami a rychle zjistit, jaká hesla odpovídají daným hashům. Pokud je heslo jednoduché jako „123456“, je jeho hash snadno odhadnutelný.


Jak funguje salt

Salt je náhodný řetězec, který se přidá k heslu ještě před jeho hashováním. Cílem je zajistit, že i když dva uživatelé použijí stejné heslo, jejich výsledné hashe budou odlišné.

Příklad:

  • Heslo: tajneheslo

  • Salt: A9x!3z

  • Kombinace pro hashování: tajnehesloA9x!3z

Výsledný hash bude unikátní, protože každý uživatel má jiný salt.


Výhody použití saltu

  1. Zabraňuje použití rainbow tabulek
    Salt znemožňuje efektivní použití předpočítaných tabulek hashů, protože útočník by musel pro každou možnou hodnotu hesla kombinovat zvlášť všechny možné salty.

  2. Zajišťuje unikátní výstupy
    Dva stejné vstupy s různými salty dají různé výsledky, což znemožňuje odhalit, že více uživatelů používá stejné heslo.

  3. Zvyšuje výpočetní náročnost útoků
    Útočník musí pro každé heslo a každý salt zvlášť vypočítat hash, což značně zpomaluje proces útoku hrubou silou.


Praktické použití v moderních systémech

Dnešní bezpečnostní standardy doporučují používat nejen salt, ale i tzv. key stretching – proces, kdy se hashovací funkce opakuje několikrát (např. pomocí algoritmů jako bcrypt, scrypt nebo Argon2). Tyto metody jsou odolnější vůči útokům, protože výrazně zvyšují čas potřebný na výpočet každého hashe.

Například algoritmus bcrypt automaticky používá náhodný salt a opakuje hashování v několika kolech. Výsledkem je mnohem vyšší odolnost proti prolomení.

Pokud mi chcete napsat rychlou zprávu, využije, prosím, níže uvedený
kontaktní formulář. Děkuji.

Další Kontaktní údaje