Hvad er coin mixing og CoinJoin?

· 5 min read

Bitcoin bliver ofte omtalt som digitale kontanter, men sammenligningen er til diskussion. Hvis Alice betaler Bob 10 dollar kontant, ved Bob ikke, hvor pengene kommer fra. Og giver Bob senere sedlen videre til Carol, kan hun ikke udlede, at den først lå hos Alice.

Med Bitcoin forholder det sig anderledes, netop på grund af netværkets åbne natur. Historikken bag en bestemt coin – altså et ubrugt transaktionsoutput, en UTXO – kan alle nemt gennemgå. Det svarer nærmest til, at man hver gang en bitcoin bruges, noterer beløbet og modtagerens navn på en faktura.

Til gengæld betyder fraværet af navne på offentlige adresser, at brugernes identitet ikke uden videre afsløres. Alligevel er Bitcoin langtfra fuldstændig privat. Blockchain-analyse bliver mere og mere avanceret og kobler i stigende grad adresser og identiteter sammen. Ud over den slags overvågningsteknikker kan en enhed, der arbejder specifikt med formålet, også afdække identiteten på kryptobrugere. For at forhindre det er der gennem årene opstået teknikker, som kapper forbindelsen mellem transaktioner.

Hvad er coin mixing?

Helt generelt dækker coin mixing over transaktioner, der skal skjule nogle midler ved at bytte dem til andre midler. I kryptoverdenen bruges udtrykket dog oftest om tjenester, der udbydes af tredjeparter. Udbyderen modtager brugerens coins (og et lille gebyr) og sender andre coins retur, som ikke har nogen forbindelse til dem, der blev sendt ind. Tjenesterne kaldes også tumblere eller mixere.

Sikkerheden og privatlivsbeskyttelsen i så centraliserede tjenester rejser naturligvis nogle spørgsmål. Der er ingen garanti for, at en mixer rent faktisk sender midlerne tilbage, eller for at de coins, man får retur, ikke bærer rundt på en problematisk transaktionshistorik. Et andet forhold, man bør være opmærksom på, er, at både IP-adresser og Bitcoin-adresser kan blive registreret af en tredjepart. I sidste ende overlader brugeren sine midler til en anden i håb om at få coins tilbage uden fortid.

En mere interessant tilgang er CoinJoin-transaktioner, som skaber en betydelig grad af plausibel benægtelse. Når først en CoinJoin-transaktion er gennemført, kan der nemlig ikke fremlægges beviser, der med sikkerhed kæder en bruger sammen med vedkommendes tidligere transaktioner. Mange CoinJoin-løsninger er dermed et mere decentralt alternativ til mixere: Brugerne behøver ikke at give afkald på rådigheden over deres midler, selv om en koordinator kan indgå i processen.

Hvad er CoinJoin?

CoinJoin-transaktioner blev første gang præsenteret af Bitcoin-udvikleren Gregory Maxwell i 2013. I sin artikel beskrev han kort, hvordan sådanne transaktioner er bygget op, og hvordan de kan give en markant forbedring af privatlivet uden nogen ændring af protokollen.

Kernen i CoinJoin er at samle inputs fra forskellige brugere i én og samme transaktion. Før vi ser på, hvordan (og hvorfor) det gøres, skal vi lige have den grundlæggende transaktionsstruktur på plads.

Bitcoin-transaktioner består af inputs og outputs. Når en bruger vil gennemføre en transaktion, bruger vedkommende sine UTXO'er som inputs, fastlægger sine outputs og signerer sine inputs. Det er vigtigt at bemærke, at hvert input signeres uafhængigt, og at brugeren kan oprette flere outputs, altså sende beløb til forskellige adresser.

Ser vi på en transaktion med fire inputs (0,2 BTC hver) og to outputs (0,7 BTC og 0,09 BTC), kan vi opstille nogle antagelser. Den første er, at der bliver foretaget en betaling – afsenderen sender det ene output til en anden person og byttepengene til sig selv. Da der bruges fire inputs, går det største output sandsynligvis til modtageren. Mangler der 0,01 BTC i summen, er det gebyret til mineren.

Det er også muligt, at afsenderen vil skabe én stor UTXO ud af flere små og derfor lægger de mindre inputs sammen for at nå det ønskede beløb på 0,7 BTC.

En anden antagelse udspringer af, at hvert input signeres for sig. Transaktionen kan lige så vel være blevet gennemført på en måde, hvor de fire inputs blev signeret af fire forskellige parter. Det er netop dette princip, der gør CoinJoin effektivt.

Hvordan fungerer CoinJoin?

Hovedidéen er, at flere parter koordinerer og opretter en fælles transaktion ved at oplyse deres inputs og de ønskede outputs. Når alle inputs er lagt sammen, er det ikke længere muligt at sige med sikkerhed, hvilket output der tilhører hvilken bruger. Du kan se processen i diagrammet nedenfor:

Her har vi fire brugere, som vil bryde forbindelsen mellem deres transaktioner. De koordinerer indbyrdes (eller gennem en koordinator) for at oplyse, hvilke inputs og outputs de vil have med.

Koordinatoren samler alle oplysningerne, bygger en transaktion ud fra dem og får hver deltager til at signere den, før den udsendes til netværket. Når brugerne har signeret, kan transaktionen ikke længere ændres uden at blive ugyldig. Dermed er risikoen for, at koordinatoren stikker af med midlerne, elimineret.

Transaktionen fungerer som en black box, der blander coins. For at skabe nye UTXO'er skal de gamle destrueres. Den eneste forbindelse mellem gamle og nye UTXO'er er selve transaktionen, men på det tidspunkt kan deltagerne ikke længere skilles fra hinanden. I bedste fald kan man sige, at et af inputtene blev tilføjet af en bestemt deltager, og at vedkommende kunne være den nye ejer af det resulterende output.

Men selv det er ingen garanti. Kan man overhovedet slutte ud fra transaktionen ovenfor, at der er fire deltagere? Sender en enkelt person måske midler til fire af sine egne adresser? Foretager to personer to forskellige køb og sender hver 0,2 BTC tilbage til deres egen adresse? Eller sender fire personer midler til andre eller til sig selv? Vi kan ikke give præcise svar på nogen af de spørgsmål.

Privatliv gennem benægtelse

Alene det, at der findes CoinJoin-applikationer, er nok til at så tvivl om de metoder, der bruges til at analysere transaktioner. Man kan konkludere, at CoinJoin bliver brugt i mange transaktioner, men man kan stadig ikke vide, hvem der ejer de enkelte outputs. I takt med at applikationerne er blevet populære, er antagelsen om, at alle inputs tilhører den samme bruger, blevet svækket – og det er et stort skridt for privatlivet i hele økosystemet.

I eksemplet ovenfor har transaktionen et anonymitetssæt på 4, så ejeren af et output kan være hvilken som helst af de fire involverede brugere. Jo større anonymitetssættet er, jo sværere bliver det at koble en transaktion til dens oprindelige ejer. Heldigvis kan brugerne takket være de nyeste CoinJoin-implementeringer kombinere deres input med snesevis af andre brugere uden at skulle stole på nogen, hvilket giver en høj grad af benægtelighed. For nylig blev en transaktion med 100 deltagere gennemført med succes.

Afsluttende tanker

Værktøjer til at blande coins er vigtige redskaber, som alle privatlivsbevidste brugere har adgang til. I modsætning til andre privatlivsopdateringer (for eksempel Confidential Transactions) kan man drage nytte af dem, uden at protokollen skal ændres fra sin nuværende form.

For de brugere, der har tillid til tredjeparters integritet og metoder, er mixertjenester en nem løsning. For dem, der foretrækker alternativer, som kan verificeres og ikke bygger på deponering, er CoinJoin klart bedre. Teknisk stærke brugere kan udføre transaktionerne manuelt, eller man kan bruge softwareværktøjer, der fjerner besværet med de komplekse mekanismer. Flere af den slags værktøjer findes allerede, og deres popularitet vokser, i takt med at brugerne efterspørger mere privatliv.