Jedno ze základních pravidel bitcoinerů zní, že pokud si pořídíte kryptoměnu, neměli byste ji nechávat ležet u třetí strany, jakou je např. burza, směnárna nebo provozovatel online nebo softwarových peněženek. Pro úschovu bitcoinu byste si měli ideálně pořídit hardwarovou peněženku, kde budou vaše mince v největším bezpečí a ohrozit je můžete svou chybou spíš jen vy a ne útočník, kterému by se ji podařilo hacknout.
Tahle poučka se o prázdninách otřásla v základech, protože z hardwarových peněženek, oněch bezpečných přístavů, zmizela majitelům hromada bitcoinů. Nutno však rovnou dodat, že šlo pouze o určité typy hardwarových peněženek a jen od jednoho výrobce. Ten udělal chybu, na kterou doplatili jeho zákazníci. Navzdory tomu by byla chyba, kdybyste na hardwarové peněženky obecně zanevřeli.
Mluvíme-li o hardwarových peněženkách na kryptoměny, je na místě zmínit, že v daném zařízení nemáme žádným způsobem uloženou přímo danou kryptoměnu, ale „jen“ privátní klíč. Přímo váš bitcoin je v blockchainu uložený na určité veřejné adrese, jež sestává z písmen a číslic (může mít i formu QR kódu). Abyste s ním ale mohli nakládat, musíte mít právě tzv. privátní klíč, který veřejný není a vy byste ho neměli nikomu sdělovat. I ten má formu číslic a písmen nebo QR kódu a odemyká váš přístup do blockchainu.
V případě, že byste o hardwarovou peněženku přišli, ztratili ji nebo třeba zapomněli přístup do ní, dostanete se k jejímu obsahu pouze za pomoci tzv. seedu. Jde o zálohovací frázi, menší či větší náhodně vygenerovanou skupinu slov, kterou jako majitel peněženky musíte držet v tajnosti a která vám v případě potíží pomůže obnovit peněženku i s jejím obsahem.
Ukradené bitcoiny z peněženek Coldcard
Seed nás obloukem vrací k případu vykradených hardwarových peněženek značky Coldcard, ze kterých nedávno útočníci ukradli kolem 1100 bitcoinů. Ačkoli aféra rozhýbala kryptosvět teprve nedávno, přišlo se na to, že chyba se stala už v březnu 2021. Do té doby totiž výrobce Coldcard používal technické řešení postavené na know-how od českého výrobce celosvětově známých hardwarových peněženek, společnosti Trezor, které je veřejně přístupné (tzv. open source). V roce 2021 ale nasadil výrobce Coldcard své vlastní řešení, které bohužel obsahovalo vadu v kódu, jež umožňovala posledních pět let generovat zranitelné seedy. Hardwarových peněženek Trezor se tedy problém nijak netýká. Průšvih u Coldcard vznikl právě až v okamžiku, kdy se jejich výrobce odklonil od technického řešení společnosti Trezor.
Co se přesně u peněženek Coldcard zvrtlo, nám vysvětloval Tomáš Krause, bitcoiner a provozovatel webu Bitcoinvkapse.cz.
Jak došlo k tomu, že mohli útočníci vykrást hardwarové peněženky?
Já dlouho přemýšlel, jak to vysvětlit a napadlo mě takové zajímavé přirovnání. Představ si, že si potřebuješ koupit zámek do dveří. Všichni ti říkají, kup si bezpečnostní zámek, tak ty to uděláš a tak nějak počítáš s tím, že ta firma ten zámek neduplikuje a je schopna vyrobit každý kus unikátně. A teď si představ, že tahle firma by kvůli nějaké chybě začala vyrábět ty zámky tak, že bude existovat jen 10 variant. Zákazníci o tom neví a všichni si to instalují do dveří. Pak ale někdo zjistí, že mu stačí mít jen 10 klíčů a vykradeš jakýkoli byt s tímhle zámkem. A tohle se přesně stalo v souvislosti s generováním náhodných čísel, ze kterých hardwarové peněženky pak odvozují seed a klíče.
Počítač nebo nějaké zařízení neumí jen tak vygenerovat náhodné číslo. Může mít hardwarový nebo softwarový generátor. Ten hardwarový dělá to, že se to snaží vzít ze zdrojů, které jsou fakt náhodné (nepředvídatelné fyzikální jevy, např. elektrický či fázový šum apod. – pozn. red.). Ten softwarový to dělá většinou jednodušeji (většinou pomocí matematických algoritmů vytváří pseudonáhodná čísla – pozn. red.).
Co přesně se u peněženek Coldcard pokazilo?
První, co hardwarová peněženka udělá, je, že vygeneruje obrovské náhodné číslo, ze kterého pak vznikne seed, klíče a všechny tyhle věci. A peněženky Coldcard začaly ta čísla generovat špatně. Zase jsem hledal přirovnání. Představ si, že bys vzala všechna zrnka písku na planetě a ještě každý to zrnko toho písku byla znovu ta planeta se vším tím pískem. Z této obrovské hromady písku je ta tvá peněženka jedním tím zrnkem a nikdo nemá absolutně šanci to číslo uhodnout.
U Coldcardu se stalo, že číslo vybírali z daleko menší hromady písku. Jako by v porovnání s tou naší původní hromadou tohle byla jen korba písku na náklaďáku. Technicky je to 128 bitů nějaké entropie, náhodnosti a místo toho to bylo 40 bitů, což jako vypadá, že je jen třikrát míň, ale ty změny jsou tam exponenciální. Jejich chyba v softwaru způsobila, že se náhodná čísla generovala jen z něčeho, co dokážeš odhadnout později znovu, např. výrobní číslo plus čas. Kvůli tomu stačilo projít nesrovnatelně menší vzorek čísel (hromada písku na náklaďáku místo celého vesmíru písků), což pro počítač s grafickou kartou není problém, takže během několika dní dokázal zjistit kombinaci všech seedů, které mohly vzniknout. A pak už je docela snadný si ke každému seedu nechat ukázat první veřejný klíč (blockchain má tato data veřejně přístupná, takže se dá poznat, na kterých adresách jsou bitcoiny, ale ne komu patří – pozn. red.). Když na něm viděli nějaké bitcoiny, tak je pomocí toho seedu získali.
Tam je ještě paradox, že původně byly ty peněženky bezpečné, protože měly řešení do Trezoru.
Trezor má všechen software open source, takže se na něj může kdokoliv podívat. To je velká výhoda, protože pak může vlastně kontrolovat programátory Trezoru, jestli nemají chybu v kódu. Navíc Trezor i Ledger mají tzv. bug bounty. Kdo najde chybu, může dostat odměnu. To výrobce ColdCard nedělal. Ale zpátky k tomu, co se stalo. Společnost Coinkite, která vyrábí peněženky ColdCard, na začátku použili nějakou část toho open source kódu od Trezoru a postavili nad tím svojí vlastní peněženku. To je legální. Ale platí, že když sis vzala open source Trezoru, tak musíš mít open source i ColdCard. Po nějaké době přišla další firma, vzala kód toho ColdCardu a postavila nad tím zase jinou peněženku. Ale to se výrobci ColdCardu nelíbilo, ačkoli udělali vlastně to samé s Trezorem. Kvůli tomu se rozhodli, že ten svůj kód zavřou a změní mu licenci. Jenže to nesměli udělat, pokud tam zůstal ten kód, který získali z toho open source řešení a museli to nahradit něčím svým. Oni tedy přepsali i tuhle část, dali tam nějakou svojí knihovnu, tu knihovnu od Trezoru vyhodili a tím tam dostali tu chybu. Takže paradoxně lidi, kteří ColdCard měli z doby, než tohle ten výrobce udělal, tak jejich peněženky zůstaly bezpečné. Ale od chvíle, kdy tam dali vlastní řešení, tam byla ta chyba pět let bez povšimnutí.
Pokud nechcete sledovat video, tak si audio podcast můžete poslechnout přímo tady:
Zmizení bitcoinů z peněženek je samozřejmě zdaleka největší problém celé aféry, za zmínku ale stojí i přístup, který výrobce zaujal k prvním majitelům peněženek, kteří se snažili zmizelé mince hlásit. Tomáš v našem podcastu Bitcoin a blondýna jmenuje i modely, kterých se problém týkal nebo to, jaký krok opravdu pomůže chybu z takové peněženky odstranit (třebaže bitcoiny už na žádné z nich asi stejně nejsou) a jaké jednoduché opatření mohlo majitelům těchto peněženek zachránit jejich mince.
Pokud vás zajímá, jak se o prázdninách rozštěpil bitcoin, která banka umožňuje nakoupit bitcoin přes svou mobilní aplikaci nebo proč Trezor urychleně chystá anonymní doručování svých peněženek, poslechněte si aktuální díl našeho podcastu Bitcoin a blondýna, který najdete na všech hlavních platformách – Spotify, Apple Podcasts i dalších. Sledovat můžete také náš kanál na YouTube, kam budeme jednotlivé epizody dávat.
