Heslo ( fr. parole - word) - podmíněné slovo [1] nebo libovolná sada znaků, sestávající z písmen, číslic a dalších znaků, určená k potvrzení identity nebo oprávnění. Pokud jsou povolena pouze čísla, pak se této kombinaci někdy říká PIN kód (z anglické zkratky PIN – osobní identifikační číslo).
Hesla se často používají k ochraně informací před neoprávněným přístupem . Ve většině počítačových systémů se k ověření uživatele používá kombinace uživatelské jméno a heslo .
Navzdory původu termínu nemusí být heslo ve skutečnosti slovo. Kombinace, která není slovem, je těžší uhodnout nebo uhodnout, proto jsou preferována tato hesla. Pro další ochranu se někdy používají hesla skládající se z mnoha slov; takové heslo je někdy označováno jako „passphrase“.
Hesla se používala od pradávna. Polybius (? 201 př . n. l. ) popisuje používání hesel ve starém Římě takto:
Způsob, jakým zajišťují bezpečný průjezd v noci, je následující: z deseti manipulů každé větve pěchoty a jezdectva, které jsou umístěny ve spodní části ulice, si velitel vybere, kdo je osvobozen od strážní služby, a každý večer jde na tribunu a dostává od svého hesla - dřevěnou tabulku se slov. Vrátí se ke své jednotce a poté předá s heslem a znamením dalšímu veliteli, který zase předá znamení dalšímu [2] .
Hesla se v počítačích používají od jejich počátků. Například CTSS z MIT , který se objevil v roce 1961 , byl jedním z prvních otevřených systémů. Pomocí příkazu LOGIN si vyžádala heslo uživatele.
Robert Morris navrhl myšlenku ukládání hesel ve formě hash pro operační systém UNIX . Jeho algoritmus, známý jako krypta , používá 12bitovou sůl a váže se k přetvoření s algoritmem DES , čímž se snižuje riziko slovníkové hrubé síly .
Uživatelé pomocí přihlašovacího jména a hesla jsou ověřováni během procesu přihlašování s řízením přístupu k zabezpečeným operačním systémům, mobilním telefonům, aplikacím a online službám. Uživatel počítače má často hesla pro mnoho různých účelů: přihlášení k účtům; přístup k e-mailovým schránkám, osobním účtům na webových stránkách, v databázích; ke čtení zpráv v placených publikacích . Podle studie společnosti NordPass byl v roce 2019 průměrný počet hesel používaných jednou osobou 70–80; za rok toto číslo vzrostlo o 25 % a přiblížilo se 100 hesel [3] .
Studie ukazují [4] , že asi 40 % všech uživatelů volí hesla, která lze snadno automaticky uhodnout [5] . Snadno uhodnutelná hesla (123, admin) jsou považována za slabá a zranitelná. Hesla, která je velmi obtížné nebo téměř nemožné uhodnout, jsou považována za silnější. Některé zdroje doporučují používat hesla generovaná na silných hashích jako MD5 , SHA-1 z běžných pseudonáhodných sekvencí podle algoritmů jako [6] [7] [8] .
Na konci roku 2017 zveřejnila společnost SplashData Corporation 100 nejnebezpečnějších hesel roku. První místo již čtvrtým rokem zaujímá heslo - 123456. Používá ho asi 17 % uživatelů internetu. [9]
V roce 2013 Google zveřejnil seznam běžně používaných kategorií hesel, které jsou považovány za příliš slabé kvůli tomu, že je lze snadno uhodnout (zejména po prostudování profilu člověka na sociální síti): [10]
Na operačních systémech podobných Unixu lze použít utilitu pwgen . Například
pwgen 10 1vygeneruje 1 heslo o délce 10 znaků.
Mnoho druhů opakovaně použitelných hesel může být kompromitováno a přispělo k vývoji dalších metod. Některé z nich jsou dostupné uživatelům, kteří hledají bezpečnější alternativu.
Heslo se přenáší jako prostý text. V tomto případě jej lze zachytit pomocí jednoduchých nástrojů pro monitorování síťového provozu .
Riziko odcizení hesel přes internet lze mimo jiné zmírnit použitím funkcí Transport Layer Security TLS , dříve známého jako SSL, které jsou součástí mnoha internetových prohlížečů.
Heslo se na server přenáší již ve formě hashe (například při odeslání formuláře na webové stránce je heslo převedeno na md5 hash pomocí JavaScriptu) a na serveru je přijatý hash porovnán s hash uložený v databázi. Tento způsob přenosu hesla snižuje riziko získání hesla pomocí snifferu .
Mezi běžné metody pro zvýšení softwarového zabezpečení systémů chráněných heslem patří:
Prolomení hesla je jedním z běžných typů útoků na informační systémy, které používají ověřování pomocí hesla nebo uživatelského jména a hesla . Podstata útoku se redukuje na to, že se vetřelec zmocní hesla uživatele, který má právo vstoupit do systému.
Atraktivitou útoku pro útočníka je, že pokud úspěšně získá heslo, má zaručeno, že získá všechna práva uživatele, jehož účet byl kompromitován, a navíc přihlášení pod existujícím účtem obvykle způsobí menší podezření mezi systémem . správci .
Technicky lze útok realizovat dvěma způsoby: vícenásobnými pokusy o přímou autentizaci v systému nebo analýzou hash hesel získaných jiným způsobem, například zachycením provozu.
V tomto případě lze použít následující přístupy:
K provedení útoku bylo vyvinuto mnoho nástrojů, například John the Ripper .
Na základě přístupů k provádění útoku je možné formulovat kritéria pro sílu hesla k němu.
Mezi oblíbená doporučení pro sestavení hesla patří používání kombinace slov s čísly a speciálními znaky (#, $, * atd.), používání vzácných nebo neexistujících slov a dodržování minimální délky.
Metody ochrany lze rozdělit do dvou kategorií: zajištění odolnosti proti prolomení samotného hesla a zabránění provedení útoku. Prvního cíle lze dosáhnout kontrolou nastaveného hesla podle kritérií složitosti. Pro takové ověření existují automatizovaná řešení, obvykle fungující ve spojení s nástroji pro změnu hesla, jako je cracklib [11] .
Druhý cíl zahrnuje zabránění zachycení hashe přenášeného hesla a ochranu proti vícenásobným pokusům o autentizaci v systému. K zamezení odposlechu lze použít zabezpečené (šifrované) komunikační kanály. Aby útočníkovi ztížili výběr vícenásobnou autentizací, obvykle stanoví limit na počet pokusů za jednotku času (příklad nástroje: fail2ban [12] ), nebo povolí přístup pouze z důvěryhodných adres. .
Komplexní řešení centralizované autentizace, jako je Red Hat Directory Server [13] nebo Active Directory [14], již zahrnují prostředky k provádění těchto úkolů.