Cryptology Academy · Lektion

Sigma-protokoll och Schnorr-identifiering

Implementera ett Sigma-protokoll och följ hur Schnorr-beviset fungerar.

Lektion 2 av 413 steg

Sigma-protokoll och Schnorr-identifiering är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Sigma-protokollets struktur

Ett Sigma-protokoll har 3 meddelanden: (1) Åtagande: bevisaren skickar ett åtagande till ett slumpmässigt värde. (2) Utmaning: verifieraren skickar en slumpmässig utmaning. (3) Svar: bevisaren skickar ett svar som beräknats utifrån utmaningen och hemligheten. Verifieraren godkänner eller avvisar.

Schnorr-identifiering

Bevisaren känner till hemligheten x (den privata nyckeln); den offentliga nyckeln = g^x mod p (eller punkten X = x*G på en elliptisk kurva). Målet är att bevisa kunskap om x utan att avslöja den. Detta är ett kunskapsbevis för diskret logaritm.

Schnorr-protokollets steg

(1) Bevisaren väljer ett slumpmässigt r och skickar åtagandet R = r*G. (2) Verifieraren skickar utmaningen c (ett slumpmässigt heltal). (3) Bevisaren skickar svaret s = r + c*x. (4) Verifieraren kontrollerar s*G == R + c*X. Om det stämmer godkänner verifieraren. Bevisaren känner till x; svaret s kan bara beräknas med hjälp av x.

Säkerhetsanalys

Fullständighet: en ärlig bevisare uppfyller alltid s*G = r*G + c*x*G = R + c*X. Korrekthet: två transkript med samma R men olika utmaningar c och c' ger s och s', varifrån x = (s-s')/(c-c') kan återställas — en fuskare kan alltså inte skapa två giltiga svar för samma R.

Schnorrs zero-knowledge-egenskap

Simulator (utan kunskap om x): välj slumpmässiga s och c, och sätt R = s*G - c*X. (R, c, s) följer då fördelningen för ett giltigt transkript. Verifieraren kan inte skilja verkliga transkript från simulerade — Schnorr är zero-knowledge mot en ärlig verifierare.

Fiat-Shamir-transformen

Gör Schnorr icke-interaktivt: ersätt verifierarens utmaning med c = Hash(R || message). Bevisaren beräknar själv c och skickar svaret. Resultatet är ett bevis med två element (R, s) som vem som helst kan verifiera. Detta är Schnorrs signaturschema.

Schnorr-signaturer

Sign(x, m): r ← slumpmässigt värde; R = r*G; c = Hash(R||m); s = r + c*x. Signatur = (R, s). Verifiera: s*G == R + Hash(R||m)*X. Kompakt (64 byte för P-256), kan verifieras i batchar och är bevisat säker i ROM. Används i Bitcoin Taproot (BIP-340).

Pedersen-åtaganden

C = r*G + v*H där H är en andra oberoende generator. Ger ett åtagande till värdet v med slumpvärdet r. Bindande: det går inte att öppna åtagandet för ett annat v (diskret logaritm). Döljande: C är likformigt fördelat. Används i intervallbevis baserade på Schnorr och i Bulletproofs.

Sammansättning: AND-bevis

Bevisa kunskap om x1 OCH x2 samtidigt: kör två Schnorr-protokoll med samma utmaning (dela utmaningen via Fiat-Shamir). Verifieraren godkänner endast om båda delbevisen är giltiga. Detta möjliggör bevis av flera påståenden i en enda interaktion.

Sammansättning: OR-bevis

Bevisa kunskap om x1 ELLER x2 utan att avslöja vilket: använd simulatorn för den ena grenen för att beräkna ett falskt transkript och dela sedan utmaningen mellan båda. Verifieraren ser två giltiga transkript som tillsammans ger den verkliga utmaningen. Detta kallas "ringsignaturer".

Tillämpningar

Schnorr-ID:n: elektroniska pass (PACE-protokollet). Schnorr-signaturer: Bitcoin Taproot, Monero (RingCT använder Schnorrs OR-bevis), Signal Protocol (X3DH-nyckelöverenskommelse). Pedersen-åtaganden: Confidential Transactions, Bulletproofs, Zcash Sapling note encryption.

Snabb kontroll

Vad kontrollerar verifieraren i det sista steget i Schnorrs identifieringsprotokoll?

Sammanfattning

Sigma-protokoll: åtagande–utmaning–svar. Schnorr bevisar kunskap om en diskret logaritm. Fiat-Shamir gör protokollet icke-interaktivt (Schnorr-signatur). Nästa avsnitt: zk-SNARK:er för kortfattade icke-interaktiva bevis.

Gratis att börja

Lär dig Cryptology Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
67
Lektioner
261

Vanliga frågor

Är lektionen ”Sigma-protokoll och Schnorr-identifiering” gratis?

Ja – hela texten till ”Sigma-protokoll och Schnorr-identifiering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Sigma-protokoll och Schnorr-identifiering”?

Implementera ett Sigma-protokoll och följ hur Schnorr-beviset fungerar. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?

Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Sigma-protokoll och Schnorr-identifiering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?

Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. ZKP-intuition: Ali Babas grotta
  2. Sigma-protokoll och Schnorr-identifiering
  3. zk-SNARKs: kortfattade icke-interaktiva argument
  4. ZKP-tillämpningar: ZK-rollups och integritetsmynt
← Tillbaka till Cryptology Academy