En introduktion till konfidentiella transaktioner
Innehållsförteckning
Introduktion
Vad är konfidentiella transaktioner?
En översikt över kryptografin som används
Vad kan konfidentiella transaktioner åstadkomma?
Sammanfattningsvis
En introduktion till konfidentiella transaktioner
HemArtiklar
En introduktion till konfidentiella transaktioner

En introduktion till konfidentiella transaktioner

Medelnivå
Publicerad Feb 10, 2020Uppdaterad Aug 21, 2022
6m

Introduktion

Det anses ofta vara avgörande för blockkedjans funktion att systemet är transparent. Detta innebär att varje nod i nätverket kan lagra en kopia och verifiera att inga regler bryts. För många distribuerade bokföringar kan vem som helst ladda upp en block-utforskare online som låter dem söka igenom block, transaktioner och adresser.

När det gäller sekretess är detta inte idealiskt. I ett system som Bitcoin kan varje transaktion kopplas tillbaka till en tidigare. Coin är inte tekniskt utbytbara, vilket innebär att varje coin kan kopplas till specifika transaktioner. Ingen kan hindra dig från att skicka bitcoin, men vem som helst kan vägra att acceptera din transaktion om dessa coin tidigare har passerat via en svartlistad adress.

I värsta fall kan en brist på utbytbarhet påverka själva grunden för systemet ordentligt. Rena coin skulle kunna bli värda mer och äldre coin skulle kunna bli värda mindre på grund av dess bakgrund.

Sekretessen i Bitcoin är ofta överskattad. Både coin och användare kan spåras. De har visserligen pseudonymitet (offentliga adresser är synliga istället för namn), men detta har sina brister. Sofistikerade analystekniker kan med ökad noggrannhet klustra ihop adresser i ett försök att deanonymisera nätverksenheter.

Konfidentiella transaktioner är en uppgradering som har föreslagits för att göra transaktionerna helt privata.


Vad är konfidentiella transaktioner?

Konfidentiella transaktioner (Confidential Transactions/CT) diskuterades först av Blockstreams VD Adam Back under 2013 och expanderades senare av Bitcoin-utvecklaren Gregory Maxwell. Maxwell beskrev problemen som nämndes i det första avsnittet (utbytbarhet och svag pseudonymitet) och föreslog en lösning. Överförda belopp skulle kunna skärmas av från det bredare nätverket, så att endast transaktionsparterna skulle kunna veta hur mycket som skickats.



Under normala omständigheter (med offentligt synliga transaktioner) är det lätt för en nod att verifiera att det mottagna beloppet inte överstiger det skickade beloppet. Om Alice vill skicka 0,3 BTC till Bob, tar hon en outnyttjad utgångsdata (låt oss kalla det 1 BTC) och delar upp den i två delar: 0,3 som ska skickas till Bob och 0,69 som ska skickas tillbaka till henne (resten betalas i utvinningsavgift).
Detta är enkel algebra för andra noder: 1 överstiger 0,3 + 0,69, signaturerna är alla korrekta och Alices ingångsdata har inte redan använts någon annanstans, så transaktionen måste vara giltig. Om mängderna döljs blir saker och ting dock inte så enkla. Hur påbörjas ens en utvärdering om ett okänt belopp är lika med eller överstiger summan av två andra okända belopp?


En översikt över kryptografin som används

För att dölja data krävs kryptering. Men traditionella metoder fungerar ungefär som att lägga dokument i ett kassaskåp: när det väl är låst inuti skåpet blir det oanvändbart tills det tas bort. Det vi behöver för att konfidentiella transaktioner ska fungera är ett digitalt kassaskåp vars innehåll inte avslöjas, men vars egenskaper kan verifieras av en utomstående.

Svaret ligger specifikt i homomorfisk kryptering, i ett schema som kallas ett Pedersen-åtagande. Denna typ av kryptering tillåter en utomstående att utföra operationer på krypterade data (som de inte kan se) för ett antal ändamål. 

En vanlig hash kan användas för att komma åt data som du vill avslöja senare. Anta att du vill starta en tävling på sociala medier, där den som gissar din favoritbörs vinner ett pris på 0,01 BTC. Deltagarna kanske skulle bli skeptiska till detta, eftersom du bara skulle kunna titta på svaren efter tävlingens slut och välja en börs som inte har nämnts.

Vad du kan göra är att förse dina följare med en hash: en sträng av till synes slumpmässiga siffror och tecken som mappas till specifika ingångsdata. Du skickar din valda börs genom en funktion för att få vissa utgångsdata. Vi illustrerar det med SHA256-algoritmen:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


När du tittar på detta har du ingen aning om vilka dess ingångsdata var. Du kan inte heller omvända funktionen för att se den. Om du vet att dess ingångsdata var "Binance" kan du dock enkelt kontrollera att dess hash matchar den som anges ovan. På så sätt har dina följare en viss försäkran om att du inte kommer att ändra ditt svar i slutet av tävlingen – om du gör det skulle du få helt andra utgångsdata.

Realistiskt sett är detta dock inte särskilt säkert. Även om dina följare inte kan omvända algoritmen kan de bygga en lista över möjliga börser och hasha varenda en tills de får en matchning. Vi kan minska sannolikheten för detta genom att lägga till några slumpmässiga data som kallas en bländande faktor till den data vi ska hasha. 

Om vår ingångsdata är "Binance är min favoritbörs som jag älskar mer än någon annan börs 2#43Wr", blir det betydligt svårare för en motståndare att gissa detta (och för 0,01 BTC är det verkligen osannolikt att någon ens skulle försöka gissa).

Ett Pedersen-åtagande gör att vi kan lägga till ingångsdata bakom åtagandena. Maxwell illustrerar detta:



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

Där BF är den bländande faktorn och D är data


Det finns några fler steg härifrån som involverar elliptisk kurvkryptografi och intervallbevis, men grundidén är att en användare har ett Pedersen-åtagande för sin adress. När du skickar tillgångar skapas ytterligare två åtaganden (en för ändringsadressen som ska returneras till användaren och en för destinationsadressen). 

Ingen vet hur mycket som skickas, men man kan kontrollera att ändrings- och destinationsåtagandena (vänster sida av Maxwells ekvation) är lika med ursprungsadressen (höger sida av ekvationen). Om detta utvärderas korrekt är användarens transaktion giltig, eftersom det kan bevisas att ingångsdata är lika med utgångsdata.


Vad kan konfidentiella transaktioner åstadkomma?

Om konfidentiella transaktioner skulle implementeras i bitcoin skulle vi ha ett mycket mer privat system. Både ingångsdata och utgångsdata skulle döljas från majoriteten av nätverket och uppgifterna i bokföringen skulle också döljas - men noderna skulle fortfarande kunna verifiera deras äkthet. Med denna massiva integritetshöjning skulle bitcoin kunna bli utbytbara, eftersom kedjeanalys i så fall inte längre avslöjar en given enhets historia. 

Att konfidentiella transaktioner kommer att integreras i protokollet verkar inte troligt just nu. Med denna extra funktionalitet blir transaktionerna mycket större än de normala och med ett begränsat blockutrymme skulle detta bara öka efterfrågan. Det skulle också kräva att majoriteten av deltagarna gick med på att ändra koden, vilket är en uppgift som traditionellt sett har visat sig vara svår.


Sammanfattningsvis

Konfidentiella transaktioner har sett några iterationer i andra kryptovalutor och bitcoin-sidokedjor. Monero använder dem till exempel i kombination med konstruktioner som kallas ringsignaturer för att uppnå anonymitet och utbytbarhet. Liquid-sidokedjan implementerar dem för större integritet och MimbleWimble utökar dem på samma sätt.

Fördelarna med konfidentiella transaktioner innebär dock även flera stora förändringar. Kryptovalutor kämpar ofta med skalbarhet och genomströmning i basskiktet och större transaktionsstorlekar tilltalar inte alla. Sekretessförespråkarna anser som sagt att det är viktigt att dölja transaktionsbelopp och deltagarna för att verkligen tillåta kryptovaluta att fungera som utbytbara pengar.