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ół 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 | Steruje dopuszczoną częścią sieci i przejętymi stronami. | Nie odczytuje pamięci uczciwego urządzenia bez uprawnienia w modelu. |
| Środowisko | 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ść i symulator | wykonuje specyfikację. odtwarza dla otoczenia dopuszczone skutki działania przeciwnika. | Symulator nie dostaje automatycznie tajnych wejść . 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.
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 oznacza ciąg 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 i znaczą „dla każdego” oraz „istnieje”. Kolejność tych słów w definicji jest istotna.
Parametr określa poziom bezpieczeństwa, a oznacza dodatkową informację środowiska. Symbol oznacza bit zwrócony przez środowisko po całej interakcji. Strony idealne tylko przekazują wejścia i wyjścia między środowiskiem a . Dla obliczeniowego UC wymagamy:
PPT oznacza probabilistyczny czas wielomianowy. Granica obowiązuje dla dopuszczonych wejść pomocniczych . Funkcja zaniedbywalna maleje szybciej niż odwrotność dowolnego wielomianu.
- Wybierz dowolnego rzeczywistego przeciwnika. Nie analizujemy tylko jednej przygotowanej strategii.
- Zbuduj dla niego jeden symulator. Ten symulator ma działać wobec wszystkich dopuszczonych środowisk, nie być dopasowany do ukrytej wiadomości wybranego środowiska.
- Porównaj całe interakcje. Nie wystarczy sprawdzić, że pojedynczy szyfrogram wygląda losowo.
- 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: jednoznacznie wskazuje rozmowę oraz role Alicji i Boba. Podusługi mają osobne identyfikatory, np. i .
- Wiadomość: jeden element publicznie ustalonej grupy . Grupa ma pierwszy rząd , generator i zapis multiplikatywny. Wszystkie wiadomości mają ten sam publiczny format.
- Kanał : 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ść ma przekazać jedną tajną wiadomość:
- Na poprawne wejście od Alicji zapisuje .
- Wysyła symulatorowi wyłącznie . Nie wysyła . Format jest stały. Dla wiadomości o zmiennej długości należałoby dopisać jawny wyciek długości.
- Po poprawnym poleceniu od symulatora przekazuje Bobowi i oznacza sesję jako zakończoną.
- 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 uzgadnia jeden klucz dla określonej sesji i pary stron. Jej harmonogram jest istotny:
- Po rozpoczęciu przez Alicję ogłasza przeciwnikowi rozpoczęcie sesji, bez klucza.
- Po pierwszej zgodzie sieci losuje i przekazuje go prywatnie Bobowi.
- Bob zgłasza gotowość do drugiej fazy. Usługa ogłasza tę fazę przeciwnikowi.
- Po drugiej zgodzie przekazuje ten sam 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ół używa podusług i . Alicja czeka na swój klucz, oblicza i wysyła przez kanał uwierzytelniony. Bob po odebraniu oblicza:
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 .
Krok 4. Skonstruuj symulator bez wiadomości
Symulator uruchamia wewnątrz kopię danego . Przekazuje jej komunikację ze środowiskiem bez zmiany. Gdy zgłasza oczekującą sesję:
- Odtwarza powiadomienie pierwszej fazy usługi kluczowej.
- Czeka na zgodę , a następnie odtwarza powiadomienie drugiej fazy.
- Po drugiej zgodzie losuje sam szyfrogram . Nie potrzebuje ani , ani klucza.
- Pokazuje uwierzytelnioną przesyłkę z i właściwymi metadanymi.
- Gdy pozwala ją dostarczyć, wysyła polecenie dostarczenia do .
- Wiadomość Bobowi przekazuje sama . Symulator nie musi jej poznać ani odszyfrować .
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.
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. |
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ść . Dla każdego możliwego szyfrogramu istnieje dokładnie jeden klucz, który go tworzy:
Mapa jest bijekcją grupy. Dlatego jest jednostajny także wtedy, gdy środowisko zna . Taki sam rozkład ma 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 . | Ta sama wiadomość przechodzi do wewnętrznej kopii . |
| Pojawia się szyfrogram | Jest jednostajny na . | Jest losowany jednostajnie na . |
| Sieć dostarcza przesyłkę | Bob wylicza i zwraca je raz. | zwraca przechowane 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 wymienia usługi idealne, do których protokół 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ół doskonale realizuje . 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”.