Kryptografia II stopień
Od definicji bezpieczeństwa do konstrukcji, redukcji i publikacji naukowych.
W13. Współdzielenie sekretu i wykluczanie odbiorców
Interfejs współdzielenia
Schemat nie jest szyfrowaniem z osobnym kluczem odszyfrowującym. Setup ustala ciało, liczbę uczestników i próg. Rozdający wywołuje dla sekretu . Uczestnik otrzymuje prywatnie tylko swój udział . Procedura odtwarza sekret z odpowiedniego zbioru udziałów.
Poprawność dotyczy wystarczającej liczby prawidłowych udziałów. Prywatność dotyczy informacji w mniejszej koalicji. Kontrola formatu nie wykrywa automatycznie udziału, który ma poprawny typ, lecz złą wartość. Po określeniu tego interfejsu możemy wybrać jako jego realizację wielomian Shamira.
Współdzielenie Shamira: algorytmy i przepływ
q jest pierwsze. Identyfikatory są różnymi niezerowymi elementami ℤ_q.
Każdy uczestnik prywatnie dostaje tylko swój udział.
Wymagaj co najmniej t różnych, prawidłowych udziałów. Sam Shamir nie sprawdza ich autentyczności.
Współdzielenie Shamira
- Rozdający, Share: wielomian:
- Rozdający → Uczestnicy: Prywatnie, osobno do i
- Uczestnicy, Zachowaj swój udział: Każdy zna tylko własny udział.
- Uczestnicy → Odtwarzający: Później koalicja przekazuje udziały
- Odtwarzający, Recover: Tu sekret zostaje odtworzony jawnie.
Sekret ma być odtwarzalny z udziałów, lecz ukryty przed mniejszą koalicją. Liczbę uczestników oznaczymy przez , a próg przez , gdzie . W schemacie Shamira pracujemy nad ciałem dla pierwszego . Losujemy niezależnie współczynników z całego ciała i budujemy wielomian:
Sekret to . Udział ma postać dla różnych niezerowych . Współczynniki są niezależne i jednostajne. Stopień wynosi co najwyżej .
Dwa rachunki: odtworzenie i tajność
Interpolacja odtwarza wielomian z jego wartości w różnych punktach. Wielomian stopnia co najwyżej jest jednoznacznie określony przez takich wartości. Do odzyskania sekretu potrzebujemy tylko jego wartości w zerze. Wzór Lagrange'a wyznacza ją jako sumę udziałów pomnożonych przez wagi. Każda waga zależy wyłącznie od publicznych identyfikatorów uczestników. Ułamki poniżej oznaczają mnożenie przez odwrotności w ciele, nie dzielenie zmiennoprzecinkowe.
Dla identyfikatorów w zbiorze :
Mianowniki są niezerowe. Dla mniej niż udziałów każdy sekret ma tyle samo zgodnych uzupełnień współczynników. Dlatego obserwacja jest niezależna od sekretu. Interpolacja dowodzi poprawności. Liczenie uzupełnień dowodzi prywatności.
Małe ciało ℤ₁₀₁ do nauki interpolacji. Nie zapewnia bezpieczeństwa praktycznego. Losowane są dwa współczynniki.
Gotowe do rozpoczęcia.
Shamir nie uwierzytelnia udziałów. Fałszywy udział może zniszczyć wynik. Weryfikowalne współdzielenie wymaga dodatkowych mechanizmów.
Rozgłaszanie z wykluczaniem
Punkt odniesienia: każdy odbiorca ma własny klucz, a nadawca szyfruje klucz treści oddzielnie dla niewykluczonych. Koszt jest liniowy. Drzewiaste pokrycie wybiera poddrzewa bez wykluczonych liści i szyfruje klucz treści pod kluczami tych węzłów. Trzeba dowieść, że koalicja wykluczonych nie zna żadnego użytego klucza.
Przykład: w pełnym drzewie o ośmiu liściach, po wykluczeniu liścia 1, można pokryć odbiorców poddrzewami , i . Odbiorca posiada klucze węzłów na własnej ścieżce do korzenia. Nie używamy klucza korzenia, bo zna go również wykluczony odbiorca. Dla każdej części pokrycia wystarczy jedna chroniona kopia świeżego klucza treści.
To przykład complete subtree z niezależnymi kluczami węzłów. Gdy odwołano więcej osób, trzeba policzyć nowe pokrycie. Klucz treści musi się zmienić. Odwołanie nie usuwa wiadomości ani dawnych kluczy, które odbiorca już poznał.
Źródło konstrukcji i modelu odbiorców: Naor–Naor–Lotspiech, Revocation and Tracing Schemes for Stateless Receivers.
W13a. Identyfikacja i podpis bez odtwarzania sekretu
Funkcjonalność progowa oznacza, że co najmniej z uczestników wspólnie używa jednego klucza. Zwykłe zebranie udziałów Shamira u koordynatora odtwarza cały sekret. Chcemy zamiast tego połączyć odpowiedzi protokołu, nie ujawniając koordynatorowi udziałów. Najpierw pokazujemy algebrę z zaufanym dealerem i uczciwymi uczestnikami, potem wskazujemy dodatkowe obowiązki modelu złośliwego.
Interpolacja odpowiedzi Schnorra
Najpierw potęgi i udziały. Dla wielomianu stopnia co najwyżej sekret to , a udziały to dla różnych niezerowych indeksów . Niech będzie ustalonym zbiorem co najmniej uczestników, a wagi interpolacji spełniają . Ich wzór podamy poniżej. Publiczne klucze zapisujemy jako i .
Progowa identyfikacja Schnorra: algorytmy i przepływ
Rachunek dla uczciwej, ustalonej sesji z zaufanym dealerem. Setup wybiera grupę i próg. Share stosuje wielomian Shamira z f(0)=a, przekazuje a_i=f(i) i publikuje A=g^a oraz A_i=g^{a_i}. To nie pełny protokół FROST. Zbiór I i wagi λ_i są wspólnie ustalone.
- FROST
- Flexible Round-Optimized Schnorr Threshold. Elastyczny progowy protokół Schnorra ze zoptymalizowaną liczbą rund.
Zużyj u_i nawet po przerwaniu sesji.
Sprawdź każdą część przed sumowaniem.
Progowa identyfikacja Schnorra
Uczestnik i:
Koordynator / weryfikator:
- Uczestnik i, Commit: dla każdego i:
- Uczestnik i → Koordynator / weryfikator: Osobne zobowiązanie każdego uczestnika
- Koordynator / weryfikator, Challenge:
- Koordynator / weryfikator → Uczestnik i: Wspólne wyzwanie w ustalonej sesji
- Uczestnik i, Respond:
- Uczestnik i → Koordynator / weryfikator: Bez ujawniania a_i
- Koordynator / weryfikator, Combine i Check:
Uczestnik wysyła dla świeżego nonce . Zobowiązania mnożymy, lecz odpowiedzi skalarne dodajemy:
Dla wspólnego wyzwania częściowa kontrola to . Po pomnożeniu równań uzyskujemy:
Weryfikator widzi zatem zwykłe równanie Schnorra. Sposób przygotowania odpowiedzi jest rozproszony. Realizacja na krzywej. Poniżej zapisujemy dokładnie ten rachunek addytywnie, aby wyjaśnić operacje MCL.
Dealer losuje wielomian stopnia co najwyżej , z sekretem . Uczestnik otrzymuje . Publiczne są i klucze weryfikacyjne udziałów . Dla ustalonego zbioru uczestników , o liczności co najmniej , definiujemy współczynniki:
Każdy uczestnik losuje świeże i przekazuje . Po zebraniu zobowiązań powstaje . Weryfikator losuje jedno wspólne wyzwanie . Uczestnicy odpowiadają:
Koordynator sprawdza częściowe równania . Weryfikator końcowy sprawdza zwykłe równanie Schnorra:
MCL WebAssembly, BLS12-381. Zaufany dealer, jedna sesja. Koordynator weryfikuje częściowe odpowiedzi.
| Uczestnik | Odpowiedź · skrót hex | Weryfikacja udziału |
|---|---|---|
| Wybierz co najmniej dwóch uczestników. | ||
Zapis i obliczenia. Wzory schematu są multiplikatywne. MCL realizuje je na krzywej. Generator odpowiada punktowi . W grupach punktów iloczyn oznacza dodawanie, potęga oznacza mnożenie punktu przez skalar, a odwrotność oznacza punkt przeciwny. Nie potęgujemy współrzędnych. Ten rachunek nie używa pairingu.
Co wynika z tych równań, a co jeszcze nie
Poprawność wynika z liniowości i interpolacji. HVZK końcowego transkryptu otrzymujemy jak dla Schnorra: losujemy i obliczamy . Suma niezależnych, jednostajnych nonce jest jednostajna. Dotyczy to widoku zewnętrznego weryfikatora, nie pełnego widoku złośliwej koalicji uczestników.
Szczególna rzetelność, jak w W7: z dwóch akceptujących transkryptów z tym samym i różnymi wyzwaniami otrzymujemy . Dwa przebiegi z tym samym częściowym mogą również ujawnić udział:
Dlatego nonce uczestnika jest jednorazowy, nawet gdy sesja została przerwana. Lista musi być ustalona i uwierzytelniona. Zmiana listy zmienia wagi. Klucze ujawniają obrazy udziałów, więc bezwarunkowy dowód prywatności samych udziałów Shamira nie jest już pełnym dowodem dla publicznego transkryptu tego systemu.
Pełny protokół progowy wymaga ponadto poprawnej dystrybucji klucza, kontroli złośliwych udziałów, związania zobowiązań z sesją, ochrony przed adaptacyjnym wyborem nonce i analizy współbieżności. FROST używa dwóch nonce i współczynników wiążących. Nie jest tylko powyższym równaniem z wyzwaniem zastąpionym haszem. RFC 9591 opisuje konkretny dwurundowy protokół podpisu i wymagania implementacyjne. Nasza animacja pokazuje prostszy interaktywny protokół dla ustalonej sesji, a nie implementację FROST.
Te same udziały, inna funkcjonalność: progowy BLS
Cel: uczestnicy tworzą podpis jednej wiadomości pod wspólnym kluczem, nie odtwarzając sekretu . Zachowujemy udziały , zbiór i wagi z poprzedniej konstrukcji. Zmieniają się algorytm odpowiedzi i sposób łączenia wyników.
Progowy BLS: interpolacja podpisów: algorytmy i przepływ
Setup i Verify są jak w BLS. Share używa Shamira z sekretem a i prywatnie rozsyła udziały. Publiczne klucze udziałów powstają przez działanie tych udziałów na generatorze . Poniższy rachunek zakłada poprawną dystrybucję i ustalony zbiór I. Nie jest kompletnym protokołem generowania klucza w modelu złośliwym.
Waliduj punkty i wspólną wiadomość.
Łącz co najmniej t zaakceptowanych udziałów z właściwymi wagami.
Progowy BLS: interpolacja podpisów
Uczestnik i:
Koordynator / odbiorca:
- Uczestnik i, PartialSign:
- Uczestnik i → Koordynator / odbiorca: Część podpisu, nie część sekretu
- Koordynator / odbiorca, CheckShare:
- Koordynator / odbiorca, Combine:
- Koordynator / odbiorca, Verify:
W zapisie potęgowym uczestnik tworzy . Interpolacja w wykładniku daje . Nie odtwarzamy jawnie . Odpowiednie obrazy udziałów łączą się w podpis tego samego klucza . W zapisie punktowym iloczyn elementów zastępujemy sumą punktów:
Dla wiadomości każdy wybrany uczestnik oblicza . Sprawdzamy i składamy:
Końcowy podpis odpowiada jednemu kluczowi publicznemu . Nie ujawnia sam przez się, który dopuszczalny podzbiór uczestniczył. Wielomian definiuje próg, a pairing weryfikuje udziały i podpis. Własności kompletnego schematu zależą od generowania klucza, walidacji punktów, definicji przeciwnika i założeń BLS. Interpolacja sama nie jest dowodem niepodrabialności. Źródło tej rodziny: Boldyreva, Threshold Signatures, Multisignatures and Blind Signatures Based on the Gap-Diffie-Hellman-Group Signature Scheme.