Bitcoin-transacties verbergen zonder Bitcoin zelf te veranderen. Onderzoekers van cryptografielab [[alloc] init] denken dat het kan met versleutelde betalingen en zero-knowledge proofs bovenop het bestaande netwerk.
Hun nieuwe voorstel heet Shielded Bitcoin. Bedragen, verzenders en ontvangers zouden voor buitenstaanders verborgen kunnen blijven, zonder soft fork en zonder een aparte blockchain.
Er ontbreekt alleen nog een belangrijk stuk: hoe echte
BTC veilig het private systeem in- en uitgaan.
Bitcoin ziet alleen versleutelde data
Onderzoekers Clara Shikhelman, Mikhail Komarov en Aleksei Moskvin publiceerden
Shielded Bitcoin op 24 september.
Het systeem is een metaprotocol. Dat betekent dat extra regels bovenop
Bitcoin worden uitgevoerd zonder dat Bitcoin-nodes die regels zelf hoeven te begrijpen.
De onderzoekers vergelijken de rol van Bitcoin met een openbaar prikbord.
Shielded Bitcoin publiceert versleutelde gegevens op de blockchain. Bitcoin legt vast wanneer die data verschenen en in welke volgorde, maar controleert niet of een private betaling volgens de extra regels geldig is.
Dat werk gebeurt elders.
Indexers controleren de private transacties
Aparte programma's, indexers genoemd, lezen de Shielded Bitcoin-data en reconstrueren de toestand van het systeem.
Ze controleren de cryptografische bewijzen en houden bij welke private tegoeden al zijn uitgegeven.
Een ongeldige Shielded Bitcoin-transactie kan technisch dus wel als data op de
blockchain belanden.
De indexers accepteren haar alleen niet als geldige betaling.
Volgens de
uitleg van de onderzoekers heeft geen enkele indexer daarbij speciale macht. Iedereen kan de gepubliceerde geschiedenis zelf opnieuw controleren.
Een kwaadwillende indexer kan een gebruiker wel verkeerde of verouderde informatie geven. Hij krijgt daarmee niet automatisch de mogelijkheid om diens bitcoin uit te geven.
Waarde zit in versleutelde notes
Shielded Bitcoin gebruikt zogenoemde notes.
Zo'n note bevat onder meer een hoeveelheid waarde en informatie waarmee de ontvanger kan herkennen dat de betaling voor hem bedoeld is. Die gegevens verschijnen niet leesbaar op Bitcoin.
Wanneer een gebruiker betaalt, maakt zijn software nieuwe versleutelde notes aan.
De transactie publiceert daarnaast nullifiers en een zero-knowledge proof.
Die onderdelen doen het zware cryptografische werk.
Bewijs zonder bedrag openbaar te maken
Een zero-knowledge proof kan aantonen dat iets klopt zonder alle gegevens achter het bewijs prijs te geven.
Bij Shielded Bitcoin moet zo'n bewijs onder meer aantonen dat de gebruikte notes werkelijk bestaan, dat de verzender ze mag uitgeven en dat er geen bitcoin uit het niets wordt gecreëerd.
De buitenwereld hoeft daarvoor niet te zien welke specifieke notes worden gebruikt.
Ook het bedrag hoeft niet openbaar te worden.
Een nullifier voorkomt vervolgens dat dezelfde note twee keer wordt uitgegeven. Zodra een geldige nullifier is gebruikt, registreren indexers hem als besteed.
Bitcoin publiceert de data. Shielded Bitcoin bepaalt via cryptografie welke verborgen betaling daaruit volgt.
Dat levert een model op dat sterk doet denken aan de shielded transacties van Zcash.
Verzender, ontvanger en bedrag verdwijnen uit beeld
Volgens het ontwerp blijven vier belangrijke onderdelen verborgen voor het publiek.
Buitenstaanders hoeven niet te kunnen zien hoeveel waarde wordt verstuurd, wie de shielded verzender is, wie de ontvanger is en welke eerdere notes worden uitgegeven.
Dat gaat verder dan veel bestaande Bitcoin-privacytechnieken.
CoinJoin probeert bijvoorbeeld verbanden tussen verschillende inputs en outputs moeilijker te analyseren. PayJoin verandert eveneens de zichtbare transactiestructuur.
De bedragen en de Bitcoin-transactie zelf blijven daarbij wel openbaar.
Shielded Bitcoin probeert juist de inhoud van de betaling cryptografisch af te schermen.
Maar de transactie wordt niet onzichtbaar
Volledige onzichtbaarheid levert het systeem niet.
Een waarnemer ziet nog steeds dat een Shielded Bitcoin-transfer is gepubliceerd. Ook het tijdstip, de Bitcoin-transactie die de gegevens draagt en de betaalde miner fee blijven zichtbaar.
Daarnaast kan worden gezien hoeveel notes worden uitgegeven en hoeveel nieuwe notes ontstaan.
Dat levert metadata op.
De onderzoekers waarschuwen bijvoorbeeld dat
privacy kan afnemen wanneer steeds dezelfde herkenbare Bitcoin-wallet de transactiekosten betaalt.
Ook opvallende patronen kunnen informatie weggeven.
Een private betaling kan cryptografisch sterk zijn, terwijl het gedrag eromheen toch aanwijzingen oplevert over de gebruiker.
Privacy wordt sterker met een grotere groep
Daar komt de grootte van de gebruikersgroep bij.
Wanneer maar een handvol mensen Shielded Bitcoin gebruikt, is het voor een analist makkelijker mogelijke verbanden te leggen.
Veel vergelijkbare transacties maken dat lastiger.
Dat principe speelt bij meer privacyprotocollen.
De cryptografie kan een individuele betaling afschermen, maar de totale anonimiteit hangt ook af van hoeveel vergelijkbare gebruikers zich in dezelfde verzameling bevinden.
De onderzoekers noemen grote stortingen daarom niet automatisch een grote privacygroep.
Als een paar partijen vrijwel alle notes creëren, kan analyse alsnog mogelijkheden bieden om transacties aan elkaar te koppelen.
Het grootste ontbrekende onderdeel zit bij echte BTC
Hier ligt de belangrijkste beperking van het huidige onderzoek.
De paper beschrijft vooral wat er gebeurt nadat waarde al binnen Shielded Bitcoin zit.
Hoe gewone BTC vanuit een normale
wallet het systeem binnenkomen en later weer als gewone bitcoin kunnen worden opgenomen, wordt nog niet volledig uitgewerkt.
Die stappen heten peg-in en peg-out.
[[alloc] init] werkt daarvoor aan een tweede paper.
De onderzoekers willen voortbouwen op hun eerdere
Bitcoin PIPEs v2-onderzoek, dat witness encryption gebruikt om toegang tot Bitcoin-sleutels aan cryptografische voorwaarden te koppelen.
Dat is ambitieus.
Het is ook nog experimenteel.
Witness encryption moet een brugprobleem oplossen
Bij veel systemen die waarde tussen verschillende omgevingen verplaatsen, moet een gebruiker uiteindelijk vertrouwen op een bridge, federation of custodian.
PIPEs probeert dat anders te doen.
Het idee is dat een Bitcoin private key cryptografisch achter een voorwaarde wordt vergrendeld. Alleen iemand die het juiste bewijs kan leveren, kan de sleutel reconstrueren en de BTC uitgeven.
Bitcoin zelf ziet uiteindelijk gewoon een geldige handtekening.
Het netwerk hoeft niet te weten welk ingewikkeld bewijs daarvoor buiten Bitcoin is geleverd.
Daarmee proberen de onderzoekers nieuwe bestedingsvoorwaarden mogelijk te maken zonder nieuwe Bitcoin-opcodes.
De techniek bevindt zich echter nog in onderzoek en vraagt zwaar rekenwerk.
Groth16 brengt een trusted setup mee
Het huidige Shielded Bitcoin-ontwerp gebruikt Groth16 voor zijn zero-knowledge proofs.
Dat systeem heeft een bijzonder nadeel: er is een eenmalige trusted setup nodig.
Tijdens zo'n procedure worden cryptografische parameters gemaakt. De beveiligingsaannames houden volgens de onderzoekers stand wanneer minstens één deelnemer aan die ceremonie eerlijk handelt en zijn geheime bijdrage vernietigt.
Andere proofsystemen kunnen andere eigenschappen bieden.
Maar kleinere bewijzen, snelheid en minder vertrouwen komen ieder met eigen afwegingen.
De keuze voor het uiteindelijke proofsysteem staat daarom nog niet definitief vast.
Privacy neemt meer ruimte op Bitcoin in
De extra cryptografie is ook niet gratis.
Shielded transfers publiceren meer data op Bitcoin dan een doorsnee betaling. Daardoor kunnen de transactiekosten hoger liggen wanneer blockspace duur is.
In het onderzoeksontwerp komt een specifieke transfer met twee inputs en twee outputs uit op honderden virtual bytes. Rond de presentatie werd ongeveer 700 vbytes als indicatie genoemd.
De precieze omvang hangt af van de vorm van de betaling en de methode waarmee de gegevens worden gepubliceerd.
Een gewone Bitcoin-transfer kan aanzienlijk kleiner zijn.
Meer privacy koopt hier dus letterlijk extra ruimte op de blockchain.
Gebruikers kunnen privacy selectief doorbreken
Opvallend genoeg is Shielded Bitcoin niet alleen ontworpen om gegevens te verbergen.
Het sleutelmodel bevat ook aparte read-only sleutels.
Een sleutel kan bijvoorbeeld alleen inkomende transacties zichtbaar maken. Een andere kan de eigen uitgaande geschiedenis reconstrueren.
Geen van beide geeft automatisch toestemming om de bitcoin uit te geven.
Dat maakt selective disclosure mogelijk.
Een bedrijf zou bijvoorbeeld bepaalde betalingsinformatie aan een accountant kunnen tonen zonder zijn private spending key te delen.
Een gebruiker kan ook één specifieke transactie bewijzen aan een tegenpartij.
De onderzoekers plaatsen daar zelf een kanttekening bij: een auditor kan controleren wat hem wordt getoond, maar kan met zo'n gedeeltelijke inzage niet automatisch bewijzen dat niets is achtergehouden.
Bitcoin hoeft hiervoor geen soft fork te accepteren
Dat is uiteindelijk het meest opvallende deel van Shielded Bitcoin.
Een soft fork verandert de consensusregels van Bitcoin op een manier waarbij oudere nodes compatibel kunnen blijven.
Privacyvoorstellen die nieuwe mogelijkheden van Bitcoin Script nodig hebben, kunnen daardoor jarenlang onderwerp worden van technisch en politiek debat.
Shielded Bitcoin probeert om die route heen te werken.
Bitcoin hoeft de private regels niet te begrijpen. Het netwerk publiceert en ordent alleen de versleutelde gegevens waarop andere software verder rekent.
Dat haalt de noodzaak voor een soft fork uit dit specifieke ontwerp.
Het verplaatst ook verantwoordelijkheid naar een extra protocol dat gebruikers zelf moeten draaien of via gekozen indexers moeten volgen.
Het voorstel is nog geen product
Wie vandaag privé bitcoin wil versturen, kan Shielded Bitcoin nog niet simpelweg installeren en gebruiken.
Er is geen afgerond betalingssysteem voor productie.
Peg-in en peg-out moeten verder worden beschreven. Witness encryption blijft experimenteel. Het proofsysteem kent een trusted setup en walletsoftware zou nog gebouwd en getest moeten worden.
Ook moet blijken hoeveel mensen zo'n systeem daadwerkelijk willen gebruiken.
Dat laatste is voor privacy niet triviaal.
Een technisch werkend protocol met weinig gebruikers kan veel minder bescherming bieden dan dezelfde techniek met een grote en diverse groep deelnemers.
Shielded Bitcoin heeft daarmee een opmerkelijke route gevonden rond een oud Bitcoin-probleem: proberen private betalingen te bouwen zonder de basisregels aan te raken.
Nu moet nog worden bewezen dat echte bitcoin veilig door die private laag heen kan bewegen.