Do kolizji adresów Bitcoin dochodzi wówczas, gdy dwie różne osoby wygenerują losowo ten sam adres Bitcoin. Osoby te miałyby dostęp do wszelkich funduszy ulokowanych pod tym adresem. Czy takie coś jest w ogóle możliwe?

Odpowiedź brzmi: tak

Szanse zaistnienia takiej sytuacji są bliskie zeru, ale zachęcam do dalszego czytania.

Adres Bitcoin składa się z dwóch nadrzędnych części; adresu (klucz publiczny) oraz klucza adresu (klucz prywatny). W adresie zawarte są fundusze, a klucz umożliwia do nich dostęp.

Działa to tak, że w chwili utworzenia nowego adresu Bitcoin, tworzy się jednocześnie parę kluczy. Klucz prywatny generowany jest jako pierwszy, a przynależny do niego adres jest matematycznie wyliczany z klucza prywatnego – w ten sposób dla każdego klucza powstaje tylko jeden adres.

Klucze oraz ich adresy mogą być generowane bez ograniczeń. Owszem, można stworzyć ich tyle ile się chce. 100, 1000, 100.000? ? jasne, nie ma przeciwwskazań.  Co więcej, kiedy tworzymy portfel za pomocą któregoś z bardziej znanych Bitcoinowych klientów, otrzymujemy z nim domyślne 100 adresów, nawet jeśli mamy zamiar używać tylko jednego.

Należy pamiętać, że o ile prywatny klucz należy do ciebie, możesz korzystać z funduszy przypisanych do adresu.

Wspomniałem wcześniej, że możliwe jest stworzenie dowolnej ilości kluczy (oraz przypisanych do nich adresów). Nieuchronnie nasuwa się więc pytanie: Jeśli będę tworzył nowe prywatne klucze wystarczająco długo, w końcu natknę się na istniejący już adres zawierający Bitcoiny? A skoro miałbym do niego klucz, mógłbym je sobie wziąć? Czyż nie?

Tak, to prawda.

Ale zaraz… To by oznaczało, że gdyby ktoś stworzył przypadkiem klucz prywatny pasujący do mojego wraz z moim adresem, mógłby wyczyścić mój adres z Bitcoinów? Owszem, to prawda – ten ktoś mógłby to zrobić, jeśli miałby wystarczająco szczęścia by stworzyć ten sam klucz prywatny. ?Sczęście? to w tej sytuacji czynnik kluczowy.

Adresy Bitcoin są 160-bitowymi hashami 256-bitowych kluczy publicznych. Istnieje więc 2^160 lub 1,460,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 możliwych adresów.

Powiedzmy, że jest rok 2045, a populacja Ziemi liczy 9 miliardów ludzi. W ramach niezbyt realistycznego scenariusza, każda osoba na ziemi korzysta z Bitcoina i każda z nich stworzyła i korzysta z 10 milionów adresów – czemu nie? Przesada jest tu na miejscu: W rezultacie mielibyśmy 90,000,000,000,000,000 wykorzystanych adresów.

W tej sytuacji prawdopodobieństwo kolizji wynosiłoby 90,000,000,000,000,000 / 2^160 = 0.00000000000000000000000000000000615%. Wyraźnie widać, 2^160 istotnie jest olbrzymią liczbą. Znacznie przekraczającą możliwości analityczne naszych mózgów.

fYFBsqp

[tłumaczenie grafiki]:

Wyobraź sobie, że zbudowałeś komputer doskonały: zapomnij o Gigahashach i Megahertzach.

Twój komputer korzysta z teoretycznego minimum energii koniecznej by zanotować zmianę w pojedynczym bicie (z 1 na 0, lub 0 na 1)

W grę wchodzą tu ograniczenia termodynamiki- dalsze usprawnienia nie są możliwe.

Teraz wyobraź sobie, że z wykorzystaniem większości surowców naturalnych w naszym układzie gwiezdnym tworzysz Sferę Dysona, a całą jej powierzchnię pokrywasz pojedynczym super-komputerem wielkości układu gwiezdnego. Teraz wyobraź sobie, że możliwe jest utrzymanie jego temperatury na poziomie zera absolutnego bez wykorzystania dodatkowej energii.

Jeśli miałbyś to wszystko i udałoby ci się (bez jakichkolwiek strat) wychwycić całość energii generowanej przez naszą gwiazdę (nie w ciągu dnia, ani tygodnia, a raczej aż do czasu jej wygaśnięcia), niemożliwe byłoby doliczenie do 2^256 przed wyczerpaniem energii.

Pamiętajmy, że mowa tu wyłącznie o wyliczeniach.

Wyłącznie – bez hashowania, porównywania, wyszukiwania; tylko liczymy.. 1..2..3?.2^256-1.

Działania te nie mają nic wspólnego z technologią urządzeń; Są to maxima, na które pozwala termodynamika.

Wynika z nich, że brutalne ataki na klucze 256-bitowe będą nieopłacalne tak długo jak komputery będą składać z czegoś innego niż materii i zajmować coś innego niż przestrzeń.

Bitcoin – Twoich pieniędzy strzegą prawa wszechświata.

Owszem, ktoś mógłby zaprogramować odpowiednio superkomputer zbudowany specjalnie po to, by przeprowadzać wspomniane wyliczenia i przez cały dzień łamać adresy. W takim wypadku, znacznie bardziej opłacalne byłoby jednak wykorzystanie aparatury do kopania Bitcoinów, biorąc pod uwagę, że działania w przypadku kopania są dość zbliżone. Nagroda jest jednak wyższa, co sprawia, że całą zabawa nie jest warta wysiłku i kosztów elektryczności.

David Perry wyjaśnia to w ten sposób:

Załóżmy, że masz super-ASICA opartego na procesorze 12nm (wyprzedzającym dzisiejszą technologię o 4 generacje), który może tworzyć, zatwierdzać oraz kraść 1 trylion pary kluczy na sekundę (1TK/s). Oznaczałoby to moc 50,000 razy większą, niż najszybsze dzisiejsze procesowy. Załóżmy jednocześnie, że masz takich maszyn tysiąc i pracują one 24/7/365 bez przerwy. W ciągu roku mógłbyś wykraść 3*10^28 możliwych adresów.

Przy 1 kwadrylionie obciążonych funduszami adresów, twoja szansa na kolizję z losowym adresem wynosiłaby ~1% na przestrzeni 1,000 lat. Dla porównania wspomnę, że prawdopodobieństwo porażenia piorunem wynosi 1 do 280,000. Jest więc
500,000,000,000,000,000,000 bardziej prawdopodobne, że oberwiesz piorunem, niż znajdziesz odpowiedni adres w ciągu pierwszego roku prób. Ponieważ liczba ta wciąż jest dość duża, dodam, że przekłada się to na prawdopodobieństwo oberwania piorunem 4.6 razy w ciągu życia.

 Więc, czy jest to możliwe? Tak. Nieprawdopodobne? Ekstremalnie.

Wróć do łóżka i nie bój się, że to się kiedykolwiek wydarzy.

Autor wpisu: Miguel Moreno

Źródło oryginału: http://www.miguelmoreno.net/bitcoin-address-collision/

Tłumaczenie: Mateusz Kocot

Artykuł został przetłumaczony i opublikowany za wiedzą i zgodą autora.