Een introductie tot vertrouwelijke transacties

Delen
Copied to clipboard!
Een introductie tot vertrouwelijke transacties
Luister naar het artikel
00:00 / 00:00

Inhoud


Inleiding

Het wordt vaak cruciaal geacht voor het functioneren van een blockchain dat het systeem transparant is. Dit betekent dat iedere node in het netwerk een kopie van de blockchain kan opslaan en kan verifiëren dat de regels van het protocol niet worden geschonden. Voor veel gedistribueerde grootboeken geldt dat iedereen online een block explorer kan raadplegen waarmee blocks, transacties en adressen kunnen worden doorzocht.

Op het gebied van privacy is dit niet ideaal. In een systeem als dat van Bitcoin kan iedere transactie aan een voorgaande transactie worden gekoppeld. Tokens zijn technisch niet vervangbaar, wat betekent dat deze allemaal aan specifieke transacties kunnen worden gekoppeld. Niemand kan voorkomen dat je Bitcoin verstuurt, maar je transactie kan worden geweigerd als de tokens door een adres op een zwarte lijst zijn gegaan.

In het slechtste geval kan het gebrek aan vervangbaarheid het systeem zelf diepgaand beïnvloeden. 'Schone' tokens kunnen meer waard worden, terwijl oudere, 'vuile' tokens een lagere prijs opleveren als gevolg van hun geschiedenis.

De privacy van Bitcoin wordt vaak overschat. Niet alleen kunnen de Bitcoins zelf worden gevolgd, maar ook de gebruikers. Er is een zekere mate van pseudonimiteit (er kunnen geen namen worden ingezien, alleen adressen), maar dit is niet zonder tekortkomingen. Geavanceerde analysetechnieken kunnen, meet steeds verbeterende nauwkeurigheid, adressen clusteren en zo de anonimiteit van netwerkentiteiten wegnemen.

Vertrouwelijke transacties (Confidential Transactions) is voorgestelde upgrade waarmee transacties echt privé gemaakt kunnen worden.


Wat zijn vertrouwelijke transacties?

Vertrouwelijke transacties werden voor het eerst besproken in 2003 door de CEO van Blocksteam, Adam Back. Later werd dit concept uitgebreid door Bitcoin-ontwikkelaar Gregory Maxwell. Maxwell beschreef de hierboven genoemde problemen op het gebied van vervangbaarheid en pseudonimiteit en stelde een oplossing voor. Bedragen die worden verstuurd, kunnen worden afgeschermd van de rest van het netwerk zodat alleen de bij de transactie betrokken partijen de details van de transactie kennen.

Onder normale omstandigheden (met openbaar inzichtelijke transacties) is het eenvoudig voor een node om na te gaan of het ontvangen bedrag gelijk is aan het verstuurde bedrag. Als Alice 0,3 BTC naar Bob wil versturen, pakt ze een deel van haar saldo (bijvoorbeeld 1 BTC) en breekt ze dit in twee stukken: de 0,3 BTC die ze naar Bob verstuurt, en 0,69 BTC die ze naar haarzelf verstuurt (de 0,01 BTC in dit voorbeeld is de vergoeding die aan de miner wordt betaald).

Voor andere nodes is dit een simpele rekensom: 1 BTC is meer dan 0,3 BTC + 0,69 BTC, de handtekeningen zijn allemaal correct en het saldo van Alice is niet eerder uitgegeven. De transactie is dan ook valide. Bij het obfusceren van bedragen wordt de situatie complexer. Hoe bepaal je namelijk of een onbekend bedrag gelijk aan of groter is dan de som van twee andere onbekende bedragen?


Een overzicht van de betrokken cryptografie

Om gegevens te verbergen is een vorm van encryptie noodzakelijk. Traditionele versleutelingsmethoden zijn echter vergelijkbaar met het opbergen van documenten in een kluis: zodra de kluis dicht is, zijn de documenten onbruikbaar tot de kluis weer wordt geopend. Om vertrouwelijke transacties mogelijk te maken is een digitale kluis nodig waarvan de inhoud niet openbaar is, maar de eigenschappen kunnen worden geverifieerd door een buitenstaander.

Het antwoord hierop is homomorfische encryptie en in het bijzonder de zogenaamde Pedersen-commitment. Deze vorm van encryptie stelt een buitenstaander in staat om handelingen uit te voeren op versleutelde gegevens (die zij niet kunnen inzien) voor een aantal doeleinden.

Een gewone hash kan worden gebruikt om te committeren aan gegevens die je later openbaar wilt maken. Stel je voor dat je een wedstrijd wilt aankondigen op sociale media, waar de persoon die je favoriete handelsplatform raadt een prijs van 0,01 BTC wint. De deelnemers aan de wedstrijd zijn misschien skeptisch, omdat je na de wedstrijd gewoon naar de antwoorden kunt kijken en een platform kunt kiezen dat niemand heeft genoemd.

Wat je ook kunt doen is je volgers een hash geven: een string van schijnbaar willekeurige nummers en tekens die zijn gekoppeld aan een specifieke input. Je haalt het handelsplatform door een functie om een bepaalde output te genereren. Als voorbeeld gebruiken we het SHA256-algoritme:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Als je hiernaar kijkt, heb je geen idee wat de input was. Ook is het niet mogelijk om de functie in omgekeerde richting uit te voeren om tot de input te komen. Als je echter weet dat “Binance” de input was, kun je eenvoudig verifiëren dat de hash daarvan overeenkomt met de hash hierboven. Op die manier weten je volgers tot op zekere hoogte dat je je antwoord niet zomaar kunt aanpassen na het sluiten van de wedstrijd. Doe je dit wel, dan leidt dit namelijk tot een hele andere hash.

Realistisch gezien is dit alleen niet echt veilig. Hoewel je volgers niet zomaar het algoritme kunnen reverse-engineeren, kunnen ze een lijst van mogelijke platformen opstellen en ieder platform vervolgens hashen tot ze het juiste antwoord hebben gevonden. We kunnen de waarschijnlijkheid dat dit gebeurt veranderen door willekeurige gegevens toe te voegen, zogenaamde blinderende factoren, aan de data die we gaan hashen. 

Als we bijvoorbeeld “Binance is mijn favoriete handelsplatform voor Bitcoin 2#43Wr” gebruiken als input, wordt het veel moeilijker om het juiste antwoord te raden. En voor een beloning van 0,01 BTC is het onwaarschijnlijk dat iemand dit überhaupt wil proberen.

Een Pedersen-commitment maakt het mogelijk om input toe te voegen achter een commitment. Maxwell beschrijft dit als volgt:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Waarbij BF de blinderende factor is en D de gegevens die we hashen.


Er zijn nog een aantal andere stappen die hierna worden uitgevoerd met betrekking tot zogenaamde elliptic curve-cryptografie en range proofs, maar het idee is dat een gebruiker een Pedersen-commitment heeft voor zijn of haar adres. Bij het versturen van een bedrag worden twee nieuwe commitments gegenereerd (één voor het gewijzigde adres dat aan de gebruiker wordt teruggegeven en één voor het bestemmingsadres).

Niemand weet precies wat het verstuurde bedrag is, maar iedereen kan controleren dat de commitments voor de wijziging en bestemming (de linkerzijde van de vergelijking van Maxwell) samen gelijk zijn aan het oorspronkelijke adres (de rechterzijde van de vergelijking). Als deze gegevens kloppen is de transactie geldig, omdat bewezen kan worden dat de inputs gelijk zijn aan de outputs.


Wat kunnen vertrouwelijke transacties bereiken?

Als vertrouwelijke transacties worden geïmplementeerd in het Bitcoin-protocol, zou dit leiden tot een veel meer privaat systeem. Zowel de inputs als de outputs zijn niet langer inzichtelijk voor de rest van het netwerk en regels in het grootboeken worden geobfusceerd terwijl nodes nog steeds de authenticiteit van transacties kunnen verifiëren. Dankzij deze enorme privacyboost worden Bitcoins effectief vervangbaar, omdat een analyse van de blockchain niet langer de geschiedenis van een bepaalde eenheid kan onthullen.

Of vertrouwelijke transacties daadwerkelijk in het protocol geïntegreerd zullen worden kan op dit moment niet worden gezegd. Transacties worden hierdoor namelijk veel groter dan standaard transacties en gezien de beperkte capaciteit van de blockchain, zou dit alleen maar leiden tot hogere vraag. Ook dient de meerderheid van het netwerk akkoord te gaan met het wijzigen van het protocol, iets dat van oudsher moeilijk is gebleken.


Tot slot

Vertrouwelijke transacties zijn tot op zekere hoogte geïmplementeerd in andere cryptovaluta en Bitcoin-sidechains. Monero gebruikt ze bijvoorbeeld in combinatie met constructies die ring signatures worden genoemd om anonimiteit en vervangbaarheid te garanderen. Ook de Liquid-sidechain heeft vertrouwelijke transacties geïmplementeerd voor meer privacy, net als MimbleWimble.

De voordelen van vertrouwelijke transacties gaan gepaard met een een grotere voetafdruk. Cryptovaluta hebben vaak te maken met schaalbaarheidsproblemen en doorvoersnelheden in het basisprotocol; grotere transacties zijn dan ook niet voor iedereen een aantrekkelijk vooruitzicht. Dat gezegd hebbende zijn privacyvoorstanders van mening dat het essentieel is om de bedragen van transacties en de betrokken partijen te verbergen om cryptovaluta écht als vervangbaar geld te kunnen laten dienen.

Loading