Brute Force Search Space označuje soubor možností, které lze při hádání tajemství postupně zkoušet. Představte si zapomenuté heslo k vlastní zašifrované záloze: každý tip je kandidát a potřebujete poznat, zda zálohu správně odemkl. Čím více stejně pravděpodobných možností zbývá a čím dražší je jejich ověření, tím náročnější bývá hledání. U skutečné peněženky je však třeba nejprve zjistit, co přesně se hledá.
Heslo k záloze, soukromý klíč opravňující k utracení bitcoinů a vstup generátoru, který klíč vytvořil, jsou různé věci. Liší se možné tipy i způsob jejich ověření. Když vadný generátor vybíral jen z malého souboru vstupů, může být hledání snazší, než napovídá délka výsledného klíče. Útočník pak nemusí procházet všechny matematicky možné klíče; může zkoušet právě omezené vstupy. Nejdřív tedy potřebujeme znát původ tajemství, teprve potom počítat možnosti. [1] [3]
Představme si 16 stejně pravděpodobných možností, z nichž je právě jedna správná. Zkoušíme je postupně a žádnou neopakujeme. Někdy uspějeme brzy, jindy až na konci; v průměru to vychází na 8,5 ověřeného tipu. Pro obecný počet N se tento vztah zapisuje E = (N+1)/2. Při stálé rychlosti 2 pokusů za sekundu jde v průměru o 4,25 sekundy. Zlomek pokusu patří průměru, ne jednomu konkrétnímu hledání. Je to názorný model, nikoli naměřená doba obnovy bitcoinové peněženky. [1]
Oblíbená slova, jména nebo snadno zapamatovatelné vzory se opakují častěji než náhodné kombinace. Útočník proto může začít pravděpodobnějšími tipy. Podobně se chová vadný generátor, který některé výsledky vytváří častěji. Průměr z předchozího příkladu pak neplatí. Pojem min-entropie popisuje šanci nejlepšího prvního tipu, ale sám neřekne, kolik práce zabere celé hledání ani kdy musí skončit úspěchem. Počet možností bez jejich pravděpodobností je neúplný údaj. [1] [2]
Ověřit tip nemusí být okamžité. PBKDF2 je funkce, která z hesla a dalších vstupů odvozuje klíč; opakováním výpočtu zvyšuje práci potřebnou na každý tip. Dalším vstupem je salt. Obvykle jde o veřejný údaj, který odlišuje jednotlivá odvození: s různým salt nelze jednoduše použít stejnou předpočítanou tabulku výsledků. Salt není další tajné heslo ani sám nenahrazuje silný vstup. Pro odhad rychlosti musíme znát konkrétní funkci, její nastavení a použitý hardware. [3]
BIP39 převádí obnovovací slova a volitelnou passphrase, tedy dodatečné heslo, na seed: tajný výchozí údaj pro odvozování klíčů. Používá PBKDF2 s HMAC-SHA512, vnitřní výpočetní funkcí, a 2048 iterací neboli opakování. Výsledkem je 512bitový seed. Parametr salt zde tvoří text „mnemonic“ následovaný passphrase; případné dodatečné tajemství přináší právě passphrase. Každá passphrase vytvoří platný seed, takže kontrolní součet obnovovacích slov nepotvrdí, že jste zadali tu správnou. Při obnově vlastní peněženky ji poznáváte například podle známé adresy se správným nastavením odvozování klíčů. Dlouhý výsledek neudělá ze slabého hesla silné. [4]
Existují i matematické postupy, které se nesnaží jen postupně tipovat. U kryptografie s eliptickými křivkami (ECC) lze z privátního klíče vypočítat veřejný klíč; najít opačným směrem privátní hodnotu je obtížná úloha zvaná problém diskrétního logaritmu. Parametry bitcoinové křivky secp256k1 popisuje SEC 2. Samotné počítání všech 256bitových řetězců proto nevystihuje všechny možnosti útoku. NIST SP 800-57 odlišuje délku klíče od bezpečnostní síly, tedy odhadované náročnosti prolomení při daných předpokladech. Existence matematické cesty neznamená, že je prakticky snadná. [5] [6]
Více procesorů může rozdělit nezávislé pokusy, ale přínos závisí i na paměti a organizaci výpočtu. Hashrate při těžbě říká, kolik těžebních výpočtů zařízení zvládá; není to rychlost PBKDF2 ani operací ECC. Pozor také na rozdíl mezi webovým přihlášením a kopií zálohy. Služba může po několika chybných pokusech další přístup omezit. Kdo ale získá kopii zašifrovaného souboru, může své tipy ověřovat offline na vlastním zařízení. Omezení přihlášení na webu samo takové pokusy nezastaví. [3] [6]
Pokud někdo získá celý seed, nemusí prohledávat obrovský prostor možností. Totéž může umožnit škodlivý software nebo chyba v programu, který s klíči pracuje. Bezpečnost proto nekončí výběrem dostatečně nepředvídatelného tajemství: záleží i na jeho uložení a používání. U tvrzení o čase potřebném k prolomení se ptejte, jaký útok se počítá, co už útočník ví a jak se měřila rychlost. Ani velké číslo samo nezaručuje bezpečnost zařízení, ani tento model neslibuje úspěšnou obnovu ztracené peněženky. [6]
Pro nejúplnější obraz čtěte toto heslo společně s Cryptographic Entropy, Entropy Bit, Private Key, Seed Phrase. Opačným směrem na něj odkazují také Entropy Bit, Random Number Generator.