Wpis z mikrobloga

Hej.

Klucz prywatny ethereum ma znaków 64. Każdy znak to cyfra w systemie szesnastkowym. Łatwo można policzyć, że szansa na wygenerowanie takiego samego klucza prywatnego jak jakaś inna osoba to 1 / 16^64. Jest to stosunkowo mała liczba.

Jednak jak wiemy każdy klucz prywatny jest połączony z jakimś adresem. Adres ma 40 znaków.
No to chwila, chwila. Czy to znaczy, że wiele kluczy prywatnych może prowadzić do tego samego adresu? Tak

Więc realnie ryzyko, że ktoś wygeneruje klucz prywatny, który będzie prowadził do naszego adresu wynosi ok. 1 / 16^40. Co jest znacznie większą liczbą od 1 / 16^64.

Załóżmy, że aktualnie istnieje 100 000 000 adresów z jakąś częścią etheru lub innego tokenu. (tak, wiem, że tego jest prawdopodobnie mniej).

W takim razie szansa na to, że wygenerujemy klucz prywatny, który jest połączony z adresem na którym jest jakaś kasa wynosi 1 / (16^40 / 100000000) co daje 1.4615016e+40, czyli 1 / 146 150 160 000 000 000 000 000 000 000 000 000 000 00 .

Na ten moment komputery nie mają na tyle mocy obliczeniowej, żeby wartało przeszukiwać klucze prywatne brute forcem, ale co się stanie za 5 lat, 10?

Czy Vitalik Buterin ma jakiś pomysł na zabezpieczenie się przed tym problemem?

PS. Zastosowałem tutaj dużo uproszczeń, generalnie nie jestem pewny czy wszystko tutaj prawidłowo przedstawiłem. Jeśli ktoś zauważył jakiś błąd w moim rozumowaniu to proszę o naprostowanie mnie.

#kryptowaluty #ethereum #bruteforce #informatyka #blockchain #kryptografia
trevoz - Hej.

Klucz prywatny ethereum ma znaków 64. Każdy znak to cyfra w systemie...

źródło: comment_1614799647UewILY9pQ9yYDR1INs4Bqw.jpg

Pobierz
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jednak jak wiemy każdy klucz prywatny jest połączony z jakimś adresem. Adres ma 40 znaków.

No to chwila, chwila. Czy to znaczy, że wiele kluczy prywatnych może prowadzić do tego samego adresu? Tak


@trevoz: A czy może być taki scenariusz że jeden klucz prywatny może pasować do dwóch adresów tak znaczy że na pierwszym jest 6 eth a na drugim jest 4 eth to miałbym dostęp do 10 eth na
  • Odpowiedz
@trevoz: Zbyt chaotycznie napisane, ale spróbuję ogarnąć:

Łatwo można policzyć, że szansa na wygenerowanie takiego samego klucza prywatnego jak jakaś inna osoba to 1 / 16^64. Jest to stosunkowo mała liczba.


To się zgadza, entropia wynosi 256 bitów, zderzenie nigdy nie powinno
  • Odpowiedz
Więc realnie ryzyko, że ktoś wygeneruje klucz prywatny, który będzie prowadził do naszego adresu wynosi ok. 1 / 16^40. Co jest znacznie większą liczbą od 1 / 16^64.


@trevoz: BTW, generując klucz prywatny nie masz kontroli jaki adres z niego wygenerujesz, nie możesz w ten sposób przeszukiwać puli adresów. Musisz atakować pulę 2^256 (16^64) aż coś znajdziesz. Przy każdym kluczu musiałbyś przeszukać wszystkie znane adresy, których jest te 100mln.
  • Odpowiedz
@trevoz: Na bezpieczeństwie klucza 256 bitowego opiera się cała współczesna kryptografia i jakby była możliwość jego złamania to coiny w ETH byłyby najmniejszym zmartwieniem xD

Spójrz na tabelkę wyżej, która zatrzymuje się na entropii 120. Przy czym klucz publiczny ETH ma 160 bitów entropii, a prywatny 256. Nawet jakby moc obliczeniowa wzrosła jutro stokrotnie to złamanie takiego klucza będzie dalej niemożliwe. Jeśli jednak na horyzoncie pojawiłoby się zagrożenie złamania klucza
  • Odpowiedz
@trevoz:
Sry poprawka: Ponieważ wiele kluczy prowadzi do jednego adresu, faktyczna pula którą atakujesz to 2^160 (czyli 16^40). To nadal kompletnie niemożliwa liczba, zwłaszcza, że każda pojedyncza generacja klucza prywatnego wymaga przeszukania całej bazy istniejących adresów.
  • Odpowiedz
@trevoz:
poprawka 2: Zdaje się, że przeszukanie bazy jest dużo wydajniejsze niż generacja kolejnego klucza. Zkładając że przeszukanie nic nie kosztuje, to zdejmuje ~27 bitów z naszego ataku. Czyli ze 160 maleje do 133 bitów -> obecne komputery potrafią zrobić brute force jakichś 54 bitów, więc nie ma obaw nawe jeśli szybkość komputerów wzrośnie 1mln razy
  • Odpowiedz
@trevoz: Masz 16^40 czyli 160bitow czyli 2^160 czyli 10^68 z grubsza.
Giga to 10^9.
Zakładając, totalnie z d--y, ze wystarczy jedna instrukcja procesora by sprawdzić adres ( a samo hashowanie to w cholerę cykli), na procesorze 1GHz potrzebujesz 10^59 sekund. No załóżmy ze procesor jest nowiutki i ma 32 rdzenie po 3GHz co zgrabnie daje 100GHz czyli 10^2.
Już tylko 10^57 sekund.
I zakładamy ze każdy Chińczyk na świecie taki ma, przyjmijmy miliard, czyli znowu 10^9.
Już tylko
  • Odpowiedz