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.

Pogłębienie D. UC: bezpieczeństwo wewnątrz większego systemu

W dowodzie niepodrabialności pytaliśmy, czy przeciwnik potrafi wytworzyć nowy podpis. Teraz pytanie jest szersze: czy gotowy protokół można wstawić do większego systemu tak, aby otoczenie nie uzyskało możliwości, których nie dopuszcza specyfikacja? Otoczenie może prowadzić inne rozmowy, wybierać następne wejścia na podstawie wcześniejszych wyników i współpracować z przeciwnikiem.

Odpowiedź porządkuje Universal Composability (UC), czyli framework uniwersalnej kompozycyjności Rana Canettiego. Najpierw opisujemy idealną usługę. Potem pokazujemy, że rzeczywisty protokół można nią zastąpić bez zauważalnej zmiany zachowania całego otoczenia. „Idealna” nie znaczy „zapewniająca wszystko”. Usługa może jawnie ujawniać długość wiadomości i pozwalać przeciwnikowi opóźniać jej dostarczenie.

Podstawą tej ścieżki są definicja i twierdzenie Canettiego oraz Canetti, Stoughton, Varia, EasyUC, §5. W drugim źródle udowodniono w EasyCrypt bezpieczeństwo jednorazowej komunikacji z kluczem idealnym, bezpieczeństwo wymiany Diffiego–Hellmana i ich złożenia. Poniżej rozwijamy ten przykład we własnym zapisie dydaktycznym. Nie przepisujemy składni modułów EasyCrypt.

Cztery role, których nie należy utożsamiać

Obiekt Co robi Czego nie wolno mu dopisać
Protokół π\pi i jego uczestnicy Odbierają wejścia, obliczają i wysyłają komunikaty. Nie mają dostępu do idealnej usługi, jeżeli nie jest ona założonym zasobem.
Przeciwnik A\mathcal A Steruje dopuszczoną częścią sieci i przejętymi stronami. Nie odczytuje pamięci uczciwego urządzenia bez uprawnienia w modelu.
Środowisko Z\mathcal Z Reprezentuje resztę systemu. Podaje wejścia, odbiera wyjścia, rozmawia z przeciwnikiem i na końcu zwraca bit. Nie czyta dowolnej pamięci protokołu. Korzysta z określonych interfejsów.
Funkcjonalność F\mathcal F i symulator S\mathcal S F\mathcal F wykonuje specyfikację. S\mathcal S odtwarza dla otoczenia dopuszczone skutki działania przeciwnika. Symulator nie dostaje automatycznie tajnych wejść F\mathcal F. Nie może dowolnie zmieniać jej wyniku.

Środowisko nie jest kolejnym użytkownikiem protokołu. Jest zewnętrznym obserwatorem i sterownikiem eksperymentu. Może znać wiadomość, którą samo podało Alicji. To nie znaczy, że wiadomość została ujawniona symulatorowi. Symulator ma odtworzyć widok także wtedy, gdy środowisko zachowuje swoje wejście dla siebie.

Ta sama reszta systemu, dwie realizacje usługi
Świat rzeczywistyŚrodowisko
Z\mathcal Z
Alicja i Bob
π\pi
Przeciwnik
A\mathcal A
MM
Sieć: jawne przesyłki i zgodyŚwiat idealnyŚrodowisko
Z\mathcal Z
Idealna usługa
FSMT\mathcal F_{\mathrm{SMT}}
Symulator
S[A]\mathcal S[\mathcal A]
MM
F ujawnia S wyłącznie metadane

Dwa rysunki przedstawiają alternatywne eksperymenty. Środowisko rozmawia z przeciwnikiem lub symulatorem przez cały czas. Prawy rysunek dotyczy funkcjonalności tajnej komunikacji z tego przykładu. Inne funkcjonalności mogą ujawniać inne dane.

Jedno zdanie zapisane kwantyfikatorami

Zapis 1λ1^\lambda oznacza ciąg λ\lambda jedynek, czyli podanie parametru bezpieczeństwa w zapisie unarnym. Nie jest potęgą liczby jeden. PPT oznacza algorytmy probabilistyczne działające w czasie wielomianowym. Symbole ∀\forall i ∃\exists znaczą „dla każdego” oraz „istnieje”. Kolejność tych słów w definicji jest istotna.

Parametr λ\lambda określa poziom bezpieczeństwa, a zz oznacza dodatkową informację środowiska. Symbol EXEC⁡\operatorname{EXEC} oznacza bit zwrócony przez środowisko po całej interakcji. Strony idealne tylko przekazują wejścia i wyjścia między środowiskiem a F\mathcal F. Dla obliczeniowego UC wymagamy:

∀ A∈PPT∃ S∈PPT∀ Z∈PPT:∣Pr⁡[EXEC⁡π,A,Z(1λ,z)=1]−Pr⁡[EXEC⁡F,S,Z(1λ,z)=1]∣≤negl⁡(λ).\forall\,\mathcal A\in\mathrm{PPT}\quad \exists\,\mathcal S\in\mathrm{PPT}\quad \forall\,\mathcal Z\in\mathrm{PPT}: \left| \Pr[\operatorname{EXEC}_{\pi,\mathcal A,\mathcal Z}(1^\lambda,z)=1] - \Pr[\operatorname{EXEC}_{\mathcal F,\mathcal S,\mathcal Z}(1^\lambda,z)=1] \right| \leq \operatorname{negl}(\lambda).

PPT oznacza probabilistyczny czas wielomianowy. Granica obowiązuje dla dopuszczonych wejść pomocniczych zz. Funkcja zaniedbywalna maleje szybciej niż odwrotność dowolnego wielomianu.

  1. Wybierz dowolnego rzeczywistego przeciwnika. Nie analizujemy tylko jednej przygotowanej strategii.
  2. Zbuduj dla niego jeden symulator. Ten symulator ma działać wobec wszystkich dopuszczonych środowisk, nie być dopasowany do ukrytej wiadomości wybranego środowiska.
  3. Porównaj całe interakcje. Nie wystarczy sprawdzić, że pojedynczy szyfrogram wygląda losowo.
  4. Uwzględnij kolejność i brak odpowiedzi. Jeżeli sieć może zatrzymać komunikat w świecie rzeczywistym, idealny świat musi pozwalać odtworzyć to zachowanie.

Nie wymagamy identycznych wartości w dwóch niezależnie uruchomionych eksperymentach. Porównujemy rozkłady obserwacji. W dowodzie doskonałym są one równe. W dowodzie obliczeniowym skuteczny test ich rozróżnienia prowadzi do złamania określonego założenia.

Umowa modelu dla dwóch przykładów

Wybieramy celowo mały, kompletny przypadek. Alicja i Bob są uczciwi i nie są przejmowani. Przeciwnik sieciowy jest dowolny, może komunikować się ze środowiskiem, obserwować jawne przesyłki i opóźniać je bez ograniczenia. Nie może zmienić treści przesyłki dostarczanej przez założony kanał uwierzytelniony.

  • Sesja: sid\mathit{sid} jednoznacznie wskazuje rozmowę oraz role Alicji i Boba. Podusługi mają osobne identyfikatory, np. (sid,key)(\mathit{sid},\text{key}) i (sid,data)(\mathit{sid},\text{data}).
  • Wiadomość: jeden element MM publicznie ustalonej grupy GG. Grupa ma pierwszy rząd qq, generator gg i zapis multiplikatywny. Wszystkie wiadomości mają ten sam publiczny format.
  • Kanał Fauth\mathcal F_{\mathrm{auth}}: po wysłaniu zapisuje nadawcę, odbiorcę i treść. Ujawnia je przeciwnikowi. Na zgodę na dostarczenie przekazuje dokładnie zapisaną treść, najwyżej raz. Może czekać bez końca.
  • Granica dostępu: środowisko nie może wywoływać prywatnych portów podusług, podszywać się pod ich wyjścia ani czytać ich pamięci. Przejęcia urządzeń nie są ukrytym dodatkowym uprawnieniem.

Jest to profil odpowiadający przykładowi komunikacji z EasyUC. Nie jest to dowód pełnego AKE z kompromitacją kluczy ani dowód bezpieczeństwa surowego DH w Internecie. Uwierzytelnienie jest tutaj zasobem, nie wnioskiem z równania Diffiego–Hellmana.

UC 1. Jednorazowe szyfrowanie z idealnym kluczem

Zaczynamy od pytania: jeśli Alicja i Bob otrzymują naprawdę tajny, jednostajny klucz, czy potrafimy już całkowicie opisać symulator komunikacji? Tak. Ten pierwszy dowód nie potrzebuje założenia o trudności obliczeń.

Krok 1. Opisz usługę, a nie jej implementację

Funkcjonalność FSMT\mathcal F_{\mathrm{SMT}} ma przekazać jedną tajną wiadomość:

  1. Na poprawne wejście (send,sid,A,B,M)(\mathsf{send},\mathit{sid},A,B,M) od Alicji zapisuje MM.
  2. Wysyła symulatorowi wyłącznie (pending,sid,A,B)(\mathsf{pending},\mathit{sid},A,B). Nie wysyła MM. Format jest stały. Dla wiadomości o zmiennej długości należałoby dopisać jawny wyciek długości.
  3. Po poprawnym poleceniu (deliver,sid)(\mathsf{deliver},\mathit{sid}) od symulatora przekazuje Bobowi (sid,A,M)(\mathit{sid},A,M) i oznacza sesję jako zakończoną.
  4. Powtórzenia, zły identyfikator i nieprawidłowa kolejność nie powodują kolejnego wyjścia. Bez polecenia dostarczenia nie ma wyjścia Boba.

Ta specyfikacja gwarantuje poufność i autentyczność dostarczonej wiadomości, ale nie gwarantuje dostarczenia. Odmowa usługi jest dopuszczonym zachowaniem sieci.

Krok 2. Nazwij zasób kluczowy

Idealna usługa FKE\mathcal F_{\mathrm{KE}} uzgadnia jeden klucz K←$GK\overset{\$}{\leftarrow}G dla określonej sesji i pary stron. Jej harmonogram jest istotny:

  1. Po rozpoczęciu przez Alicję ogłasza przeciwnikowi rozpoczęcie sesji, bez klucza.
  2. Po pierwszej zgodzie sieci losuje KK i przekazuje go prywatnie Bobowi.
  3. Bob zgłasza gotowość do drugiej fazy. Usługa ogłasza tę fazę przeciwnikowi.
  4. Po drugiej zgodzie przekazuje ten sam KK prywatnie Alicji.

To kolejność zgodna z późniejszym dwukomunikatowym DH. Wewnątrz protokołu szyfrowania Bob automatycznie zgłasza gotowość po odebraniu klucza. Żadna ze stron nie eksportuje klucza do aplikacji. Ta granica jest potrzebna: poufność OTP znika, jeżeli aplikacja otrzyma maskę wraz z szyfrogramem.

Krok 3. Wykonaj protokół rzeczywisty

Protokół ρ\rho używa podusług FKE\mathcal F_{\mathrm{KE}} i Fauth\mathcal F_{\mathrm{auth}}. Alicja czeka na swój klucz, oblicza C=M⋅KC=M\cdot K i wysyła CC przez kanał uwierzytelniony. Bob po odebraniu oblicza:

C⋅K−1=(M⋅K)⋅K−1=M.C\cdot K^{-1}=(M\cdot K)\cdot K^{-1}=M.

Jest to OTP w grupie. Działanie grupowe zastępuje XOR. Nie należy zastępować go przez XOR tekstowego kodowania dowolnego punktu DH i ogłaszać tajności doskonałej. Dla tekstów można wprowadzić jawne odwracalne kodowanie do grupy. W tym przykładzie wiadomości od razu są elementami GG.

Krok 4. Skonstruuj symulator bez wiadomości

Symulator SOTP\mathcal S_{\mathrm{OTP}} uruchamia wewnątrz kopię danego A\mathcal A. Przekazuje jej komunikację ze środowiskiem bez zmiany. Gdy FSMT\mathcal F_{\mathrm{SMT}} zgłasza oczekującą sesję:

  1. Odtwarza powiadomienie pierwszej fazy usługi kluczowej.
  2. Czeka na zgodę A\mathcal A, a następnie odtwarza powiadomienie drugiej fazy.
  3. Po drugiej zgodzie losuje sam szyfrogram C^←$G\widehat C\overset{\$}{\leftarrow}G. Nie potrzebuje ani MM, ani klucza.
  4. Pokazuje A\mathcal A uwierzytelnioną przesyłkę z C^\widehat C i właściwymi metadanymi.
  5. Gdy A\mathcal A pozwala ją dostarczyć, wysyła polecenie dostarczenia do FSMT\mathcal F_{\mathrm{SMT}}.
  6. Wiadomość Bobowi przekazuje sama FSMT\mathcal F_{\mathrm{SMT}}. Symulator nie musi jej poznać ani odszyfrować C^\widehat C.

Najważniejszy moment: symulator odtwarza to, co widać w sieci. Nie odtwarza tajnej pamięci uczciwych urządzeń. Idealna funkcjonalność odpowiada za poprawne wyjście.

OTP · rzeczywista komunikacja i jej symulacja

Mała grupa dydaktyczna G=⟨2⟩⊂Z23∗, q=11G=\langle2\rangle\subset\mathbb Z_{23}^*,\ q=11. 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.

M=gvmod23M=g^v\bmod23

Sieć
Świat rzeczywistyŚrodowisko
Z\mathcal Z
Alicja i Bob
π\pi
Przeciwnik
A\mathcal A
MM
Sieć: jawne przesyłki i zgodyŚwiat idealnyŚrodowisko
Z\mathcal Z
Idealna usługa
FSMT\mathcal F_{\mathrm{SMT}}
Symulator
S[A]\mathcal S[\mathcal A]
MM
F ujawnia S wyłącznie metadane

Oba światy są gotowe. Historia będzie zachowywana krok po kroku.

Ta sama funkcjonalność, niezależne losowania sieci
KrokŚwiat rzeczywistyŚwiat idealny
1. WejścieOczekuje.Oczekuje.
2. Pierwsza fazaOczekuje.Oczekuje.
3. Klucz BobaOczekuje.Oczekuje.
4. Klucz AlicjiOczekuje.Oczekuje.
5. Widoczna przesyłkaOczekuje.Oczekuje.
6. Wyjście BobaOczekuje.Oczekuje.
Równość rozkładów

Szyfrogramy nie muszą mieć tej samej wartości. Dla ustalonego M każde C ma dokładnie jeden pasujący klucz w G.

Wyjścia Boba: 0 w każdym świecie.

Krok 5. Udowodnij równość rozkładów

Ustal dowolną wiadomość m∈Gm\in G. Dla każdego możliwego szyfrogramu c∈Gc\in G istnieje dokładnie jeden klucz, który go tworzy:

c=m⋅k⟺k=m−1⋅c,Pr⁡[C=c∣M=m]=1q.c=m\cdot k \quad\Longleftrightarrow\quad k=m^{-1}\cdot c, \qquad \Pr[C=c\mid M=m]=\frac{1}{q}.

Mapa k↦m⋅kk\mapsto m\cdot k jest bijekcją grupy. Dlatego CC jest jednostajny także wtedy, gdy środowisko zna mm. Taki sam rozkład ma C^\widehat C losowany przez symulator.

To dopiero część dowodu. Niezmiennik interakcji mówi dodatkowo, że po każdym kroku oba światy mają ten sam rozkład dotychczasowej publicznej historii, tę samą fazę oczekiwania i tę samą liczbę wyjść Boba.

Przypadek następnej akcji Świat rzeczywisty Świat idealny
Sieć jeszcze nie udzieliła zgody Protokół czeka. Symulator czeka.
Rozmowa środowiska z przeciwnikiem Wiadomość przechodzi do A\mathcal A. Ta sama wiadomość przechodzi do wewnętrznej kopii A\mathcal A.
Pojawia się szyfrogram Jest jednostajny na GG. Jest losowany jednostajnie na GG.
Sieć dostarcza przesyłkę Bob wylicza MM i zwraca je raz. FSMT\mathcal F_{\mathrm{SMT}} zwraca przechowane MM raz.
Nieprawidłowa lub powtórzona akcja Stan nie daje nowego wyjścia. Symulator i funkcjonalność nie dają nowego wyjścia.

Indukcja po aktywacjach zachowuje ten niezmiennik. Można sprzęgnąć publiczne losowania tak, aby historie były identyczne. To narzędzie dowodowe, a nie dodatkowy kanał wiedzy symulatora. Nie musimy zakładać, że przeciwnik w końcu dostarczy przesyłkę.

Krok 6. Zapisz dokładny wniosek

Górne oznaczenie ρFKE,Fauth\rho^{\mathcal F_{\mathrm{KE}},\mathcal F_{\mathrm{auth}}} wymienia usługi idealne, do których protokół ρ\rho ma dostęp. To nie potęga. Jawnie wskazuje, że twierdzenie zakłada idealne dostarczenie klucza i uwierzytelnianie, zamiast dowodzić ich od podstaw w tym samym kroku.

W powyższym modelu, przy świeżym kluczu dla jednej wiadomości, protokół ρFKE,Fauth\rho^{\mathcal F_{\mathrm{KE}},\mathcal F_{\mathrm{auth}}} doskonale realizuje FSMT\mathcal F_{\mathrm{SMT}}. Błąd rozróżniania wynosi zero. Ten wynik nie obejmuje przejęcia urządzenia, powtórnego użycia klucza ani sieci bez uwierzytelnienia. W EasyUC odpowiada mu równość eksperymentów w §5.5, lemat nazwany w kodzie „smc_security2”.