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] .
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íč .
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.
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.
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] .
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.
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.
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":
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ý.
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]
Ať je to zpráva.
Podpis zprávy je .
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é.
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] .
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] .
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íč .
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ý.
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 .
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í.
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] .
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] .