Jak kryptografie chrání blockchain?

Tento článek je výňatkem z knihy Laický průvodce bitcoinem od Logana Brutsche a je zde znovu publikován se svolením autora.

Kryptografie je věda o aplikaci matematických funkcí na části dat, aby byla zaručena jejich bezpečnost.

Mnoho populárních fikcí naznačuje, že může být napaden jakýkoli systém, pokud máte dostatečně dobrého hackera. Tento „hollywoodský hacker“ nefunguje tak, jak funguje skutečný svět – hacker musí najít zranitelnost v systému, který chce zneužít, jako je odemčená serverovna, snadno uhodnutelné heslo, nechráněný síťový port nebo „zadní vrátka“. nainstalován jako vnitřní úloha, abyste později získali neoprávněný přístup.

I když je pravda, nikdy nemůžeme zaručit, že daný systém nemá žádná zranitelná místa – koneckonců systémy jsou vytvářeny nedokonalými lidmi – sentiment, že „všechno může být hacknuto“, je falešné. Od počátku 90. let jsme měli přístup ke kryptografickým technikám, které jsou jednoduše imunní vůči hackerům. Právě aplikace takových technik může někdy ponechat prostor pro vykořisťování.

Samotnou kryptografii nelze hacknout za účelem vytvoření padělaného kryptografického podpisu (definováno krátce), stejně jako matematiku nelze hackovat, aby se vytvořil 2 + 2 = 5 – i když kryptografii i matematiku lze použít nesprávně. Pokud systém využívající kryptografii selže, je to proto, že návrhář nesprávně použil kryptografii. Není to proto, že kryptografie nefungovala, nebo proto, že někdo kryptoměnu „hacknul“ – stejně jako to není chyba matematiky, pokud vaše banka špatně zachází s vaším účtem, nebo chyba e-mailu, když si vaše matka stáhne neznámou přílohu a dostane počítačový virus . To je důležitý rozdíl, protože bitcoin je velmi přímá aplikace zavedené kryptografie.

Kryptografie není nová, nevyzkoušená technologie. Všechny kryptografické techniky používané bitcoiny se používají od založení internetu a jsou nezbytné pro mnoho běžných internetových protokolů používaných každý den. Věda o kryptografii je považována počítačovými vědci za spolehlivou a nezbytnou, stejně jako je NASA považována za spolehlivou a nezbytnou pro vědu.

Keypairs: Základní kámen kryptografie

Klíčové páry jsou základním kamenem kryptografie používané v blockchainech. Pár klíčů má dvě části: soukromý klíč a veřejný klíč. Tyto klíče ve skutečnosti nejsou nic jiného než velmi velká čísla se specifickým matematickým vztahem, používaným místo hesel a uživatelských jmen.

Zacházeli byste s veřejným klíčem, jako je vaše křestní jméno nebo uživatelské jméno: ve většině případů jej sdílíte s kýmkoli, kdo o to požádá, a ti, kteří jej mají, jej mohou použít k odkázání nebo kontaktování. Je to spojeno s vaší reputací (nebo v případě bitcoinů s vaší historií transakcí), takže můžete mít několik veřejných klíčů (a tedy několik párů klíčů), které používáte pro různé účely. Veřejný klíč lze použít k odkazu nebo zobrazení účtu, ale sám o sobě nemůže autorizovat žádnou akci s tímto účtem.

Se soukromým klíčem by se mělo zacházet jako s heslem: nemělo by se s nikým sdílet a slouží k ověření určitých akcí, jako je odesílání BTC.

Existuje však důležitý rozdíl mezi soukromým klíčem a heslem. Chcete-li použít heslo, musíte jej odeslat osobě nebo serveru, aby bylo možné ověřit jejich záznamy. Musíte věřit, že s heslem bude po jeho odeslání zacházeno odpovědně. Naproti tomu soukromý klíč lze použít k autentizaci, aniž byste jej kamkoli poslali. Jediné místo, které kdy bylo uloženo nebo přímo použito, je ve vašem místním zařízení.

To je důležité, protože pokud se můžete ověřit, aniž byste kamkoli poslali své tajemství, můžete mít úplnou kontrolu nad jeho zabezpečením – nejste zranitelní vůči výpadkům zabezpečení jiných systémů. To je podstatná součást toho, co dělá bitcoiny neuskutečnitelnými. V samotném bitcoinu nejsou uložena žádná hesla ani soukromé klíče, které by útočník mohl ohrozit, a přesto mohou uživatelé stále ověřovat transakce.

Jak byste ale mohli použít soukromý klíč k ověření transakce, pokud nikdy nikde soukromý klíč neposíláte? Odpověď má co do činění s matematickým vztahem mezi soukromým a veřejným klíčem: kryptografické podpisy.

Kryptografické podpisy

Existuje několik různých technik pro generování a ověřování kryptografických podpisů a matematické věty, které jim umožňují pracovat, přesahují rámec tohoto článku. Pro ty, kteří neznají kryptografii, by zde popsaný proces mohl zpočátku znít naprosto nemožně. Zřetelně si pamatuji, jak jsem měl tento dojem, když jsem před čtyřmi lety zahájil svůj výzkum bitcoinů.

Prozatím si jednoduše znovu povšimnu, že tyto technologie se používají v mnoha běžných internetových protokolech a jsou zavedenou součástí informační vědy.

Představte si dva lidi, Alice a Boba, kteří již veřejně obchodovali s veřejnými klíči. Alice chce poslat Bobovi zprávu, ale Bob je velmi podezřelý člověk a nebude věřit, že zpráva skutečně přišla od Alice, pokud to bez jakékoli pochybnosti nedokáže matematicky dokázat. Aby tento důkaz usnadnili, souhlasí s použitím kryptografického podpisu.

Ke generování podpisu používá Alice algoritmus generování podpisu svého počítače, který bere jako vstup její soukromý klíč a její úplnou zprávu a generuje kryptografický podpis. Poté pošle Bobovi tuto kombinaci zpráv / podpisů – ale zásadně, neposílá svůj soukromý klíč.

Když Bob obdrží zprávu a podpis, má k dispozici doplňkový algoritmus ověření podpisu. Tento algoritmus bere jako vstup zprávu a podpis a určuje veřejnost klíč páru klíčů, který Alice použila ke generování podpisu. Když Bob vidí výstup svého algoritmu Alicin veřejný klíč, matematicky dokázal, že podpis musel být vygenerován pomocí Aliciny klíčové dvojice, i když neví a nemůže vypočítat soukromou polovinu Aliciny klíčové dvojice.

Stručně řečeno, tento proces kryptografického podpisu umožňuje Bobovi ověřit, že zpráva nebyla vytvořena nebo upravena nějakou třetí stranou a musí být vygenerována pomocí soukromého klíče Alice, aniž by musel (nebo být schopen) znát její soukromý klíč. Vše, co potřebuje, je kombinace zprávy a podpisu a její veřejný klíč.

Intuitivně se to zdá nemožné a můžete mít pocit, že jste něco nepochopili. Pokud Alicin soukromý a veřejný klíč tak úzce souvisí a Alice použila svůj soukromý klíč ke generování podpisu, který Bob obdrží, jak je možné, že může odvodit její veřejný klíč, ale nemůže najít její soukromý klíč? Odpověď na tuto otázku vyžaduje mnohem hlubší porozumění matematice, než má většina lidí, a je daleko za rámec této knihy.

Přesto se na tuto techniku ​​spoléhá a používá se každý den a v rámci kryptografické komunity je považována za pevnou. Když navštívíte web a jeho adresa začíná https, „s“ označuje, že se web ověřil kryptografickým podpisem. Váš počítač použil algoritmus ověření podpisu, stejně jako Bob ve výše uvedeném příkladu, aby ověřil, zda web skutečně pochází ze správného páru klíčů. Na tento kryptografický podpis se spoléhá, ​​aby byla zajištěna šifrovaná a autentická veškerá další interakce mezi vámi a webem. Pokud tento test selže, moderní prohlížeče vás na to upozorní a web nahlásí jako nebezpečný.

Dostatečně velká čísla

Dříve jsem krátce zmínil, že soukromé a veřejné klíče fungují jako uživatelská jména a hesla, ale ve skutečnosti nejsou ničím jiným než extrémně velkým počtem se zvláštním matematickým vztahem. Vzhledem k tomu se často ptám na následující otázky:

“Nemůže někdo jen nechat počítač odhadnout nebo spočítat spoustu čísel a vyzkoušet je jako soukromé klíče?” Copak by nakonec nenarazili na soukromý klíč nějakého cíleného páru klíčů, a tím nezískali kontrolu nad touto identitou? “ To by v případě bitcoinu skutečně umožnilo útočníkovi ukrást peníze držené některým klíčovým párem.

Je to dobrá otázka, a přesto se to nestane. Jak již bylo řečeno, existuje několik bitcoinových adres s BTC v hodnotě milionů dolarů, které se za několik let nepohnuly – i když vše, co by bylo potřeba k jeho ukradení, je správný soukromý klíč – správné obrovské číslo! Pokud byste mohli uhodnout soukromý klíč k těmto adresám, peníze jsou vaše a můžete je poslat kamkoli. Na rozdíl od hesla můžete soukromé klíče kontrolovat místně na svém vlastním počítači a neexistuje žádný server, který by omezoval, kolikrát nebo jak rychle je vyzkoušíte.

Proč tedy tyto prostředky ještě nikdo neukradl? Odpověď spočívá v téměř absurdní velikosti čísel použitých jako soukromé klíče. Oni jsou dostatečně velký.

Začněme jednoduchým myšlenkovým experimentem. Představte si, že váš soukromý klíč byl dostatečně velký, že pokud by všechny světové počítače fungovaly společně, trvalo by to celých 24 hodin, než by to bruteforce uhádly. Pokud do svého soukromého klíče přidáte ještě jednu číslici, bude počítačům procházet desetkrát více permutací, takže místo jedné bude trvat 10 dní. Dalších šest číslic by ji přivedlo na 27 000 let.

V každém případě zůstává generování soukromého klíče – což vyžaduje pouze schopnost vytvářet náhodná čísla – triviální. Použití soukromého klíče ke generování podpisů a kontrola těchto podpisů vůči veřejnému klíči také zůstává výpočetně jednoduché. Práce potřebná k uhodnutí soukromého klíče však exponenciálně roste s každou další číslicí. Aby byly soukromé klíče „imunní“ vůči hádání hrubou silou, musíme přidat pouze dostatek číslic – musíme je pouze dostatečně zvětšit.

Jak velké je tedy dostatečně velké? Soukromé klíče používané v bitcoinech jsou 256bitová celá čísla, což představuje číslo dlouhé sedmdesát šest číslic. Síla velikosti tohoto čísla je neuvěřitelná. Následující ilustrace je těžce odvozena z knihy Bruce Schneiera Aplikovaná kryptografie, a je přesvědčivou ukázkou dostatečně velkého počtu.

Nejprve si uvědomte, že specifickým důsledkem druhého zákona termodynamiky je to, že existuje minimální energie potřebná ke změně jediného binárního bitu informace (změna 1 na 0 nebo naopak). To znamená, že jakýkoli výpočetní proces vyžaduje určitou minimální energii, aby mohl fungovat, bez ohledu na použitý hardware.

Nyní předpokládejme, že jste dokázali využít celý energetický výstup slunce pouze k napájení speciálně navrženého počítače, jehož úkolem je počítat nebo hádat soukromé klíče, v naději, že najdete soukromý klíč klíčového páru (který by mohl ovládat BTC)..

S trochou matematiky a termodynamiky zjistíte, že dokonale efektivní počítač dokáže spočítat 2178 hodnot vzhledem k celkovému ročnímu slunečnímu výkonu. Rozdělíme-li tuto hodnotu na počet možných soukromých klíčů, 2256, zjistíme, že tento hypotetický počítač bude schopen uhodnout nebo spočítat pouze 0,0000000000000000000003% z celkového počtu možných soukromých klíčů – vzhledem k celkové roční energetické produkci slunce.

Kromě toho se to jen počítá a nezahrnuje to mnohem složitější úkol skutečně zkontrolovat každý soukromý klíč a zjistit, zda odpovídá správnému veřejnému klíči. Takže při 0,0000000000000000000003% pravděpodobnosti, že se tento počítač stal přes pravý soukromý klíč do konce jednoho roku, by si to ani neuvědomil.

Tato čísla nemají nic společného s technologií zařízení; jsou to maxima, která jsou možná podle zákonů termodynamiky zavedených od 30. let 20. století. A silně naznačují, že útoky hrubou silou proti 256bitovým klíčům (které bitcoiny používají) budou neproveditelné, dokud nebudou počítače postaveny z něčeho jiného než hmoty a nebudou zabírat něco jiného než vesmír.

To je síla dostatečně velkého počtu. Nezáleží na tom, jak dobrý je hacker. Pokud nedokáže využít sílu tří set sextillion sluncí po dobu jednoho roku nebo jednoho slunce po dobu tří set sextillion let, jeho počítač nedokáže ani počet prostřednictvím všech soukromých klíčů – natož je otestovat nebo jinak použít.

Podrobnější pohled na bitcoiny a kryptografii najdete v knize Logana Brutscheho, Laický průvodce bitcoinem.