Sůl (kryptografie)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Kryptografická sůl je v šifrování několik náhodných bitů, které slouží jako doplňující vstup při použití jednosměrné funkce, kde umožňuje, aby její výstup měl mnoho možných variant. Používá se typicky pro ukládání zakódovaného tvaru hesel, protože díky této „soli“ bude mít stejné heslo různý zakódovaný tvar a nebude z něj možné získat pomocí slovníkového útoku zpětně původní heslo a nelze použít ani tzv. duhovou tabulku, protože by byla moc velká.

Popis[editovat | editovat zdroj]

Jednosměrná funkce k sobě nemá inverzní funkci, takže zakódujeme-li pomocí ní třeba heslo, získáme číslo, ze kterého nelze původní heslo snadno zpětně odvodit. Typickou jednosměrnou funkcí je kryptografická hašovací funkce (např. MD5, SHA). Když je potřeba uživatele počítače autentizovat, je jím zadané heslo zakódováno stejným algoritmem (stejnou hašovací funkcí) a výsledek je porovnán s uloženým tvarem. V případě shody je zadané heslo správné.

Pokud by heslo bylo v počítači uloženo jako prostý text, může ho kdokoliv s administrátorskými právy snadno přečíst a zneužít. Pokud je heslo uloženo jako hash, není přímo čitelné, ale pomocí slovníkového útoku, případně pomocí duhové tabulky lze opět poměrně snadno získat původní heslo i přes to, že pro jeho zakódování byla použita jednosměrná funkce.

Sůl umožňuje vytvořit situaci, kdy jeden vstup (např. zmíněné heslo) může mít při použití stejné jednosměrné (hašovací) funkce mnoho různých výstupů (v podstatě tolik, kolik různých kombinací soli můžeme získat). Protože je sůl volena náhodně, budou při opakovaném použití stejné jednosměrné funkce vznikat různé zakódované tvary. Zvolí-li tedy dva uživatelé stejné heslo, bude zakódovaný tvar různý (s pravděpodobností náhodné volby stejné hodnoty soli). Díky tomu nebude možné použít duhovou tabulku, protože by byla díky soli příliš velká (každé heslo by v ní muselo mít tolik zakódovaných tvarů, kolik je možností soli).

Pokud je sůl do zakódovaného tvaru uložena v otevřené podobě, je stále možné použít slovníkový útok (tato možnost je rutinně používána, například v unixové funkci crypt(3)). Proto je někdy sůl ze zakódovaného tvaru odstraněna, takže při zadání hesla je nutné vyzkoušet všechny možné kombinace soli. To může být časově náročné, avšak případný útočník by musel použít stejnou metodu, což by ho neúměrně zdrželo, takže v tomto případě sůl slovníkový útok prakticky znemožňuje (činí ho velmi obtížným podle počtu možných kombinací soli).

Použití[editovat | editovat zdroj]

Sůl je se vstupem typicky kombinována pomocí odvozovací funkce pro klíče (anglicky key derivation function). Na výsledek je aplikována kryptografická hašovací funkce (např. MD5, SHA). Použitá hodnota soli může být poté k zakódovanému tvaru přidána, avšak může být též zahozena (viz výše).

Související články[editovat | editovat zdroj]