Även om Bitcoin är ett s.k. pseudonymt system där en bitcoinadress inte avslöjar något om sin ägare så finns det stora möjligheter att spåra transaktioner och genom smarta analyser lista ut vilka personer som är inblandande i en transaktion, något som flera företag gjort till sin affärsidé. På andra sidan finns de som jobbar hårt med olika typer av lösningar för att skydda användarnas integritet.
CoinJoin
En sådan teknik, som först beskrevs av Gregory Maxwell 2013, kallas CoinJoin och går ut på att flera användare går samman och slår ihop transaktionerna de tänkt göra till en enda, med många olika inputs och outputs. Medan man normalt sett kan dra slutsatsen att inputs i samma transaktion (alltså källorna som bitcoin spenderas ifrån) tillhör samma person så ser till CoinJoin till att den logiken fallerar.
För varje input till en transaktion måste motsvarande signatur, alltså ett bevis för att du har rätt att spenderas dessa coins, bifogas, men dessa signaturer är helt oberoende av varandra. Det gör alltså att man kan lätt kan slå ihop flera personers transaktioner till en enda jättestor transaktion. Denna kommer att ha många olika inputs och många olika outputs men det går inte att avgöra vilka inputs som hör till vilka outputs. I exemplet som Gregory Maxwell bifogade den ursprungliga texten så ställer han frågan: om 1A1 är en adress som tillhör Alice och 1C3 en adress som tillhör Charlie, vilken av 1D4 och 1E5 är det som är mottagaren av Charlies transaktion?
Det allra simplaste sättet att implementera CoinJoin på är helt enkelt att manuellt på något sätt hitta andra användare som vill skicka en transaktion och slå ihop era transaktioner. En nackdel med detta, förutom bristen på automatik, är att de andra användarna kommer att känna till dina inputs och outputs, så du skyddar inte din integritet mot just dessa personer.
Ett annat sätt är att ha en server som samlar ihop inputs/outputs från användare och skapar transaktionen, som sedan skickas till användarna för signering. I det fallet känner servern till mappningarna, men inte de enskilda deltagarna. Ett tredje och mer avancerat sätt som Gregory beskriver är att använda s.k. blinda signaturer. Exakt hur dessa funkar är utanför scopet av den här artikeln men det ser kort beskrivet till att användarna inte ens behöver avslöja mappningarna för servern.
Wasabi Wallet
Det har under åren funnits ett antal olika implementationer av CoinJoin och liknande tekniker såsom CoinSwap (också en idé av Gregory Maxwell) men det är inte förrän i år som tekniken har fått ordentligt genomslag tack vare releasen av Wasabi wallet i slutet av 2018. Siffror visar nu att ca 4% av alla transaktioner i Bitcoinnätverket är CoinJoin-transaktioner.
Wasabi wallet (en fortsättning av det tidigare projektet HiddenWallet) implementerar ramverket ZeroLink, skapat av Adam Ficsor, också känd som nopara73. ZeroLink definierar en pre-mix och en post-mix wallet samt en mixningsteknik. Mixningstekniken kan i princip vara vilken som helst men man har valt att också beskriva en egen teknik kallad Chaumian CoinJoin som är just den variant med blinda signaturer som Gregory Maxwell tidigare föreslagit.
I Wasabi wallet ser man en lista av sina “coins” och varje rad har en symbol som indikerar graden av “privacy”. Coins som aldrig är mixade har en röd sköld och informationen “anonymity set: 1”. I ärlighetens namn så är plånboken inget under av användarvänlighet och den kraschar dessutom flera gånger under mina försök men det får man kanske ha överseende med i ett tidigt stadium när de flesta användare är teknikentusiaster. Under fliken CoinJoin kan man köa upp sina coins för att komma med i en CoinJoin-transaktion, men det är värt att veta att det i nuläget bara är möjligt för ganska stora belopp, just nu ca 0,1 BTC.
Lyckas man köa upp sin transaktion så är det bara att vänta på att tillräckliga många andra också vill göra en CoinJoin. Det går att välja en minsta önskad storlek på sitt anonymity set (alltså antal deltagare i transaktionen) mellan de förvalda alternativen 2 (som ej rekommenderas), 21 och 50. När jag testade med 21 så gick det snabbt att få ihop en transaktion och mina coins var snart tillbaka. Det som kan vara lite förvirrande här är att du nu förmodligen har två rader i din plånbok, en med mixade coins indikerat med grön sköld och en annan som fortfarande är röd, och alltså omixad. Det här beror på outputs i CoinJoin-transaktionen måste vara av exakt samma storlek (jämför med exemplet ovan där Alice och Charlies outputs båda är just 0.8) för att verkligen förhindra spårbarhet.
I mitt exempel skapades en transaktion med 44 olika outputs av storleken 0.10567362 BTC, varav 1 alltså är min, och dessa coins har därför i min plånbok en grön sköld och kommentaren "Anonymity set: 44". Den resterande summan, som överstiger 0.10567362 BTC, har jag fått tillbaka till min plånbok och den har en röd sköld och "Anonymity set: 1" eftersom det inte finns någon annan output i transaktionen med samma storlek.
Sammanfattningsvis så är Wasabi wallet än så länge ganska opolerad och inte speciellt användarvänlig upplevelse men den är fullt användbar och gör det den ska. Testa själv! Du hittar den på wasabiwallet.io.