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.

W3. Tajność doskonała, OTP i szyfry strumieniowe

OTP
one-time pad. Szyfr z jednorazowym, losowym kluczem długości wiadomości.

Pierwszy pełny schemat: OTP

Cel: ukryć jedną wiadomość o ustalonej długości przed obserwatorem szyfrogramu. Zasób: nadawca i odbiorca mają już ten sam tajny, jednostajny klucz. Sam schemat nie dostarcza sposobu bezpiecznego przekazania tego klucza.

Szyfr z kluczem jednorazowym: algorytmy i przepływ

Π=(Setup,KeyGen,Enc,Dec)\Pi=(\mathsf{Setup},\mathsf{KeyGen},\mathsf{Enc},\mathsf{Dec})
Setup(1λ)\mathsf{Setup}(1^\lambda)⟶pp=ℓ\longrightarrow pp=\ell
M={0,1}ℓ\mathcal M=\{0,1\}^\ell
KeyGen(pp)\mathsf{KeyGen}(pp)⟶k\longrightarrow k
k←${0,1}ℓk\overset{\$}{\leftarrow}\{0,1\}^\ell

Ten sam tajny klucz dostarczono już obu stronom.

Enc(pp,k,m)\mathsf{Enc}(pp,k,m)⟶c\longrightarrow c
c=m⊕kc=m\oplus k

Sprawdź długość. Nie używaj k dla drugiej wiadomości.

Dec(pp,k,c)\mathsf{Dec}(pp,k,c)⟶m\longrightarrow m
m=c⊕km=c\oplus k

Odrzuć błędną długość szyfrogramu.

Szyfr z kluczem jednorazowym: czynności i komunikatyNadawcaOdbiorcaEncPrzekazywany jest tylko szyfrogramDec

Szyfr z kluczem jednorazowym

Nadawca: pp,k,mpp,k,m

Odbiorca: pp,kpp,k

  1. Nadawca, Enc: c=m⊕kc=m\oplus k
  2. Nadawca → Odbiorca: cc Przekazywany jest tylko szyfrogram
  3. Odbiorca, Dec: m=c⊕km=c\oplus k
Klucz k nie płynie razem z c. Dostarczenie wspólnego sekretu jest założeniem, nie wynikiem OTP.

Jak działa jednorazowa maska

Setup ustala długość ℓ=ℓ(λ)\ell=\ell(\lambda). Wiadomość, klucz i szyfrogram mają po ℓ\ell bitów. KeyGen losuje klucz niezależnie od wiadomości. Nadawca wywołuje Enc z wiadomością i tym kluczem. Odbiorca uruchamia Dec z szyfrogramem i własną kopią tego samego klucza. Na strzałce między nimi znajduje się tylko szyfrogram cc.

Poprawność: (m⊕k)⊕k=m(m\oplus k)\oplus k=m. Ograniczenie: OTP nie wykrywa celowej zmiany szyfrogramu. Teraz sprawdzimy jego poufność, a następnie zobaczymy, dlaczego ponowne użycie klucza niszczy tę gwarancję.

Tajność jako równość rozkładów

Niech MM oznacza losową wiadomość, a CC odpowiadający jej szyfrogram. Małe litery m,cm,c są ich konkretnymi wartościami. W tajności doskonałej obserwacja szyfrogramu nie zmienia rozkładu wiadomości:

Pr⁡[M=m∣C=c]=Pr⁡[M=m]\Pr[M=m\mid C=c]=\Pr[M=m]

dla każdego cc o dodatnim prawdopodobieństwie. W one-time pad wiadomość i klucz mają długość ℓ\ell, klucz jest jednostajny, niezależny od wiadomości i użyty raz. Szyfrowanie to c=m⊕kc=m\oplus k. Dla ustalonych m,cm,c dokładnie jeden klucz daje ten szyfrogram. Stąd Pr⁡[C=c∣M=m]=2−ℓ\Pr[C=c\mid M=m]=2^{-\ell} niezależnie od mm. Również Pr⁡[C=c]=2−ℓ\Pr[C=c]=2^{-\ell}, bo uśredniamy tę samą wartość po wszystkich wiadomościach. Podstawiamy do wzoru Bayesa, który zamienia kierunek warunkowania:

Pr⁡[M=m∣C=c]=Pr⁡[C=c∣M=m]⋅Pr⁡[M=m]Pr⁡[C=c]=Pr⁡[M=m].\Pr[M=m\mid C=c] =\frac{\Pr[C=c\mid M=m]\cdot\Pr[M=m]}{\Pr[C=c]} =\Pr[M=m].

Przy dwóch bitach każda ustalona wiadomość może dać dowolny z czterech szyfrogramów. Dla każdego jest dokładnie jeden z czterech kluczy. To mała wersja tego samego argumentu, nie założenie o równomiernym rozkładzie wiadomości.

Jednorazowość jest częścią konstrukcji

Przy ponownym użyciu maski:

c1⊕c2=m1⊕m2.c_1\oplus c_2=m_1\oplus m_2.

Poznanie jednej wiadomości ujawnia drugą. Bez znajomości wiadomości pozostaje ujawniona relacja. Dla szyfru strumieniowego problemem jest powtórzenie pary klucz–nonce, nie samo użycie jednego klucza do poprawnie rozdzielonych strumieni.

OTP · dwie wiadomości, jedna maska

Lokalny rachunek na bajtach. Dwa wejścia szesnastkowe muszą mieć tę samą długość.

Maski szyfrujące

Gotowe do rozpoczęcia.

Szyfry strumieniowe zastępują długi losowy klucz pseudolosowym strumieniem. ChaCha20 jest przykładem takiego mechanizmu. Sam strumień nie zapewnia integralności. Zmiana bitu szyfrogramu zmienia odpowiedni bit tekstu. Praktyczny kanał potrzebuje uwierzytelniania, np. konstrukcji AEAD.

Poznaliśmy już oba składniki następnego argumentu: definicję PRG w W2 oraz niezależność szyfrogramu OTP od wiadomości. Możemy teraz wyjaśnić, jak założenie o generatorze przenosi się na bezpieczeństwo szyfrowania.

Dlaczego pojawiają się gry numerowane

Mamy już eksperyment określający sukces przeciwnika. Teraz chcemy oszacować jego prawdopodobieństwo. Bezpośredni rachunek bywa trudny, bo jednocześnie występują klucze, hasze, odpowiedzi i warunki akceptacji. Tworzymy więc kolejne wersje tego samego eksperymentu, zmieniając po jednym elemencie.

G0G_0 oznacza wersję wyjściową. G1G_1 to wersja po pierwszej zmianie, a nie nowy typ algorytmu lub nowa grupa algebraiczna. Przeciwnik próbuje osiągnąć ten sam cel. Dla każdej zmiany pytamy: czy jego widok ma ten sam rozkład, czy odróżnienie wymagałoby złamania założenia, czy też różnica zachodzi tylko po rzadkim zdarzeniu?

Jeśli w ostatniej grze szyfrogram jest zupełnie niezależny od ukrytego bitu, zgadywanie daje 1/21/2. Jeżeli umiemy ograniczyć wszystkie różnice między sąsiednimi grami, wracamy do początkowego systemu. Nie wystarczy nazwać kolejnych etapów grami. Każda strzałka wymaga uzasadnienia.

Eksperyment rzeczywistyukryty bit i szyfrogramJedna uzasadniona zmianaten sam cel przeciwnikaEksperyment uproszczonyłatwo policzyć sukces
G0, p0G_0,\ p_0
G1, p1G_1,\ p_1
G2, p2G_2,\ p_2
∣p0−p2∣≤∣p0−p1∣+∣p1−p2∣|p_0-p_2|\le |p_0-p_1|+|p_1-p_2|
Najpierw określamy program każdej gry i zdarzenie sukcesu. Dopiero potem ograniczamy różnice prawdopodobieństw. Numer gry nie jest założeniem bezpieczeństwa.

Redukcja jest algorytmem wykorzystującym atak

Przyjmujemy hipotetyczny skuteczny atak A\mathcal A na konstrukcję. Budujemy program B\mathcal B, który dostaje trudne zadanie, uruchamia A\mathcal A, przygotowuje mu widok i wykorzystuje jego odpowiedź do rozwiązania tego zadania. Jeśli przygotowany widok jest właściwy i koszt nie jest zbyt duży, skuteczność A\mathcal A przeczyłaby naszemu założeniu.

To kierunek od ataku do rozwiązania trudnego problemu. Redukcja nie musi znać sekretów uczciwej implementacji. Musi umieć zastąpić ich użycie przy generowaniu widoku. Gdy w rzekomym dowodzie do symulacji podpisu potrzebujemy nieznanego klucza z wyzwania, konstrukcja redukcji jest niekompletna.

Poniższy przykład z generatorem ma tylko dwie gry, żeby ten mechanizm był widoczny bez rozbudowanej aparatury.

Pierwszy kompletny dowód obliczeniowy

Rozważmy jednorazowe szyfrowanie c=m⊕PRG(k)c=m\oplus\mathsf{PRG}(k). W grze G0G_0 maska pochodzi z generatora. W G1G_1 zastępujemy ją niezależnym UℓU_\ell. W drugiej grze szyfrogram jest jednostajny i niezależny od bb.

Redukcja B\mathcal B otrzymuje ciąg zz, będący wyjściem generatora albo ciągiem losowym. Uruchamia A\mathcal A, odbiera parę wiadomości, losuje bb i zwraca mb⊕zm_b\oplus z. Zwraca 1 dokładnie wtedy, gdy A\mathcal A zgadnie bb. Nie zna zalążka i go nie potrzebuje. Jej różnica prawdopodobieństw wyjścia 1 jest dokładnie przewagą zgadywania:

Adv⁡Aind≤Adv⁡Bprg.\operatorname{Adv}^{\mathrm{ind}}_{\mathcal A} \le \operatorname{Adv}^{\mathrm{prg}}_{\mathcal B}.

To dowód dla jednej wiadomości. Wielokrotne użycie tej samej maski nie jest objęte twierdzeniem.

Dlaczego to nie tajność doskonała? Generator ma najwyżej 2n2^n możliwych wyjść, a ciąg losowy długości ℓ\ell ma ich 2ℓ2^\ell. Nieograniczony przeciwnik może wypisać cały obraz generatora i sprawdzać przynależność. Bezpieczeństwo obliczeniowe mówi, że takiego rozróżniania nie da się wykonać wydajnie przy przyjętym parametrze. Nie mówi, że rozkłady są identyczne.

Wiele wiadomości: redukcja do PRF

Korzystamy z rodziny FkF_k i idealnej funkcji RR z W2. Wszystkie maski mają tę samą długość co szyfrowane wiadomości.

Dla wiadomości długości ℓ\ell wybieramy losowy identyfikator rr i wysyłamy (r,m⊕Fk(r))(r,m\oplus F_k(r)). Zastępujemy FkF_k przez RR. Dopóki argumenty nie powtarzają się, każda maska jest niezależna. Przy tt losowych identyfikatorach:

Pr⁡[kolizja]≤t⋅(t−1)2n+1.\Pr[\mathrm{kolizja}]\le\frac{t\cdot(t-1)}{2^{n+1}}.

Różnicę między grami ogranicza przewaga PRF, a pozostały błąd kolizja. Konserwatywną granicą jest suma tych dwóch wielkości. Przy wymuszonej unikalności identyfikatorów kolizja znika, ale trzeba zachować unikalność także po awarii i restarcie.

Nie dowodzimy tu, że AES jest PRF. Dowodzimy bezpieczeństwa konstrukcji przy wskazanym założeniu o prymitywie. Ścieżkę PRG → hybrydy → PRF → IND-CPA stosują też materiały MIT.

Dwa narzędzia do dalszych dowodów

Hybryda jest pośrednią wersją eksperymentu. Jeśli każdy sąsiedni krok zmienia szansę sukcesu najwyżej o określoną wartość, całkowitą zmianę ograniczamy sumą tych wartości. To nierówność trójkąta, a nie nowe założenie o szyfrze. Pełny zapis podaje pogłębienie A.

Sprzężenie losowań (coupling) pozwala porównać dwa eksperymenty we wspólnym doświadczeniu. Każdy z osobna musi zachować swój prawidłowy rozkład. Przykład: jeden eksperyment losuje identyfikatory z powtórzeniami, drugi bez powtórzeń. Korzystają z tej samej propozycji losowej, dopóki jest nowa. Gdy propozycja się powtórzy, pierwszy ją zachowuje, a drugi losuje jednostajnie spośród nieużytych. Każdy ma właściwy rozkład, a historie są identyczne do pierwszego powtórzenia.

W tym wspólnym doświadczeniu różnica wyników wymaga kolizji, więc jej prawdopodobieństwo ogranicza różnicę szans sukcesu. To narzędzie analizy, nie dodatkowy interfejs przeciwnika ani wiedza symulatora. Takiego porównania użyjemy później przy FDH i UC. Metoda gier Shoupa, oryginał. Pełne wyjaśnienie po polsku z animacją i rachunkiem.

FDH
Full Domain Hash. Haszowanie o pełnej dziedzinie wyników.
UC
Universal Composability. Uniwersalna kompozycyjność, czyli formalna analiza bezpieczeństwa przy składaniu protokołów.

Pytanie kontrolne: test częstości bitów bada jedną własność rozkładu. Dlaczego nie wyklucza algorytmu odzyskującego stan generatora?

Powiązania: C1: tajność doskonała, C3: generatory i redukcje, L2: ataki na losowość.

W3a. Metoda gier: kompletny dowód krok po kroku

Cel: przejść od zdania „ten atak nie powinien działać” do twierdzenia, w którym wiadomo, od czego zależy szansa jego powodzenia. Potrzebne są eksperymenty z rozdziału o modelach, funkcja pseudolosowa z W2 i jednorazowa maska z W3. Nie potrzebujemy jeszcze grup ani krzywych eliptycznych.

Punktem odniesienia jest Victor Shoup, Sequences of Games: A Tool for Taming Complexity in Security Proofs, §1.1. Tytuł można oddać jako „Ciągi gier: narzędzie porządkowania złożonych dowodów bezpieczeństwa”. Chodzi o złożoność rozumowania, nie o pomiar czasu działania. Poniżej rozwijamy własny przykład szyfrowania z W3, z pełnym rachunkiem i obliczeniami do prześledzenia.

1. Gra nie jest pojedynczym przebiegiem

Gra jest opisem całego doświadczenia losowego. Określa losowanie klucza, interfejs przeciwnika, odpowiedzi na pytania i warunek wygranej. Jeden uruchomiony przykład jest tylko jednym możliwym wynikiem tego doświadczenia. Prawdopodobieństwo liczymy po wszystkich losowaniach, w tym po losowości przeciwnika.

Ustalmy jednego przeciwnika A\mathcal A. Numer ii oznacza wersję eksperymentu GiG_i, a SiS_i zdarzenie jego sukcesu. Zapisujemy pi=Pr⁡[Si]p_i=\Pr[S_i]. W tym rozdziale sukces zawsze oznacza b′=bb'=b, czyli odgadnięcie ukrytego bitu. Zmieniamy obsługę eksperymentu, a nie cel ani program przeciwnika. Jego następne pytania mogą jednak zmienić się po otrzymaniu innych odpowiedzi.

Challenger prowadzi grę zgodnie z jej regułami. Redukcja jest innym programem, który próbuje odtworzyć tę obsługę, korzystając z otrzymanego trudnego zadania. Autor dowodu porównuje rozkłady. Nie wolno przenosić jego wiedzy, np. znajomości obu porównywanych światów, do interfejsu redukcji lub przeciwnika.

2. Każda zmiana musi mieć osobne uzasadnienie

W terminologii Shoupa występują trzy rodzaje przejścia. Bridging step to równoważne przepisanie doświadczenia. Indistinguishability transition korzysta z nierozróżnialności. Failure-event transition ogranicza różnicę przez zdarzenie, poza którym porównanie działa identycznie. Oryginał, §1.1.

Rodzaj kroku Co rzeczywiście musimy wykazać Co wpisujemy do rachunku
Równoważne przepisanie Każdy możliwy widok ma taki sam rozkład, również po adaptacyjnych pytaniach ∣pi−pi+1∣=0\lvert p_i-p_{i+1}\rvert=0
Nierozróżnialność obliczeniowa Redukcja potrafi obsłużyć obie gry i jej przewaga równa się rozważanej różnicy Przewagę konkretnej redukcji, z jej czasem i liczbą zapytań
Zdarzenie rozbieżności W poprawnym wspólnym doświadczeniu gry dają te same wyniki poza Bad\mathrm{Bad} ∣pi−pi+1∣≤Pr⁡[Bad]\lvert p_i-p_{i+1}\rvert\le\Pr[\mathrm{Bad}]

Możliwy jest również bezpośredni argument statystyczny o odległości rozkładów. Nie wymaga on ograniczenia czasu przeciwnika. Założenie obliczeniowe jest czymś innym: dwa rozkłady mogą być różne, lecz nie pozwalać na wydajne odróżnianie.

3. Z czego składa się lemat o różnicy

Sprzężenie to wspólne losowanie dwóch eksperymentów, które zachowuje właściwy rozkład każdego z nich osobno. Nie wymaga ich niezależności. Właśnie zależność pozwala powiedzieć, że w konkretnym wspólnym losowaniu zachowują się tak samo aż do wskazanego zdarzenia.

Niech Bad\mathrm{Bad} będzie zdarzeniem w tej wspólnej przestrzeni. Zakładamy, że poza nim sukces w jednej grze zachodzi dokładnie wtedy, gdy zachodzi w drugiej. Lemat o różnicy Shoupa daje wtedy ograniczenie przez Pr⁡[Bad]\Pr[\mathrm{Bad}]. Difference Lemma, lemat 1.

Odtwórzmy rachunek, aby zrozumieć, dlaczego nie pojawia się dodatkowy czynnik 2. Rozdzielamy sukces na część wewnątrz i poza Bad\mathrm{Bad}:

pi=Pr⁡[Si∩¬Bad]+Pr⁡[Si∩Bad].p_i=\Pr[S_i\cap\neg\mathrm{Bad}]+\Pr[S_i\cap\mathrm{Bad}].

Pierwsza część jest taka sama w obu grach i znika przy odejmowaniu. Pozostaje:

∣pi−pi+1∣=∣Pr⁡[Si∩Bad]−Pr⁡[Si+1∩Bad]∣≤Pr⁡[Bad].|p_i-p_{i+1}|=|\Pr[S_i\cap\mathrm{Bad}]-\Pr[S_{i+1}\cap\mathrm{Bad}]| \le\Pr[\mathrm{Bad}].

Obie odejmowane liczby należą do przedziału od zera do Pr⁡[Bad]\Pr[\mathrm{Bad}]. Ich odległość nie przekracza długości tego przedziału. Bad nie oznacza jeszcze udanego ataku. Oznacza miejsce, w którym kończy się nasza gwarancja zgodności dwóch światów. Także po nim wyniki mogą przypadkiem pozostać równe.

Nie wystarczy napisać „zakładamy, że Bad nie wystąpi”. Warunkowanie usuwa część przebiegów i może zmienić rozkład. Nie wystarczy też nadać zmiennym w dwóch niezależnych uruchomieniach te same nazwy. Trzeba zbudować ich wspólne losowanie i sprawdzić oba rozkłady.

4. Twierdzenie, które teraz udowodnimy

Rozważamy rodzinę funkcji Fk:{0,1}n→{0,1}ℓF_k:\{0,1\}^n\to\{0,1\}^{\ell}. Klucz kk jest tajny. Wiadomość mm ma dokładnie ℓ\ell bitów, a identyfikator rr ma nn bitów. Każde szyfrowanie losuje go niezależnie i jednostajnie. Reguły są następujące:

r←${0,1}n,c=m⊕Fk(r),Enck(m)=(r,c).r\overset{\$}{\leftarrow}\{0,1\}^n,\qquad c=m\oplus F_k(r),\qquad \mathsf{Enc}_k(m)=(r,c).
Deck(r,c)=c⊕Fk(r)=m.\mathsf{Dec}_k(r,c)=c\oplus F_k(r)=m.

Powtórzenie identyfikatora jest dopuszczone przez algorytm, choć może zaszkodzić bezpieczeństwu. Identyfikator nie jest drugim tajnym kluczem. Jest przesyłany jawnie wraz z szyfrogramem. Poprawność wynika z dwukrotnego XOR tej samej maski. Nie wynika z niej poufność.

Model. Przeciwnik otrzymuje jedno wyzwanie dla wybranych m0,m1m_0,m_1 i może pytać o szyfrowanie przed nim oraz po nim. Wszystkie teksty mają długość ℓ\ell. Nie ma wyroczni deszyfrującej, odczytu klucza ani możliwości ustawiania rr. To eksperyment IND-CPA z jednym wyzwaniem. Łączna liczba szyfrowań, wraz z wyzwaniem, nie przekracza t≤2nt\le 2^n.

Twierdzenie. Dla każdego takiego przeciwnika istnieje redukcja B\mathcal B wykonująca najwyżej tt zapytań do swojej wyroczni, dla której:

∣Pr⁡[S0]−12∣⏟przewaga zgadywania≤Adv⁡Bprf⏟odroˊz˙nienie funkcji+t⋅(t−1)2n+1⏟koszt moz˙liwych powtoˊrzenˊ.\underbrace{\left|\Pr[S_0]-\frac12\right|}_{\text{przewaga zgadywania}} \le \underbrace{\operatorname{Adv}^{\mathrm{prf}}_{\mathcal B}}_{\text{odróżnienie funkcji}} +\underbrace{\frac{t\cdot(t-1)}{2^{n+1}}}_{\text{koszt możliwych powtórzeń}}.

Jest to konserwatywna granica, nie równość opisująca najlepszy atak. Teraz uzasadnimy każdy jej składnik. Pełny łańcuch pozostaje widoczny na rysunku.

Trzy strzałki, trzy różne uzasadnienia
Łańcuch czterech gierG0 do G1: redukcja do PRF. G1 do G2: pierwsza kolizja identyfikatorów. G2 do G3: równość rozkładów, koszt zero.Rzeczywista funkcja
G0: Fk(r)G_0:\ F_k(r)
r z powtórzeniamiPRFLosowa funkcja
G1: R(r)G_1:\ R(r)
r z powtórzeniamiBadBez powtórzeń
G2: R(r)G_2:\ R(r)
r bez powtórzeń0Niezależne maski
G3: z←${0,1}ℓG_3:\ z\overset{\$}{\leftarrow}\{0,1\}^\ell
r bez powtórzeń

We wszystkich grach sukces oznacza odgadnięcie tego samego rodzaju ukrytego bitu. Ostatnia gra ma szansę sukcesu 1/21/2.

5. Pierwsza strzałka: redukcja zastępuje funkcję

W G0G_0 działa rzeczywiste FkF_k. W G1G_1 używamy jednej losowej funkcji RR o tej samej dziedzinie i zbiorze wyników. Dla nowego argumentu losujemy jej wartość. Dla powtórzonego zwracamy wartość zapamiętaną. To nie jest nowa maska przy każdym pytaniu.

Redukcja B\mathcal B dostaje wyrocznię OO. Nie wie, czy jest to FkF_k dla losowego klucza, czy RR. Nie dostaje klucza, kodu wybranej funkcji ani jej całej tabeli. Otrzymuje tylko odpowiedzi na własne pytania.

Redukcja odpowiada na pytania bez znajomości klucza
Interfejs redukcji PRFPrzeciwnik pyta redukcję o szyfrowanie. Redukcja losuje identyfikator, pyta własną wyrocznię i dodaje uzyskaną maskę do wiadomości przez XOR. Klucz nie jest przekazywany redukcji.Przeciwnik Awybiera wiadomościRedukcja B
(r,m⊕O(r))(r,m\oplus O(r))
losuje r oraz bit bzwraca 1, gdy b′ = bWyrocznia O
FkalboRF_k\quad\text{albo}\quad R
m lub para(r, c)r
O(r)O(r)

Strzałki pokazują interfejsy. Przeciwnik nie ma bezpośredniego dostępu do OO. Redukcja zna bit bb, ponieważ sama przygotowuje wyzwanie.

  1. Uruchamia A\mathcal A i samodzielnie obsługuje jego pytania o szyfrowanie. Losuje rr, pyta o O(r)O(r) i oddaje (r,m⊕O(r))(r,m\oplus O(r)).
  2. Po otrzymaniu m0,m1m_0,m_1 losuje ukryty bit bb i tak samo szyfruje mbm_b. Obsługuje również dalsze pytania.
  3. Odbiera b′b' i zwraca 1 dokładnie wtedy, gdy b′=bb'=b. Potrafi to sprawdzić, bo to ona wylosowała bb.

Gdy O=FkO=F_k, widok jest dokładnie widokiem G0G_0. Gdy O=RO=R, widok jest dokładnie widokiem G1G_1. W obu przypadkach obejmuje również adaptacyjnie wybrane pytania. Dlatego, w konwencji różnicy prawdopodobieństw:

Adv⁡Bprf=∣Pr⁡[BFk=1]−Pr⁡[BR=1]∣=∣p0−p1∣.\operatorname{Adv}^{\mathrm{prf}}_{\mathcal B} =|\Pr[\mathcal B^{F_k}=1]-\Pr[\mathcal B^R=1]| =|p_0-p_1|.

Nie zgadujemy pozycji wyzwania. Redukcja zastępuje cały interfejs funkcji i obsługuje wszystkie szyfrowania. Nie ma więc dodatkowego mnożenia przewagi PRF przez tt. Jej czas to czas A\mathcal A oraz obsługa najwyżej tt szyfrowań i komunikatów. Gdy operację wyroczni liczymy jako jedno zapytanie, narzut bitowy poza nią wynosi O(t⋅(n+ℓ))O(t\cdot(n+\ell)). W rzeczywistym pomiarze trzeba doliczyć koszt wykonania samej funkcji.

6. Druga strzałka: porównujemy losowania identyfikatorów

W G1G_1 identyfikatory losujemy z powtórzeniami. W G2G_2 wybieramy je jednostajnie spośród dotąd nieużytych. To inny algorytm obsługi gry, a nie przemilczany warunek narzucony na G1G_1.

Zbudujmy sprzężenie. W obu światach wykorzystujemy te same losowe bity przeciwnika i ten sam ukryty bit. Przed pierwszą rozbieżnością wybory wiadomości są więc takie same. Niech UU oznacza zbiór identyfikatorów użytych w G2G_2, a N=2nN=2^n.

  1. Losujemy wspólną propozycję rr jednostajnie z NN możliwości. Gra G1G_1 zawsze ją przyjmuje.
  2. Jeżeli r∉Ur\notin U, gra G2G_2 również ją przyjmuje. W przeciwnym razie losuje zamiennik jednostajnie z N−∣U∣N-|U| wolnych identyfikatorów.
  3. Przed pierwszą rozbieżnością wspólny nowy identyfikator dostaje wspólną świeżą maskę. Po rozbieżności każda gra nadal przestrzega własnej tabeli i rozkładu. Pytania przeciwnika nie muszą już być jednakowe.

Dlaczego drugi świat naprawdę losuje jednostajnie bez powtórzeń? Jeśli wykorzystano jj identyfikatorów, każdy ustalony wolny identyfikator vv zostanie przyjęty bezpośrednio z prawdopodobieństwem 1/N1/N. Może też zostać zamiennikiem po trafieniu jednej z jj zajętych pozycji. Łącznie:

Pr⁡[rG2=v]=1N+jN⋅1N−j=1N−j.\Pr[r_{G_2}=v]=\frac1N+\frac jN\cdot\frac1{N-j}=\frac1{N-j}.

Zatem obie strony zachowują wymagane rozkłady. Poza zdarzeniem pierwszego powtórzenia propozycji historie i wyniki są identyczne. To jest hipoteza lematu o różnicy, a nie tylko podobieństwo rysunków.

Poniżej ii jest numerem szyfrowania, rr przyjętym identyfikatorem, mm wiadomością, zz maską, a c=m⊕zc=m\oplus z częścią szyfrogramu. Wiersze są historią szyfrowań, nie osobnymi wpisami funkcji. Jeśli w G1G_1 identyfikator wraca, odczytujemy istniejący wpis R(r)R(r).

Dwa światy i pierwsza rozbieżność
Wybrany przebieg
Sprzężone losowania i tabeleG1 zachowuje powtórzony identyfikator i jego starą maskę. G2 zastępuje zajęty identyfikator wolnym i używa nowej maski. Wybór 2, 5, 2, 7 rozdziela światy przy trzecim szyfrowaniu.Wspólna propozycja
ri∈{0,…,7}r_i\in\{0,\ldots,7\}
G₁ · zachowaj rR: wpis istnieje?tak: stara maskanie: nowa maskaG₂ · wybierz rU: już użyty?tak: zamiennikzapisz nową maskę

G1G_1 · z powtórzeniami

iirrmmzzcc
1––––
2––––
3––––
4––––

G2G_2 · bez powtórzeń

iirrmmzzcc
1––––
2––––
3––––
4––––

W trzecim szyfrowaniu propozycja 2 powtarza pierwszy identyfikator. Lewa tabela używa maski 9 ponownie. Prawa używa identyfikatora 3 i maski 10.

W demonstracji porównujemy cztery zwykłe szyfrowania wybranych wiadomości. Małe wartości to czterobitowe bloki, a identyfikatory należą do zbioru od 0 do 7. Jest to jawnie dobrany zapis możliwego przebiegu, nie losowanie bezpiecznego klucza. Tabele pokazujemy studentowi, nie przeciwnikowi. Przykład ilustruje sprzężenie i ponowne użycie maski, a nie mierzy przewagi PRF.

7. Skąd bierze się granica urodzinowa

W G1G_1 mamy niezależne propozycje r1,…,rtr_1,\ldots,r_t z NN wartości. Przy wcześniejszym zakończeniu eksperymentu możemy dolosować niewykorzystane propozycje tylko na potrzeby analizy. Nie zmieniają widoku przeciwnika i dają górną granicę dla liczby co najwyżej tt szyfrowań.

Dla ustalonej pary i<ji<j szansa ri=rjr_i=r_j wynosi 1/N1/N. Par jest t⋅(t−1)/2t\cdot(t-1)/2. Oszacowanie sumą (union bound) mówi, że prawdopodobieństwo co najmniej jednego zdarzenia nie przekracza sumy ich prawdopodobieństw. Nie wymaga niezależności tych zdarzeń. Tutaj kolizje poszczególnych par nie są rozłączne.

Pr⁡[Bad]≤∑i<jPr⁡[ri=rj]=t⋅(t−1)2⋅N.\Pr[\mathrm{Bad}] \le\sum_{i<j}\Pr[r_i=r_j] =\frac{t\cdot(t-1)}{2\cdot N}.

Dla dokładnie tt propozycji możemy również policzyć wynik bez oszacowania. Pierwsza nie powoduje kolizji. Druga unika jednej zajętej wartości. Trzecia unika dwóch, pod warunkiem że wcześniej kolizji nie było. Stąd:

Pr⁡[Bad]=1−∏j=0t−1(1−jN).\Pr[\mathrm{Bad}] =1-\prod_{j=0}^{t-1}\left(1-\frac jN\right).

Iloczyn wynika z kolejnych prawdopodobieństw warunkowych. Nie zakładamy niezależności zdarzeń „dotąd nie było kolizji”. Dla N=8N=8 i t=4t=4 mamy 1−(8⋅7⋅6⋅5)/84=151/2561-(8\cdot7\cdot6\cdot5)/8^4=151/256. Granica sumą to 6/8=3/46/8=3/4. Większa liczba jest ograniczeniem, nie błędem w dokładnym rachunku.

Dokładne prawdopodobieństwo i jego górna granica
Długość identyfikatora nn w bitach
Dokładne prawdopodobieństwo
0,58984375
Granica sumą, nie więcej niż 1
0,75000000

Dokładny ułamek: 151/256.

Liczymy zdarzenie kolizji w G1G_1. Do końcowej granicy bezpieczeństwa dochodzi jeszcze przewaga redukcji PRF, której ten kalkulator nie mierzy.

8. Ostatnia strzałka: maski stają się niezależne

W G2G_2 nigdy nie pytamy RR o ten sam identyfikator dwa razy. Wartość losowej funkcji na nowym argumencie jest jednostajna i niezależna od wcześniejszych odpowiedzi. Możemy więc usunąć tabelę i przy każdym szyfrowaniu losować nową maskę z∈{0,1}ℓz\in\{0,1\}^{\ell}. Tak otrzymujemy G3G_3. Nadal losujemy identyfikatory bez powtórzeń. Nie zmieniamy dwóch reguł naraz.

To przejście ma koszt zero. Sprawdźmy je także dla adaptacyjnego przeciwnika. Dla każdego możliwego dotychczasowego widoku następne pytanie ma tę samą regułę wyboru po obu stronach. W obu światach odpowiedź używa świeżej maski o tym samym rozkładzie. Indukcja po pytaniach daje identyczny rozkład całego widoku.

W wyzwaniu c=mb⊕zc=m_b\oplus z mamy dla każdego ustalonego mbm_b i każdego cc dokładnie jedną maskę, która daje ten wynik. Zatem cc jest jednostajne. Pozostałe szyfrowania korzystają z innych, niezależnych masek i nie ujawniają bitu. Dotyczy to również pytań po wyzwaniu, wybieranych na podstawie dotychczasowych szyfrogramów. W G3G_3 cały widok jest niezależny od bb, więc p3=1/2p_3=1/2.

9. Składamy dowód i kontrolujemy stałe

Dodajemy i odejmujemy prawdopodobieństwa gier pośrednich, a następnie korzystamy z nierówności trójkąta:

∣p0−12∣≤∣p0−p1∣+∣p1−p2∣+∣p2−p3∣≤Adv⁡Bprf+Pr⁡[Bad]+0.\left|p_0-\frac12\right| \le |p_0-p_1|+|p_1-p_2|+|p_2-p_3| \le\operatorname{Adv}^{\mathrm{prf}}_{\mathcal B}+\Pr[\mathrm{Bad}]+0.

Po wstawieniu granicy z punktu 7 dostajemy twierdzenie. Możemy użyć dokładnego iloczynu zamiast granicy sumą. Wynik wolno dodatkowo ograniczyć przez 1/21/2, ponieważ tyle maksymalnie wynosi przyjęta przewaga zgadywania.

Czynnik 2 zależy od definicji przewagi. Tutaj przewagą jest odległość szansy trafienia od 1/21/2. Jeśli inne źródło definiuje ją jako ∣2⋅Pr⁡[S0]−1∣|2\cdot\Pr[S_0]-1|, trzeba pomnożyć prawą stronę przez 2. Sama zmiana nazw nie zmienia matematyki, ale pominięcie normalizacji zmienia twierdzenie.

Liczba gier też jest parametrem. Dla hh kroków ogólny rachunek daje ∣p0−ph∣≤∑i=0h−1∣pi−pi+1∣|p_0-p_h|\le\sum_{i=0}^{h-1}|p_i-p_{i+1}|. Stała liczba zaniedbywalnych składników daje zaniedbywalną sumę. Przy rosnącym h(λ)h(\lambda) trzeba podać wspólne ograniczenie składników i wzrost liczby kroków. Wielomian razy funkcja zaniedbywalna pozostaje zaniedbywalny. Wykładnicza liczba kroków nie daje tej gwarancji.

Jeżeli zastępujemy wiele osobnych obiektów i redukcja losuje pozycję zastąpienia, strata rzędu hh może być uzasadniona. Nie przenosimy jej automatycznie do naszego przykładu z jedną wyrocznią. Przy losowaniu pozycji analizujemy różnice ze znakami i teleskopowanie, nie średnią wartości bezwzględnych, która może opisywać inny algorytm.

10. Kiedy argument przestaje działać

  • Przeciwnik ustawia identyfikator. Może wymusić powtórzenie i odzyskać maskę z szyfrowania zera. Losowa granica urodzinowa nie opisuje takiego modelu.
  • Pojawia się deszyfrowanie. Konstrukcja nie uwierzytelnia danych. Zmiana cc na c⊕Δc\oplus\Delta zmienia tekst na m⊕Δm\oplus\Delta. Twierdzenie CPA nie obejmuje modelu CCA.
  • Redukcja potrzebuje nieznanego klucza. W naszym dowodzie tego uniknęliśmy przez interfejs O(r)O(r). W innym schemacie odpowiedź „symulujemy” wymaga osobnego algorytmu.
  • Przerwanie znika z rachunku. Jeśli symulator po kolizji przerywa, trzeba zdefiniować wynik takiego przebiegu i ograniczyć jego wpływ. Nie wolno po prostu analizować tylko udanych symulacji.
  • Bad liczymy w wygodniejszej, ale innej grze. Trzeba uzasadnić przeniesienie oszacowania, np. osobną redukcją lub dodatkowym sprzężeniem. W naszym przykładzie liczymy kolizje niezależnych propozycji w G1G_1.
  • Pomiar zastępuje kwantyfikator. Test kilku przeciwników nie daje granicy dla każdego dozwolonego algorytmu. Numeryczny kalkulator sprawdza rachunek prawdopodobieństwa, nie założenie PRF.

11. Jak używać tej metody w dalszej części kursu

Miejsce w kursie Co wraca z tego rozdziału
ElGamal i Cramer–Shoup Redukcja dostaje instancję trudnego problemu i podstawia ją w widok przeciwnika
RSA-FDH Jedna spójna tabela, równość rozkładów odpowiedzi oraz jawne rozliczenie zgadywania i przerwania
Encrypt-then-MAC Zdarzenie nowej akceptacji pozwala zastąpić część obsługi deszyfrowania
Rewinding i forking Gry organizują analizę, ale samo cofanie i ekstrakcja wymagają własnego argumentu
Dowody AKE Kolejne zmiany muszą zachować reguły sesji i dopuszczalne ujawnienia
Uniwersalna kompozycyjność Samo porównanie dwóch światów nie wystarcza bez właściwych interfejsów i kwantyfikatorów
RSA-FDH
Rivest–Shamir–Adleman with Full Domain Hash. Podpis RSA z haszowaniem do pełnej dziedziny wyników.

Ćwiczenie z rozwiązaniem. Dla trzech szyfrowań z czterech identyfikatorów policz kolizję i granicę sumą. Czy ich równość jest wymagana? Następnie wskaż koszt każdej z trzech strzałek naszego dowodu.

Rozwiązanie i kontrola rozumowania

Brak kolizji ma prawdopodobieństwo (4⋅3⋅2)/43=3/8(4\cdot3\cdot2)/4^3=3/8. Kolizja ma więc prawdopodobieństwo 5/85/8, a granica sumą wynosi 3/43/4. Nie muszą być równe, bo przy trzech jednakowych identyfikatorach zliczamy kilka kolidujących par. Pierwsza strzałka kosztuje przewagę redukcji PRF, druga najwyżej 5/85/8, a trzecia zero. Dla tak małych parametrów nawet ta dokładna granica kolizji nie daje nietrywialnego ograniczenia przewagi zgadywania poniżej 1/21/2. Jest to informacja o słabości tego oszacowania dla wybranych parametrów, nie pomiar najlepszego ataku.

Dalszy rachunek: C3, redukcje i suma strat oraz L2, ponowne użycie losowości. W źródle: Shoup, pełny tekst. Dodatkowe tło do eksperymentów i szyfrowania z funkcją pseudolosową: Boneh–Shoup, A Graduate Course in Applied Cryptography, rozdziały 2, 4 i 5.