Post Enhancing Blockchain Privacy: Rola dowodów zerowej wiedzy w bezpiecznych transakcjach pojawił się po raz pierwszy na Coinpedia Fintech News
Wprowadzenie
Żyjemy w świecie informacji, gdzie dane są nową ropą. Dlatego z danymi wszystko i nic jest możliwe. Ta rzeczywistość napędzana danymi niesie ze sobą znaczące odpowiedzialności, szczególnie w zapewnieniu, że prywatne i wrażliwe informacje pozostają chronione. Technologia blockchain jest potężnym narzędziem, które priorytetowo traktuje przejrzystość ponad prywatnością. Choć przejrzystość jest niezbędna dla zaufania w zdecentralizowanym systemie, może ujawniać wrażliwe szczegóły, co nie zawsze jest pożądane, szczególnie w aplikacjach związanych z poufnymi transakcjami lub informacjami osobistymi.
Aby przezwyciężyć te ograniczenia, programiści wprowadzili szereg technologii poprawiających prywatność, takich jak dowody zerowej wiedzy (ZKP), zk-SNARKs, monety prywatności jak Monero i Zcash oraz zaawansowane techniki szyfrowania, takie jak szyfrowanie homomorficzne (HE).
Te technologie utrzymują równowagę między przejrzystością a poufnością użytkownika.
W tym artykule przyjrzymy się, jak działają te narzędzia poprawiające prywatność oraz ich zastosowaniom w rozwoju blockchain.
Zacznijmy!
Musisz myśleć, że blockchain to najbezpieczniejsza i najbardziej przejrzysta opcja w dziedzinie technologii, prawda? Ale nadal ma pewne wady. Na przykład, rozważmy Bitcoin, to przejrzysta waluta (publiczny blockchain). Gdzie twoje adresy są pseudonimowe. Ale jest haczyk! Górnicy mogą nadal mieć dostęp do danych na blockchainie, zanim zostaną one oficjalnie umieszczone w łańcuchu. Straszne, prawda?!
Dlatego, aby uniknąć takich sytuacji, wybieramy opcje poprawiające prywatność, a jedną z nich są ZPki. Przyjrzyjmy się temu!
Dowody zerowej wiedzy i zk-SNARKs
Czym są dowody zerowej wiedzy?
Dowód zerowej wiedzy to protokół kryptograficzny, w którym występuje dowodzący i weryfikator. Tutaj dowodzący musi przekonać weryfikatora, że pewne stwierdzenie jest prawdziwe, nie ujawniając żadnych innych faktów ani informacji poza samym faktem, że to stwierdzenie jest prawdziwe.
Zrozummy to bardziej intuicyjnie, biorąc pod uwagę rzeczywisty przykład:
Załóżmy, że masz przyjaciela Carla, który jest daltonistą i masz dwie piłki (jedną czerwoną i drugą zieloną) i musisz, aby odróżnił je bez faktycznego ujawniania, która piłka jest która.
Więc oto jesteś dowodzącym, a Carl jest weryfikatorem. Teraz prosisz Carla, aby umieścił obie piłki z tyłu, a on może wziąć jedną piłkę losowo, gdzie może zadać ci proste pytanie: Czy zamieniłem piłki? Ta procedura może być następnie powtarzana iteracyjnie i z prawdopodobieństwem 50% Carl powinien się przekonać („kompletność”), że piłki są rzeczywiście różnego koloru.
Jak sama nazwa wskazuje, udowodniłeś ważność swojego stwierdzenia, a twój przyjaciel nigdy nie dowiaduje się, która piłka jest zielona, a która czerwona; rzeczywiście, nie zyskuje żadnej wiedzy na temat tego, jak rozróżnić piłki. Ta wiedza może być następnie przekazana stronie trzeciej.
Przykład kodu:
# Prosta symulacja ZKP from hashlib import sha256# Załóżmy, że dowodzący zna „sekretną” hasłosekret_hasło = “blockchain_rocks”hash_of_secret = sha256(secret_password.encode()).hexdigest()# Dowodzący chce udowodnić wiedzę, nie ujawniając „secret_password”def prove_knowledge(guessed_password): return sha256(guessed_password.encode()).hexdigest() == hash_of_secret# Weryfikator potwierdza wiedzę dowodzącego, porównując haszeprint(prove_knowledge(“blockchain_rocks”)) # Zwraca True bez ujawniania „secret_password”
zk-SNARKs: Dowody zerowej wiedzy, zwięzłe, nieinteraktywne argumenty wiedzy
zk-SNARKs oznacza dowody zerowej wiedzy, zwięzłe, nieinteraktywne argumenty wiedzy. To konstrukcja dowodu, w której dowodzący musi udowodnić prawdę lub swoje posiadanie bez interakcji z weryfikatorem. To po prostu bardziej specyficzna wersja ZKP. zk-SNARK jest bardziej przydatny, gdy nie ma możliwości komunikacji między dwiema stronami, np. transakcje online bez komunikacji w czasie rzeczywistym.
Ten koncept jest nieco trudny do zrozumienia, krótko mówiąc, możemy powiedzieć, że mówisz innej osobie, że znasz jej sekret, nie ujawniając, jaki to sekret, ale zamiast tego go udowadniając.
Czy wiesz? że zk-SNARKs są wdrażane w Zcash, monecie prywatności znanej z chronionych transakcji?
Ćwiczenie: Zbuduj zk-SNARK z libsnark
Użyj libsnark, aby skonfigurować i zweryfikować prosty zk-SNARK, lub zapoznaj się z dokumentacją biblioteki w celu uzyskania przykładowych projektów dotyczących konstrukcji dowodów zk-SNARK.
Teraz pytanie, jak działa ten nieinteraktywny ZKP?
Konfiguracja: zk-SNARKs wymagają jednorazowej konfiguracji dla kluczy kryptograficznych, używanych do konstruowania dowodów.
Generowanie dowodu: dowodzący używa prywatnych informacji do wygenerowania zwięzłego dowodu, który można zweryfikować publicznie.
Weryfikacja: Weryfikatorzy mogą potwierdzić, że dowodzący ma pewną wiedzę, nie znając szczegółów.
Monety prywatności
Monety prywatności to kryptowaluty, które zostały zaprojektowane specjalnie w celu priorytetowego traktowania prywatności i ukrywania tożsamości użytkownika.
Monero
Monero (XMR) to kryptowaluta o zwiększonej prywatności. Używa specjalnego blockchaina, który ukrywa szczegóły transakcji, co sprawia, że prawie niemożliwe jest dla osób trzecich zobaczenie, kto wysyła lub otrzymuje Monero, ile jest wysyłane lub jakiekolwiek salda kont. To utrzymuje anonimowość i zapewnia, że wszystkie jednostki Monero są wymienne.
Fungible (wymienne): oznacza, że jeden Monero zawsze jest równy innemu, bez śladu historii.
Jak Monero zapewnia prywatne transakcje?
Monero wdraża unikalne techniki w celu zapewnienia prywatnych transakcji. Przyjrzyjmy się tym technikom:
Podpisy pierścieniowe: łączy podpis transakcji użytkownika z innymi, aby zatuszować prawdziwe pochodzenie.
Przykład kodu:
import random# Lista kluczy publicznych dla uczestnikówparticipants = [“Alice”, “Bob”, “Charlie”, “Dave”]# Wybierz losowego uczestnika jako „nadawcę”sender = random.choice(participants)# Mieszanie podpisu nadawcy z innymi mixed_signatures = random.sample(participants, len(participants))print(“Grupa podpisów pierścieniowych:”, mixed_signatures)print(“Nadawca (ukryty):”, sender)
Stealth Addresses: Tworzy unikalne, jednorazowe adresy dla każdej transakcji, zapewniając, że tylko nadawca i odbiorca znają cel.
Transakcje Ring Confidential (RingCT): Ukrywa kwotę transakcji, aby zapobiec łączeniu transakcji przez strony trzecie.
Przeczytaj także:
Skalowanie blockchaina uproszczone: Przewodnik po efektywnych rozwiązaniach warstwy 1 i warstwy 2
,
Zcash
Zcash (ZEC) to moneta prywatności, która została zbudowana na bazie kodu Bitcoin. Dzieli wiele podobieństw z Bitcoinem, takich jak regularne i przejrzyste transakcje, ale także oferuje opcję chronionych transakcji.
Chroniona transakcja: Chronione transakcje w Zcash to prywatne transakcje, które używają metody kryptograficznej zwanej zk-SNARKs (dowody zerowej wiedzy, zwięzłe, nieinteraktywne argumenty wiedzy), aby całkowicie zachować poufność szczegółów transakcji.
Dlatego Zcash obsługuje zarówno przejrzyste, jak i chronione transakcje z adresami T (przejrzyste adresy, które działają jak standardowy Bitcoin) oraz adresami Z (chronione adresy, które ukrywają szczegóły transakcji).
Chronione transakcje Zcash są doskonałym rozwiązaniem dla scenariuszy wymagających poufności, takich jak transakcje B2B w zarządzaniu łańcuchem dostaw, gdzie prywatność danych jest kluczowa.
Konfiguracja
# Zainstaluj klienta Zcash sudo apt-get update && sudo apt-get install zcash# Utwórz chroniony adres zcash-cli z_getnewaddress# Wyślij na chroniony adres zcash-cli z_sendmany
Szyfrowanie homomorficzne i jego rola w blockchainie
Szyfrowanie homomorficzne (HE) to rodzaj szyfrowania, które pozwala na wykonywanie obliczeń na danych, gdy są one nadal zaszyfrowane. Oznacza to, że nie musisz odszyfrowywać danych, aby z nimi pracować. Gdy w końcu odszyfrujesz wyniki, jest to tak, jakbyś wykonał obliczenia na oryginalnych, nieszyfrowanych danych.
Ta technika jest szczególnie przydatna dla prywatności, ponieważ pozwala na przechowywanie i przetwarzanie wrażliwych danych na zewnętrznych serwerach (jak w chmurze) bez ich ujawniania
Są głównie dwa rodzaje technik szyfrowania homomorficznego:
Częściowe szyfrowanie homomorficzne (PHE): Częściowe HE pozwala tylko na określone operacje na danych, na przykład dodawanie i mnożenie.
Pełne szyfrowanie homomorficzne (FHE): FHE obsługuje dowolne operacje na zaszyfrowanych danych. Ale jest zasobożerne
Przykład kodu:
from seal import EncryptionParameters, SEALContext, IntegerEncoder# Ustaw parametry szyfrowania parms = EncryptionParameters(scheme_type.BFV)parms.set_poly_modulus_degree(1024)parms.set_coeff_modulus(coeff_modulus_128(1024))# Przykład zaszyfrowanej sumy encrypted_sum = add_encrypted_values(enc1, enc2)print(“Zaszyfrowana suma:”, encrypted_sum)
Wnioski
Technologie poprawiające prywatność, takie jak dowody zerowej wiedzy (ZKP), zk-SNARKs, monety prywatności i szyfrowanie homomorficzne redefiniują to, co jest możliwe w blockchainie, tworząc niezbędną równowagę między prywatnością a przejrzystością. Dla programistów ta ewolucja przynosi ekscytujące możliwości. Integrując te funkcje prywatności w zdecentralizowanych aplikacjach, programiści mogą zaspokoić potrzeby branż takich jak finanse, opieka zdrowotna i IoT, gdzie potrzebna jest poufność.
Ciągle się ucz i miłego kodowania!!