Špatná paměť a bezpečná hesla

Článek popisuje problematiku hesel, hashů, ale i jejich možné prolomení. Dotýká se tak přímo problematiky, kterou se v systému BOINC zabývá hned několik projektů: HashClash, SHA colision search Graz a TMRL DRTG.

Se svolením redakce i autora byl článek přetištěn ze serveru živě.cz.

Hesla, tokeny a biometrika

Klasická hesla nás na toulkách počítačovým i okolním světem provázejí prakticky na každém kroku. Cestičku napříč různými bezpečnostními mechanismy mají pevně vyšlapanou již dlouhou dobu, lhostejno, zda se jedná o přístupy do operačních systémů, rozličné PIN kódy nebo další formy. A stejně jako v kterémkoli jiném odvětví počítačové bezpečnosti, také v případě hesel jsou proti sobě postaveny dva základní tábory: na straně jedné návrháři co možná nejbezpečnějších implementací, na straně druhé pak ti, kdo se hesla pokoušejí různými způsoby prolomit.

Hesla tak představují jeden z autentizačních prostředků, a díky tomu se staví po bok dalších dvou forem, tokenů a biometrik. Ve srovnání s nimi přinášejí řadu výhod i handicapů, ty nejzákladnější z nich shrnuje následující tabulka:

 

 

 

Způsob autentizace Výhody Nevýhody
Hesla nejrozšířenější, uživatelé jsou na ně zvyklí, snadná implementace komplikovaná správa, lze je zapomenout, odpozorovat
Tokeny nelze je odpozorovat ani zapomenout ve smyslu hesel dají se ztratit, nebezpečí krádeže, možnost zapůjčení
Biometriky pevně svázány s uživatelem, nelze je zapomenout, ztratit, odpozorovat častá nedůvěra uživatelů, vyšší realizační náklady

 

 

Prvně uvedená výhoda v podobě největší rozšířenosti hesel je spíše přidruženou vlastností, nicméně jednoznačně se zasloužila o to, že uživatelé s hesly pracují naprosto bezprostředně, nemají k nim „vrozenou“ nedůvěru. Právě tento bod je v poměrně silném kontrastu s některými moderními biometrickými technologiemi, které občas narážejí na trable s uživatelským přijetím.

Hesla se obecně vyznačují poměrně snadnou implementací, nicméně občas následuje komplikovanější správa. S tím do určité míry souvisí také neposlušnost uživatelů, kteří hesla často nepovažují za něco tajného, a tedy pro ně není problém se o ně podělit se svými kolegy, spolupracovníky nebo kamarády. A i když hesla nevyzradí takto přímo, stále je lze relativně jednoduše odpozorovat, případně zapomenout.

Vícefaktorové autentizace

Je dobré si uvědomit, že tři autentizační techniky uvedené v tabulce nemusejí vždy značit zcela samostatné a od ostatních odloučené metody. Ano, klasická hesla jsou sice používána v počítačovém světě nejčastěji samostatně, tokeny například při docházce bez ochrany PIN kódem a identifikace prostřednictvím biometrik také nevyžaduje žádnou další kombinaci.

V praxi ale velice často potkáme různé kombinace autentizačních technik, které na straně jedné výrazně zvyšují bezpečnost, na straně druhé mohou komplikovat realizaci i správu a zvýšit náklady. Jedná se například o tyto dvou- až třífaktorové autentizace:

  • Heslo-token – ve světě, mimo klasické počítače, se s touto kombinací setkáváme například při výběru z bankomatů, kdy jsou data z fyzické karty doplněna o náš vstup v podobě PIN kódu. Do počítače si pak lze pořídit nespočet rozšíření, která zvyšují bezpečnost přihlášení, uzamykání plochy apod. heslem chráněnou kartou, jež se připojuje přes USB. Dokážou posloužit také klasické USB flash klíčenky v kombinaci se specializovaným softwarem.
  • Heslo-biometriky – biometrické čtečky mohou kromě šablony požadovaného „lidského otisku“ porovnávat také heslo, nejčastěji v podobě přístupového PIN kódu. V řadě případů se navíc přistupuje k tomu, že heslo má vyšší váhu než otisk (který nemusí být možné poskytnout) a slouží k přihlášení i při neúspěšném pokusu o biometrickou identifikaci nebo verifikaci.
  • Biometriky-token – klasická kombinace, kdy jsou údaje o uživatelovi a případně i jeho otisku uloženy na kartě, ve fázi verifikace ji pak přiloží ke čtecímu zařízení a poskytne biometrický vzorek.
  • Heslo-biometriky-token – na první pohled nejbezpečnější třífaktorová autentizace, kdy uživatel u čtecího biometrického zařízení přiloží jednak vlastní kartu, zadá přístupový PIN kód a navrch ještě poskytne biometrický vzorek.

Když útočníci na hesla útočí

Již z uvedených kombinací z praxe je vidět, že bezpečnost hesel a jejich bezpečné uchovávání patří mezi základní kroky zabezpečení dat, přístupu do systémů apod. Vždy je přitom důležité nalézt kompromis mezi bezpečností hesel a schopnostmi lidské paměti zapamatovat si je. Na jedné straně tak stojí různé poučky, generátory hesel, jejich softwaroví správci a další nástroje, které handicap minimalizují, z druhé strany zase mají útočníci nespočet nástrojů a technik, jimiž se mohou dopídit slabého hesla a prolomit jeho ochranu. Pomůcky pro prolamování (nebo moderněji a více poeticky „rekonstrukci“) hesel nejčastěji implementují dva základní postupy:

  • Útok hrubou silou (brute-force) – při tomto pokusu o prolomení ochrany heslem jsou automaticky zkoušeny všechny možné kombinace znaků z vybrané abecedy (písmena, číslice, zvláštní symboly apod.), je přitom možné definovat ohraničení délky testovaných hesel. Zvláštní variantou jsou takzvané masky, kdy útočník zná určité části hesla na vybraných pozicích, takže testuje pouze zbývající.
  • Slovníkový útok (dictionary) – snaží se eliminovat největší slabinu útoku hrubou silou, jíž je časová náročnost. Zkouší tak slova z předdefinovaného slovníku, dokáže s nimi provádět také některé základní úkony, jako například jednoduché permutace, doplnění číslovek, záměnu verzálek a mínusek apod.

Útok hrubou silou má velkou výhodu v tom, že při dostatečném času a použití kompletní abecedy vždy povede k úspěšnému výsledku. Zde ale nastává problém s výpočetní složitostí, jelikož už poměrně krátká hesla (kolem 8 až 10 znaků) při „rozumné“ abecedě (písmena, číslice a několik vybraných speciálních symbolů) odolávají rychlému prolomení. Útočník tak ideálně musí znát délku hesla a zhruba alespoň použité znaky. Klíčem by se v určitých případech mohlo stát také distribuované počítání, kdy by si dostatečný počet počítačů rozdělil prohledávaný prostor všech možných hesel.

Útoky v praxi na rozličné aplikace si můžete vyzkoušet například díky aplikacím společnosti Elcomsoft

Slovníkový útok má tedy již zmíněnou největší výhodu v rychlosti, kdy lze slabá hesla objevit během několika málo okamžiků. Pro úspěšné odhalení hesla prostřednictvím slovníkového útoku je ale zapotřebí „spolupráce“ uživatele, který heslo používá – v tom slova smyslu, že musí zvolit velice slabé heslo, jež je součástí některého z běžně dostupných slovníků. Může to být také některá jen mírně upravená varianta, například pc005, MoBiL apod.

Bezpečné heslo podle specifických požadavků

Jak má tedy ale vypadat dostatečně bezpečné heslo? To vždy záleží na konkrétním systému, jeho bezpečnosti. Kdybyste například chtěli utajit nákupní lístek, jistě budete potřebovat slabší heslo, než je tomu v případě zabezpečení nanejvýš citlivých informací některé vládní organizace. Do toho vstupuje ještě řada dalších faktorů. Pokud sáhneme po konkrétním příkladu, pak například v operačním systému Windows Vista doporučují tvůrci v nápovědě následující zásady pro tvorbu silného hesla:

  • Heslo musí být alespoň šest znaků dlouhé.
  • Heslo nesmí obsahovat název uživatelského účtu ani jeho část.
  • Heslo obsahuje alespoň tři z následující čtveřice kategorií znaků: velká písmena, malá písmena, čísla, zvláštní symboly (například ?, !, ;, @ apod.).

Rozšířené rady pro vytvoření silného hesla v podání nápovědy Windows XP

Z uvedených požadavků je vidět, že proti útoku hrubou silou autoři nabádají použitím dostatečně dlouhého hesla a poměrně široké abecedy („tři za čtveřice kategorií“), podobně i proti základním slovníkovým útokům zčásti chrání požadavek neobsažení části názvu uživatelského účtu. Zde je však tento krok zahrnut především z důvodu nemožnosti odhadnutí hesla podle znalostí osobních informací o uživatelovi, proti slovníkovému útoku by bylo lepší zahrnutí pravidla pro nepoužití běžných slov ani jejich částí.

Otisky a solení

Ještě než se v příštím díle podrobně podíváme na konkrétní bezpečnostní mechanismy různých aplikací, je dobré si připomenout hashovaná hesla. Hashovací funkce pro vstup libovolné délky (slovo, věta, text e-mailu nebo právě heslo) vytvoří otisk pevné délky, takže nesejde na tom, jestli původní data mají 1 kB nebo 100 MB, otisk bude v obou případech mít délku například 160 b. Důležitou požadovanou vlastností je takzvaná jednosměrnost, což znamená, že pro každý vstup musí jít odpovídající hash kód snadno spočítat, ale naopak z výsledného otisku nesmí být možné odvodit původní data. Zbývá ještě zmínit bezkoliznost, která zajišťuje, že pro různé vstupy budou vypočítány různé otisky (i drobné změně vstupu by měly odpovídat velké změny výsledného otisku).

Otázkou tedy zůstává, jak uvedené ingredience v podobě vlastností hash funkcí co možná nejlépe skloubit s klasickými hesly. Jednotlivé atributy lze s výhodou využít prostřednictvím následujících aplikací:

  • Jednosměrnost – díky tomu, že heslo není reprezentováno ve své původní textové podobě, ale ve formě výsledného hash kódu, není výpočetně možné získat z hash kódu původní heslo. To platí pro silnou hashovací funkci, s výhodou lze posílat nebo uchovávat heslo v podobě výsledného hash kódu a při autentizaci tento otisk porovnávat s otiskem uživatelova aktuálního vstupu. Na minimum se tak omezí použití nezabezpečené plain-text formy.
  • Bezkoliznost – při případné autentizaci porovnáním výsledných hash kódů dokáže zajistit, že heslo bude akceptováno právě tehdy, když je zadáno správně. Správný hash kód totiž díky bezkoliznosti mohl vzniknout pouze ze správného hesla.
  • Nízká datová náročnost – v případě standardních hesel, která mají například 8znakovou délku, sice není datová velikost natolik důležitá, ale i přesto je příjemné, že je přesně stanovena délka výsledného hash otisku pro další zpracování.

U hashovacích funkcí navíc musí fungovat takzvaný lavinový efekt, kdy malé změně vstupu odpovídá velká změna výstupu, takže i v případě, že by se dvě náhodně vybraná hesla hodně podobala, nebude možné ze znalosti hash kódu jednoho odvodit otisk toho druhého. Tolik teorie, praxe je samozřejmě, jak tomu již bývá, o něco méně veselá. Jak rozdílně vypadá výstup nejznámějších hashovacích funkcí pro vstupy, kde se změnilo byť jen jediné písmeno, ukazuje následující tabulka.

Ukázka výstupu hashovacích algoritmů

 

 

Algoritmus Vstup Výstup
MD5 cash 93585797569d208d914078d513c8c55a
hash 0800fc577294c34e0b28ad2839435945
SHA-1 cash a34c860a9909dd2ed8b22b29b9377b8c6d48fbec
hash 2346ad27d7568ba9896f1b7da6b5991251debdf2
RIPEMD-160 cash 5ef72c1418aa8996fd0d27450e8fcfb72b0797a7
hash 73045e2e25b9531d5cb676cf73fff291d4a1ee6d

 

 

Ukládání hash kódů do centrálních databází postupně přestalo nabízet dostatečnou bezpečnost, začalo se používat takzvaného solení: výsledný hash kód se nepoužívá pouze z hesla jako takového, ale ještě se na vstupu přidá libovolný řetězec, takzvaná sůl. I kdyby se tak v databázi našla dvě shodná hesla, jejich výsledné otisky nebudou identické, a tedy nebude možné ze znalosti jedné dvojice (heslo, hash kód) odvodit údaje z druhého páru.

Skutečně pestrobarevné duhové útoky

Doplňujícím požadavkem na různé hash funkce je nutnost poměrně rychlého výpočtu, což samozřejmě představuje výhodu při generování otisků, na druhou stranu je ale zde jistá dvojsečnost. Když jsou hash funkce rychle vypočitatelné, proč si nevytvořit seznam odpovídajících dvojic (vstupní text, výstupní otisk) dopředu?

Myšlenka je to bezesporu zajímavá, jednoduchá a hlavně nalezla také realizaci, tvoří základ takzvaných duhových útoků. Předpočítané tabulky hash kódů pro různé vstupy, v našem případě tedy hesla, jsou známé pod označením rainbow tables, celý proces útoků na hesla jejich prostřednictvím pak můžete najít pod souslovím rainbow attack.

S otisky pro různé vstupy si můžete pohrát i ve speciálních aplikacích, které generují hashe rozličnými funkcemi

Ačkoli univerzální princip duhových útoků naznačuje, že je lze aplikovat na kteroukoliv hash funkci, v praxi nejčastěji naleznete předpočítané tabulky pro rozšířené MD5 nebo LM hashe, které jsou známé z autentizace ve Windows (jako doplněk novějších NTLM variant):

  • MD5 – jeden z nejznámějších algoritmů, navrhl jej Ronald Rivest v roce 1991. MD5 se stále hojně využívá, ačkoliv v něm byly objeveny některé slabiny a délka výsledného otisku, která činí 128 b, již není považována za vhodnou.
  • LM – starší varianta hashů používaných pro autentizaci ve Windows, modernější a bezpečnější jsou NTLM hashe. LM verze se však stále používá z důvodu bezproblémovější zpětné kompatibility, přestože neposkytují tak vysokou úroveň zabezpečení.

Vyzbrojeni teorií nyní nezbývá nic jiného, než zapátrat po některých nejznámějších realizacích duhových útoků. Mezi populární patří projekt RainbowCrack, který najdete na domovských stránkách serveru Antsight.com. Na těchto odkazovaných stránkách se nachází několik verzí samostatné aplikace RainbowCrack, s jejíž pomocí je možné si předpočítat duhové tabulky pro různé hashe. Vlastní generování tabulek sice také netrvá zrovna krátkou dobu, avšak následné prolomení díky tomu může zabrat klidně jen pár vteřin. Ze základních hash funkcí jsou podporovány LM, MD5 a SHA-1.

Vygenerované duhové tabulky samozřejmě nacházejí uplatnění také v celé řadě jiných aplikací, vždy ale mějte na paměti, že opravdu rozsáhlé verze jsou také adekvátně veliké co do datové náročnosti. A do kterých externích aplikací je možné duhové tabulky importovat? Ze zdarma dostupných vám podporu duhových útoků nabídne například dobře známý nástroj Cain & Abel, z ostatních pak stojí za pozornost například komerční Proactive Password Auditor.

Lámání hesel v aplikaci Proactive Password Auditor

Stranou duhových útoků nezůstávají ani dokumenty některých verzí kancelářského balíku Microsoft Office, jmenovitě se v rámci aplikací jedná například o Ophcrack_office, o němž se můžete dočíst na stránkách serveru společnosti Objectif Sécurité. Tvůrci díky duhovým tabulkám přislibují prolomení hesel během několika málo minut, a to s úspěšností 99,6 %.

Hesla kancelářských balíků nezůstávají stranou

Představené duhové útoky na dokumenty kancelářského balíku Microsoft Office samozřejmě nejsou jedinou cestou pro proniknutí do chráněných dokumentů Wordu, Excelu, Accessu apod., také v dílnách ElcomSoftu můžete narazit na zajímavý nástroj s názvem Advanced Office Password Recovery. ElcomSoft vždy vyčníval díky uživatelsky velice přítulným rozhraním, nejinak je tomu i v tomto případě.

Na dokumentech Office je zajímavá především rychlost prolomení ochrany dokumentů, které nejsou heslovány proti čtení, ale využívají hesla pro obranu před zápisem. V takovém případě trvá prolomení hesla pouze několik málo vteřin. Kromě standardních útoků v podobě brute-force (hrubou silou) nebo slovníkového je k mání také zajímavá varianta s názvem Smart permutations, která automaticky generuje a zkouší následující „chytré“ varianty hesel ze slovníku:

  • Originální tvar slova
  • všechny znaky malé
  • VŠECHNY ZNAKY VELKÉ
  • inverze malých a velkých znaků
  • První písmeno velké, ostatní malá
  • pRVNÍ PÍSMENO MALÉ, ZBÝVAJÍCÍ PÍSMENA VELKÁ
  • SaMoHLáSKy MaLé, SouHLáSKy VeLKé
  • sAmOhlÁskY vElkÉ, sOUhlÁskY mAlÉ
  • kAžDý dRuHý zNaK vElKý
  • KaŽdÝ DrUhÝ ZnAk MaLý

Hesla balíku Microsoft Office samozřejmě nepředstavují jediné terče rozličných aplikací pro překonání ochran, nabízí se také nástroje pro OpenOffice. Jedním z nich je OpenOffice Password Recovery, informace o něm najdete například na domovské stránce serveru Intelore, odkud si můžete stáhnout také zkušební verzi. Podporovány jsou dokumenty ze součástí Writer, Calc, Impress, Draw i Math. K dispozici jsou také okamžitá odstranění některých slabších ochran.

Obnovení hesel dokumentů kancelářského balíku OpenOffice

Palčivým problémem standardních útoků je především časová náročnost, jelikož brute-force pokusy při větší abecedě zaberou velice dlouhou dobu. Řešením by proto mohlo být distribuované počítání, kdy se na útoku podílí větší množství strojů. Jak již název samotného produktu Distributed Password Recovery napovídá, tvoří základ úspěšného prolomení hesla rozložení zátěže při prohledávání prostoru všech klíčů na více počítačů. Alespoň zčásti se tak eliminuje časová náročnost klasického útoku hrubou silou.

Jak na archívy bez námahy

Pokud se rozhodnete, že prolomíte heslo k některému z komprimovaných archívů, mohou vaše první kroky opět směřovat ke komerční aplikaci od společnosti Elcomsoft, tentokrát s názvem Advanced Archive Password Recovery. S její pomocí se můžete pustit do obcházení ochrany archívů ZIP, ARJ, RAR a ACE. Především u starších variant archívů ZIP se dočkáte rychlého „brute force“ útoku, novější verze jsou samozřejmě odolnější.

Lámání hesel komprimovaných archívů v podání programu Advanced Archive Password Recovery

Na archívy ZIP dále můžete s výhodou využít aplikaci Ultimate ZIP Cracker, jež se nabízí na domovské stránce společnosti VdgSoftware. Tvůrci v tomto případě vsadili především na jednoduchost a přívětivost obsluhy, takže vás při lámání navádí intuitivní průvodce. Kromě archívů ZIP si Ultimate Cracker dokáže poradit také s heslovanými soubory aplikací Microsoft Word a Excel. Rychlost útoku hrubou silou je srovnatelná s již představeným programem Advanced Archive Password Recovery.

Při troše „štěstí“ se můžete setkat s dokumenty PDF, které jsou svými tvůrci chráněny různými hesly. Také v tomto případě se vám k dispozici pro lámání nabízí některé jednouché programy, které se pokusí tuto obrannou bariéru překonat. Jedním z nich je například program GuaPDF, který má své místo na domovské stránce. Na výběr máte z verzí pro Windows a Linux, volit můžete jak z ovládání pomocí grafického rozhraní, tak spuštění dávky díky práci v příkazové řádce.

V rámci lámání hesel, hash kódů a vůbec světa bezpečnosti jako takového zaslouží samostatnou pozornost vydařená aplikace Cain & Abel, kterou můžete zdarma získat na domovských stránkách serveru Oxid.it. Znalci přitom vědí, že Cain & Abel se nespecializuje pouze na hesla, ta popravdě tvoří jen zvláštní sekci této aplikace, ale na možnosti prolomení rozličných bezpečnostních mechanismů, především pak síťového světa.

S programem Cain & Abel se vám otevírají brány k lámání síťových hesel, zcela mimo zájem tak zůstávají například komprimované archívy nebo heslované soubory dokumentů Microsoft Office. Na druhou stranu však také můžete snadno a rychle získat dostupná hesla aktuálně přihlášeného uživatele, jedná se například o údaje aplikace Microsoft Outlook nebo automaticky vyplňovaná hesla webového prohlížeče Internet Explorer.

Větší „síťařina“ přichází v rámci skupiny Network, jež prozkoumá okolní počítače v lokální síti a pokusí se zjistit co možná nejvíce dostupných informací. Jmenovitě tak máte možnost zjistit například použité operační systémy, právě běžící služby, seznamy uživatelských účtů a názvy sdílených síťových prostředků. Pokud hledáte cíl v nepříliš chráněné lokální síti, osaháte si potenciální oběti právě tímto letmým dotekem.

Na hesla s programem Cain & Abel

Lámání hesel v celé jeho kráse najdete v příhodně pojmenované skupině Cracker, přičemž rekonstrukce většiny z nich se zakládá na prolomení odpovídající hash funkce. Jedná se tak o univerzální přístup, kdy vstup použijete z libovolné aplikace – je tak jedno, pro jaký účel lámete MD5, SHA apod. Pokud si na mušku chcete vzít Windows, využijete prolomení hash kódů LM a NTLM. Vlastní útoky pokrývají všechny standardní techniky, volit tak můžete ze slovníkového, hrubou silou i oblíbeného duhového.

Cain & Abel samozřejmě nesmí opomenout ani klasický sniffer, s jehož pomocí vám po přepnutí karty do promiskuitního režimu neunikne jediný paket. Podobně pro sledování komunikace od směrovače můžete využít klasického APR (ARP Poison Routing), další, relativně ojedinělou funkcí, je možnost sledování VoIP komunikace.

Ve dvou článcích o výhodách, nevýhodách a možnostech prolomení rozličných hesel, jste měli možnost nabrat inspiraci pro tvorbu bezpečnějších hesel a také se dozvědět něco o jejich rekonstrukci. Zpravidla přitom platí, že hesla budou představovat souboj mezi naší nedokonalou pamětí a co možná nejdokonalejší bezpečností.

Svůj komentář na tento článek, co by mělo být opraveno, či doplněno můžete napsat do této sekce na našem týmovém fóru. Téma s komentářem k tomuto konkrétnímu článku, by mělo nést stejný název, jako článek na webu.


Nahoru