112 / 736BLIND

Blind Signature

Slepý podpis: potvrdit platnost, aniž podpisující pozná obsah

Představte si poukázku, kterou musí potvrdit vydavatel, ale nemá si při tom opsat její jedinečné číslo. Později pozná, že poukázku opravdu vydal, aniž ji podle podpisu přiřadí člověku, který si ji vyzvedl. Přesně tento zdánlivý rozpor pomáhá řešit Blind Signature. Je to jedna ze základních myšlenek elektronické hotovosti: ověřit platnost peněz, aniž samotné ověření vytvoří seznam všech nákupů jejich majitele.

Blind Signature neboli slepý podpis je kryptografický postup, při kterém žadatel před podpisujícím skryje zprávu, získá podpis této skryté podoby a potom skrytí odstraní. Zůstane použitelný podpis původní zprávy. David Chaum tento princip použil pro elektronickou hotovost. Při správném protokolu podpisující nedokáže z podpisové komunikace a pozdějšího tokenu určit, při kterém vydání tento token vznikl. Další stopy, například čas, částka nebo síťová adresa, tím automaticky nezmizí.

U běžného potvrzení si vydavatel může poznamenat jedinečné číslo poukázky i člověka, kterému ji předal. Když se poukázka vrátí z obchodu, umí oba záznamy spojit. Chaum princip slepého podpisu přibližoval obálkou s kopírovacím papírem: razítko zvenčí se přenese na lístek uvnitř, jehož číslo vydavatel nevidí. Po vyjmutí lístek nese platné potvrzení. Jde o názornou pomůcku, nikoli bezpečnostní návod s papírem a razítkem. Skutečný protokol používá čísla a matematiku, aby takové oddělení fungovalo i mezi počítači. [7] [1]

V jednoduchém příkladu chce Anna digitální poukázku na 100 sats. Sats jsou malé jednotky Bitcoinu. Peněženka, tedy aplikace pro správu a placení těmito poukázkami, vygeneruje nepředvídatelný tajný údaj, který bude poukázku rozlišovat, a pomocí další náhodné hodnoty ho matematicky zakryje. Této úpravě se říká zaslepení. Vydavateli odejde zakrytá zpráva, nikoli původní tajemství. Peněženka si údaje potřebné k odstranění zakrytí ponechá. Zaslepení není pouhé přejmenování souboru ani odstranění jména; musí mít přesně definované kryptografické vlastnosti. Pro názornost tu pracujeme s jedinou poukázkou; skutečná peněženka může částku sestavit z více poukázek různých hodnot. [8] [2]

Slepý podpis neznamená, že vydavatel podepíše všechno každému zdarma. Může nejprve ověřit Anninu platbu nebo odečíst odpovídající zůstatek. Zná požadovanou hodnotu 100 sats, ale nepotřebuje znát skryté číslo poukázky. Podpisový klíč je tajný číselný údaj, kterým program vydavatele vytváří podpisy. Hodnota poukázky může být svázána se zvláštním podpisovým klíčem pro danou částku; peněženka nemůže získat vyšší hodnotu pouhým přepsáním čísla v souboru. Vydavatel podepíše zakrytý vstup a vrátí výsledek. Oddělujeme zde dvě věci: proč smí Anna poukázku získat a podle čeho se později pozná konkrétní poukázka. [7] [8]

Anna nyní nepotřebuje vydavateli ukázat původní tajemství. Její peněženka sama odstraní náhodné zakrytí z vráceného výsledku. Pro tento krok se používá výraz unblinding. Dobře navržený postup ponechá platné potvrzení zprávy, kterou peněženka připravila na začátku. Podpisový klíč vydavatele přitom nezíská. Uživatel vidí novou částku v peněžence; vytváření a odstraňování matematického obalu probíhá na pozadí. Výslednému datovému dokladu se často říká token. Není to samostatný bitcoin na blockchainu, společném záznamu bitcoinových transakcí, ale doklad nároku vůči jeho vydavateli. [2] [8]

Ověřování se ptá, zda potvrzení odpovídá zprávě a správnému klíči vydavatele. U slepých podpisů založených na kryptografickém systému RSA k tomu stačí veřejný klíč; různé jiné konstrukce mohou potřebovat další důkaz nebo součinnost vydavatele. Z toho ale neplyne, že poukázka ještě nebyla použita, že ji nikdo jiný nezkopíroval nebo že má vydavatel dost rezerv k vyplacení. Jsou to tři další otázky. Stejně jako pravá, ale už uplatněná vstupenka neopravňuje k dalšímu vstupu, i kryptograficky správný doklad může být pro další platbu nepoužitelný. [2] [10]

Anna pošle poukázku Petrovi. Protože jde o data, může jí zůstat stejná kopie. Samotný slepý podpis neumí vymazat soubor z jejího zařízení. V běžném online systému proto příjemcova peněženka předloží token vydavateli, který ověří platnost a zkontroluje, zda token se stejným tajným údajem už nebyl utracen. Při přijetí ho označí jako použité a může Petrovi vydat nový token pomocí stejného postupu slepého podepisování. Anna nezná nové Petrovo tajemství. Pokud by někdo zkusil utratit starou kopii znovu, evidence ji odmítne. Této opakované útratě týchž prostředků se říká double spend; její řešení je další část platebního systému. [9] [8]

Ochrana musí působit i opačným směrem: klient nemá z povoleného podpisování vytvářet další platné doklady s novými tajemstvími. Tato vlastnost se nazývá nepadělatelnost. U slepého podepisování se zvlášť zkoumá one-more unforgeability: zda útočník po určitém počtu podpisových interakcí nedokáže předložit ještě jednu novou platnou dvojici zprávy a podpisu navíc. Zkopírování téže dvojice je jiný problém, popsaný v předchozí části. Správná kryptografie také nenahradí kontrolu nároku, částek a povoleného tvaru tokenu na serveru. Teprve dohromady mohou tyto kontroly bránit neoprávněnému vydávání hodnoty. [2] [3]

Vydavatel může vědět, kdy Anna získala tokeny a jakou měly hodnotu. Při uplatnění může znát čas, částku nebo síťovou adresu příjemce. To jsou metadata, tedy údaje doprovázející vlastní platební doklad. V malé skupině uživatelů může neobvyklá částka nebo okamžitá navazující platba výrazně usnadnit odhad souvislosti. Záleží i na společných ověřených klíčích: klíč přidělený jen jedné osobě by ji mohl označit. Slepota protokolu chrání konkrétní vazbu mezi podpisem a jeho vydáním, ne všechny okolní informace. Ani napadenou peněženku nebo nesplněný závazek vydavatele podpis nevyřeší. [7] [2]

Na Chaumově myšlence stojí elektronická hotovost, historicky spojená s DigiCash. Dnes ji v bitcoinovém prostředí využívají Cashu a Fedimint; propojení s Lightning Network (síť pro rychlé bitcoinové platby) usnadňuje příchod a odchod prostředků. Nejde však o stejnou konstrukci jako RSA. Základní Cashu ověřuje token pomocí tajného klíče vydavatele, kterému se zde říká mint; rozšíření NUT-12 přidává důkaz pro ověření podpisu veřejnými údaji, nikoli důkaz dosavadní neutracenosti. Fedimint rozděluje správu mezi skupinu provozovatelů. V obou případech uživatel drží nárok vůči vydavateli a závisí na jeho úschově a dostupnosti. Soukromí kupujícího může být cílem i jinde: GNU Taler ho například kombinuje s dohledatelností příjmů obchodníků. [5] [6] [10] [4]

Zjednodušené schéma lze zapsat několika vztahy. Zprávu bezpečně zakódujeme jako číslo m; veřejný klíč tvoří n a e, soukromou část označíme d. Žadatel zvolí náhodné r, které má vůči n násobný inverzní prvek r⁻¹, a odešle m′ = m·r^e mod n. Značka mod n znamená počítání se zbytky po dělení n. Podepisující vrátí s′ = (m′)^d mod n a žadatel získá s = s′·r⁻¹ mod n. Při ověření platí s^e mod n = m. Právě r⁻¹ odstraní zakrytí. Tyto vztahy vysvětlují mechanismus, ale nejsou hotovým bezpečným programem. RFC 9474 navíc určuje přípravu zprávy a podpisové schéma RSA-PSS včetně bezpečného kódování, kontroly vstupů i oddělení podpisových klíčů; náhodnost a správná varianta protokolu jsou podstatné. [2] [3]

Pro nejúplnější obraz čtěte toto heslo společně s David Chaum, Chaumian eCash, DigiCash, Cashu, Fedimint, Soukromí v Bitcoinu. Opačným směrem na něj odkazují také DigiCash, Chaumian eCash, Reusable Proofs of Work, Fedimint.

DOC · 001David Chaum — Blind Signatures for Untraceable PaymentsPrimární zdroj DOC · 002RFC 9474 — RSA Blind SignaturesSpecifikace DOC · 003IRTF/CFRG — RFC 9474 publication recordSpecifikace DOC · 004GNU Taler — PrinciplesPrimární zdroj DOC · 005Cashu protocol specificationsSpecifikace DOC · 006Fedimint — How Federations WorkPrimární zdroj DOC · 007David Chaum — Security without IdentificationPrimární zdroj DOC · 008Cashu NUT-00 — Notation and modelsSpecifikace DOC · 009Cashu NUT-03 — Swapping tokensSpecifikace DOC · 010Cashu NUT-12 — DLEQ proofsSpecifikace
Revidováno: Primární zdroje · Nejde o investiční doporučení