Kryptografia II stopień
Od definicji bezpieczeństwa do konstrukcji, redukcji i publikacji naukowych.
UC 2. Zastąpienie idealnego klucza protokołem DH
Pierwszy przykład miał idealny zasób kluczowy. Teraz musimy go zrealizować. Robimy to w dwóch etapach: najpierw dowód dla samej wymiany klucza, potem użycie tego dowodu wewnątrz szyfrowania.
Krok 1. Zachowaj ten sam interfejs
Wymiana korzysta z dwóch osobnych uwierzytelnionych przesyłek:
- Alicja losuje i wysyła do Boba.
- Po dostarczeniu Bob losuje , oblicza i przekazuje klucz swojej aplikacji.
- Po sygnale gotowości aplikacji Bob wysyła do Alicji.
- Po dostarczeniu Alicja przekazuje aplikacji .
Obie strony otrzymują . Aplikacja Boba dostaje klucz wcześniej, dokładnie jak w . Kiedy aplikacją jest OTP z poprzedniego przykładu, „przekazanie aplikacji” oznacza wewnętrzne przekazanie do modułu szyfrowania, nie ujawnienie środowisku.
Bob rozpoczyna drugą fazę po gotowości swojej aplikacji. Gdy aplikacją jest OTP, gotowość jest automatyczna. Wyjścia z kluczem pozostają wewnątrz protokołu szyfrowania.
Krok 2. Zbuduj symulator wymiany klucza
Symulator wybiera własne niezależne wykładniki i pokazuje oraz jako komunikaty uwierzytelnione. Każdą zgodę przeciwnika na dostarczenie odpowiedniego komunikatu przekłada na zgodę dla właściwej fazy .
Sama funkcjonalność losuje klucz . Symulator nie zastępuje go wartością . Powstaje więc pozorna trudność: publiczna rozmowa sugeruje DH, lecz rzeczywisty idealny klucz jest od niej niezależny. Właśnie tę różnicę musi ukryć założenie DDH.
Krok 3. Wskaż dokładnie jedyną zmianę obliczeniową
Założenie Decisional Diffie–Hellman dotyczy nierozróżnialności:
Lewy rozkład ma algebraicznie powiązany trzeci element. W prawym trzeci element jest niezależny i jednostajny. Samo CDH nie wystarcza do tego kroku: potrzebujemy argumentu o rozróżnianiu, nie tylko o niemożności obliczenia klucza.
Dobór grupy jest częścią założenia. W grupie z efektywnie dostępnym symetrycznym pairingiem można testować relację DH przez porównanie z . Nie przenosimy więc tego dowodu automatycznie do każdej grupy używanej w pozostałych demonstratorach.
Krok 4. Zbuduj redukcję, która nie zna wykładników
Przypuśćmy, że pewne środowisko , współpracując z , zauważa różnicę między prawdziwym DH a idealnym kluczem z symulowaną rozmową. Redukcja dostaje z eksperymentu DDH tylko trójkę i wykonuje:
- Uruchamia programy i wraz z pozostałym otoczeniem.
- Jako pierwszą uwierzytelnioną przesyłkę pokazuje . Na zgodę na jej dostarczenie zwraca aplikacji Boba klucz .
- Po gotowości Boba pokazuje drugą przesyłkę . Na zgodę na jej dostarczenie zwraca aplikacji Alicji ten sam .
- Obsługuje resztę komunikacji bez zmiany. Nie oblicza logarytmów dyskretnych.
- Zwraca bit, który zwróciło .
Gdy , jest to rozkład rzeczywistej wymiany. Gdy , jest to rozkład idealnego klucza i niezależnej publicznej rozmowy. Wylosowanie całej trójki wcześniej, zamiast losowania wykładników dopiero po kolejnych aktywacjach, nie zmienia widoku, bo niewykorzystane wartości pozostają ukryte i niezależne.
Redukcja i symulator mają różne role. Redukcja otrzymuje z zadania DDH, aby porównać dwa eksperymenty. Symulator w idealnym świecie nie otrzymuje sekretnego klucza z .
Krok 5. Powiąż przewagi i czas pracy
Oznaczmy przez różnicę prawdopodobieństw zwrócenia jedynki przez środowisko w obu światach. Dla zbudowanej redukcji:
Dla pojedynczej instancji nie zgadujemy sesji ani zapytania, więc nie pojawia się tutaj czynnik . Redukcja wykonuje , i wielomianową obsługę komunikatów. Jeżeli otoczenie działa w czasie wielomianowym, redukcja również. EasyUC, §5.4, podaje to jako „ke_security”. Osobno trzeba uzasadnić czas pracy, nie tylko przekształcić wzór na przewagę.
Krok 6. Złóż dwa już uzyskane wyniki
Niech oznacza cały rzeczywisty system DH + OTP. W zastępujemy tylko wymianę klucza przez z symulatorem . W zastępujemy również OTP przez z odpowiednim symulatorem.
Strzałki oznaczają przejścia dowodowe, nie komunikaty sieciowe. W drugim przejściu używamy wyniku OTP także wobec przeciwnika opakowanego w symulator DH.
Środowiskiem dla dowodu DH jest teraz oryginalne środowisko razem z modułem OTP i pozostałymi częściami systemu. Ta obserwacja pozwala legalnie zastosować pierwszy wynik wewnątrz większego programu. Nie zakładamy, że aplikacja ignoruje klucz. Może wykonywać na nim obliczenia, które redukcja również wykonuje.
Pierwszy koszt pochodzi z DDH. Drugi składnik jest zerowy dzięki bijekcji OTP. Końcowy symulator uruchamia symulator OTP, wewnątrz niego symulator DH, a dopiero w nim przeciwnika. W notacji parametryzowanych programów źródła jest to .
Mała grupa dydaktyczna . Rachunek jest wykonywany lokalnie. W tej małej grupie DDH nie jest trudne. Wartości sekretne są odsłonięte wyłącznie dla objaśnienia.
Oba światy są gotowe. Historia będzie zachowywana krok po kroku.
| Krok | Świat rzeczywisty | Świat idealny |
|---|---|---|
| 1. Wejście | Oczekuje. | Oczekuje. |
| 2. Pierwsza faza | Oczekuje. | Oczekuje. |
| 3. Klucz Boba | Oczekuje. | Oczekuje. |
| 4. Klucz Alicji | Oczekuje. | Oczekuje. |
| 5. Widoczna przesyłka | Oczekuje. | Oczekuje. |
| 6. Wyjście Boba | Oczekuje. | Oczekuje. |
Zamiana klucza DH na niezależny klucz wymaga założenia DDH. Zamiana jednorazowo zamaskowanej wiadomości na jednostajny szyfrogram jest dokładną równością rozkładów.
Wyjścia Boba: 0 w każdym świecie.
Wniosek: DH + jednorazowe szyfrowanie grupowe, przy uwierzytelnionych przesyłkach, realizuje usługę tajnego przekazania jednej wiadomości w zadeklarowanym modelu. To jest odpowiednik końcowego lematu „smc_security” w §5.5 EasyUC. Nie jest to twierdzenie, że sam DH zapewnia uwierzytelnienie, że dowolny OTP można powtarzać ani że przeglądarkowa animacja stanowi formalną weryfikację.
UC 3. Jak samodzielnie zbudować i sprawdzić dowód
Siedem pól na kartce przed pierwszą redukcją
- Cel: napisz wejścia i wyjścia idealnej funkcjonalności. Kto ma się czego dowiedzieć?
- Uprawnienia: zapisz wycieki, możliwe przejęcia, opóźnienia, przerwania i dopuszczalne błędne wyjścia.
- Zasoby: wymień uwierzytelnione kanały, klucze lub inne podusługi. CRS (common reference string) to wspólny ciąg referencyjny o określonym rozkładzie, dostępny uczestnikom, jeśli model go zakłada. Nie ukrywaj takich zasobów w słowie „bezpieczny”.
- Algorytm symulatora: dla każdego komunikatu określ, co wie symulator i skąd bierze odpowiedź. Działaj online, bez zaglądania do przyszłych wejść środowiska.
- Relacja stanów: po każdym zewnętrznie widocznym zdarzeniu wskaż, co musi się zgadzać między światami. Sprawdź także błędne i powtórzone komunikaty.
- Koszt różnicy: podziel przejścia na dokładne równości rozkładów i redukcje do konkretnych założeń. Policz czas, liczbę instancji oraz ewentualną stratę.
- Kompozycja: sprawdź, czy podmieniany moduł ma ten sam interfejs, model przejęć, wycieki i harmonogram wyjść. Kontroluj identyfikatory i dostęp do współdzielonego stanu.
Dlaczego nie wystarczy poprzedni rewinding
W dowodzie Schnorra symulator lub ekstraktor może cofnąć analizowany program do określonego stanu. W UC środowisko działa równolegle z innymi procesami i może w międzyczasie uzyskać zewnętrzne informacje. Symulator nie ma ogólnego prawa cofnąć całego środowiska wraz z nimi.
Nasze dwa symulatory są straight-line: odpowiadają w jednym przebiegu i nie cofają . To nie jest definicja zakazująca każdego użycia rewindingu we wszystkich możliwych dowodach. Jest to ostrzeżenie, że symulacji pojedynczej rozmowy nie wolno bez dowodu przenieść do UC.
Podobnie model wyroczni losowej i UC rozwiązują inne problemy. ROM idealizuje konkretną usługę haszującą. UC opisuje bezpieczeństwo protokołu w otoczeniu innych procesów. Jeżeli dowód UC potrzebuje wyroczni, trzeba określić jej interfejs, dostęp i możliwość programowania. Sam skrót „ROM” nie daje twierdzenia o kompozycji.
Cztery kontrprzykłady, które ujawniają pominięte założenie
- Usuń uwierzytelnienie szyfrogramu. Przeciwnik zastępuje przez , gdzie . Bob otrzymuje . Idealna usługa nie dopuszcza takiej zmiany, więc można rozróżnić światy. OTP chroni tajność, ale sam nie zapewnia integralności.
- Użyj ponownie klucza. Z i otrzymujemy . Nie ma już dwóch niezależnych jednostajnych szyfrogramów.
- Pozwól na adaptacyjne przejęcie. Po wcześniejszej symulacji sieci trzeba ujawnić spójną pamięć urządzenia. Nasz symulator nie konstruuje takiego otwarcia. To nowe zobowiązanie dowodowe, a nie automatyczny wniosek z przypadku bez przejęć.
- Ukryj w specyfikacji możliwość opóźnienia. Jeśli idealna usługa musi natychmiast zwrócić wynik, a rzeczywista sieć może go zatrzymać, samo oczekiwanie pozwala odróżnić światy.
Co naprawdę pozwala podmieniać twierdzenie o kompozycji
Schematycznie, dla zgodnych interfejsów i dopuszczonych protokołów:
Relacja oznacza „UC-realizuje”. Symbol oznacza program korzystający z idealnej podusługi, a ten sam program z jej implementacją. Twierdzenie nie mówi, że dowolne dwa osobno bezpieczne programy są bezpieczne po sklejeniu.
Przy wielu osobnych sesjach podmieniamy kolejne instancje i sumujemy ich błędy hybrydowe. Wielomianowa liczba zaniedbywalnych błędów pozostaje zaniedbywalna. Jeżeli sesje współdzielą klucz, wspólną bazę albo globalną wyrocznię, zwykłe rozumowanie o niezależnych kopiach może nie wystarczyć. Należy modelować ten zasób i zastosować właściwe twierdzenie o współdzielonym stanie lub ustawieniu globalnym.
UC stawia silne wymagania. Dla pewnych zadań nie istnieje realizacja w modelu bez dodatkowego zaufania. Przykładem są dwustronne zobowiązania UC w modelu plain, przy możliwości złośliwego przejęcia jednej ze stron. CRS, czyli wspólny ciąg referencyjny, jest jednym z rozważanych dodatkowych zasobów. Jego rozkład i sposób udostępnienia należą do modelu, nie do szczegółów implementacyjnych.
Sprawdź zrozumienie
- W dowodzie OTP środowisko zna , ale symulator nie zna . Dlaczego nie ma sprzeczności? Wskaż, kto przekazuje wynik Bobowi.
- Opisz stan obu światów, gdy przeciwnik zatrzyma pierwszą, drugą albo ostatnią przesyłkę. Które wyjścia już nastąpiły, a które jeszcze nie?
- Zbuduj środowisko rozróżniające po usunięciu uwierzytelnienia. Nie odzyskuj klucza. Wystarczy sprawdzić wynik Boba.
- Dlaczego redukcja DDH może przekazać aplikacji, chociaż nie zna ani ? Dlaczego tego samego dostępu nie przypisujemy symulatorowi?
- Przenieś konstrukcję do dwóch sesji. Podaj oddzielne identyfikatory i losowania. Następnie wskaż dokładnie, który krok psuje współdzielenie jednej maski OTP.
Źródła: Canetti, Universally Composable Security, Canetti–Stoughton–Varia, EasyUC, §5.1–5.5, wykłady Canettiego w MIT, definicja i kompozycja. Materiał EasyUC jest dostępny na licencji CC BY. Rysunki i polskie objaśnienia są autorskim opracowaniem dydaktycznym. Wynik mechanicznej weryfikacji cytujemy za publikacją. Zamieszczone tutaj interakcje ilustrują stany i rachunek, nie zastępują proof assistanta.
- CC BY
- Creative Commons Attribution. Licencja Creative Commons z warunkiem uznania autorstwa.