A jednak się da!
O dowodach z wiedzą zerową (AJSD III)
Bywa tak, że chcemy o czymś przekonać niedowiarków, jednak w taki sposób, aby uwierzyli, ale też aby za dużo się nie dowiedzieli. Fabularna, nieinformatyczna ilustracja, którą lubię przywoływać, gdy próbuję wyrazić, o co mi chodzi, jest następująca. Wyobraźmy sobie, że potrafię zliczyć liczbę liści na drzewie, jeśli tylko spojrzę na nie przez 5 sekund. Więcej: twierdzę, że umiem to publicznie udowodnić w przeciągu 5 minut, i to tak, że wszyscy mi uwierzą, ale nikt się nie zorientuje, jak ja to robię!
Jak mógłby wyglądać protokół, który realizuje powyższe założenia? Popatrzmy:
- (1)
- Proszę publiczność o wskazanie dowolnego drzewa.
- (2)
- Patrzę na to drzewo przez 5 sekund i mówię: "to drzewo ma
liści".
- (3)
- Proszę publiczność o zawiązanie mi oczu.
- (4)
- Proszę publiczność o podejście do analizowanego drzewa i zerwanie z niego dowolnych
liści (oczywiście
publiczność ustala samodzielnie, nie informując mnie o swoim wyborze).
- (5)
- Proszę publiczność o rozwiązanie mi oczu.
- (6)
- Ponownie patrzę na drzewo przez 5 sekund i mówię: "to drzewo ma
liści".

I teraz tak: jeśli to z pewnością nikogo nie przekonałem. Jednak jeśli
to eksperyment daje do myślenia. Oczywiście, aby zmniejszyć szansę zdarzenia, że po prostu miałem szczęście, protokół weryfikacyjny można kilka razy powtórzyć, dla różnych drzew i różnych wyborów zmiennej
Jeśli więc pozytywnie przejdę na przykład 10 testów pod rząd, to sądzę, że już wszyscy mi uwierzą, że naprawdę umiem błyskawicznie zliczać liście na drzewie. Mimo to: nikt nie ma nawet cienia wskazówki, jak ja to robię!
Właśnie takie przekonywanie jak wyżej nazywamy fachowo dowodzeniem z wiedzą zerową (zero-knowledge proofs), a bardziej kolokwialnie: przekomarzaniem się w stylu "wiem, ale nie powiem". Okazuje się, że zaskakująco wiele stwierdzeń matematycznych da się udowodnić w taki właśnie sposób. W szczególności: gdybyśmy na przykład potrafili rozstrzygnąć pozytywnie hipotezę Riemanna, to możemy zaproponować światu pewną zabawę, w wyniku której wszyscy uwierzą, że faktycznie hipoteza Riemanna jest prawdziwa, ale nikt nawet powierzchownie nie liźnie smaku naszego dowodu. Jak to zrobić - obiecuję naszkicować na końcu, a na razie zajmijmy się prostszym przykładem.
Izomorfizm grafów
Opiszemy protokół dowodu z wiedzą zerową dla problemu izomorfizmu grafów (szerzej o tym problemie pisał Łukasz Kowalik w Delcie 12/2018). Przypomnijmy: problem polega na rozstrzygnięciu, czy dwa dane grafy oraz
są izomorficzne, czy też nie. Załóżmy więc, że znamy pewien izomorfizm
między
a
Naszym celem jest przekonać publiczność (fachowo: weryfikatora), że faktycznie znamy
ale bez ujawniania, jak to
w rzeczywistości wygląda.
Do dzieła:
- (1)
- Postulujemy publicznie, że grafy
oraz
są izomorficzne.
- (2)
- Publikujemy dowolny graf
który jest izomorficzny z
(czyli również z
).
- (3)
- Weryfikator wybiera liczbę
- (4)
- Publikujemy izomorfizm
między
a
- (5)
- Weryfikator sprawdza, czy
jest rzeczywiście poprawnym izomorfizmem między
a
- (6)
- Kroki 2-5 powtarzamy
razy.
Powyższy protokół ma trzy kluczowe cechy:
- (a)
- Jeśli naprawdę znamy postulowany izomorfizm, to jesteśmy zawsze w stanie wykonać poprawnie cały protokół;
- (b)
- Szansa, że oszukamy weryfikatora (to znaczy: przekonamy go, że znamy izomorfizm między
a
mimo że wcale go nie znamy) wynosi co najwyżej
;
- (c)
- Przekonany weryfikator nie ma bladego pojęcia, jak może wyglądać izomorfizm między
a

Naszkicujmy więc uzasadnienia stwierdzeń b oraz c (pozwolimy sobie napisać, że a jest trywialne):
Ad (b) Zauważmy, że jeśli odnosimy sukces z prawdopodobieństwem powyżej to przynajmniej w jednej z
iteracji protokołu, w kroku 4. byliśmy przygotowani na opublikowanie izomorfizmu zarówno między
a
(ozn.
), jak i między
a
(ozn.
). Istotnie - gdyby tak nie było, to w każdej iteracji mielibyśmy szansę co najwyżej
na akceptację przez weryfikatora, a więc ogólnie - co najwyżej tylko
Jednak znajomość zarówno
jak i
oznacza również znajomość
a to jest przecież izomorfizm między
a
Ad (c) Zastanówmy się, czego - po wykonaniu całego protokołu - dowiedział się weryfikator. Jak widać, poznał różnych trójek postaci
takich, że
jest izomorfizmem między
a
Czy taka wiedza jest w jakikolwiek sposób ekskluzywna? Otóż łatwo zauważyć, że absolutnie nie - przecież takie trójki można sobie samemu (w dowolnych ilościach) produkować, znając wyłącznie
oraz
a te są przecież publiczne od samego początku!
Cykl Hamiltona w grafie
Czas na nieco bardziej skomplikowany przykład - protokół dowodu z wiedzą zerową dla problemu istnienia cyklu Hamiltona w grafie.
W tym protokole będziemy używać idei zobowiązań opisanych przez Łukasza Rajkowskiego w poprzednim odcinku AJSD, w Delcie 11/2018.
Jak poprzednio, załóżmy, że znamy cykl Hamiltona pewnego grafu
Teraz:
- (1)
- Postulujemy publicznie, że w
istnieje cykl Hamiltona. Będziemy próbować to udowodnić, ale nie zdradzając, jak faktycznie wygląda
- (2)
- Losujemy dowolną permutację
oraz obliczamy graf
(czyli izomorficzny do
ale z wierzchołkami spermutowanymi według
).
- (3)
- Upubliczniamy następujące zobowiązania:
gdzie
stanowią opisy wszystkich krawędzi grafu
(to znaczy: każde
jest parą pewnych wierzchołków grafu
).
- (4)
- Weryfikator wybiera liczbę
- (5)
- Jeśli
to otwieramy wszystkie (zarówno permutacji, jak i krawędzi) zobowiązania z kroku 3.
- (6)
- Jeśli
to otwieramy zobowiązania tych (i tylko tych) krawędzi, które tworzą cykl Hamiltona w
(NIE otwieramy zobowiązania permutacji!).
- (7)
- Jeśli
to weryfikator sprawdza, czy otwarte krawędzie
są faktycznie krawędziami grafu
- (8)
- Jeśli
to weryfikator sprawdza, czy faktycznie otwarte krawędzie tworzą jeden zamknięty cykl długości
- (9)
- Kroki 2-8 powtarzamy
razy.
Twierdzimy, że ten protokół również ma trzy cechy, o których mówiliśmy w poprzednim przykładzie. To znaczy: jeśli rzeczywiście znamy cykl Hamiltona w to wykonamy protokół bez problemu (trywialna obserwacja). Dalej: szansa na oszukanie weryfikatora wynosi ponownie co najwyżej
a schemat dowodu jest dokładnie taki sam jak poprzednio. Wystarczy tylko zauważyć, że jeśli w którejkolwiek iteracji jesteśmy pewni akceptacji weryfikatora (niezależnie od wyboru
), to znaczy, że zobowiązaliśmy się do permutacji
takiej, że znamy cykl Hamiltona w
To jednak oznacza, że znamy również cykl Hamiltona w
Pozostaje tylko upewnić się, że nabyta (w wyniku realizacji protokołu) przez weryfikatora wiedza nic mądrego mu nie mówi. I tak jest w istocie: jeśli
to weryfikator uczy się tylko pewnego izomorfizmu
a jeśli
to weryfikator poznaje losową permutację liczb
zupełnie niezależną od
(bo w tym przypadku nie zna
!).
Co jeszcze?
Pokazaliśmy dwa przykłady protokołów dowodów z wiedzą zerową. Nasuwa się pytanie: jakie inne (i jak bardzo skomplikowane) stwierdzenia możemy podobnie dowodzić? Okazuje się (być może zaskakująco), że... niemal wszystkie. Aby się o tym przekonać, potrzebna jest pewna wiedza z teorii złożoności obliczeniowej, a konkretnie: informacja, że problem istnienia cyklu Hamiltona w grafie jest problemem NP-zupełnym. Nie jest ambicją tego artykułu, aby dokładnie wytłumaczyć to pojęcie (patrz na przykład Delta 11/2013, Delta 1/2017 czy Delta 11/2017), więc siłą rzeczy musimy w tym momencie trochę rozluźnić rygor ścisłej precyzji na rzecz intuicji.
Otóż fakt, że problem cyklu Hamiltona (CH) jest NP-zupełny, oznacza, że dzięki temu, że pokazaliśmy protokół dowodu z wiedzą zerową dla CH, wiemy jak konstruować protokoły z wiedzą zerową dla dowolnego innego problemu z klasy NP! W jaki sposób? Wystarczy zastosować odpowiednią efektywną redukcję do problemu CH (która musi zawsze istnieć) i dalej stosować protokół opisany wyżej.
W szczególności: załóżmy, że udowodniliśmy hipotezę Riemanna. Rozważmy teraz język:

Niewątpliwie (dlaczego?), więc dla każdego
istnieje dowód z wiedzą zerową, w szczególności: dla
A po ludzku: okazuje się, że istnieje graf (rozmiaru wielomianowego od
) taki, że jeśli hipoteza Riemanna ma dowód długości
to w tym grafie jest cykl Hamiltona, a jeśli nie ma takiego dowodu - to i cyklu Hamiltona w
nie znajdziemy. Więcej: znalezienie grafu
jest efektywnie obliczalną funkcją zdania
(zapisanego w jakiejś formalnej logice). Jeśli więc rzeczywiście znajdziemy dowód dla hipotezy Riemanna długości
i mamy nieodpartą pokusę pohandryczyć się ze światem, to możemy zawsze przedstawić wyłącznie dowód istnienia cyklu Hamiltona w grafie
Dowód z wiedzą zerową, rzecz jasna!