Jak Dandelion++ prywatyzuje źródło transakcji Monero

Opublikowano:
By Diego Salazar

Prywatność jako priorytet

Jako kryptowaluta, Monero może wydawać się bardzo nudne na pierwszy rzut oka. Nie chwali się, że zostanie „komputerem światowym”, bądź, że „zrewolucjonizuje przemysł xyz”. Po prostu stara się być prywatnym, cyfrowym, zamiennym pieniądzem, a każda aktualizacja i nowa technologia dąży do tego celu.

Ci, którzy uważają ten cel za niezbyt wielki lub ciekawy, nie rozumieją, jak trudno jest osiągnąć znaczącą prywatność, szczególnie w trwałej, otwartej księdze jaką jest blockchain. Każdy wyciek metadanych jest potencjalnym słabym punktem prywatności.

Monero ostrożnie chowa dane on-chain, takie jak odbiorca, nadawca i kwoty, za pomocą stealth addresses, ring signatures i Pedersen commitments. Minimalizuje to szanse na to, że zwykły obserwator wydedukuje te informacje po wysłaniu transakcji. Istnieją jednak niektóre ataki, które można wykonać w momencie gdy nastąpi transakcja i nie można wykonać potem.


Atak w celu ujawnienia adresu IP

Ataki te opierają się na identyfikacji adresu IP, z którego transakcja została nadana. Jeśli tę informację można wydedukować, to może ona ujawnić osobę, która wysłała Monero. Nie da się powiedzieć komu, ani ile, ale są przypadki, gdy wiedza, że ktoś wysłał Monero wystarcza, żeby mu zaszkodzić.

Dobra wiadomość jest taka, że jeśli ta informacja nie jest zebrana od razu to nie da się jej potem zdobyć, jako że adresy IP nie są przechowywane na blockchainie. Pocieszające jest, że taka forma ataku jest mało prawdopodobna, ponieważ przeprowadzenie go wymaga kontroli nad znaczną ilością węzłów Monero.

To może być trochę skomplikowane, więc wyjaśnimy kilka spraw. Każdy węzeł Monero łączy się z innymi węzłami w sieci, tak aby wzajemnie synchronizowały swoje kopie blockchaina. Te połączenia umożliwiają im dowiedzenie się o nowych transakcjach, ich propagację i wysyłanie własnych. Jako że węzeł może tylko poinformować inne o transakcji, o której sam wie, można się domyśleć, że pierwszy węzeł propagujący transakcję jest jej autorem.

Jeśli atakujący posiada większość sieci, każdy węzeł dowie się o transakcji od jednego ze swoich rówieśników i w oparciu o czas kiedy każdy węzeł się dowiedział, może wydedukować gdzie transakcja była nadana za pierwszym razem.

Jeśli nadal jest to skomplikowane to przedstawimy następujący przykład. Załóżmy, że oboje mamy wspólnego przyjaciela, który ukrywa się poza naszym polem widzenia. Ten przyjaciel głośno woła. Najpierw ja słyszę jego wezwanie i słyszę je głośniej niż Ty. Z tych informacji możemy wywnioskować, że prawdopodobnie jestem bliżej naszego przyjaciela niż Ty. Fakt, że usłyszysz dźwięk później (nawet o ułamek sekundy), a dźwięk jest cichszy, oznacza, że powinniśmy rozpocząć poszukiwania w mojej okolicy, nie Twojej.

Jeśli atakujący jest w stanie z powodzeniem odgadnąć, który z ich rówieśników wysłał transakcję, ponieważ zna adresy IP podłączone do swojego węzła, może być pewien, który adres IP go nadał. To są cenne dane, ponieważ adresy IP zawierają informację o kraju i dostawcy usług internetowych, a sami dostawcy wiedzą, który z ich użytkowników jest powiązany z którym adresem IP, skutecznie deanonimizując użytkownika Monero.

Zabezpieczenia

Jednym z możliwych zabezpieczeń przed tego typu atakiem jest użycie sieci anonimizującej, takiej jak Tor lub I2P. To sprawia, że nawet jeśli atakujący może wydedukować adres IP źródła, to prawdopodobnie nie jest to ten, z którego dokonano transakcji, ale raczej outproxy (I2P) lub exit node (Tor) sieci nakładki. Nie jest to jednak wszechstronne rozwiązanie, ponieważ sieci anonimizujące, VPN i podobne oprogramowanie są zakazane w wielu krajach, a oczekuje się, żeby wszyscy mogli korzystać, synchronizować i propagować w tych sieciach. Musi istnieć rozwiązanie, które nie wymaga wykorzystania zewnętrznego oprogramowania i sieci; takie, które jest dostępne dla zwykłej osoby.

To rozwiązanie to Dandelion++ (DPP), który jest ulepszeniem dla pomysłu Dandelion pierwotnie opracowanego dla Bitcoina. W tym protokole istnieją dwie fazy, stem phase i fluff phase; razem mają reprezentować dojrzewanie dmuchawca.

W fazie stem, co kilka minut, węzeł wysyłający losowo wybiera dwóch rówieśników ze wszystkich węzłów, z którymi jest podłączony. Gdy węzeł wysyła transakcję, własną, albo propagując transakcję z innego węzła w fazie stem, losowo wybiera jednego z tych dwóch wybranych rówieśników i wysyła do niego transakcję.

Faza puchu zachodzi, gdy węzeł odbiera transakcję i nadaje ją do każdego wychodzącego połączenia, a nie tylko do jednego losowo wybranego. Umożliwia to prawdziwą propagację transakcji. Co kilka minut węzeł definiuje się jako ten, który albo będzie propagował w trybie stem lub losowo w trybie fluff, więc faza stem może być dość długa, jeśli każdy węzeł łączący się jest definiowany jako węzeł stem, ale gdy transakcja trafi węzeł w fazie puchu, zostanie w niej.

Oznacza to, że atakujący nie będzie w stanie po prostu nasłuchiwać kierunku, z którego nadchodzi transakcja, ponieważ zanim została ona nadana do wszystkich, przeszła fazę stem, a węzeł początkowy fazy fluff nie jest węzłem, z którego pochodzi transakcja i nie wiadomo, z ilu węzłów stem przeszła transakcja wcześniej.

Oczywiście połączenie powyższych rozwiązań (DPP i sieci nakładki) zapewni jeszcze silniejszą gwarancję prywatności i ochrony przed śledzeniem IP. Należy również zauważyć, że DPP nie chroni przed inną formą ataku śledzenia sieci, którą można wykonać za pośrednictwem dostawców usług internetowych, ale jest to poza zakresem tego artykułu.

Dandelion++ jest dostępny w sieci Monero i będzie domyślnie używany na kliencie referencyjnym w wersji 0.16. Ta niewielka zmiana dodatkowo zapobiega możliwym atakom na sieć Monero i stanowi przykład, dlaczego Monero jest wiodącą, praktyczną, stosowaną, technologią prywatności.

Więcej do przeczytania