Jedno je ve zkrácené formě něco jako e-mailová adresa nebo číslo účtu a druhé je tak trochu jako heslo. Stojí na nich celé zabezpečení vašich kryptoměn a peněženky. To byste o nich měli vědět více, ne?
Už vás někdy napadlo, jak vlastně funguje taková kryptoměnová peněženka? Pokud jste někdy nakoukli pod pokličku této problematiky, jistě vám neutekla slova jako veřejné klíče a privátní klíče. Co tyto termíny označují? Pojďme si to vysvětlit.
Adresa je jednoduše “číslo vašeho kryptoměnového účtu”. Jedná se o stejně veřejný údaj, jakým je číslo bankovního účtu, telefonní číslo nebo e-mailová adresa.
Svoji adresu, která např. na Ethereu (ETH) nebo BNB Smart Chainu vždy začíná znaky “0x…”, tak můžete bez obav o svá aktiva komukoli sdělit, např. když chcete, aby vám na danou adresu zaslal nějaké kryptoměny.
Ale pozor, jakmile bude kdokoli vaši adresu znát, může se na ni kdykoli na prohlížeči blockchainu jako např. etherscan.io podívat a uvidí veškeré vaše transakce i transakční historii. Je to v podstatě takový transparentní účet.
Právě vaše adresa je ve skutečnosti místo, kde jsou (zjednodušeně řečeno) vaše kryptoměny uloženy. Kryptoměnová peněženka je pouze nástrojem, který umožňuje s vaší adresou interagovat. Proto nevadí, když se vám peněženka porouchá – na ní se totiž kryptoměny nenachází. Jsou zaznamenány na blockchainu.
A jak vaše kryptoměnová adresa, kterou při založení každé nové peněženky nově generujete, vlastně vznikne? Z veřejného klíče. A ten zase z klíče privátního.
Peněženka jakožto nástroj tedy jako první vygeneruje 1 z 2^256 možných privátních klíčů, které následně jednoduše zahashuje na veřejný (public) klíč a kryptoměnovou adresu. Zpátky to provést nejde. Lze tento mechanismus prolomit? Čtěte dále.
Spousta lidí pojmy jako veřejná adresa a veřejný klíč zaměňuje, ve skutečnosti to ale není to stejné.
Veřejný i privátní klíč jsou nepostradatelnou součástí pro zajištění integrity dat v kryptoměnové síti. V různých soustavách mají buď podobu kódu, nebo jedniček a nul. Lze je zobrazit v různých číselných soustavách, např. takto:
K šifrování nám slouží dvě formy kryptografie – symetrická a asymetrická. Symetrická kryptografie obsahuje pouze jeden jediný klíč – klíč privátní, pomocí kterého se informace zašifrují a strany jej pro opětovné rozšifrování musí znát.
Tato cesta šifrování je rychlejší, ale méně bezpečná kvůli nižšímu počtu možných kombinací. Proto kryptoměnový svět přistoupil ke kryptografii asymetrické, která nepoužívá jeden klíč, ale dva – kromě privátního ještě veřejný.
V asymetrické kryptografii je veřejný (public) klíč všem účastníkům v síti znám, jak nám mimo jiné napovídá jeho jméno. Veřejný klíč slouží pro šifrování dat, zpětně je rozšifrovat dokáže ale už jen klíč privátní.
V případě kryptoměn reprezentuje každý veřejný klíč kryptoměnová adresa, což je prakticky jen zkrácená forma veřejného klíče. S využitím veřejného klíče je možné nahlédnout na zůstatek a historii transakcí jakékoliv peněženky (adresy).
Aby ale se zůstatkem bylo možné manipulovat, tedy aby z té konkrétní adresy bylo možné kryptoměny někam odeslat, je zapotřebí klíč privátní.
Proč kryptoměny používají dva klíče místo jednoho?
Tím nejpodstatnějším důvodem je fakt, že při průběhu transakcí privátní klíče neopouští kryptoměnovou peněženku. Po síti se tak pohybuje pouze veřejný klíč.
Protože v symetrické kryptografii existuje pouze jeden klíč, musejí ho znát obě strany, aby bylo informace možné rozšifrovat, a proto se po síti z jednoho místa do druhého musí klíč odeslat. A to pochopitelně přináší řadu rizik.
Z každého privátního klíče je možno deterministickým způsobem vygenerovat klíč veřejný, a z něj pak dalším algoritmem vygenerovat veřejnou adresu.
“Deterministickým způsobem” znamená, že jeden privátní klíč se vždy zahashuje na totožné klíče veřejné. Pokud tedy znáte váš privátní klíč (nebo seed, viz níže), vždy se skrze jakoukoli peněženku (jedná se pouze o nástroj, který uchovává klíče a je nahraditelný) dostanete k vašim veřejným klíčům a adresám.
Přesnější by bylo říct, že je nalézáte. Vytvořené už totiž jsou.
I když se to možná zdá nereálné, ve skutečnosti všechny páry klíčů již existují. A je jich 2^256, což je podobné množství jako počet atomů v pozorovaném vesmíru. Proto jste schopni celý proces nalezení dvojice funkčních klíčů (vztah mezi nimi je deterministicky předurčen) provést offline, tedy bez připojení k internetu.
Z privátního klíče se dá vytvořit veřejný (public) klíč a z něj kryptoměnová adresa. Její struktura se může lišit na různých blockchainech. To je způsobeno tím, že se pro její odvození používají různé algoritmy. Jako příklad si uveďme adresy na síti Bitcoinu.
Těch dnes existuje několik. Pro uživatele fungují prakticky stejně, avšak jejich hlavním rozdílem je nákladovost na poplatky. Dá se říct, že čím novější formát, tím levnější budou vaše uskutečněné transakce.
Nejnovější typy adres šetří až 70 % místa v bloku. Z tohoto důvodu se za transakce uskutečněné pomocí těchto adres platí menší poplatky. Umožňují také přechod na další vrstvy bitcoinové sítě jako např. na Lightning Network.
Často se také můžete setkat s jejich grafickou reprezentací v podobě QR kódu.
Posledním pojmem do skládačky šifrování a odesílání transakcí je termín “seed”.
Jedná se o číselnou kombinaci, která je pro uživatelské pohodlí a lepší zapamatování převedena na 12 či 24 slov z předem známých seznamů. Právě seed je nejzákladnější jednotkou vaší kryptoměnové bezpečnosti, pomocí něj se totiž dostanete ke všem v peněžence vytvořeným privátním klíčům, veřejným klíčům i adresám.
Říká se mu proto také obnovující seed (angl. recovery seed nebo recovery phrase). Kdokoli, kdo jej zná, může ovládat vaše klíče a kryptoměny.
Proto je důležité jej nikomu neukazovat a ani jej neuchovávat v digitální podobě. Existují totiž viry, které v počítačích nebo mobilech přímo hledají vybraná slova, která se jako seed používají, a odhalí je pak v jakémkoli souboru.
Doporučovaným řešením je proto si seed napsat na papír nebo k tomu speciálně určenou destičku, které se prodávají již za pár stovek. Ti, kdo to s bezpečností myslí vážně, si jej mohou zapamatovat nebo rozdělit a ukrýt na více míst.
Rozhodně není příliš bezpečné seed kopírovat (copy to clipboard), jak nabízejí některé softwarové peněženky.
Teoreticky jsme si peněženky, adresy, veřejné a privátní klíče a seed představili. Nyní se na problematiku pojďme podívat z hlediska praxe a vše si ukázat na příkladech. Popíšeme si, co se děje při “založení peněženky” a odesílání a přijímání transakcí.
Pokud jste ze všech těch klíčů a adres zmateni, nemusíte se bát. Peněženky dělají vše za vás na pozadí. Jediné, co musíte udělat, je se hned na začátku dobře postarat o vaši bezpečnostní frázi (seed).
A co to ta peněženka tedy na pozadí dělá? Nejprve náhodně vygeneruje na základě SHA256 algoritmu 256bitové číslo (256 jedniček a nul). To se poté přeloží na recovery seed, který je důležité si někam zaznamenat v analogové (ne digitální) podobě.
Ze seedu se poté pomocí funkce PBKDF2 vytvoří takzvaný master binary seed. Ten slouží k odvození všech privátních klíčů ve vaší peněžence. Zde nyní popisujeme princip hierarchicky deterministické peněženky, kterou si v dalším odstavci podrobněji rozebereme.
Výchozí 256bitové číslo, které je alfou a omegou a tvoří privátní klíč, si můžete vymyslet z hlavy nebo třeba vytvořit pomocí 62 hodů kostky a pomocí výše nastíněných postupů další klíče odvodit. Takto vygenerovaný set klíčů bude stejně funkční jako ten, který vám automaticky vygenerovala vaše peněženka.
Můžete vidět, že postup získání privátních a veřejných klíčů je poměrně složitý. Naštěstí se o něj ale nemusíte starat. Vaše peněženka udělá vše za vás.
V případě Bitcoinu a jeho variant jako např. Bitcoin Cash, většina peněženek na každou transakci generuje z master binary seedu novou adresu (set privátního klíče, z něj odvozeného veřejného klíče a z něj odvozené veřejné adresy). Tento postup se používá kvůli bezpečnosti a zvýšení soukromí. Toto ovšem nenajdeme např. u Etherea nebo XRP, u nichž je adresa vždy stejná.
Nyní se přenesme do prostředí kryptoměnové sítě. Máme modelový příklad, v němž figuruje osoba A, B a C. A chce odeslat nějaké bitcoiny B. Co přesně se pod rouškou kryptoměnových peněženek a operací v blockchainové síti děje?
Jak vidíte, ve výsledku nejde o nic složitého. Kouzlem asymetrické kryptografie je, že privátní klíč A a B během celého postupu výše neopustil jejich peněženky. C, o kterém jsme zatím nemluvili, tedy nemělo šanci jakýmkoli způsobem do transakce zasáhnout. Aby se mu to povedlo, muselo by totiž znát privátní klíče A a B.
Pro ilustraci může posloužit následující obrázek, který je mimochodem tím prvním obrázkem nacházejícím se přímo na začátku legendárního bitcoinového whitepaperu:
Také si zde můžeme všimnout, že peněženka reálně žádné kryptoměny neobsahuje. Není zde žádný soubor se zapsaným množstvím bitcoinů.
Nové bitcoiny B jsou totiž pouze záznamy v blockchainu, neboli tzv. decentralizované účetní knize. Peněženka má následně možnost do této knihy nahlédnout, zobrazit nám obsahy na jednotlivých účtech a podepsat případné transakce.
Podobně, jako kryptoměnová komunita často zaměňuje pojmy veřejný klíč a adresa peněženky, dochází často k nesrovnalostem i u slov jako privátní klíč a seed.
Abyste pochopili, proč něco jako seed vlastně existuje, musíme si vysvětlit, co je to tzv. hierarchicky deterministická (HD) peněženka.
Ze začátku se omezme opět na jednoduchý modelový příklad. Pokud byste chtěli odeslat z vaší klasické kryptoměnové peněženky nějaké kryptoměny kamarádovi, odešlete je na jeho veřejnou adresu stejným způsobem jako v kapitole výše.
Kdybyste ale chtěli zvýšit úroveň anonymity, adres byste si vytvořili více. Tento samý scénář nastává i ve chvíli, kdy se chcete připojit na nějakou jinou kryptoměnovou síť.
Např. pokud jste si vytvořili peněženku MetaMasku, standardně na síti Etherea, a chcete se připojit i na Polygon. Ačkoliv se do vaší peněženky MetaMask dostanete přes jeden seed, kryptoměnových adres máte více, minimálně 1 na každé síti.
Kdybyste si měli vést přehled o všech kombinacích veřejných a privátních klíčů, přinejmenším by to bylo nekomfortní.
Kvůli tomu vznikly hierarchicky deterministické peněženky, což jsou peněženky, které pro každou instanci (kombinace privátního a veřejného klíče tvořících adresu) využívají jednu jedinou kombinaci hodnot, ta je označována jako seed.
Jakmile si tedy vytvoříte HD peněženku (např. MetaMask), ukáže se vám seed, který si musíte zapamatovat či uložit na bezpečné místo. Z tohoto seedu se vám pak deterministicky vygeneruje unikátní privátní klíč, z něj pak klíč veřejný a z něj kryptoměnová adresa, jak jsme si ostatně už výše vysvětlili.
Jakmile si chcete založit adresu novou, ze stejného seedu se vám vygeneruje nový privátní klíč, nový klíč veřejný a nová adresa. Vše je rázem jednodušší.
A proto je seed tak důležitý – jen pomocí něho se ke všem postupně vytvořeným privátním klíčům a tím pádem ke všem adresám a kryptoměnám dostanete.
Pokud jste někdy používali např. MetaMask na sítích jako Ethereum, Polygon nebo BNB Smart Chain najednou, jistě jste si všimli, že je vaše veřejná adresa na všech sítích stejná. Jak je to možné, když v jednom z odstavců výše tvrdíme, že na každé síti existuje kryptoměnová adresa zvlášť?
BNB Smart Chain a Polygon jsou EVM kompatibilní blockchainy. To znamená, že všechny tyto sítě pro tvorbu veřejných klíčů z klíčů privátních využívají algoritmus ECDSA a pro tvorbu veřejných adres z klíčů veřejných algoritmus keccak256, z jehož výsledku nás zajímá posledních 20 bajtů, což je vygenerovaná veřejná adresa z veřejného klíče a je to také důvod, proč je kratší než klíč veřejný a privátní.
Jelikož je tedy adresa generována vždy pomocí stejných algoritmů a na počátku všeho ze stejného seedu, je stejná, i když existuje na všech sítích zvlášť.
Největší problém při práci s kryptoměnami je jejich zabezpečení. Jak již víte, pokud by se někdo dostal k vašim privátním klíčům nebo seedu, získal by kontrolu nad vašimi adresami a mohl by vás připravit o všechny mince a tokeny.
Proto je důležité se o ně co nejlépe postarat. Peněženky, které správu vašich klíčů a operace s nimi řeší, můžeme rozdělit na dvě hlavní kategorie:
Custodial peněženky mají tu vlastnost, že za vás přebírají zodpovědnost. Nemůže se vám stát, že své privátní klíče ztratíte, protože k nim nemáte přístup.
Na druhou stranu se tímto řešením připravujete o nejdůležitější vlastnosti krypta, kterými jsou nemožnost cenzury transakcí, decentralizace a nezávislost.
Pokud bude správce chtít nebo bude donucen, tak vaše transakce cenzurovat může. Stejně tak může vaše kryptoměny zkonfiskovat.
Právě odsud plyne rčení: “not your keys, not your coins”.
U non-custodial peněženek máte za své klíče plnou zodpovědnost. Jen vy vlastníme všechny klíče. Je zde tedy možnost, že pokud uděláte nějakou chybu, můžete o své mince nenávratně přijít. Je to jen o vás a nikdo vám nedokáže pomoct.
Problémem softwarových peněženek je, že zařízení může být napadeno virem nebo malwarem, který dokáže vaše klíče ze zařízení nějakým způsobem získat.
V historii se dokonce i stalo, že byly privátní klíče softwarových peněženek zálohovány na iCloud, tím pádem opustily zařízení uživatele.
Hardwarové peněženky jako český Trezor nebo francouzský Ledger jsou pak takové malé počítače v podobně flashdisku, které umožňují transakci podepsat v rámci samotné hardwarové peněženky a do vašeho zařízení, ke kterému je peněženka připojena, posílají pouze výsledný podpis. Klíče tak peněženku nikdy neopustí!
Video od Kicoma z jeho Bitcoinového kanálu také krásně vysvětluje, co to je privátní a veřejný klíč a jak a k čemu jsou využívány. Pro začátečníky je video skvělé:
Když to shrneme, privátní klíč je kód, který by měl být uložen na co nejvíce bezpečném místě a znát byste ho měli pouze vy. Díky němu můžete disponovat s kryptoměnami uloženými na vašich adresách. O to, jak uschovávat privátní klíč, se tolik starat nemusíte, protože jeho uložení zařizuje samotná peněženka.
O co se už ale starat musíte, je váš seed neboli fráze slov, ze které se generuje privátní klíč. Každý privátní klíč je deterministicky generován ze svého seedu, a proto i když máte např. v peněžence MetaMask uložených více sítí, což znamená více adres a tím pádem i více privátních klíčů, stačí vám ke všem pouze jeden seed.
Z každého privátního klíče se generuje klíč veřejný a ze samotného veřejného klíče pak i adresa peněženky. Ta je plně veřejná a dohledatelná na blockchainu.
Kdyby se někdo pokoušel uhádnout váš 256bitový privátní klíč, musel by se strefit do jedné z 115 792 089 237 316 195 423 570 985 008 687 907 853 269
984 665 640 564 039 457 584 007 913 129 639 936 kombinací, což je nepředstavitelné. Stejný je počet atomů ve vesmíru.
Než někdo na světě sestrojí funkční kvantový počítač, je možné s téměř 100% jistotou říci, že se nikomu nepovede uhádnout váš privátní klíč či seed v rozumném časovém měřítku. Bezpečnost peněženky je tedy závislá čistě na vás a na tom, jak dokážete své privátní klíče (či seed) střežit.
Parametr cesty u hierarchicky deterministických peněženek obsahuje několik charakteristických hodnot, jejichž úprava má za následek vygenerování úplně jiných sekvencí privátních klíčů.
Cesty se mimo jiné používají k oddělení soustav privátních klíčů pro jednotlivé blockchainy využívající stejné algoritmy, čistě za účelem jejich odlišení z různých důvodů, např. privátních klíčů používaných na skutečné síti (mainnet) a klíčů používaných na síti testovací (testnet).
Příkladem může být např. Ethereum a jeho testnety či Ethereum Classic:
Každé číslo znamená něco jiného. První, 44, reprezentuje BIP 44 standard (Bitcoin Improvement Proposal), který specifikuje hierarchii u HD peněženek s parametrem účtů a rozšiřuje tak dřívější BIP 39 či BIP 32.
BIP je zodpovědný za to, jak se při generování privátních klíčů hodnoty ze seedu větví. I když je v jeho názvu “Bitcoin”, je aplikovatelný i na jiné kryptoměny, jak můžete vidět výše. Informace o dalších parametrech cesty, jako je např. typ kryptoměny, číslo účtu či indexování, naleznete zde.
Privátní klíč je shluk znaků, 1 z 2^256 možných, majících v různých soustavách buď podobu kódu, nebo jedniček a nul. Generuje se ze seedu a z něj se pak generuje klíč veřejný (public key). Váš privátní klíč by měl být uložen na bezpečném místě a nikdo by jej neměl znát – umožňuje plnou kontrolu nad vašimi kryptoměnami!
Veřejný klíč je kratší shluk znaků než privátní klíč. Právě z privátního klíče se generuje. Úlohou veřejného klíče je jeho putování po blockchainové síti mezi dvěma uživateli, čímž umožňuje odesílání transakcí. Jeho zkrácená podoba tvoří kryptoměnovou adresu.
Adresa je zkráceninou veřejného klíče. Jedná se o veřejný údaj, který např. ve formě QR kódu můžete sdělit tomu, kdo chcete aby vám poslal nějaké kryptoměny.
Veřejný klíč a svoji veřejnou adresu ano, privátní klíč a seed NIKDY! Veřejný klíč a adresa umožňují ostatním zaslat vám kryptoměny, privátní klíče a seed umožňují plnou kontrolu nad vašimi kryptoměnami – pokud je zloděj zná, kdyptoměny vám ukradne.
Není! V žádném případě jej nikomu nesdělujte. Ani kamáradovi, ani zákaznické podpoře – pravá zákaznická podpora ať již burzy či peněženky jej po vás nikdy nebude chtít.
Nesdělovat a ukončit konverzaci. Jedná se o podvod.
Pokud znáte své privátní klíče nebo seed, jednoduše si zakupte novou hardwarovou peněženku nebo stáhněte novou softwarovou peněženku a po zadání privátního klíče nebo seedu k ní přístup získáte zpátky.
Jednoduše si zakupte novou HW peněženku nebo zdarma stáhněte novou SW peněženku a importujte do ní existující adresu pomocí zadání vašeho privátního klíče nebo seedu.
Máte k zabezpečení vaší peněženky, adresám, veřejným a privátním klíčům či seedu další otázky? Nevíte si rady? Zeptejte se nás na Discordu, poradíme!
Můj zájem o finance začal v roce 2017. První ránu jsem dostal od kryptoměn. Jejich růst mi kouzlil úsměv na tváři, avšak propad v roce 2018 byl studenou sprchou. Jako další cestu jsem zvolil akcie, u kterých jsem zůstal dva roky. V roce 2020 se dostavil další kryptoměnový bull-run a společně s ním se znovu objevil i můj zájem o Bitcoin.
Tentokrát jsem ale věc vzal za správný konec. Nejprve vzdělávání.
Kryptoměny pro mě znamenají nový finanční systém a věřím, že se postupně dostanou i do běžných životů občanů. Psaní článků zde na Finex.cz mě především pozitivně motivuje k prohlubování znalostí, které mohu následně předat čtenářům.
Bývalý šéfredaktor, softwarový architekt a nadšenec do kyberbezpečnosti a blockchainu. V rámci Finexu se zaměřuje zejména na technická témata v oblasti kryptoměn. Kryptoměny považuje za platidlo budoucnosti řešící řadu problémů s centralizovanou náturou existujících platebních prostředků. DeFi svět považuje za úchvatný a nabízející spoustu skvělých příležitostí.
Jmenuji se Michal Sobol a na Finex.cz dohlížím na chod kryptoměnové redakce. Mým cílem je, abychom společně s redaktory a přispěvateli předali čtenářům každý den mnoho zajímavých a zejména užitečných informací.
Pro přidání komentáře se prosím přihlašte ke svému uživatelskému účtu.
Dobrý den, před nedávnem mi byla z peněženky mycelium stržena částka +- 100kč. Již se mi tato částka sama strhla, ale po obnovení seedu se opět připsala a nyní ne. Poradíte čím to může být. Děkuji