Både i det verkliga livet och i den digitala världen vill vi ofta bevisa saker för andra. Innan de går in i en kontorsbyggnad tillhandahåller anställda vanligtvis någon typ av ID innan de går in.
När användare försöker logga in i en app som Facebook eller Twitter måste dessa tjänster först be användaren att logga in med ett lösenord och ibland skickas ett engångslösenord (OTP) till deras mobila enhet.
En nackdel med att bevisa är att vi ofta ger bort annan typ av information. Att tillhandahålla ett lösenord till en webbplats innebär fortfarande att webbplatsen själv behåller en kopia av det hashade lösenordet på sina servrar. Om någon skulle hacka kontorsbyggnadens medarbetar-ID-skanner kan de kanske få allas privata nycklar.
Nollkunskapsbevis eller ZKP ger ett sätt att validera en identitet eller transaktion utan att behöva tillhandahålla ytterligare information. På grund av dess tillämpningar inom kryptografi har ZKPs anpassats av blockchains för att skapa säkra och skalbara valideringsprotokoll.
Vad är Zero-Knowledge Proofs?
Noll-kunskapsbevis föreslogs först av MIT-forskarna Silvio Micali, Charles Rackoff och Shafi Goldwasser 1985 i deras uppsats "Kunskapskomplexiteten hos interaktiva bevissystem"
Denna artikel introducerade begreppet kunskapskomplexitet. Detta avser mängden kunskap om ett bevis som överförts från bevisaren till verifieraren. Noll-kunskapsbevis syftar till att låta en part bevisa att ett specifikt uttalande är sant för en annan part utan att behöva avslöja någon annan information.
ZKPs kan användas som ett säkert alternativ till nuvarande autentiseringssystem och kan också läggas till blockchain-protokoll för att hålla transaktioner privata.
Hur fungerar ZKPs?
Exempel från verkliga världen
För att illustrera hur noll-kunskapsbevis fungerar, låt oss ta en titt på ett abstrakt exempel på en ZKP.
Låt oss säga att du har en vän som är röd-grön färgblind. Du har med dig två identiska bollar som bara skiljer sig i färg: en röd och en grön. För din vän ser de identiska ut, men som en person utan färgblindhet kan du enkelt skilja dem åt.
Är det möjligt för dig att bevisa för din vän att de har en annan färg utan att avslöja vilken boll som är röd eller grön?
Det finns faktiskt ett sätt att bevisa detta utan att avslöja kulornas färger. Först måste du låta din vän lägga båda bollarna bakom ryggen och säga åt honom att visa vilken boll som helst och gömma den igen. Därefter berättar du för din vän att han har valet att visa samma boll igen eller byta den mot den andra.
Varje gång en ny boll visas kan du tala om för honom om han bytte boll eller inte. Om du fortsätter att gissa rätt samtal, blir det mer och mer sannolikt att bollarna är olika färgade. Din vän bör nu vara övertygad om att kulorna är olika färgade utan att behöva berätta för honom vilka kulor som har vilken färg.
Praktiska tillämpningar
De flesta praktiska exemplen på nollkunskapsbevis delas in i två typer.
För det första kan ZKP:er användas vid design av protokoll. Vi kan se till att olika parter inte kan fuska eller dra nytta av protokollet. För det andra kan ZKP:er användas för identifiering.
Vi kan till exempel använda ZKP:er för att logga in på en webbapplikation säkert utan att behöva avslöja själva lösenordet.
Låt oss titta på några exempel på hur vi kan använda nollkunskapsbevis.
E-omröstning
En allmänt diskuterad tillämpning av ZKP är deras möjliga roll i onlineröstning. Låt oss säga att vi har en kommande folkomröstning där användare kan rösta på en föreslagen policy. Varje röstberättigad får rösta antingen 1 eller 0 på röstsedeln.
Med hjälp av ZKP:er kan väljarna bevisa sin rätt att rösta utan att avslöja sin identitet. Detta säkerställer att varje röst blir helt anonym. Ytterligare en ZKP kommer också att användas för att bevisa att en viss användares röst är en del av den slutliga röstsiffran.
När det gäller själva röstsedlarnas innehåll kan röstningssystemet även generera ett noll-kunskapsbevis på att varje valsedel innehåller antingen en 1 eller 0. Detta görs utan att man behöver känna till innehållet i själva röstsedeln.
Blockchain-sekretess
Blockkedjor som Bitcoin och Ethereum stöder inte privata transaktioner. Så länge din Bitcoin-plånbok är offentlig kan vem som helst gå till en blockutforskare som t.ex Blockstream för att se alla transaktioner som plånboken är en del av.
Samtidigt, genom att använda en tjänst som en bank eller betaltjänster som Cash App eller Venmo ger dig möjligheten att handla privat. Denna bekvämlighet kommer dock på bekostnad av att avslöja din information till den centraliserade tjänsten.
Vi kan kombinera anonymitet med decentralisering genom att lägga till ZKPs till blockchain-protokollet. Kryptovalutor som ZCash använder ZKP för att skapa privata transaktioner som gör att myntinnehavare kan behålla sin anonymitet. Flera av dessa kryptovalutor använder en typ av ZKP som kallas zk-SNARK.
Dessa ZKP kräver ingen interaktion mellan provaren och verifieraren.
Zero-Knowledge Rollups
ZK-rollups är en skalbarhetslösning som gör att transaktioner utanför kedjan kan verifieras omedelbart och med minimala gasavgifter. De är ett sätt att kombinera ett stort antal lager 2-transaktioner och skicka dem till lager 1-protokollet.
Förutom att ge integritet, tillåter ZKPs skalning av komplexa system. Blockchain-protokoll kan använda ZKPs för att bevisa att användare har avvecklat rätt transaktioner, har rätt saldo och så vidare. Dessa säkra men skalbara lösningar är endast möjliga genom de matematiska bevis som görs utanför kedjan i ZKPs.
Protokoll som Loopring använder noll-kunskapsbevis för att hjälpa till att bearbeta transaktioner utanför kedjan utan att behöva kompromissa med säkerheten.
Fördelar med Zero-Knowledge Proofs
- ZKPs ersätter mindre tillförlitliga former av autentisering som PIN-koder eller id-kort
- ZKPS ökar skalbarheten av blockkedjor
- Implementering av ZKP kräver enkla krypteringsmetoder
- Användningen av ZKPS kan göra systemen säkrare genom att inte kräva att onödig information lagras i systemet.
Slutsats
Datasekretess är redan en stor fråga i både centraliserade och decentraliserade system. Noll-kunskapsbevis ger ett sätt för olika parter att bevisa eller validera transaktioner och identiteter utan att behöva avslöja nämnda transaktioner eller identiteter.
I takt med att blockchain-tekniken blir mer allmänt använd, kommer antagandet av ZKP:er för att hantera verifiering på ett säkert sätt att vara nyckeln till skalbarhetsproblem.
Kommentera uppropet