Cryptology Academy · Lekcja

Protokoły rozproszonego generowania kluczy

Proszę poznać protokoły DKG, które umożliwiają stronom wspólne wygenerowanie klucza, bez ujawniania całego sekretu którejkolwiek z nich.

Lekcja 3 z 413 kroki

Protokoły rozproszonego generowania kluczy to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 3 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.

Cel i motywacja DKG

Distributed Key Generation (DKG) rozwiązuje problem zaufanego dealera w kryptografii progowej. Bez DKG strona centralna musi wygenerować parę kluczy i rozdystrybuować udziały, przez chwilę mając pełną wiedzę o kluczu prywatnym. DKG umożliwia wspólne wygenerowanie przez n stron pary kluczy publicznego i prywatnego za pomocą protokołu, w którym żadna pojedyncza strona nie poznaje klucza prywatnego — nawet koordynator protokołu.

DKG Pedersena (1991)

DKG Pedersena był pierwszym praktycznym protokołem DKG, opublikowanym w 1991 roku. Każda z n stron generuje losowy sekret s_i i uruchamia protokół Verifiable Secret Sharing (VSS), aby go udostępnić. Każda strona rozgłasza zobowiązania do współczynników swojego wielomianu. Po udostępnieniu przez wszystkie strony ich wkładów połączony sekret jest sumą wszystkich wartości s_i, a każda strona posiada udział w tej sumie.

Feldman VSS jako element budulcowy

Feldman VSS (Verifiable Secret Sharing autorstwa Feldmana, 1987) jest podstawowym elementem budulcowym większości protokołów DKG. Dealer zobowiązuje się do współczynników wielomianu jako elementów grupy (C_j = g^{a_j} mod p). Każda strona otrzymująca udział f(i) może zweryfikować go na podstawie tych zobowiązań, sprawdzając, czy g^{f(i)} jest równe iloczynowi C_j^{i^j}. Dzięki temu strony mogą wykryć, czy dealer przesłał nieprawidłowe udziały.

DKG Joint-Feldman i jego ograniczenia

DKG Joint-Feldman uruchamia Feldman VSS równolegle dla wszystkich n stron, przy czym każda strona działa jako dealer własnego sekretu. Następnie strony zgłaszają skargi, jeśli otrzymały nieprawidłowe udziały. Klucz końcowy jest sumą sekretów dealerów, wobec których nie zgłoszono skarg. Jednak DKG Joint-Feldman nie jest bezpieczny wobec przeciwników adaptacyjnych, którzy korumpują strony na podstawie komunikatów protokołu. Słabość tę zidentyfikowali Gennaro, Jarecki, Krawczyk i Rabin.

Bezpieczny DKG GJKR

Protokół DKG GJKR (Gennaro, Jarecki, Krawczyk, Rabin, 1999 i 2007) rozwiązał słabości DKG Joint-Feldman. GJKR wykorzystuje Pedersen VSS (zobowiązania ukrywające w sensie informacyjno-teoretycznym) zamiast Feldman VSS oraz dodaje rundy skarg, w których strony mogą zakwestionować nieprawidłowe udziały. Powstały DKG jest bezpieczny wobec przeciwników adaptacyjnych i stał się standardowym punktem odniesienia w teorii bezpiecznego DKG.

Rundy komunikacji w DKG

DKG GJKR wymaga trzech rund: rundy zobowiązań (każda strona rozgłasza zobowiązania VSS), rundy udostępniania udziałów (strony przesyłają sobie udziały bezpośrednio, w modelu peer-to-peer) oraz rundy skarg (strony rozgłaszają skargi dotyczące nieprawidłowych udziałów). Strony, które nie rozwiążą skarg, zostają zdyskwalifikowane. W czwartej rundzie wkłady prawidłowych stron są łączone w końcowy klucz publiczny i rozproszone udziały klucza prywatnego.

DKG w kluczach walidatorów Ethereum

Zarządzanie kluczami walidatorów Ethereum wykorzystuje DKG w ramach distributed validator technology (DVT). EIP-4844 i ekosystem DVT (Obol Network, SSV Network) wykorzystują progowe podpisy BLS w schemacie BLS12-381, aby umożliwić komitetom walidatorów podpisywanie bloków bez ujawniania pełnego klucza walidatora jakiemukolwiek pojedynczemu operatorowi. Zwiększa to odporność walidatorów na awarie i zmniejsza ryzyko slashing z powodu przejęcia klucza.

Rozproszony generator losowości DRAND

DRAND to rozproszony generator losowości używany przez łańcuch beacon Ethereum do nieprzewidywalnego generowania liczb losowych. DRAND uruchamia DKG wśród zbioru węzłów League of Entropy (Cloudflare, EPFL, Protocol Labs itd.) w celu wygenerowania progowego klucza BLS. W każdej rundzie t z n węzłów dostarcza częściowe podpisy, które są łączone w nieprzewidywalną wartość losową. Żaden pojedynczy węzeł nie może wpłynąć na wynik ani go przewidzieć.

DKG dla Schnorra a ECDSA

DKG jest znacznie prostszy dla progowych schematów Schnorra/EdDSA niż dla ECDSA. W progowych schematach Schnorra rozproszony klucz prywatny jest po prostu sumą sekretów stron (x = x1 + x2 + ... + xn), a klucz publiczny jest sumą udziałów klucza publicznego (X = X1 + X2 + ... + Xn). W przypadku ECDSA nieliniowość oznacza, że DKG musi generować udziały multiplikatywne, co wymaga bardziej złożonych protokołów.

Protokoły odświeżania udziałów klucza

Długotrwałe udziały klucza progowego mogą być stopniowo przejmowane, jeśli przeciwnik powoli korumpuje strony w czasie. Proaktywne udostępnianie sekretu (protokoły odświeżania) okresowo losowo zmienia udziały bez zmiany bazowego klucza. Po odświeżeniu udziały sprzed odświeżenia stają się bezużyteczne, co ogranicza okno podatności. GJKR i jego rozwinięcia obejmują protokoły odświeżania działające według tej samej struktury co początkowy DKG.

Praktyczne implementacje DKG

DKG jest zaimplementowany w kilku systemach produkcyjnych. Klient DVT Ethereum Obol Charon wykorzystuje ceremonię DKG opartą na Pedersen VSS w schemacie BLS12-381. Silent Shard firmy Silence Laboratories wykorzystuje DKG w mobilnych portfelach MPC. Biblioteka dkg-go implementuje GJKR dla aplikacji w Go. Threshold Network (dawniej Keep Network) wykorzystuje DKG w usłudze progowego ECDSA zabezpieczającej tBTC w sieci Bitcoin.

Quiz: DKG Pedersena

Jaka kluczowa właściwość sprawia, że DKG Pedersena jest lepszy od konfiguracji z jednym zaufanym dealerem?

Podsumowanie protokołów DKG

DKG eliminuje zaufanego dealera, ponieważ wszystkie n stron wspólnie generują parę kluczy progowych, a żadna strona nie zna klucza prywatnego. W DKG Pedersena każda strona uruchamia VSS dla swojego wkładu. GJKR dodaje bezpieczeństwo adaptacyjne dzięki rundom skarg. DKG stanowi podstawę DVT Ethereum (Obol, SSV), generatora losowości DRAND oraz produkcyjnych konfiguracji portfeli MPC. Protokoły odświeżania zwiększają bezpieczeństwo, okresowo losowo zmieniając udziały.

Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Protokoły rozproszonego generowania kluczy” jest bezpłatna?

Tak — pełny tekst „Protokoły rozproszonego generowania kluczy” 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 rozproszonego generowania kluczy”?

Proszę poznać protokoły DKG, które umożliwiają stronom wspólne wygenerowanie klucza, bez ujawniania całego sekretu którejkolwiek z nich. Ć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 3 z 4.

Ile czasu zajmuje lekcja „Protokoły rozproszonego generowania kluczy”?

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. Schematy podpisów progowych: podstawy
  2. Progowy ECDSA: podpisywanie wielostronne
  3. Protokoły rozproszonego generowania kluczy
  4. Schematy progowe w blockchainach i HSM
← Powrót do Cryptology Academy