Cryptology Academy · Lektion

Sigma-protokoller og Schnorr-identifikation

Implementér en Sigma-protokol, og følg, hvordan Schnorr-beviset fungerer.

Lektion 2 af 413 trin

Sigma-protokoller og Schnorr-identifikation er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Sigma-protokollens struktur

En Sigma-protokol har 3 meddelelser: (1) Forpligtelse: beviseren sender en forpligtelse til en tilfældig værdi. (2) Udfordring: verifikatoren sender en tilfældig udfordring. (3) Svar: beviseren sender et svar, der beregnes ud fra udfordringen og hemmeligheden. Verifikatoren accepterer eller afviser.

Schnorr-identifikation

Beviseren kender hemmeligheden x (privat nøgle); offentlig nøgle = g^x mod p (eller punktet X = x*G på en elliptisk kurve). Målet er at bevise kendskab til x uden at afsløre den. Dette er et bevis på kendskab til en diskret logaritme.

Schnorr-protokollens trin

(1) Beviseren vælger en tilfældig r-værdi og sender forpligtelsen R = r*G. (2) Verifikatoren sender udfordringen c (et tilfældigt heltal). (3) Beviseren sender svaret s = r + c*x. (4) Verifikatoren kontrollerer s*G == R + c*X. Hvis det passer, accepterer verifikatoren. Beviseren kender x; svaret s kan kun beregnes med x.

Sikkerhedsanalyse

Fuldstændighed: en ærlig beviser opfylder altid s*G = r*G + c*x*G = R + c*X. Sundhed: to protokoludskrifter med samme R, men forskellige udfordringer c og c', giver s og s', hvorfra x = (s-s')/(c-c') kan genskabes — derfor kan en snyder ikke producere to gyldige svar for samme R.

Schnorrs nulviden

Simulator (uden kendskab til x): vælg et tilfældigt s og c, og sæt R = s*G - c*X. (R, c, s) har dermed fordelingen for en gyldig protokoludskrift. Verifikatoren kan ikke skelne virkelige protokoludskrifter fra simulerede — Schnorr giver nulviden over for en ærlig verifikator.

Fiat-Shamir-transformation

Gør Schnorr ikke-interaktiv: erstat verifikatorens udfordring med c = Hash(R || message). Beviseren beregner selv c og sender svaret. Resultatet er et bevis med 2 elementer (R, s), som alle kan verificere. Dette er Schnorr-signatursystemet.

Schnorr-signaturer

Sign(x, m): r ← random; R = r*G; c = Hash(R||m); s = r + c*x. Signatur = (R, s). Verify: s*G == R + Hash(R||m)*X. Kompakt (64 bytes for P-256), kan verificeres samlet og er bevist sikkert i ROM. Anvendt i Bitcoin Taproot (BIP-340).

Pedersen-forpligtelser

C = r*G + v*H, hvor H er en anden uafhængig generator. Forpligter sig til værdien v med tilfældigheden r. Bindende egenskab: kan ikke åbnes til en anden v-værdi (diskret logaritme). Skjuleegenskab: C er uniformt fordelt. Bruges i intervalbeviser baseret på Schnorr og i Bulletproofs.

Sammensætning: OG-beviser

Bevis kendskab til x1 OG x2 samtidigt: kør to Schnorr-protokoller med samme udfordring (del udfordringen via Fiat-Shamir). Verifikatoren accepterer kun, hvis begge delbeviser er gyldige. Gør det muligt at bevise flere udsagn i én interaktion.

Sammensætning: ELLER-beviser

Bevis kendskab til x1 ELLER x2 uden at afsløre hvilket: brug simulatoren for den ene gren til at beregne en falsk protokoludskrift, og fordel derefter udfordringen mellem begge grene. Verifikatoren ser to gyldige protokoludskrifter, hvis udfordringer tilsammen giver den virkelige udfordring. Kaldes "ringsignaturer".

Anvendelser

Schnorr-identifikationer: elektroniske pas (PACE-protokollen). Schnorr-signaturer: Bitcoin Taproot, Monero (RingCT bruger Schnorr-ELLER-beviser), Signal Protocol (X3DH-nøgleaftale). Pedersen-forpligtelser: fortrolige transaktioner, Bulletproofs, Zcash Sapling-note-kryptering.

Hurtigt tjek

Hvad kontrollerer verifikatoren i det sidste trin i Schnorr-identifikationsprotokollen?

Opsummering

Sigma-protokoller: forpligtelse–udfordring–svar. Schnorr beviser kendskab til en diskret logaritme. Fiat-Shamir gør protokollen ikke-interaktiv (Schnorr-signaturen). Næste emne: zk-SNARK'er til korte ikke-interaktive beviser.

Gratis at komme i gang

Lær Cryptology Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “Sigma-protokoller og Schnorr-identifikation” gratis?

Ja — hele teksten til “Sigma-protokoller og Schnorr-identifikation” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Sigma-protokoller og Schnorr-identifikation”?

Implementér en Sigma-protokol, og følg, hvordan Schnorr-beviset fungerer. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Sigma-protokoller og Schnorr-identifikation”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?

Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. ZKP-intuition: Ali Babas grotte
  2. Sigma-protokoller og Schnorr-identifikation
  3. zk-SNARKs: Korte ikke-interaktive argumenter
  4. ZKP-anvendelser: ZK-rollups og privacy coins
← Tilbage til Cryptology Academy