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.

W12. Obliczenia wielostronne i OT

OT
Oblivious Transfer. Transfer utajniony. Odbiorca poznaje wybraną wartość, a nadawca nie poznaje jego wyboru.

Interfejs jest teraz interaktywny. Dla funkcji ff dwie strony wykonują algorytmy P1(pp,x)\mathsf P_1(pp,x) i P2(pp,y)\mathsf P_2(pp,y), a nie jedno wspólne wywołanie z jawnymi x,yx,y w tym samym urządzeniu. Schemat określa przygotowanie parametrów, lokalne stany, komunikaty i to, która strona otrzymuje wynik. Nie dopisujemy tu Sign lub Dec, jeśli nie należą do konkretnej realizacji. Dopiero wewnątrz protokołu mogą zostać użyte podpisy, szyfrowanie lub OT.

Alicja ma xx, Bob yy, a wyznaczony odbiorca poznaje f(x,y)f(x,y). Prywatność porównuje widok rzeczywisty z możliwym do zasymulowania na podstawie własnego wejścia i dozwolonego wyniku. Wynik sam może dużo ujawniać. Dla jednoelementowego zbioru liczność przecięcia ujawnia bit przynależności.

OT: jedno z dwóch

Najpierw model. Strona półuczciwa wykonuje polecenia protokołu, ale analizuje cały zapamiętany widok. Strona złośliwa może też zmienić komunikaty lub przerwać wykonanie. Poniższy rachunek wyjaśnia poprawność i intuicję prywatności przy uczciwym wykonaniu. Nie stanowi samodzielnego dowodu dla złośliwych stron. OT (oblivious transfer) ogranicza informację uzyskaną przez odbiorcę, a jednocześnie ukrywa jego wybór przed nadawcą.

Nadawca ma m0,m1m_0,m_1, odbiorca wybiera bb. Odbiorca poznaje mbm_b, nie drugą wiadomość. Nadawca nie poznaje bb.

OT: trzy przepływy w rachunku DH: algorytmy i przepływ

To dydaktyczny przepływ OT oparty na rachunku Diffiego–Hellmana. pp obejmuje grupę, KDF, szyfrowanie symetryczne i kontekst sesji. Nie jest samodzielną specyfikacją wariantu odpornego na złośliwe strony. KDF_i(Z) poniżej skraca wyprowadzenie z kodowania Z, identyfikatora sesji i indeksu i.

Π=(Setup,Start,Choose,Send,Receive)\Pi=(\mathsf{Setup},\mathsf{Start},\mathsf{Choose},\mathsf{Send},\mathsf{Receive})
Setup(1λ)\mathsf{Setup}(1^\lambda)⟶pp\longrightarrow pp
pp=(G,q,g)pp=(G,q,g)
∣G∣=q,G=⟨g⟩|G|=q,\quad G=\langle g\rangle

Rząd q jest liczbą pierwszą. Ustal kodowania i działania grupy. Dodatkowe funkcje wskazano przy konstrukcji.

Start(pp)\mathsf{Start}(pp)⟶(A,a)\longrightarrow (A,a)
a←$Zq∗,A=gaa\overset{\$}{\leftarrow}\mathbb Z_q^*,\quad A=g^a
Choose(pp,A,b)\mathsf{Choose}(pp,A,b)⟶(B,x)\longrightarrow (B,x)
x←$Zq,B=gx⋅Abx\overset{\$}{\leftarrow}\mathbb Z_q,\quad B=g^x\cdot A^b

b jest bitem.

Send(pp,a,B,m0,m1)\mathsf{Send}(pp,a,B,m_0,m_1)⟶(C0,C1)\longrightarrow (C_0,C_1)
Z0=Ba,Z1=(B/A)aZ_0=B^a,\quad Z_1=(B/A)^a
ki=KDFi(Zi)k_i=\mathsf{KDF}_i(Z_i)
Ci←Encsym(ki,mi)C_i\leftarrow\mathsf{Enc}_{\mathrm{sym}}(k_i,m_i)

Dla i=0,1. Szyfrowanie musi mieć uzgodniony profil.

Receive(pp,A,x,b,C0,C1)\mathsf{Receive}(pp,A,x,b,C_0,C_1)⟶mb\longrightarrow m_b
Z=Ax,k=KDFb(Z)Z=A^x,\quad k=\mathsf{KDF}_b(Z)
mb=Decsym(k,Cb)m_b=\mathsf{Dec}_{\mathrm{sym}}(k,C_b)
OT: trzy przepływy w rachunku DH: czynności i komunikatyNadawcaOdbiorcaStartPierwszy wkładChooseWybór b pozostaje prywatnySendDwa szyfrogramyReceive

OT: trzy przepływy w rachunku DH

  1. Nadawca, Start: a←$Zq∗,A=gaa\overset{\$}{\leftarrow}\mathbb Z_q^*,\quad A=g^a
  2. Nadawca → Odbiorca: AA Pierwszy wkład
  3. Odbiorca, Choose: x←$Zqx\overset{\$}{\leftarrow}\mathbb Z_q B=gx⋅AbB=g^x\cdot A^b
  4. Odbiorca → Nadawca: BB Wybór b pozostaje prywatny
  5. Nadawca, Send: Z0=Ba,Z1=(B/A)aZ_0=B^a,\quad Z_1=(B/A)^a Ci=Encsym(KDFi(Zi),mi)C_i=\mathsf{Enc}_{\mathrm{sym}}(\mathsf{KDF}_i(Z_i),m_i)
  6. Nadawca → Odbiorca: (C0,C1)(C_0,C_1) Dwa szyfrogramy
  7. Odbiorca, Receive: Z=AxZ=A^x mb=Decsym(KDFb(Z),Cb)m_b=\mathsf{Dec}_{\mathrm{sym}}(\mathsf{KDF}_b(Z),C_b)
Nadawca tworzy dwie maski. Odbiorca odtwarza maskę odpowiadającą własnemu wyborowi. Sama poprawność rachunku nie dowodzi prywatności w każdym modelu.

Nadawca losuje swój tajny wykładnik aa i wysyła A=gaA=g^a. Odbiorca losuje własny tajny wykładnik xx i odsyła element BB zależny od wyboru bb. Nadawca wyznacza dwa elementy Z0,Z1Z_0,Z_1, a odbiorca tylko ZZ odpowiadający wybranemu indeksowi. Dydaktyczny przepływ DH zapisujemy następująco:

A=ga,B=gx⋅Ab,Z0=Ba,Z1=(B/A)a,Z=Ax.A=g^a,\quad B=g^x\cdot A^b,\quad Z_0=B^a,\quad Z_1=(B/A)^a,\quad Z=A^x.

Dla b=0b=0 odbiorca uzyskuje Z0Z_0, dla b=1b=1 otrzymuje Z1Z_1. KDF wiąże sesję i indeks, po czym wyznacza klucze szyfrowania. Jednostajne xx daje ten sam rozkład BB dla obu wyborów. Ochrona nieotrzymanej wiadomości wymaga argumentu obliczeniowego. Model złośliwy i walidacja punktów nie wynikają z samej równości.

Rozpiszmy role. Nadawca losuje sekret aa i wysyła AA. Odbiorca losuje sekret xx, wybiera bit bb i odsyła BB. Nadawca oblicza oba ZiZ_i, choć nie zna bb. Odbiorca oblicza ZZ i zna tylko klucz odpowiadający swojemu wyborowi. Obie strony stosują tę samą funkcję wyprowadzania klucza do kodowania elementu grupy, identyfikatora sesji i indeksu ii. Nadawca szyfruje osobno m0,m1m_0,m_1 pod tak otrzymanymi kluczami i wysyła oba szyfrogramy. Odbiorca odszyfrowuje wybrany szyfrogram kluczem wyprowadzonym z ZZ oraz bb.

Widać zatem trzy etapy komunikacji: AA do odbiorcy, BB do nadawcy, dwa szyfrogramy do odbiorcy. Równość Z=ZbZ=Z_b zapewnia poprawność. Analiza prywatności wymaga jeszcze odpowiednich założeń o grupie, KDF i szyfrowaniu. Konkretne reguły oraz dowód podaje cytowana praca Chou–Orlandiego.

W garbled circuit OT dostarcza jedną etykietę wejściowego przewodu. Bramki przekształcają etykiety w następne. Wydanie obu etykiet zmienia informację dostępną odbiorcy.

Od OT do obwodu

Jak czytać obwód: reprezentujemy funkcję jako bramki logiczne. Każdy przewód ma dwie niezależne etykiety, oznaczające 0 i 1, lecz ich znaczenie jest ukryte przed wykonawcą. Dla bramki o dwóch wejściach twórca przygotowuje zaszyfrowaną tabelę wynikowych etykiet. Wykonawca posiada po jednej etykiecie wejściowej i może przejść do odpowiedniej etykiety wyjściowej. Dopiero na końcu poznaje uzgodnione znaczenie wyniku. To opis idei. Poprawne szyfrowanie tabel, kolejność wierszy i zabezpieczenia złośliwego twórcy wymagają konkretnego protokołu.

Model półuczciwy zakłada wykonywanie poleceń protokołu przy analizie całego zapamiętanego widoku. Model złośliwy pozwala wybierać inne komunikaty i przerywać wykonanie. Prywatność, poprawność wyniku, odporność na przerwanie i sprawiedliwe otrzymanie wyniku są osobnymi celami. Nie każdy protokół MPC zapewnia je wszystkie.

MPC
Multi-Party Computation. Obliczenia wielostronne.

Rachunek na udziałach

Udział nie jest osobnym szyfrogramem. Aby podzielić x∈Zqx\in\mathbb Z_q między dwie osoby, losujemy jednostajnie x1x_1, a potem wyznaczamy x2=x−x1(modq)x_2=x-x_1\pmod q. Pierwsza osoba dostaje tylko x1x_1, druga tylko x2x_2. Każdy udział osobno ma rozkład niezależny od xx. Razem pozwalają obliczyć x=x1+x2x=x_1+x_2. Zapis [x][x] oznacza ten rozdzielony stan, nie wartość znaną każdemu uczestnikowi.

Na przykład dla q=23q=23 i x=7x=7 można dostać udziały 19 i 11, bo 19+11≡7(mod23)19+11\equiv7\pmod{23}. Otwarcie oznacza przekazanie udziałów i odtworzenie wartości. Otwarcie [x][x] ujawniłoby sekret. Dlatego poniżej otwieramy tylko zamaskowane różnice. Dodawanie [x]+[y][x]+[y] oznacza lokalne dodawanie odpowiednich udziałów. Mnożenie przez jawną liczbę dd oznacza mnożenie każdego udziału przez dd.

Publiczną stałą tt reprezentujemy umownie przez [t]=(t,0)[t]=(t,0). Dodanie jej do obu udziałów byłoby błędem, ponieważ odtworzona suma wzrosłaby o 2⋅t2\cdot t. Rozdział W13 wprowadzi inny podział, Shamira, pozwalający ustalić próg odtwarzania. Nie jest potrzebny do poniższego rachunku dwóch udziałów.

Dla udziałów x=x1+x2x=x_1+x_2 dodawanie wykonujemy lokalnie. Iloczyn nie jest sumą lokalnych iloczynów, bo brakuje wyrazów mieszanych. Jednorazowa trójka Beavera (a,b,c)(a,b,c) ma c=a⋅bc=a\cdot b i również jest podzielona na udziały. Otwieramy d=x−a,e=y−bd=x-a,e=y-b:

[x⋅y]=[c]+d⋅[b]+e⋅[a]+[d⋅e].[x\cdot y]=[c]+d\cdot[b]+e\cdot[a]+[d\cdot e].

Publiczny składnik d⋅ed\cdot e włączamy raz do sumy udziałów. Losowe niezależne maski ukrywają wejścia. Powtórne użycie trójki ujawnia różnice wejść. Złośliwy model wymaga dodatkowego sprawdzania.

W PSI opartym na DH haszujemy elementy zbioru do grupy i porównujemy podwójnie przekształcone punkty. W PSI-cardinality odbiorca ma poznać tylko liczbę. Tasowanie musi usuwać konkretne powiązanie wyniku z wejściem. Nie jest samodzielnym dowodem prywatności.

PSI
Private Set Intersection. Prywatne wyznaczanie przecięcia zbiorów.

Źródła: Chou–Orlandi, garbled circuits, kurs rozproszony.

W12a. Garbled circuits: obliczenie bez odczytywania wejść

Funkcjonalność. Alicja zna bity a,ca,c, Bob zna bit bb. Bob ma poznać tylko uzgodniony wynik d=(a∧b)⊕cd=(a\land b)\oplus c, oprócz informacji wynikającej z jego własnego wejścia. Obwód i liczba bramek są jawne. Nie próbujemy ukrywać samej funkcji. Wykonanie przenosi po przewodach losowe etykiety, zamiast jawnych bitów.

Dla przewodu ww twórca losuje dwie etykiety Kw0,Kw1K_w^0,K_w^1. Indeks górny oznacza tutaj wartość logiczną, nie potęgę. Wykonawca dostaje tylko jedną z nich. Twórca pamięta obie i ich znaczenie. Nie wysyłamy tabeli znaczeń przewodów wewnętrznych.

Publiczny obwód oznaczamy przez FF. Każda jego bramka jj otrzymuje zaszyfrowaną tabelę TjT_j. Zbiór tych tabel tworzy zakodowany obwód F~\widetilde F. Mapa eine_{\mathrm{in}} przypisuje bitom wejściowym etykiety. Osobna mapa doutd_{\mathrm{out}} pozwala odczytać jedynie bity wyjściowe. Ciągi etykiet na wejściu i wyjściu obliczenia oznaczamy odpowiednio XX i YY.

Obwód z zaszyfrowanymi etykietami: algorytmy i przepływ

Garble przygotowuje zaszyfrowane tabele publicznego obwodu F. Każdy wiersz chroni etykietę wyjściową bramki. Sposób szyfrowania i wybierania wiersza rozwijamy po diagramie. OT jest dodatkowym protokołem dystrybucji etykiet, nie częścią lokalnego Eval.

Π=(Garble,Encode,Eval,Decode)\Pi=(\mathsf{Garble},\mathsf{Encode},\mathsf{Eval},\mathsf{Decode})
Garble(1λ,F)\mathsf{Garble}(1^\lambda,F)⟶(F~,ein,dout)\longrightarrow (\widetilde F,e_{\mathrm{in}},d_{\mathrm{out}})
F~=(Tj)j\widetilde F=(T_j)_j

Wylosuj dwie etykiety na przewód, bity wyboru i cztery szyfrogramy każdej bramki. Zachowaj mapę kodowania wejść. Osobna mapa dekoduje wyłącznie wyjścia.

Encode(ein,x)\mathsf{Encode}(e_{\mathrm{in}},x)⟶X\longrightarrow X
X=(Kwxw)w wejsˊciowyX=(K_w^{x_w})_{w\text{ wejściowy}}

W protokole twórca koduje własne wejścia. Dla wejść wykonawcy OT wydaje tylko wybrane etykiety.

Eval(F~,X)\mathsf{Eval}(\widetilde F,X)⟶Y\longrightarrow Y
Y=(KwF(x)w)w wyjsˊciowyY=(K_w^{F(x)_w})_{w\text{ wyjściowy}}

Przechodź po bramkach w porządku topologicznym. Otwórz jeden wskazany wiersz z dwóch dostępnych etykiet. Błąd integralności przerywa obliczenie.

Decode(dout,Y)\mathsf{Decode}(d_{\mathrm{out}},Y)⟶F(x)\longrightarrow F(x)
Kwv⟼vK_w^v\longmapsto v

Ujawniaj tylko znaczenie przewodów wyjściowych.

Obwód z zaszyfrowanymi etykietami: czynności i komunikatyTwórca obwoduWykonawcaGarble
Losowe etykiety i tabele bramek.
Bez pełnej mapy etykiet wejściowychEncode: własne wejściaJedna etykieta na własny przewódOT ukrywa wybór b przed twórcąEval i Decode

Obwód z zaszyfrowanymi etykietami

  1. Twórca obwodu, Garble: (F~,ein,dout)(\widetilde F,e_{\mathrm{in}},d_{\mathrm{out}}) ←Garble(1λ,F)\leftarrow\mathsf{Garble}(1^\lambda,F) Losowe etykiety i tabele bramek.
  2. Twórca obwodu → Wykonawca: (F~,dout)(\widetilde F,d_{\mathrm{out}}) Bez pełnej mapy etykiet wejściowych
  3. Twórca obwodu, Encode: własne wejścia: Kaa,KccK_a^a,\quad K_c^c
  4. Twórca obwodu → Wykonawca: (Kaa,Kcc)(K_a^a,K_c^c) Jedna etykieta na własny przewód
  5. Twórca obwodu → Wykonawca: Kbbprzez OTK_b^b\quad\text{przez OT} OT ukrywa wybór b przed twórcą
  6. Wykonawca, Eval i Decode: Y=Eval(F~,X)Y=\mathsf{Eval}(\widetilde F,X) d=Decode(dout,Y)d=\mathsf{Decode}(d_{\mathrm{out}},Y)
Mapa dekodowania i bit wyniku d są różnymi obiektami. OT nie jest zwykłym ujawnieniem bitu wyboru.

Jedna etykieta nie mówi, czy oznacza zero

W wariancie point-and-permute etykieta zawiera bit wyboru pw(v)=v⊕πwp_w(v)=v\oplus\pi_w, gdzie πw\pi_w jest tajnym, losowym bitem danego przewodu. Bit wyboru wskazuje wiersz, lecz sam nie ujawnia vv. Dwie etykiety tego samego przewodu mają przeciwne bity wyboru. Ich pozostałe części są losowe.

K\mathcal K oznacza wyprowadzenie klucza szyfrowania z numeru bramki i obu etykiet. To nie jest używana wcześniej skalarna ℋ\mathcal H. Seal\mathsf{Seal} oznacza szyfrowanie etykiety z kontrolą integralności w poniższym demonstratorze. Numer obwodu, numer bramki i indeks wiersza wiążemy z kontekstem. Dwie znane etykiety wystarczają do otwarcia jednego wiersza, a otrzymana etykieta staje się wejściem następnej bramki.

Dla bramki jj o funkcji gjg_j, wejściach u,vu,v i wyjściu ww tworzymy cztery zaszyfrowane etykiety. W tabeli TjT_j indeksujemy wiersze bitami wyboru z etykiet wejściowych:

Adres w tabeli

jj wskazuje bramkę. pu(x),pv(y)p_u(x),p_v(y) to bity wyboru odczytane z etykiet, nie jawne wejścia x,yx,y.

Szyfrowanie etykiety

Seal\mathsf{Seal} chroni etykietę kluczem zapisanym w indeksie dolnym. W demonstratorze jest to AES-GCM.

Tj[pu(x),pv(y)]=SealK(j,Kux,Kvy)(Kwgj(x,y)),
x,y∈{0,1}x,y\in\{0,1\}
Klucz jednego wiersza

K\mathcal K wyprowadza klucz z obu etykiet wejściowych i kontekstu bramki. Potrzebne są obie etykiety.

Co jest szyfrowane?

Etykieta przewodu ww odpowiadająca wynikowi gj(x,y)g_j(x,y). Indeks górny wybiera etykietę, nie oznacza potęgowania.

Jeden wiersz zawiera szyfrogram jednej etykiety wyjściowej. Powtarzamy tę regułę dla czterech par wejść.

Od bramki logicznej do czterech szyfrogramów

Bramka o dwóch wejściach ma cztery pary możliwych bitów: (0,0)(0,0), (0,1)(0,1), (1,0)(1,0) i (1,1)(1,1). Dla każdej pary twórca najpierw oblicza bit wyjściowy. Następnie wybiera odpowiadającą mu etykietę przewodu wyjściowego i szyfruje ją kluczem wyprowadzonym z dwóch etykiet wejściowych. Nie szyfrujemy tutaj samego bitu wyniku. Szyfrujemy etykietę, która może później posłużyć jako wejście kolejnej bramki.

Od tabeli prawdy do tabeli zaszyfrowanych etykiet

Widok dydaktyczny twórcy obwodu. Odsłaniamy znaczenie etykiet i przyjmujemy przykładowo πu=1, πv=0\pi_u=1,\ \pi_v=0, więc pu(x)=x⊕1p_u(x)=x\oplus1 oraz pv(y)=yp_v(y)=y. W protokole te zależności nie są ujawniane wykonawcy.

Funkcja bramki
Para wejść

Skrót dla klucza wiersza: kxy=K(j,Kux,Kvy)k_{xy}=\mathcal K(j,K_u^x,K_v^y). Symbol CxyC_{xy} oznacza szyfrogram, nie jawny bit.

gj(x,y)=x∧yg_j(x,y)=x \land y

1. Tabela prawdy · AND
xxyygj(x,y)g_j(x,y)
000
010
100
111
2. Etykiety i cztery szyfrogramy
Para etykiet wejśćZaszyfrowana etykieta wyjściaAdres w tabeli
Ku0, Kv0K_u^0,\ K_v^0C00=Sealk00(Kw0)C_{00}=\mathsf{Seal}_{k_{00}}(K_w^0)Tj[1,0]T_j[1,0]
Ku0, Kv1K_u^0,\ K_v^1C01=Sealk01(Kw0)C_{01}=\mathsf{Seal}_{k_{01}}(K_w^0)Tj[1,1]T_j[1,1]
Ku1, Kv0K_u^1,\ K_v^0C10=Sealk10(Kw0)C_{10}=\mathsf{Seal}_{k_{10}}(K_w^0)Tj[0,0]T_j[0,0]
Ku1, Kv1K_u^1,\ K_v^1C11=Sealk11(Kw1)C_{11}=\mathsf{Seal}_{k_{11}}(K_w^1)Tj[0,1]T_j[0,1]
3. Kolejność w przesyłanej tabeli
Bity wyboruSzyfrogram
(0,0)(0,0)C10C_{10}
(0,1)(0,1)C11C_{11}
(1,0)(1,0)C00C_{00}
(1,1)(1,1)C01C_{01}

Cztery szyfrogramy, ale tylko dwie etykiety wyjścia. Trzy wiersze szyfrują tę samą etykietę Kw0K_w^0, a jeden etykietę Kw1K_w^1. Każdy wiersz korzysta z klucza wyprowadzonego z innej pary etykiet wejściowych.

Widok wykonawcy jest uboższy. Dostaje szyfrogramy w kolejności bitów wyboru oraz po jednej etykiecie każdego wejścia. Nie otrzymuje tabeli znaczeń ani indeksów x,yx,y użytych tutaj w nazwach CxyC_{xy}.

AND
and. I, czyli koniunkcja logiczna. To angielskie słowo, nie akronim. Bramka AND zwraca 1 tylko wtedy, gdy oba wejścia mają wartość 1.

Na przykład dla AND i wejść (1,1)(1,1) para (Ku1,Kv1)(K_u^1,K_v^1) pozwala uzyskać Kw1K_w^1. Pozostałe trzy pary prowadzą do Kw0K_w^0, ale ich szyfrogramy nie muszą wyglądać podobnie. W demonstratorze każdy wiersz używa własnego klucza oraz losowego IV. Nie wolno traktować kolejności (0,0),(0,1),(1,0),(1,1)(0,0),(0,1),(1,0),(1,1) w tabeli prawdy jako jawnego porządku wysyłanych szyfrogramów. Bity wyboru zmieniają adresy wierszy, a ich związek z bitami logicznymi pozostaje ukryty.

Podstawową ideę zastąpienia tabeli prawdy zaszyfrowanymi etykietami opisują Lindell i Pinkas, §1 i tabela 1. Ich opis używa zagnieżdżonego szyfrowania. Powyższy zapis Seal\mathsf{Seal} odpowiada lokalnemu wariantowi demonstracyjnemu z kluczem wyprowadzanym z obu etykiet, a nie dosłownemu przepisaniu tamtej konstrukcji. Poniższy obwód oblicza rzeczywiste szyfrogramy w WebCrypto.

Przepływ od dwóch osób do jednego wyniku

  1. Przygotowanie. Alicja tworzy etykiety i zaszyfrowane tabele obu bramek. Publikuje tabele, ale nie znaczenia etykiet wewnętrznych.
  2. Wejścia Alicji. Przekazuje Bobowi KaaK_a^a i KccK_c^c. Nie przekazuje pozostałych etykiet tych przewodów.
  3. Wejście Boba. OT z pary (Kb0,Kb1)(K_b^0,K_b^1) dostarcza tylko KbbK_b^b. Alicja nie poznaje wyboru. Bob nie otrzymuje drugiej etykiety.
  4. Obliczenie. Bob otwiera właściwy wiersz AND, następnie właściwy wiersz XOR. Nie musi znać wartości pośredniego bitu.
  5. Odczyt. Uzgodnione dekodowanie końcowego przewodu pozwala odczytać dd. Wynik nie powinien ujawniać dodatkowych etykiet.
Obwód Yao · etykieta po etykiecie

SHA-256 i AES-GCM w WebCrypto. Lokalna symulacja OT. Czterowierszowe tabele, bez Free-XOR.

Wejście Alicji a
Wejście Boba b
Wejście Alicji c
Test negatywny
Alicja · aBob · b przez OTAlicja · cAND4 szyfrogramyXOR4 szyfrogramy?ukryta etykietawynik
Tabele widziane przez wykonawcę. Znaczenie bitów wyboru pozostaje ukryte.
BramkaWierszSzyfrogram · skrót hexStan
Tabele powstaną w pierwszym kroku.
Gotowe do rozpoczęcia.

W demonstratorze tabele rzeczywiście powstają przez SHA-256 i AES-GCM w WebCrypto. Etykiety mają 128 bitów, w tym bit wyboru. Jest to dydaktyczne kodowanie czterech wierszy, a nie implementacja zoptymalizowanego protokołu Yao z dowodem bezpieczeństwa. OT jest lokalnie symulowaną usługą wydającą jedną etykietę. Jedna przeglądarka zna oba wejścia, więc nie zapewnia między nimi izolacji. Test uszkodzonego szyfrogramu sprawdza odrzucenie przez AEAD, nie odporność na złośliwego twórcę całego obwodu.

Co dokładnie ma wykazać dowód

Nie wystarczy, że Bob nie widzi napisu „0” ani „1”. Dla półuczciwego Boba symulator ma odtworzyć jego widok, znając tylko bb i dozwolony wynik dd. Dla półuczciwej Alicji symulujemy widok na podstawie jej wejścia i jej dozwolonego wyjścia. Bezpieczeństwo OT ukrywa wybór Boba. Bezpieczeństwo garblingu ukrywa nieaktywne etykiety i wartości wewnętrzne. Argument hybrydowy zastępuje odpowiednie zaszyfrowane etykiety, z zachowaniem zgodności aktywnej ścieżki. To nie jest teza, że wszystkie wiersze można niezależnie zastąpić zerami.

Złośliwy twórca może przygotować inną funkcję. Szyfrowanie tabel samo temu nie zapobiega. Potrzebna jest konkretna metoda sprawdzania obwodów, zgodności wejść i poprawności OT. Przykładem jest rodzina technik cut-and-choose: otwieramy losowo wybrane obwody kontrolne, pozostałe służą obliczeniu. Parametry, sposób agregowania wyników i kontrola wejść decydują o błędzie bezpieczeństwa. Samo pokazanie jednego poprawnego obwodu nie certyfikuje pozostałych.

Precyzyjny opis i dowód dla modelu półuczciwego podają Lindell i Pinkas, A Proof of Security of Yao's Protocol for Two-Party Computation. Historyczny punkt odniesienia to Yao, How to Generate and Exchange Secrets, FOCS 1986. Konstrukcji demonstracyjnej nie przypisujemy automatycznie twierdzenia z tych prac.

FOCS
Foundations of Computer Science. Podstawy informatyki. Skrót w nazwie sympozjum teoretycznego.

Free-XOR i half-gates: gdzie znika komunikacja

W Free-XOR etykiety mają wspólną, tajną różnicę Δ\Delta: Kw1=Kw0⊕ΔK_w^1=K_w^0\oplus\Delta. Dla XOR można ustalić Kw0=Ku0⊕Kv0K_w^0=K_u^0\oplus K_v^0. Wtedy

Kux⊕Kvy=Kwx⊕y.K_u^x\oplus K_v^y=K_w^{x\oplus y}.

Nie wysyłamy tabeli XOR. Cena to skorelowane etykiety i właściwe założenia dla całego garblingu. Nie wolno bez analizy wkleić tej korelacji do dowolnego szyfrowania tabel. Technika half-gates łączy darmowe XOR z dwoma blokami na AND. To dwa uzupełniające się usprawnienia, nie dwa różne cele bezpieczeństwa.

Konstrukcja tabel Bloki na XOR Bloki na AND
Cztery wiersze 4 4
Free-XOR + redukcja do trzech wierszy 0 3
Free-XOR + half-gates 0 2

Blok ma długość parametru etykiety κ\kappa. Tabela nie obejmuje OT, wejść, dekodowania ani zabezpieczeń złośliwego modelu. Dla n∧n_\land bramek AND koszt tabel half-gates to 2⋅κ⋅n∧2\cdot\kappa\cdot n_\land bitów. To koszt komunikacji, nie całego obliczenia. Demonstrator powyżej pozostaje czterowierszowy i ma dodatkowy narzut IV oraz znaczników AES-GCM. Nie należy przypisywać mu podanych rozmiarów zoptymalizowanych tabel. Źródło optymalizacji: Zahur–Rosulek–Evans, Two Halves Make a Whole.

Powiązania: C12, L6.