Dowód z wiedzą zerową ma dziwną nazwę, ale poważne zastosowania. Potrafi przekonać drugą stronę transakcji, że posiadamy jakąś informację bez jej ujawniania. Ale jak to właściwie działa i do czego może się przydać zwykłemu użytkownikowi krypto?
Co to jest dowód z wiedzą zerową
Dowód z wiedzą zerową (określany także jako dowód wiedzy zerowej) jest jednym z trzech możliwych rozwiązań, podnoszących bezpieczeństwo przetwarzania danych. Dwa inne to bezpieczne obliczenia wielostronne (MPC) oraz zaufane środowisko wykonawcze (TEE), o nich jednak porozmawiamy innym razem.
Dowód wiedzy zerowej (po angielsku Zero Knowledge Proof, ZKP) pozwala udowodnić jakiś fakt lub znajomość określonej informacji drugiej stronie bez ujawniania ich. Możesz udowodnić, powiedzmy, że masz dowód osobisty bez konieczności jego udostępniania, co mogłoby się wiązać z wyciekiem danych.
Mówiąc bardziej naukowo: dowód z wiedzą zerową to technika uwierzytelniania, pozwalająca twierdzącemu (Prover) udowodnić drugiej stronie (Verifer), że dane stwierdzenie jest prawdziwe, bez przekazywania innych informacji.
Poprawny dowód potwierdzający twierdzenie nie jest możliwy do wygenerowania, jeśli Prover nie ma dostępu do informacji. Z drugiej strony – Verifer tylko na podstawie przekazanych informacji nie potrafi udowodnić prawdziwości twierdzenia osobom trzecim.
Przykłady ZKP
Jak to może wyglądać w praktyce?
- Udowodnij mi, że masz tę książkę!
OK, podaję Ci listę pierwszych liter na każdej kolejnej stronie. - Udowodnij, że naprawdę jesteś iluzjonistą!
OK, włożę Ci kartę do lewej kieszeni, a wyciągnę z prawej. - Udowodnij, że masz plan labiryntu!
OK, wchodzę do środka i spotykamy się przy wyjściu C za 5 minut.
Więcej przykładów znajdziesz w Internecie.
W wszystkich powyższych wypadkach udowadniasz drugiej stronie, że posiadasz informację, nie ujawniając jej. Nie opowiedziałeś treści książki, kolega nie potrafi powtórzyć Twoich sztuczek, ani nie poznał mapy labiryntu – ale wierzy już, że Ty posiadasz potrzebne informacje.
Właściwości dowodów wiedzy zerowej
Aby dana metoda mogła zaliczać się do ZKP, musi spełniać następujące kryteria:
- Kompletność: musi umożliwiać potwierdzenie, że udowadniający mówi prawdę, jeśli tak jest.
- Rzetelność: musi pozwalać udowodnić fałszywość dowodu, jeśli nie zna on rozwiązania..
- Wiedza zerowa: nie może ujawnić niczego poza tym, czy dowodzący mówi prawdę, czy nie.
Interaktywność ZKP: teoria i praktyka
Istnieją dwa główne typy dowodów z wiedzą zerową:
Interaktywne dowody z wiedzą zerową (iZKP)
Tutaj chcący udowodnić twierdzenie i weryfikator wielokrotnie wchodzą ze sobą w interakcję. Ma to na celu wyeliminowanie czynnika losowości. Można mieć szczęście raz lub dwa, ale któraś z kolei prawdziwa odpowiedź świadczy, że Prover naprawdę zna rozwiązanie. Nie sposób przypadkowo udzielić poprawnej odpowiedzi setny raz z rzędu.
W praktyce ta metoda weryfikacji stwarza znaczne wyzwania. Wymóg wielu rund komunikacji sprawia, że iZKP są mniej przydatne w rzeczywistych zastosowaniach, gdyż powodują opóźnienia i generują wysokie opłaty transakcyjne.
Z tego powodu, choć mają fundamentalne znaczenie teoretyczne, zazwyczaj nie są wykorzystywane w praktyce.
Nieinteraktywne dowody z wiedzą zerową (niZKP)
Takie ZKP nie wymagają stałej komunikacji pomiędzy dowodzącym twierdzenia a weryfikatorem. Raz utworzony dowód może zostać zweryfikowany bez jakiejkolwiek interakcji.
Główną zaletą niZKP jest fakt, że są bardziej wydajne i skalowalne niż iZKP. Utworzenie dowodu jest wprawdzie bardziej wymagające obliczeniowo, za to jego weryfikacja jest szybsza. Ponieważ niZKP nie wymagają interakcji, lepiej nadają się do stosowania w systemach zdecentralizowanych, takich jak sieci blockchain.
niZKP mają jednak także swoje wady. Są mniej elastyczne niż dowody interaktywne i można je wykorzystać jedynie w określonych zastosowaniach. Mogą być także trudniejsze do wdrożenia i wymagać wyższego poziomu wiedzy technicznej.
Jak działają zkSNARK i zkSTARK
Skoro weszliśmy już w głąb króliczej nory, zbadajmy najczęściej stosowane w praktyce rozwiązania nieinteraktywne.
zkSNARK
Te dowody mają niewielki rozmiar (liczony w bajtach) i są łatwe do zweryfikowania. Generowane są przy użyciu krzywych eliptycznych, co jest wydajne pod względem zużycia gazu. Jednym z pierwszych przykładów zastosowania tej technologii był Zcash, działający już prawie 10 lat.
Wadą większości protokołów opartych na zkSNARK jest ich zależność od zaufanej konfiguracji (trusted setup). Oznacza ona początkowy proces konfiguracji, kiedy Prover i Verifer przyjmują wstępne parametry i tworzą klucze, wymagane w procesie weryfikacji.
Jeśli użyte w tym procesie dane nie zostaną bezpowrotnie wymazane, mogą one zostać wykorzystane do tworzenia fałszywych dowodów, np. kreowania tokenów z powietrza. Protokół nie oferuje narzędzi, które pozwoliłyby zakwestionować taką transakcję.
Z tego powodu, choć protokół jest szybki i wydajny, wymaga on założenia, że uczestnicy zaangażowani w tworzenie zaufanej konfiguracji postąpili uczciwie i skasowali swoje klucze. Wystarczy, aby zniszczył je tylko jeden… ale wciąż wymaga to zaufania.
zkSNARK nie są także quantum resistant i mogą zostać złamane po pojawieniu się komputerów kwantowych.
Przykład protokołu opartego na zkSNARK: Loopring.
Mimo zbliżonych nazw, zaufana konfiguracja w blockchain oraz zaufane środowisko wykonawcze (TEE) są odmiennymi koncepcjami i nie należy mylić ich ze sobą.
zkSTARK
Wbrew ogólnemu przekonaniu, są one nie tyle konkurencją, co raczej podgrupą zkSNARK, jak powiedzmy Corolla dla Toyoty.
W tym modelu losowość wykorzystywana przez weryfikatora, jest publicznie dostępna. Dowód można zweryfikować bez polegania na jakichkolwiek parametrach zewnętrznych, a więc zkSTARK nie wymaga zaufanej konfiguracji. Programiści mogą też bezpiecznie przechowywać dane i wykonywać obliczenia poza łańcuchem, co znacząco zwiększa skalowalność.
Technologia wymaga większych zasobów sprzętowych niż większość projektów zkSNARK, gdyż wielkość pojedynczego dowodu liczy się już nie w bajtach, ale w kilobajtach. Z tego powodu ich weryfikacja może trwać dłużej i być bardziej kosztowna.
Oparcie dowodu na funkcji haszującej (patrz: drzewo Merkle), powoduje, że to rozwiązanie uważane jest za quantum resistant.
Ponieważ parametry losowości są publicznie dostępne, ogranicza to centralizację i zwiększa przejrzystość. Z drugiej strony, ponieważ technologia jest skomplikowana i wdrożona znacznie później niż zkSNARK, trudniej jest o doświadczonych deweloperów.
Przykład protokołu opartego na zkSTARK: dYdX.
Inne rozwiązania
Choć klasyczne zkSNARK oraz zkSTARK są najbardziej popularne, istnieje także kilka innych implementacji ZKP w blockchain:
- Bulletproofs: nie wymagają zaufanej konfiguracji, używane są głównie do poufnych transferów, np. w sieci Monero
- PLONK: uniwersalny, bardzo obiecujący, obsługuje dowolne obliczenia, jednak wymaga zaufanej konfiguracji
- Groth16: specyficzna, bardzo wydajna implementacja zk-SNARK, jednak wymaga zaufanej konfiguracji
- Supersonic: zapewnia zwięzłe dowody bez zaufanej konfiguracji, jednak jest na wczesnym etapie rozwoju
- Halo 2: choć opiera się na zkSNARK, nie wymaga zaufanej konfiguracji. Wydajny, jednak potrzebuje dużej mocy obliczeniowej
Zastosowania dowodu wiedzy zerowej
Technologia bez przypadków użycia to tylko ciekawostka. Do czego możemy użyć ZKP?
- zkRollups, opisywane szczegółowo w artykule o rollupach. Pozwalają łączyć poszczególne transakcje w partie i przetwarzać zbiorczo poza łańcuchem. Do łańcucha Layer 1 (zazwyczaj Ethereum) przesyłane są tylko podsumowania transakcji, potwierdzone dowodami ich ważności. Niejako w pakiecie rollupy zapewniają także prywatność rozliczeń.
- Uwierzytelnianie bez hasła. Możemy udowodnić swoją tożsamość online bez podawania hasła, wystarczy ZKP potwierdzający, że je znamy. Wdrożony m.in. przez Microsoft ION, pozwalający identyfikować się kontem w sieci Bitcoin.
- Ochrona danych osobowych. Dowody z wiedzą zerową mogą posłużyć do tworzenia poświadczeń potwierdzających fakty bez ich ujawniania. Pozwala np. na bezpieczne wrażliwymi danymi dotyczącymi zdrowia, co robi np. Enigma.
- Bezpieczne wybory. ZKP pozwalają na anonimowe głosowanie, którego wyniki są możliwe do weryfikacji. Wyborca może udowodnić swoje prawo do oddania głosu oraz zażądać dowodu, że jego głos został uwzględniony. Technologia oferowana przez ZKVote czy Voatz była testowana m.in. podczas wyborów lokalnych w Utah.
- Łańcuchy dostaw. ZKP mogą zapewnić autentyczność danych dotyczących łańcucha dostaw bez ujawniania wrażliwych informacji biznesowych. IBM Food Trust wykorzystuje tę technologię do śledzenia łańcuchów dostaw żywności.
Silne i słabe strony użycia ZKP
Zalety
- zachowanie poufności transakcji i prywatności
- możliwość skalowania sieci (rollupy)
- możliwa interoperacyjność między blockchainami
Wady
- wymagana jest dodatkowa moc obliczeniowa
- złożoność programistyczna
- zaufana konfiguracja (zkSNARK)
Czołowe protokoły Zero Knowledge Proofs
ZKP jest modne, toteż wiele projektów chwali się ich używaniem, mimo że wykorzystują je tylko w niewielkim stopniu. Z tym zastrzeżeniem, za głównych przedstawicieli branży ZK można uznać:
- Polygon – dotąd znany jako sidechain Ethereum, intensywnie rozwija technologię zero-knowledge proofs. Jego pakiet ZK obejmuje m.in. rozwiązania Hermez, ID oraz zkEVM.
- ImmutableX – protokół Layer 2 oparty na technologii ZKP oferowanej przez StarkWare. Zaprojektowany specjalnie dla obsługi gier i tokenów NFT, bezpiecznie grupuje i weryfikuje transakcje poza łańcuchem.
- StarkNet – również sieć Layer 2, zbudowana na bazie Ethereum. Rozwijany przez StarkWare, na którego oprogramowaniu działa także ImmutableX, jednak w przeciwieństwie do niego ma znacznie więcej zastosowań, niż rynek NFT i gier.
- Mina – blockchain warstwy 1, pozycjonujący się jako najlżejszy łańcuch na świecie. Rozmiar blockchainu Mina ma stałą wielkość 22 KB, zapewnianą przez protokół zkSNARK działający w zapętleniu.
- Zcash – kryptowaluta oparta na własnym łańcuchu L1, wprowadzona na rynek w roku 2016. Użycie zkSNARK pozwala na opcjonalną prywatność transakcji. Podobnie jak wszystkie monety prywatności, jest nielubiany przez SEC i giełdy
Dowód wiedzy zerowej to bardzo obiecująca koncepcja. Może mieć kluczowe znaczenie w adopcji blockchain np. przez banki, które muszą pogodzić bezpieczeństwo transakcji z ich prywatnością. Nie wiemy jeszcze, która z jego wersji ostatecznie zatryumfuje, jednak sama technologia z pewnością zostanie z nami na dłużej.
Najczęściej zadawane pytania (FAQ)
Co to jest dowód z wiedzą zerową?
Jest to technologia kryptograficzna, pozwalająca udowodnić prawdziwość informacji bez jej ujawniania.
Co jest lepsze: zkSNARK czy zkSTARK?
Zależy do czego. zkSNARK jest łatwiejszy w użyciu i szybszy, zkSTARK daje za to większą gwarancję bezpieczeństwa.
Jak poznać, czy aplikacja używa technologii ZKP?
Jeśli musisz wprowadzić pełne hasło żeby zalogować się do aplikacji internetowej, nie implementuje ona w pełni ZKP, cokolwiek napisane jest na stronie.
Inwestowanie jest ryzykowne. Inwestuj odpowiedzialnie.