Hacker onthult hoe hij een Bitcoin-adres heeft gekraakt…

Bitcoin-ontwikkelaar John Cantrell controleerde meer dan een biljoen woordcombinaties om het Bitcoin-adres te ontgrendelen en het geld te pakken. Hier is hoe.

In het kort

  • Bitcoin-ontwikkelaar John Cantrell onthulde zichzelf als de hacker die het Bitcoin-adres van Alistair Milne kraakte, als onderdeel van zijn uitdaging.
  • Om de prijs te claimen, creëerde Cantrell een heel orkest van cloud-gebaseerde GPU’s.
  • Hij moest meer dan een biljoen woordcombinaties controleren om de portemonnee te openen, en hij gaf het bijna op om het te proberen.

John Cantrell, de ontwikkelaar van Lightning Network messaging protocol Juggernaut, brak gisteren een Bitcoin-adres open en nam de $9.300 aan munten voor zichzelf. Maar dit was geen diefstal, het was onderdeel van een spel dat hij won. Nu heeft hij onthuld hoe hij het gedaan heeft.

Zoals Decrypt gisteren meldde, heeft Alistair Milne, CIO van het Altana Digital Currency Fund, een uitdaging georkestreerd op Twitter waar de winnaar een hele Bitcoin zou krijgen. Vanaf mei publiceerde hij regelmatig hints voor een 12-woord-zaadzin voor een portemonnee-adres dat een Bitcoin bevatte. Wie alle aanwijzingen oppikte, kon de zin gebruiken om de Bitcoin-portemonnee te ontgrendelen en de Bitcoin mee naar binnen te nemen.

Milne was echter van plan om de laatste drie of vier woorden in één keer te posten. Dit was een poging om te voorkomen dat iemand het adres brutaal zou afdwingen (door voortdurend woorden te raden tot een combinatie werkte). Maar zijn plan mislukte. Met slechts acht woorden was Cantrell in staat om de resterende woorden te raden, de juiste combinatie te vinden en de portemonnee te ontgrendelen.

Het Bitcoin-adres hacken

Voordat het achtste woord werd gepubliceerd, begon Cantrell met de voorbereidingen. Hij schreef in zijn Medium-post dat er met acht woorden „ruwweg 1,1 biljoen mogelijke geheugensteunen“ zouden zijn, die gecontroleerd moesten worden.

Een mnemonic is een 12 of 24 woorden tellende zaadzin voor een Bitcoin Investor privé-sleutel die volledige toegang geeft tot de fondsen die er op staan. Er is een beperkte lijst van 2048 woorden die dergelijke zinnen kunnen bevatten, maar dat maakt het hacken van een Bitcoin-portemonnee niet veel gemakkelijker.

Samen met Decrypt

Om een enkele zin te testen, moest Cantrell een zaadje genereren uit de mnemonic, master private key uit het zaadje en een adres uit de master private key. Na het schrijven van een speciaal programma en het uitvoeren van een paar benchmarks, bleek dat de hardware die hij op dat moment had niet geschikt was voor de taak.

Cantrell’s laptop was slechts in staat om ongeveer 1.250 geheugensteunen per seconde te controleren, in totaal 108 miljoen per dag. „Dit betekent dat het mijn CPU ongeveer 25 jaar zou kosten om de 1 biljoen mogelijkheden te genereren en te controleren die nodig zijn om de mnemotechniek op te dringen terwijl hij slechts 8 van de woorden kent,“ merkte hij op. En dat is als er maar vier woorden ontbreken.

Om het probleem op te lossen, keek Cantrell naar cloud computing. Hij huurde enkele tientallen grafische kaarten op een GPU-marktplaats en Microsoft’s cloud computing service Azure en schreef software die het werk in batches over elke grafische kaart zou verdelen.

Door het testen van dit systeem te halveren, werd het achtste woord gepubliceerd en was het spel begonnen. Hij startte de machines op.

„Op het hoogtepunt testte ik ongeveer 40 miljard geheugensteunen per uur. Dit betekent dat het ongeveer 25 uur had moeten duren om de 1 biljoen geheugensteunen te testen. Ik wist dat het gemiddeld maar 50% van de tijd zou moeten duren,“ zei Cantrell.

Maar hij had ongelooflijk veel pech. Na het testen van 85% van de combinaties, had hij geen geluk. En hij realiseerde zich dat er een fundamenteel gebrek kan zijn geweest. Zijn plan hing af van de woorden die in de juiste volgorde stonden – wat niet gegarandeerd was. Als dat niet het geval was, zouden er 8 zijn geweest! (factorial) meer mogelijkheden,“ waardoor het onmogelijk was om te kraken.

Gedurende een dag van intense berekeningen later, had Cantrell „grotendeels de hoop opgegeven dat het zou werken“ en „letterlijk bijna uitgeschakeld“.

„Ik kon mezelf er niet toe brengen om het op dat moment echt te stoppen, want ik was zo ver gekomen dat ik het gewoon door liet gaan. Tot mijn verbazing had het iets later die avond (op 91%) en na bijna 30 uur en precies 1 biljoen cheques (1.000.710.602.752) een oplossing gevonden!“ Cantrell zei.

Hij betaalde toen een buitensporig hoge vergoeding van 0,01 Bitcoin ($94) om het geld over te maken naar zijn eigen portemonnee – voor het geval iemand anders het had geraden (hij wilde dat de Bitcoin-mijnwerkers de voorkeur gaven aan zijn transactie).

Milne bevestigde dat het geld was meegenomen. „Ik wist dat ik tegen de klok was, maar de meeste mensen dachten dat het een paar weken zou duren om 4 zaadwoorden te brute kracht te zetten“, tweette hij.

Nu, Cantell is van plan om „pay-it-forward“ met een wedstrijd van zijn eigen-dat „niet kan worden gewonnen door software,“ natuurlijk.