Meekijkers in de blockchain?

We hebben al eerder een artikel geschreven over de verschillende aspecten die invloed hebben op de mate van privacy die een bitcoingebruiker geniet. In dit artikel gaan we specifieker in op twee verschillende heuristieken die deanonymisering mogelijk maken.

Samen uitgeven

Bitcointransacties bestaan uit één of meerdere inputs en één of meerdere outputs. Simpel gezegd is de output van een transactie de input van een volgende transactie. Op deze manier zijn alle transacties aan elkaar gelinkt. Grafisch ziet dit er in een simpele transactie zo uit:

heuris

In deze transactie stuurt Alice vanaf haar adres (A) één hele bitcoin naar twee verschillende adressen: adres B van Bob en adres C van Carol. Alice splitst de bitcoin die zij stuurt op in twee gelijke delen van 0.5 bitcoins. Vervolgens kunnen Bob en Carol deze bitcoins weer doorsturen naar andere adressen.

Op dit moment kunnen we nog niet veel informatie uit de transacties opmaken: Alice kent de adressen van Bob en Carol, maar Bob en Carol weten alleen dat adres A van Alice is. Het wordt interessant wanneer we een vervolgtransactie toevoegen:

heuris

In de transactie vanuit adres B worden twee inputs samengevoegd in een transactie naar één enkel adres. Op dit moment valt er wat informatie te achterhalen middels de shared-spending heuristiek.

Alice weet dat de 0.5 bitcoins uit adres B van Bob zijn en kan zien dat deze 0.5 bitcoins samen met 0.25 bitcoins uit een ander adres worden doorgestuurd. Wij als buitenstaanders weten dit ook, behalve dat voor ons niet bekend is dat adres B van Bob is: voor ons is dit een onbekende entiteit. Omdat de 0.5 uit adres B en 0.25 bitcoins uit adres ? beide als input voor dezelfde transactie dienen weten we dat adres B en ? (hoogst)waarschijnlijk van dezelfde persoon zijn; in dit geval Bob:

heuris

Van wie het laatste ontvangstadres dat 0.75 bitcoins ontvangt (?) is blijft onbekend, behalve voor Bob. Met deze informatie kunnen we al wel de entiteit Bob in kaart beginnen te brengen: we weten dat adres B1 en B2 van dezelfde entiteit zijn. Dit betekent dat we kunnen proberen meer informatie af te leiden uit de transactie van en naar deze adressen; wie weet kunnen we nog meer adressen koppelen aan dezelfde identiteit.

Vers wisselgeld

Bekijk het scenario hieronder. Bob beschikt in totaal over 0.75 bitcoins. Bob heeft deze bitcoins ontvangen in de vorm van twee verschillende outputs naar zijn adressen: één output van 0.5 bitcoins en één output van 0.25 bitcoins.

heuris

Bob wil nu 0.7 bitcoins naar een derde partij gaan versturen. Om dit te doen zal Bob zijn outputs samen moeten voegen zoals in het net gegeven voorbeeld; Bob heeft immers met één enkele output niet genoeg bitcoins om de betaling van 0.7 bitcoins te voltooien. Zoals we nu weten geeft Bob door dit te doen informatie over zijn adressen vrij, maar in dit scenario kunnen we nog wat extra informatie achterhalen. Er ontstaat een transactie met twee inputs en twee outputs:

heuris

De twee outputs die ontstaan zijn: één output voor 0.7 bitcoins naar Dave en één output van 0.05 bitcoins. De output van 0.05 bitcoins is in dit geval de change output: het is het 'wisselgeld' dat Bob terug naar zichzelf stuurt. Bob moest immers in totaal 0.75 bitcoins als input gebruiken om de transactie van 0.7 bitcoins mogelijk te maken, het overige geld stuurt Bob in de transactie terug naar zichzelf.

In dit voorbeeld doen we even alsof Dave een exchange is, een cluster van adressen dat al bij ons bekend is. Doordat wij weten dat de entiteit Bob een transactie van 0.7 bitcoins naar exchange Dave heeft gedaan, weten we nu ook dat het adres dat 0.05 bitcoins ontvangen heeft wederom (hoogst)waarschijnlijk ook van Bob is. We kunnen dit adres nu ook toevoegen aan het cluster van adressen dat bij 'entiteit Bob' hoort.

Mocht Bob geen vers bitcoinadres gebruikt hebben om zijn wisselgeld heen te sturen, dan valt er nu nog meer informatie te achterhalen door naar de transacties van en naar het wisselgeld-adres te kijken. Het cluster adressen van Bob bestaat nu uit drie adressen: B1, B2, en de zojuist toegevoegde B3. We zouden nu verder kunnen gaan kijken naar de transacties die van en naar deze adressen plaatsvinden om nog meer adressen toe te voegen aan het cluster. Het op deze manier clusteren van adressen heet de fresh-change-address heuristiek.

Slechts een start

De twee heuristieken die we in dit artikel hebben beschreven zijn onderdeel van een groter arsenaal aan onderzoeksmethoden om informatie over entiteiten in de blockchain te achterhalen. Geen van deze heuristieken bieden in alle gevallen 100% zekerheid, maar wel bieden ze een sterke indicatie van mogelijke verbanden. Blockchainanalysetools gebruiken dergelijke heuristieken om te achterhalen welke transacties bij welke entiteit horen, om zo bijvoorbeeld een crimineel op te sporen. Omdat de blockchain openbaar is kan iedereen deze analyse uitvoeren; vandaar dat privacy van belang is en in de toekomst een punt van verbetering voor bitcoin zal blijven.


Belangrijke thema’s in dit artikel. Klik op een thema en ontdek meer.