Förstå noll kunskap blockchains

Källnod: 1575026

Hur man visar att du vet något utan att visa vad du vet

I fredags lanserades Zcash, en ny offentlig blockchain och tillhörande kryptovaluta som väckte stor uppmärksamhet. Nu finns det hundratals kryptovalutor, så varje nystartad ung deltagare behöver en seriös skillnad för att höja sig över striden. När det gäller Zcash är det enkelt - Zcash-användare kan skicka pengar till varandra i absolut integritet. För en kryptovaluta baserad på en blockchain är detta en anmärkningsvärd teknisk prestation. (Även om det bör noteras att andra kedjor som Monero och Dash sikta på samma mål med enklare men mindre effektiva medel.)

Som jag har skriven om tidigare, i allmänhet representerar blockkedjor (oavsett om de är offentliga eller privata) en avvägning där disintermediation uppnås på bekostnad av sekretess. Blockchains är ett smart, nytt sätt för deltagarna att säkert dela en databas, även om de inte litar på varandra utan att behöva en central mellanhand. Men det finns ett pris att betala för denna peer-to-peer-decentralisering - "noden" som tillhör varje deltagare i kedjan måste verifiera varje transaktion för sig själv, och detta i sin tur innebär att den ser vad alla andra gör.

Två sätt att kedja

När det gäller offentliga blockkedjor och kryptovalutor fungerar den delade databasen främst som ett register över vem som styr (och så effektivt äger) hur mycket kryptovaluta, med en valfri sprinkling av "metadata" (bitcoin) eller kontraktslogik (Ethereum) ovanpå. Däremot tenderar vi i privata blockkedjor att se två huvudklasser av användningsfall: (a) ägande och överföring av externa tillgångar som representeras av tokens i kedjan, och (b) mer allmänna applikationer som rör datalagring och hämtning. Till exempel i vår egen produkt MultiKedja, dessa två klasser av användningsfall implementeras med hjälp av inhemska tillgångar respektive dataströmmar.

När det gäller allmän datalagring tillhandahåller blockchain ett antal tjänster: bevisar var en bit data kommer ifrån, tidsstämplar den och notariserar den oändligt för att förhindra modifiering av en minoritet blockchain-deltagare. Men blockchain behöver inte ha något att säga om själva data - varje applikation kan bestämma vad en datadel betyder och om den är giltig. Dåliga data kan helt enkelt ignoreras på applikationsnivå utan att skada blockkedjans tillstånd som helhet.

Däremot, om blockkedjor överför direkt tokeniserade tillgångar, måste de tillämpa interna regler om giltigheten av dessa överföringar. För att uttrycka det enkelt kommer ett evenemang som ”Alice betalar Bob en euro” endast att godkännas av kedjan om Alice har minst en euro till sitt namn. Medan olika typer av blockchain uttrycker denna regel på olika sätt (bitcoin-transaktionsbegränsningar vs Ethereum-smarta kontrakt), delar de alla fastigheten att Alices ekonomi måste vara känd av alla noder i kedjan. Detta gör det möjligt för dem att bedöma om hennes betalning är giltig, veta hur mycket Bob har som resultat och utvärdera eventuella framtida betalningar från Bob till Charlie och andra.

Vid denna tidpunkt kommer läsare som är bekanta med blockkedjor att påpeka att Alice och Bob inte identifieras direkt med namn i en kedja. Istället transakterar varje under en eller flera "adresser", som är långa alfanumeriska strängar av gibberish som inte har något samband med deras verkliga identiteter. Även om detta är sant, hjälper det i själva verket inte mycket, eftersom det finns flera sätt på vilka förbindelsen mellan användare och deras adresser kan dras.

Först och enklast, för att kunna handla med någon i en blockchain, måste jag veta minst en av deras adresser. Så om jag skickar lite pengar till dem kan jag se vart pengarna går vidare, och om de betalar mig kan jag se var de kom ifrån. För det andra, om jag råkar veta något om en deltagare från den verkliga världen (t.ex. vilka typer av tillgångar de handlar vid vilken tid på dagen), kan jag söka i kedjans aktivitet efter motsvarande mönster och sedan dra slutsatsen om deras adress med en hög nivå av förtroende. Slutligen, när jag väl känner till en deltagares adress, kan jag ofta räkna ut vilka andra adresser de äger och använder, genom att övervaka hela flöden av medel i kedjan. Även om detta inte är trivialt är det säkert möjligt med tillräcklig motivation, vilket bevisats av företag som Chainalysis och Skry som försörjer sig med att tillhandahålla denna typ av "nätverksanalys" för bitcoin.

Sparat av kryptering?

Kontrasten mellan tillgångar och data berör direkt krypteringsfrågan. När det gäller allmän datalagring i en blockchain kan vi kryptera den lagrade informationen samtidigt som vi får fördelarna med dataprovens, tidsstämpling och oföränderlighet. Ingen av dessa funktioner behöver insikt i själva data. Därför är det helt giltigt för två deltagare att använda en blockchain för att lagra information som bara de kan läsa, samtidigt som de får nytta av att andra deltagare förbinder sig till informationens ursprung och dess existens vid en viss tidpunkt.

Däremot kan kryptering av denna typ inte användas av transaktioner som representerar överföringar av tokeniserade tillgångar. Om Alice och Bob skulle kryptera sin transaktion, kunde tillgångarna i fråga inte användas säkert av någon annan deltagare i kedjan, eftersom ingen annan skulle veta var tillgångarna faktiskt är. Tillgångarna skulle upphöra att ha någon kollektiv betydelse i kedjan, vilket förstör hela poängen.

I finanssektorn är denna konflikt mellan integritet och likviditet kärnproblemet med att använda blockkedjor för att överföra tillgångar, vilket försvårar förhoppningarna hos många en start i rymden. Medan teknisk genomförbarheten av att flytta tillgångar över en blockchain har bevisats av otaliga pilotprojekt, i praktiken får detta för mycket aktivitet att avslöjas mellan kamrater. Informationsläckage är en nackdel vid de bästa tiderna, men det är en fullständig showstopper när kedjans deltagare är i hård konkurrens, eller där regler förbjuder det.

Som ett resultat har många framstående "distribuerade reskontra" startups gått bort från idén om kedjeavveckling och återgå till mer traditionella bilaterala transaktioner som krypteras och noteras i en blockchain under paradigmet "allmän datalagring". Detta kan förhindra tvister och dubbla utgifter, men avgörandet i sig förblir externt för kedjan. Medan blockchain fortfarande ger ett visst värde är det mindre transformativt än ursprungligen hoppades. Utan tvekan har det varit mer än några röda möten mellan nystartade företag och deras investerare.

Och ändå, efter all besvikelse, kan frälsningen äntligen vara nära. Ange noll kunskap blockchain.

Introduktion av noll kunskap

Innan vi diskuterar denna nya typ av blockchain är det bra att förstå principen om självkännedom. I allmänhet är noll kunskapssäkerhet en som visar sanningen i ett visst uttalande utan att avslöja ytterligare information utöver vad den försöker bevisa.

För att ta ett exempel, låt oss säga att jag har en färgblind vän som äger två pennor, som är identiska förutom att en är grön och en är blå. Min vän kan inte skilja mellan dem och jag vill övertyga henne om att de verkligen är olika. Naturligtvis kan jag inte göra det genom att helt enkelt berätta för henne färgerna, för hon kan inte bedöma om jag ljuger eller inte.

Så vad kan jag göra? (Varför inte ta en minut och försöka ta reda på svaret själv ...) Jag kan be henne ta ett papper och rita två linjer på det i ett annat rum. När hon gör detta kan hon fritt bestämma om hon ska använda samma penna för båda linjerna, eller en penna för varje. Ur hennes perspektiv ser resultatet ut på samma sätt. Sedan kommer hon tillbaka med papperet, och jag säger till henne om hon använde en penna eller två. Naturligtvis, om pennorna hade samma färg, skulle jag inte ha något sätt att veta. Så det faktum att jag förstår det bevisar att de är olika.

Tja, inte riktigt. Det finns ett problem med denna logik. Även om pennorna var identiska skulle jag fortfarande ha 50% chans att ge rätt svar, för det finns bara två möjligheter (hon använde en penna eller två). Så en lycklig gissning bevisar ingenting alls. För att förstärka mitt fall måste spelet spelas över flera omgångar. Efter varje runda minskar min chans att vara konsekvent rätt med hälften. Så med 5 omgångar har jag en 1 av 32-chans att lyckas fejka. Med 10 omgångar är det 1 av 1024 och med 20 omgångar 1 av 1048576 - med andra ord en av en miljon. Beroende på min väns relativa tristess och misstanke kan hon nå vilken sannolikhetsnivå som helst som hon önskar, men aldrig absolut säkerhet.

Ta med snarkarna

Nollkunskapsbevis i blockkedjor tillämpar en liknande princip, men de handlar naturligtvis inte om färgen på pennor. Snarare syftar de till att bevisa uttalandet "denna överföring av tillgångar är giltig", utan att avslöja något viktigt om själva överföringen. Zcash använder en relativt ny teknik för noll kunskapssäkerhet som kallas zk-SNARKs, the fullständig förklaring av vilken ligger (mildt sagt) utanför denna bit. Men den grundläggande idén är detta: vilket beräkningsvillkor som helst kan representeras av en aritmetisk krets, som tar lite data som inmatning och ger svaret ”sant” eller ”falskt” som svar. En zk-SNARK använder en modell av denna krets för att låta mig bevisa, i önskad grad av säkerhet, att jag har en ingång som ger ett verkligt svar utan att avslöja själva ingången. Filosofiskt är det åtminstone som att bevisa att två pennor är olika färger, utan att avslöja vad dessa färger är.

En zk-SNARK använder ett snyggt litet trick för att undvika den interaktivitet som är typisk för noll kunskapsbevis, där en skeptisk part upprepade gånger presenterar en utmaning för den som gör ett påstående. När det gäller våra pennor är denna utmaning min väns val mellan att använda en eller två pennor i varje omgång. Denna typ av interaktivitet är inte möjlig i en blockchain eftersom det inte finns någon betrodd central part som kan ställa utmaningarna. Istället använder en zk-SNARK en approximation av ett ”slumpmässigt orakel” där utmaningarna skapas bestämt av någon kod, men beter sig för alla ändamål som om de vore slumpmässiga. Inte av en slump använder denna kombination av determinism och oförutsägbarhet samma typ av hashfunktion som säkrar en blockchain själv.

Nollkunskapsbevis har funnits ett tag, men zk-SNARKs introducerar ett antal innovationer som gör dem användbara i blockkedjor. Viktigast är att zk-SNARKs minskar storleken på bevisen och den beräkningsinsats som krävs för att verifiera dem. Zerocoin, ett tidigare försök att använda noll kunskapsbevis i blockkedjor, kräver 45 kb-transaktioner, var och en tar en halv sekund att kontrollera (siffror hämtade från vitt papper som Zcash bygger på). Detta är drastiskt värre än bitcoin, vars transaktioner vanligtvis är 0.3 kb stora och kan verifieras på under ett millisekund. Däremot väger Zcash-transaktioner 1 kb och kan kontrolleras på mindre än 6 millisekunder. Detta placerar Zcash i samma skalbarhetsliga som bitcoin - en anmärkningsvärd prestation. Om vi ​​tog av oss hattarna till skaparen av bitcoin, borde vi ta av oss strumporna och skorna för detta.

Varning rekommenderas

Innan du konverterar all din bitcoin till Zcash finns det några försiktighetsåtgärder att tänka på. För det första bygger Zcashs kryptografi på en pålitlig installationsprocess, där två långa offentliga nycklar härrör från en enda slumpmässigt genererad privat. Det är absolut nödvändigt att denna privata nyckel förstörs, eftersom alla som har den kan smida de bevis som systemet bygger på. När det gäller Zcash skapades den privata nyckeln i en detaljerad ceremoni, beskriven i detalj här.. Ceremonin involverade flera välkända karaktärer från kryptovalutavärlden, som alla (vi får veta) bara hade en delvis syn på den privata nyckeln. I sin tur betyder det att Zcash bara kan äventyras om alla ceremonins deltagare kolliderade skadligt. Det är upp till läsaren att bestämma hur självsäker de tycker om det.

För det andra, även om det är relativt snabbt verifiera en anonym Zcash-transaktion, skapa var och en av dessa transaktioner har en allvarlig beräkningsbörda. Enligt Zcash Speed ​​Centertar det för närvarande 48 sekunder på en avancerad server och över 3 GB minne. Detta gör det opraktiskt att transakera anonymt från mobila enheter och äldre stationära och bärbara datorer. Zcash arbetar delvis med denna begränsning genom att stödja både vanliga synliga kryptokoiner (med snabba transaktioner) och anonyma "anteckningar" (med långsamma), med en inbyggd metod för konvertering mellan de två.

För det tredje, även om vi antar att den underliggande kryptografin är sund, kan det finnas buggar som lurar i Zcash-koden som gör att anonyma anteckningar kan trollas ut ur luften. Detta skulle göra det möjligt för Zcashs monetära bas att blåsas obegränsat, vilket i slutändan gör kryptovalutan värdelös. Till skillnad från transparenta kryptovalutor som bitcoin kan denna katastrofala händelse inte upptäckas, för hela Zcash-poängen håller transaktioner dolda. Icke desto mindre, enligt Zooko Wilcox, VD för Zcash, pågår det redan arbete för att hitta en lösning, så vi kan se fram emot att se den.

Slutligen, som med alla kryptovalutor baserade på bevis på arbete, finns potentialen för 51% -attacker kvar. Det betyder att en grupp "gruvarbetare" med över hälften av nätverkets beräkningskraft kan samverka för att återföra transaktioner som alla andra trodde var fullständiga (dåliga gruvarbetare kan fortfarande inte fejka transaktioner som stjäl andras medel). Zcash förlitar sig smart Equihash, en annan hashingalgoritm från bitcoins SHA-256, vilket innebär att den enorma massan av befintlig bitcoinbrytningskraft inte kan vändas mot Zcash. Equihash är också utformat för att vara mer motståndskraftigt mot "ASICs" (mikroprocessorer för speciella ändamål) som har förvandlat bitcoinbrytning till ett oligopol, men bara tiden visar om hårdvarutekniker kan hitta en lösning och till vilken kostnad.

Noll kunskap privata blockkedjor

Hittills har vi fokuserat vår diskussion på den offentliga Zcash blockchain och kryptovaluta. Men hur är det med externa tillgångar som flyttar över privata eller tillåtna blockkedjor och delade huvudböcker? Kan samma nollkunskapstekniker användas?

På teknisk nivå är svaret utan tvekan ja. Jämfört med den teoretiska och tekniska turné som ligger till grund för Zcash är det trivialt att utöka protokollet till att stödja tillgångar som utfärdas i en kedja. Allt som krävs är att utöka villkoren som bevisats av en zk-SNARK för att upprätthålla bevarande av flera tillgångar, istället för en enda kryptovaluta. Eller ännu enklare, skapa flera distinkta anonyma delsystem på en enda blockkedja, var och en representerar en annan typ av tillgång, och transakera inom varje delsystem precis som Zcash gör idag. Denna andra metod kräver ingen förståelse av zk-SNARKs alls.

Hur skulle en tillgångs livscykel se ut i den här modellen? Först utfärdar en betrodd enhet tokens som representerar tillgången genom att skicka en synlig blockchain-transaktion som intygar dessa tokens värde. Samma enhet skulle sedan utföra en andra transaktion som konverterar de synliga tokens till anonymiserade "sedlar" i Zcash-stil, vilket effektivt flyttar tillgången under jord. Dessa sedlar kan sedan i hemlighet överföras från emittenten till andra och framåt bland kedjans deltagare. Som med Zcash kan överföringstransaktionerna verifieras som giltiga av alla blockchain-deltagare utan att avslöja deras innehåll. Slutligen, när en innehavare vill lösa in en sedel, konverterar de den tillbaka till synliga tokens med en annan transaktion i Zcash-stil, skickar dessa tokens till den ursprungliga emittenten och får motsvarande verkliga tillgång i utbyte. Vi kan också tillåta att sedlar löses in anonymt, i vilket fall blockchain-deltagare inte skulle veta hur mycket av tillgången som finns kvar i omlopp.

Så noll kunskapstransaktioner lovar att lossa den gordiska knuten som har hindrat blockchains från att användas för avveckling inom finanssektorn. För att sammanfatta, i en vanlig blockchain-transaktion, när en tillgång skickas från en bank till en annan, är detaljerna i den transaktionen synliga för alla andra banker i kedjan. I motsats till detta, i en noll kunskapstransaktion, vet de andra bara att en giltig transaktion har ägt rum, men ingenting om avsändare, mottagare, tillgångsklass (om vi är smarta) och kvantitet. Även volymen av transaktioner kan fördunklas av deltagare som regelbundet skapar falska transaktioner där de skickar tillgångar till sig själva.

När det gäller sekretess är det lika bra som en guldstång som reser i en portfölj från en bank till en annan, men utan kostnad och tid för att fysiskt flytta guldet. Och det är bättre än att använda en betrodd mellanhand som en depåbank, för det finns inte ens den enda parten som ser allt på gång. För första gången tillåter noll kunskapskedjor att tillgångsöverföringar kan utföras digitalt på peer-to-peer-basis, i perfekt sekretess.

Släng inte den databasen (ännu)

Förutsatt att Zcashs tekniska grunder är sunda, förväntar jag mig helt att det kommer att nå toppnivån för kryptovalutor när det gäller utvecklarintresse och marknadsvärde. Men finns det en lika ljus framtid för noll kunskapstransaktioner i privat blockkedjor? Kommer de att göra övergången från laboratoriet till produktionskvalitetssystem som flyttar riktiga pengar runt om i världen?

Det är naturligtvis alldeles för tidigt att berätta. Men det finns ett antal frågor som behöver besvaras innan behöriga blockchain-förespråkare kan peka på noll kunskapstransaktioner och triumferande förklara seger.

Först och viktigast är det säkert? Kan vi verkligen vara säkra på att både den underliggande kryptografin och dess kodade implementeringar är tillräckligt starka för att förhindra att en skadlig part genererar tillgångar ur luften? Som tidigare nämnts, till skillnad från transparenta blockkedjor, är det ännu inte möjligt att upptäcka om den monetära basen för en blockchain med noll kunskap har äventyrats. Ändå finns det inget säkrare test av denna teknik än att släppa den som en öppen offentlig blockchain som är tillgänglig för alla att se och attackera, och det är precis vad Zcash gör. Efter flera år av att se Zcash fungera smidigt kan institutioner bli övertygade om att nollkunskapskedjor verkligen kan skydda sina tillgångar. Som med alla frågor blockchain krävs tålamod.

En relaterad fråga är nyheten om noll kunskapskryptografi i sig. Det är sant att vanliga blockchains är beroende av avancerad kryptografi - nämligen asymmetrisk kryptering (offentliga / privata nycklar) och kryptografiska hashfunktioner (digitala fingeravtryck). Och det är också sant att den stora majoriteten av blockchain-programmerare och applikationsutvecklare inte förstår de matematiska principerna som ligger till grund för dessa tekniker. Men den bredare punkten är detta: om de behandlas som svarta lådor har dessa metoder använts i många årtionden av ett stort antal utvecklare och användare (hört talas om https?) Och alla tror att de fungerar. Däremot var noll kunskapsbevis fram till nyligen bara känt för ett litet akademiskt samhälle och hade inga breda applikationer på Internet eller någon annanstans. Vi kan förvänta oss att denna dunkel minskar viljan hos en banks CIO eller riskansvarig att flytta sina kärnprocesser till noll kunskapsblock, åtminstone de närmaste fem åren. Och låt oss inte ens börja föreställa oss hur lång tid det tar att tillsynsmyndigheterna blir bekväma med tillgångar som rör sig på det här sättet.

Att prata om reglering tar upp en annan praktisk fråga med noll kunskap blockchains. Anonyma transaktioner i en blockchain innehåller uttalanden om tillgångsöverföringar och ägande, men dessa uttalanden är endast synliga för utvalda parter (nämligen de som är direkt inblandade). Även om vi ger en tillsynsmyndighet full synlighet i en blockchain med noll kunskap och dess deltagares identiteter, har den inget sätt att veta vad som verkligen händer inom. Naturligtvis kan tillsynsmyndigheten be alla deltagare att identifiera och avslöja sina transaktioner, och de kan göra detta effektivt med "visningstangenter" i Zcash-stil. Ändå, om parterna i en viss transaktion vill hålla det hemligt, är tillsynsmyndigheten fast och vet inte vem som ska böta. Det finns ingen depåbank från vilken den kan få hela bilden och det enda alternativet för verkställighet är att stänga av hela kedjan.

Så vad är slutresultatet? För närvarande föreslår jag åtminstone att jag bara följer utvecklingen av den offentliga Zcash-blockkedjan för att se hur den utvecklas och växer. Om Ethereums historia upprepas kommer det att finnas överraskningar och sårbarheter som lurar under ytan och väntar på att utnyttjas av giriga opportunister. Men på längre sikt, gör inget misstag: noll kunskapstransaktioner är ett spelförändrande genombrott för blockkedjor. Om de underliggande kryptografiska principerna visar sig vara sunda, förvänta dig att de avsevärt utvidgar utbudet av användningsfall som blockkedjor kan tillämpas på.

Skicka eventuella kommentarer på Link.

Tidsstämpel:

Mer från Multikedja