SEBEOBRANA
PROTI HACKERŮM
 
 

Obětmi nikdy nekončící války hackerů s tvůrci počítačových systémů jsou uživatelé. Nejlevnějším prostředkem jejich sebeobrany by mohly být zabezpečovací programy.

     V současných operačních systémech se po přihlášení uživatele automaticky provádí posloupnost akcí, popsaná v určeném příkazovém souboru - scénáři připojení. Jednou z těchto akcí by mohlo být doplňující ověření totožnosti uživatele řízené zabezpečovacím programem. Ten by, v případě nesprávné odpovědi nebo reakce, relaci předčasně ukončil. Pro danou relaci by ovšem musely být splněny tyto podmínky:

  • provedení zabezpečovacího programu nelze ani zakázat ani přerušit (relace se ukončí);
  • přistupovat k zabezpečovacímu programu a souvisejícím datům se dá jen v průběhu relace.
  •      Zhruba před deseti lety vyšel článek [1]. S použitím právě zavedeného termínu lze jeho hlavní myšlenku vyjádřit takto: Zabezpečovací program by měl kontrolovat, spíš než znalost dalšího hesla (password), znalost algoritmu (passalgorithm). "Nabídněte svou odměnu tomu, kdo nám může vnuknout, jak obelstít chytrost ďáblů, jichž jsou tyto lesy plny ... ," říká zvěd v románu Jamese F. Coopera Poslední mohykán, ale Haskettův článek byl několikrát kritizován. Z diskuse s kritiky zůstala nezodpovězena otázka: Existuje dostatečný počet algoritmů, které se snadno pamatují i provádí zpaměti a přitom jsou jen ztěží odhalitelné ze vstupních a výstupních hodnot? Haskett žádný příklad takového algoritmu neuvedl; dnes už ověřovací algoritmy téměř nikdo nevymýšlí a málokterý operační systém použití zabezpečovacích programů (a tím i ověřovacích algoritmů) vůbec podporuje.
         Ale článek [3] popisuje ověřovací algoritmus, který může být užitečný, i když jej bude každý znát. Přijetí ověřovacích algo­ ritmů (a tím i zabezpečovacích programů) tedy nezávisí na zodpovězení výše uvedené otázky.
         V tomto článku je uveden příklad zabezpečovacího programu, který nekontroluje znalost algoritmu a přitom poskytuje, ovšem jen v speciálním případě, dokonalejší kontrolu přístupu, než vět­ šina dnes používaných technik ověření totožnosti uživatele.

    Zámek, od kterého mají všichni klíč

         Úloha, kterou budeme v dalším výkladu řešit, je vymezena už následujícími definicemi:

    Uživatel lokální sítě je člověk, kterému opravdu záleží na jeho datech a je ochoten udělat cokoliv, aby se nikdo jiný nepřipojil k systému pod jeho login jménem. Používá jen určité pracovní stanice, z nichž každou může obsadit, kdy se mu zlíbí. Z pohledu uživatele jsou tyto pracovní stanice umístěny buď v bezpeč­ né (B) nebo nebezpečné (N) zóně.

    V N - zóně nelze zachovat tajemství. Bez ohledu na to, zda to je nebo není už dnes možné, tu neoprávněná osoba může získat heslo a identifikační kartu, okamžitě odhalit ověřovací algoritmus a dokonce "okopírovat" a později věrně napodobit podpis, hlas, geometrii ruky atd. uživatele.

    V B - zóně je odpozorování hesla atd. vyloučeno. Vyloučeny jsou i pokusy připojit se v nepřítomnosti uživatele k systému pod jeho login jménem.

         Metoda ověření totožnosti by měla odpovídat podmínkám připojení uživatele k systému. Ale jakou metodu má použít uživatel, který obvykle pracuje v B-zóně a jen občas se má připojit k systému z N-zóny? Připomíná to jednu známou pohádku:

    Vlk chce sežrat kůzlátka, ale bojí se kozy. Koza opouštějící své děti se s nimi nemůže domluvit na nějakém hesle nebo algoritmu. Kůzlata jsou totiž známá tím, že vždycky vlkovi prozradí, co má ještě udělat, aby si ho mohla splést se svou maminkou. Proto jim koza o vlkovi říká: "Je to padouch , který se umí přetvařovat, ale podle hlasu a černých pracek ho lehce poznáte". Jenže vlk s hlasem zjemnělým křídou a tlapou namaskovanou pekařem a mlyná­ řem (takoví už jsou lidé) nakonec otevření dveří opravdu dosáhne. Návrat kozy popisují Jacob a Wilhelm Grimmové takto: Hledala děti, nikde nebyly. Volala je pořadě jménem, žádné neodpovědělo. Až když vyslovila jméno nejmladšího kozlíčka, zaslechla jemný hlásek: " Maminko, jsem v hodinách . "

         Dalo se nějak této hrůze zabránit?

    Vlk a sedm kůzlátek II

        "Neměli jsme se stěhovat," povzdechla si koza. Očekávala ticho a klid v útulné lesní chaloupce a zatím? Přes den se od nedalekého města ozývalo hučení děl a práskání mušket a v noci trápil kůzlátka kašel. A jakoby toho nebylo dost, za chaloupkou objevila stopy vlka.
         "Jaké je venku horko. Měla bych jít pro jídlo sama. Ale právě na to vlk čeká. Jak snadno by přemluvil mé děti, aby mu otevřely. A co by se dělo pak? Ti chudáčci by se snažili ukrýt na těch nejnemožnějších místech."
         Nástěnné hodiny začaly odbíjet.
         "Do těch by se schoval snad jen ten nejmenší." S pohledem upřeným na hodiny se zamyslela.

         "Konečně je stará pryč," zavrčel vlk, sáhl pod pařez a vytáhl připravené rekvizity. Za okamžik už pajdal se zdviženou prackou k chaloupce. Strčil do dveří - neotevřely se. Zaklepal.
         "Otevřete děťátka, to jsem já, vaše maminka," řekl hlasem vyhlazeným křídou a na okno položil tlapu obalenou v těstu a mouce. Ale v domku bylo ticho.
         "Co to na mě zkouší? Jestli si pamatují heslo, stačí říct cokoliv, a ti blbečci budou volat, že nejsem jejich maminka, protože ta by řekla to a to. A takhle vyžvaní prostě všechno, " myslel si vlk a vesele zavolal: "Harpík naříká".
         Slyšel jen jejich dech za dveřmi.
         "Proč neotvíráte?"
         "Protože maminka řekla, že přijde nejdřív ve dvanáct."
         Vlk se posadil a v zamyšlení si strčil namoučenou pracku do tlamy. Křída a teď ještě tohle... Kůzlátka se zájmem naslouchala podivným zvukům, které se před chaloupkou ozývaly. Ale vlk se brzy vzpamatoval, utřel si slzy a už ho bylo vidět, jak peláší k městu a ve městě ke zvonici. Co chtěl zvoníkovi? Až na ulici bylo slyšet vlkovo: "Jestli to neuděláš, přijdu, a sežeru tě." A už ho bylo vidět, jak peláší k lesu a lesem k chaloupce.
         Opravdu pozorně přitom vlka sledoval jen jeden člověk. A ten si řekl: "Konečně víme, jak se dostaneme dovnitř."

         Ve městě zazněl zvon. Koza přestala sbírat listí; udiveně se podívala do nůše a pak na slunce. Střelba v dálce postupně utichala. K chaloupce kráčel vlk a z tlamy mu kapaly sliny.
         "Otevřete, na Petrově už zvonili poledne."
         "Neotevřeme."
         "Proč?"
         "Na našich hodinách je teprve jedenáct."

         Když se koza vrátila, seděl vlk ještě přede dveřmi. Jejím rohům sice o vlásek unikl, ale pod kopcem vběhl přímo před ustupující vojáky. A ti jej chytili a vzali sebou.

    Časoprostorový zámek

        Jak bychom tedy poradili uživateli, který se má občas připojit k lokální počítačové síti z N-zóny?
         Předpokládejme, že v systému jsou pro každého uživatele uloženy kontrolní hodnoty Od_kdy a Odkud, které může měnit jen on sám. Hodnota Od_kdy určuje datum a čas, kdy nejdříve se smí uživatel připojit; hodnota Odkud určuje seznam adres pracovních stanic, ze kterých se smí připojit. Po připojení uživatele porovná systém kontrolní hodnoty s aktuálním časem a adresou použité pracovní stanice a v případě nesouhlasu relaci násilně ukončí. Pak postup připojení z N-zóny vypadá takto:

    1. V poslední relaci před odchodem z B-zóny uživatel:
      1. Nastaví svoje hodinky podle systémového času.
      2. Určí, kdy nejpozději do N-zóny dorazí, a podle toho změní hodnotu Od_kdy. V seznamu Odkud uvede pouze adresu pracovní stanice v N-zóně.

    2. Zvolenou pracovní stanici v N-zóně obsadí před časovým okamžikem Od_kdy a přihlásí se v systémovém čase ne menším než je hodnota Od_kdy. Na závěr poslední relace v N-zóně změní uživatel seznam Odkud tak, aby obsahoval pouze adresy pracovních stanic v B-zóně.

         Na první pohled tu o nic nového nejde. Vždyť už v knize Time - sharing computer systems (vydané před čtvrt stoletím) píše M. V. Wilkes, že přístup k systému je možné řídit heslem a omezením určitých uživatelů na používání určitých ovládacích pultů jen v určité době. Podobně i v systému Novell NetWare verze 3.11 může privilegovaná osoba jinému uživateli (a za podmínek popsaných v [2, s. 264-265, 274] i sama sobě) předepsat, které pracovní stanice a kdy smí používat. Postup připojení privilegovaného uživatele z N-zóny by se provedl pomocí příkazu SYSTIME (krok 1a), a utilitou SYSCON (krok 1b a 2). Ale za prvé, i "nejméně" privilegovaná osoba (správce svého vlastního účtu) si pak může volit kontrolní hodnoty libovolně, bez ohledu na omezení nastavená správcem systému. A za druhé, bezpečnost neprivilegovaného uživatele je touto možností ovlivněna asi tolik, jako bezpečnost kůzlat vyhlášením zákazu vycházení v určité dny a v určité (půl)hodiny v týdnu.

         V systému NetWare 3.11 lze zabránit už provedení určitého scénáře připojení volbou /Script v příkazu LOGIN. Ale kdyby operační systém obsahoval prostředky podporující tvorbu a používání zabezpečovacích programů, mohli bychom oba nedostatky snadno odstranit. Protože zabezpečovací program by přišel ke slovu až po přihlášení uživatele, nemohl by uživatel sám překročit omezení nastavená správcem systému. Jednou vytvořené programy, zabezpečovací a dialogový (pro změnu kontrolních hodnot), by přitom mohl používat i neprivilegovaný uživatel.
         Pro programátora by bylo asi nejjednodušší napsat program, který by ve svém textu obsahoval kontrolní hodnoty jako literály. Jejich nastavení by se pak provádělo pouhou úpravou části textu zabezpečovacího programu v editoru.
         Tak například uživatel, který by měl obsadit určitou stanici v N-zóně do čtvrt na dvanáct 25. května 1994, by mohl, v kroku 1b postupu připojení, upravit text zabezpečovacího programu tak, jak je uvedeno na následujícím obrázku. Program je napsán v jazyce REXX (příkazový interpret firmy IBM).


    /* ZABEZPEČOVACÍ PROGRAM */
    Odkud. = 0
    /* Adresy pracovních stanic */
    M27A = "0000022200001B403760"
    M27B = "0000022200001B1E47E7"
    NZ = "0000022200001B1EAAAA"
    /* Nastavení kontrolních hodnot */
    Od_kdy = "1994/05/25 11:15"
    Odkud.NZ = 1
    /* Kontrola */
    Adresa = NADR()
    if (NTIME() >= Od_kdy) & Odkud.Adresa
      then say "Hodiny staré mluví k všem"
      else "LOGOUT"

         Poznámky rozdělují jeho text do čtyř částí.

         První příkaz (Odkud. = 0) způsobí, že v dalším průběhu provádění programu má každý prvek pole Odkud, kterému nebyla přiřazena jiná hodnota, hodnotu 0 (nepravda).

         Část Adresy pracovních stanic usnadĺuje uživateli nastavení kontrolních hodnot. Složitá adresa (protokol IPX) se ztotožní s krátkým a snadno zapamatovatelným jménem. V našem příkladě jména M27A, M27B označují adresy pracovních stanic v B-zóně (v kanceláři uživatele - v místnosti číslo 27). Zkratka NZ označuje adresu stanice v N-zóně.

         V části Nastavení kontrolních hodnot se proměnné Od_kdy přiřadí datum a čas, kdy nejdříve se může uživatel připojit. Pro snadnost porovnání je datum a čas zapsán ve formátu rrrr/mm/dd hh:mm, kde hh=00..23. O funkci NTIME (použité dále v programu) předpokládáme, že vrací datum a čas připojení právě v tomto formátu. Prvkům pole Odkud, jejichž indexy jsou adresami pracovních stanic, ze kterých je dovoleno se připojit, se přiřadí hodnota 1 (pravda). Díky možnosti používat v programech jazyka REXX asociativní pole je pak snadné určit, zda adresa pracovní stanice patří nebo nepatří do seznamu povolených adres. Právě úpravami této části programu "nastavuje" uživatel kontrolní hodnoty v systému.

         Vlastní kontrola je řízena stejnojmennou částí programu. O použité funkci NADR předpokládáme, že vrací adresu místa připojení. Pokud datum a čas připojení není menší než Od_kdy a zároveň prvek pole Odkud, určený adresou místa připojení, má hodnotu pravda, zobrazí se uživateli příkazem say jednorázově použitelné "heslo systému" (něco málo navíc - jednoduchá obrana proti programu, který se vydává za login proceduru). V opačném případě se relace ukončí.

         Podobný dynamicky nastavitelný časoprostorový zámek může doplňovat ochranu heslem v reálnějších situacích typu "pro dnešek toho mám dost" nebo "odjíždím na čtrnáct dní na dovolenou" nebo v případě, když místo B-zóny uvažujeme "polobezpečnou" zónu, ve které je sice vyloučeno odpozorování hesla atd., ale nevylučují se pokusy o připojení v nepřítomnosti uživatele.
         A co dělat, když naše heslo bylo (patrně) odpozorováno? Měli bychom je co nejrychleji změnit. Samozřejmě, že to nemůžeme udě lat okamžitě, tam kde právě jsme. Ale kdy a kde vlastně, aby už nebylo pozdě? I tady by pomohl předem připravený zabezpečovací program - časoprostorový zámek.

    Vzdušné zámky?

         Známé případy (Willi Hacker, Velký červ v Internetu) ukázaly, že zdaleka ne každý uživatel je člověk, kterému opravdu záleží na jeho datech ... Pro login jméno "abc" volí uživatelé nej­ častěji hesla "abc", "cba" nebo "abcabc" (F.T.Gramp, R. Morris). Proto se metody ověření totožnosti uživatele tím, co zná právě on, nepovažují za příliš bezpečné. Ale ani v tomto ohledu nejsou všichni lidé stejní. Vhodnost nebo nevhodnost nějaké metody závisí především na podmínkách, za kterých se uživatel přihlašuje k systému. Změna podmínek by tedy měla vést ke změně metody. Protože tyto podmínky zná nejlépe sám uživatel, měl by to být on, kdo vybere nebo navrhne metodu, která je právě nejvhodnější. A je-li zároveň programátor?


    Přenesení tohoto způsobu myšlení do praktického života je tím užitečným, co se každý dobrý šachista často podvědomě učí: totiž trochu popřemýšlet v neobvyklé situaci, při každé nové úloze ať velké či malé analyzovat - najít realizovatelný plán a popadnout věc ze správného konce.

    Richard Réti (1889-1929)

    Snad se mi podařilo naznačit, že alespoň v některých případech mohou být zabezpečovací programy nejlevnějším prostředkem implementace takové metody. Kdyby byly i prostředkem pro uživatele snadno (tj. bez úpravy systémových modulů) dostupným, a to záleží na tvůrcích počítačových systémů, pak by vymýšlení obranných bariér mohlo být pro mnohé stejně zajímavou činností, jakou je dnes pro některé jejich překonávání.

    Literatura

    1. A. J. HASKETT: Pass-algorithms: A user validation scheme based on knowledge of secret algorithms. CACM, r. 27, 1984, č. 8, s. 777-781.
    2. NOVELL NETWARE: Concepts, Version 3.11, March 1991.
    3. V. ZÁBRODSKÝ: O heslech, tajných algoritmech a šifrování zpaměti. Softwarové noviny, r. 4, 1993, č. 2, s. 86-88.

    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ý