Ve čtvrtek někdo vyprázdnil přes 1000 adres z peněženek Coldcard a ukradl kolem 1100 BTC. a čísla asi nejsou konečná. Co se stalo? Jsou jiné peněženky v bezpečí?

Nejprve trocha zdánlivě nesouvisející teorie:

Jak se dělá v počítači náhodné číslo

Počítač ze své podstaty dělá přesně to, co mu řekne kód a žádnou opravdovou náhodu sám od sebe neumí. Když potřebuje náhodné číslo, musí si ho odněkud vzít: buď z fyzického jevu, který je skutečně nepředvídatelný (šum na elektronickém obvodu, kolísání napětí, rozpad atomu a podobně), nebo si ho jen vypočte matematickým vzorcem z nějakého vstupu, který náhodný není (čas od zapnutí, sériové číslo, aktuální čas). Druhý přístup se nazývá pseudonáhodný generátor a má jednu zásadní vlastnost: je deterministický. Když znáte vstupy, dokážete přesně zopakovat výstup.

Co je seed

Seed je vlastně jen jedno velké náhodné číslo. Peněženka nejdřív potřebuje vygenerovat kus opravdu náhodných dat – 128 až 256 bitů (podle počtu slov seedu), tedy dlouhou řadu nul a jedniček, kterou nejde uhodnout ani zopakovat. Protože pro člověka je taková řada nezapamatovatelná, převede se přes matematickou funkci podle standardu BIP-39 na posloupnost běžných slov ze seznamu 2048 slov a ty si uživatel ukládá jako zálohu peněženky. Z tohoto základu se pak dalšími matematickými kroky odvozují všechny vaše soukromé klíče a adresy. Takže kdokoliv zná seed, dokáže odvodit úplně stejné klíče jako vy.

Co se u Coldcard pokazilo

Největší problém má model Mk3, ale v klidu nemohou být ani majitelé ostatních modelů, viz dále. Peněženka měla generovat seed z hardwarového generátoru náhodných čísel (TRNG). Kvůli chybě v kódu se ale od března 2021 používal místo tohoto generátoru jen náhradní softwarový generátor, který náhodnost stavěl jen na sériovém čísle čipu, časovači od zapnutí a hodinách, jejichž oscilátor byl navíc u modelu Coldcard Mk3 pravděpodobně vypnutý.

Výsledkem bylo, že místo 128-256 bitů entropie, kterou BIP-39 předpokládá, se použilo asi jen 40 bitů. Tím vznikl dost zásadní rozdíl, protože takto se generovaly seedy v daleko užším pásmu, než měly. Jak hodně velký rozdíl to je? Velký. Pro představu:

Prostor pro seed si můžete představit jako hromadu písku. Pokud má seed „jen“ 128 bitů entropie, je ta hromada zhruba taková, jako by každé jednotlivé zrnko ze všech pozemských pláží a pouští bylo samo o sobě další celou zemskou hromadou písku. Prostě nepředstavitelně velké číslo, které nenajde superpočítač ani za miliony let.

Tip

Moje nová kniha nejen pro začátečníky

Stahujte ukázku zdarma, nebo si rovnou kupte plnou verzi. S kódem deset-dolu ji máte o 10 % levněji.

Mrknu na ni

Coldcard Mk3 měl kvůli chybě jen 40 bitů. To je sice pořád 1,1 bilionu zrnek, ale z nekonečné hromady se stane korba náklaďáku. Což je pořád dost na ruční hledání, ale jedna běžná grafická karta najde zrnko za pár dní.

Modely Mk4, Q a Mk5 jsou také zasažené, ale entropii měly trochu lepší – asi 72 bitů. Analýza firmy Block navíc potvrzuje problém i u modelu Mk2.

Jak se problém zneužil

Útočník nepotřeboval fyzický přístup k ničí peněžence. Firmware byl celou dobu open-source, takže stačilo spustit kód, spočítat celý relativně malý prostor možných seedů, odvodit z nich adresy a porovnat je s adresami, které mají bitcoiny, což není problém, protože blockchain je veřejný. Pokud bitcoiny najde, jednoduše si je pošle na svoji peněženku.

Co bude dál

Prostor, kde jsou „vadné“ seedy, je konečný a na dnešním hardwaru se dá se správným vybavením projet v řádu hodin maximálně jednotek dní. Možná už jsou v tuhle chvíli všechny ohrožené bitcoiny ukradené a zkoušet to dál už nemá cenu. Kdo měl prostředky na modelech Mk3 a nesledoval zpravodajství, pravděpodobně už je nemá, nebo brzy mít nebude. Pokud je stále má, měl by je urychleně převést jinam.

Upgrade firmware problém neřeší!

Tohle je zásadní pro uživatele: aktualizace firmwaru neopraví seed vygenerovaný zasaženým firmwarem. Musí se vygenerovat nový seed a prostředky migrovat jinam!

Rovněž není v bezpečí ten, kdo seed z Coldcard přenesl do jiné peněženky. Stále je to zranitelný seed!

Kdo je v bezpečí

Samozřejmě všichni, kdo nepoužívají Coldcard – problém se týká jen této konkrétní peněženky s konkrétním firmwarem. I s Coldcard je v bezpečí ten, kdo měl nastavenou rozumně složitou passphrase.

A v bezpečí by měl být také ten, kdo použil vestavěnou funkci Coldcard pro pokročilé a paranoidní uživatele a při zakládání peněženky si hodil aspoň 50krát kostkou.

Jak to dělá Trezor

Modely Trezor Model One a Model T kombinují dva zdroje entropie: entropii hostitelského počítače nebo telefonu a hardwarový TRNG v mikrokontroléru STM32. Zařízení Trezor Safe 3 a Safe 5 přidávají třetí zdroj: bezpečnostní prvek Optiga. Spolupracují tak tři nezávislé zdroje. Trezor Safe 7 přidává čtvrtý zdroj: čip TROPIC01 a při generování peněženky se tak kombinují čtyři nezávislé zdroje. Zdroj: web Trezoru

Ironií je, že Coldcard do března 2021 používal kryptografickou knihovnu odvozenou z trezor-crypto – tedy open-source řešení, které si pro svoje zařízení napsal a otestoval právě Trezor. Fungovalo to spolehlivě. Pak se Coinkite rozhodl přejít na vlastní knihovnu a zbytek znáte …

Závěr

Já osobně bych Coldcard už nikdy nesvěřil ani satoshi. Možná je to kruté, oni jistě problém opraví, resp. už opravili, a poučí se, ale není absolutně žádný důvod používat něco, co takto selhalo v generování klíčů, tedy v té jediné věci, kterou peněženka musí udělat 100% správně. Používejte Trezor. A používejte pro jistotu passphrase.

Nechtěnou náhodou je, že Trezor má aktuálně slevovou akci 😉

Čtěte dále:

Líbil se ti článek? Ukaž jak moc 😉

1. Zvol částku · 2. Klikni na „Poslat přes Lightning"

nebo pošli přímo na: Nevím, která bije

powered by DonateBySatoshi