Dit is hoe een slimme hacker een hele Bitcoin (BTC) buit maakte

Hoe moeilijk is het om Bitcoin te stelen van iemand die een deel van zijn seed phrase weggeeft? John Cantrell, ontwikkelaar van bijvoorbeeld de Lightning chat Juggernaut, beschrijft het in een blog. Een aantal dagen geleden kreeg hij het namelijk voor elkaar om de toegang tot 1 Bitcoin (BTC) te bruteforcen.

Bitcoin giveaway

Aanleiding voor deze actie was een giveaway van Alistair Milne. Gisteren schreven we hier al een korte update over. Hij gaf in de loop van een maand een aantal hints weg over de toegang tot een wallet met daarop 1 BTC. Om de volledige toegang te kunnen krijgen, moest je 12 woorden (van de seed phrase) invullen.

Koop gemakkelijk en snel Bitcoin bij Bitvavo. Ga aan de slag en betaal geen handelskosten voor je eerste aankoop tot €1.000 !

Milne had al acht van de twaalf woorden vrijgegeven en het was wachten om de laatste vier in één keer te delen. Hiermee wilde hij voorkomen dat mensen de toegang tot de Bitcoin gingen bruteforcen. Hij wilde de kansen voor iedereen gelijk even groot houden om deze Bitcoin te winnen.

Maar Cantrell was Milne dus net te snel af.

In een blogpost met de titel ‘How I checked over 1 trillion mnemonics in 30 hours to win a bitcoin’ schrijft hij zijn verhaal.

Mnemonic is een techniek waarbij je een binaire instructie vervangt door een woord of symbool. Bij Bitcoin zijn dit 2048 woorden, zoals beschreven staat in de Bitcoin Improvement Proposal (BIP) 0039.

Stappenplan

Het begon dus met een Bitcoin adres die Milne genereerde van een mnemomic seed van 12 woorden. Met de inmiddels acht bekende woorden, wist Cantrell dat er nog 2⁴⁰ (~1.1 biljoen) mogelijkheden over waren.

Om een enkele mnemonic te testen, moet je (constant) drie stappen doorlopen en uitvoeren:

Om dit voor elkaar te krijgen schreef Cantrell een stukje software in Rust om dit met CPU te kunnen doen.

[penci_blockquote style=”style-2″ align=”none” author=””]”Mijn Macbook kon maar ~1250 menomics per seconde controleren, wat zou betekenen dat het mij 25 jaar zou duren om alle 2⁴⁰ opties te doorlopen.”[/penci_blockquote]

Daarom heeft hij alle code die nodig is om deze mnemonics te checken en genereren naar OpenCL. Dit is een programmeertaal en framework om een code parallel op meerdere GPU’s te kunnen draaien. En daardoor kon Cantrell al een stuk meer werk per seconde doen.

Deze combinatie van GPU’s maakte het mogelijk om ~143.000 mnemonics per seconde te checken. Dit zou hem ~83 dagen duren om alle 2⁴⁰ mogelijkheden langs te gaan.

Van CPU naar GPU naar servers

Vervolgens schreef hij een server applicatie die dit werk veel effectiever kan doen. Hij verdeelde al het werk dat gedaan moest worden in batches van ~16 miljoen mnenomics in een pool van GPU workers. Iedere GPU ging daarbij om de beurt een aparte batch langs.

Om nóg wat effectiever te kunnen werken, huurde hij voor $350 GPU rekenkracht van vast.ai en ook een beetje van Azure. En toen was het een kwestie van wachten tot deze GPU’s het werk hadden voltooid door de juiste woordencombinatie te vinden om de totale seed phrase in handen te krijgen.

In zijn blog schrijft hij dat hij bang was dat iemand precies hetzelfde zou doen. Daarom stelde hij een miner fee van 0.01 BTC in. Op die manier hoopte hij dat hij, zodra hij toegang had tot de Bitcoin op het adres, deze direct in het eerstvolgende block kon krijgen. Uiteindelijk is het hem dus wél gelukt en is hij de gelukkige eigenaar van de (net geen) hele Bitcoin!

De code staat allemaal open source en hij verwijst naar zijn Github waar hij de CPU-solver, GPU-solver en Server-solver software heeft gedeeld.

Lees meer over:
Bitcoin nieuwsBTC