Postawy teoretyczne

Bo warto wiedzieć o co w tym wszystkim chodzi.

System SYDEUS powstał w odpowiedzi na rosnące zapotrzebowane organów procesowych w sprawach dotyczących deanonimizacji użytkowników kryptowalut. Nazwa systemu pochodzi od: SYstem DEanonimizacji Użytkowników Sieci (w wersji polskiej), lub SYstem of DEanonimizing of USers (w wersji angielskiej).

Bitcoin [BTC]

Bitcoin (BTC) to zdecentralizowana kryptowaluta, opierająca zasady swojego funkcjonowania na kryptografii. Została wprowadzona w 2009 roku przez osobę (bądź grupę osób) o pseudonimie Satoshi Nakamoto, do chwili obecnej nie udało się ustalić rzeczywistej tożsamości twórcy. Bitcoin dzieli się na mniejsze jednostki zwane Satoshi (odpowiednik groszy w Polskim systemie płatniczym), przy czym jeden bitcoin jest równy 100 000 000 Satoshi. Satoshi jest najmniejszą, niepodzielną jednostką. Kryptowaluty przechowywane są pod adresami, to znaczy każda jednostka kryptowaluty, która została już wydobyta musi przynależeć do jakiegoś adresu.


Adres

Adres to unikalny ciąg alfanumeryczny pozwalający na wysyłanie i odbieranie danej kryptowaluty. Adresy w cieci Bitcoin rozpoczynają się zawsze od liczby 1 lub 3 lub ciągu bc1 . Pierwsze dwie kategorie adresów zawierają wielkie i małe litery oraz cyfry alfabetu łacińskiego z wykluczeniem cyfry 0, wielkiej litery O, wielkiej litery I i małej litery l. Adresy nie zawierają żadnej informacji na temat ich właściciela. Każdy użytkownik sieci Bitcoin może posiadać wiele adresów.


Transakcja

Transakcja (potocznie nazywana płatnością) to przekazanie pewnej liczby bitcoinów z jednego lub wielu adresów na inny adres lub adresy. Każda transakcja posiada co najmniej jeden adres wejściowy (za wyjątkiem transakcji Coinbase – pierwszej transakcji w bloku, w której tworzone są ex nihilo nowe jednostki kryptowaluty stanowiące nagrodę dla górnika) oraz co najmniej jeden adres wyjściowy. Każda transakcja identyfikowana jest w blockchainie za pomocą unikalnego identyfikatora stanowiącego ciąg 64 znaków alfanumerycznych, będącego skrótem (hashem) transakcji. Wszystkie transakcje zawierane są pomiędzy adresami i przechowywane są w publicznym rejestrze zwanym łańcuchem bloków (zwany blockchainem).


Blockchain

Blockchain to publicznym rejestr zwanym łańcuchem bloków. Słada się z kolejnych bloków, dodawanych do łańcucha w sposób cykliczny (średnio: co 10 minut), po potwierdzeniu transakcji znajdujących się wewnątrz danego bloku. Rejestr ten jest publicznie dostępny, to znaczy iż wszystkie transakcje są publicznie znane. W celu wykonania transakcji i umieszczenia jej w rejstrez bloków konieczna jest znajomość adresu nadawcy wraz ze skorelowanym z nim kluczem prywatnym nadawcy oraz adresu odbiorcy.


Portfel

Portfel to miejsce przechowywania par kuczy (prywatny, publiczny), przy czym klucz publiczny nie musi być przechowywany, gdyż można go wyznaczyć na podstawie klucza prywatnego. Niekiedy rozszerza się definicję portfela o pełną kontrolę środków znajdujących się na nim. W takim ujęciu, portfel poza przechowywaniem i zarządzaniem kluczami, pozwala także śledzić stan konta, a także tworzyć i podpisywać transakcje. Wyróżnia się kilka typów portfeli: portfel papierowy stanowiący wydruk pary kluczy (prywatny i publiczny), nieśmiertelnik, portfel sprzętowy będący wyspecjalizowanym urządzeniem najczęściej w postaci klucza USB, portfel w postaci aplikacji będący oprogramowaniem przeznaczonym na konkretną platformę (komputer, smartfon), portfel „przeglądarkowy” stanowiący zewnętrzny serwis udostępniany przez określony podmiot do obsługi którego wystarczy przeglądarka internetowa. Bezpieczeństwo środków przechowywanych na poszczególnych typach portfeli maleje zgodnie z kolejnością, w której zostały przedstawione: największe jest dla portfeli papierowych (bądź stalowych), gdzie klucz prywatny (ewentualnie ziarno) znajduje się tylko na wydrukowanej kartce (stalowej tabliczce) i powinien być znany jedynie jej posiadaczowi, a najmniejsze dla portfeli „przeglądarkowych”, gdzie klucze prywatne użytkowników przechowywane są na zewnętrznych serwerach.


Klucz prywatny

Klucz prywatny powinien być znany tylko właścicielowi danego adresu. Jest przechowywany w portfelu w postaci ciągu alfanumerycznego. Daje dostęp do zasobów na adresie bitcoinowym. Jego znajomość jest niezbędna i wystarczająca do dysponowania bitcoinami znajdującymi się na danym adresie. Jego utrata (zniszczenie, zagubienie) powoduje brak dostępu do portfela i niemożność dysponowania środkami. Natomiast ujawnienie klucza prywatnego implikuje fakt, że każda osoba go posiadająca może kontrolować środki znajdujące się na nim, może nimi dysponować.


Wydobywanie (ang. mining)

Wydobywanie to proces potwierdzania transakcji, czyli umieszczania ich w łańcuchu bloków. Realizowany jest za pośrednictwem górników, którzy to wykorzystują do tego moc obliczeniową swoich urządzeń. Górnicy rywalizują ze sobą o to który nowy blok złożony z transakcji zostanie umieszczony w łańcuchu bloków. Górnik, któremu uda się najszybciej rozwiązać „zagadkę kryptograficzną” otrzymuje nagrodę w postaci nowych jednostek danej kryptowaluty. O tym które transakcje trafiają do nowych bloków decydują sami górnicy, kierując się najczęściej maksymalizacją zysku. A więc z rozgłoszonych transakcji czekających na potwierdzenie i znajdujących się w puli jeszcze nie potwierdzonych transakcji, zwanej mempool, wybierają zazwyczaj te które zawierają największą bezwzględną opłatę transakcyjną, czy też najwyższą opłatę transakcyjną na bajt danych. Aktualnie górnicy raczej nie wydobywają nowych bitcoinów w pojedynkę, lecz łączą się w spółdzielnie wydobywcze, zwane potocznie kopalniami, dzięki którym poprzez zwiększenie mocy obliczeniowej wzrasta prawdopodobieństwo wydobycia nowego bloku. Każda transakcja występująca w bloku może zawierać (i najczęściej zawiera) dodatkową opłatę transakcyjną.


W celu zrozumienia typów transakcji zostaną najpierw przedstawione podstawowe reguły nimi rządzące

  • Każda osoba może mieć wiele portfeli, a każdy portfel może składać się z wielu adresów.
  • Tylko niezerowa liczba bitcoinów może być przesyłana z jednego adresu na drugi.
  • Każda transakcja składa się z dwóch stron: wejściowej i wyjściowej. Strona wejściowa wskazuje skąd pochodzą bitcoiny wchodzące w skład danej transakcji, natomiast strona wyjściowa pokazuje, dokąd są one wysyłane.
  • Adresy znajdujące się po stronie wejściowej muszą posiadać wystarczającą liczbę bitcoinów dla danej transakcji. Nie ma możliwości przesłania z danego adresu większej liczby bitcoinów niż jest w jego posiadaniu.
  • Cała kwota znajdująca się na adresach wejściowym musi zostać wydana w pojedynczej transakcji. Przy czym po stronie wyjściowej może znajdować się ten same adresy co po stronie wejściowej.
  • Większość transakcji znajdująca się w łańcuchu bloków zawierają opłatę transakcyjną.
  • Liczba bitcoinów znajdujących się po stronie wejściowej transakcji musi być równa liczbie bitcoinów znajdujących się po stronie wyjściowej transakcji powiększonej o ewentualną opłatę transakcyjną.
Należy pamiętać, że przeniesienie bitcoinów z jednego adresu na inny nie musi oznaczać przekazania środków do innej osoby. Może mieć miejsce sytuacja, gdy ten sam właściciel przekazuje środki w ramach swojego portfela (z jednego adresu na drugi) lub na swój inny portfel.
Transkacja 1 --> 1
Schemat transakcji 1 --> 1

Transakcja posiadająca jeden adres po stronie wejściowej i jeden adres po stronie wyjściowej. Jest to transakcja stosunkowo rzadko występują w łańcuchu bloków, polega na przekazaniu wszystkich środków znajdujących się pod jednym adresem na inny z uwzględnieniem ewentualnej opłaty transakcyjnej.

Przykładowa transakcja
Tabela transakcji 1 --> 1

Przed transakcją adres A (kończący się ciągiem …KTzy) dysponuje kwotą 0.01098 BTC. Podczas transakcji całość środków, pomniejszona o opłatę transakcyjną w wysokości 0.00000691 BTC, zostaje przekazana na adres B (...JhyS). Po transakcji adres B dysponuje kwotą 0.01097309 BTC.


Transkacja 1 --> 2

Transakcja posiadająca jeden adres po stronie wejściowej i dwa adresy po stronie wyjściowej. Jest to jedna z najczęstszych transakcji występujących w łańcuchu bloków. Polega na przekazaniu wszystkich środków znajdujących się pod jednym adresem na dwa inne adresy z uwzględnieniem ewentualnej opłaty transakcyjnej. Najczęściej jeden z adresów wyjściowych jest adresem na które następuje pewna płatność, drugi adres stanowi natomiast miejsce, na które zwracana jest reszta (ang. change). W zależności od tego czy dany portfel umożliwia przesłanie reszty na adres wejściowy, czy też za każdym razem generowany jest nowy adres na który trafia reszta, mamy do czynienia z dwoma scenariuszami dla tego typu transakcji.

Schemat transakcji 1 --> 2

Scenariusz z przekazaniem reszty na adres wejściowy został zaprezentowany na ninijszym schemacie.

Przykładowa transakcja
Tabela transakcji 1 --> 2

Przed transakcją adres A (..V99F) dysponuje kwotą 0.49299667 BTC. Podczas transakcji część środków w wysokości 0.0416 BTC zostaje przekazana na adres B (…Luo2), natomiast pozostała część w wysokości 0.45089667 BTC powraca na adres wejściowy A. Powstała różnica w wysokości 0.0005 BTC została wydana na opłatę transakcyjną.

Schemat transakcji 1 --> 2

Natomiast scenariusz z przekazaniem reszty na nowy adres został przedstawiony na ninijszym schemacie.

Przykładowa transakcja
Tabela transakcji 1 --> 2

Przed transakcją adres A (…TwUg) dysponuje kwotą 89.5676286 BTC. Podczas transakcji część środków w wysokości 89.38738 BTC zostaje przekazana na adres B (…RsQ8), a druga część w wysokości 0.18 BTC zostaje przekazana na adres C (…jq6j). Kwota w wysokości 0.0002486 BTC została przeznaczona na opłatę transakcyjną.


Transkacja n --> m

Transakcja posiadająca kilka adresów po stronie wejściowej i kilka adresów po stronie wyjściowej. Polega ona na przekazaniu wszystkich środków znajdujących się pod adresami wejściowymi dna dresy wyjśicowe z uwzględnieniem ewentualnej opłaty transakcyjnej.

Schemat transakcji n --> 1

Jako pierwszy przykład transakcji tego typu jest transakcja posiadająca kilka adresów po stronie wejściowej i tylko jeden adres po stronie wyjściowej. Transakcja ta polega na przekazaniu środków z różnych adresów wejściowych na jeden nowy adres wyjściowy. Jest to transakcja konsolidująca i została przedstawiona na niniejszym schemacie.

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adresy wejściowe (..jq6j, …Awzn, …, …3VJf) dysponują sumaryczną kwotą 4.6317288 BTC. Podczas transakcji wszystkie środki z tych adresów zostają przekazane na adres wyjściowy (…R7kR), przy opłacie transakcyjnej w wysokości 0.0017288 BTC.

Schemat transakcji n --> m

Innym przykładem transakcji tego typu jest transakcja posiadająca dwa adresy wyjściowe. Sytuacja ta odpowiada najczęściej scenariuszowi, gdy użytkownik chce dokonać płatności z kilku swoich adresów na adres odbiorcy, a reszta trafia na nowy adres wyjściowy użytkownika.

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adresy wejściowe (...mU70, …8tbn, …, …LUbG) dysponują sumaryczną kwotą 1.41353384 BTC. Podczas transakcji część środków w wysokości 1.40111321 BTC zostaje przekazana na adres wyjściowy X (…nNYG), a część 0.01000463 BTC zostaje przekazana na adres wyjściowy Y (...kvdg) i stanowi resztę transakcji, przy opłacie transakcyjnej w wysokości 0.002416 BTC.

Schemat transakcji n --> m

Jeszcze innym przykładem transakcji tego samego typu jest transakcja posiadająca zarówno wiele adresów po stronie wejściowej i wiele adresów po stronie wyjściowej. Jest to transakcja najczęściej dokonywana nie przez pojedynczych użytkowników, lecz przez serwisy obsługujące znaczne liczby transakcji na przykład giełdy i kantory kryptowalut. Głównym celem przeprowadzania takich transakcji jest oszczędność na opłatach transakcyjnych.

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adresy wejściowe (…WB6o, ...oggM, ..., ...d317X) dysponują sumaryczną kwotą 35.56430611 BTC. Podczas transakcji środki zostają rozdysponowane na adresy wyjściowe (...Hv9d, ...CTCE, ..., ...Z99a), przy opłacie transakcyjnej w wysokości 0.0005 BTC.

Schemat transakcji n --> m

Jeszcze innym przykładem transakcji typu n --> m jest transakcja posiadająca wiele adresów po stronie wyjściowej i tylko jeden adres po stronie wejściowej. Jest to transakcja najczęściej dokonywana przez pojedynczych użytkowników, chcących oszczędzić na opłatach transakcyjnych (wówczas liczba adresów wyjściowych jest relatywnie mała - kilka) lub duże podmioty takie jak giełdy czy kantory przekazujące środki z jednego ze swoich adresów na adresy swoich użytkowników (wówczas liczba adresów wyjściowych jest stosunkowo duża – kilkanaście, kilkadziesiąt).

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adres wejściowy A (…Vzna) dysponuje kwotą 0.77839253 BTC. Podczas transakcji środki zostają przekazane na adresy wyjściowe (...QJwa, ...Dntn, ...R4Yz, ...x9Y2), a resztę stanowi opłata transakcyjna w wysokości 0.00044276 BTC.


Transkacja 0 --> 1

Transakcja posiadająca zero adresów po stronie wejściowej i jeden adres po stronie wyjściowej. Jest to transakcja związana z wydobyciem nowego bloku przez górnika. Jest to zawsze pierwsza transakcja w nowym bloku, a na jej wysokość składają się dwie składowe. Pierwszą jest nagroda za wydobycie danego bloku, której kwota uzależniona jest od aktualne obowiązującego wynagrodzenia za wydobyty blok: pierwotnie było to 50 BTC, od listopada 2012 roku 25 BTC, od lipca 2016 roku 12,5 BTC, itd. Drugą składową stanowi natomiast suma opłat transakcyjnych transakcji zawartych w danym bloku

Schemat transakcji 0 --> 1

Jako przykład wybrano pierwszy blok jaki został kiedykolwiek wydobyty. Operacja ta miała miejsce w styczniu 2009 roku i została zrealizowana przez autora - Satoshi Nakamoto. Na adres A (1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa) została przekazana kwota 50 BTC.

Tabela transakcji 0 --> 1

Innym przykładem niech będzie bardziej współczesny blok, który został zaprezentowany w tabeli 4.2 pokazujący udział opłat transakcyjnych. Ze względu na fakt, iż aktualnie większość górników wydobywa bitcoiny poprzez spółdzielnie (ang. mining pool) łącząc swoje moce obliczeniowe, aktualnie większość transakcji tego typu trafia nie na adresy pojedynczych użytkowników, lecz na adresy spółdzielni wydobywczych. Na adres A (…59rB) została przekazana kwota 12.77401803 BTC, na którą składają się dwa czynniki: 12.5 BTC - nagroda za wydobyty blok oraz 0.27401803 BTC będącą sumą wszystkich opłat transakcyjnych należących do danego bloku.

Tabela transakcji 1 --> 2

Znając typy przeprowadzanych transakcji można przedstawić heurystyki podwalające ustalać które adresy należą do poszczególnych kopalni, kantorów, giełd, a nawet pojedynczych użytkowników. Mając wiedzę o przynależności danego adresu do konkretnego podmiotu zainteresowane organy (na przykład organy ścigania) mogą zwrócić się do zidentyfikowanego podmiotu z żądaniem ujawnienia personaliów właściciela badanego adresu. Wszystkie metody grupujące adresy w klastry (ang. clustering) pozwalają identyfikować dany podmiot gdy choć jeden adres należący do danego klastra zostanie poprawnie przyporządkowany do realnego podmiotu (giełdy, sklepu, itp.). W łańcuchu bloków informacji takowej jednak nie znajdziemy. Na szczęście z pomocą przychodzą nam zasoby Internetu, gdzie w wielu miejscach (fora dyskusyjne związane z kryptowalutami, strony podmiotów ujawniające własne adresy BTC w celu dokonywania darowizn, itp.) możemy znaleźć informacje jednoznacznie wiążącą dany adres z konkretnym podmiotem.


HEURYSTYKA 1

Pierwsza heurystyka polega na grupowaniu adresów wejściowych wchodzących w skład pojedynczej transakcji. Jeśli dwa lub większa liczba adresów wejściowych wchodzi w skład pojedynczej transakcji to zakładamy, że są one kontrolowane przez ten sam podmiot. Heurystykę tą zawęzimy tylko do adresów wejściowych wymagających tylko jednego klucza prywatnego i zdefiniujemy ją następująco: Jeśli dwa lub większa liczba adresów wejściowych wymagających użycia pojedynczego klucza prywatnego wchodzi w skład pojedynczej transakcji to są one kontrolowane przez ten sam podmiot.


HEURYSTYKA 2

Druga heurystyka polega na grupowaniu jednego z adresów wyjściowych (tak zwanego adresu reszty) z adresami wejściowymi wchodzącymi w skład pojedynczej transakcji. Jeśli transakcja zawiera dwa adresy wyjściowe to zakładamy, że jeden z nich kontrolowany jest przez ten sam podmiot co adresy wejściowe. Heurystyke można zdefiniowac następująco: Jeśli transakcja składa się z dwóch adresów wyjściowych to jeden z nich kontrolowany jest przez ten sam podmiot co adresy wejściowe. Główną trudnością jest tutaj poprawne zidentyfikowanie adresu reszty z pośród dwóch adresów wyjściowych. Jednym w podejść jest sprawdzenie czy jeden z adresów nigdy wcześniej nie występował z łańcuchu bloków. Jeśli tak, to można z dużym prawdopodobieństwem założyć, iż jest to właśnie adres reszty, gdyż wiele portfeli bitcoinowych działa właśnie w ten sposób – tworzy nowy adres dla kwoty stanowiącej resztę transakcji. Przy heurystyce tej bazuje się dodatkowo na założeniu, że użytkownicy rzadko przekazują środki do dwóch różnych odbiorców podczas jednej pojedynczej transakcji.


HEURYSTYKA 3

Ostatnia heurystyka polega na identyfikowaniu właścicieli pojedynczych adresów. Informacje te można pozyskiwać z wielu źródeł: wycieków, z istniejących serwisów internetowych poświęconych deanonimizacji, z list dyskusyjnych poświęconych kryptowalutom, w tym w szczególności bitcoinowi (użytkownicy często publikują adresy), z różnorodnych stron internetowych (część autorów, programistów, a nawet firm zachęca do oferowania im darowizn właśnie poprzez publikacje własnych adresów), pozyskanych w trakcie realizacji ekspertyz na potrzeby organów procesowych.

Monografia autorska

Bo zawsze warto poszerzać swoją wiedzę.

Kryptowaluty z perspektywy informatyki śledczej
Przemysław RODWALD Kryptowaluty z perspektywy informatyki śledczej