Atak DDoS na blockchain: na czym polega i jak się przed nim chronić

Krzysztof Surgut
11.06.2018 Krzysztof Surgut

Gorącym trendem ostatnich miesięcy jest technologia blockchain. Technologia ta popularność swoją zawdzięcza w dużej mierze kryptowalutom, a szczególnie Bitcoinowi.

Technologię blockchain szczególnie upodobał sobie rynek finansowy. W Polsce pierwsze banki chwalą się testami tej technologii, np. PKO BP czy Alior Bank. Może nie od razu blockchain będzie wykorzystywany w tych instytucjach do obrotu pieniędzmi, ponieważ wymienione polskie banki przyglądają się na razie zastosowaniu tej technologii w obiegu dokumentów.

Jednak warto zauważyć, że jest już poważna przymiarka do pierwszego w Polsce start-upowego banku – Horum Bank. Pomimo, że pomysłodawcami Horum Banku są Polacy, to pojęcie „polskiego banku” będzie trochę na wyrost, ponieważ rejestracja tej instytucji finansowej odbywa się za granicą, gdzie „licencja bankowa” jest tańsza i szybciej wydawana niż w Polsce. „Serce systemowe” nowego Horum Banku ma bić w rytm nadawany technologią blockchain (przez rozproszony rejestr – blockchain – przechodzić mają informacje o wszystkich transakcjach, przelewach, obiegu dokumentów itd.).

Skoro banki postanowiły poświęcić czas swoich kluczowych pracowników IT oraz wydają znaczące pieniądze na pierwsze wdrożenia technologii blockchain, to można to odczytywać jako informację, że technologia jest już dojrzała i bezpieczna. Czy aby na pewno?

Naukowcy z University of Central Florida opublikowali badania nad wpływem ataku DDoS na koszty „kopania kryptowalut”. Wnioski są jednoznaczne – na koszty można wpływać atakiem DDoS. A to oznacza, że skoro można zaburzyć działanie tych systemów, to pojawia się możliwość realnego zaburzenia poprawności działania lub wpływania na założone koszty działania systemów opartych o blockchain.

Ataki na kryptowaluty

Badany przez naukowców atak DDoS to nie jedyny typ ataku na systemy kryptowalut, bazujących na blockchain. Ogólnie zauważalny jest mocny trend zwiększonej ilości ataków na kryptowaluty. Nie ma roku, aby nie pokazała się informacja o włamaniu na jakąś giełdę kryptowalut i kradzież notowanych tam walut.

Hakerzy wykorzystują powszechną wiedzę o sposobie działania blockchain do tego, aby znaleźć sposób na zaburzenie procesu generowania informacji zapisywanych w łańcuchu rejestrowym (podstawowy mechanizm ewidencjonowania informacji w technologii blockchain). Najbardziej znaną kryptowalutą, która wylansowała technologię blockchain, jest Bitcoin. Posiada ona jednak swoje słabe strony.

Na czym polega słabość technologiczna Bitcoina?

Słabe strony Bitcoina są powszechnie znane i nie stanowią jakiejś tajemnej wiedzy. Wielkość bloku informacyjnego Bitcoina ograniczona jest do 1MB, tym samym średni czas „wykopania” takiego bloku to 10 minut. Rozmiar danych indywidualnej transakcji waha się od 200 bajtów do 1 kB. Powyższe ograniczenia Bitcoina sprawiają, że możliwym jest weryfikowanie i potwierdzanie jedynie 3-7 transakcji na sekundę. Tak niska ilość transakcji, realizowanych w ciągu pojedynczej sekundy, stanowi dużą podatność na ataki DDoS typu ataku wolumetrycznego.

O ile w przypadku stron internetowych atak DDoS polega na zalewaniu łącza potokiem niechcianych pakietów, to w przypadku Bitcoina wygląda to trochę inaczej. W przypadku Bitcoina celem jest sieć transakcyjna.

Czym jest taka sieć? To zespół wielu komputerów/serwerów, które komunikują się pomiędzy sobą z wykorzystaniem protokołu P2P. Każdy z tych komputerów/serwerów dołączonych do sieci transakcyjnej przechowuje swój własny rejestr transakcji Bitcoin.

Rejestr jest tak skonstruowany, że informacja o każdej transakcji zapisywana jest w taki sposób, iż wykorzystuje informacje zawarte w zapisanej już informacji o poprzedniej transakcji. W ten sposób powstaje łańcuch powiązanych ze sobą zapisów – stąd nazwa blockchain.

Próba usunięcia któregokolwiek z zapisów z łańcucha powoduje jego uszkodzenie. W ten sposób można jedynie dodawać nowe transakcje, a historia zapisanych wcześniej transakcji jest praktycznie niezmienna. Takich identycznych łańcuchów informacyjnych jest dokładnie tyle kopii ile podłączonych jest od sieci transakcyjnej komputerów/serwerów. Za potwierdzenie czy dana transakcja jest dopisywana do każdej z kopii łańcucha informacyjnego odpowiada specjalny mechanizm synchronizacji informacji w sieci transakcyjnej.

Przy takiej konstrukcji logiki działania technologii blockchain trudno jest zastosować klasyczny atak DDoS, gdzie na wskazany adres IP kieruje się ruch niechcianych pakietów. W przypadku sieci transakcyjnej Bitcoina nie jest to takie proste. Dlatego atak DDoS na Bitcoin ma trochę odmienny charakter.

Podczas ataku DDoS atakujący nie wysyłają niechcianych pakietów, ale zalewają sieć transakcyjną Bitcoina transakcjami o bardzo niskiej wartości. Co to oznacza w praktyce? Pojedyncza jednostka kryptowaluty dzieli się na mniejsze swoje jednostki. Tak jak polską złotówkę można podzielić na mniejsze monety, z dokładnością do 1 grosza, tak samo można zrobić z wirtualną walutą. W przypadku Bitcoina, każdego z nich podzielić można na 108 mniejszych jednostek, zwanych satoshi.

Czyli jeżeli złotówkę można podzielić na 100 groszówek, to 1 Bitcoin można podzielić na 1 stomilionową cząstkę. Czyli 1 Bitcoin może być podzielony na 100.000.000 wirtualnych „groszówek” zwanych satoshi. Dzięki możliwości „rozmienienia” Bitcoina na tak drobne wirtualne monety, system musi być gotowy do obsługi tak małych transakcji. W efekcie atakujący ma możliwość wygenerowania olbrzymiej ilości bardzo drobnych transakcji (groszowych) Bitcoin, którymi zaleje system transakcyjny. Z technicznego punktu widzenia, sposób obsługi transakcji 1 satoshi i 1 Bitcoina jest identyczny.

W tym miejscu objawia się kolejna słabość technologii blockchain. Z uwagi na to, że wszystkie transakcje przechowywane w rozproszonych rejestrach wymagają czasu, aby zadziałał mechanizm uspójnienia każdej kopii łańcucha informacyjnego, każda nowa transakcja wymaga czasu, aby tak się stało. Przez ten okres, zanim nastąpi uzgodnienie i potwierdzenie transakcji, taka transakcja przechowywana jest w specjalnym rejestrze.

W przypadku Bitcoina, wszystkie niepotwierdzone transakcje przechowywane są w specjalnym rejestrze transakcji niepotwierdzonych (znany powszechnie pod określeniem Mempool). W takiej sytuacji wygenerowanie transakcji przez użytkownika skutkuje pojawieniem się informacji o transakcji, która następnie transmitowana jest do całej sieci transakcyjnej Bitcoin. Zanim sieć transakcyjna potwierdzi rejestrację nowej transakcji, czeka ona na potwierdzenie w takim tymczasowym rejestrze.

Wielkość rejestru niepotwierdzonych transakcji
Wielkość rejestru niepotwierdzonych transakcji (Mempool Size) w ostatnim roku, źródło: https://blockchain.info

Problem zaczyna się, gdy ilość nowych transakcji zaczyna być większa niż wydajność sieci transakcyjnej (pamiętajmy, że dla Bitcoina to 3-7 transakcji na sekundę). W takim przypadku rozpoczyna się proces „zalegania” nowych transakcji.

To „zaleganie” niepotwierdzonych transakcji nie może trwać w nieskończoność, a tym samym może generować również duży problem w zakresie wartości transakcyjnej. W 2017 r. wielkość rejestru niepotwierdzonych transakcji osiągnęła 115k, co było równoważne transakcjom o wartości 700 mln USD.

Co się dzieje, gdy transakcje nie zostały potwierdzone?

W przypadku braku potwierdzeń jest identycznie jak w przypadku znanych nam płatności online w internecie.

Jeżeli kupujecie coś w sklepie internetowym i płacicie za towar/usługę przy wykorzystaniu płatności realizowanej online, to do momentu aż sklep internetowy otrzyma potwierdzenie transakcji uznaje się, że płatność nie została dokonana.

Identycznie jest w przypadku transakcji Bitcoin. Jeżeli transakcja dokonana kryptowalutą nie otrzyma potwierdzenia rejestracji w rozproszonej sieci transakcyjnej, to tak naprawdę cała transakcja jest w zawieszeniu – nie wiadomo, czy doszła do skutku, czy też nie. W skrajnym przypadku sieć transakcyjna może nie potwierdzić rejestracji transakcji daną krytpowalutą i w efekcie nie otrzymamy należnych nam pieniędzy w wirtualnej walucie.

Ta „niewiedza” ma swoje realne konsekwencje w obrocie kryptowalutami. Użytkownicy krytpowaluty są gotowi zapłacić więcej za szybsze potwierdzenie transakcji. Tym samym koszt potwierdzenia, zwany powszechnie „kosztem kopania kryptowaluty”, rośnie. Ale o tym za chwilę.

W praktyce „kopanie kryptowaluty” to nic innego jak wykonanie skomplikowanych obliczeń, aby rozbudować łańcuch informacyjny rozproszonego rejestru, a tym samym dokonać potwierdzenia zarejestrowania danej transakcji.

Oczywiście nie wystarczy jedno potwierdzenie dołożenia do rejestru transakcji dla pojedynczego zdarzenia.

Kopii rejestru transakcji jest dużo i znajdują się na wielu komputerach czy serwerach w internecie. Dopiero kiedy większość rejestrów znajdujących się w sieci transakcyjnych potwierdzi, że dodała do przechowywanego rejestru transakcyjnego nową transakcję, wówczas uznaje się, że transakcja została potwierdzona. Dopiero w tym momencie transakcja znika z rejestru tymczasowego i uznawana jest za transakcję obsłużoną.

Tyle ogólnego opisu generowania zapisów transakcyjnych w krytpowalutach. Zainteresowanych odsyłam po bardziej szczegółową wiedzę do specjalizowanych materiałów. Przejdźmy do samej idei ataku.

Metoda i skutki ataku

Jeżeli znamy zasadę działania, to dużo prościej zbudować scenariusz zakłócenia działania systemu. W przypadków ataków na Bitcoin ma to wymiar nie tylko techniczny, ale także (a może przede wszystkim) ekonomiczny. Przyjrzyjmy się mechanizmowi ataku DDoS na Bitcoina. Atakujący szuka takiego sposobu, aby ponosić jak najniższe koszty rejestracji swoich „groszowych” transakcji (chodzi o koszty przekazywania i opłaty eksploatacyjne płacone „górnikom” obliczającym blockchain). Jednocześnie, atakujący jest zainteresowany, aby jego „groszowe transakcje” zalegały w rejestrach transakcji niepotwierdzonych tak długo jak to tylko jest możliwe.

Co się dzieje w takich wypadkach, gdy jest zbyt dużo niepotwierdzonych transakcji? Płacący w Bitcoinach gotowi są zapłacić odrobinę więcej niż standardowa opłata, aby systemy obliczeniowe „górników kryptowalut” obsłużyły ich transakcje „poza kolejnością”. Czyli płacą za to, aby „systemy informatyczne górników” wyjęły ich transakcję z rejestru transakcji niepotwierdzonych, dokonały niezbędnych obliczeń i dołączyły do łańcucha rejestru (blockchain).

W ten sposób można utworzyć „uprzywilejowaną kolejkę” w rejestrze transakcji niepotwierdzonych, która ma wyższy priorytet obsługi. Z takiego stanu rzeczy najbardziej cieszą się „górnicy”, ponieważ wykonanie specjalnej operacji „uprzywilejowania” wymaga odpowiednio wyższej zapłaty. Autorzy z University of Central Florida znormalizowali wartości kosztu „wykopania” (Mining Fee) do wielkości rejestru transakcji oczekujących (Mempool Size). Poniższy wykres prezentuje wyniki ich badań.

fee paid to the miners
Relacja pomiędzy rozmiarem rejestru niepotwierdzonych transakcji (Mempool Size) a opłatą ponoszoną za obliczenie (fee paid to the miners).

Dane dotyczą realnych transakcji, więc można zaobserwować korelację pomiędzy wzrostem kolejki w rejestrze Mempool, a wzrostem wartości opłaty za „kopanie”. W taki sposób osiąga się efekt identyczny z klasycznym atakiem DDoS, czyli zaburzeniem poprawności działania systemu informatycznego, w wyniku zalania sieci transakcyjnej dużą ilością „groszowych” transakcji.

W zależności od stworzonych mechanizmów reagowania w systemie korzystającym z technologii blockchain, efekty takiego ataku mogą być różne. Począwszy od dużych opóźnień w potwierdzaniu rejestrowanych zdarzeń (np. transakcji), przez wzrost kosztu obsługi rejestracji takich zdarzeń, aż po sytuacje gdy mechanizm blockchain uzna, że transakcja nie uzyskała odpowiedniej ilości potwierdzeń w rozproszonych łańcuchach i odrzuci ją jako błędną. W praktyce oznaczałoby to np. „unieważnienie” transakcji, która w praktyce mogła mieć miejsce.

Naukowcy z University of Central Florida pokazali także wynik swojego eksperymentu. W zależności od przyjętej metody zarządzania wydajnością można było zaobserwować różne zachowanie parametrów blockchain.

Podsumowanie

Co to oznacza dla firm wdrażających blockchain do obsługi swoich transakcji? Świadomość słabości mechanizmów blockchain powinna być brana pod uwagę przy projektowaniu własnego systemu opartego o technologię blockchain od samego początku.

Bez znaczenia jest, czy obsługujemy rejestrację transakcji kryptowalut, czy też prowadzimy rejestr dokumentów lub innych zdarzeń. Podstawowym założeniem w przypadku blockchain jest pewność zapisów rejestrów zdarzeń oraz rozproszony mechanizm ich przechowywania. Tutaj pojawia się pytanie: Jak przeciwdziałać atakom DDoS?

Jest parę metod radzenia sobie z tym problemem. Ekonomiczna – atakującym nie powinno się to po prostu opłacać. Choć to założenie nie musi być prawdziwe, w przypadku gdy atakującym ktoś zapłaci za przeprowadzenie takiego ataku (np. rząd innego kraju, czy konkurencyjna firma). A patrząc na efekt związany ze wzrostem kosztu obsługi transakcji przez „górników”, nikt nie da 100% gwarancji, że za chwilę nie pojawią się „kopalniane spółdzielnie” – zainteresowane wzrostem stawki za obliczenia (czyli nowy rodzaj spekulacji ceną za usługi).

Alternatywnym rozwiązaniem problemu jest zwymiarowanie logiki obsługi rejestru niepotwierdzonych transakcji blockchaina w oparciu o analizę „wieku transakcji”. Wówczas bez względu na wielkość rejestru niepotwierdzonych transakcji, do potwierdzenia wybierane są zawsze najstarsze transakcje – bez uprzywilejowania dla transakcji „bardziej opłacalnych dla górników”.

Można też zastosować mechanizm mieszany, gdzie stworzony algorytm obsługi transakcji niepotwierdzonych będzie brał pod uwagę zarówno ilość niepotwierdzonych transakcji, jak i ich wartość.

Ostatnim wrażliwym elementem technologii blockchain jest wielkość sieci transakcyjnej. W przypadku Bitcoina jest to olbrzymia rzesza urządzeń podłączonych do internetu, które komunikują się przy wykorzystaniu technologii P2P.

Jednak w przypadku wdrożeń małych sieci transakcji – zamkniętych, ograniczonych do zastosowań w konkretnym celu, w konkretnej korporacji – wielkość sieci transakcyjnej może być szczególnie podatna na ataki wolumetryczne DDoS.

W przypadku małych sieci transakcyjnych dużo łatwiej jest wygenerować taki atak DDoS i znacząco wydłużyć rejestr transakcji niepotwierdzonych, a tym samym mocno zaburzać procesy blockchain. To pozwala zawiesić na dłuższy czas wiarygodność wielu transakcji, których „nieustalony stan” może wływać na działanie innych procesów. Na co może mieć to wpływ?

Wszystko zależy od sposobu wykorzystania technologii blockchain, informacji jakie będą przechowywane w łańcuchu informacyjnym rejestrów oraz powiązanych z tym systemów usługowych. Myślę, że po pierwszych poważnych wdrożeniach blockchain życie napisze nowe scenariusze, które będą stanowić bazę do przemyśleń dla kolejnych architektów algorytmów blockchain.

Krzysztof Surgut
Krzysztof Surgut krzysztof.surgut@dataspace.pl Przez ostatnie 15 lat współrealizował zaawansowane, ogólnopolskie projekty telekomunikacyjne i informatyczne (m.in. w Dialog, HAWE). Ekspert z zakresu systemów transmisji danych, VoIP, IPTV, systemów bezpieczeństwa oraz systemów radiowych. Współtwórca pierwszego w Polsce Scrubbing Center.
Newsy
Data Space w 360 stopniach
Bezpieczeństwo IT
Bezpieczeństwo dzieci w internecie, cz.2: metody i narzędzia