Poufne Transakcje w Kryptowalutach
Strona G艂贸wna
Artyku艂y
Poufne Transakcje w Kryptowalutach

Poufne Transakcje w Kryptowalutach

Zaawansowany
Opublikowane Feb 10, 2020Zaktualizowane Dec 28, 2022
6m

Spis tre艣ci


Wprowadzenie

Cz臋sto uwa偶a si臋, 偶e kluczowym dla funkcjonowania blockchain贸w jest transparentno艣膰 ca艂ego systemu. Oznacza to, 偶e ka偶dy w臋ze艂 w sieci jest w stanie przechowywa膰 kopi臋 danych transakcyjnych i na bie偶膮co weryfikowa膰, czy nie zosta艂y z艂amane regu艂y konsensusu. W wielu ksi臋gach rozproszonych ka偶dy mo偶e stworzy膰 eksplorator blok贸w, umo偶liwiaj膮cy mu przeszukiwanie blok贸w, transakcji oraz adres贸w.

Je艣li zale偶y nam na maksymalnej prywatno艣ci, nie jest to idealne rozwi膮zanie. W systemie takim jak Bitcoin ka偶d膮 jedn膮 transakcj臋 mo偶na powi膮za膰 z poprzedni膮. Coiny nie s膮 technicznie "czyste" (fungible), co oznacza, 偶e ka偶dy z nich mo偶e by膰 powi膮zany z okre艣lonymi transakcjami. Nikt nie mo偶e ci przeszkodzi膰 w wysy艂aniu bitcoin贸w, lecz jest w stanie odm贸wi膰 przyj臋cia transakcji, je艣li monety te wcze艣niej przesz艂y przez adres z czarnej listy.

W najgorszym wypadku brak zamienno艣ci m贸g艂by powa偶nie wp艂yn膮膰 na fundamenty systemu. Cena gie艂dowa聽czystych聽monet mo偶e posiada膰 premium w stosunku do zwyk艂ych starszych bitcoin贸w, z d艂ug膮 histori膮 transakcji.

Prywatno艣膰 w Bitcoinie jest cz臋sto zawy偶ana. Mo偶na nie tylko prze艣ledzi膰 monety, ale tak偶e adresy ich u偶ytkownik贸w. Ciesz膮 si臋 oni pseudoanonimowo艣ci膮 (widoczne s膮 adresy publiczne zamiast nazw), ale taka sytuacja nie jest pozbawiona wad. Zaawansowane techniki analizy danych mog膮, z rosn膮c膮 dok艂adno艣ci膮, grupowa膰 adresy, pr贸buj膮c zdeanonimizowa膰 uczestnik贸w sieci kryptowalut.

Jednym z proponowanych ulepsze艅 maj膮cym na celu zwi臋kszy膰 prywatno艣膰 transakcji jest system Poufnych Transakcji.


Czym s膮 Poufne Transakcje?

Poufne Transakcje (z ang. CT) zosta艂 po raz pierwszy zaproponowane przez prezesa firmy Blockstream - Adama Backa w 2013r. Ich koncepcja zosta艂a p贸藕niej rozszerzona, dzi臋ki pracy jednego z deweloper贸w Bitcoina, Gregorego Maxwella. Maxwell wyszczeg贸lni艂 problemy przedstawione w pierwszej sekcji (s艂aba zamienno艣膰 i niska pseudoanonimowo艣膰) 鈥 proponuj膮c rozwi膮zanie. Dok艂adne informacje o przenoszonych kwotach mo偶na by艂o ukry膰 przed szersz膮 sieci膮, tak aby jedynie strony transakcji wiedzia艂y, ile bitcoin贸w zosta艂o wys艂anych.

W normalnych warunkach (z publicznie widocznymi transakcjami), w臋ze艂 z 艂atwo艣ci膮 mo偶e sprawdzi膰 czy otrzymana kwota nie przekracza wys艂anej. Je艣li Alice pragnie wys艂a膰 0.3 BTC do Boba, pobiera niewykorzystane dane wyj艣ciowe (za艂贸偶my, 偶e jest to 1 BTC), po czym dzieli je na dwie r贸wne cz臋艣ci: 0.3 BTC do wys艂ania Bobowi i 0.69 z powrotem do siebie (reszta przeznaczona zosta艂a na op艂at臋 dla kopalni).

S膮 to proste obliczenia dla innych w臋z艂贸w: 1 przekracza 0,3 + 0,69, wszystkie podpisy s膮 poprawne, a dane wej艣ciowe Alice nie zosta艂y jeszcze wydane gdzie indziej. Oznacz to, 偶e transakcja musi by膰 wa偶na. Kiedy kwoty s膮 prywatne, sprawy nie maj膮 si臋 ju偶 tak banalnie. Jak w og贸le w臋ze艂 ma zacz膮膰 ocenia膰, czy nieznana kwota jest r贸wna lub przekracza sum臋 dw贸ch innych nieznanych kwot?


Zastosowana kryptografia

W celu ukrycia danych, wymagana jest pewna forma szyfrowania. Tradycyjne metody s膮 podobne do umieszczania dokument贸w w sejfie: po zamkni臋ciu w 艣rodku staj膮 si臋 bezu偶yteczne, dop贸ki nie zostan膮 usuni臋te. Do dzia艂ania Transakcji Poufnych potrzebujemy cyfrowego sejfu, bez ujawniania jego zawarto艣ci, przy jednoczesnej prostocie weryfikacji jego w艂asno艣ci przez osoby z zewn膮trz.

Odpowied藕 le偶y w szyfrowaniu homomorficznym, w schemacie zwanym zobowi膮zaniem Pedersena. Ten typ szyfrowania pozwala osobie z zewn膮trz na wykonywanie operacji na zaszyfrowanych danych, bez podgl膮dania ich tre艣ci.聽

Za pomoc膮 zwyk艂ej funkcji hashuj膮cej mo偶esz zatwierdza膰 dane, kt贸re chcesz p贸藕niej ujawni膰. Za艂贸偶my, 偶e og艂aszasz konkurs w mediach spo艂eczno艣ciowych, w kt贸rym ten kto odgadnie twoj膮 ulubion膮 gie艂d臋, wygra nagrod臋 w wysoko艣ci 0,01 BTC. Uczestnicy mog膮 by膰 sceptyczni co do Twoich intencji, gdy偶 po zako艅czeniu konkursu wystarczy艂oby spojrze膰 na udzielone odpowiedzi i wybra膰 gie艂d臋, o kt贸rej nie wspomniano.

Co mo偶esz zrobi膰, aby wykaza膰 Twoj膮 uczciwo艣膰, to zapewni膰 swoim obserwatorom hash: ci膮g pozornie losowych liczb i znak贸w, kt贸ry mapuje okre艣lone dane wej艣ciowe. Przekazujesz swoje informacje przez funkcj臋, aby uzyska膰 okre艣lony wynik. Zilustrujemy to za przyk艂adzie algorytmu SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Patrz膮c na to, nie masz poj臋cia, jakie by艂y dane wej艣ciowe. Nie ma r贸wnie偶 mo偶liwo艣ci odwr贸cenia funkcji. Je艣li jednak wiesz, 偶e dane wej艣ciowe to 鈥Binance鈥, mo偶esz 艂atwo sprawdzi膰, czy ich skr贸t odpowiada powy偶szemu. W ten spos贸b Twoi obserwatorzy maj膮 pewno艣膰, 偶e nie zmienisz odpowiedzi pod koniec konkursu 鈥 zrobienie tego ujawni艂oby Twoje oszustwo.

Jednak w rzeczywisto艣ci nie jest to zbyt bezpieczne. Chocia偶 Twoi obserwatorzy nie mog膮 podda膰 in偶ynierii wstecznej algorytmu, s膮 w stanie zbudowa膰 list臋 mo偶liwych hash贸w, sprawdzaj膮c ka偶dy z nich, dop贸ki nie dopasuj膮 w艂a艣ciwego. Mo偶emy zmniejszy膰 prawdopodobie艅stwo tego, dodaj膮c do danych, kt贸re b臋dziemy miesza膰, pewne losowe zmienne zwane 艣lepym czynnikiem.聽

Je艣li wprowadzimy 鈥Binance jest moj膮 ulubion膮 gie艂d膮, kt贸r膮 doceniam bardziej ni偶 jak膮kolwiek inn膮 2#43Wr聽鈥, hash staje si臋 o wiele trudniejszy do odgadni臋cia (a dla 0,01 BTC z pewno艣ci膮 ma艂o prawdopodobne jest, aby ktokolwiek nawet chcia艂 tego spr贸bowa膰).

Zobowi膮zanie Pedersen'a pozwala nam doda膰 dane wej艣ciowe za zobowi膮zaniami. Jak ilustruje to Maxwell:


C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Gdzie BF jest czynnikiem 艣ledz膮cym, a Ddanymi


Istnieje jeszcze kilka krok贸w, anga偶uj膮cych kryptografi臋 krzywych eliptycznych i dowody zasi臋gu, ale podstawow膮 ide膮 jest to, 偶e u偶ytkownik ma zobowi膮zanie Pedersena do swojego adresu. Podczas wysy艂ania 艣rodk贸w tworzone s膮 dwa dodatkowe zobowi膮zania (jedno na adres zmiany, kt贸ry ma zosta膰 zwr贸cony u偶ytkownikowi, a drugie na adres docelowy).聽

Nikt nie wie, ile kryptowaluty jest wysy艂ane, ale mo偶e zweryfikowa膰, czy zobowi膮zania dotycz膮ce zmiany i miejsca docelowego (lewa strona r贸wnania Maxwella) sumuj膮 si臋 do adresu pocz膮tkowego (prawa strona r贸wnania). Je艣li to oceni poprawnie, transakcja u偶ytkownika jest wa偶na, poniewa偶 mo偶na udowodni膰, 偶e dane wej艣ciowe s膮 r贸wne wynikom.


Co mo偶emy osi膮gn膮膰 dzi臋ki technologii Poufnych Transakcji?

Je艣li Poufne Transakcje mia艂yby zosta膰 zaimplementowane w Bitcoinie, cieszyliby艣my si臋 znacznie bardziej prywatnym systemem przesy艂ania warto艣ci. Zar贸wno dane wej艣ciowe, jak i wyj艣ciowe by艂yby maskowane, i ukrywane przed widokiem szerszej sieci, a wpisy w blockchainie by艂yby zaciemnione. Dodatkowo w臋z艂y mog艂yby nadal weryfikowa膰 ich autentyczno艣膰. Dzi臋ki temu ogromnemu zwi臋kszeniu prywatno艣ci bitcoiny mog艂yby by膰 skutecznie wymienialne, poniewa偶 analiza 艂a艅cucha nie ujawnia艂aby ju偶 historii danej jednostki.聽

Je艣li chodzi o to, czy Transakcje Poufne zostan膮 w艂膮czone do protoko艂u, w chwili obecnej nie wydaje si臋 to prawdopodobne. Dzi臋ki tej dodatkowej funkcjonalno艣ci transakcje sta艂yby si臋 znacznie wi臋ksze ni偶 standardowe - bior膮c pod uwag臋 ograniczon膮 przestrze艅 blokow膮, zwi臋kszy艂oby to tylko popyt na miejsce w blokach. Wymaga艂oby to r贸wnie偶 wyra偶enia zgody na zmian臋 kodu przez spo艂eczno艣膰 i g贸rnik贸w, co historycznie okazywa艂o si臋 niezwykle trudnym zadaniem.


Wnioski

Transakcje Poufne mia艂y pewne iteracje w innych kryptowalutach i 艂a艅cuchach bocznych Bitcoina. Na przyk艂ad Monero u偶ywa ich w po艂膮czeniu z konstrukcjami zwanymi sygnaturami pier艣cieniowymi, aby uzyska膰 anonimowo艣膰 i zamienno艣膰. Sidechain Liquid implementuje je dla wi臋kszej prywatno艣ci, a MimbleWimble pod膮偶a podobn膮 drog膮.

Ze wzgl臋du na korzy艣ci, jakie przynosz膮, Transakcje Poufne wi膮偶膮 si臋 z kompromisem o wi臋kszym zasi臋gu. Kryptowaluty cz臋sto borykaj膮 si臋 ze skalowalno艣ci膮 i przepustowo艣ci膮 w warstwie podstawowej, a wi臋ksze rozmiary transakcji nie s膮 atrakcyjne dla wszystkich. Powiedziawszy to, zwolennicy prywatno艣ci uwa偶aj膮, 偶e ukrywanie kwot transakcji i uczestnik贸w ma kluczowe znaczenie, aby naprawd臋 pozwoli膰 krypto przyj膮膰 rol臋 cyfrowej got贸wki.