Hashování hesel je základní aspekt zabezpečení hesel, který transformuje způsob, jakým jsou hesla ukládána, z čistého textu na šifrované hashe. Tento článek zkoumá vývoj hashování hesel, od raných algoritmů jako MD5 a SHA-1 po bezpečnější metody doporučované dnes, a uzavírá důležitostí používání náhodných hesel pro každou webovou stránku.
Než se ponoříme hlouběji do historie a vývoje hashování hesel, je důležité pochopit, co hashování je. Hashovací funkce, metody, které provádějí hashování, jsou navrženy tak, aby vzaly jakýkoli řetězec dat, neboli "vstup", a vytvořily pevně velký řetězec bajtů, obvykle známý jako "hash". Tento proces má několik klíčových charakteristik, které ho činí zvláště užitečným pro bezpečnostní účely.
Jedním rozhodujícím rysem hashovacích funkcí je jejich citlivost na změny vstupu. Toto je známé jako lavinový efekt. I drobná změna vstupu—jako například změna jediného znaku v hesle—vyprodukuje zcela odlišný hash. Například hashe pro řetězce "password1" a "password2" budou vypadat zcela odlišně, i když jediný rozdíl mezi těmito dvěma vstupy je poslední znak. Tato charakteristika je životně důležitá pro udržení integrity dat, jelikož činí takřka nemožným odvodit původní vstup pouze z hashe.
Dále jsou hashovací funkce jednosměrné funkce. To znamená, že jsou navrženy tak, aby bylo výpočetně nemožné je obrátit. Výstup (hash) si neuchovává žádné konkrétní detaily o vstupu, které by umožnily někomu rekonstruovat původní data bez mimořádného výpočetního úsilí. Jediný schůdný způsob "obrácení" hashe je metodou zvanou brute-forcing, kde je každý možný vstupní oblek znovu hashován, dokud není nalezen odpovídající hash.
V raných dnech digitální bezpečnosti byly MD5 (Message-Digest Algorithm 5) a SHA-1 (Secure Hash Algorithm 1) široce používány pro hashování hesel. Vyvinuty během raných 90. let, tyto algoritmy převáděly hesla z čistého textu na hashe o pevné velikosti. Navzdory jejich počáteční bezpečnosti se brzy objevily zranitelnosti jako náchylnost k útokům na kolizi, což je činilo zastaralými pro bezpečné aplikace.
Zatímco hashovací funkce jsou navrženy tak, aby byly rychlé a efektivní, tato vlastnost může být k újmě, pokud jde o zabezpečení hesel, protože usnadňuje útoky brute-force. Funkce odvození klíče na základě hesla (PBKDF), jako PBKDF2, bcrypt a scrypt, jsou navrženy tak, aby tyto útoky odrážely, začleněním soli (proti útokům typu "rainbow table") a používáním techniky známé jako natahování klíče. Natahování klíče záměrně zpomaluje proces hashování, což může významně odradit pokusy o neoprávněný přístup.
Jak se kybernetická bezpečnost vyvíjela, nedostatečnosti raných hashovacích algoritmů jako MD5 a SHA-1 se staly zřejmými, což vedlo k vývoji algoritmů speciálně navržených pro bezpečnost hesel, jako bcrypt, scrypt a Argon2, nebo takzvané Funkce odvození klíče na základě hesla (PBKDF).
Podle OWASP jsou doporučené algoritmy pro hashování hesel bcrypt, scrypt a Argon2. Tyto algoritmy jsou preferovány pro jejich robustní obranu proti útokům brute-force a jejich vestavěné mechanizmy pro sůl a natahování klíče.
bcrypt je funkce hashování hesel odvozená od šifry Blowfish. Zahrnuje sůl, aby chránil proti útokům typu "rainbow table", a používá nákladový parametr k zvýšení doby výpočtu (a tedy obtížnosti) generování hashe. Tento nákladový faktor je nastavitelný, což umožňuje, aby byl algoritmus rozšiřitelný s vylepšeními hardwaru.
Klíčové parametry:
OWASP doporučuje použití pracovního faktoru 10 nebo více s limitem hesla 72 bajtů.
scrypt je navržen, aby byl náročný na paměť i čas, čímž odolává útokům na velké měřítko s přizpůsobeným hardwarem. Může být nakonfigurován tak, aby vyžadoval určité množství paměti, a rovněž zahrnuje sůl a počet iterací, podobně jako PBKDF2.
Klíčové parametry:
OWASP doporučuje použití minimálního parametru nákladů CPU/paměti (2^17), minimální velikosti bloku 8 (1024 bajtů) a paralelizační parametr 1.
Argon2, vítěz soutěže Password Hashing Competition v roce 2015, má dvě varianty: Argon2d a Argon2i. Argon2d je optimalizovaný pro prostředí, kde je nízké riziko útoků postranního kanálu, zatímco Argon2i je optimalizován pro odolání proti útokům postranního kanálu. Rovněž zahrnuje klíčové vlastnosti z bcrypt a scrypt.
Klíčové parametry:
OWASP doporučuje použití Argon2id s minimální konfigurací 19 MiB paměti, počtem iterací 2 a paralelismem 1 stupeň.
Vzhledem k neustále se měnícímu charakteru bezpečnostních hrozeb a protiopatření je klíčové mít aktuální informace o nejnovějších postupech v oblasti zabezpečení hesel. Pro nejaktuálnější a nejkomplexnější doporučení prosím odkazujte na OWASP Password Storage Cheat Sheet na oficiální stránce OWASP. Ujistěte se, že pravidelně revidujete tyto pokyny, abyste se drželi nejlepších postupů v oblasti kybernetické bezpečnosti.
Zatímco používání moderních hashovacích algoritmů je klíčové, způsob, jakým jsou hesla vytvářena a spravována, také hraje zásadní roli při udržování bezpečnosti. Náhodná hesla pro každou webovou stránku jsou nezbytná z několika důvodů:
Od MD5 a SHA-1 po moderní algoritmy jako bcrypt a Argon2, hashování hesel prošlo významnými transformacemi. Vzhledem k tomu, že kybernetické hrozby se nadále vyvíjejí, přijetí moderních hashovacích algoritmů a zajištění používání náhodných, jedinečných hesel pro každou webovou stránku jsou klíčové praktiky pro ochranu online bezpečnosti. Tyto strategie nejenže předejdou kompromitování jednotlivých účtů, ale také posílí celkovou bezpečnost proti stále sofistikovanějším útokům.