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.

W14. Zobowiązania i reszyfrowanie

Zobowiązanie ukrywa decyzję, a zarazem utrudnia jej zmianę. Publikujemy CC, później otwieramy wiadomość i losowość. Ukrywanie chroni nadawcę. Wiązanie chroni odbiorcę.

Interfejs zobowiązania

Zapisujemy Πcom=(Setup,Commit,CheckOpen)\Pi_{\mathrm{com}}=(\mathsf{Setup},\mathsf{Commit},\mathsf{CheckOpen}). Po ustaleniu pppp wywołanie (C,o)←Commit(pp,m)(C,o)\leftarrow\mathsf{Commit}(pp,m) zwraca publiczne zobowiązanie CC i prywatne dane otwarcia oo. Przy otwarciu autor ujawnia m,om,o, a odbiorca liczy b=CheckOpen(pp,C,m,o)b=\mathsf{CheckOpen}(pp,C,m,o). Uczciwe otwarcie ma dawać b=1b=1. Odbiorca nie dysponuje procedurą Dec z tajnym kluczem. To autor musi ujawnić otwarcie.

Realizacja Pedersena: pp=(G,q,g,h)pp=(G,q,g,h), wiadomość m∈Zqm\in\mathbb Z_q, świeża losowość r←$Zqr\overset{\$}{\leftarrow}\mathbb Z_q i dane otwarcia o=ro=r. CheckOpen sprawdza typy oraz poniższe równanie. Nazwa Commit oznacza tu algorytm zobowiązania do wiadomości, a nie krok identyfikacji Schnorra. Kontekst schematu rozróżnia te dwa interfejsy.

Zobowiązanie Pedersena: algorytmy i przepływ

Π=(Setup,Commit,CheckOpen)\Pi=(\mathsf{Setup},\mathsf{Commit},\mathsf{CheckOpen})
Setup(1λ)\mathsf{Setup}(1^\lambda)⟶pp\longrightarrow pp
pp=(G,q,g,h)pp=(G,q,g,h)

Otwierający nie zna logarytmu h przy podstawie g.

Commit(pp,m)\mathsf{Commit}(pp,m)⟶(C,o)\longrightarrow (C,o)
m∈Zq,r←$Zqm\in\mathbb Z_q,\quad r\overset{\$}{\leftarrow}\mathbb Z_q
C=gm⋅hr,o=rC=g^m\cdot h^r,\quad o=r
CheckOpen(pp,C,m,o)\mathsf{CheckOpen}(pp,C,m,o)⟶b∈{0,1}\longrightarrow b\in\{0,1\}
b=[C=gm⋅ho]b=[C=g^m\cdot h^o]

Sprawdź typy i zakresy.

Zobowiązanie Pedersena: czynności i komunikatyZobowiązującyOdbiorcaCommitEtap zobowiązaniaZapamiętaj
Nie ma algorytmu deszyfrowania C.
Późniejsze otwarcieCheckOpen

Zobowiązanie Pedersena

Zobowiązujący: pp,mpp,m

Odbiorca: pppp

  1. Zobowiązujący, Commit: r←$Zq,C=gm⋅hrr\overset{\$}{\leftarrow}\mathbb Z_q,\quad C=g^m\cdot h^r
  2. Zobowiązujący → Odbiorca: CC Etap zobowiązania
  3. Odbiorca, Zapamiętaj: CC Nie ma algorytmu deszyfrowania C.
  4. Zobowiązujący → Odbiorca: (m,r)(m,r) Późniejsze otwarcie
  5. Odbiorca, CheckOpen: C=?gm⋅hrC\stackrel{?}{=}g^m\cdot h^r
Dwa etapy są rozdzielone w czasie. Losowość pozostaje prywatna aż do otwarcia.

Pedersen: C=gm⋅hrC=g^m\cdot h^r, gdzie generatory mają rząd qq, a otwierający nie zna log⁡gh\log_g h. Jednostajne rr daje CC jednostajne niezależnie od mm. Dwa otwarcia przy m≠m′m\ne m' dają:

gm⋅hr=gm′⋅hr′,log⁡gh=(m−m′)⋅(r′−r)−1.g^m\cdot h^r=g^{m'}\cdot h^{r'},\qquad \log_g h=(m-m')\cdot(r'-r)^{-1}.

Mianownik nie jest zerowy, inaczej równość wymuszałaby m=m′m=m' modulo qq. To redukcja wiązania do DL. Podmiot wybierający h=gαh=g^\alpha i zachowujący α\alpha ma pułapkę do zmiany otwarcia. Ustanowienie parametrów jest częścią modelu.

Zobowiązanie pozostaje, lecz wiadomość się zmienia

W zapisie schematu mamy C=gm⋅hrC=g^m\cdot h^r. Jeżeli otwierający celowo ustawił h=g7h=g^7, może zwiększyć wiadomość o jeden i skorygować losowość:

m′=m+1,r′=r−7−1,gm′⋅hr′=gm⋅hr.m'=m+1,\qquad r'=r-7^{-1},\qquad g^{m'}\cdot h^{r'}=g^m\cdot h^r.

Realizacja na krzywej. Generatory g,hg,h odpowiadają punktom P1,QP_1,Q. Równanie zobowiązania to C=m⋅P1+r⋅QC=m\cdot P_1+r\cdot Q, a znana relacja to Q=7⋅P1Q=7\cdot P_1. Odwrotność i wszystkie działania na skalarach wykonujemy w Zq\mathbb Z_q, nie na liczbach zmiennoprzecinkowych. Przy poprawnym ustawieniu parametrów nikt nie powinien znać relacji logarytmicznej między generatorami. W demonstracji drugi wariant wyznacza QQ przez mapowanie do G1G_1 z osobną etykietą domeny. Nie deklarujemy przez to konkretnego profilu RFC 9380.

Pedersen: co zmienia znajomość pułapki?

MCL WebAssembly w G1. Losowość r jest losowana w pełnym ciele skalarów. Jej ujawnienie na ekranie służy wyłącznie objaśnieniu.

Wybór parametrów
Pedersen: co zmienia znajomość pułapki?1. Parametry i otwarcie
g, h, m, rg,\ h,\ m,\ r
oczekuje
2. Opublikowane zobowiązanie
C=gm⋅hrC=g^m\cdot h^r
oczekuje
3. Pierwsze otwarcie
C=?gm⋅hrC\stackrel{?}{=}g^m\cdot h^r
oczekuje
4. Druga wiadomość i próba otwarcia
C=?gm′⋅hr′C\stackrel{?}{=}g^{m^{\prime}}\cdot h^{r^{\prime}}
oczekuje

Zapis i obliczenia. Wzory schematu są multiplikatywne. MCL realizuje je na krzywej. Generatory g,hg,h odpowiadają punktom P1,QP_1,Q. W grupach punktów iloczyn oznacza dodawanie, potęga oznacza mnożenie punktu przez skalar, a odwrotność oznacza punkt przeciwny. Nie potęgujemy współrzędnych. Ten rachunek nie używa pairingu.

Gotowe.

Obliczenia MCL na krzywej. Poniżej pokazujemy konkretne operacje biblioteki. Grupy punktów zapisujemy addytywnie.

  1. Parametry i otwarcie

    Oczekuje.

  2. Opublikowane zobowiązanie

    Oczekuje.

  3. Pierwsze otwarcie

    Oczekuje.

  4. Druga wiadomość i próba otwarcia

    Oczekuje.

Sprawdź: Włącz znaną relację generatorów z wykładnikiem 7. Czy dwa różne otwarcia dają dokładnie ten sam element grupy? Odtwórz 7 z ich różnicy.

Znajomość pułapki narusza wiązanie. Nie usuwa samego argumentu doskonałego ukrywania przy jednostajnym, nieujawnionym rr. Na ekranie pokazujemy rr wyłącznie do sprawdzenia rachunku. Po ujawnieniu otwarcia nie oczekujemy już ukrywania wiadomości.

Reszyfrowanie ElGamala przez świeże tt:

(u′,v′)=(u⋅gt,v⋅At)(u',v')=(u\cdot g^t,v\cdot A^t)

zachowuje wiadomość, ponieważ czynniki skracają się podczas deszyfrowania. Rerandomizacja nie daje integralności. Proxy re-encryption zmienia uprawnienia do deszyfrowania i jest inną funkcjonalnością.

Powiązania: C11.5: ukrywanie i związanie Pedersena. Dla porównania innej funkcjonalności opartej na działaniach grupowych: C8: szyfrowanie publiczne. Zobowiązania wracają w dowodach wiedzy, protokołach losowania i weryfikacji obliczeń.

W14a. Rerandomizacja i delegowanie deszyfrowania

Serwer przechowuje zaszyfrowane dane. Chcemy pozwolić mu coś z nimi zrobić bez ujawniania wiadomości. Odświeżenie wyglądu szyfrogramu oraz zmiana uprawnionego odbiorcy to dwa różne zadania. Pierwsze prowadzi do miksów, drugie do proxy re-encryption, czyli reenkrypcji przez pośrednika.

ElGamal: nowa losowość, ten sam klucz

Przyjmijmy A=gaA=g^a i wiadomość M∈GM\in G. ElGamal tworzy (U,V)=(gr,M⋅Ar)(U,V)=(g^r,M\cdot A^r).

Rerandomizacja ElGamala: algorytmy i przepływ

Setup, KeyGen, Enc i Dec są dokładnie algorytmami ElGamala. Dodajemy jedną procedurę publiczną. Zmieniamy oznaczenia składników na U,V jak w tym rozdziale.

Π=(Setup,KeyGen,Enc,ReRand,Dec)\Pi=(\mathsf{Setup},\mathsf{KeyGen},\mathsf{Enc},\mathsf{ReRand},\mathsf{Dec})
ReRand(pp,A,(U,V))\mathsf{ReRand}(pp,A,(U,V))⟶(U′,V′)\longrightarrow (U\prime,V\prime)
t←$Zqt\overset{\$}{\leftarrow}\mathbb Z_q
U′=U⋅gt,V′=V⋅AtU\prime=U\cdot g^t,\quad V\prime=V\cdot A^t

Sprawdź wejście. Ani sekret a, ani pierwotne r nie są argumentami.

Dec(pp,a,(U′,V′))\mathsf{Dec}(pp,a,(U\prime,V\prime))⟶M\longrightarrow M
M=V′⋅((U′)a)−1M=V\prime\cdot((U\prime)^a)^{-1}
Rerandomizacja ElGamala: czynności i komunikatyPubliczny pośrednikOdbiorcaWejście ReRandReRandTen sam adresat, nowy szyfrogramDec

Rerandomizacja ElGamala

Publiczny pośrednik: pp,A,(U,V)pp,A,(U,V)

Odbiorca: pp,app,a

  1. Publiczny pośrednik, Wejście ReRand: A,(U,V)A,\quad (U,V)
  2. Publiczny pośrednik, ReRand: t←$Zqt\overset{\$}{\leftarrow}\mathbb Z_q U′=U⋅gt,V′=V⋅AtU\prime=U\cdot g^t,\quad V\prime=V\cdot A^t
  3. Publiczny pośrednik → Odbiorca: (U′,V′)(U\prime,V\prime) Ten sam adresat, nowy szyfrogram
  4. Odbiorca, Dec: M=V′⋅((U′)a)−1M=V\prime\cdot((U\prime)^a)^{-1}
Nie powstaje klucz delegacji i nie zmienia się właściciel sekretu.

Każdy znający publiczny AA może wybrać niezależne t←$Zqt\overset{\$}{\leftarrow}\mathbb Z_q i obliczyć:

(U′,V′)=(U⋅gt,V⋅At)=(gr+t,M⋅Ar+t).(U',V')=(U\cdot g^t,V\cdot A^t) =(g^{r+t},M\cdot A^{r+t}).

Odbiorca odzyskuje V′/(U′)a=MV'/(U')^a=M. Losowość r+tr+t jest jednostajna, nawet gdy ustalimy poprzednie rr. Publiczna transformacja nie wymaga znajomości ani rr, ani MM. W grupie zapisanej addytywnie mamy:

(U,V)=(r⋅P2,M+r⋅A),(U′,V′)=(U+t⋅P2,V+t⋅A),M=V′−a⋅U′.(U,V)=(r\cdot P_2,M+r\cdot A),\qquad (U',V')=(U+t\cdot P_2,V+t\cdot A),\qquad M=V'-a\cdot U'.

To nie jest zmiana adresata. Wciąż odszyfrowuje Alicja z sekretem aa. To również nie jest integralność: publiczna możliwość zmiany szyfrogramu jest tutaj zamierzona. Bezpieczeństwo poufności ElGamala wiążemy z DDH w wybranej grupie, nie z samą poprawnością deszyfrowania. W demonstratorze zwykły ElGamal działa w G2G_2, bez udostępniania odpowiednika sekretnego klucza w G1G_1.

BBS: prosty iloraz kluczy i jego cena

BBS
Blaze–Bleumer–Strauss. Nazwiska autorów omawianej reenkrypcji. Nie chodzi o generator Blum–Blum–Shub.

W konstrukcji typu Blaze–Bleumer–Strauss zmieniamy także format szyfrowania. Nie należy podstawić poniższego klucza reenkrypcji do zwykłego ElGamala z poprzedniego akapitu.

Reenkrypcja typu BBS: algorytmy i przepływ

Setup i KeyGen jak w grupowym przykładzie. Alicja ma (A,a), Bob (B,b). Wyliczenie ReKeyGen wymaga obu sekretów i odbywa się poza pokazanym przepływem szyfrogramu. Nie przekazujemy a ani b do proxy.

Π=(Setup,KeyGen,Enc,ReKeyGen,ReEnc,Dec)\Pi=(\mathsf{Setup},\mathsf{KeyGen},\mathsf{Enc},\mathsf{ReKeyGen},\mathsf{ReEnc},\mathsf{Dec})
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.

KeyGen(pp)\mathsf{KeyGen}(pp)⟶(A,a)\longrightarrow (A,a)
a←$Zq∗,A=gaa\overset{\$}{\leftarrow}\mathbb Z_q^*,\quad A=g^a

Sekret a pozostaje u właściciela. Odbiorca uwierzytelnia publiczny A.

Enc(pp,A,M)\mathsf{Enc}(pp,A,M)⟶CA=(U,V)\longrightarrow C_A=(U,V)
r←$Zqr\overset{\$}{\leftarrow}\mathbb Z_q
U=Ar,V=M⋅grU=A^r,\quad V=M\cdot g^r
ReKeyGen(pp,a,b)\mathsf{ReKeyGen}(pp,a,b)⟶rkA→B\longrightarrow rk_{A\to B}
rkA→B=b⋅a−1(modq)rk_{A\to B}=b\cdot a^{-1}\pmod q

To nie interfejs z samym publicznym B. Klucz delegacji udostępnia się proxy.

ReEnc(pp,rkA→B,CA)\mathsf{ReEnc}(pp,rk_{A\to B},C_A)⟶CB=(U′,V)\longrightarrow C_B=(U\prime,V)
U′=UrkA→BU\prime=U^{rk_{A\to B}}
Dec(pp,b,CB)\mathsf{Dec}(pp,b,C_B)⟶M\longrightarrow M
M=V⋅((U′)b−1)−1M=V\cdot((U\prime)^{b^{-1}})^{-1}

Ta sama procedura z a odszyfrowuje C_A. Waliduj typy wszystkich wejść.

Reenkrypcja typu BBS: czynności i komunikatyNadawcaProxyBobEnc dla AlicjiSzyfrogram dla AlicjiReEnc
Użyj dostarczonego rk. Proxy nie zna a ani b.
Szyfrogram dla BobaDec

Reenkrypcja typu BBS

Nadawca: pp,A,Mpp,A,M

Proxy: pp,rkA→Bpp,rk_{A\to B}

Bob: pp,bpp,b

  1. Nadawca, Enc dla Alicji: r←$Zqr\overset{\$}{\leftarrow}\mathbb Z_q U=ArU=A^r V=M⋅grV=M\cdot g^r
  2. Nadawca → Proxy: CA=(U,V)C_A=(U,V) Szyfrogram dla Alicji
  3. Proxy, ReEnc: U′=UrkA→BU\prime=U^{rk_{A\to B}} Użyj dostarczonego rk. Proxy nie zna a ani b.
  4. Proxy → Bob: CB=(U′,V)C_B=(U\prime,V) Szyfrogram dla Boba
  5. Bob, Dec: M=V⋅((U′)b−1)−1M=V\cdot((U\prime)^{b^{-1}})^{-1}
ReKeyGen jest osobną procedurą opisaną w tabeli. Proxy otrzymuje jej wynik i zmienia pierwszy składnik szyfrogramu. Znajomość rk wraz z b ujawnia a. Nie jest to delegacja odporna na tę zmowę.

Dla niezerowych sekretów Alicji aa i Boba bb przyjmujemy:

CA=(U,V)=(ga⋅r,M⋅gr),rkA→B=b⋅a−1.C_A=(U,V)=(g^{a\cdot r},M\cdot g^r),\qquad rk_{A\to B}=b\cdot a^{-1}.

Proxy zmienia pierwszy składnik, zachowując drugi:

(U′,V)=(UrkA→B,V)=(gb⋅r,M⋅gr),M=V/(U′)b−1.(U',V)=(U^{rk_{A\to B}},V)=(g^{b\cdot r},M\cdot g^r),\qquad M=V/(U')^{b^{-1}}.

W MCL używamy równoważnego zapisu U=r⋅AU=r\cdot A, V=M+r⋅P2V=M+r\cdot P_2, U′=rkA→B⋅UU'=rk_{A\to B}\cdot U. Bob oblicza M=V−b−1⋅U′M=V-b^{-1}\cdot U'. Widząc iloraz sekretów, od razu zadajmy trzy pytania:

  • Kto tworzy klucz delegacji? Do wyliczenia skalaru b⋅a−1b\cdot a^{-1} potrzeba obu sekretów lub odpowiedniej procedury między stronami. Sam publiczny gbg^b nie daje skalaru bb.
  • W jaką stronę działa uprawnienie? Odwrotność daje rkB→Ark_{B\to A}. Iloczyn kluczy delegacji pozwala przejść przez kolejnych odbiorców. To delegacja dwukierunkowa i wieloetapowa.
  • Co daje zmowa? Proxy zna rkA→Brk_{A\to B}, a Bob zna bb. Razem obliczają a=b⋅(rkA→B)−1a=b\cdot(rk_{A\to B})^{-1}. Ujawniają cały sekret Alicji, nie tylko jedną wiadomość.

Niezmieniony drugi składnik pozwala też łączyć szyfrogramy przed transformacją i po niej. Przekazanie dostępu nie oznacza anonimowości relacji. Jest to dydaktyczna postać algebry BBS, EUROCRYPT 1998, nad grupą rzędu będącego liczbą pierwszą.

AFGH: pairing zmienia typ szyfrogramu

AFGH
Ateniese–Fu–Green–Hohenberger. Nazwiska autorów omawianego schematu reenkrypcji z pairingiem.

Chcemy, aby Alicja tworzyła delegację z własnego sekretu i publicznego klucza Boba. W ulepszonym wariancie Ateniese–Fu–Green–Hohenberger klucz ma dwa składniki sekretne. Jeden odpowiada za własne szyfrogramy, drugi za odbiór delegowanych szyfrogramów.

AFGH: delegacja i zmiana typu: algorytmy i przepływ

To dokładnie dydaktyczna instancja ścieżki delegacji opisanej poniżej. Indeks 2 oznacza szyfrogram przed delegacją, a 1 po niej. Nie deklarujemy kompletnej implementacji oryginalnego AFGH ani automatycznego przeniesienia jego dowodu do pairingu typu 3.

Π=(Setup,KeyGen,Enc2,ReKeyGen,ReEnc,Dec2,Dec1)\Pi=(\mathsf{Setup},\mathsf{KeyGen},\mathsf{Enc_2},\mathsf{ReKeyGen},\mathsf{ReEnc},\mathsf{Dec_2},\mathsf{Dec_1})
Setup(1λ)\mathsf{Setup}(1^\lambda)⟶pp\longrightarrow pp
e:G1×G2→GT,Z=e(g1,g2)e:G_1\times G_2\to G_T,\quad Z=e(g_1,g_2)

Parametry zawierają grupy, pierwszy rząd q, generatory, pairing i kodowania.

KeyGen(pp)\mathsf{KeyGen}(pp)⟶(pkA,skA)\longrightarrow (pk_A,sk_A)
a1,a2←$Zq∗a_1,a_2\overset{\$}{\leftarrow}\mathbb Z_q^*
pkA=(Za1,g2a2),skA=(a1,a2)pk_A=(Z^{a_1},g_2^{a_2}),\quad sk_A=(a_1,a_2)
Enc2(pp,pkA,M)\mathsf{Enc}_2(pp,pk_A,M)⟶(R,S)∈G1×GT\longrightarrow (R,S)\in G_1\times G_T
r←$Zqr\overset{\$}{\leftarrow}\mathbb Z_q
R=g1r,S=M⋅Za1⋅rR=g_1^r,\quad S=M\cdot Z^{a_1\cdot r}

M należy do GT. Maskę oblicza się jako (Z^{a₁})^r z klucza publicznego.

ReKeyGen(pp,skA,pkB)\mathsf{ReKeyGen}(pp,sk_A,pk_B)⟶rkA→B∈G2\longrightarrow rk_{A\to B}\in G_2
rkA→B=(g2b2)a1rk_{A\to B}=(g_2^{b_2})^{a_1}
ReEnc(pp,rkA→B,(R,S))\mathsf{ReEnc}(pp,rk_{A\to B},(R,S))⟶(D,S)∈GT2\longrightarrow (D,S)\in G_T^2
D=e(R,rkA→B)D=e(R,rk_{A\to B})
Dec2(pp,skA,(R,S))\mathsf{Dec}_2(pp,sk_A,(R,S))⟶M\longrightarrow M
M=S⋅(e(R,g2)a1)−1M=S\cdot(e(R,g_2)^{a_1})^{-1}
Dec1(pp,skB,(D,S))\mathsf{Dec}_1(pp,sk_B,(D,S))⟶M\longrightarrow M
M=S⋅(Db2−1)−1M=S\cdot(D^{b_2^{-1}})^{-1}

W każdym algorytmie sprawdź typy i podgrupy. Po transformacji D nie jest argumentem G1 dla ReEnc.

AFGH: delegacja i zmiana typu: czynności i komunikatyAlicja / nadawcaProxyBobReKeyGen: tylko AlicjaUprawnienie delegacjiEnc₂: dowolny nadawcaDane do przekształceniaReEncWynik ma inny typDec₁

AFGH: delegacja i zmiana typu

Alicja / nadawca: pp,skA,pkB,Mpp,sk_A,pk_B,M

Proxy: pppp

Bob: pp,skBpp,sk_B

  1. Alicja / nadawca, ReKeyGen: tylko Alicja: rk=(g2b2)a1rk=(g_2^{b_2})^{a_1}
  2. Alicja / nadawca → Proxy: rk∈G2rk\in G_2 Uprawnienie delegacji
  3. Alicja / nadawca, Enc₂: dowolny nadawca: R=g1rR=g_1^r S=M⋅(Za1)rS=M\cdot(Z^{a_1})^r
  4. Alicja / nadawca → Proxy: (R,S)∈G1×GT(R,S)\in G_1\times G_T Dane do przekształcenia
  5. Proxy, ReEnc: D=e(R,rk)D=e(R,rk)
  6. Proxy → Bob: (D,S)∈GT2(D,S)\in G_T^2 Wynik ma inny typ
  7. Bob, Dec₁: M=S⋅(Db2−1)−1M=S\cdot(D^{b_2^{-1}})^{-1}
Pierwsza kolumna obejmuje dwie czynności, które mogą wykonać różne osoby. ReKeyGen potrzebuje sekretu Alicji. Enc₂ potrzebuje tylko jej klucza publicznego. AFGH, §3.3, Third Attempt.

Rachunek potęgowy instancji dydaktycznej. Dla generatorów g1∈G1g_1\in G_1, g2∈G2g_2\in G_2 i pairingu e:G1×G2→GTe:G_1\times G_2\to G_T oznaczmy Z=e(g1,g2)Z=e(g_1,g_2). Niezerowe a1,a2a_1,a_2 są sekretami Alicji, a niezerowe b1,b2b_1,b_2 sekretami Boba. Ich klucze publiczne to (Za1,g2a2)(Z^{a_1},g_2^{a_2}) oraz (Zb1,g2b2)(Z^{b_1},g_2^{b_2}). Alicja tworzy rkA→B=(g2b2)a1rk_{A\to B}=(g_2^{b_2})^{a_1}. Dla świeżo wylosowanego r←$Zqr\overset{\$}{\leftarrow}\mathbb Z_q szyfrogram wiadomości M∈GTM\in G_T ma postać (R,S)=(g1r,M⋅Za1⋅r)(R,S)=(g_1^r,M\cdot Z^{a_1\cdot r}). Proxy oblicza:

D=e(R,rkA→B)=Zr⋅a1⋅b2,S⋅(Db2−1)−1=M.D=e(R,rk_{A\to B})=Z^{r\cdot a_1\cdot b_2},\qquad S\cdot\bigl(D^{b_2^{-1}}\bigr)^{-1}=M.

Drugi rachunek wykonuje Bob, znający b2b_2. To samo potęgowanie w grupach źródłowych poniżej zapisujemy jako mnożenie punktów przez skalary. Jest to ta sama dydaktyczna specjalizacja typów, z ograniczeniem dotyczącym przenoszenia dowodu opisanym dalej.

Dla demonstracji ustalamy e:G1×G2→GTe:G_1\times G_2\to G_T, generatory P1,P2P_1,P_2 i Z=e(P1,P2)Z=e(P_1,P_2). Wiadomość MM jest elementem GTG_T. Skalary a1,a2,b1,b2a_1,a_2,b_1,b_2 są niezerowe. Grupy źródłowe zapisujemy addytywnie, a GTG_T multiplikatywnie:

skA=(a1,a2),pkA=(UA,VA)=(Za1,a2⋅P2),pkB=(UB,VB)=(Zb1,b2⋅P2).sk_A=(a_1,a_2),\quad pk_A=(U_A,V_A)=(Z^{a_1},a_2\cdot P_2),\qquad pk_B=(U_B,V_B)=(Z^{b_1},b_2\cdot P_2).
  1. Alicja deleguje: tworzy rkA→B=a1⋅VB=a1⋅b2⋅P2rk_{A\to B}=a_1\cdot V_B=a_1\cdot b_2\cdot P_2 i przekazuje go proxy. Nie potrzebuje b2b_2.
  2. Nadawca szyfruje dla Alicji: dla losowego rr tworzy szyfrogram drugiego poziomu (R,S)=(r⋅P1,M⋅UAr)∈G1×GT(R,S)=(r\cdot P_1,M\cdot U_A^r)\in G_1\times G_T.
  3. Proxy przekształca: oblicza D=e(R,rkA→B)=Zr⋅a1⋅b2D=e(R,rk_{A\to B})=Z^{r\cdot a_1\cdot b_2} i przekazuje Bobowi szyfrogram pierwszego poziomu (D,S)∈GT2(D,S)\in G_T^2.
  4. Bob odszyfrowuje: oblicza S/Db2−1=MS/D^{b_2^{-1}}=M. Alicja nadal może odszyfrować pierwotną parę jako S/e(R,P2)a1S/e(R,P_2)^{a_1}.

Dlaczego tylko jeden etap delegacji? Po transformacji pierwszy składnik leży w GTG_T, a nie w G1G_1. Nie wolno podać go jako pierwszego argumentu tego samego pairingu. Zmiana typu wyjścia jest tutaj częścią funkcjonalności, nie usterką interfejsu.

Oryginalna publikacja opisuje pairing symetryczny. Powyższy układ typów dla BLS12-381 jest specjalizacją dydaktyczną do sprawdzania równań, a nie deklaracją przeniesienia oryginalnego twierdzenia bezpieczeństwa na pairing typu 3. Źródło konstrukcji z dwoma skalarami to Third Attempt w AFGH, NDSS 2005 i §3.3 wersji TISSEC 2006. W tej wersji oryginalny argument poufności wykorzystuje eDBDH, a ochrony sekretu głównego problem logarytmu dyskretnego.

NDSS
Network and Distributed System Security Symposium. Sympozjum o bezpieczeństwie sieci i systemów rozproszonych.
TISSEC
Transactions on Information and System Security. Dawny tytuł czasopisma ACM o bezpieczeństwie informacji i systemów.
eDBDH
extended Decisional Bilinear Diffie–Hellman. Rozszerzony decyzyjny biliniowy problem Diffiego–Hellmana. Dokładny zestaw dodatkowych danych określa założenie w publikacji o reenkrypcji.

Nieodzyskany skalar nie oznacza braku szkody

Proxy wraz z Bobem może obliczyć b2−1⋅rkA→B=a1⋅P2b_2^{-1}\cdot rk_{A\to B}=a_1\cdot P_2. Nie jest to sam skalar a1a_1, ale wystarcza do obliczania e(R,a1⋅P2)e(R,a_1\cdot P_2) i odczytu szyfrogramów drugiego poziomu Alicji. Ochrona sekretu głównego i nieprzekazywalność prawa odczytu są różnymi własnościami. Tego pomocniczego punktu nie wolno traktować jako obojętnej dodatkowej części publicznego klucza.

Omawiany rachunek nie daje automatycznie delegacji ograniczonej do jednego dokumentu, ochrony CCA ani odwołania dostępu do już ujawnionych danych. Szyfrowanie elementu grupy nie jest też gotowym formatem szyfrowania plików. Realne zastosowanie wymaga odpowiedniej konstrukcji hybrydowej i modelu integralności zgodnego z dozwoloną transformacją.

Szyfrogram przed przekształceniem i po nim

Rzeczywiste operacje MCL. Typy szyfrogramów pozostają jawne. Rachunek pairingowy jest instancją dydaktyczną, nie audytowanym wdrożeniem AFGH.

Cel operacji
Test odbiorcy
Szyfrowanie dla AlicjiRerandomizacjaAlicja
AA
(U,V)(U,V)
(U′,V′)(U',V')
V′⋅(U′)−aV'\cdot(U')^{-a}
Pośrednik przekształca szyfrogram. Nie otrzymuje klucza do jego odczytu.

Przed

Pierwszy składnikoczekuje
Drugi składnikoczekuje

Po

Pierwszy składnikoczekuje
Drugi składnikoczekuje

Kontrola wyniku

Wiadomość testowaoczekuje
Odczyt odbiorcyoczekuje

Porównanie oczekuje.

Zapis i obliczenia. Wzory schematu są multiplikatywne. MCL realizuje je na krzywej. W ElGamalu i BBS generator gg odpowiada punktowi P2P_2. W AFGH generatory g1,g2g_1,g_2 odpowiadają punktom P1,P2P_1,P_2. W grupach punktów iloczyn oznacza dodawanie, potęga oznacza mnożenie punktu przez skalar, a odwrotność oznacza punkt przeciwny. Nie potęgujemy współrzędnych. Pairing występuje tylko w wariancie AFGH. W grupie docelowej zapis pozostaje multiplikatywny.

Gotowe do rozpoczęcia.

Pełne wartości obliczeń

Serializacje MCL i skróty SHA-256. Dane powstają lokalnie. Skróty widoczne na rysunku nie są dodatkowymi operacjami protokołu.

WartośćPełny zapis

W teście niewłaściwego klucza porównujemy wynik z wiadomością znaną demonstratorowi. Sam odbiorca nie zawsze dostałby błąd. W surowym szyfrowaniu grupowym może otrzymać inny poprawny element grupy. To kolejna różnica między poprawnością, poufnością i uwierzytelnionym odczytem.

Mechanizm Cel Co musi znać pośrednik? Najważniejsza granica
Rerandomizacja ElGamala Nowy wygląd, ten sam odbiorca. Klucz publiczny i nową losowość. Nie daje integralności ani zmiany odbiorcy.
BBS Zmiana odbiorcy, możliwe dalsze delegacje. Skalarny iloraz kluczy. Delegacja odwracalna. Zmowa z odbiorcą ujawnia sekret.
AFGH, wariant omawiany Jednokierunkowa, jednoetapowa transformacja. Punkt klucza delegacji. Ochrona sekretnego skalaru nie wyklucza ujawnienia zdolności deszyfrowania.

Powiązania: zadania o typach i koluzji, laboratorium przekształceń, homomorfizm. Ta sama algebra może służyć innej funkcjonalności, ale nie przenosi automatycznie jej gwarancji.

W14b. Sieci miksujące: ukryć przyporządkowanie

Poufność ukrywa treść. Czasem równie istotne jest pytanie który szyfrogram wyjściowy odpowiada któremu wejściu. Przykładem jest partia zaszyfrowanych kart do głosowania lub wiadomości, których kolejność ujawniałaby nadawców. Mix przyjmuje całą partię, zmienia kolejność i przekształca szyfrogramy.

Dlaczego potrzebne są dwie operacje

  • Samo tasowanie: zmieniamy kolejność, ale bajty szyfrogramów pozostają te same. Obserwator porównuje wejścia i wyjścia i odtwarza permutację.
  • Sama rerandomizacja: zmieniają się bajty, ale zachowanie kolejności ujawnia przyporządkowanie pozycji.
  • Obie operacje: tajna permutacja usuwa powiązanie pozycyjne, a niezależna rerandomizacja usuwa proste rozpoznawanie po równości szyfrogramów. Dalszy argument prywatności wymaga właściwego modelu i założeń kryptograficznych.

Dla nn szyfrogramów pod wspólnym kluczem AA mix wybiera tajną permutację π\pi zbioru {1,…,n}\{1,\ldots,n\} i niezależne t1,…,tn∈Zqt_1,\ldots,t_n\in\mathbb Z_q. Publikuje:

Ci′=ReRand⁡A(Cπ(i),ti),1≤i≤n.C'_i=\operatorname{ReRand}_A(C_{\pi(i)},t_i),\qquad 1\le i\le n.

Kolejny mix wykonuje ten sam rodzaj operacji na nowej partii. W demonstracji wszystkie etapy pozostają widoczne, ale przypisanie wiadomości do pozycji jest ukryte do chwili odszyfrowania. Opcjonalne oznaczenie pochodzenia pokazuje wiedzę administracyjną demonstratora, a nie dane wysyłane przez prawdziwy mix. Losowa permutacja może pozostawić niektóre pozycje, a nawet całą kolejność bez zmian. Jedna taka próba nie jest błędem losowania.

Dwa miksy, cztery szyfrogramy i zachowana partia

Lokalny model partii szyfrogramów ElGamala w MCL. To nie działająca sieć anonimowa ani implementacja dowodu shuffle.

Operacja każdego miksu
Widok dydaktyczny

Partia wejściowa

  1. 1oczekuje
  2. 2oczekuje
  3. 3oczekuje
  4. 4oczekuje

Po miksie 1

  1. 1oczekuje
  2. 2oczekuje
  3. 3oczekuje
  4. 4oczekuje

Po miksie 2

  1. 1oczekuje
  2. 2oczekuje
  3. 3oczekuje
  4. 4oczekuje

Po odszyfrowaniu

  1. 1oczekuje
  2. 2oczekuje
  3. 3oczekuje
  4. 4oczekuje

Kontrola partii oczekuje.

Zapis i obliczenia. Wzory schematu są multiplikatywne. MCL realizuje je na krzywej. Generator gg odpowiada punktowi P2P_2. W grupach punktów iloczyn oznacza dodawanie, potęga oznacza mnożenie punktu przez skalar, a odwrotność oznacza punkt przeciwny. Nie potęgujemy współrzędnych. Ten rachunek nie używa pairingu.

Gotowe do rozpoczęcia.

Pełne wartości obliczeń

Serializacje MCL i skróty SHA-256. Dane powstają lokalnie. Skróty widoczne na rysunku nie są dodatkowymi operacjami protokołu.

WartośćPełny zapis

Co trzeba udowodnić, zanim zaufamy partii

Złośliwy mix mógłby usunąć kartę, powielić inną albo podmienić wiadomość. Samo poprawne odszyfrowanie każdej pozycji tego nie wykrywa. Potrzebujemy dowodu, że nowa partia zawiera ten sam multizbiór wiadomości, przy ukrytym przyporządkowaniu. Świadkiem są permutacja i losowości. Publiczne dane to klucz oraz obie partie:

∃ π∈Sn, t1,…,tn∈Zq:∀i, Ci′=ReRand⁡A(Cπ(i),ti).\exists\,\pi\in S_n,\ t_1,\ldots,t_n\in\mathbb Z_q: \quad \forall i,\ C'_i=\operatorname{ReRand}_A(C_{\pi(i)},t_i).

SnS_n oznacza zbiór wszystkich permutacji nn pozycji. Dowód z wiedzą zerową tej relacji ma przekonać odbiorcę o poprawności przetasowania bez pokazania π\pi. Równość iloczynów wszystkich szyfrogramów nie wystarcza, bo kompensujące się zmiany mogą zachować iloczyn, a zmienić wiadomości. Przykładem właściwych rozwiązań są weryfikowalne przetasowania Neffa. Demonstracja oblicza szyfrowanie, tasowanie i rerandomizację, ale nie implementuje tego dowodu.

Historia, model i granice anonimowości

Historyczny mix Chauma usuwa warstwy szyfrowania i przestawia wiadomości. Nie jest identyczny z pokazanym tu miksem rerandomizującym ElGamala. Łączy je cel: utrudnić powiązanie wejścia z wyjściem. Różnią je formaty komunikatów, operacje i sposób uzasadnienia bezpieczeństwa.

W modelu miksów rerandomizujących niepowiązywalność wejść i wyjść partii może opierać się na co najmniej jednym uczciwym miksie, który zachowa tajną permutację i losowość. To wymaga również poufności szyfrowania, właściwego postępowania z błędnymi szyfrogramami i nieprzekroczonego progu kompromitacji klucza deszyfrującego. Samo dodanie jednego serwera nie dowodzi anonimowości wobec aktywnego przeciwnika.

Odszyfrowanie można rozdzielić progowo między uczestników. Chroni to przed samotnym posiadaczem całego klucza, lecz wymaga bezpiecznego generowania udziałów i sprawdzania częściowych deszyfrowań. Nawet prawidłowy shuffle nie ukryje tożsamości wpisanej w treść, nie usunie korelacji długości i czasu poza modelem partii ani nie zmusi serwera do odpowiedzi. Weryfikowalność, anonimowość i dostępność trzeba rozpatrywać osobno.

Powiązania: wiedza zerowa, próg, ćwiczenia, laboratorium partii.