Obsah
Jak možná víte,
Bitcoin prosazuje vlastnická práva pomocí algoritmu digitálního podpisu s využitím eliptických křivek (ECDSA). Tento algoritmus umožňuje vzít jedno číslo (tj.
soukromý klíč) a odvodit z něj veřejný klíč.
Kouzlo spočívá v tom, že zatímco veřejný klíč lze snadno získat ze soukromého klíče, opačný postup je nemožný. Váš soukromý klíč je vaším pasem do sítě Bitcoin. To vám umožňuje vygenerovat
adresu pro příjem
coinů a později umožní je utratit.
V tomto článku se podíváme na algoritmus Schnorrova podpisu, alternativu k ECDSA, která by mohla přinést v Bitcoinu zajímavé změny.
Digitální podpisy fungují stejně jako jejich papíroví předchůdci, ale jsou mnohem bezpečnější. Podpis na papíře může zfalšovat kdokoli, stačí trocha času a úsilí. Totéž se vám s robustním schématem digitálního podpisu nepodaří, i kdybyste měli k dispozici statisíce let.
Existuje několik způsobů použití digitálních podpisů. Oblíbený je například důkaz, že jste napsali určitou zprávu. Jak již bylo zmíněno, veřejný klíč můžete vytvořit ze soukromého klíče (obrovské číslo, které byste měli udržet v tajnosti). Toho dosáhnete provedením několika náročných matematických úkonů nad křivkou secp256k1. Odtud můžete také ze svého veřejného klíče vygenerovat veřejnou adresu.
Mějte na paměti, že ukázat komukoli svůj veřejný klíč je zcela bezpečné. Můžete jej přidat na své webové stránky nebo do svého životopisu na Twitteru, aby si ostatní mohli ověřit vaši totožnost. Stejně tak můžete sdílet své veřejné adresy s ostatními, aby vám mohli posílat kryptoměny.
Váš soukromý klíč vám umožní vytvořit digitální podpis. Sepsáním zprávy a provedením operace na ní pomocí svého soukromého klíče vytvoříte podepsanou zprávu. Kdokoli ji může vzít a porovnat s vaším veřejným klíčem a zkontrolovat, zda jste ji skutečně podepsali vy.
Jak to souvisí s Bitcoinem? Kdykoli provedete
bitcoinovou transakci, digitálně podepisujete zprávu, která říká, že
posíláte tyto coiny, které vám byly předtím poslány. Když je pak zpráva odeslána ostatním
uzlům v síti, které mohou zkontrolovat, zda podpis ECDSA odpovídá zprávě. Pokud tomu tak není, prostě ji odmítnou.
Schnorrovy podpisy představují jiný druh schématu. Fungují podobně jako algoritmus digitálního podpisu s využitím eliptických křivek, který používáme v současnosti, ale má oproti němu řadu výhod. Schnorrovy podpisy ve skutečnosti vznikly dříve než ECDSA, což mnohé vede k úvahám, proč nebyly do Bitcoinu integrovány od samého počátku.
Jedním z možných vysvětlení je, že si je nechal patentovat Claus P. Schnorr – tvůrce schématu. Platnost patentů vypršela počátkem roku 2008, několik měsíců před vydáním bílé knihy Bitcoinu, ale schéma stále nebylo plošně standardizováno.
Satoshi Nakamoto se proto rozhodl pro šířeji uznávaný (a
open-sourcový) ECDSA.
Schnorrovy podpisy jsou ve srovnání s jinými schématy poměrně jednoduché. Díky tomu jsou prokazatelně bezpečnější než jejich alternativy. Možná vám to na první pohled mnoho neřekne, ale mají ještě jednu mocnou vlastnost: linearitu.
Laicky řečeno, díky tomu je tento systém obzvláště atraktivní pro určité činnosti – především pro transakce s
více podpisy. Možná víte, že Bitcoin již více podpisů podporuje, ale nedělá to tím nejelegantnějším způsobem.
Když vytvoříte vícepodpisovou adresu, ten, kdo vám posílá finanční prostředky, nemusí vědět, jaké podmínky jste nastavili pro útratu vkladů. Nemusí ani vědět, že posílá prostředky na uspořádání s více podpisy – jedinou zvláštností adresy je, že začíná na „3“.
Jeho povahu však odhalíte, až budete chtít prostředky přesunout. Řekněme, že jste spolu s Alicí a Bobem použili sestavu 3 ze 3. Chcete-li utratit řekněme 5 BTC, musíte všichni tři poskytnout veřejné klíče a platné podpisy. Když přesunete prostředky z této adresy, celá síť se může pohledem do
blockchainu dozvědět, co se stalo.
Z hlediska ochrany osobních údajů to není dobré. K tomu je třeba dodat, že pokud vytvoříme větší uspořádání s více podpisy (např. 8 z 10), zabíráme v blockchainu poměrně dost místa. To se může prodražit, protože výsledkem bude zdlouhavá transakce – nezapomeňte, že čím více bajtů máte v transakci, tím více musíte zaplatit.
Schnorrovy podpisy se nabízí jako řešení těchto problémů se soukromím a
škálovatelností. Umožňují například
agregaci podpisů, která spojuje podpisy více signatářů do jednoho podpisu. Výsledný „hlavní podpis“ má stále stejnou délku jako běžný podpis jedné osoby, což vede k výrazné úspoře místa.
Kromě toho je díky kombinovaným podpisům pro pozorovatele mnohem obtížnější určit, kdo transakci podepsal (nebo nepodepsal). Ve schématech m z m (kde se musí všichni účastníci podepsat, aby mohli finanční prostředky utratit) byste ani nebyli schopni rozlišit mezi transakcemi s jedním a více podpisy.
Zásadní je, že Schnorrovy podpisy jsou základním stavebním kamenem pro další vývoj. Po jejich zavedení je lze využít ke zdokonalení kryptografických technologií, jako jsou
atomické výměny a
Lightning Network.
To si nejsme jistí. Stejně jako u většiny aktualizací protokolu Bitcoin může trvat nějakou dobu, než se širší komunita uživatelů Bitcoinu shodne na začlenění Schnorrova podpisu. Přispěvatelé do bitcoinového jádra Pieter Wuille, Jonas Nick a Tim Ruffing předložili návrh na vylepšení Bitcoinu (
Bitcoin Improvement Proposal, BIP), ale ještě je třeba udělat kus práce.
Společnost Blockstream již vydala implementaci
MuSig. Umožňuje agregaci podpisů a klíčů a může sloužit jako základ pro vlastní schéma Schnorrových podpisů v Bitcoinu.
Schnorrovy podpisy by mohly být začleněny do kódu jako
soft fork, což znamená, že by změna nerozdělila síť. Místo toho by se jednalo o dobrovolný upgrade. Přesto by bylo příliš optimistické předpokládat, že se jejich integrace v blízké budoucnosti dočkáme – může trvat ještě několik let, než bude dosaženo konsenzu.
Schnorrovy podpisy jsou jedním z nejvíce očekávaných milníků v současném plánu dalšího vývoje Bitcoinu. Díky jediné aktualizaci mohou přinést významné výhody v oblasti ochrany soukromí a
škálovatelnosti. Možná ještě zajímavější je, že také připravují půdu pro další vývoj
chytrých kontraktů Bitcoinu a pokročilejších konceptů, jako je
Taproot.