Hva er coin mixing og CoinJoin?

· 5 min read

Bitcoin blir ofte omtalt som digitale kontanter, men sammenligningen er omstridt. Hvis Alice betaler Bob 10 dollar kontant, vet ikke Bob hvor pengene kommer fra. Og gir Bob senere seddelen videre til Carol, kan hun ikke slutte at den først lå hos Alice.

Med Bitcoin er det annerledes, nettopp på grunn av den åpne strukturen. Historikken til en bestemt coin – altså et ubrukt transaksjonsutfall, en UTXO – kan hvem som helst enkelt gå gjennom. Det tilsvarer omtrent at man hver gang en bitcoin brukes, noterer beløpet og navnet på mottakeren på en faktura.

At offentlige adresser ikke inneholder navn, gjør likevel at brukernes identitet ikke uten videre kommer for en dag. Men Bitcoin er langt fra helt privat. Blokkjedeanalyse blir stadig mer avansert og knytter adresser og identiteter sammen med økende treffsikkerhet. I tillegg til slike overvåkingsteknikker kan også en enhet som jobber spesifikt med dette, avdekke identiteten til kryptobrukere. For å motvirke dette har det gjennom årene vokst fram teknikker som kutter forbindelsen mellom transaksjoner.

Hva er coin mixing?

Rent generelt beskriver coin mixing transaksjoner som skal skjule midler ved å bytte dem mot andre midler. I kryptoverdenen brukes uttrykket likevel som oftest om tjenester levert av tredjeparter. Tjenesteleverandøren tar imot brukerens coins (og et lite gebyr) og sender tilbake andre coins som ikke har noen forbindelse til dem som ble sendt inn. Slike tjenester er også kjent som tumblere eller miksere.

Sikkerheten og personvernet i så vidt sentraliserte tjenester reiser selvsagt noen spørsmål. Ingenting garanterer at mikseren faktisk sender midlene tilbake, eller at de coinsene du får i retur ikke bærer med seg en problematisk transaksjonshistorikk. Et annet moment å ta med i regnestykket er at både IP-adresser og Bitcoin-adresser kan bli logget av en tredjepart. Til syvende og sist overlater brukeren midlene sine til noen andre i håp om å få tilbake coins uten fortid.

En mer interessant tilnærming er CoinJoin-transaksjoner, som skaper en betydelig grad av troverdig benektelse. Når en CoinJoin-transaksjon først er gjennomført, finnes det nemlig ingen bevis som fastslår en sikker forbindelse mellom en bruker og vedkommendes tidligere transaksjoner. Mange CoinJoin-løsninger er dermed et mer desentralisert alternativ til miksere: Brukerne trenger ikke gi fra seg kontrollen over midlene sine, selv om en koordinator kan være involvert i prosessen.

Hva er CoinJoin?

CoinJoin-transaksjoner ble først presentert av Bitcoin-utvikleren Gregory Maxwell i 2013. I artikkelen sin beskrev han kort hvordan slike transaksjoner er bygget opp, og hvordan de kan gi en storstilt økning i personvernet uten at protokollen må endres.

I kjernen handler CoinJoin om å samle innganger fra ulike brukere i én og samme transaksjon. Før vi forklarer hvordan (og hvorfor) det gjøres, skal vi se på den grunnleggende transaksjonsstrukturen.

Bitcoin-transaksjoner består av innganger og utganger. Når en bruker vil gjennomføre en transaksjon, bruker vedkommende UTXO-ene sine som innganger, bestemmer utgangene og signerer inngangene. Det er verdt å merke seg at hver inngang signeres uavhengig, og at brukeren kan lage flere utganger – altså sende beløp til ulike adresser.

Ser vi på en transaksjon med fire innganger (0,2 BTC hver) og to utganger (0,7 BTC og 0,09 BTC), kan vi gjøre oss noen antakelser. Den første er at det utføres en betaling – avsenderen sender den ene utgangen til en annen person og vekslepengene til seg selv. Siden fire innganger tas i bruk, går den største utgangen sannsynligvis til mottakeren. Mangler det 0,01 BTC i summen, er det transaksjonsgebyret til utvinneren.

Det er like fullt mulig at avsenderen vil lage én stor UTXO av flere små, og derfor slår sammen de mindre inngangene for å nå det ønskede beløpet på 0,7 BTC.

En annen antakelse springer ut av at hver inngang signeres for seg. Transaksjonen kan like gjerne ha blitt utført slik at inngangene ble signert av fire ulike parter. Det er nettopp dette prinsippet som gjør CoinJoin virkningsfullt.

Hvordan fungerer CoinJoin?

Hovedidéen er at flere parter samordner seg og lager en transaksjon sammen ved å oppgi inngangene sine og utgangene de ønsker. Når alle inngangene er slått sammen, er det umulig å si sikkert hvilken utgang som tilhører hvilken bruker. Du ser prosessen i diagrammet nedenfor:

Her har vi fire brukere som vil bryte koblingen mellom transaksjonene sine. De samordner seg med hverandre (eller gjennom en koordinator) for å oppgi hvilke innganger og utganger de vil ha med.

Koordinatoren samler inn all informasjonen, bygger en transaksjon av den og lar hver deltaker signere den før den kringkastes til nettverket. Etter at brukerne har signert, blir det umulig å endre transaksjonen uten å gjøre den ugyldig. Dermed er risikoen for at koordinatoren stikker av med midlene borte.

Transaksjonen fungerer som en svart boks som blander coins. For å lage nye UTXO-er må de gamle ødelegges. Den eneste koblingen mellom gamle og nye UTXO-er er selve transaksjonen, men på det tidspunktet er det ikke lenger mulig å skille deltakerne fra hverandre. I beste fall kan man si at en av inngangene ble lagt inn av en bestemt deltaker, og at denne deltakeren kan være den nye eieren av utgangen som kom ut.

Men selv det er ingen garanti. Kan vi egentlig slutte fra transaksjonen over at det er fire deltakere? Er det kanskje én person som sender midler til fire av sine egne adresser? Gjør to personer to ulike kjøp og sender hver 0,2 BTC tilbake til sin egen adresse? Eller sender fire personer midler til andre eller til seg selv? Vi kan ikke gi presise svar på noen av disse spørsmålene.

Personvern gjennom benektelse

Bare det at CoinJoin-applikasjoner finnes, er nok til å så tvil om metodene som brukes til å analysere transaksjoner. Du kan slå fast at CoinJoin brukes i mange transaksjoner, men du kan fortsatt ikke vite hvem som eier utgangene. Etter hvert som disse applikasjonene ble populære, ble antakelsen om at alle innganger tilhører samme bruker svekket – et stort skritt for personvernet i hele økosystemet.

I eksempelet over har transaksjonen et anonymitetssett på 4, så eieren av en utgang kan være hvem som helst av de fire brukerne som deltar. Jo større anonymitetssettet er, desto vanskeligere blir det å knytte en transaksjon til den opprinnelige eieren. Heldigvis kan brukerne takket være de nyeste CoinJoin-implementasjonene kombinere inngangen sin med dusinvis av andre brukere uten å måtte stole på noen, noe som gir en høy grad av benektelighet. Nylig ble en transaksjon med 100 deltakere gjennomført med hell.

Avsluttende tanker

Verktøy for å blande coins er viktige hjelpemidler som er tilgjengelige for alle brukere som bryr seg om personvern. I motsetning til andre personvernoppdateringer (for eksempel Confidential Transactions) kan du dra nytte av dem uten at protokollen må endres fra slik den er i dag.

For brukere som stoler på integriteten og metodene til tredjeparter, tilbyr mikstjenester en enkel løsning. For dem som foretrekker verifiserbare alternativer uten deponering, er CoinJoin klart bedre. Transaksjonene kan settes opp manuelt av teknisk kyndige brukere, eller de kan overlates til programvare som fjerner behovet for å hanskes med kompliserte mekanismer. Flere slike verktøy finnes allerede, og populariteten vokser i takt med at brukerne krever mer personvern.