Tento článok je úryvkom z knihy Laický sprievodca po bitcoinoch od Logana Brutscheho a je tu opätovne publikovaná so súhlasom autora.

Kryptografia je veda o uplatňovaní matematických funkcií na časti údajov s cieľom zaručiť ich bezpečnosť.

Mnoho populárnych fikcií naznačuje, že napadnúť môže byť akýkoľvek systém, pokiaľ máte dosť dobrého hackera. Tento „hollywoodsky hacker“ nefunguje tak, ako funguje skutočný svet – hacker musí nájsť zraniteľnosť v systéme, ktorý musí zneužiť, ako napríklad odomknutú serverovňu, ľahko uhádnuteľné heslo, nechránený sieťový port alebo „zadné vrátka“. nainštalovaný ako interná úloha, aby ste neskôr získali neoprávnený prístup.

Aj keď je pravda, nikdy nemôžeme zaručiť, že daný systém nemá žiadne zraniteľné miesta – systémy sú nakoniec vytvárané nedokonalými ľuďmi – sentiment, že „všetko sa dá hacknúť“, je falošný. Od začiatku 90. rokov sme mali prístup ku kryptografickým technikám, ktoré sú jednoducho odolné proti hackerstvu. Práve použitie takýchto techník môže niekedy nechať priestor na vykorisťovanie.

Samotnú kryptografiu nemožno hacknúť, aby sa vygeneroval falošný kryptografický podpis (definovaný krátko), rovnako ako nemožno hacknúť matematiku, aby sa vytvoril kód 2 + 2 = 5 – hoci kryptografiu aj matematiku je možné použiť nesprávne. Ak systém používajúci kryptografiu zlyhá, je to preto, že návrhár nesprávne použil kryptografiu. Nie je to preto, že by kryptografia nefungovala, alebo preto, že niekto kryptomenu „hackol“ – rovnako ako to nie je chyba matematiky, ak vaša banka nesprávne spravuje váš účet, alebo chyba emailu, keď si mama stiahne neznámu prílohu a dostane počítačový vírus . Toto je dôležitý rozdiel, pretože bitcoin je veľmi priamo aplikáciou zavedenej kryptografie.

Kryptografia nie je nová, nevyskúšaná technológia. Všetky kryptografické techniky používané bitcoinom sa používajú od vzniku internetu a sú nevyhnutné pre mnoho bežných internetových protokolov používaných každý deň.. Veda o kryptografii je považovaná počítačovými vedcami za spoľahlivú a nevyhnutnú rovnako, ako aj NASA považuje raketu za spoľahlivú a nevyhnutnú..

Keypairs: Základný kameň kryptografie

Kľúčové páry sú základným kameňom kryptografie používanej v blockchainoch. Pár kľúčov má dve časti: súkromný kľúč a verejný kľúč. Tieto kľúče nie sú ničím iným ako veľmi veľkým počtom čísel so špecifickým matematickým vzťahom, ktorý sa používa namiesto hesiel a používateľských mien.

Zaobchádzali by ste s verejným kľúčom, ako je vaše krstné meno alebo používateľské meno: vo väčšine prípadov ho zdieľate s každým, kto o to požiada, a tí, ktorí ho majú, ho môžu použiť na váš odkaz alebo kontakt. Je to spojené s vašou reputáciou (alebo v prípade bitcoinu s vašou históriou transakcií), takže môžete mať niekoľko verejných kľúčov (a teda niekoľko párov kľúčov), ktoré používate na rôzne účely. Verejný kľúč je možné použiť na referenciu alebo zobrazenie účtu, nemôže však sám autorizovať akúkoľvek akciu v danom účte.

So súkromným kľúčom by sa malo zaobchádzať ako s heslom: nemalo by sa s nikým zdieľať a používa sa na overenie určitých akcií, napríklad odosielania BTC..

Medzi súkromným kľúčom a heslom je však dôležitý rozdiel. Ak chcete použiť heslo, musíte ho poslať osobe alebo serveru, aby ho bolo možné skontrolovať v jeho záznamoch. Musíte sa spoľahnúť, že s heslom sa bude po jeho odoslaní zaobchádzať zodpovedne. Naopak, súkromný kľúč je možné použiť na overenie vašej totožnosti bez toho, aby ste ho kamkoľvek poslali. Jediné miesto, ktoré je kedy uložené alebo priamo použité, je vo vašom miestnom zariadení.

To je dôležité, pretože ak sa môžete autentifikovať bez toho, aby ste svoje tajomstvo kamkoľvek poslali, môžete mať úplnú kontrolu nad jeho bezpečnosťou – nie ste zraniteľní voči bezpečnostným výpadkom iných systémov. Toto je podstatná súčasť toho, čo robí bitcoiny neprekonateľnými. V samotnom bitcoine nie sú uložené žiadne heslá ani súkromné ​​kľúče, ktoré by útočník mohol narušiť, a napriek tomu môžu používatelia stále overovať transakcie.

Ako by ste však mohli použiť súkromný kľúč na overenie transakcie, ak súkromný kľúč nikdy nikde neposielate? Odpoveď sa týka matematického vzťahu medzi súkromným a verejným kľúčom: kryptografické podpisy.

Kryptografické podpisy

Existuje niekoľko rôznych techník na generovanie a validáciu kryptografických podpisov a matematické vety, ktoré im umožňujú pracovať, presahujú rámec tohto článku. Pre tých, ktorí kryptografiu nepoznajú, by tu opísaný proces mohol spočiatku znieť vyslovene nemožne. Výrazne si pamätám, že som mal tento dojem, keď som pred štyrmi rokmi začal s výskumom bitcoinu.

Zatiaľ si opäť jednoducho všimnem, že tieto technológie sa používajú v mnohých bežných internetových protokoloch a sú pevnou súčasťou informačnej vedy.

Predstavte si dvoch ľudí, Alice a Boba, ktorí už s verejnými kľúčmi osobne obchodovali. Alice chce poslať Bobovi správu, ale Bob je veľmi podozrivý človek a nebude dôverovať tomu, že správa skutočne prišla od Alice, pokiaľ to mimo všetkých pochybností nedokáže matematicky. Na uľahčenie tohto dôkazu súhlasia s použitím kryptografického podpisu.

Na vygenerovanie podpisu používa Alice algoritmus generovania podpisu na svojom počítači, ktorý berie ako vstup jej súkromný kľúč a jej celú správu a generuje kryptografický podpis. Potom pošle Bobovi túto kombináciu správ / podpisov – ale čo je zásadné, neposiela jej súkromný kľúč.

Keď Bob prijme správu a podpis, má k dispozícii doplnkový algoritmus overenia podpisu. Tento algoritmus berie ako vstup správu a podpis a určuje verejné kľúč páru kľúčov, ktorý Alice použila na generovanie podpisu. Keď Bob vidí výstup svojho algoritmu z Alicinho verejného kľúča, matematicky dokázal, že podpis sa musel vygenerovať pomocou Alicinho kľúčového páru, aj keď nevie a nevie vypočítať súkromnú polovicu Alicinho kľúčového páru.

Stručne povedané, tento proces kryptografického podpisu umožňuje Bobovi overiť, že správa nebola vytvorená alebo upravená treťou stranou a musí byť vygenerovaná pomocou Aliceinho súkromného kľúča bez toho, aby musel (alebo byť schopný) poznať jej súkromný kľúč. Všetko, čo potrebuje, je kombinácia správy a podpisu a jej verejný kľúč.

Intuitívne sa to zdá nemožné a môžete mať pocit, že ste niečo nepochopili. Ak sú Aliceho súkromný a verejný kľúč tak úzko prepojené a Alice pomocou svojho súkromného kľúča vygenerovala podpis, ktorý Bob dostane, ako to, že môže odvodiť jej verejný kľúč, ale nemôže nájsť jej súkromný kľúč? Odpoveď na toto vyžaduje oveľa hlbšie pochopenie matematiky, ako má väčšina ľudí, a je ďaleko mimo rozsah tejto knihy.

Napriek tomu sa na túto techniku ​​spolieha každý deň a v kryptografickej komunite sa považuje za pevnú. Keď navštívite webovú stránku a jej adresa sa začína https, „s“ označuje, že sa web overil kryptografickým podpisom. Váš počítač použil algoritmus na overenie podpisu, rovnako ako Bob vo vyššie uvedenom príklade, na overenie, či web skutočne pochádza zo správneho páru klávesov. Tento kryptografický podpis sa spolieha, aby sa zabezpečila šifrovaná a autentická akákoľvek ďalšia interakcia medzi vami a webovou stránkou. Ak tento test zlyhá, moderné prehliadače vás upozornia a označia web ako nebezpečný.

Dostatočne obrovské čísla

Predtým som stručne spomenul, že súkromné ​​a verejné kľúče fungujú ako používateľské mená a heslá, ale v skutočnosti nie sú ničím iným ako extrémne veľkým počtom so špeciálnym matematickým vzťahom. Z tohto dôvodu dostávam často nasledujúce otázky:

„Nemôže niekto mať iba počítač, ktorý dokáže odhadnúť alebo spočítať množstvo čísel a vyskúšať ich ako súkromné ​​kľúče? Nestretli by sa nakoniec so súkromným kľúčom nejakého zacieleného páru kľúčov, a tým by získali kontrolu nad touto identitou? “ V prípade bitcoinu by to útočníkovi skutočne umožnilo ukradnúť peniaze, ktoré vlastní nejaký pár kľúčov.

Je to dobrá otázka, a napriek tomu sa to nestane. Ako už bolo uvedené vyššie, existuje niekoľko bitcoinových adries s BTC v hodnote miliónov dolárov, ktoré sa za posledné roky nepresunuli – aj keď na ich ukradnutie bude potrebný len správny súkromný kľúč – správne obrovské množstvo! Ak by ste mohli hádať súkromný kľúč k týmto adresám, peniaze sú vaše, ktoré môžete poslať kamkoľvek. Na rozdiel od hesla môžete súkromné ​​kľúče skontrolovať lokálne na svojom vlastnom počítači a neexistuje žiadny server, ktorý by obmedzoval koľkokrát alebo ako rýchlo ich vyskúšate.

Prečo teda ešte nikto neukradol tieto prostriedky? Odpoveď spočíva v takmer absurdnej veľkosti čísel použitých ako súkromné ​​kľúče. Oni sú dostatočne obrovský.

Začnime jednoduchým myšlienkovým experimentom. Predstavte si, že váš súkromný kľúč bol taký veľký, že ak by všetky svetové počítače spolupracovali, bruteforce by ich hádanie trvalo celých 24 hodín. Ak do svojho súkromného kľúča pridáte ešte jednu číslicu, prebehne počítačom desaťkrát viac permutácií, takže namiesto jednej by to trvalo 10 dní. Šesť ďalších číslic by ju prinieslo na 27 000 rokov.

V obidvoch prípadoch zostáva generovanie súkromného kľúča – ktorý si vyžaduje iba schopnosť vytvárať náhodné čísla – triviálne. Používanie súkromného kľúča na generovanie podpisov, ako aj kontrola týchto podpisov oproti verejnému kľúču, zostáva aj naďalej výpočtovo jednoduché. Práce potrebné na odhadnutie súkromného kľúča však exponenciálne rastú s každou ďalšou číslicou. Aby boli súkromné ​​kľúče „imúnne“ voči hádaniu hrubou silou, musíme pridať iba dostatok číslic – stačí, aby boli dostatočne veľké.

Aký obrovský je teda dostatočne obrovský? Súkromné ​​kľúče používané v bitcoinoch sú 256-bitové celé čísla, čo predstavuje číslo, ktoré má sedemdesiatšesť číslic. Sila veľkosti tohto čísla je neuveriteľná. Nasledujúca ilustrácia je vo veľkej miere odvodená z knihy Brucea Schneiera Aplikovaná kryptografia, a je presvedčivou ukážkou dostatočne veľkého počtu.

Najskôr si uvedomte, že konkrétnym dôsledkom druhého zákona termodynamiky je, že na zmenu jedného binárneho bitu informácie (zmena 1 na 0 alebo naopak) je potrebná minimálna energia. To znamená, že akýkoľvek výpočtový proces vyžaduje na vykonanie určitú minimálnu energiu, bez ohľadu na použitý hardvér.

Teraz predpokladajme, že ste dokázali využiť celý energetický výstup slnka iba na napájanie špeciálne navrhnutého počítača, ktorého úlohou je spočítať alebo uhádnuť súkromné ​​kľúče, v nádeji, že nájdete súkromný kľúč kľúčového páru (ktorý by mohol ovládať BTC)..

Pomocou trochy matematiky a termodynamiky zistíte, že dokonale efektívny počítač dokáže spočítať 2178 hodnôt vzhľadom na celý ročný energetický výkon slnka. Ak túto hodnotu rozdelíme na počet možných súkromných kľúčov 2256, zistíme, že tento hypotetický počítač bude schopný odhadnúť alebo spočítať iba 0,0000000000000000000003% z celkového počtu možných súkromných kľúčov – vzhľadom na celý ročný energetický výkon slnka.

Ďalej sa to iba počíta a nezahŕňa to oveľa zložitejšiu úlohu skutočne skontrolovať každý súkromný kľúč, aby sa zistilo, či zodpovedá správnemu verejnému kľúču. Takže pri 0,0000000000000000000003% pravdepodobnosti, že sa tento počítač stane so správnym súkromným kľúčom do konca jedného roka, by si to ani neuvedomil.

Tieto čísla nemajú nič spoločné s technológiou zariadení; sú to maximá, ktoré sú možné podľa zákonov termodynamiky zavedených od 30. rokov 20. storočia. A dôrazne naznačujú, že útoky hrubou silou na 256-bitové kľúče (ktoré Bitcoin používa) nebudú možné, kým nebudú počítače postavené z niečoho iného ako hmota a nebudú zaberať niečo iné ako vesmír..

To je sila dostatočne veľkého počtu. Nezáleží na tom, aký dobrý je hacker. Pokiaľ nedokáže využiť silu tristo sextillionov slnka jeden rok alebo jedno slnko tristo sextillion rokov, jeho počítač nedokáže ani počítať prostredníctvom všetkých súkromných kľúčov – nieto ich testovať alebo inak používať.

Ak sa chcete podrobnejšie oboznámiť s bitcoinmi a kryptografiou, prečítajte si knihu Logana Brutscheho, Laický sprievodca po bitcoinoch.