UMĚNÍ
VYBÍRAT A SKRÝVAT
  Zavést novou potravu mezi námořníky, vyžaduje jednak příkladu a jednak autority velitele, bez nichž ji zavrhnou, aniž si uvědomí, jaké výhody jim z ní plynou. Mnoho mých lidí, důstojníků stejně jako námořníků, nechtělo zezačátku celer, lžičník etc. vařené s hrachem a pšenicí.
J. Cook - Palubní deník lodi Jeho královského Veličenstva Resolution
 

část II: jak zvolit heslo

Ani jednou z metod, které byly popsány v 1. dílu, nesestavím heslo použitelné v procesu ověření totožnosti a odolné proti útoku výpočtem. Metodu, kterou takové heslo možná vytvořím, a metodu, kterou takové heslo vytvořím určitě, představuji v tomto článku.

     V předchozí části jsem uvedl příklad hesla vytvořeného podle hláskového schématu (doporučení [MOLO]) - VIJABYDI. Mělo tak vzniknout snadno vyslovitelné a snadno zapamatovatelné heslo. Je VIJABYDI snadno zapamatovatelné? A co to vůbec znamená, že je nějaké heslo snadno zapamatovatelné?

    Prolistoval jsem desítky slovníků a encyklopedií a hledal jsem v nich pro mě neobvyklá slova a slovní spojení. Většinou bylo úlovkem něco takového jako triskaidekaphobia - chorobný strach z nešťastné třináctky. A pak jsem narazil na název díla Stuttgartský Křížalníček (autor E. Mörike). I když jsem ve Stuttgartu nikdy nebyl a slovo křížalníček jsem nikdy neslyšel ani nečetl (v Trávníčkově slovníku není), vyvolalo ve mě toto slovní spojení záplavu velice příjemných vzpomínek na dětství a vysloveně mě donutilo, abych si je zapamatoval.

     Při praktickém použití metody slovní salát mě rozesmál příklad hlemýžď - čummýžď tak, že jsem na něj prostě nemohl zapomenout.

     Není ale mnoho hesel, která mě donutí, abych si je zapamatoval, ani těch, na které prostě nebudu moci zapomenout. Mechanismus zapamatování hesla je ovlivněn našimi emocemi stejně tak, jako hodnocení jakékoliv jiné informace. Kolik lidí, tolik kombinací schopností k zapamatování, uchování a vybavení. Nejsou věci, které si nelze zapamatovat, ale neexistují dva lidé, kteří by si tutéž věc zapamatovali stejně. Každý si pamatuje ty rysy, které odpovídají jeho zájmům, povaze, typu myšlení, vkusu - všemu tomu, co je kromě čistých informací součástí pojmu minulé zkušenosti ... (S. M. Ivanov: Tajemství paměti, Mladá fronta, Praha 1976). Překvapující myšlenka: mechanismus zapamatování by mohl sloužit k ověření totožnosti!

    V březnovém čísle časopisu Psychological Review vyšel v roce 1956 článek G. A. Millera The magical Number Seven, Plus or minus Two: Some Limits on Our Capacity for Information Processing. Autor v něm popsal svůj objev možností bezprostřední, krátkodobé paměti (short-term buffer memory): Člověk je schopen zapamatovat si najednou devět čísel dvojkové soustavy, osm dekadických čísel, sedm písmen abecedy a pět jednoslabičných anglických slov.

Rekonstruovaná hesla

    S trochou cviku mohu zadat heslo 0.1428571, aniž bych si je musel celé pamatovat. Stačí, když si budu pamatovat jedna děleno sedmi a teprve v okamžiku zadávání hesla zapíšu jednotlivé znaky výsledku v duchu prováděného výpočtu 1 / 7 (něco málo navíc v paměti být musí: Až narazíš na druhou jedničku ve výsledku - skonči). J. A. Haskett nazval ve svém článku Pass-algorithms: A User Validation Scheme Based on Knowledge of Secret Algorithms (CACM, č. 8 1984) taková hesla rekonstruovaná.

    Nejlepší je použít jako heslo první písmena věty. Například z věty "to be or not to be?" dostaneme heslo "tbontb?" čteme v [PUCC]. Vybrat si za heslo zkratku sestavenou obecně z určitých písmen slov nějaké věty, kterou si dobře pamatujeme, včetně interpunkčních znamének, je vůbec nejčastěji uváděná rada v literatuře. V [SERT] se doporučuje sestavit heslo z prvních písmen slov úryvku nějaké písně tak, že každé třetí písmeno bude malé a samohlásky aeiou budou po řadě zaměněny znaky {}:"?. Zcela zřejmě jde o příklady rekonstrukce hesla.

Poznámka: [SERT] takovou zkratku nazývá passphrase - ověřovací věta. Termín zavedl S. N. Porter ve svém příspěvku A Password Extension for Improved Human Factors (Computers & Security, č. 1 1982) a je obecně vyhražen pro velmi dlouhé, 100 a více znakové, heslo. V [DoD] a v [Reinhold] passphrase znamená heslo náhodně sestavené z krátkých slov a ve [Ward] skutečnou větu (mimochodem Bernardo odpovídá Fernandovi heslem Ať žije král!).

     Jakou větu si pamatuji tak dobře, abych si ji opravdu bez problémů celou vybavil v přesném znění? Úryvky říkadel, rčení, písní, básní, citátů, sloganů, vtipů; různé průpovídky plus to, čemu bratři Grimmové ve dvou svých pohádkách (Doktor Vševěd a Duch v láhvi) říkají studentské hlouposti. Všechna říkadla, rozpočitadla, básničky, které si v úryvcích pamatuji z dětství, včetně kouzelného Stojí javor u potoka, říkají mu klíč: ..., jsou obsaženy v sbírce Prostonárodních českých písní a říkadel K. J. Erbena. Ta ale obsahuje odhadem jen na dva tisíce takových klenotů. G. Ward upozorňuje: Součástí seznamů, se kterými pracují programy na odhalování hesel, jsou také tisíce textů populárních písní.
     Rekonstrukce hesla je algoritmus prováděný až v okamžiku přihlášení. Jeho vstupem jsou snadno zapamatovatelná (nebo v naší paměti už dávno vězící) data; jeho výstupem je heslo. Jak má být dlouhé rekonstruované heslo? Uvažujme ideální případ - protivník zaútočí hrubou silou na heslo vytvořené z jeho pohledu náhodně zřetězením A36 (písmena latinské abecedy a čísla), 108-prvkové abecedy A108 (malá a velká písmena české abecedy, číslice a speciální znaky), 23300-prvkové abecedy A23300 (4 až 6 znaková slova v angličtině). Jaká je dostačující délka pro stupeň odolnosti s = 1, 2, ..., 5 ideálně rekonstruovaného hesla? Odpověď, kterou získáme pomocí vzorce (4) z 1. dílu, ukazuje tabulka 1.

Tabulka 1. Dostačující délka náhodně sestaveného hesla
Počet prvků množiny Stupeň odolnosti
1 2 3 4 5
36 5 7 8 12 14
108 4 5 6 9 11
23300 2 3 3 4 5

         Z tabulky vyplývá obecné pravidlo delší heslo je lepší. Jak si ale zapamatovat opravdu dlouhé rekonstruované heslo? Z následujících inspirativních příkladů hesel, které můžeme natahovat na potřebnou délku, pochází první dva od J. A. Hasketta:

  • g#hc#ec#... (hudba), 3:1,4:2,3:2,7:5... (fotbal), 58.Kb6!!d4 59... (šachy);
  • cesta bytem počínaje levou stěnou předsíně: obraz, telefon, šatna, věšák, zrcadlo, ...
V praxi jsem si ale ověřil, že například 73 znaková cesta bytem se poslepu (heslo se přece nezobrazuje) píše opravdu velmi špatně.

Vyztužení hesla

     Má-li být splněna podmínka: O konkrétním hesle vybraném uživatelem nelze předpokládat více, než že to může být se stejnou pravděpodobností kterékoliv heslo sestavené ze znaků určité abecedy; může být nutné doplnit rekonstrukci hesla nějakou z dále uvedených technik (jde ovšem zase jen o další rekonstrukci).

  • Z čísel podobná písmena a naopak.

    0 = O; 1 = I, L; 2 = Z; 3 = E; 4 = h; 5 = S; 6 = G; 7 = T; 8 = B; 13 = B.

  • Převody mezi číselnými soustavami.

    X = 10 = A = 1100.

  • Kódy.

    a = &; a, e = @; X = CH (cyrilice - latinka).

  • Ze znaku slova.

    12 = jedva; a = alfa; ř = rsháčkem; E = běl (A. Rimbaud Samohlásky); 2 = labutí šíje (K. Čapek Básník); 2 = úterý.

  • Použití konstrukčních znaků a obrázkové písmo.

    m = /\/\, IVI, ivi; u = |_|; w = \/\/; x = >< E, W, M = |_|_|; kapitán = ****; já = "o>=<".

  • Pohled do zrcadla.

    Z hesla EpoXid dostaneme EpoXid|biXoq3

  • Směs velkých a malých písmen.

    Jedním kanálem jdou dvě zprávy - Trésoriád a morseovkou zakódováno ACO (tRÉsOrIÁD). Místo morseovky můžeme využít i binární zápis čísel.

  • Šifrování zpaměti.

    Heslo lze dodatečně upravit hrou s písmeny - vlastně substitučním nebo transpozičním šifrováním. Můžeme vyměnit písmeno: za znak na stejné klávese, ale v opačné poloze (tR0SORI8T); za znak na klávese vlevo (Reíaieuýs); za další písmeno v abecedě (Usftpsjbe). Nebo provedeme jednoduchou transpozici (anagram) - soriádTré, éoiáTrsrd.

  • Přidání písmen.

    Je možné přidat další písmena. Heslo "zapsané" po částech do polí různobarevné vlajky je složeno ze dvojic začáteční písmeno barvy pole a část slova v tomto poli zapsaná (MTréBsoČriád - Trésoriád na české vlajce). Děti také vytváří tajná slova tak, že za některé slabiky přidají třeba -la- (Trélasolariádla).

     Mezi příklady dobře utvořených hesel najdeme v [MOLO] heslo, opět inspirované Hamletem, 2BorNOT2b. Žádná z výše uvedených technik ale není samospasitelná. Nemá smysl takto vyztužovat heslo vybrané metodou se stupněm odolnosti 0. Podobné obraty se mohou snadno stát, a často se již staly, součástí programů odhalujících hesla (viz kapitola Hesla jak do stráže, díl 1). Mají cenu především v případech, kdy, podle našeho názoru a výpočtů správně utvořené, heslo systém nechce přijmout např. z důvodu nedostačující délky nebo absence speciálních znaků.

Hledá se motiv pro netriviální heslo

     Ve dvou manuálech (OS/400 Security - Basic V3.1.0, IBM Corp.1995; MS Access User's Guide, Microsoft Corp. 1992) jsou po řadě uvedeny následující příklady zkratek (snadno zapamatovatelné heslo, těžko k uhádnutí, vytvoříte takto ...). Z věty July 4th fishing was poor (4. července nestálo rybaření za nic) vznikne heslo J4FWP a z věty I love my job today (dnes se mi práce líbí) heslo Ilmj2d.
     Uvážíte-li, kolikrát se za den přihlásíte a uznáte-li, že přívrženci teorie pozitivního myšlení mají alespoň v něčem pravdu, pak nepoužívejte heslo, které ve vás vyvolává negativní vnitřní postoj (... rybaření nestálo za nic).
     Slova mají hlubokou sugestivní sílu a jejich samotné odříkávání má hojivý účinek, napsal N. V. Peale v knize Síla pozitivního myšlení. Nevolte ale jako heslo zkratku žádné z možná stovky známých hojivých či stimulujících vět jako jsou Nevěřím v porážku a Klid a mír N. V. Pealeho nebo Má práce mne hluboce uspokojuje (nebo Dnes se mi práce líbí) L. L. Hayové z její knihy Miluj svůj život.
     Těžko si zapamatujeme heslo, které v nás probouzí vzpomínku na něco, na co bychom nejraději zapomněli. Heslo v nás nesmí vyvolávat negativní pocity, ale nemusí nutně vyvolávat pocity pozitivní. Klíč k našim pokladům může být zcela neutrální a přece může být užitečný. Používání netriviálního hesla je příkladem tolik prospěšného cvičení paměti. V článku Vysnívaný cieĺ: Mladosť a krása, který vyšel v časopise Eva (č.12 1996) čteme: Náš mozek potřebuje pravidelné cvičení. Paměťový jogging je speciální trénink uvádějící do činnosti šedé buňky. Zahrnuje počítání zpaměti, luštění křížovek, hádání, memorování textů. Konkrétní návod ve 4. čísle téhož časopisu z roku 1997 (Potrénujte si pamäť) pak ukazuje na přímou souvislost s výběrem hesla: Každé číslo od 0 do 9 spojte s nějakým pojmem, který vám dané číslo připomíná. Například 0 = vejce, 1 = komín, ... Potom napište na kus papíru náhodné šestičíslí. Například 231 425. Z čísel utvořte větu. 231 může znamenat Dvojče (2) trojlístku (3) roste na komíně (1) ...
     Kurz dokonalé paměti od J. Brothersové a E. P. F. Eagana (Knižní klub, Praha 1995) je praktickou příručkou školení paměti pro libovolný cíl. Ve vztahu k zapamatování hesla můžeme nejdůležitější myšlenky tohoto díla shrnout do následujících bodů:

  • Motiv a opakování vytvářejí spolehlivou paměť.
  • Zajímavé se dobře pamatuje.
  • Je třeba vložit význam textu, který si chceme zapamatovat, a nejde-li to, je nutné ho rozdělit do rytmických částí.
  • Pokud někdo sám vytvoří mnemotechnickou pomůcku, tak si ji také dobře pamatuje.

     Ten, kdo se odhodlá použít místo svého křestního jména složité a dlouhé heslo, trénuje svou paměť. Najít motiv pro takové počínání by nemělo být těžké, protože po lepší paměti touží každý.
     Představte si nyní, že si uživatel nové, složité a dlouhé heslo napíše dovnitř zvláštních malých desek ve tvaru identifikační karty. Při přihlašování desky otevře (udělané jsou tak, že se zavírají sami), heslo přepíše na klávesnici a odešle systému. Nemůže-li být, v průběhu rituálu přihlášení, heslo zachyceno protivníkem, pak má takové ověření totožnosti (přinejmenším z pohledu uživatele) prakticky stejné vlastnosti, jako ověření totožnosti identifikační kartou. Jediné čeho se uživatel bude bát je ztráta desek. A té se bude bát stále s výjimkou krátkých okamžiků přihlášení k systému, kdy bude držet desky v ruce. Uvažte hloubku rozdílu, je-li totéž heslo, místo v nějakých deskách, ukryto v paměti jednoho jediného člověka. Paměť je klenotnice a strážce všech věcí, napsal Cicero ve svém díle O řečníku.

Ukázky odpovědného výběru hesla

     Metody posuzované v 1. dílu článku nejsou odolné proti útoku výpočtem. Rekonstrukce hesla možná ano. V ideálním případě a při dostatečné délce hesla tato metoda odolá jakémukoliv útoku. Ideální případ nastane, když rekonstruované heslo délky d bude ze zorného úhlu protivníka vybráno se stejnou pravděpodobností, jako kterékoliv jiné přípustné heslo délky d. Bude to ale platit pro vyztuženou zkratku věty, kterou si dobře pamatuji? Asi ne. A jakou metodu tedy zvolit, abych měl jistotu?
     Ukažme si nejprve na příkladech, jak by mohla vypadat odpovědná volba hesla v různých situacích.

     Za prvé budeme uvažovat (poněkud idealizovaný) případ izolované terminálové sítě, která je chráněna proti odposlouchávání provozu na síti i nekontrolovanému přístupu k operační paměti serveru. Útok přihlášením je omezen na 10 neúspěšných pokusů za den a útok výpočtem je provozovatelem vyloučen. Při útoku 1. stupně s n = 10 je pro odpovědnou volbu hesla vyhovující každá z metod stupně odolnosti alespoň 1. Pro metodu iniciály a datum narození ale nemám konkrétní příklad, protože žádná osoba, jejíž datum narození v současné době znám, nesplňuje podmínku nikdo by ji se mnou nespojoval. Příklady, které mi náhodně vyšly u dalších metod z 1. dílu:


slovní salát - jaschar (jasný a špýchar);
slovo podle hláskového schématu - TYHUDAGI;
dvě krátká slova spojená speciálním symbolem - pyšný*hrozen.

Poznámka: I v dalším textu budu místo anglických slov používat jako prvky množiny A23300 česká slova délky 4 - 6 znaků.

     Každé z dosud uvedených hesel je dobré a podle G. A. Millera by mělo být každé z nich zapamatovatelné najednou. Mě osobně okouzlil pyšný*hrozen a snadno jsem si zapamatoval jaschar.

     Za druhé budeme uvažovat případ počítačového systému, ve kterém může být heslo sestaveno nejvýše z osmi prvků množiny A36. Z tabulky 1 vidíme, že náhodný výběr takového hesla je metoda se stupněm odolnosti 3. Většina z probraných metod neodolá útoku vyššího stupně než 1 a jednu z nejodolnějších - dvě slova spojená speciálním symbolem - nemůžeme v případě jen osmiznakového hesla použít. Co má odpovědný uživatel udělat na svou obranu v takové situaci? První možnost - rekonstrukce hesla. Tak například já bych mohl využít zkratku názvu své vlastní básně, napsané na vojně před sedmnácti lety a nikdy nikomu neukázané (to ovšem teď neplatí), "Když šli ste zpět z vohňů u Rudice" - KSSZZVUR. Tento obrat má pro mě jen omezené použití, protože žádné další svoje "tajné" dílo si už nepamatuji. Častá rada v literatuře zní: Nejlepší heslo je takové, které se každému kromě tebe zdá jako naprosto náhodně vybrané. Rekonstruované heslo by mělo mít právě tuto vlastnost. To je však ideál, ne skutečnost a předchozí příklad to potvrzuje. Nejlepšího výsledku dosáhnu jen tehdy, zvolím-li heslo, které ve mě nevyvolá negativní pocity, opravdu náhodně. Jak si ale zapamatuji osmiznakové náhodně sestavené heslo? Od G. A. Millera víme, že najednou to nepůjde. Osmiznakové heslo se nám do omezeného objemu naší krátkodobé paměti nevejde. Musíme se mu naučit; musíme je uložit do dlouhodobé paměti, jejíž objem nikdo nezná. Náhodně jsem sestavil heslo EX8LK5IO. Na první pohled jsem viděl, že pro jeho zapamatování si nemusím vymýšlet žádnou složitou mnemotechniku. EX8 mi prostě padlo do oka a 5IO je vyztuženě pětsetdeset nebo instrukce SIO - Start Input Output. Pozor na prostředek - začátek a konec se postarají sami o sebe (J. Brothersová), ale tady jsem s prostředkem LK neměl problémy - "elkáčko" byl typ kabelu, který jsem jako spojař na vojně používal. Podobné heslo bych při útoku stupně nejvýše tři mohl používat celý rok (kdybych je ovšem neprozradil v tomto článku).

     Třetí případová studie se týká systému, ve kterém je možné monitorovat provoz na síti. Na délku hesla se však nekladou žádná omezení. V tomto případě můžeme snadno překonat potíže s malým počtem prvků používané abecedy třeba tak, že místo symbolu + uvedeme slovo plus. Při útoku pátého stupně a při použití abecedy A36, A108, A23300 vidíme z tabulky 1, že bychom museli mít hesla s minimální délkou po řadě 14 a 11 znaků a 5 slov. Taková hesla opravdu nebudou snadno zapamatovatelná, ale proč bychom si měli heslo zapamatovat "najednou", jako kód, který nastavujeme na schránce v úschovně zavazadel nebo jako heslo do stráže, které se má zítra změnit? Zkusil jsem sestavit náhodně 11 znakové heslo z abecedy A108 - :q,K5|gSfŘĎ. To nevypadalo moc dobře, ale "ŘíĎa" na konci se nedal přehlédnout stejně jako rozdělení hesla na dvě velké (rytmické) části symbolem "|". Zajímavé se dobře pamatuje. A tak jsem v Hlavní skupině Microsoft Windows zvolil Ovládací panel a v něm Pracovní plochu; v definici Šetřiče obrazovky jsem vybral Marquee a v Nastavení Běžícího textu jsem vyplnil případně vybral: Poloha - ve středu, Barva pozadí - jasně zelená, Rychlost - co nejpomaleji, Text - :q,K5|gSfŘĎ. Ve Formátu textu jsem zvolil Písmo - Courier New CE, Styl písma - tučné, Velikost - 48, Barva - červená. Nastavení jsem uložil. Když jsem pak v definici Šetřiče obrazovky stiskl Test, rozsvítila se obrazovka žlutozeleně a uprostřed zprava doleva pomalu plynul výrazný červený text :q,K5|gSfŘĎ.

asi takhle

 

:q,K5|gSfŘĎ

 

V tomto provedení je pěkně vidět (a tak se i dobře pamatuje) symetrie ve skupině písmen gSf s osou - obráceným lomítkem - procházející písmenem S. A začátek? Jako návěští v příkazovém jazyku MS DOS - napřed ":" a pak identifikátor "q,K5". Ještě několikrát jsem si nechal heslo doslova projít před očima a pak jsem je vymazal v Nastavení Běžícího textu. V dalším kroku učení jsem tento řetězec psal znovu a znovu na příkazový řádek, aniž bych se přitom díval na displej. To je stejná situace, jako když píšu heslo a ono se na displeji nezobrazuje. K paměti zrakové (jak heslo vypadá napsané červeně na zeleném podkladu) se přidala paměť pohybová (kde jsou ty správné klávesy), možná i trochu sluchová, když to začalo mít jakýsi rytmus jako nějaké zaklínadlo. Přistihl jsem se totiž, že si notuji sám pro sebe lejbl kvé čárka ká pět škrk ... (lejbl - label, návěští; škrk - citoslovce čmárnutí tužkou). Když jsem se druhý den ráno sám sebe na nové heslo zeptal, zažil jsem zvláštní pocit. Před mým vnitřním zrakem se rozsvítil žlutozelený podklad a na něm začaly zprava doleva pochodovat mírně se třesoucí velké červené znaky :q,K5...

    V dalším pokusu jsem náhodně sestavil 14 znakové heslo z abecedy A36 - FFR9RZ9DJMX7BV. Začal jsem je psát do kolonky Text v Nastavení Běžícího textu, ale zdržel jsem se úvahou jakou barvu pozadí a písma zvolit. Přitom mě napadlo: Nemá František 9 písmen? Má! Několikrát jsem si řetězec znaků napsal a mnemotechnika se objevila sama: FFRantišek 9 ReZ 9 DeJ MiX sedmý Brněnský Veletrh. Nebylo nutné si zapamatovat více než: jedno jméno, kam vložit jeho délku, 3 jednoslabičná slova a jednu zkratku.

     [DoD] a [Reinhold] radí sestavit heslo náhodně z krátkých slov. Vyzkoušel jsem tři možnosti, jejichž popis doprovázím subjektivním komentářem:

  • Vybral jsem náhodně pět kratších slov z Trávníčkova slovníku. Typický příklad: být, jednak, značka, zleva, takže. Takové heslo mě ale dráždí a provokuje, i když je upravím na téměř smysluplnou větu Budu jednak značkou zleva, takže?
  • Vyplnil jsem náhodně vybranými slovy větné schéma přídavné_jméno podstatné_jméno sloveso přídavné_jméno podstatné_jméno. Po malých úpravách a dodání předložky jsem dostal větu: Střídmý dvořan trčel před chytráckým iontem. Zapamatoval jsem si ji snadno, protože by mohla sloužit jako popiska k ilustraci z jedné sci-fi knihy. Typickým zástupcem dalších výběrů by mohla být věta Zamilované jízdné uklízelo spokojený nočník. Tímto postupem, zvlášť když budeme trošku podvádět, můžeme získat relativně snadno zapamatovatelný, protože překvapující, legrační, okouzlující apod. výsledek.
  • Náhodně jsem vybral pět kratších neabstraktních podstatných jmen. Slova auto kniha nebe ... ze cvičení, které je uvedeno v knize Kurz dokonalé paměti, jsem si zapamatoval jako jednotlivé obrazy; na prvním bylo pod bledě modrým nebem červené auto a vedle něj ležela na zelené trávě otevřená bílá kniha (asi tak, jak by to namaloval K. Lhoták).

     Hesla, o kterých teď byla řeč, jsou dlouhá 30 - 40 znaků a mají nevýhody společné s už dříve popsanými opravdu dlouhými rekonstruovanými hesly. Snaha vložit význam textu nás nutí asociovat podobná hesla s drobnými příběhy (jak si jinak zapamatovat kdo byl zamilován a kdo spokojen?) nebo jednoduchými obrazy. V naší paměti je pak ovšem uloženo naprosto zbytečně heslo mnohem odolnější než to, které skutečně používáme.
     Osobně dávám přednost heslu dostačující délky, sestavenému spíše ze znaků než ze slov. Po té, co jsem takové heslo mnohokrát po sobě přečetl a/nebo napsal, se mi mnemotechnika vnutila sama právě tam a jen tam ("vynucená minimální mnemotechnika"), kde jí bylo opravdu zapotřebí. Z vlastní zkušenosti pak mohu říci, že pravidelným používáním hesla dojde po čase k "přečištění"; mnemotechnika se zapíše do dlouhodobé paměti (aby se objevila, jen když by jí bylo opravdu zapotřebí) a v operativní paměti zůstane jen holé heslo.

     Takže náhodné sestavení hesla je tou slibovanou rozumnou metodou? Ano. Odpovědnému uživateli dá jistotu, že udělal na svou obranu co mohl. V případě útoků vyšší intenzity a většího množství profilů je to jediné možné řešení. A jen zezačátku je vykoupeno obtížemi spojenými s užíváním hesel, která nejsou snadno zapamatovatelná (jen na výpravách kapitána Cooka námořníci neumírali na kurděje, jen zezačátku jim nechutnal vařený lžičník etc.).

Náhodně sestavená hesla

     V této kapitole si probereme implementační detaily spojené s náhodně sestavenými hesly a zásady jejich užívání. Už jsem napsal, že "vynucená minimální mnemotechnika" mě přivádí k heslům náhodně sestavovaným spíše ze znaků než ze slov. V příkladech, které uvádím dále, jsem se omezil téměř výhradně na případ množiny A36. Nejde tu jenom o zjednodušení výkladu. Používáte-li různá zařízení (terminály, PC) a různé počítačové systémy, jistě se také setkáváte s problémem různého nastavení klávesnic. Heslo se při psaní nezobrazuje. Obsahuje-li speciální znaky, pak je téměř nemožné je správně zadat z pracoviště, ze kterého se nepřihlašujete často. Z vlastní praxe vím, jaké problémy způsobuje uživatelům už jen různá poloha písmen Y a Z. V literatuře se dokonce můžeme setkat s radou tyto písmena v hesle vůbec nepoužívat.

Již mě nejednou potkalo, že jsem zapomněl heslo

..., napsal ve svých esejích M. de Montaigne. W. H. Ware v článku Information Systems Security and Privacy (CACM, č. 4 1984) chválil tehdejší opatření přijaté v National Laboratory v Los Alamos: Uživatel musí osobně vysvětlit správci systému proč se 3 - 5krát zmýlil při zadávání hesla; stane-li se mu to podruhé, musí podat písemné vysvětlení jeho vedoucí. Tato odsouzeníhodná praxe přinesla použití hesel další nevýhodu: protivník mohl uživatele poškodit i neúspěšnými pokusy o přihlášení.
     Správce systému může uživateli, který heslo zapomněl, snadno přidělit nové prvotní heslo. A přesto strach ze zapomenutí hesla zůstává. Důvody? Ztráty způsobené dočasným znepřístupněním dat; nepříjemnosti spojené s přiznáním vlastní zapomnětlivosti a roztržitosti; důležité profily, jejichž hesla nesmí být zapomenuta (např. heslo správce systému) Strach může vést k volbě nezapomenutelného, ale snadno odhalitelného hesla; může vést opravdu k zapomenutí hesla, neboť strach ... je pro myšlení zhouba (J. R. R. Tolkien Hobit); neboť ... čeho jsem se tolik obával, to mě postihlo (Job III. 25.). Člověk, který se bojí zapomenutí hesla, nezvolí náhodně sestavené heslo. Možným řešením tohoto problému je rozdělení hesla na dílčí hesla, které pak uschováme na různá místa. Jestliže heslo rozdělíme na k dílčích hesel, pak musí platit, že jejich složením získáme původní heslo, ale z libovolné (k - 1)-tice dílčích hesel nelze odvodit ani jeden znak původního hesla. Uživatel může být klidný, protože ví, že v nejhorším případě, který nemusí vůbec nastat, z dílčích hesel své heslo vždy složí.
     Uveďme si konkrétní příklad operace rozdělení a složení. Nechť je dáno L znaků s indexy 0, ..., L - 1 jako v tabulce 2, kde L = 36 (označení řádků a sloupců čísly 1 až 6 si teď nevšímejte).

Součtem znaků a s indexem i, b s indexem j je právě jeden znak c, jehož index k určíme výpočtem:


Je-li i + j < L, pak k = i + j; jinak k = i + j - L

     Označme operaci sčítání znaků +. Platí: "Q" + "A" = "Q"; "Q" + "K" = "0"; "Q" + "W" = "C". Máme-li sečíst dva řetězce znaků stejné délky, provedeme výpočet znak po znaku: "P19L" = "7UEM" + "SH59".

Rozdílem znaků a s indexem i, b s indexem j je právě jeden znak c, jehož index k určíme výpočtem:


Je-li i - j > 0, pak k = i - j; jinak k = i + L - j

Také operaci odečítání znaků, označme ji symbolem -, můžeme použít znak po znaku pro výpočet rozdílu znakových řetězců stejné délky: "X3K" = "A11" - "N8R".
     Rozdělit heslo "U10" na tři hesla může znamenat: určit náhodně dvě dílčí hesla "0O7" a "YHT"; vypočítat třetí dílčí heslo "U10" - "0O7" - "YHT" = "GGK". V praxi by mohl uživatel uložit "0O7" v zalepené obálce do firemního trezoru, "YHT" předat kolegovi a "GGK" uschovat doma. Při tomto rozdělení musí platit, že jediný člověk, který může heslo zpětně sestavit z jeho částí, je sám uživatel. V případě, že heslo zapomene, získá je opět výpočtem "0O7" + "YHT" + "GGK" = "U10". Při změně hesla, např. na "ATP", může zničit jen svůj domácí záznam "GGK" a nahradit jej výsledkem výpočtu "ATP" - "U10" + "GGK" = "W89". Zničením záznamu o dílčím hesle "0O7" nebo "GGK" uživatel zajistí, že jeho heslo bude nadále uloženo jen v jeho paměti.
     V praxi by mohl správce předat jedno dílčí heslo "X3K" zástupci a druhé "N8R" vedoucímu. V případě nutného zásahu správce systému, ale fyzické nepřítomnosti osoby momentálně vykonávající tuto funkci, by vedoucí předal zástupci svoje dílčí heslo a ten by odvodil výpočtem "N8R" + "X3K" = "A11" heslo správce.

Poznámka: Idea provádět podobné výpočty zpaměti s pomocí klávesnice namísto tabulky 2 je popsána v mém článku O heslech, tajných algoritmech a šifrování zpaměti, který vyšel v únorovém čísle časopisu Softwarové noviny v roce 1993.

Jak je sestavit nebo vybrat

     Jak vybrat náhodně prvek určité množiny? V každém programovacím jazyce je k dispozici funkce - generátor pseudonáhodných čísel (rand, RANDOM, RND). Jejím úkolem je z určité počáteční hodnoty vygenerovat posloupnost čísel, která by dostatečně věrně realizovala rovnoměrnou náhodnou posloupnost. Neudá-li se počáteční hodnota, bere se za ni obvykle číslo odvozené z momentálního času daného počítačovými hodinami. Čas v počítači je určen obsahem určitého registru a bez podrobných informací nemůžeme zodpovědět následující otázku: Když napíšeme program, který sestaví heslo ze 14 znaků 36 prvkové množiny, bude jeho možným výsledkem opravdu kterékoliv ze 3614 = 6 . 1021 slov? Pokud nemáme jistotu, že počátečních hodnot bude nejméně tolik jako hesel, považuji za rozumnější napsat program, který náhodně vybere pouze jeden ze 36 znaků. Tento program pak mohu spouštět postupně v různých časových okamžicích dne.

     Náhodně vybírat ovšem můžeme i bez počítače. Jednoduchými nástroji pro výběr hesla je tabulka 2 (bez dolních indexů ji najdete i v práci [Reinhold]) a jedna či dvě hrací kostky. Hodem kostkou určím řádek, ve kterém se znak nachází, druhým hodem nebo hodem druhou kostkou určím sloupec, ve kterém se znak nachází. Jinou možnost představuje tahání lístků s napsanými znaky z klobouku nebo v hračkářství zakoupená ruleta pro vylosování jednoho z čísel 0 až 35 a tabulka 2. A jak vybrat náhodně slovo? A. Reinhold proto navrhl celý systém Diceware (dice - anglicky hrací kostka). V souboru 7776 pevně zvolených anglických slov, z nichž každé je označeno pětičíslím obsahujícím číslice 1 až 6 (65 = 7776), si mohu vybrat náhodně jedno slovo pěti vrhy kostkou. Padnou-li mi čísla 5 - 6 - 3 - 2 - 2, vyberu slovo tak, že v souboru najdu řádek označený právě těmito čísly: 5 6 3 2 2 - synod. A jak jsem vybral náhodně slovo z Trávníčkova slovníku já? Abych si ulehčil popis algoritmu, nazvu knihu částí knihy obsahující hledané slovo. Vzal jsem tedy do rukou část knihy obsahující hledané slovo; rozdělil jsem její listy na dvě části; hodil jsem kostkou; padlo-li sudé číslo, obsahovala hledané slovo pravá část, padlo-li liché číslo obsahovala hledané slovo část levá. Pokud část knihy obsahující hledané slovo představoval jeden list, pak jsem proces přerušil; jinak jsem vzal část knihy obsahující hledané slovo a rozdělil jsem její listy na dvě části ... (rekurze). Asi po 10 až 11 hodech mi zbyl jediný list. Jedním hodem jsem pak určil stranu; jedním hodem sloupec na straně; jedním hodem horní nebo dolní polovinu sloupce ... Až zbylo 6 slov, z nichž jsem posledním hodem vybral. Kdybych místo kostky použil minci nebo házeč z pogů mého syna, mohl bych mluvit o systému Coinware nebo KINIware, ale kostkou se mi házelo líp.

Tabulka 2. pro sčítání, odčítání a náhodný výběr znaků.
  1 2 3 4 5 6
1
A0 B1 C2 D3 E4 F5
2
G6 H7 I8 J9 K10 L11
3
M12 N13 O14 P15 Q16 R17
4
S18 T19 U20 V21 W22 X23
5
Y24 Z25 026 127 228 329
6
430 531 632 733 834 935

Poznámka: V případě množiny A108 bychom její prvky umístili do třech tabulek po 36 prvcích a označili je postupně indexy 0 až 107. Algoritmus součtu a rozdílu znaků by se, pro L = 108, prováděl výše popsaným způsobem; náhodnému výběru znaku by předcházel hod kostkou určující, ze které tabulky bude znak vybírán (1, 2 - z první, 3, 4 - ze druhé, 5, 6 - ze třetí).

Zásady užívání

     Konvenční zásady užívání hesel nejméně 8 znaků dlouhých, snadno zapamatovatelných, která se rychle a snadno napíší a nelze je uhádnout jsou (viz např. [Madsen]):

  • Heslo nikdy nikomu neprozraďte.
  • Heslo nikdy nikam nezapisujte a neukládejte.
  • Pro různé profily používejte různá hesla (J. B. Madsen píše pro různé počítače).
  • Heslo za čtvrt až půl roku změňte.

     Zásady užívání náhodně sestavených hesel závisí na profilu, který chrání. Můžeme rozlišit dva druhy profilů:

1. Typickým příkladem je profil "obyčejného" uživatele; když svoje heslo zapomene, provozovatel mu znovu přidělí nějaké prvotní heslo. Literatura se zmiňuje jen o hesle tohoto profilu. Některé zásady si může každý odvodit sám, představí-li si, že jako heslo zvolil, podle doporučení G. Warda, něco tak příšerně ostudného, že by se propadl hanbou, kdyby to nezůstalo jeho tajemstvím.
     Předpokládejme, že používáme p takových profilů a z nich alespoň jeden relativně často. Pro každý profil určíme hodnotu nj, j = 1, ..., p. Z vybrané i-prvkové množiny sestavíme jedno heslo h délky d. Dostačující délkou hesla je (podle vztahu (4) z prvního dílu) nejmenší přirozené číslo d splňující nerovnost


d >= (log365 + log(n1 + n2 + ... + np) + 3) / logi

kde log označuje logaritmus, jehož základem je číslo 10. V dostatečném časovém předstihu se heslo naučíme. Pokud se v průběhu učení ukáže, že v nás vyvolává negativní myšlenky, vytvoříme je znovu. Jako obranu před strachem ze zapomenutí je můžeme rozdělit na několik dílčích hesel, které uložíme na různá místa. Před ukončením doby trvanlivosti právě používaných hesel změníme ve všech p profilech svoje heslo na h. Co nejdříve, ideálně už před změnou hesla, zničíme alespoň jeden záznam o dílčím hesle, který určitě nikdo neviděl.

2. Typickým příkladem druhého druhu profilu je profil správce systému. V nutných případech je žádoucí, aby jeho heslo mohl použít zástupce. Mám na mysli situace, kdy musí být proveden nějaký zásah opravdu rychle. Problém lze řešit rozdělením hesla na k dílčích hesel, z nichž každé bude předáno jedné kompetentní osobě (sdílení hesla). V kritické situaci tyto osoby předají záznamy o dílčích heslech zástupci, který z nich o samotě odvodí heslo správce systému. Protože se předpokládá předání hesla jiné osobě, nelze takové heslo použít pro žádný jiný profil. Sdílení hesla je pro správce systému zároveň obranou před zapomenutím.

     Mimo právě používaná hesla, jedno pro všechny "uživatelské" profily a jedno nebo více pro profily "správce systému", musí mít uživatel v paměti ještě jedno heslo. Rezervu pro případ, že by některé z hesel bylo kompromitováno a bylo nutné je (v jednom či více profilech) rychle změnit. K prozrazení hesla může dojít jeho zápisem namísto jména uživatele, jeho předáním zástupci v naší nepřítomnosti, ale i bez našeho vědomí. Sledujte pozorně, zda souhlasí datum a čas posledního přihlášení.
     V roce 1994 jsem používal ve třech různých sítích a šesti systémech celkem 11 "uživatelských" profilů. Snažil jsem se pamatovat si 11 hesel. A opravdu mě nejednou potkalo, že jsem méně užívané (i když tak snadno zapamatovatelné) heslo zapomněl. Náhodně sestavené heslo je jediným rozumným řešením problému mnoha profilů. Předpokládáme-li útok 4. stupně, pak heslo jako je FFR9RZ9DJMX7BV můžeme používat v 1666 profilech po celý rok. A nevadí, že některý z nich použijeme za ten rok jen jednou. Před uplynutím doby trvanlivosti si můžeme v předstihu zapamatovat jen jediné heslo. Buď jako nové heslo použijeme rezervu a zapamatujeme si novou rezervu, nebo si zapamatujeme nové heslo a dál budeme používat starou rezervu. A jen jedno jediné heslo můžeme zapomenout. Nauč mne umění zapomínat, napsal Cicero v díle O nejvyšším dobru a zlu.

Závěr

     V prvním dílu článku jsem položil několik otázek týkajících se hesel: 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?
     Poslední věta zní spíše jako výkřik zoufalství člověka, který si má zapamatovat další heslo, další bezpečnostní kód. Budeme-li ji však chápat opravdu jako otázku, pak je na ni jediná odpověď: Je nutné omezit počet používaných hesel na minimum a prodloužit dobu jejich užívání na maximum.
     Náhodně sestavené heslo s maximální možnou dobou trvanlivosti vzhledem k předpokládané intenzitě útoku je právě to, co potřebujeme. A to je také odpověď na Jak je rozumně vybrat?
     Minimální počet takových hesel (doprovázených minimální mnemotechnikou), jako harampádí v naší paměti, je určitě menším zlem, než možná desítky snadno zapamatovatelných hesel měněných každé tři měsíce. Náhodně sestavené, už nepotřebné heslo možná časem zapomeneme, přerušíme-li vždy okamžitě zaostřující myšlenku na ně. Půjde to určitě lépe, než u nějakého snadno zapamatovatelného a tedy i snadno a rychle vybavitelného hesla. To je odpověď na Jak na ty nepotřebné zapomenout?
     Rozdělení na dílčí hesla umožňuje sdílet heslo s kompetentními osobami. Chceme-li se, na omezenou dobu než začneme důvěřovat své paměti, pojistit proti zapomenutí hesla, můžeme uložit dílčí hesla na různá dobře vybraná místa. Používání náhodně sestavených hesel posiluje nejen naši paměť, ale i naši důvěru v ni. Nikdo se nebojí dělat to, o čem je přesvědčen, že dobře zvládl. A to je odpověď na Jak se zbavit strachu z jejich zapomenutí?
     Volba jediné metody přitom neochuzuje člověka s fantazií o poezii vynalézání a objevování, v tomto případě minimální potřebné mnemotechniky jen několika hesel (a to je odpověď na Jak si je zapamatovat?). K. Paustovskij napsal, že bez fantazie není poezie, a citát F. A. R. de Chateaubrianda o poezii dal název tomuto článku. Neznám výstižnější označení pro rozumné užití metody ověření totožnosti heslem.

Literatura

Zvýrazněné odkazy byly dostupné 17. listopadu 1999

hlavní stránka identifikace a autentizace rexx akvašneci zrakové klamy mail

změněno 19. července 2001
Copyright © 1998-2001 Vladimír Zábrodský

 

1