Využití jednorázových hesel
Aleš Padrta
Computerworld, 7. října 2011
Jednou z dalších možností, jak zvýšit bezpečnost hesel, je používání tzv. jednorázových hesel (OTP – One Time Password). Jak už samotný název napovídá, základní myšlenkou je použití každého hesla pouze jednou, respektive změnit jej po každém použití.
Útočníkovi se tak výrazně zkomplikuje získání aktuálně platného hesla. A pokud by jej přesto získal, má na své aktivity mnohem méně času.
Základní mechanizmus
Používání jednorázových hesel předpokládá, že uživatel i služba, ke které se chce přihlásit, mají předem dohodnutý seznam hesel, která budou postupně používat. Při každém úspěšném přihlášení je pak dané heslo skartováno a při příštím pokusu je očekávána další položka ze seznamu. Často jsou také k vidění způsoby, které nepoužívají přímo seznam, ale algoritmus, kterým lze heslo odvodit.
Samozřejmě je nelidské chtít po někom, aby si sám vymýšlel a pamatoval vysoké množství bezpečných hesel. Proto se jednorázová hesla neobejdou bez pomoci dalších technických prostředků.
Vytváření jednorázových hesel
V první řadě je tedy potřeba sadu jednorázových hesel vytvořit. V současnosti je běžně používán postup z historických důvodů označovaný jako S/KEY (nebo též Lamportovo schéma), který je založen na využívání zřetězených hashovacích funkcí (více viz www.ietf.org/rfc/rfc2289.txt). Obvykle jsou používány MD5, SHA nebo ideálně SHA-2, ale posledně zmíněná funkce není ještě tak široce podporována.
Vlastní algoritmus vygenerování sady hesel je jednoduchý – uživatel si zvolí fixní passfrázi, která je následně rozšířena o náhodně vygenerovaný inicializační řetězec (seed). Výsledek spojení s je pak vstupem hashovací funkce f. Výstup funkce f(s), tj. hash vstupu s, je následně opět prohnán hashovací funkcí, čímž je získáno f(f(s)) (hash hashe vstupu) a tento postup je zopakován N-krát. Výsledkem je pak seznam řetezců f(s), f(f(s)), ..., f(f(f(...f(s)...))), jinými slovy celkem N jednorázových hesel H1, H2, ..., HN.
![[Generování jednorázových hesel]](cw11-obr1-prev.png)
Z definice hashovací funkce vyplývá, že je nemožné, nebo alespoň velmi obtížné, najít inverzní funkci f–1(s). Tedy pokud budou hesla používána v obráceném pořadí, než byla vygenerována (tj. HN, HN-1, …, H1), nelze ze znalosti již použitých hesel odvodit heslo následující.
Autentizace
Lamportovo schéma má i příjemné vlastnosti pro autentizaci jednorázového hesla. Protože je zřejmé, že hash nově zadávaného hesla je shodný s heslem použitým při předchozím přihlášení, stačí, aby na serveru bylo uloženo posledně použité heslo. Tato hodnota je pak porovnána s hashem zaslaného jednorázového hesla, a pokud se shodují, je heslo platné.
![[Generování jednorázových hesel]](cw11-obr2-prev.png)
Jak už bylo řečeno, jednorázové heslo je vlastně hash, který je však z lidského hlediska špatně čitelný a důsledkem by byly časté chyby při jeho zadávání. Proto byl ještě vytvořen algoritmus pro konverzi hashe na šestislovné heslo, které je pro člověka snadněji uchopitelné (např. hashi DDCD AC95 6F23 4937 odpovídá přepis SKIM CULT LOB SLAM POE HOWL).
Po vyčerpání celé posloupnosti jednorázových hesel je pochopitelně potřeba vytvořit hesla nová. Prakticky však stačí změnit inicializační řetězec a uživatel si může své fixní heslo ponechat stejné. Teoreticky lze také vygenerovat dostatečně dlouhý seznam jednorázových hesel.
Uchovávání OTP
Možností, jak zajistit uživateli přístup k jednorázovým heslům, je celá řada. Nejjednodušší variantou je předání vytištěného seznamu, který je sice dostatečně odolný z hlediska elektronické bezpečnosti, ale lze jej ztratit nebo se může dostat do nepovolaných rukou. Dále je možné hesla uložit do bezpečných úložišť speciálních zařízení, ale také například do stále populárnějších chytrých mobilních telefonů. Uživateli je pak aktuální jednorázové heslo vydáno na základě přihlášení fixním heslem.
Nasnadě je další krok směrem k bezpečnějším heslům – pokud chytré zařízení dostane od uživatele passfrázi a bude znát inicializační řetězec spolu s pořadovým číslem hesla (tj. lze dopočítat počet iterací hashovací funkce), nemusí být jednorázové heslo nikde uloženo, ale pouze vygenerováno až v případě potřeby. Bez zadání správné passfráze totiž nemůže útočník vygenerovat správné jednorázové heslo.
Jednorázová hesla jsou také často používána jako součást dvoufaktorové autentizace, typickým příkladem je internetové bankovnictví. Zde je používána ještě jedna metoda doručení jednorázového hesla, a to pomocí krátké textové zprávy (SMS), tj. vedlejším kanálem.
Výhodou je skutečnost, že mobilní telefon každý má, a nevznikají tak téměř žádné další náklady, zatímco důvěryhodnost autentizace vzrůstá. Na druhou stranu je třeba počítat s tím, že telefon může být odcizen, musí být svěřena důvěra mobilnímu operátorovi a přenos v síti GSM není dostatečně zabezpečený.
Časová synchronizace
Platnost jednorázového hesla nemusí nutně vypršet pouze jeho použitím. Pokud je třeba snížit pravděpodobnost, že získané heslo někdo použije, je vhodné využívat časovou synchronizaci. Jednotlivá hesla jsou v takovém případě platná pouze po předem definované časové intervaly, takže pokud není jednorázové heslo použito téměř ihned, stává se nepoužitelným.
Tím je také snížen počet pokusů o uhodnutí hesla. Takovýto přístup však vyža duje přesnou synchronizaci mezi serverem a zařízením, které uživateli generuje heslo.
Bezpečnost OTP
Jednorázová hesla poskytují dobrou ochranu před opětovným použitím odchyceného hesla, ať už k tomu došlo pozorováním, odchycením nebo jiným způsobem. Častou změnou je také výrazně snížena pravděpodobnost uhodnutí hesla.
Avšak není poskytována žádná ochrana před sociálním inženýrstvím a phishingem. Pokud uživatel sdělí ještě nepoužité jednorázové heslo, dává tím útočníkovi možnost jednou se přihlásit. Občas lze také zachytit snahy o získání všech historicky zadaných hesel pro pokusy o zjištění matematického aparátu používaného ke generování posloupnosti hesel.
Dále jsou jednorázová hesla zranitelná vůči man-in-the-middle útokům, a i když použití časové synchronizace hraje proti útočníkovi, není to pro tento typ útoku příliš velká překážka. Jednorázová hesla jsou často používána jako jedna z vrstev autentizace, obvykle spolu s klasickými credentials.
O autorovi
Ing. Aleš Padrta, Ph.D.
Autor je řešitelem aktivity CESNET CSIRT sdružení CESNET.