Angrep og sikkerhet i blokkjeder

Hvor sikre er blokkjeder? Det kommer an på hva du mener med spørsmålet. Hvis du mener, hvor sikker er lommeboka mi, investeringen jeg har gjort i et DeFi-prosjekt, eller verdien til kupongene jeg eier, er svaret “svært usikre”. Angrepsvinklene er utallige. Lommebøker kan angripes via hacking, social engineering eller til og med fysisk innbrudd og trusler. Alle investeringer i noe som berøres av smarte kontrakter kan angripes gjennom de mange hullene slike kontrakter ofte har. Og selv om du klarer å beskytte det du eier, er det ingen spesiell grunn til at du skal klare å omsette det til ekte penger den dagen du ønsker å innkassere gevinsten din.

Selve blokkjeden er derimot ganske sikker. Det er vanskelig å manipulere innholdet i en blokkjede på en måte som bryter med intensjonen og integriteten dens, for eksempel slik at du klarer å bruke flere kryptomynter enn du eier. Men ikke umulig. Det er en del forutsetninger som må stemme for at et slikt angrep skal være ugjennomførbart.

Reorganisering og 51%-angrep

Ettersom det ikke finnes én sentral autoritet for hva innholdet er i en distribuert blokkjede, må nodene ordne dette seg i mellom. I blant oppstår det konkurrerende oppfatninger om hvilken som er den riktige blokkjeden. Årsaken kan være noe så uskyldig som nettverksproblemer eller programvarefeil. Da ender man i en periode opp med to konkurrerende utgaver av den samme blokkjeden, som divergerer i de nyeste blokkene

Bitcoin og andre blokkjeder er designet for å rydde opp i slike situasjoner. Helst skal dette skje automatisk, for eksempel ved at utvinnerne favoriserer den lengste av flere konkurrerende blokkjeder, ut fra tanken om at det er denne det er lagt mest arbeid i. Jo flere som samler seg om den lengste blokkjeden, jo mindre er det å vinne på å jobbe videre på den korteste.

Opprydningen kan også skje manuelt, som da den nye versjonen av en Bitcoin-klient i 2013 ved et uhell laget en inkompatibel utgave av blokkjeden, og utvinnerne ble enige seg i mellom om hvilken av dem som skulle videreføres.

Men premisset for en slik opprydning er at et flertall av nodene er ærlige.

Særlig mindre blokkjeder vil være sårbare for det som kalles 51%-angrep, hvor en ondsinnet aktør tilegner seg kontroll over så mye av kapasiteten i nettverket at de kan bygge opp en alternativ, falsk blokkjede og erstatte den ærlige blokkjeden med denne. Dermed kan man stjele penger eller undergrave blokkjedens troverdighet.

En slik reorganisering av blokkjeden utføres i blant av velmente årsaker. I 2016 gjennomførte en hacker et vellykket angrep på en smart kontrakt i Ethereum og stjal ether til en daværende verdi av $60 millioner. Kontrakten tilhørte The DAO, en tidlig desentralisert uavhengig organisasjon som satt på totalt $150 millioner i ether-verdier. Koden i kontrakten inneholdt en bug som gjorde at en angriper kunne overføre disse til seg selv. I teorien gjorde ikke hackeren noe “galt”. Alt de hadde gjort, påpekte de selv, var å finne et hull i en kontrakt. Hvis smarte kontrakter skal være uavhengige av rettsvesenet som håndhever tradisjonelle kontrakter, må selve kontrakten være den endelige autoriteten på hva som er lov og ikke lov. Altså må de som skrev koden bare leve med at feilen deres har kostet dem hundrevis millioner av kroner.

Ethereum-miljøet anså likevel dette som en så grunnleggende trussel mot nettverket deres at de gjennomførte en reorganisering av blokkjeden som rett og slett fjernet hele angrepet. Dette var så kontroversielt at noen noder valgte å beholde den opprinnelige blokkjeden og videreføre den som Ethereum Classic (ETC), som finnes fremdeles.

Også Bitcoin vurderte en slik reorganisering i 2019 etter et stort tyveri fra Binance.

Mindre blokkjeder opplever 51%-angrep oftere enn de store, fordi det er billigere å angripe dem. Her ligger det en potensiell dødsspiral for blokkjeder: De er tryggeste når de er mest populære. Hvis populariteten synker, kommer man før eller siden til et punkt hvor man er sårbar for angripere. For eksempel har Ethereum Classic blitt angrepet flere ganger, nettopp fordi de er mye mindre enn Ethereum.

Men også Bitcoin kan angripes. Klokken 21:21 21. januar i 2021 lyktes noen med å stjele bitcoins tilsvarende $21 i noe som antas å være et symbolsk reorganiseringsangrep. Den totale mengden bitcoins som kan eksistere er som kjent 21 millioner.

Betyr et 51%-angrep at angriperen nå utgjør den “ekte” blokkjeden? Nei, fordi de ærlige nodene enten vil ta kontrollen tilbake eller trekke seg ut og bygge videre på sin egen utgave av blokkjeden. Målet er ikke å overta blokkjeden men å stjele verdier og/eller undergrave dens legitimitet.

Men som eksemplet med Ethereum Classic viser, er “ekte” og “ærlig” ord som ikke uten videre kan brukes til å beskrive blokkjeder. Er det de som samlet seg om Ethereum eller de som samlet seg om Ethereum Classic som var mest ærlige? Mer presist kan vi si at premisset for en ordnet opprydning når det oppstår tvist om en blokkjede er at de fleste av utvinnerne her felles mål og verdier, slik at de ut fra disse kan bli enige om hvilken blokkjede de skal jobbe videre på. Hvis de er uenige, vil blokkjeden splittes.

I Bitcoin har dette for eksempel skjedd flere ganger, slik at man har endt opp med både Bitcoin, Bitcoin Cash og Bitcoin Satoshi Vision. Disse splittet opp over ideologiske årsaker som var svært viktige for de det gjelder, selv om de fra utsiden fremstår som uviktige. Ingen av dem er mer “ærlige” enn de andre, de gjenspeiler ulike oppfatninger om hvordan Bitcon skal fungere.

Hva gjør en blokkjede sikker?

La oss se bort fra ideologiske splittelser eller tilfeller hvor blokkjeden uheldigvis har endt opp i en tilstand ingen ønsker å videreføre, og fokusere på åpenbart ondsinnede angrep, altså hvor en skurk ønsker å manipulere blokkjeden på en måte som ikke har noen annen hensikt enn å karre til seg store verdier. Manipuleringen behøver heller ikke være permanent, bare langvarig nok til at angriperen kan hente ut en gevinst. Hvis angriper for eksempel stjeler 100 000 BTC gjennom å manipulere blokkjeden, og rekker å selge noen tusen av disse for ekte penger eller en mynt i en annen blokkjede, bryr det dem ikke at utvinnerne ruller tilbake tyveriet deres på blokkjeden. De har jo fått pengene sine.

I teorien burde slike angrep kunne skje ganske ofte. I praksis skjer de sjelden. Hvorfor?

I A model for Bitcoin’s security and the declining block subsidy påpeker Hasu, Prestwich og Curtis at sikkerhet i blokkjeder ofte handler mer om insentiver enn om kryptografi. Altså at et angrep som er mulig i teorien er så dyrt, og gir så lite gevinst, at det ikke er verdt det.

Det klassiske angrepet blokkjeder er ment å motstå er et /double-spend/-angrep, hvor man først kjøper noe med bitcoins, og deretter lykkes med å lage en alternative blokkjede som er lengre enn den hvor kjøpet ble registrert. Når det er uenighet i Bitcoin-nettverket om hvilken blokkjede som er den gjeldende, finner man som sagt konsensus ved å plukke den som inneholder flest blokker. Men en angriper som kontrollerer mer enn halvparten av utvinningskapasiteten i Bitcoin kan utnytte denne konsensusalgoritmen til å jukse, ved at man bruker bitcoins i én blokk, og deretter forkaster denne og bygger en lengre blokkjede hvor denne transaksjonen ikke finnes. Dermed har de både fått det de kjøpte og samtidig beholdt pengene.

Det er denne typen angrep man kan se for seg i teorien, men som sjelden skjer i praksis. Det må det være en grunn til, for det er ingen mangel på folk som ville sagt ja takk til å bruke bitcoinsene sine to ganger.

Svaret har å gjøre med oppstartskostnadene for Bitcoin-utvinnere. Hasu, Prestwich og Curtis påpeker at hvis det å utvinne Bitcoin var en tjeneste du kunne leie nærmest på timesbasis, slik man leier serverkapasitet i en skyløsning, ville markedsmekanismer sørget for at kostnaden ved å leie en slik tjeneste nærmet seg belønningen man får som utvinner, altså at gevinsten nærmet seg null. Dermed ville det lett vært mer penger å tjene på å angripe blokkjeden enn på å være ærlig. Angriperen har jo ikke noe på spill.

I praksis foregår ikke Bitcoin-utvinning på denne måten. Å drive med Bitoin-utvinning er en investering i industriskala, med store mengder spesialisert hardware som utelukkende kan brukes til dette formålet. Oppstartskostnaden kan være på flere milliarder kroner. Dette er i tillegg hardware med begrenset levetid, blant annet fordi utviklingen av ny hardware foregår raskt. Dette innebærer at kapitalen som trengs for å bli Bitcoin-utvinner tilsvarer ca halvparten av den forventede inntjeningen over de neste to årene. Utvinnere har derfor et sterkt insentiv for å unngå å gjøre noe som kan true prisen på Bitcoin, slik et vellykket double spend-angrep vil gjøre. Det gir ikke økonomisk mening å angripe blokkjeden.

Bitcoins sikkerhet, hevder de, bygger derfor på at det krever en stor investering i spesialisert hardware for å bli utvinner. Uten denne oppstartskostnaden, ville Bitcoin vært langt mindre sikkert.

Denne beskyttelsen gjelder ikke bare mot direkte angrep, påpeker de, men også mot å la én enkelt utvinner få mer enn halvparten av utvinningskapasiteten. Selv om denne utvinneren er ærlig, vil frykten for at de er uærlige true bitcoinkursen, og dermed også redusere den store utvinnerens inntekter. Dette skjedde i 2014 da utvinnergruppen GHash.io samlet opp mer enn 50% av utvinningskapasiteten og ble beskyldt for å utføre et double spend-angrep. Anklagen alene var nok til at folk solgte seg ut av Bitcoin og at utvinnere trakk seg ut av gruppen. Siden har ingen enkelt gruppe våget å vokse seg så stor.

Hasu, Prestwich og Curtis skriver at det som derimot kan bli en trussel mot Bitcoin på sikt er den synkenden utvinnergevinsten, som er satt til å halvere med jevne mellomrom, slik at Bitcoin aldri ender opp med flere enn 21 millioner mynter. Utvinnerne vil da tjene pengene sine på brukernes transaksjonsavgifter. Disse igjen vil være avhengig av etterspørselen etter å gjennomføre Bitcoin-transaksjoner. Mindre gevinst fra utvinning gjør at en angriper potensielt har mindre å tape på et angrep. De mener at dette (per 2019) er et foreløpig uløst problem som kan tvinge Bitcoin til å endre på noen av spillereglene sine i framtiden.

Oppsummert kan vi si at blokkjeder er sikre i den grad insentivet for ærlighet er sterkt nok. Faktorer som styrker dette insentivet er størrelsen på nettverket, som gjør utvinning til en mer kostbar investering, i hvilken grad utvinningen skjer på dedikert hardware som ikke kan brukes til noe annet, og belønningen utvinnere får for å holde blokkjeden gående. En mindre blokkjede er mindre trygg. En blokkjede hvor belønningen synker, kan havne i en ond spiral.

Det er dermed feil å se på blokkjeden som noe som eksisterer nærmest som en uavhengig entitet i ideenes verden, som når Bitcoin-tilhengere sier at Bitcoin “er” energi lagret i form av tall. Som alle andre økonomimske fenomener er blokkjeder levende systemer som lever, vokser, svinner bort og dør, uten at noen behøver å angripe det kryptografiske grunnlaget deres. Blokkjeden er en database som holdes i live av utvinnerne, og det er visse omstendigheter som må være på plass for at det skal lønne seg for dem å gjøre dette på en ærlig måte over lang tid.