Vad är en förmörkelseattack?
Hem
Artiklar
Vad är en förmörkelseattack?

Vad är en förmörkelseattack?

Medelnivå
Publicerad Jan 19, 2020Uppdaterad Dec 11, 2023
6m

Introduktion

En förmörkelseattack är en relativt enkel attack som en skadlig aktör kan använda för att störa noder i ett nätverk. Som namnet antyder syftar attacken till att dölja en deltagares syn på peer-to-peer-nätverket, för att orsaka allmän störning eller för att förbereda sig för mer sofistikerade attacker.

Förmörkelseattacker påminner på ytan om Sybil-attacker. Men även om de delar vissa likheter – till exempel att den skadliga aktören kommer att översvämma nätverket med falska peers – är deras slutmål annorlunda. En förmörkelseattack riktar sig mot en enda nod (av skäl som förklaras i ett senare avsnitt), medan en Sybil-attack är en nätverksomfattande attack utformad för att spela protokollets anseendesystem.

Konceptet diskuteras ingående i avhandlingen från 2015,  Eclipse Attacks on Bitcoins Peer-to-Peer Network, där forskare från Boston University och Hebrew University rapporterar sina resultat från sina experiment i ökande förmörkelseattacker, samt möjliga motåtgärder för att bekämpa dem.


Så här fungerar en förmörkelseattack

Bitcoin-miners kräver specialutrustning för att generera nya block, men icke-utvinning (eller fulla) noder körs enkelt med minimal beräkningskraft. Detta hjälper decentraliseringen av Bitcoin, eftersom vem som helst kan snurra upp en nod på en enhet med låg specifikation. Programvaran upprätthåller en databas med transaktioner som den synkroniserar med sina omedelbara peers att förbli i låsning med nätverket.

En begränsande faktor för många noder är bandbredd. Även om det finns en enorm mängd enheter som kör programvaran, kan den genomsnittliga enheten inte ansluta direkt till många av dem på grund av begränsningar som anges i Bitcoin-programvaran (som endast tillåter maximalt 125 anslutningar).

I en förmörkelseattack kommer den skadliga aktören att se till att alla målets anslutningar görs till angriparstyrda noder. Enheten kommer först att översvämma målet med sina egna ip-adresser, som offret sannolikt kommer att ansluta till vid omstart av deras programvara. En omstart kan antingen tvingas (det vill säga med en DDoS-attack på målet), eller så kan angriparen helt enkelt vänta på att den ska inträffa. 

När detta har inträffat är det intet ont anande offret utlämnat till de skadliga noderna – utan utsikt över det bredare nätverket kan de matas felaktiga data av angriparen.


Konsekvenser av en förmörkelseattack

Om en angripare använder resurserna för att alienera en kamrat från nätverket har de förmodligen ett motiv att göra det. Det finns en handfull av på varandra följande attacker som lättare kan startas när en nod har kvävts.


0-bekräftelse dubbla utgifter

Om en individ accepterar en transaktion utan bekräftelser riskerar de dubbla utgifter. Transaktionen kan ha sänts, men tills den har inkluderats i ett block (och därmed bundit sig till blockkedjan) kan avsändaren enkelt skapa en ny transaktion som spenderar samma tillgångar någon annanstans. Om den nya transaktionen har en högre avgift kommer en miner sannolikt att inkludera den före originalet, vilket ogiltigförklarar den tidigare. 

Vissa företag och privatpersoner accepterar dessa 0-bekräftelsetransaktioner. Vi tar köpmannen Bob som säljer avancerade fordon. Han är inte medveten om att Alice har förmörkat sin nod och misstänker ingenting när hon beställer en lyxig sportbil. Hon skapar en transaktion, som Bob sedan sänder till nätverket. Nöjd med att betalningen är på väg, överlämnar han nycklarna till bilen och Alice kör iväg.

Naturligtvis sändes inte transaktionen till nätverket – Bob har bara vidarebefordrat den till Alices skadliga noder, som inte kommer att vidarebefordra den till ärliga noder. Medan denna transaktion hänger i luften spenderar Alice samma tillgångar på det (riktiga) nätverket, oavsett om det är till en annan part eller till en adress hon äger. Även om den första transaktionen till Bob så småningom visas, kommer den att avvisas eftersom coin redan har använts.


N-bekräftelse dubbla utgifter

N-bekräftelsensdubbla utgifter liknar 0-bekräftelsen, men innebär fler förberedelser. Många företag föredrar att vänta på ett visst antal bekräftelser innan de markerar en betalning som giltig. För att komma runt detta måste angriparen förmörka både miner och handlare. När angriparen har ställt in ordern med handlaren sänder de en transaktion till (förmörkade) miners. Transaktionen bekräftas och ingår i blockkedjan – men denna blockkedja är inte den kedja som majoriteten av nätverket observerar, eftersom miner är avskuren.

Därifrån vidarebefordrar angriparen denna version av blockkedjan till handlaren, som frisläpper varorna i tron att transaktionen har bekräftats. När de förmörkade noderna återförenas med det faktiska nätverket är blockkedjan som de felaktigt tror är giltig föräldralös av den som resten av nätverket har arbetat med (detta har vissa likheter med en 51 %-attack).


Försvagning av konkurrerande miners

En förmörkad nod kommer att fortsätta att fungera, omedveten om att de har separerats från nätverket. Miners kommer att fortsätta att bryta block inom de regler som anges i protokollet, men blocken som läggs till kommer att kasseras när de synkroniseras med ärliga peers. 

Teoretiskt sett kan en storskalig förmörkelseattack mot stora miners användas för att underlätta en 51 %-attack. Som det ser ut är kostnaden för att ta över majoriteten av Bitcoins hashkraft helt enkelt för hög för även de mest resursstarka angriparna – vid ~ 80TH/s skulle enheten behöva mer än 40TH/s för att försöka en sådan manöver. 

I ett hypotetiskt scenario där denna hashkraft fördelas mellan 10 parter (så att var och en äger 8TH/s) kan angriparen avsevärt sänka kraven för en 51 %-attack genom att stänga av dessa parter från nätverket. Om fem är förmörkade tas 40TH/s bort från loppet för att hitta nästa block och angriparen behöver nu bara förvärva något över 20TH/s för att ta kontrollen.

Annan sabotage som kan uppnås genom att förmörka mål inkluderar manipulation av noder för självisk utvinning, eller skapande av lopp mellan miners för att hitta nästa block.


Minskning

Med tillräckligt med ip-adresser kan en angripare förmörka vilken nod som helst. Den enklaste metoden för att förhindra att detta händer är att en operatör blockerar inkommande anslutningar och bara gör utgående anslutningar till specifika noder (som de som har vitlistats av andra peers). Som forskningsavhandlingen påpekar är detta dock inte ett tillvägagångssätt som fungerar i stor skala – om alla deltagare antar dessa åtgärder kommer nya noder inte att kunna gå med i nätverket.

Författarna föreslår en handfull justeringar av Bitcoin-programvaran, av vilka några har integrerats sedan publiceringen släpptes. Dessa gör förmörkelseattacker dyrare genom mindre ändringar av koden, till exempel slumpmässigt urval av nya anslutningar och större kapacitet för lagring av adresser.


Sammanfattningsvis

Förmörkelseattack utförs på peer-to-peer-nätverksnivå. De utplaceras som en fristående attack och kan vara något av en olägenhet. Deras verkliga effektivitet är att förstärka andra attacker som påverkar mål ekonomiskt, eller ge angriparen en fördel på utvinningsfronten.

I naturen har det ännu inte uppstått allvarliga konsekvenser till följd av en förmörkelseattack, men hotet finns fortfarande trots de motåtgärder som är integrerade i nätverket. Som med de flesta attackvektorer som finns för Bitcoin och andra kryptovalutor kommer det starkaste försvaret att vara det som gör det ekonomiskt oöverkomligt för skadliga parter att försöka sig på dem.