Er wordt vaak gedacht dat crypto's niet te hacken zijn. Dan heb ik het niet over je wallet, zelfs met beveiliging zijn die soms toch te hacken, en dat kan je je zuurverdiende digitale muntjes kosten. Nee, ik bedoel de blockchains, die zijn toch niet te hacken? Helaas is dat niet waar. Het is weliswaar moeilijk en vaak geen one man job maar het kan wel gedaan worden.
Dat is wat we te horen krijgen. De blockchain is veilig. Dit is wat de experts ons doen geloven. En inderdaad, traditionele instituten kunnen alleen maar jaloers zijn op de veiligheid van blockchains. Hoewel niet elke blockchain op dezelfde manier werkt, is het vrijwel onmogelijk om hiermee te sjoemelen. Vooral omdat de blockchain vaak niet op één plaats staat, maar overal kopieën heeft. En elke transactie die wordt bijgeschreven, moet in elke kopie worden bijgeschreven voordat die wordt goedgekeurd. Ja, ik weet dat dit een simplistische weergave is van wat een blockchain is en doet, maar voor dit doel is het even voldoende.
Door dit principe is het dus vrijwel onmogelijk om een hack uit te voeren. Tenminste, met als doel om crypto's te stelen tenminste. Want als je ergens inbreekt op het netwerk, en daar iets verandert in de blockchain, komen de kopieën in opstand omdat hun informatie niet overeenkomt met de corrupte kopie. En dan geldt het recht van de sterkste (in dit geval: het grootste aantal) en zal de corrupte kopie 'buitengesloten' worden. De transactie ketst af.
Je kunt je wellicht ook iets voorstellen bij een DDoS aanval. Je weet wel, daar waar DigiD, banken, de Belastingdienst en andere grote spelers last van hebben gehad in de afgelopen maanden/jaren. Een hacker, of groep hackers, overspoelt de website met verzoeken, zoveel dat de servers het niet meer aankan en de dienst niet meer bereikbaar is. Op deze manier kun je proberen een blockchain te hacken. En dat zal echt wel hinder opleveren, waardoor transacties niet (meteen) worden goedgekeurd. Maar of je er verder iets mee bereikt? Ik denk het niet.
Toch is er een manier om bepaalde blockchains te hacken. Al dekt de term hacken misschien niet helemaal de lading. De 51% aanval is een methode om (tijdelijk) controle over een blockchain of crypto te verkrijgen en daarmee geld binnen te harken.
Bij de 51% aanval krijgt een groep miners meer dan 50% bezit van de computerkracht of hash rate van een netwerk. Het wordt daarom ook wel een majority attack oftewel een meerderheidsaanval genoemd. Door het verkrijgen van een absolute meerderheid kunnen de hackers transacties tegenhouden (door bevestigingen te stoppen) of transacties terug te draaien. Als ze midden in een transactie ingrijpen kunnen digitale munten dubbel uitgegeven worden.
Deze methode werkt alleen bij het Proof of Work principe, al maken de meeste crypto's daar tot op heden nog gebruik van en zijn ze dus allemaal kwetsbaar voor zo'n overname. Hoe langer de blockchain bestaat, en hoe meer transacties reeds zijn bevestigd, hoe lastiger deze overname echter is. En als het dan al lukt, dan nog is het vrijwel onmogelijk om ver terug te gaan in de tijd en dus oudere blocks aan te passen.
Er zijn enkele voorbeelden van dit soort hacks:
Afgelopen april was Verge 3 dagen lang, voor periodes van meerdere uren, slachtoffer van een 51% aanval. Ook Verge is een relatief kleine crypto, gericht op privacy. Verge maakt gebruik van de Bitcoin blockchain. Tijdens de hack wist de hacker zo'n 1500 Verge per seconde (equivalent van ongeveer $80) buit te maken. Hoe kon deze hack gebeuren?
Allereerst door het manipuleren van de timestamp. Elk block op de blockchain krijgt een timestamp (tijdsaanduiding). Deze aanduiding wordt gemaakt op het moment van creatie van het block, en een block bevat verschillende transacties die dan gezamenlijk goedgekeurd worden. Doordat het ontzettend lastig (lees: niet te doen) is om het hele netwerk op exact dezelfde tijd te laten draaien, kunnen de timestamps afwijken van de daadwerkelijke tijd. De blocks op de blockchain staan dus ook niet altijd in chronologische volgorde. Bij Verge is een afwijking van 2 uur of minder toegestaan. De hacker maakte hier gebruik van en creëerde blocks met een timestamp in het verleden, maar wel binnen de toegestane afwijking van 2 uur. Zo kwamen ze nog in aanmerking voor acceptatie en verificatie door de nodes in het netwerk.
Bij Verge wordt elke 30 seconden een block gecreëerd op de blockchain. Dit gebeurt door minen, oftewel het oplossen van rekensommen door bepaalde hardware. Om die 30 seconden aan te houden, wordt de moeilijkheid van de sommen steeds aangepast naar gelang de snelheid van oplossen. Dit gebeurt door het meest recente gevalideerde blocks te inspecteren en op basis daarvan de moeilijkheidsgraad aan te passen. Verge doet dit elke 30 minuten. Door het aanmaken van de blocks met een timestamp in het verleden (de hacker gebruikte een afwijking van ongeveer een uur) ging het netwerk compleet over de flos met betrekking tot het bepalen van de moeilijkheid. De moeilijkheidsgraad lag 99,99% lager dan het gemiddelde, wat betekende dat er elke seconde een block aangemaakt kon worden (veel te veel dus).
Nu zou de hacker hier (alleen) nog niet veel aan hebben. Want met zo'n lage moeilijkheidsgraad profiteert elke miner, dus de hacker moet 51% van het netwerk hebben om hier voordeel aan te behalen, en dat is niet makkelijker geworden met deze hack. En toch is het hem gelukt.
En daarvoor heeft de hacker niet eens 51% van de hash power hoeven behalen. Door slim gebruik te maken van de functionaliteit van Verge is het hem toch gelukt om flink te verdienen aan deze hack. Waar de meeste crypto's voor minen gebruik maken van 1 algoritme (meestal SHA-256), doet Verge het met 5 algoritmes. Dit hebben ze gedaan om het grootste 'bezwaar' tegen het minen van Bitcoin in te gaan, namelijk dat het minen te specialistisch is geworden, en wordt gedomineerd door een selecte groep miners/minerpools. Dit gaat in tegen het decentrale karakter van blockchain. Door meerdere en andere algoritmes te gebruiken, wordt dit specialiseren van minen tegengegaan.
Alle 5 algoritmes kennen een eigen moeilijkheidsgraad die individueel aangepast wordt zodat elke 30 seconden een block gecreëerd kan worden. Het aanpassen van de moeilijkheidsgraad van het ene algoritme staat los van die van de andere 4. En daar maakte de hacker gebruik van: hij paste de moeilijkheidsgraad van 1 van de 5 algoritmes aan, niet die van het hele netwerk. Hij deed dit voor het Scrypt algoritme, waardoor enkel hij (en de andere miners op dit algoritme) profiteerden. Als hij hier meer dan 50% van de hash power behaalde, was dat genoeg om dominant te zijn en dus flink geld binnen te harken. Hiervoor was 10% van de totale hash power van het Verge netwerk dus al voldoende, sommigen zeggen zelfs dat het maar 0,5% van het totale netwerk hoefde te zijn, en dat is ineens een stuk meer haalbaar.
Of Verge er echt onder geleden heeft? Natuurlijk is zo'n hack niet ‘leuk' voor welke crypto ook. Dus de ontwikkelaars losten te problemen op, er kwam een fork en de prijs van Verge ging in een week tijd 30% omhoog. Dit is inderdaad tegennatuurlijk en ook redelijk onverklaarbaar. In de nasleep werd Verge aangenomen als betaalmiddel door Pornhub, iets waar je ze ook niet over hoeft te horen klagen.
Echter, 6 weken later werd Verge opnieuw slachtoffer van een aanval. Hoe konden ze Verge in zo'n korte tijd opnieuw hacken? En nog wel op een manier die vrijwel identiek lijkt als de eerste aanval? Een van de aanpassingen in het netwerk is dat je niet onbeperkt met 1 algoritme kunt minen. Als je een block mined en van de afgelopen 10 blocks zijn er 5 of meer van dit algoritme, dan wordt je block afgeketst. Dominant zijn op 1 algoritme levert dus niet veel meer op. Maar het is verrassend goedkoop om (tijdelijk) apparatuur te huren, dus dominant worden op 2 algoritmes is weliswaar duurder maar nog steeds heel haalbaar.
Het tweede probleem, dat het aanpassen van de moeilijkheidsgraad elke 30 minuten gebeurde en een block een afwijking van 2 uur mocht hebben, was nog niet 'opgelost'. Misschien werd het niet als probleem gezien? Na de tweede hack werd de toegestane tijdsafwijking teruggebracht naar maximaal 10 minuten.
Bij bijvoorbeeld Bitcoin is zo'n hack een stuk lastiger. Hoewel de miningpools steeds groter worden, is er niemand groot genoeg om maar de meerderheid de verkrijgen. Zo is er geen enkele overheid die genoeg rekenkracht heeft om 51% of meer hash power op het Bitcoin netwerk te verkrijgen. Ook wordt bij Bitcoin de moeilijkheidsgraad elke 2016 blocks, oftewel elke 2 weken ongeveer, aangepast. Dus om dit te manipuleren is vele malen moeilijker dan destijds bij Verge. Een 51% aanval op Bitcoin of een andere grote coin kan dus in theorie wel, al wordt het lastig. En het zal niet veel schade aanrichten, behalve dan paniek en dus wellicht een (tijdelijke) daling in de koers.
Een oplossing zou zijn om over te gaan op Proof of stake. Hierbij wordt niet meer gemined maar is je stack (grootte én hoe lang je deze al hebt) bepalend voor je positie. Een 51% aanval zou hier betekenen dat je 51% of meer van de hoeveelheid munten in omloop moet bezitten. Wellicht is dit nog haalbaar bij een hele nieuwe crypto, maar anders wordt het een hele kostbare aangelegenheid. Vooral omdat je je stack vast moet zetten op een stakerekening en deze dus niet zomaar kunt verhandelen. Om een Proof of stake netwerk te hacken moet je dus een enorme zak geld meenemen. Niet onmogelijk, wel onwaarschijnlijk.
Ik verwacht dat we de komende tijd nog wel meer 51% aanvallen zullen gaan zien. Hoewel die op Verge niet een volledige 51% aanval was, maar een variatie daarop, geeft dit wel aan dat hackers op zoek zijn naar de kwetsbaarheden in de verschillende netwerken. Het hacken is een uitdaging, het geld een welkome bijzaak (denk ik, maar ja, ik ben geen hacker ;-)).