Wrocław University of Science and TechnologyDepartment of Fundamentals of Computer Science

Kryptografia II stopień

Od definicji bezpieczeństwa do konstrukcji, redukcji i publikacji naukowych.

W17. Od funkcjonalności podpisu do kosztu obliczeń

Liczenie kosztu pojedynczego potęgowania rozpocznij od square-and-multiply i drabinki. Tam podano dokładny wariant obu algorytmów, niezmiennik i liczniki działań potrzebne w C15.6 oraz L9.6. Poniżej traktujemy takie operacje jako składniki kosztu całego schematu.

Najpierw cel, potem narzędzie. Podpis indywidualny, wspólny podpis wielu osób, użycie jednego klucza przez próg osób i ukrycie podpisującego w pierścieniu nie są kolejnymi nazwami tej samej funkcji. Pairingi dają zwięzłe równania weryfikacji, ale nie zastępują definicji tego, co weryfikator ma stwierdzić.

Podpis indywidualnyjedna osoba · jeden kluczMultipodpiswspółpraca · wiele kluczyPodpis progowyco najmniej t osób · jeden kluczPodpis pierścieniowyjedna osoba · ukryty indeks
Próg dotyczy współpracy. Pierścień dotyczy anonimowości podpisującego. Agregacja oszczędza reprezentację, lecz wymaga kontroli kluczy i własnego modelu bezpieczeństwa.

Agregacja nie zastępuje kontroli kluczy

W zapisie potęgowym niezależni podpisujący mają Ai=g2aiA_i=g_2^{a_i} i σi=ℋG1(m)ai\sigma_i=\mathcal H_{G_1}(m)^{a_i}. Dla tej samej wiadomości łączymy podpisy przez iloczyn σ=∏iσi\sigma=\prod_i\sigma_i. Odpowiada mu iloczyn kluczy, a kontrola ma postać e(σ,g2)=e(ℋG1(m),∏iAi)e(\sigma,g_2)=e(\mathcal H_{G_1}(m),\prod_i A_i). To równanie poprawności, jeszcze nie gwarancja niepodrabialności. Przy przejściu do punktów iloczyny w grupach źródłowych stają się sumami:

Dla kluczy Ai=ai⋅P2A_i=a_i\cdot P_2 podpisy BLS na tej samej wiadomości sumują się do σ=∑iσi\sigma=\sum_i\sigma_i. Formalnie

e(σ,P2)=e(ℋG1(m),∑iAi).e(\sigma,P_2)=e\left(\mathcal H_{G_1}(m),\sum_i A_i\right).

Bez kontroli kluczy napastnik może dobrać A2=b⋅P2−A1A_2=b\cdot P_2-A_1 i przedstawić b⋅ℋG1(m)b\cdot\mathcal H_{G_1}(m) jako rzekomy podpis obu osób. To rogue-key attack, a nie rozwiązanie logarytmu dyskretnego. Potrzebna jest właściwa rejestracja i dowód posiadania klucza albo inny udowodniony wariant wiążący klucze z podpisywanym tekstem. Dla różnych wiadomości podstawowe równanie ma postać e(σ,P2)=∏ie(ℋG1(mi),Ai)e(\sigma,P_2)=\prod_i e(\mathcal H_{G_1}(m_i),A_i), z wymaganiami konkretnego wariantu, w tym odrębności wiadomości tam, gdzie zakłada ją dowód. Źródło agregacji: Boneh–Gentry–Lynn–Shacham.

Podpis pierścieniowy ma inny cel: jeden uczestnik podpisuje, a jego indeks pozostaje ukryty w zadanym modelu. Dowód OR z W11 realizuje tę intuicję bez pairingu. Istnieją również podpisy pierścieniowe oparte na pairingach, np. konstrukcja identity-based Zhanga i Kima, ale sama zamiana równań na pairingowe nie daje anonimowości. Trzeba sprawdzić rozkład podpisu i jego zależność od rzeczywistej gałęzi. W wariancie identity-based występuje dodatkowo podmiot wydający klucze, co zmienia model zaufania.

Liczymy rodzaje operacji, nie tylko znaki we wzorze

Niech M1,M2M_1,M_2 oznaczają koszt mnożenia zmiennej bazy przez skalar w G1,G2G_1,G_2, PP koszt pełnego pairingu, H1H_1 koszt hash-to-G1G_1, a A1,A2A_1,A_2 koszt dodawania punktów. To koszty dla ustalonej biblioteki, parametrów i sprzętu. Przykładowy rachunek ma postać

T≈n1⋅M1+n2⋅M2+nP⋅P+nH⋅H1+nA1⋅A1+nA2⋅A2+Tinne.T\approx n_1\cdot M_1+n_2\cdot M_2+n_P\cdot P+n_H\cdot H_1 +n_{A_1}\cdot A_1+n_{A_2}\cdot A_2+T_{\mathrm{inne}}.

TT oznacza łączny czas, współczynniki nn liczą wykonane operacje odpowiednich typów, a TinneT_{\mathrm{inne}} zbiera pozostałe koszty, np. losowanie, kodowanie i obsługę pamięci. Litera PP w tym rachunku oznacza koszt pairingu, nie generator z równań grupowych.

Operacja protokołu Prosty rachunek, bez optymalizacji Co jeszcze uwzględnić
Podpis BLS H1+M1H_1+M_1 Kodowanie wiadomości i domeny
Weryfikacja BLS H1+2⋅PH_1+2\cdot P Walidacja klucza i podpisu
Weryfikacja Schnorra w G2G_2 2⋅M2+A22\cdot M_2+A_2 Wyzwanie, format i walidacja
Weryfikacja dowodu OR z nn gałęziami 2⋅n⋅M2+n⋅A22\cdot n\cdot M_2+n\cdot A_2 Sprawdzenie sumy wyzwań
Iloczyn szyfrogramów z W16 4⋅P4\cdot P Odczyt i kodowanie są osobno

To liczby operacji przy bezpośredniej realizacji wzorów. Implementacja może połączyć mnożenia w MSM. Iloczyn pairingów może współdzielić końcowe potęgowanie po pętlach Millera. Prekomputacja stałej bazy zmienia koszt. Dlatego „dwa pairingi” nie muszą kosztować dwukrotności każdego możliwego wywołania biblioteki.

MSM
Multi-Scalar Multiplication. Obliczenie sumy punktów pomnożonych przez zadane skalary.
Koszt operacji · pomiar na tym urządzeniu

5 partii po 20 operacji, po rozgrzewce. Mediana średnich czasów. Milisekundy na operację.

OperacjaMediana · ms/op.Minimum · ms/op.Maksimum · ms/op.
Brak pomiaru. Wyniki nie są wczytywane z gotowej tabeli.
Gotowe do rozpoczęcia.

Pomiar dotyczy bieżącej przeglądarki, lokalnego MCL i BLS12-381. Wykonuje rozgrzewkę, następnie kilka partii i podaje medianę średniego czasu operacji w partii. Nie mierzy sieci, stałoczasowości ani poziomu bezpieczeństwa. Haszujemy do grupy przez API MCL, nie przypisujemy temu automatycznie zgodności z konkretną standardową ciphersuite. Otwarta konsola, oszczędzanie energii i inne zadania zmieniają wyniki.

Parametr bezpieczeństwa, rozmiar instancji i komunikacja

Rozróżniaj trzy osie. Parametr bezpieczeństwa steruje wielkością grup i kosztami podstawowych działań. Rozmiar zadania to np. liczba podpisujących lub bramek. Komunikacja obejmuje liczbę bajtów i rund, więc opóźnienie sieci może dominować mimo szybkiej lokalnej algebry. Liniowość liczby pairingów względem liczby uczestników nie oznacza liniowości względem długości bitowej modułu.

W dowodzie również liczymy koszt. Jeśli redukcja powtarza przeciwnika, jej czas obejmuje wszystkie uruchomienia i obsługę wyroczni. Strata sukcesu ε\varepsilon do wartości rzędu ε2/Q\varepsilon^2/Q może mieć znaczenie dla parametrów, nawet gdy równania ekstrakcji są krótkie. Konkretne stałe należy brać z twierdzenia dla danego schematu. Nie utożsamiaj kosztu redukcji z czasem podpisywania.

Powiązania: C15, L9.

W18. SNARK: krótki argument nie oznacza taniego dowodzenia

SNARK
Succinct Non-interactive Argument of Knowledge. Zwięzły nieinteraktywny argument wiedzy.

SNARK to zwięzły, nieinteraktywny argument wiedzy. Dla publicznego stwierdzenia xx i ukrytego świadka ww określamy efektywnie sprawdzalną relację R(x,w)=1R(x,w)=1. Dowodzący ma przekonać weryfikatora, że zna odpowiedni ww. Słowo „argument” wskazuje na bezpieczeństwo wobec obliczeniowo ograniczonego przeciwnika. Wiedzę formalizuje odpowiedni ekstraktor, nie samo istnienie świadka. Zero knowledge jest dodatkową własnością, nie konsekwencją samego słowa „zwięzły”. Konstrukcje zk-SNARK realizują oba cele.

zk-SNARK
zero-knowledge Succinct Non-interactive Argument of Knowledge. Zwięzły nieinteraktywny argument wiedzy z własnością zerowej wiedzy.
Relacjaco dokładnie sprawdzamyDowodzącyświadek i duże obliczenieWeryfikatorwejście publiczne i dowód
R(x,w)=1R(x,w)=1
π←Prove(x,w)\pi\leftarrow\mathsf{Prove}(x,w)
Verify(x,π)\mathsf{Verify}(x,\pi)
Krótki dowód nie usuwa kosztu budowy świadka i dowodzenia. Relacja musi wiązać dane z deklarowanym zadaniem. Diagram pomija parametry setupu w argumentach wywołań, nie w modelu bezpieczeństwa.

Przykład: xx zawiera zobowiązanie do danych i ogłoszony wynik, a ww zawiera dane i otwarcie zobowiązania. Relacja sprawdza zgodność otwarcia oraz wykonanie zdefiniowanej funkcji. Samo równanie z=u⋅vz=u\cdot v nie wiąże wyniku z konkretnymi danymi, jeśli nic nie określa ich tożsamości. Najtrudniejszy błąd bywa więc nie w pairingu, lecz w zbyt słabym opisie relacji.

W Groth16 dowód ma trzy elementy grup, a sprawdzenie korzysta z równania pairingowego. Koszt weryfikacji obejmuje także przetwarzanie publicznego wejścia. Dowodzący musi wyznaczyć świadka i wykonać kosztowne operacje zależne od rozmiaru obwodu. Przygotowanie parametrów jest związane z obwodem i wymaga właściwego modelu zaufania. Publikacja: Groth, On the Size of Pairing-Based Non-interactive Arguments.

Implementacje działają. Przykładem jest snarkjs, z obliczeniami JavaScript/WebAssembly i kompletną ścieżką tworzenia oraz weryfikowania dowodów. Nie oznacza to, że ogólny SNARK jest najprostszą metodą dla każdego równania. Dla małej, dobrze określonej relacji dedykowany dowód Schnorra lub równanie pairingowe może być znacznie prostsze do implementacji i audytu.

Przed wyborem porównaj czas tworzenia świadka, czas dowodzenia, szczytową pamięć, rozmiar parametrów, rozmiar dowodu i czas weryfikacji. Osobno sprawdź założenia, zaufany setup i ewentualną odporność postkwantową. Klasyczny pairingowy Groth16 nie staje się postkwantowy przez to, że jest SNARK-iem. Systemy transparentne mogą unikać tajnej konfiguracji, lecz mają własne założenia i kompromisy. W tym miejscu poznajemy kontrakt i koszty, nie deklarujemy implementacji pełnego SNARK-a na stronie.