Zephyrnet-logo

De verrassend eenvoudige manier om cryptocurrency te stelen

Datum:

In het nieuws een paar dagen geleden, de onthulling dat Luke Dashjr, een kernontwikkelaar van Bitcoin, had zijn portemonnee gecompromitteerd en verloor 200 BTC. Een klein fortuin, en iets van een schok. Ik vermoed dat iemand met die expertise zijn privésleutel niet zou hebben laten rondslingeren, dus als niet-enthousiasteling van cryptocurrency ben ik benieuwd hoe de aanvallers het hebben gedaan. Dus belde ik een paar vrienden die die paden wel bewandelen voor uitleg, en het resultaat was een paar boeiende gesprekken. Het meest waarschijnlijke antwoord is nog steeds dat iemand in zijn computer heeft ingebroken en de sleutels heeft gekopieerd - regelrechte computerdiefstal. Maar er is nog een andere mogelijkheid waarbij niets wordt gestolen en die verrassend eenvoudig is.

Ben je een gokker of een ingenieur?

Een gokautomaat van Kenny Rogers The Gambler
Om de een of andere reden heb ik tijdens het schrijven van dit een Kenny Rogers-oorworm. Jason Lam (CC BY-SA 2.0)

Ik vermoed dat de meeste Hackaday-lezers er wel iets vanaf weten hoe een blockchain werkt, en ook hoe public-key cryptografie werkt. Public-key cryptografie is de sleutel tot de veiligheid van een cryptocurrency zoals Bitcoin, waarbij de sleutel die al uw rijkdom voor u ontgrendelt uw privésleutel is en de sleutel waarmee transacties met u door andere mensen kunnen worden gedaan, uw openbare sleutel is.

Als u wat cryptocurrency naar iemand anders wilt sturen, codeert u de transactie met behulp van hun openbare sleutel, zoals de naam al doet vermoeden, openbaar, en uw privésleutel die alleen bij u bekend is. Het is dus belangrijk dat uw privésleutel bewaard blijft werkelijk privé, want als iemand het vindt, controleren ze uw voorraad cryptocurrency. Dus om al die bitcoins te stelen had iemand zijn privésleutel, een mogelijkheid die nooit had mogen gebeuren. We kunnen er gerust van uitgaan dat zijn bescherming van de sleutel zo goed mogelijk was, dus in de veronderstelling dat niemand fysiek zijn hardware-portemonnee heeft gestolen of waar hij deze ook op heeft bewaard, is zijn sleutel op een andere manier gecompromitteerd.

De echte veiligheid van cryptografie met een openbare sleutel ligt in het feit dat het buitengewoon moeilijk is om de persoonlijke sleutel van een persoon te raden. Een algoritme met brute kracht om de privésleutel van Luke Dashjr te raden, zou onvoorstelbare rekenkracht vereisen gedurende een tijdspanne op geologisch niveau, dus het is ook veilig om aan te nemen dat niemand zijn computer heeft ingesteld om alleen zijn sleutel te raden. Op dit punt is het nuttig om te stoppen met denken als een ingenieur en te beginnen met denken als een gokker. Een ingenieur berekent de tijd die nodig is om de privésleutel van Luke Dashjr bruut te forceren, maar een gokker gooit de dobbelstenen en kijkt of de worp geld oplevert.

Denkend vanuit het perspectief van een gokker, wat zijn de dobbelstenen en hoe waarschijnlijk is een worp om te winnen? Als je de dobbelstenen gooit door willekeurig een privésleutel te raden en het alleen tegen Luke Dashjr's voorraad Bitcoin uit te proberen, dan zit je in hetzelfde gebied als de ingenieur die geologische tijd wacht tot je computer hem kraakt. Maar als je een gokker bent, geef je niets om Luke Dashjr of iemand anders, je bent gewoon geïnteresseerd in de sleutels van een portemonnee met wat Bitcoin erin. Op dit punt nemen de kansen tegen jou enorm af, want in plaats van één kans met Luke Dashjr, heb je een hele blockchain aan mogelijkheden voor een match.

Hoe 200 BTC te stelen met brute kracht

Dus hier is hoe het werkt. De blockchain bevat de publieke sleutels van al zijn deelnemers, iedereen die Bitcoin heeft of heeft gehad. Je verzamelt die lijst, die vrij groot is, en bewaart deze. Vervolgens gooi je de dobbelstenen door een willekeurige privésleutel te genereren. Vanuit die private key genereer je de bijbehorende public key, en check je of deze in de lijst met public keys op de blockchain staat. Komt het overeen, dan maak je de daaraan gekoppelde wallet leeg; zo niet, dan herhaalt u het proces door een andere sleutel te genereren. Door je niet te concentreren op een bepaald individueel account, heb je de tijd verkort die je moet wachten om te kraken elke rekening van een geologische eon tot een veel beter beheersbare figuur. Mijn vrienden suggereerden dat het mogelijk zou zijn om iets in de orde van maanden te vinden als ze genoeg middelen hadden.

Zoals de titel al zegt, is het een verrassend eenvoudige manier om cryptocurrency te stelen. Maar eenvoudig betekent niet dat de aanval economisch zinvol is. Het raden van sleutelparen vereist aanzienlijke middelen en tijd, en je moet dit afwegen tegen de kans op het vinden van een walvis met bootladingen Bitcoin versus de kans op het vinden van een account met nog een paar dollar erop, wat zou steken na miljoenen in computer te hebben geïnvesteerd tijd. Dit serieus doen is een gok, en gelukkig voor de integriteit van Bitcoin, waarschijnlijk een slechte gok. Maar wie weet? Mensen do de loterij spelen.

Als je zelf de botten wilt rollen, is er zelfs een handige proof of concept in de vorm van sleutels.lol, het product van Sjors Ottjes, een Nederlandse webontwikkelaar. Deze site geeft een reeks sleutels weer en ondervraagt ​​de Bticoin- en Ethereum-blockchains om te zien of ze ergens overeenkomen. Je zult snel de omvang van de taak zien terwijl je willekeurige pagina's laadt, en het is veilig om te zeggen dat de kans dat je een pagina laadt met een geldige sleutel erop inderdaad erg klein is.

Als je Bitcoin vasthoudt, moet je op zijn minst nadenken over de brute force-aanval. Maar het gaat ons niet aan - onze rijkdom wordt bewaard in onbereikbare halfgeleiderapparaten die in een kluisje zijn opgeborgen.

Headerbeeld: Ralf Roletschek, CC BY-SA 3.0.

spot_img

Laatste intelligentie

spot_img