UMĚNÍ VYBÍRAT A SKRÝVAT |
Bernardo: Kdo je? Fernando: Dřív ty se prozraď. Stůj a heslo! W. Shakespeare: Hamlet | ||
část I: jak uhodnout heslo
Nikdo by je nepoužíval, kdyby měl ovšem na výběr. Jsou součástí lidského života zřejmě od nepaměti. Jsou tím, co nevidíme, o čem nikdy nemluvíme; ovlivňují naši psychiku. Hesla - ne jedno heslo, ale spousta hesel; a také číselné kódy. Jak je rozumně vybrat? Jak si je zapamatovat? Jak se zbavit strachu z jejich zapomenutí? Jak na ty nepotřebné zapomenout? Jak s nimi vlastně žít? Hledat v literatuře (tištěné nebo elektronické) odpověď už na první položenou otázku znamená tápat ve spoustě doporučení - mnohdy se navzájem vyvracejí; mnohdy kopíruje jedno druhé. Některé z nich představuje a posuzuje první díl tohoto článku. Je návodem pro kritické hodnocení technik vytváření hesel ve vlastní praxi. Pro tvůrce, výrobce, provozovatele systémů jsou rady jak navrhnout, implementovat a používat ověření totožnosti heslem shrnuty už v studii [DoD]. Druhý díl článku má podobný cíl, je však určen uživatelům. Popisuje rozumnou metodu vytváření hesel, s ní související zásady jejich užívání i potřebné implementační detaily. Nejprve uvedu systémově a technicky nezávislé předpoklady, ze kterých jsem ve svých úvahách vycházel, společně se symboly, termíny a vzorci, které budu v dalším výkladu používat. Uživatelské jméno, heslo a profil uživateleUživatel se přihlašuje do počítačového systému pod uživatelským jménem U a svou totožnost prokazuje zapsáním a odesláním určitého řetězce znaků - hesla h. Heslo psané na klávesnici se na displeji nezobrazuje. Až na výjimky nepředpokládám omezení na délku hesla ani na výběr znaků, z nichž může být sestaveno. V příkladech hesel budu používat 108 znakovou abecedu malých i velkých písmen české abecedy, číslic a 16 speciálních znaků: . , ! | _ - + * : / \ # @ & < > V systému je unikátním jménem U označen popis práv uživatele na prostředky systému - jeho uživatelský profil (user profile, user account). Pracuje-li uživatel s více profily, můžeme termíny uživatelské jméno, heslo uživatele zaměnit termíny jméno profilu, heslo profilu. Uživatelské jméno a prvotní heslo určuje obvykle správce systému. Uživatel musí prvotní heslo změnit při prvním přihlášení do systému; později pak může svoje heslo kdykoliv sám zvolit a změnit. Ve shodě s [DoD] považujeme hodnotu U za veřejně známou. Útok přihlášením a útok výpočtemPři uložení do paměti počítače a při přenosu po síti se místo h použije h' = J(h), kde J je jednocestná transformace. Z hodnoty h' není možné v rozumném čase odvodit hodnotu h. Protivník může heslo zjistit pouze tak, že zvolí hodnotu k kandidáta na heslo a: · přihlásí se pod uživatelským jménem U s "heslem" k - útok přihlášením; · vypočte J(k) a porovná h' s J(k) - útok výpočtem. Jestliže je v prvním případě jeho pokus o přihlášení úspěšný nebo v druhém případě h' = J(k), pak k = h a protivník heslo odhalil. Poznámka 1.: Mimo h mohou být vstupem transformace i jiné hodnoty - momentální čas, pseudonáhodně zvolený řetězec znaků, atd. V autentizačním protokolu se může přenášet, jako hodnota h', zpráva zašifrovaná nebo dešifrovaná heslem h jako klíčem. Tak je tomu například v systému Kerberos. Poznámka 2.: Program spuštěný na počítači, který je připojen do sítě, může monitorovat hodnoty U, h' a může provádět útok přihlášením. Program, jehož vstupními daty jsou hodnoty U, h', může provádět útok výpočtem. Protivník nemusí umět víc, než spustit převzatý program. V textu použitá slovní spojení protivník vypočte, zná, prozkoumá, získá apod. mohou mít i tento význam. Předpoklad posouzení metodJako měřítko pro posouzení metod vytváření hesel jsem zvolil odolnost metody proti útoku určité intenzity. Intenzitou tu rozumím počet kandidátů na heslo otestovaných za jeden den. Předpokládám, že protivník ví, jaká metoda byla pro vytvoření hesla použita, nezná však samotné heslo. Co mě vedlo k tomuto zásadnímu předpokladu?
1. Řada autorů, po té co doporučí určitou metodu, nabádá: Zkopírujte tento text a pověste jej u každého terminálu nebo PC. Kterákoliv z publikovaných idejí se může stát natolik populární, že ji budou používat tisíce lidí na celém světě a proto k ní přihlédne i protivník. Počet hesel vytvořených metodouOznačme symbolem M množinu všech m hesel vytvořených jistou metodou. Z pohledu protivníka může být jako heslo vybrán kterýkoliv prvek množiny M se stejnou pravděpodobností 1 / m. Poznámka: Není rozhodující, zda heslo je opravdu vybráno, např. z nějakého slovníku, encyklopedie, souboru, nebo vytvořeno, sestaveno pomocí určitého algoritmu (podle jistých pravidel atd.). V dalším textu používám v této souvislosti slovesa vybrat, vytvořit a sestavit jako synonyma. Jsou-li hesla vytvořena zřetězením tří prvků tak, že první prvek patří do i-prvkové, druhý do j-prvkové a třetí do k-prvkové množiny, pak pro tuto metodu je m = i . j . k. Důsledek: Jestliže jako metodu vytváření hesel zvolíme zřetězení právě d prvků i-prvkové množiny, pak počet hesel délky d je m = id. Pravděpodobnost odhalení hesla a stupně intenzity útokuNechť za jeden den je otestováno maximálně n kandidátů z počtu m hesel. Číslo n nazveme intenzitou útoku. Po x dnech nemůže být prozkoumáno více jak g = n . x hesel. Pro g <= m uvádí [DoD] vzorec na výpočet pravděpodobnosti P odhalení hesla po x dnech útoku
Podle hodnoty n budu rozlišovat tyto stupně intenzity útoku:
Doba trvanlivosti hesla
Existují systémy, ve kterých se heslo přenáší v otevřené podobě. Pokud provozovatel nevyloučí monitorování sítě, pak v tomto případě klademe definitoricky hodnotu n rovnu nekonečnu.
Stupeň odolnosti metody
Řekneme, že metoda vytváření hesel odolá útoku intenzity n při daném P, vyjde-li ve vzorci (2) T = 365. Poznámka: V literatuře se obvykle uvažuje hodnota P rovna 10-3, např. v klasické práci L. J. Hoffmana Modern Methods for Computer Security and Privacy (Prentice-Hall Inc., Engelwood Cliffs, New Jersey 1977). V [DoD] je v jednom z příkladů P = 10-6 a pro důležité profily se doporučuje dokonce P = 10-20. Tentýž dokument však v příkladech nepředpokládá útok vyššího stupně než 2. Vyčíslíme-li hodnotu m ze vztahu m = T . ns / P pro zadané s = 3, 4, 5; P = 10-3 a T = 365, vyjde nám po řadě 3.65 . 1011, 2.19 . 1017, 3.65 . 1020. Při takových hodnotách m, T = 365 a útoku 2. stupně (n = 20 000) bude podle (1) pravděpodobnost odhalení hesla rovna postupně hodnotám 2 . 10-5, 3.3 . 10-11, 2 . 10-14. Dostačující počet hesel a dostačující délka heslaJak velká musí být hodnota m, aby metoda charakterizovaná tímto číslem měla stupeň odolnosti s? Takovou hodnotu nazveme dostačujícím počtem hesel pro stupeň odolnosti s. Je rovna alespoň
Tabulka 1. ukazuje, jaká hodnota m je dostačující pro stupeň odolnosti s = 1, 2, ..., 5.
Jestliže jako metodu vytváření hesla délky d (d >= 1) zvolíme zřetězení právě d prvků i-prvkové množiny, pak dostačující délka d hesla pro stupeň odolnosti s, je nejmenší přirozené číslo splňující nerovnost:
kde log označuje logaritmus, jehož základem je číslo 10. Důkaz: Dosadíme-li m = id do rovnice m = 365 . ns / 10-3, vyjde nám id = 365 . ns . 103. Tato rovnice znamená totéž co d = logi(365 . ns . 103) = logi365 + logins + logi103 = (log365 / logi) + (logns / logi) + (3 / logi) = (log365 + logns + 3) / logi. Odhad hodnoty n ve vlastní praxiJakou maximální hodnotu n mám uvažovat v systému, který používám? Kdyby byl vyloučen útok výpočtem, pak by tato hodnota byla rovna maximálnímu počtu "beztrestných" pokusů o přihlášení za den. V případě útoku výpočtem závisí hodnota n jak na použité technice tak i na algoritmické složitosti výpočtu transformace J. Jak ji odpovědně odhadnout? ... systém je tak bezpečný, že uživatelé si budou moci vytvořit jediné heslo a nebudou ho už muset nikdy měnit(citát v článku D. van Kirka Bezpečnost sítí LAN, Computerworld, č. 5 1993). Kdyby to byla pravda, mohli bychom na nebezpečí útoku výpočtem zapomenout. Je systém, který používám, tak bezpečný? ... zatím nebyla nalezena prakticky užitečná funkce, která by byla dokazatelně jednocestná (O. Grošek, Š. Porubský: Šifrovanie, Grada, Praha 1992). I když bude tvůrce, dodavatel, provozovatel tvrdit, že systém je tak bezpečný, nemusí to být pravda. Testy na počítači ukázaly, že Velký červ v Internetu prováděl transformaci hesla více než 9krát rychleji než standardní verze (Seeley D.: Password Cracking: A Game of Wits, CACM, č. 6 1989). I když budu mít dostatek informací o transformaci J, je nebezpečné, uvažuji-li o mezních možnostech protivníka, vycházet ze současných odhadů složitosti jejího výpočtu. Při odpovědné volbě by hodnota n měla kompenzovat všechnu naši nevědomost. Proto jsem vybral, jako intenzitu útoku čtvrtého stupně, vůbec největší hodnotu n, se kterou jsem se v literatuře setkal. Proto v tomto článku pokládám za rozumnou takovou metodu výběru hesla, bez ohledu na používanou transformaci J, která odolá útoku ještě 1666krát intenzívnějšímu (útoku 5. stupně). Srovnejme tuto hodnotu s nejrozsáhlejším multiútokem, který byl dosud proveden. Podle zprávy v časopise Computerworld (č. 26 1997, str. 1) se na odhalení jednoho 56 bitového klíče z 7.2 . 1016 možných podílelo 78000 počítačů. Po čtyřech měsících intenzívních výpočtů a otestování 1.7 . 1016 kandidátů byl klíč nalezen a odměna vypsaná firmou RSA mohla být vyplacena. Intenzita útoku efektivně spolupracujících počítačů, z nichž každý prozkoumával jen určité množství klíčů, měla hodnotu n = 1.7 . 1016 / 120 = 1.4 . 1014. Louskání hesel
Následující příklad útoku výpočtem je v krocích 1 - 4 inspirován programem Velký červ v Internetu:
Křehká hesla pro Lyu
Píseň pro Lyu je název povídky G. R. R. Martina, ve které vystupují Nadaní, kteří čtou lidi (tj. myšlenky lidí). Lya nemohla dokonce ani hrát hazardní hry, protože její talent byl příliš velký. Pokud bychom chtěli, aby heslo zůstalo naším tajemstvím, nemohli bychom se přihlašovat v její přítomnosti. Co je tak špatného na ověření heslem?
Použití hesel je nejvíce zatracovaná metoda ověření totožnosti uživatele (ovšem, zároveň nejužívanější, protože je nejlevnější). Když heslo nikomu neřeknu, nemám je nikde napsané a je vyloučeno zachycení hesla při jeho zadávání (odpozorováním - dalekohledem i mikrokamerou, infiltračním programem, "odposlechem" klávesnice nebo jejími úpravami, analyzátorem paketů, přenosem lidské myšlenky prostorem bez hmotného zprostředkování od jednoho mozku k jinému, jak píší J. Bergier a L. Pauwels v Jitru kouzelníků), co je na této metodě vlastně tak špatného? Hesla jak pro schránku na zavazadlaStojím na nádraží před schránkou na zavazadla a mám nastavit svoje heslo. Nemám-li možnost si je poznamenat, pak z obavy, že heslo zapomenu, vyberu něco takového, jako je jméno z rodiny, kódy z dokladů nebo jiné osobní údaje. Počítačový systém není schránka na zavazadla a přece spousta lidí na celém světě volí hesla právě takovým způsobem. Čím více o uživateli protivník ví, tím spíše může odhalit jeho heslo, vybrané jak pro schránku na zavazadla. A nepotřebuje k tomu více než 20 - 30 pokusů o přihlášení. Hesla jak do stráže Aineiás Taktikos v díle O obraně měst (4. st. před n. l.) radil římským vojákům vydávat hesla do stráže snadná pro zapamatování a svým významem co možná nejbližší zamýšlené akci. Šokující nesmyslyM. Müller napsal, že člověk žije tři životy: veřejný, který vidí celý svět; domácí, který znají jen jeho známí a vnitřní, o němž ví jen on sám. Ať jste nebo nejste světově proslulí (výrok byl o lidech slavných), jedna věc je o vás obvykle známá všem dalším uživatelům sítě - vaše uživatelské jméno. Neodvozujte z něho svoje heslo žádným seberafinovanějším způsobem. Čím více informací o vás bude v síti dostupných (osobní údaje, životopis, zájmy), tím snadněji bude možné uhádnout heslo z nich odvozené. Hesla jak pro schránku na zavazadla jsou vzata především z veřejného života, hesla jak do stráže především z domácího. Už jsem psal o tom, že po čase se naše heslo objeví jako nesprávné jméno uživatele v nějakém souboru. Nevolte proto jako heslo nic z vašeho vnitřního života. Podaří-li se protivníkovi takové heslo odhalit, může uživateli uškodit, aniž by je vůbec musel neoprávněně použít v počítačovém systému. Proto odmítám i doporučení [Ward] volit jako heslo krátkou větu - šokující nesmysl, něco příšerně sprostého, rasistického apod. I když si takové heslo uživatel snadno zapamatuje a navíc jej donutí, aby intuitivně převzal zásady správného užívání hesla - nikam je nezapisoval, nikomu je neříkal, postaral se o to, aby při přihlašování neměl nikoho za zády ... Snadno zapamatovatelná heslaAby se heslo nemuselo nikdy nikam zapisovat, vychází většina autorů z předpokladu, že má být snadno zapamatovatelné. Z předchozího výkladu navíc plyne požadavek, aby nebylo snadno odvoditelné z uživatelského jména nebo osobních údajů uživatele a nevyskytovalo se v Seznamu. Cílem této kapitoly je představit několik takových metod. Iniciály a datum narození I a II
B. B. Madron navrhuje tvořit heslo takto: Vezmou se iniciály a datum narození nějaké osoby, kterou by s uživatelem nikdo nespojoval; číslo měsíce se zřetězí s iniciálami a posledními dvěma čísly roku. Nový jazyk Heslo nepatřící do Seznamu se můžeme pokusit najít mezi znakovými řetězci, které se podobají slovům nějakého, pro snadné zapamatování nejlépe mateřského, jazyka. Inspirace z literatury: V povídce Nedělní zepelín od W. Saroyana používají chlapci vymyšlenou řeč, ve které se například dobrý den řekne palka eskos. Inspirace ze života: Můj syn, když začínal mluvit, používal zajímavá slova jako ápotoč pro autobus a okoaňk pro sněhuláka. Slovní salátV. L. Levi píše v knize Já a my o poslední etapě schizofrenického myšlení, která se projevuje slovním salátem - z integrálu a krematoria pak vznikne kremigrál. Inspirativní příklady slovního salátu můžeme nalézt v překladech literárních děl: pampeliška a vlk dá pampevlka Ch. Morgensterna; kolčava a lasice dá kolčavici a kolasici A. A. Milneho. Uvedu jen jeden z možných algoritmů pro vytvoření slovního salátu. Ve slovníku, jako je Slovník jazyka českého od F. Trávníčka (Slovanské nakladatelství, Praha 1952), vybereme náhodně dvě slova; z prvního vezmeme (například) začáteční tři písmena a zaměníme jimi první tři písmena druhého slova. Příklady, které mi náhodně vyšly: toč- a horopis dá točopis; bab- a horizont dá babizont. V tomto případě nemám dost podkladů pro přesnější určení hodnoty m. Odhadl jsem ji shora takto: Kdyby všech "přípon" po odtržení prvních tří znaků bylo 38000 (u slov začínajících písmeny A, B je jich v Trávníčkově slovníku asi 1000) a kdyby první tři písmena byla zvolena libovolně s výjimkou prvního, které nesmí být ěýů, pak by počet hesel byl 38 . 41 . 41 . 38000 = 2.4 . 109. Stupeň odolnosti tohoto slovního salátu je jedna. Poznámka: Kromě Leviho mluví o podobném způsobu tvorby slov ústy Valihracha i L. Carroll (pseudonym matematika Ch. L. Dodgsona) v knize Alenka v kraji divů a za zrcadlem. Nazývá jej slovní kufřík a právě s jeho pomocí je vytvořena báseň Tlachapoud (Je svačvečer. Lysperzní jezeleni se vírně vrtáčejí ...) a představte si, Paželv se učil příhodopis. Tentýž princip tvorby slov označují autoři Jitra kouzelníků jako Kreysslerův verbalismus. Použil jsem Leviho termín, protože vystihuje náhodnost spojení jak částí slov tak i slabik nebo jednotlivých písmen, jehož výsledek připomíná slovo jazyka. Hláskové schémaVynecháme-li salát ze slabik, z trojic a dvojic písmen, můžeme přistoupit k metodě ze studie [MOLO]. Heslo se vytvoří tak, že náhodně vybraná souhláska je následována jednou až dvěma náhodně vybranými samohláskami až do celkové délky hesla 8 znaků. Tímto způsobem vzniknou hesla sedmi hláskových schémat baabaaba, ..., babababa (kde a označuje samohlásku a b souhlásku). [MOLO] tvrdí, že takto vytvořená hesla se snadno vyslovují a tedy i snadno pamatují. Zkusil jsem vytvořit hesla podle hláskových schémat babaabab a babababa. Při použití latinské abecedy mně vyšlo JILUEHIM a VIJABYDI. Počet hesel je závislý na použité abecedě. V případě latinky mají slova podle hláskových schémat stupeň odolnosti 1 (m = 3 . 203 . 65 + 4 . 204 . 64 = 1 . 109).
Taková podivná jména, že se našinec až zamyslet musí (J. a W. Grimmové.) Heslo nemá patřit do Seznamu, ale jakou mohu mít jistotu, že slova JILUEHIM a VIJABYDI nejsou obsažena např. ve spisovném slovníku jazyka svahilského? V materiálu [UCLA] je uveden tip na tvorbu dobrých hesel - zapsat slova ne jak se píší, ale jak se vyslovují (R2-D2 je v českém vydání knihy G. Lucase Hvězdné války Artoo Detoo). Bylo by snadné upravit program odhalování hesel tak, aby pro každé slovo ze slovníku zkusil i jeho zápis podle výslovnosti. Ale českého čtenáře bude mnohem více šokovat příklad takto utvořeného "dobrého" hesla, kterým je - fotograf. Dvě slova spojená speciálním symbolem
Mnoho studií (za všechny viz [MOLO]) považuje za jednu z nejlepších metod spojení dvou krátkých slov číslicí nebo speciálním znakem. Heslem však nesmí být sonet-mlčení, protože tak se jmenuje jedna z básní E. A. Poa, ale ani dobré!pivo ani jsme1tu, jak se v literatuře často uvádí. Slova by neměla souviset ani s uživatelem ani sama se sebou. Podle [DoD] je například v angličtině 23300 slov sestavených ze 4 až 6 písmen. Uvažujeme-li 26 čísel a speciálních znaků, pak bude m = 23300 . 26 . 23300 = 1.4 . 1010. Tato metoda má stupeň odolnosti 2. Doba trvanlivosti hesla při útoku 3. stupně je 14 dnů. Shrnutí
Cílem tohoto dílu bylo ukázat, jak hodnotit vlastní nebo z praxe či z literatury převzaté metody vytváření hesel. Praktické použití principu "Odolnost metody je dána počtem hesel metodou vytvořených", jsem vyzkoušel na několika příkladech. Výsledky mohu shrnout takto: I když nebudeme vědět nic o možnostech protivníka, je zřejmé, že příklad metody odolávající útoku výpočtem dosud nebyl uveden. část II: Jak zvolit hesloLiteraturaZvýrazněné odkazy byly dostupné 17. listopadu 1999
|
|
změněno 19. července 2001
Copyright © 1998-2001 Vladimír Zábrodský