Lamportův podpis

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 31. prosince 2014; kontroly vyžadují 16 úprav .

Lamportův podpis je digitální  podpisový kryptosystém s veřejným klíčem. Může být postaven na libovolné jednosměrné funkci . Byl navržen v roce 1979 a pojmenován po svém autorovi, americkém vědci, Leslie Lamportovi [1] .

Popis

Ať má Alice 256bitovou kryptografickou hashovací funkci a kryptograficky silný generátor pseudonáhodných čísel . Chce vytvořit a používat Lamportův pár klíčů, soukromý klíč a jeho odpovídající veřejný klíč .

Vytvoření páru klíčů

K vygenerování tajného klíče používá Alice generátor náhodných čísel, který vygeneruje 256 párů náhodných čísel (celkem 2x256 čísel). Každé číslo se skládá z 256 bitů, takže celková velikost je 2x256x256 bitů = 16 KiB . Tato čísla budou Aliciným tajným klíčem a bude je uchovávat na tajném místě pro pozdější použití.

K vytvoření veřejného klíče Alice hashuje každé z 512 čísel soukromého klíče, čímž vytvoří 512 hashů po 256 bitech. Těchto 512 hashů tvoří Alicin veřejný klíč, který zveřejňuje.

Podpis zprávy

Nyní chce Alice zprávu podepsat. Nejprve zahašuje zprávu a získá 256bitový hash. Potom pro každý bit v tomto hashu vezme odpovídající číslo z tajného klíče. Pokud je například první bit v hash zprávy nula, vezme první číslo z prvního tajného páru klíčů. Pokud je první bit roven jedné, použije druhé číslo z prvního páru. A tak dále. Výsledkem je 256 náhodných čísel, jejichž velikost je 256 × 256 bitů = 8 KiB. Tato čísla tvoří podpis, který Alice posílá spolu se zprávou.

Všimněte si, že jakmile Alice použije svůj soukromý klíč, nesmí být už nikdy použit. Zbylých 256 čísel, která v podpisu nepoužila, Alice nesmí nikdy zveřejnit ani použít. Je lepší, aby je smazala, jinak se k nim někdo dostane a vygeneruje s nimi falešný podpis.

Ověření podpisu

Bob chce ověřit podpis, kterým Alice podepsala zprávu. Zprávu také zahashuje a získá 256bitový hash. Potom pro každý bit v tomto hashu vybere číslo z veřejného klíče Alice. Tato čísla jsou vybrána stejným způsobem, jakým Alice zvolila čísla pro svůj podpis. To znamená, že pokud je první bit hash zprávy nula, Bob vybere první číslo z prvního páru ve veřejném klíči. A tak dále.

Bob pak hashuje každé z 256 čísel z Alicina podpisu a získá 256 hashů. Pokud těchto 256 hashů přesně odpovídá 256 hashům, které právě získal z veřejného klíče Alice, Bob věří, že podpis je pravý. Pokud se neshodují, pak je to falešné.

Za zmínku stojí, že než Alice zveřejní podpis ke zprávě, nikdo nezná 2x256 náhodných čísel v tajném klíči. Nikdo tedy nemůže vytvořit správnou sadu 256 čísel k podepsání. Poté, co Alice publikuje podpis, nikdo stále nezná dalších 256 čísel, a tak nemůže vytvořit podpis pro zprávy, které mají jiný hash [2] .

Příklad

Nechte Alice poslat zprávu M = "Lamport" Bobovi, podepsat ji Lamportovým podpisem a použít 8bitovou hashovací funkci. To znamená, že původní zpráva bude převedena na 8bitový hash.

Generování klíčů

Pomocí generátoru náhodných čísel získá Alice osm párů náhodných čísel. Těchto 16 čísel je soukromý klíč Alice.

Soukromý klíč:

Aby Alice získala veřejný klíč, vypočítá hodnotu hash pro každé číslo ze soukromého klíče.

Veřejný klíč:

Alice zveřejní výsledný veřejný klíč veřejnosti.

Podpis zprávy

Alice chce podepsat zprávu M = "Lamport". Za tímto účelem vypočítá hašovací hodnotu této zprávy a přiřadí každý bit haše k jedné z hodnot v párech soukromých klíčů, čímž vytvoří podpis.

Podpis zprávy "Lamport":

Ověření podpisu

Bob obdrží podepsanou zprávu „Lamport“ a chce zkontrolovat, zda ji Alice skutečně poslala. K tomu používá veřejný klíč, který Alice zveřejnila. Převádí přijatou zprávu na hash a mapuje každý bit ve výsledném hashe na číslo z páru ve veřejném klíči. Poté zahašuje podpis zprávy a porovná výsledné dvě sady čísel. Pokud jsou si rovni, pak je podpis skutečný a zprávy skutečně odeslala Alice.

Sada čísel získaných z veřejného klíče:

Hash podpisu:

Protože jsou tyto sady stejné, podpis je skutečný.

Matematický popis

Klíče

Nechť  je kladné číslo, nechť  je množina zpráv a nechť je  jednosměrná funkce .

Pro každé a strana podepisující zprávu náhodně vybere a vypočítá .

Tajný klíč se skládá z . Veřejný klíč se skládá z hodnot . [3]

Podpis zprávy

Ať je  to zpráva.

Podpis zprávy je .

Ověření podpisu

Strana ověřující podpis ověřuje pro všechny .

K padělání podpisu zprávy by kryptoanalytik musel invertovat jednosměrnou funkci , což je považováno za výpočetně nemožné.

Zabezpečení

Kryptografická síla podpisů Lamport je založena na kryptografické síle hashovací funkce .

Pro každou hashovací funkci, která generuje n-bitový výtah, ideální odolnost proti obnově předobrazu a obnově druhé předobrazy předpokládá 2 n operací a 2 n bitů paměti v klasickém výpočetním modelu pro každé provedení hašovací funkce . Pomocí Groverova algoritmu je obnovení ideální hašovací funkce před obrazem omezeno operacemi O(2 n / 2 ) v kvantovém výpočetním modelu [4] .

Více podpisů zpráv

Jediným soukromým klíčem Lamport lze podepsat pouze jednu zprávu. To znamená, že pokud je podepsán určitý počet zpráv, musí být zveřejněn stejný počet veřejných klíčů. Pokud však použijete strom Merkle složený z veřejných klíčů, pak namísto publikování všech veřejných klíčů můžete publikovat pouze horní část stromu. To zvětšuje velikost podpisu, protože část hash stromu musí být zahrnuta do podpisu, ale umožňuje to použít jeden hash k ověření více podpisů. Podle tohoto schématu můžete podepisovat zprávy, kde  je hloubka stromu Merkle. Tzn., že teoreticky můžeme jeden veřejný klíč použít pro libovolný počet zpráv [5] .

Generování klíčů

Nejprve musíte vygenerovat soukromé jednorázové klíče společnosti Lamport a veřejné jednorázové klíče společnosti Lamport . Dále, pro každý veřejný klíč , kde se vypočítá jeho hash . A na základě těchto hodnot je postaven Merkle strom .

Uzly stromu očíslujeme tak, že index značí vzdálenost od tohoto uzlu k elementu listu a index označí pořadové číslo uzlu zleva doprava na stejné úrovni .

V našem stromu jsou hodnoty hash listové prvky, tedy . Každý nelistový uzel stromu je hash hodnotou ze spojení dvou potomků, tj. , a tak dále.

Máme tedy strom, jehož kořenovým prvkem je náš veřejný klíč .

Podepisování a ověřování zpráv

Chcete-li podepsat zprávu podle našeho schématu, musíte ji nejprve podepsat jednorázovým podpisem Lamport . To se provádí pomocí jednoho z párů veřejného/soukromého klíče .

je listový prvek stromu  odpovídající veřejnému klíči . Cesta od prvku list stromu k jeho vrcholu se skládá z prvků , kde  je prvek list a  je vrchol stromu. K výpočtu této cesty potřebujeme všechny potomky uzlů . Víme, že uzel  je potomkem uzlu . K výpočtu dalšího uzlu na cestě k vrcholu potřebujeme oba potomky node . Proto potřebujeme znát „bratra“ uzlu . Zavolejme mu . Takže, . Proto potřebujeme uzly pro výpočet vrcholu stromu. Vypočítáme je a uložíme.

Tyto uzly spolu s jednorázovým podpisem zprávy tvoří konečný podpis .

Příjemce zprávy má k dispozici veřejný klíč , zprávu a podpis . Nejprve zkontroluje jednorázový podpis zprávy . Pokud je pravý, příjemce vypočítá . A pak pro výpočty . Pokud se rovná , pak je podpis považován za autentický.

Různé optimalizace a implementace

Krátký tajný klíč

Namísto generování a ukládání všech náhodných čísel tajného klíče lze uložit jediné číslo příslušné velikosti. Obvykle se velikost volí tak, aby byla stejná jako velikost jednoho náhodného čísla v soukromém klíči. Tento klíč lze použít jako základ pro generátor náhodných čísel (CSPRNG), aby bylo možné v případě potřeby znovu vytvořit celou sekvenci tajných klíčů náhodných čísel.

Stejným způsobem lze klíč použít ve spojení s CSPRNG ke generování více klíčů Lamport. Preferovány jsou CSPRNG, které mají vysokou kryptografickou sílu, jako je BBS .

Krátký veřejný klíč

Lamportův podpis lze použít spolu se seznamem hashů, což umožňuje zahrnout pouze jeden hash do veřejného klíče. Tedy místo hodnot - . Aby bylo možné porovnat náhodná čísla v podpisu s hashem ve veřejném klíči, musí být v podpisu zahrnuty všechny hashe, které nejsou použity ve veřejném klíči, tedy hodnoty pro any . V důsledku toho se veřejný klíč výrazně zkrátí a velikost podpisu se přibližně zdvojnásobí.

Hash zprávy

Schéma digitálního podpisu společnosti Lamport nevyžaduje, aby byla zpráva m před podpisem hašována. Hašování lze použít například pro podepisování dlouhých zpráv, kde se bude podepisovat hash zprávy, nikoli zpráva samotná [6] .

Srovnání s jinými kryptosystémy

Hlavní výhody schématu jednorázového podpisu společnosti Lamport spočívají v tom, že může být postaveno na jakékoli jednosměrné funkci a že jeho algoritmus podpisu a ověření zprávy je výrazně rychlejší než algoritmy opakovaně použitelných podpisových systémů. Současně má schéma řadu nevýhod. Za prvé, nevýhodou je jednorázovost klíčů. To znamená, že při podepisování každé nové zprávy musíte vygenerovat nový pár, což vede ke komplikacím systému. Za druhé má schéma nevýhodu velké velikosti podpisu a páru veřejného a soukromého klíče [7] .

Tento systém má potenciál ve světle skutečnosti, že potenciální vývoj kvantového počítače ohrožuje bezpečnost mnoha široce používaných algoritmů, jako je RSA , přičemž Lamportova signatura zůstane i v tomto případě bezpečná [8] . Spolu s Merkle stromy lze kryptosystém Lamport použít k ověření více zpráv, což funguje jako poměrně efektivní schéma digitálního podpisu [9] .

Poznámky

  1. Lamport, 1979 , s. 2.
  2. Lamport, 1979 , s. 3-5.
  3. Katz , str. 2.
  4. Schémata M. I. Anokhina, N. P. Varnovského, V. M. Sidelnikova, V. V. Jaščenka, Lamporta a Naor-Junga . Datum přístupu: 17. prosince 2013. Archivováno z originálu 17. prosince 2013.
  5. Michael Szydlo, EFEKTIVNÍ VYUŽITÍ STROMŮ MERKLE . Získáno 24. listopadu 2013. Archivováno z originálu 17. dubna 2017.
  6. Lamport, 1979 , s. 6.
  7. Zaverucha, 2010 , str. jeden.
  8. Garcia , str. deset.
  9. Vadim Malykh, „Dlouhodobé uchovávání elektronických dokumentů“ . Datum přístupu: 13. prosince 2013. Archivováno z originálu 13. prosince 2013.

Literatura