0Pricing
Cryptology Academy · Lekcja

Protokoły Sigma i identyfikacja Schnorra

Zaimplementować protokół Sigma i prześledzić działanie dowodu Schnorra

Protokoły Sigma i identyfikacja Schnorra to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Struktura protokołu Sigma

Protokół Sigma składa się z 3 komunikatów: (1) Zobowiązanie: dowodzący wysyła zobowiązanie do losowej wartości. (2) Wyzwanie: weryfikator wysyła losowe wyzwanie. (3) Odpowiedź: dowodzący wysyła odpowiedź obliczoną na podstawie wyzwania i sekretu. Weryfikator akceptuje dowód albo go odrzuca.

Identyfikacja Schnorra

Dowodzący zna sekret x (klucz prywatny); klucz publiczny = g^x mod p (lub punkt X = x*G na krzywej eliptycznej). Celem jest udowodnienie znajomości x bez jego ujawniania. Jest to dowód znajomości logarytmu dyskretnego.

Etapy protokołu Schnorra

(1) Dowodzący wybiera losowe r i wysyła zobowiązanie R = r*G. (2) Weryfikator wysyła wyzwanie c (losową liczbę całkowitą). (3) Dowodzący wysyła odpowiedź s = r + c*x. (4) Weryfikator sprawdza, czy s*G == R + c*X. Jeśli tak, akceptuje dowód. Dowodzący zna x; odpowiedź s można obliczyć wyłącznie znając x.

Analiza bezpieczeństwa

Zupełność: uczciwy dowodzący zawsze spełnia s*G = r*G + c*x*G = R + c*X. Solidność: dwa transkrypty z tym samym R, ale różnymi wyzwaniami c i c', dają s i s', z których można odzyskać x = (s-s')/(c-c') — oszust nie może więc utworzyć dwóch poprawnych odpowiedzi dla tego samego R.

Wiedza zerowa protokołu Schnorra

Symulator (nieznający x): wybiera losowe s i c, a następnie ustawia R = s*G - c*X. (R, c, s) ma rozkład poprawnego transkryptu. Weryfikator nie może odróżnić rzeczywistych transkryptów od symulowanych — protokół Schnorra zapewnia wiedzę zerową względem uczciwego weryfikatora.

Transformacja Fiat-Shamir

Aby uczynić protokół Schnorra nieinteraktywnym, należy zastąpić wyzwanie weryfikatora wartością c = Hash(R || message). Dowodzący sam oblicza c i wysyła odpowiedź. W rezultacie powstaje dwuelementowy dowód (R, s), który każdy może zweryfikować. Jest to schemat podpisu Schnorra.

Podpisy Schnorra

Sign(x, m): r ← losowe; R = r*G; c = Hash(R||m); s = r + c*x. Podpis = (R, s). Verify: s*G == R + Hash(R||m)*X. Kompaktowe (64 bajty dla P-256), możliwe do weryfikacji wsadowej i uzasadnione bezpieczeństwem w ROM. Zastosowane w Bitcoin Taproot (BIP-340).

Zobowiązania Pedersena

C = r*G + v*H, gdzie H jest drugim niezależnym generatorem. Zobowiązanie do wartości v z użyciem losowości r. Wiążące: nie można otworzyć zobowiązania dla innej wartości v (logarytm dyskretny). Ukrywające: C ma rozkład jednostajny. Stosowane w opartych na Schnorrze dowodach zakresu i w Bulletproofs.

Kompozycja: dowody AND

Jednoczesne udowodnienie znajomości x1 AND x2: należy uruchomić dwa protokoły Schnorra z tym samym wyzwaniem (współdzielić wyzwanie za pomocą Fiat-Shamir). Weryfikator akceptuje dowód tylko wtedy, gdy oba poddowody są poprawne. Umożliwia to udowadnianie wielu twierdzeń w ramach jednej interakcji.

Kompozycja: dowody OR

Udowodnienie znajomości x1 OR x2 bez ujawniania, którego sekretu dotyczy dowód: należy użyć symulatora dla jednej gałęzi, aby obliczyć fałszywy transkrypt, a następnie podzielić wyzwanie między obie gałęzie. Weryfikator widzi dwa wiarygodnie wyglądające transkrypty, których suma daje rzeczywiste wyzwanie. Nazywa się to „podpisami pierścieniowymi”.

Zastosowania

Identyfikacja Schnorra: elektroniczne paszporty (protokół PACE). Podpisy Schnorra: Bitcoin Taproot, Monero (RingCT używa dowodów OR Schnorra), Signal Protocol (uzgadnianie kluczy X3DH). Zobowiązania Pedersena: Confidential Transactions, Bulletproofs, szyfrowanie notatek Sapling w Zcash.

Szybkie sprawdzenie

Co weryfikator sprawdza w ostatnim kroku protokołu identyfikacji Schnorra?

Podsumowanie

Protokoły Sigma: zobowiązanie–wyzwanie–odpowiedź. Schnorr pozwala udowodnić znajomość logarytmu dyskretnego. Fiat-Shamir czyni protokół nieinteraktywnym (podpis Schnorra). Dalej: zk-SNARK, czyli zwarte nieinteraktywne dowody.

Często zadawane pytania

Czy lekcja „Protokoły Sigma i identyfikacja Schnorra” jest bezpłatna?

Tak — pełny tekst „Protokoły Sigma i identyfikacja Schnorra” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Protokoły Sigma i identyfikacja Schnorra”?

Zaimplementować protokół Sigma i prześledzić działanie dowodu Schnorra Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Protokoły Sigma i identyfikacja Schnorra”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Intuicja ZKP: jaskinia Ali Baby
  2. Protokoły Sigma i identyfikacja Schnorra
  3. zk-SNARK: zwięzłe nieinteraktywne argumenty
  4. Zastosowania ZKP: ZK Rollups i monety prywatności
← Powrót do Cryptology Academy