Heslo
Obsah boxu
Šablona:Infobox - Obecné Šablona:Různé významy
Heslo (anglicky password) je tajný řetězec znaků nebo slov používaný k ověření identity uživatele nebo k získání přístupu k chráněnému zdroji. Spolu s uživatelským jménem tvoří nejběžnější formu autentizace v digitálním světě, která se používá pro přihlašování k počítačům, webovým stránkám, aplikacím a dalším systémům. Cílem hesla je zajistit, aby k datům nebo službám měl přístup pouze oprávněný uživatel.
Hesla jsou základním kamenem počítačové bezpečnosti, ale zároveň představují její nejslabší článek, protože jejich účinnost závisí na tom, jak jsou vytvářena, uchovávána a spravována uživateli i poskytovateli služeb.
📜 Historie
Koncept tajného slova pro ověření identity je starý jako lidstvo samo. V armádách se po staletí používala "hesla" (watchwords) pro rozlišení přítele od nepřítele, například při vstupu do vojenského tábora.
V kontextu výpočetní techniky se hesla objevila v 60. letech 20. století. Za jeden z prvních systémů, který je implementoval, je považován Compatible Time-Sharing System (CTSS) vyvinutý na Massachusettském technologickém institutu (MIT) v roce 1961. Vzhledem k tomu, že systém umožňoval více uživatelům sdílet jeden sálový počítač současně, bylo nutné oddělit jejich soubory a zabránit neoprávněnému přístupu. Každý uživatel tak dostal své uživatelské jméno a heslo.
Zpočátku byla hesla ukládána v otevřeném textu (plaintext), což znamenalo, že kdokoliv s přístupem k systémovému souboru hesel si je mohl přečíst. To se ukázalo jako velmi nebezpečné. V 70. letech, s vývojem operačního systému Unix, přišla klíčová inovace: hashování hesel. Místo samotného hesla se začal ukládat pouze jeho kryptografický otisk (hash). Tento princip se s různými vylepšeními používá dodnes.
⚙️ Princip fungování
Moderní a bezpečné systémy nikdy neukládají hesla v jejich původní, čitelné podobě. Místo toho využívají jednosměrné kryptografické funkce.
Hashování
Když si uživatel vytvoří heslo, systém na něj aplikuje kryptografickou hašovací funkci (např. SHA-256 nebo Argon2). Výsledkem je řetězec znaků pevné délky, tzv. hash. Tento hash je uložen v databázi.
Při každém dalším přihlášení uživatel zadá své heslo, systém na něj znovu aplikuje stejnou hashovací funkci a výsledný hash porovná s tím, který je uložen v databázi. Pokud se hashe shodují, přístup je povolen. Klíčovou vlastností hashovacích funkcí je, že jsou jednosměrné – z hashe nelze (v praktickém čase) zpětně odvodit původní heslo.
Salting
Aby se zvýšila odolnost proti útokům pomocí tzv. rainbow tables (předvypočítaných hashů pro běžná hesla), používá se technika zvaná salting (solení). Před hashováním se k heslu přidá náhodný řetězec znaků, tzv. sůl (salt). Tato sůl je pro každého uživatele unikátní a ukládá se do databáze spolu s hashem. Díky tomu budou mít dva uživatelé se stejným heslem zcela odlišné hashe, což výrazně ztěžuje hromadné prolomení hesel v případě úniku databáze.
💪 Tvorba silného hesla
Síla hesla je dána jeho odolností proti pokusům o uhodnutí nebo prolomení. Obecně platí, že čím je heslo delší a komplexnější, tím je bezpečnější.
- Délka: Délka je nejdůležitějším faktorem. Moderní doporučení uvádějí minimálně 12–16 znaků. Každý další znak exponenciálně zvyšuje počet možných kombinací a tím i čas potřebný k prolomení.
- Komplexnost: Heslo by mělo obsahovat kombinaci velkých a malých písmen, číslic a speciálních znaků (např. `!@#$%^&*()`).
- Jedinečnost: Každá služba by měla mít své vlastní, unikátní heslo. Používání stejného hesla na více místech je extrémně rizikové – pokud útočník získá heslo z jedné služby, zkusí ho i na ostatních (útok zvaný credential stuffing).
- Nepředvídatelnost: Heslo by nemělo obsahovat snadno uhodnutelné informace, jako jsou jména, data narození, názvy domácích mazlíčků, slova ze slovníku nebo jednoduché sekvence (např. "123456", "password", "qwerty").
Heslové fráze (Passphrases)
Alternativou ke komplexním, ale těžko zapamatovatelným heslům jsou heslové fráze. Jedná se o sekvenci několika náhodných slov (např. "modryTraktorJedeRychlePole"). Taková fráze je velmi dlouhá, a tedy i velmi bezpečná, ale pro člověka je mnohem snazší si ji zapamatovat než náhodný řetězec typu `Tr0ub4d&r!`.
🛡️ Bezpečnost a správa hesel
Správná správa hesel je klíčová pro ochranu digitální identity.
Správci hesel
Správci hesel jsou aplikace navržené k bezpečnému ukládání a správě velkého množství hesel. Uživatel si musí pamatovat pouze jedno silné hlavní heslo k odemčení trezoru, ve kterém jsou uložena všechna ostatní hesla. Správci hesel také umí generovat velmi silná a náhodná hesla pro nové služby a automaticky je vyplňovat do přihlašovacích formulářů. Mezi známé správce patří například Bitwarden, 1Password nebo KeePass.
Dvoufaktorová autentizace (2FA)
Dvoufaktorová autentizace (2FA) nebo vícefaktorová autentizace (MFA) přidává další vrstvu zabezpečení nad samotné heslo. I když útočník získá heslo, pro přihlášení potřebuje ještě druhý faktor, kterým může být:
- **Něco, co máte:** Kód z mobilní aplikace (např. Google Authenticator), SMS kód, bezpečnostní klíč (např. YubiKey).
- **Něco, co jste:** Biometrický údaj (otisk prstu, sken obličeje).
Aktivace 2FA všude, kde je to možné, je jedním z nejdůležitějších kroků pro zabezpečení online účtů.
💥 Typy útoků na hesla
Útočníci používají různé metody k získání nebo prolomení hesel.
- Útok hrubou silou (Brute-force attack): Automatizované zkoušení všech možných kombinací znaků, dokud není nalezena správná shoda. U dlouhých a komplexních hesel je tento útok časově neproveditelný.
- Slovníkový útok (Dictionary attack): Zkoušení slov ze slovníku, jejich kombinací a běžných variací (např. přidání čísel na konec).
- Phishing: Podvodná technika, kdy se útočník vydává za důvěryhodnou instituci (např. banku) a snaží se z uživatele vylákat jeho přihlašovací údaje prostřednictvím falešných webových stránek nebo e-mailů.
- Sociální inženýrství: Manipulace s lidmi s cílem získat citlivé informace, včetně hesel.
- Keylogger: Malware, který zaznamenává stisky kláves na napadeném zařízení a odesílá je útočníkovi.
- Útok pomocí rainbow tables: Využívá předvypočítané tabulky hashů pro běžná hesla k rychlému nalezení původního hesla z uniklého hashe. Proti tomuto útoku je účinný "salting".
- Credential stuffing: Automatizované zkoušení uniklých kombinací uživatelských jmen a hesel z jedné služby na mnoha dalších službách.
🔮 Budoucnost hesel
Hesla jsou považována za zastaralou a problematickou technologii. Budoucnost autentizace směřuje k bezpečnějším a uživatelsky přívětivějším metodám, které hesla zcela nahradí.
Biometrie
Biometrická autentizace využívá unikátní fyziologické znaky člověka, jako jsou otisk prstu, sken obličeje (Face ID), sken oční duhovky nebo hlas. Je rychlá a pohodlná, ale má i svá rizika – biometrické údaje nelze "změnit" jako heslo v případě jejich kompromitace.
Passkeys
Passkeys (přístupové klíče) jsou moderním standardem vyvinutým aliancí FIDO Alliance za podpory firem jako Apple, Google a Microsoft. Jsou založeny na kryptografii s veřejným klíčem. Při registraci se na zařízení uživatele (např. telefonu) vygeneruje pár klíčů: soukromý a veřejný. Veřejný klíč se odešle na server služby, zatímco soukromý klíč nikdy neopustí zařízení uživatele.
Pro přihlášení stačí, aby uživatel odemkl své zařízení (např. otiskem prstu) a to automaticky provede kryptografický podpis, který ověří jeho identitu. Passkeys jsou odolné proti phishingu a eliminují potřebu pamatovat si hesla. Očekává se, že v následujících letech postupně nahradí tradiční hesla.
🧑🏫 Pro laiky
Představte si, že vaše dveře do bytu mají zámek. Heslo je jako klíč k tomuto zámku. Jen ten, kdo má správný klíč, se dostane dovnitř. V digitálním světě je to stejné – heslo je klíč k vašemu e-mailu, bankovnictví nebo sociálním sítím.
- Proč musí být heslo složité? Kdybyste měli jednoduchý klíč, který by pasoval do mnoha zámků, zloděj by ho snadno zkopíroval. Stejně tak jednoduché heslo (jako "123456") zloděj na internetu snadno "uhodne" pomocí počítačového programu. Dlouhé a složité heslo je jako unikátní bezpečnostní klíč, který je velmi těžké napodobit.
- Proč nemít stejný klíč všude? Kdybyste měli jeden klíč od bytu, auta i kanceláře a ztratili byste ho, zloděj by se dostal všude. Podobně, když použijete stejné heslo pro e-mail i pro nějakou méně důležitou stránku a ta stránka bude napadena, útočníci získají váš "univerzální klíč" a zkusí se s ním dostat i do vašeho e-mailu a bankovnictví.
- Jak si počítač pamatuje heslo? Počítač si nepamatuje vaše heslo přímo. Představte si mlýnek na maso. Když do něj vložíte kus masa (vaše heslo), vyleze mleté maso (tzv. "hash"). Z mletého masa už nikdy zpátky nesložíte původní kus. Systém si uloží jen to "mleté maso". Když se přihlašujete, vezme vaše zadané heslo, znovu ho "umele" a porovná, jestli je výsledek stejný jako ten uložený. Je to bezpečný způsob, jak ověřit, že znáte správné heslo, aniž by ho systém musel znát v čitelné podobě.