Jak złamać seed phrase bitcoina? | John Cantrell wyjaśnia, jak dostał się do adresu z akcji Alistaira Milne

4 372

John Cantrell, twórca protokołu przesyłania wiadomości Lightning Network Juggernaut, złamał wczoraj seed phrase adresu Bitcoin i zgarnął dla siebie monety o wartości 9300 USD. Nie była to jednak kradzież a jedynie challenge, który udało mu się wygrać. Teraz ujawnił, jak tego dokonał…

Jak informowaliśmy wczoraj, Alistair Milne, CIO z Altana Digital Currency Fund, zorganizował wyzwanie na Twitterze, w którym zwycięzca miał otrzymać jednego bitcoina. Począwszy od maja, okresowo publikował wskazówki do 12-słowowej frazy odzyskiwania dla adresu portfela zawierającego 1 BTC. Ktokolwiek by zebrał wszystkie wskazówki, mógłby użyć frazy, aby odblokować portfel Bitcoin i wziąć kryptowalutę dla siebie.

Milne planował opublikować ostatnie trzy lub cztery słowa za jednym razem. Była to próba uniemożliwienia ataku typu brute-force (ciągłe zgadywanie słów, aż kombinacja zadziałała). Ale jego plan się nie powiódł. Za pomocą zaledwie ośmiu słów Cantrell odgadł pozostałe słowa, znalazł odpowiednią kombinację i odblokował portfel.

Jak Cantrell zhakował portfel bitcoin?

Zanim opublikowano ósme słowo, Cantrell zaczął się przygotowywać. W swoim poście na Medium napisał, że przy ośmiu słowach będzie „około 1,1 biliona możliwych fraz”, które należy sprawdzić.

12 lub 24-wyrazowy seed phrase dla klucza prywatnego Bitcoin, zapewnia pełny dostęp do funduszy, które są na nim przechowywane. Istnieje ograniczona lista 2048 słów, które takie frazy mogą zawierać – ale to bynajmniej nie ułatwia włamania się do bitcoinowego portfela.

Aby przetestować jedną frazę, Cantrell musiał wygenerować seed z frazy mnemonicznej, główny klucz prywatny z seeda i adres z głównego klucza prywatnego. Po napisaniu specjalnego algorytmu i przeprowadzeniu kilku testów porównawczych okazało się, że sprzęt, który miał w tym czasie, nie nadawał się do wykonania tego zadania.

Laptop Cantrella był w stanie sprawdzić około 1250 fraz na sekundę, w sumie 108 milionów dziennie. „Oznacza to, że procesor potrzebowałby około 25 lat na wygenerowanie i sprawdzenie 1 biliona możliwości niezbędnych do złamania frazy odzyskiwania przy znajomości tylko 8 słów” – zauważył Cantrell.

Aby rozwiązać problem, Cantrell zainteresował się chmurą obliczeniową. Wypożyczył kilkadziesiąt kart graficznych na rynku GPU oraz w chmurze Microsoft w chmurze Azure i napisał oprogramowanie, które rozkładałoby pracę w partiach na każdą kartę graficzną.

Kiedy Milne opublikował ósme słowo, Cantrell ruchomił maszyny.

„W szczycie testowałem około 40 miliardów mnemoników na godzinę. Oznacza to, że testowanie 1 biliona mnemoników powinno zająć około 25 godzin” – powiedział Cantrell.

Problemy i „szczęśliwe zakończenie”

Po przetestowaniu 85% kombinacji Cantrell nadal nie miał szczęścia. Wówczas zdał sobie sprawę z zasadniczej wady, jaką miał posiadać jego plan. Opierał się on na tym, że słowa były w odpowiedniej kolejności – co nie było gwarantowane. Gdyby tak nie było, „byłoby 8! (silnia) więcej możliwości ”, uniemożliwiając złamanie.

W ciągu dnia intensywnych obliczeń Cantrell „w dużej mierze porzucił nadzieję, że to zadziała” i „dosłownie praktycznie wszystko wyłączył”.

„Nie mogłem zmusić się do zatrzymania wszystkiego w tym momencie, ponieważ doszedłem tak daleko, więc po prostu pozwoliłem, aby trwało to dalej. Ku mojemu zaskoczeniu chwilę później tego samego wieczoru (91%) i po prawie 30 godzinach i dokładnie 1 bilionie sprawdzeń (1 000 710 602 752) algorytm znalazł rozwiązanie! ”

Komentarze