Wątek oryginalny: There are 2^256 private keys out there: how big is that number?
Wczoraj, przeglądając króliczą norę Bitcoina, natknąłem się na niesławną stronę keys.lol
https://keys.lol
(Uwaga: strata czasu!)
Zasadniczo jest to strona internetowa, która losowo generuje 128 kluczy prywatnych na każdej stronie, a następnie sprawdza saldo powiązanych adresów (skompresowanych i nieskompresowanych) w blockchainie, aby zgłosić wszelkie dodatnie salda kont lub przeszłe transakcje.
Wow!
Jeśli znajdziesz dodatnie saldo na tych wygenerowanych przez klienta stronach, faktycznie posiadasz klucze prywatne, więc jesteś prawowitym właścicielem tego salda i nic nie stoi na przeszkodzie, aby przenieść je do własnego portfela.
Spędziłem kilka godzin na tej stronie generując tysiące kluczy prywatnych, oczywiście nic nie znajdując, ani jednego użytego adresu, nie mówiąc już o jednym z kredytem.
Potem zacząłem myśleć o tym, jak mogę nieco usprawnić ten proces, a rozmawiając z innymi użytkownikami na forum, pomyślałem, że możemy mieć skrypt, który generuje losowe klucze prywatne, a następnie pyta mój własny węzeł Bitcoin o saldo na tym adresie, a na koniec przenosi saldo do mojego własnego portfela. Pomyślałem, że praca lokalna powinna nieco przyspieszyć ten proces.
Od samego początku wiedziałem, że szanse na znalezienie czegokolwiek są niewielkie, ale chciałem spróbować, ponieważ gdybym szukał kredytów i nic nie znalazł, mógłbym być pewien, że nikt nie mógłby zrobić tego samego z moimi własnymi Bitcoinami, które tak ostrożnie trzymałem w moim zimnym portfelu.
Czekając, aż @babo ujawni swój scenariusz, pomyślałem sobie "Fillippone jest tylko pionkiem w grze życia"... jak to możliwe, że nikt nigdy na to nie wpadł?
Wracając do króliczej nory, szybko odkryłem Large Bitcoin Collider.
https://lbc.cryptoguru.org/about
Wow, to poważny projekt.
Zasadniczo, tysiące rozproszonych serwerów generuje i weryfikuje 26 bilionów (!!!) kluczy prywatnych każdego dnia.
W ciągu pierwszych trzech lat udało im się znaleźć 7 kluczy prywatnych. To bardzo dużo! Myślałem, że szanse są znacznie mniejsze, ale prawdopodobnie istnieje wada portfela, który wykorzystuje nieoptymalny generator liczb losowych do tworzenia kluczy. (Przydałoby się tu więcej badań!).
Przyjrzyjmy się kilku liczbom:
Liczba teoretycznie możliwych kluczy prywatnych: 2^256 lub około 10^77
Liczba adresów Bitcoin: 2^160
Liczba kluczy prywatnych wyszukanych przez Bitcoin Collider: 2^160
Liczba atomów we wszechświecie: 10^78 do 10^82
Liczba używanych adresów Bitcoin: 18.000.000
Liczba RZECZYWISTYCH możliwych kluczy prywatnych jest nieco mniejsza niż 2^256, jak podano tutaj
Rozważmy kilka przykładów.
- Załóżmy, że mamy miliard aktywnych adresów, z których każdy ma dodatnie saldo: Wiemy, że liczba ta jest o około 10^3 większa od rzeczywistej.
Prawdopodobnie liczba atomów we wszechświecie jest 10^3 razy większa niż liczba adresów, więc możemy powiedzieć, że prawdopodobieństwo znalezienia klucza prywatnego o dodatniej wartości jest mniej więcej takie samo jak prawdopodobieństwo znalezienia jednego z tych atomów w całym widzialnym wszechświecie.
Jak duży jest miliard atomów? Według tej odpowiedzi na Quora, jest on mniejszy niż bakteria E. Coli. Weźmy więc tę bakterię, rozbijmy ją do poziomu atomowego, rozrzućmy po wszechświecie i spróbujmy znaleźć jeden z tych atomów. Dość trudne, prawda?
- Drugi przykład pochodzi z tego artykułu. Powiedzmy, że chcemy przeskanować wszystkie klucze prywatne w poszukiwaniu dodatniego salda i załóżmy, że każdy mieszkaniec Ziemi ma prędkość skanowania, która jest miliard razy większa niż dwukrotność obecnej mocy obliczeniowej sieci Bitcoin:
* 10 miliardów ludzi;
* pomnożone przez jeden miliard;
* pomnożone przez dwukrotność mocy obliczeniowej Bitcoina, około 100 tysięcy terahash na sekundę;
otrzymujemy: 1.000.000.000.000*1.000.000.000*100.000*100.0000.000.000 = 10^10*10^9*10^5*10^12 = 10^36
Dla uproszczenia zaokrągliliśmy "115.792.089.237.316.195.423.570.985.008.687.907.852.837.564.279.074.904.382.605 .163.141.518.161.494.336" zaokrąglone w dół do 10^77 i odkryliśmy, że gdybyśmy sprawdzili każdy klucz prywatny w poszukiwaniu dodatniego salda, zajęłoby to 10^77/10^36 = 10^41 sekund, ile lat by to trwało?
Ponieważ jeden rok ma około 31557600 sekund, odpowiada to około 10^41/31557600 = 31^33 lat, co jest mniej więcej 10^23 razy więcej niż szacowany wiek wszechświata (obecnie szacowany na 13,82 miliarda lat), w skrócie
100.000.000.000.000.000.000.000, czyli około 100 miliardów miliardów razy więcej niż wiek wszechświata.
- Ten film pokazuje, jak bezpieczny jest algorytm SHA-256.
https://youtu.be/S9JGmA5_unY
- We wszystkich dotychczasowych przykładach energia zaangażowana w takie obliczenia nie została wzięta pod uwagę. Oczywiście wszystkie te bardzo potężne maszyny musiałyby być zasilane jakimś rodzajem energii. Ile energii by to wymagało? Cóż, całkiem sporo, jak pokazuje ta infografika:
Link na Reddicie
Więcej przykładów tego, ile kosztowałoby losowe odgadnięcie klucza prywatnego:
Dalsze referencje:
Inne, bardzo duże liczby:
To tylko kilka przykładów. Jeśli macie jakieś inne zasoby lub komentarze, nie krępujcie się opublikować ich poniżej, a ja dodam je do listy!