Ethereum Classic
För några dagar sedan drabbades Ethereum Classic av vad som såg ut att vara en s.k. 51%-attack. I efterhand påpekade vissa att det faktiskt inte var en egentlig attack utan istället ett test av ny mininghårdvara, men hur det än var är det intressant att förstå vad en 51%-attack faktiskt är eftersom någon hade resurser nog att kunna utföra en sådan på Ethereum Classic.
Låt oss börja med vad Ethereum Classic är för något. Bakgrunden till Ethereum kan du läsa i vår artikel från ett par veckor tillbaka och Ethereum Classic är en följd av det hack som inträffade 2016, när "the DAO" gick i graven. Det här var alltså ett smart kontrakt som hade en bugg vilket gjorde att stora summor ether kunde stjälas. Det var inte en bugg i Ethereum i sig men p.g.a. den stora effekt det hade så tyckte många att det behövde göras ett ingripande och förändra Ethereum-protokollet på ett sådant sätt att hacket "backades tillbaka". Det var också just det här som hände men vissa protesterade då högljutt och tyckte att detta helt bröt mot principen "code is law" och idén om ett decentraliserat nätverk som ingen kontrollerar. Den grupp som motsatte sig förändringarna bestämde sig för att köra vidare Ethereum-nätverket precis som innan utan några förändringar. P.g.a. detta fick vi två olika versioner av Etherum där den som inte innehöll några förändringar kom att gå under namnet "Ethereum Classic".
Att det var den förändrade versionen som fick behålla namnet "Ethereum" berodde helt enkelt på att marknaden verkade värdera denna version högre eftersom ether på denna gren blev snabbt betydligt dyrare än ether på classic-grenen. Ethereums mest inflytelserika person, skaparen Vitalik Buterin, stod också bakom förändringen. Det här var alltså ett exempel på en medveten förgrening av en blockkedja, vilket är ett av alla sätt som en blockkedja kan förgrenas på (läs mer i förgreningar av blockkedjan). Ett annat sätt som en blockkedja kan förgrenas på är vid en s.k. 51%-attack som alltså hände nyligen.
51%-attack
I en blockkedja baserad på proof-of-work så lägger miners hela tiden energi på att försöka skapa nästa block. Vem som lyckas skapa blocket avgörs i ett slags lotteri där chansen att lyckas är proportionell mot mängden datorkraft du besitter, det som Satoshi Nakamoto förklarade som "1 CPU - 1 vote". Exakt vilka transaktioner som ska ingå i ett block bestämmer den som skapar blocket men för att andra ska godkänna blocket gäller det förstås att de transaktioner som inkluderas är giltiga, alltså är utformade på rätt sätt och innehåller de eventuella digitala signaturer som behövs mm. Om en förgrening sker (alltså, om det vid något tillfälle finns två block som bygger vidare på samma "föräldrablock") så kommer deltagarna i nätverket att betrakta den kedja som är längst (eller mer specifikt, den kedja som krävt mest datorkraft att skapa) som den korrekta. Deltagarna är beredda att "skriva om historien" om en längre kedja som de inte tidigare kände till dyker upp. Detta är anledningen till att man brukar rekommendera mottagare av bitcoin att invänta ett antal "bekräftelser" (alltså efterföljande block) innan man betraktar en överföring som slutgiltig.
Någon exakt siffra för hur många block man bör vänta finns inte utan är helt enkelt en riskbedömning som är upp till mottagaren. Ju fler block som följt, desto svårare för någon att skriva om historien. En speciell situation uppstår dock om någon skulle besitta mer än 50% av datorkraften eftersom den då kan bygga en parallell kedja helt själv, utan att meddela någon. Eftersom denne har mer datorkraft än resten av nätverket tillsammans så kommer denna parallella blockkedja att vara längst och när angriparen bestämmer sig för att skicka ut dessa block till nätverket så kommer alla noder att inse att kedjan de följt faktiskt inte är den längsta och byta till den nya kedjan. Om angriparen t.ex. påbörjade sin kedja för 50 block sedan så kommer 50 block att skrivas om när den nya kedjan publiceras. Några saker att notera:
- Om du hade en transaktion i en av de 50 blocken i originalkedjan och angriparen valt att ta med din transaktion även i något av sina block så påverkas du inte märkbart.
- Om du hade en transaktion i en av de 50 blocken i originalkedjan och angriparen INTE tagit med denna i sina block så är det som att din transaktion aldrig har hänt.
- Angriparen kan inte modifiera eller skapa falska transaktioner men kan välja vilka transaktioner som ska komma med och inte.
Så vad är det då en angripare kan tänkas vilja åstadkomma med detta? Här är ett praktiskt exempel på ett bedrägeri:
- Angriparen sätter in 10 bitcoin på en kryptobörs. Kryptobörsen kontrollerar att de mottagit pengarna, väntar på några (kanske 6 stycken) bekräftelser och krediterar sedan angriparens konto med 10 bitcoin.
- Angriparen växlar sina bitcoin mot en annan kryptovaluta, t.ex. monero, och plockar ut sina monero till en plånbok som denne själv kontrollerar.
- Ovanstående sker alltså på originalkedjan medan en parallell kedja byggs upp av angriparen. I den nya kedjan tar inte angriparen med transaktionen till kryptobörsen utan istället en annan transaktion som skickar dessa 10 bitcoin till en egen plånbok.
- När den parallella kedjan accepterats av nätverket har kryptobörsen alltså inte fått några bitcoin från angriparen som därför har kvar såväl bitcoin som monero.
Säkerhet
Att nätverket hela tiden ser den längsta kedjan som den rätta är en fundamental regel i Bitcoin och andra blockkedjor som gör att nätverket kan fungera helt decentraliserat. Som vi sett ovan är det därför extremt viktigt att det mycket svårt att inneha en majoritet av datorkraften. Hur stor den totala mängden datorkraft för en valuta är beror i slutänden på hur högt valutan värderas så för en valuta som Bitcoin så är det väldigt dyrt att försöka sig på något sådant här. Detta gäller dock inte för en stor majoritet av alla de andra kryptovalutor som poppat upp under åren. På sajten crypto51.app visas den teoretiska kostnaden för en attack på olika kryptovalutor och där kan vi läsa att en 1-timmes-attack på bitcoin skulle kosta ca 320 000 USD medan en likadan attack på Ethereum Classic endast skulle kosta 4 500 USD. Så då skulle frågan alltså vara om angriparen kan genomföra ett bedrägeri under denna tidsperiod och hur mycket detta skulle kunna ge.
I praktiken är dock kostnadsanalysen lite mer avancerad än så. En fråga är hur deltagare i nätverket kommer att reagera på attacken. I den önskade situationen för angriparen så har ju denne tjänat in alla nya bitcoin som skapas i blocken, samt transaktionsavgifter, och då är den faktiskta kostnaden nära 0. Men om folk kommer överens om att på något sätt betrakta angriparens kedja som ogiltig och manuellt se till att man istället följer originalkedjan så blir angriparen sittandes med en alternativ valuta (som i fallet när Ethereum splittades i Ethereum och Ethereum Classic) och då är frågan hur marknaden värderar detta alternativ. I det första fallet finns också risken att valutakursen kraschar p.g.a. attacken så att även om angriparen sitter på originalvalutan så är den nu betydligt mindre värd, någon som denne dock skulle kunna skydda sig mot genom att på förhand spekulera i en nedgång (ta en s.k. kort position på marknaden).
Det viktigaste att ta med sig från allt detta är:
- De allra flesta kryptovalutor är betydligt mindre säkra än bitcoin och definitivt i riskzonen för 51%-attacker.
- Hur många bekräftelser man ska invänta vid en transaktion beror på hur stor transaktionen är. Överför man stora mängder pengar bör man också vänta på fler bekräftelser men exakt hur många är en riskbedömning som är väldigt svår att göra. Att vi nu fick en attack på Ethereum Classic har den positiva aspekt att vi i alla fall fått en fingervisning om vad som kan hända i praktiken.