Čekejte prosím...textová verze
Krypta.cz - Magazín o informační bezpečnosti
Z praxe není ojedinělá situace, kdy se při ochraně (například) firemního tajemnství, know-how apod. z pochopitelných důvodů není možné spoléhat na jednu jedinou osobu. Je nutné vytvořit nějaký mechanizmus, jehož primárním úkolem bude rozdělit nějaká privilegia mezi několik lidí tak, aby při kompromitování jedné osoby či nějaké části skupiny byl předmět ochrany stále stejně dobře střežen.
V reálném světě mi na mysl okamžitě padnou české Korunovační klenoty - dveře do síně, kde jsou uloženy, mají několik zámků a jednotlivé jsou propůjčeny několika představitelům státu. Cesta fyzická, cesta bezpečná. Jak již to ale bývá, informační technologie hrají v životě čím dál tím větší roli a i tento problém má svého elektronického bratra. Říká se mu Secret splitting či Secret sharing.
Na rozdělení důvěrné informace existuje několik metod, nejjednodušší je použití běžného logického XORu. XOR je binární operace, která pro dva souhlasné bity (dvě nuly nebo dvě jedničky) vrací nulu, v opačném případě jedničku. V případě xorování větších objektů (například čísel) se kratší z nich (pokud nejsou stejně dlouhé) doplní zleva nulami a xorují se jednotlivé bity (tj. vlastně číslice ve dvojkové soustavě). Není těžké ověřit, že číslo dvakrát xorované stejnou hodnotou vrací opět hodnotu původní, tedy že (a XOR b) XOR b = a, jinak řečeno a XOR a = 0 pro jakékoliv a. Pokud chceme my, jakožto důvěryhodná a nezávislá "třetí" strana rozdělit zprávu M například mezi čtyři osoby, náhodně vygenerujeme tři řetězce A, B, C o stejné délce jako M a čtvrtý, D, dopočítáme xorovnáním předchozích a M. Tedy D = A XOR B XOR C XOR M. Není těžké ověřit, že díky výše zmiňované vlastnosti si tato skupinka lidí M lehce dopočítá pouhým sexorováním svých dílů, A XOR B XOR C XOR (A XOR B XOR C XOR M) = M.
Pokud je vše provedeno správně a třetí strana je skutečně důvěryhodná jak se o ní předpokládá, je tato metoda naprosto bezpečná. V minulých dílech povídání o šifrách jsme si popisovali tzv. jednorázový blok jakožto jedinou neprolomitelnou šifru. Těží jednak z toho, že klíč je generován náhodně a, jak už z názvu vyplývá, použit jen jednou a jednak z toho že je stejně dlouhý jako zpráva. Útočníkovi pak nepomůže ani útok hrubou silou (vyzkoušení všech možností), neboť pravděpodobnost, že dostane původní tajný text je stejná jako že obdrží Shakespearovy sonety či Zákon o dani z příjmu. Pokud se nad algoritmem zamyslíte, shledáte, že takovým jednorázovým blokem vlastně je.
Takovéto schéma má ale spoustu nevýhod. Předně je to nutnost generování a skladování čtyř stejně dlouhých čísel, řetězců či textů, což může být pravda vyřešeno klasickou symetrickou kryptografií. Místo dlouhého souboru pak jednotlivé osoby budou sdílet pouze svojí "část" krátkého šifrovacího klíče. Dále, jak již bylo řečeno, je potřeba nějaké důvěryhodné třetí stany. To samo o sobě je obrovská nesnáz. Ke skutečně bezpečnému elektronickému podpisu pro komunikaci se státem potřebujeme síť certifikačních autorit, úřadů, vyhlášek apod. a jak jsme daleko... Navíc nutný prostředník má v našem případě neomezenou moc, nejenže on zná tajemství celé, ale může jednotlivým účastníkům podstrčit jakékoliv vymyšlené hodnoty (D), ti podvod nepoznají dokud se nepokusí skládanku složit.
A co když jeden z nich svůj "díl" ztratí? Pak mají všichni problém, není způsob jakým by mohli výsledek složit. To vše proto, že zpráva nebyla "rozdělena" v pravém slova smyslu, ale jen zaxorována náhodnými hodnotami.
V praxi však může být situace komplikovanější. Předně můžeme požadovat, aby se tajemství dalo rekonstruovat i při nějakém počtu chybějících účastníků a to nejen proto, že by svůj díl mohl některý z nich ztratit. Dále by se hodilo, pokud by některá osoba mohla mít větší důležitost než statní. Například podpisové právo by mohl mít buď jednatel společnosti, nebo, v jeho nepřítomnosti, pokud se shodnou všichni tři jeho náměstci.
Tyto a další požadavky řeší komplikovanější algoritmy, které se anglicky nazývají threshold schemes, něco jako "prahová schémata". Zjednodušeně fungují tak, že zpráva M se rozdělí do n dílů (orig. shadows), přičemž m z nich může M rekonstruovat. Mluvíme pak o (m,n)-threshold scheme.
Na obrázku je vidět dělení šifrovacího klíče v PGP. Celkem jsou k dispozici 4 díly, které byly rozděleny mezi tři osoby. Platný podpis přitom zajistí alespoň dvě čtvrtiny.
Tím jsme zamezili faktickému zničení zprávy v případě ztráty nějakého dílu, navíc můžeme namodelovat jakoukoliv situaci chceme. A co pokud požadujeme větší důležitost toho či onoho člověka? Jednoduše mu dáme víc dílů, v popisovaném případě s obchodní společností bychom vytvořili (3,6)-threshold schema, přičemž zástupcům dáme po jednom (speciálně v tomto případě se také naskýtá možnost (3,3) přičemž jednatel bude vlastnit díly jeho zástupců).