Dobbeltforbruk forklart
Innholdsfortegnelse
Hva er dobbeltforbruk?
Hvordan kan dobbeltforbruk forhindres?
Dobbeltforbruk i Bitcoin
Avsluttende tanker
Dobbeltforbruk forklart
Hjem
Artikler
Dobbeltforbruk forklart

Dobbeltforbruk forklart

Viderekommen
Publisert Feb 17, 2020Oppdatert Jan 31, 2023
7m

Hva er dobbeltforbruk?

Dobbeltforbruk er et potensielt problem i et digitalt pengesystem der de samme pengene sendes til to mottakere samtidig. Uten tilstrekkelige tiltak mot dette blir en protokoll som ikke løser dette problemet, fundamentalt undergravd – brukerne har ingen måte å bekrefte at pengene de har mottatt, ikke allerede har blitt brukt andre steder.

Når det gjelder digitale penger, er det veldig viktig å sikre at spesifikke enheter ikke kan dupliseres. Hele systemet ville blitt undergravd hvis Anne kunne motta 10 enheter, kopiere og lime dem inn 10 ganger og plutselig ha 100 enheter. En slikt opplegg kan heller ikke fungere hvis hun kan sende de samme 10 enhetene til både Benjamin og Caroline samtidig. Så for at digitale penger skal fungere, må det finnes mekanismer som forhindrer dette.


Hvordan kan dobbeltforbruk forhindres?

Den sentraliserte tilnærmingen

Den sentraliserte metoden er mye enklere å implementere enn de desentraliserte alternativene. Dette innebærer vanligvis at én forvalter administrerer systemet og kontrollerer utstedelsen og distribusjonen av enheter. Et godt eksempel på en sentralisert løsning på problemet med dobbeltforbruk er David Chaums eCash. 

For å tilby brukerne et digitalt aktivum som ligner på kontanter (kan byttes anonymt og peer-to-peer / mellom personer), kan en bank bruke blinde signaturer – som beskrevet av kryptografen David Chaum i en artikkel fra 1982 med tittelen Blind Signatures for Untraceable Payments (blinde signaturer for betalinger som ikke kan spores).

Hvis en bruker i en slik sammenheng (vi kan kalle han Dan) vil motta 1000 kr i digitale kontanter, må han informere banken først. Forutsatt at han har nok penger på konto, genererer han et tilfeldig tall (eller mange, for mindre valører). La oss anta at han produserer fem tall, som hver skal tildeles en verdi på 200 kr. For å hindre at banken sporer spesifikke enheter, skjuler Dan de tilfeldige tallene ved å legge til en blind faktor for hver av dem.

Deretter overfører han disse dataene til banken – som belaster kontoen hans med 1000 kr – og så signerer han meldinger som bekrefter at hver av de fem informasjonsbitene kan løses inn for 200 kr. Dan kan nå bruke pengene banken har utstedt. Han går til restauranten Elin eier, og kjøper et måltid som koster 400 kr. 

Dan kan fjerne den blinde faktoren for å avsløre det tilfeldige tallet knyttet til hver digitale kontant-«seddel», som fungerer som en unik identifikator for hver enhet (nesten som et serienummer). Han avslører to av disse for Elin, som nå må løse dem inn umiddelbart i banken for å forhindre at Dan bruker dem hos en annen selger. Banken sjekker at signaturene er gyldige, og hvis alt ser riktig ut, krediteres Elins konto 400 kr.

Sedlene som ble brukt, blir nå på en måte brent, og det må utstedes flere hvis Elin vil bruke sin nye saldo på samme måte.

Chaumian eCash kan være nyttig for private overføringer. Men det er ikke motstandsdyktig nok fordi banken er et sentralt enkeltpunkt som kan svikte. En utstedt seddel er ikke verdt noe i seg selv, ettersom verdien utelukkende kommer fra at banken er villig til å bytte den mot kroner. Kundene er prisgitt banken, og de må stole på den for at pengene skal ha verdi. Det er nettopp dette problemet kryptovaluta prøver å løse.


Den desentraliserte tilnærmingen

Det er vanskeligere å sikre at pengene ikke kan brukes dobbelt i et økosystem uten en forvalter. Deltakere med lik myndighet må koordinere seg rundt et sett med regler som hindrer svindel, og som oppmuntrer alle brukerne til å opptre ærlig.

Den største innovasjonen som ble presentert i Bitcoin-hvitboken, var en løsning på problemet med dobbeltforbruk. Selv om den ikke ble omtalt som det, foreslo Satoshi en datastruktur som nå er kjent som en blokkjede.

En blokkjede er egentlig bare en database med noen unike egenskaper. Deltakerne på nettverket (omtalt som noder) kjører spesialisert programvare, som gjør at de kan synkronisere sin kopi av databasen med andre noder. Resultatet er at hele nettverket kan revidere historikken til transaksjoner datert helt tilbake til genesis-blokken. Det at blokkjeden er offentlig synlig, gjør det enkelt å oppdage og hindre uærlig aktivitet, for eksempel transaksjoner som prøver seg på dobbeltforbruk.

Når en bruker kringkaster en transaksjon, blir den ikke lagt til på blokkjeden umiddelbart – den må først tas med i en blokk gjennom mining. Mottakeren bør derfor ikke vurdere transaksjonen som gyldig før etter at blokken er lagt til på kjeden. Ellers risikerer mottakeren å tape pengene, ettersom avsenderen kan bruke de samme myntene andre steder. 

Etter at transaksjonen er bekreftet, kan ikke pengene brukes dobbelt, ettersom eierskapet tildeles en ny bruker – og hele nettverket kan verifisere dette. Derfor er det mange som anbefaler å vente på flere bekreftelser før de godtar en betaling som gyldig. For hver påfølgende blokk er det en dramatisk økning i innsatsen som kreves for å modifisere eller omskrive kjeden (noe som kan skje ved et 51 %-angrep).

Vi kan bygge videre på eksemplet med restauranten. Dan drar tilbake til restauranten, og nå ser han at de har et skilt i vinduet som sier «Bitcoin godtas her». Han likte maten han spiste sist, så han bestiller det samme igjen. Det koster 0,005 BTC. 

Elin gir ham en offentlig adresse som han må sende pengene til. Dan kringkaster transaksjonen, som kort sagt er en signert melding som sier at de 0,005 BTC Dan eide, nå tilhører Elin. Uten å gå for mye inn på detaljene kan alle som får presentert Dans signerte transaksjon, bekrefte at han faktisk hadde myntene og derfor hadde myndighet til å sende dem.

Men som nevnt er transaksjonen bare gyldig hvis den blir tatt med i en blokk som blir bekreftet. Hvis man godtar ubekreftede transaksjoner, blir det omtrent som å godta de 400 kr i eCash i det forrige eksemplet, uten å umiddelbart løse dem inn hos banken – det gjør at avsenderen kan bruke dem andre steder. Så det anbefales at Elin venter minst 6 blokkbekreftelser (omtrent én time) før hun godtar betalingen fra Dan.


Dobbeltforbruk i Bitcoin

Bitcoin er nøye designet for å hindre dobbeltforbruksangrep, i hvert fall når protokollen brukes som forventet. Det vil si at hvis en person venter på at en transaksjon skal bekreftes i en blokk, finnes det ingen enkel måte avsenderen kan angre den på. I så fall måtte vedkommende ha «reversert» blokkjeden, noe som krever en urealistisk mengde hashkraft.

Men det finnes noen få dobbeltforbruksangrep som retter seg mot parter som godtar ubekreftede transaksjoner. For kjøp med lav verdi, for eksempel, vil selgeren kanskje ikke vente på at transaksjonen tas med i en blokk. Et travelt gatekjøkken har sannsynligvis ikke tid til å stå å vente på at nettverket behandler hvert kjøp. Så hvis en bedrift aktiverer «umiddelbare» betalinger, åpner de seg opp for dobbeltforbruk. Noen kan bestille en burger, betale for den og så umiddelbart sende de samme pengene til sin egen adresse. Hvis vedkommende angir et høyere gebyr, blir denne nye transaksjonen sannsynligvis bekreftet først, og da ugyldiggjøres den forrige.

Det finnes tre populære måter dobbeltforbruk utføres på:

  • 51 %-angrep: Når én enhet eller organisasjon får kontroll over mer enn 50 % av hash-raten, kan de ekskludere eller endre rekkefølgen på transaksjoner. Et slikt angrep er veldig usannsynlig på Bitcoin, men det har skjedd på andre nettverk.

  • Kappløpangrep: To motstridende transaksjoner kringkastes etter hverandre med de samme pengene – men bare én av transaksjonene blir bekreftet. Angriperens mål er å ugyldiggjøre betalingen ved bare å validere transaksjonen som er til egen fordel (f.eks. ved å sende de samme pengene til en adresse som han har kontroll over). Kappløpangrep forutsetter at mottakeren godtar en ubekreftet transaksjon som betaling.

  • Finney-angrep: En angriper utfører forhåndsmining av en transaksjon i en blokk uten å kringkaste den til nettverket umiddelbart. Isteden bruker han de samme myntene i en annen transaksjon, og først da sender han blokken som tidligere ble minet, noe som kan gjøre betalingen ugyldig. Finney-angrep forutsetter en bestemt hendelsesrekkefølge og betinger også at mottakeren godtar ubekreftede transaksjoner.

Som vi ser, kan en selger som venter på at blokken bekreftes, i høy grad redusere risikoen for å bli et offer for dobbeltforbruk.


Avsluttende tanker

Dobbeltforbruk består av at en bruker lurer et elektronisk kontantsystem for å oppnå økonomisk gevinst ved å bruke de samme pengene mer enn én gang. Tradisjonelt har mangelen på gode løsninger på problemet stått i veien for fremskritt på dette området.

Men heldigvis foreslo bruken av blinde signaturer en interessant løsning for sentraliserte finansløsninger. Senere ble Proof of Work-mekanismer og blokkjedeteknologi etablert og førte med seg Bitcoin som en kraftig form for desentraliserte penger – som i sin tur har inspirert tusenvis av andre kryptovalutaprosjekter.