Atak na klucz publiczny.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » wtorek, 15 czerwca 2021, 18:21

Witam.
Zastanawiał się ktoś nad tym ?
Nie chodzi mi o wyliczanie (nie)prawdopodobieństwa i bajki o komputerach kwantowych tylko czy ktoś na forum próbował jakoś to ruszyć albo ma jakiś pomysł.

Początkujący
Awatar użytkownika
Posty: 111
Rejestracja: 8 czerwca 2020
Reputacja: 57
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: GameBoy » wtorek, 15 czerwca 2021, 19:06

Po prostu zapomnij o tym pomyśle :)

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » wtorek, 15 czerwca 2021, 23:00

A może coś więcej dlaczego mam o tym zapomnieć ?

Weteran
Awatar użytkownika
Posty: 1638
Rejestracja: 10 czerwca 2017
Reputacja: 360
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: tonyxxl » środa, 16 czerwca 2021, 00:20

Po pierwsze wyjaśnij po co chcesz "atakować" klucz publiczny?
To nie jest żadna tajemnica, że klucz publiczny jest generowany z prywatnego klucza, ale mając tylko publiczny klucz nie wygenerujesz sobie prywatnego. W tą stronę to nie zadziała.
Więc jedyne co możesz zrobić znając klucz prywatny to wysłać na ten adres środki z innego adresu do którego masz klucze prywatne...

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » środa, 16 czerwca 2021, 06:31

Jest dużo adresów które mają jakieś środki a są nie aktywne od około 10 lat. Prawdopodobnie są to zagubione adresy gdzie właściciel nie ma klucza. Szukanie takich kluczy było by bardziej opłacalne niż kopanie nowych btc. Klucz publiczny powstaje z prywatnego na podstawie dość prostego wzoru. Klucze można dodawać i odejmować i wyniki są prawidłowe jest tylko jeden mały problem do rozwiązania :).

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
24
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » środa, 16 czerwca 2021, 08:20

Zakładając, że te klucze są generowane przy użyciu oficjalnego klienta, to każdy z tych kluczy powstał z użyciem biblioteki OpenSSL. Możesz sobie zobaczyć implementację w starych klientach, zwykle tam wchodzi jakaś losowość pobierana z systemu operacyjnego. Jakbyś idealnie ustawił środowisko, to może byś coś trafił, ale jest to dość wątpliwe, bo w zasadzie musiałbyś mieć identyczny stan pamięci, co komputery pierwszych górników, za dużo rzeczy musiałbyś wiedzieć, żeby to odgadnąć ot tak sobie (zresztą, odpal starego klienta w wersji 0.1.0, wyciągnij klucz publiczny z pliku wallet.dat i spróbuj złamać swój własny klucz, powodzenia). Żeby atakowanie kluczy się opłacało, to albo te klucze musiałyby być słabe (a prawdopodobnie nie są, chyba że trafisz na adres kogoś, kto generował je czymś innym niż oficjalnym klientem i tam była jakaś luka), albo też musiałbyś wykonać około 2^128 operacji, co jest porównywalne z wygenerowaniem bloku z 128 bitami zerowymi na początku. Oprócz tego zauważ, że jest pełno znacznie łatwiejszych zagadek, które wciąż nie są rozwiązane. Nagroda 0.64 BTC za złamanie 64-bitowego klucza prywatnego (mając sam adres) nadal nie została zgarnięta. Przy jawnym kluczu publicznym ludzie zgarnęli maksymalnie 115-bitowy klucz, zatem do 256 bitów nadal jest dość daleko.

Obecnie nijak nie opłaca się łamać kluczy starych górników, skoro łatwiejsze zagadki wciąż pozostają nierozwiązane. Skoro bloki mają około 80 bitów zerowych, to jest szansa na kolizję adresów, jeśli ktoś by się uparł i wykonał 2^80 operacji na RIPEMD-160. Ale nadal: to jedynie kolizja, czyli mógłbyś mieć dwa klucze publiczne dające ten sam adres, ale nie dałbyś rady złamać istniejących adresów (bo do tego potrzeba 2^160 operacji).
Klucz publiczny powstaje z prywatnego na podstawie dość prostego wzoru.
Wzory muszą być proste, inaczej bezpieczeństwo byłoby kwestią mocno dyskusyjną. Tak samo operacje SHA-256 są proste, podobnie z innymi funkcjami skrótu. A jednak nawet jeśli weźmiesz na warsztat SHA-1, to nie jesteś w stanie wygenerować ataku preimage, choć kolizje już istnieją. Ba, choćby w przypadku MD5 (gdzie kolizje da się wygenerować dość szybko) ciężko o atak preimage! Żeby nawet na MD5 dostać hash złożony na przykład z samych zer, to jakieś 2^124 operacji musisz wykonać, więc wciąż nie widać tutaj żadnej drogi na skróty.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » środa, 16 czerwca 2021, 17:07

Wszystko co piszesz to prawda ale ja chcę atakować konkretny klucz bez generowania wielu kluczy i liczenia że się uda trafić. Atakowanie adresu nie ma sensu bo RIPE i SHA są nie do ruszenia przez to że część danych się traci przy liczeniu skrótu i jest to nieodwracalne. Atak na transakcję też nie ma w zasadzie sensu bo za każdym razem jest brane losowe "k" do podpisu i jedynie w przypadku powtarzającego się "k" można policzyć klucz prywatny (były takie przypadki). Najłatwiej wydaje się atakować klucz publiczny.

SPOILER
KNOW HOW
Najprościej pisząc jak się da: klucz publiczny powstaje przez dodanie do siebie punktu bazowego tyle razy ile wynosi wartość klucza prywatnego i to wszystko. Czyli w sumie jak masz klucz publiczny i odejmiesz od niego odpowiednio dużo razy punkt bazowy to liczba tych odejmowań jest kluczem prywatnym TAA...DAM. Oczywiście odejmowanie punktu bazowego dla normalnego (prawidłowo wygenerowanego) klucza będzie trwało .... za długo :). Jest prosty sposób aby to przyspieszyć ale to powoduje że można odjąć za dużo i nie znajdziemy klucza. I w zasadzie tylko tyle mi brakuje do szczęścia ... rozpoznawanie czy nie odejmujemy za dużo :).
Z ciekawostek jak masz czym to wygeneruj adresy dla kluczy od 1 do chyba 10 na każdym były kiedyś jakieś środki takie klucze ludzie wybierają :)

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » środa, 16 czerwca 2021, 18:47

I w zasadzie tylko tyle mi brakuje do szczęścia ... rozpoznawanie czy nie odejmujemy za dużo :).
To niemożliwe, bo to działa w oparciu o modulo. Kiedyś miałem podobny pomysł z resztą z dzielenia, ale takie operacje też są niewykonalne. Możesz dodać dwa punkty, możesz je odjąć. Możesz też podzielić lub pomnożyć punkt przez znaną liczbę. I to wszystko, nic więcej nie wskórasz. Nie sprawdzisz, czy klucz prywatny ma zero, czy też jedynkę na końcu. Nie ustalisz, czy klucz prywatny jest dodatni czy ujemny (czyli czy jest przed czy za połową). Żadne tego typu sztuczki nie działają, dlatego że działasz w ciele skończonym. Jak masz zwykłe liczby rzeczywiste, to możesz znaleźć takie równania, gdzie wynik jest jeden. Ale w ciele skończonym jest inaczej. Duża liczba dodatnia daje identyczny punkt, co mała liczba ujemna. Nawet potęgi i pierwiastki możesz zdefiniować, jeśli odpowiednie wzory sobie poskładasz, ale wciąż: to zadziała tylko przy znanych liczbach, a nie na kluczach publicznych. No i później się okazuje, że klucz prywatny równy pierwiastkowi z dwóch jest taki, jak jakaś duża liczba dodatnia. Innymi słowy: da się znaleźć taki klucz prywatny, który pomnożony sam przez siebie daje dokładnie klucz prywatny równy dwa.
Z ciekawostek jak masz czym to wygeneruj adresy dla kluczy od 1 do chyba 10 na każdym były kiedyś jakieś środki takie klucze ludzie wybierają :)
Takie klucze są ściągane przez boty szybciej niż zdążysz uzyskać potwierdzenie po wysłaniu tam czegokolwiek.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » środa, 16 czerwca 2021, 19:22

No widzę że w końcu ktoś kto wie o co chodzi. Ja na razie umiem tylko dodawać, odejmować, podwajać i "zmieniać znak" klucza. Nie potrafię dzielić bo wychodzą mi pierwiastki trzeciego stopnia modulo :) a tego nie wiem jak ruszyć. Wiem że są klucze "dodatnie" (małe) i "ujemne" (duże) - przynajmniej tak to sobie wyobrażam możliwe że to błąd.
Próbuję teraz wykombinować metodę aby tak odejmować od publicznego żeby dojść do punktu bazowego a nie zejść poniżej "1" (nie przeskoczyć do ujemnej połówki czyli znowu dużych kluczy). Możliwe że inną metodą może być dzielenie przez 2 (jakoś nie potrafię) i sprawdzanie czy jest możliwość dalszego dzielenia a jak nie to "-1" i dalej sprawdzamy i dzielimy aż dojdziemy do punktu bazowego. Może masz jakieś jeszcze pomysły albo umiesz dzielić przez 2 ?

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » środa, 16 czerwca 2021, 19:46

Nie potrafię dzielić bo wychodzą mi pierwiastki trzeciego stopnia modulo
Dzielenie to mnożenie przez odwrotność.
0000000000000000000000000000000000000000000000000000000000000001 1
55555555555555555555555555555554e8e4f44ce51835693ff0ca2ef01215c0 -1/3
7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 -1/2
7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 1/2
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9d1c9e899ca306ad27fe1945de0242b81 1/3
fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140 -1

Jak podwoisz punkt podany jako "1/2", to uzyskasz punkt bazowy, stąd wiadomo, że to 1/2. Żeby go uzyskać, bierzesz wartość zerową prime modulo (czyli tamtą z -1 o jeden większą) i dzielisz ją przez tyle, przez ile potrzebujesz (tu: przez dwa). Jak podzielisz przez trzy, to uzyskasz 1/3. Jeśli uzyskasz minus, to negacja (czyli prime modulo minus liczba) załatwi sprawę.
Próbuję teraz wykombinować metodę aby tak odejmować od publicznego żeby dojść do punktu bazowego a nie zejść poniżej "1" (nie przeskoczyć do ujemnej połówki czyli znowu dużych kluczy).
To niemożliwe, bo jeśli trafisz na punkt bazowy, to jesteś w stanie wykonać działania odwrotne i dostać klucz prywatny. Zwykle miniesz punkt bazowy nie zdając sobie z tego sprawy. Chodzi między innymi o to, że dzieląc jedynkę przez dwa uzyskujesz 1/2, czyli dość "dużą" liczbę, co widzisz wyżej. Jeśli działasz na znanych liczbach, to jesteś w stanie to zauważyć. Jeśli jednak działasz na punktach, to nie da się tego wykryć. Gdyby się dało, to każdy klucz można byłoby w ten sposób łatwo złamać.
Możliwe że inną metodą może być dzielenie przez 2 (jakoś nie potrafię) i sprawdzanie czy jest możliwość dalszego dzielenia
Zawsze jest możliwość dalszego dzielenia. Właśnie o to chodzi! Możesz wielokrotnie dzielić przez dwa, aż po około 2^256 takich dzieleniach wrócisz do punktu wyjścia, zahaczając w zasadzie o każdy inny punkt. Tu nie ma operacji typu klucz publiczny modulo dwa. Masz jedynkę na końcu klucza prywatnego i nie wiesz, że ją masz, więc dzielisz dalej. Na tym polega problem: jeśli ostatni bit klucza prywatnego jest jedynką, to wynik się przekręci, ale niczego nie zauważysz, bo nie jesteś w stanie ustalić, jaki jest ostatni bit, jeśli dysponujesz samym punktem.
Ostatnio zmieniony czwartek, 17 czerwca 2021, 07:12 przez garlonicon, łącznie zmieniany 1 raz.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » środa, 16 czerwca 2021, 22:21

W sumie dobrze gadasz tylko jest mały problem. To co liczysz to jest klucz prywatny a my mamy dany klucz publiczny i to na nim trzeba robić wszystkie operacje.
Twoje: 0000000000000000000000000000000000000000000000000000000000000001 1
to moje: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
czyli punkt bazowy.
Twoje: fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140 -1
to moje: 79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 b7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777
ja też na to mówię "-1" :) czyli maksymalny klucz prywatny.
Jak widzisz 1 a -1 różnią się współrzędną y a x jest taki sam więc łatwo zmieniać znak jak ktoś potrzebuje.
Jeszcze może punkt symetrii czyli
Twoje: 7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 1/2
to moje: 3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63 c0c686408d517dfd67c2367651380d00d126e4229631fd03f8ff35eef1a61e3c
Twoje: 7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 -1/2
to moje: 3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63
3f3979bf72ae8202983dc989aec7f2ff2ed91bdd69ce02fc0700ca100e59ddf3
Swoją drogą to masz zamienione miejscami tzn to co piszesz że jest 1/2 to powinno być -1/2 i odwrotnie ale to nieważne na razie.
Cały mój pomysł polega na tym żeby obliczenia wykonywać na "moich" liczbach czyli na kluczach publicznych bo liczenie tego na kluczach prywatnych jak Ty to robisz nic Ci nie da bo nie ma to powiązania z kluczem publicznym, który chcesz "złamać" albo może masz jakiś patent ale ja nie łapię. Dlatego jak piszę że nie potrafię dzielić tzn że nie potrafię dzielić moich liczb czyli kluczy publicznych. Gdybym umiał dzielić przez dwa to po maksymalnie 256 dzieleniach mam klucz prywatny z publicznego. To co piszesz że zawsze jest możliwość dzielenia to prawda szczególnie przy modulo ale może dało by się prosto sprawdzić czy wynik nie jest ułamkowy np sprawdzając czy x i y spełniają równanie krzywej eliptycznej.

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » czwartek, 17 czerwca 2021, 07:08

Swoją drogą to masz zamienione miejscami tzn to co piszesz że jest 1/2 to powinno być -1/2 i odwrotnie ale to nieważne na razie.
Nic nie jest zamienione. Minus pół plus jeden to plus pół, wszystko się zgadza.
Dlatego jak piszę że nie potrafię dzielić tzn że nie potrafię dzielić moich liczb czyli kluczy publicznych
Nie da się mnożyć ani dzielić kluczy publicznych przez siebie. Możesz jedynie mnożyć i dzielić klucz publiczny przez znaną liczbę (lub dwie znane liczby przez siebie). Tyle. Gdyby się dało, to wystarczyłoby podzielić przez punkt bazowy i wtedy złamałbyś błyskawicznie każdy klucz. Ale się nie da.
Gdybym umiał dzielić przez dwa to po maksymalnie 256 dzieleniach mam klucz prywatny z publicznego.
Nie, miałbyś 1/2^256 nieznanego klucza prywatnego i nie miałbyś zielonego pojęcia, w którym miejscu przekraczasz punkt bazowy.
To co piszesz że zawsze jest możliwość dzielenia to prawda szczególnie przy modulo ale może dało by się prosto sprawdzić czy wynik nie jest ułamkowy np sprawdzając czy x i y spełniają równanie krzywej eliptycznej.
Wartości x i y zawsze spełniają równanie krzywej eliptycznej przy prawidłowym dzieleniu. Jak chcesz dzielić, to mnożysz punkt przez 7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 i masz wynik. Przykładowo: spróbuj podwoić 3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63 c0c686408d517dfd67c2367651380d00d126e4229631fd03f8ff35eef1a61e3c i zobacz, jaki punkt uzyskasz. Jeden czy minus jeden? No właśnie. Przemnóż go przez tą samą wartość, uzyskasz wtedy 1/4. Możesz go podwoić i sprawdzić, że wracasz do właściwego punktu.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » czwartek, 17 czerwca 2021, 07:32

Tak na szybko sprawdziłem i masz rację twoje 1/2 *2 daje 1 (ja mnożę klucz publiczny *2 ).
Tylko dalej nie rozumiem jak Twoje obliczenia przekładają się na klucz publiczny bo to co liczysz to klucze prywatne.
Posprawdzam to wieczorem.

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » czwartek, 17 czerwca 2021, 08:31

Tylko dalej nie rozumiem jak Twoje obliczenia przekładają się na klucz publiczny bo to co liczysz to klucze prywatne.
No tak, bo mając klucz prywatny do "1/2" jesteś w stanie dzielić punkty przez dwa, po prostu mnożąc klucz publiczny przez ten klucz prywatny. Jeśli masz dwa klucze publiczne, to nie da się ich pomnożyć.

Edit:
Gdybym umiał dzielić przez dwa to po maksymalnie 256 dzieleniach mam klucz prywatny z publicznego.
Nie miałbyś, przykładowo klucz Satoshiego da się dzielić więcej niż 256 razy i wynik wcale nie ułatwia jego złamania. Nie wiadomo także, w których miejscach i ile razy jest przekraczany pierwszy punkt. Żeby dojść do pierwszego punktu, musiałbyś przykładowo wiedzieć, jaki jest ostatni bit klucza prywatnego i odejmować jedynkę, jeśli w kluczu prywatnym jest jedynka na końcu, wtedy by to zadziałało. Ale to jest równoznaczne ze znajomością całego klucza prywatnego, więc się nie uda. Przykładowe wyniki:

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » czwartek, 17 czerwca 2021, 17:57

No dobra teraz to już całkiem zbaraniałem chyba. Napisz mi wzór z jakiego liczysz: publiczny/2 (jak robisz to mnożenie publiczny razy 1/2) np z Satoshiego jak policzyć:
678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB6 49F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5F przez
7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 aby wyszło
DEF2F43AFAA185045DDE45A7EA5621C45D3F9B2C2E96DB7260E0D617C2B0F09F CF30AED022D0932E39B68C5B618D11248EA94B08644E80605ED825A278405435
Sprawdzałem odwrotnie tzn pomnożyć:
DEF2F43AFAA185045DDE45A7EA5621C45D3F9B2C2E96DB7260E0D617C2B0F09F CF30AED022D0932E39B68C5B618D11248EA94B08644E80605ED825A278405435 *2
daje mi prawidłowo
678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB6 49F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5F

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » czwartek, 17 czerwca 2021, 20:23

7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1
To jest połowa. "1/2". To jest klucz prywatny, który daje połowę punktu bazowego. Bierzesz dowolny klucz publiczny (na przykład Satoshiego) i mnożysz go przez taką wartość. Czyli, jeśli idziesz od końca, to masz "20a1". Po rozłożeniu na bity to będzie "0010 0000 1010 0001". To oznacza, że musisz wziąć jeden klucz Satoshiego (bo masz jedynkę na końcu) i dodać do tego 32 klucze Satoshiego (bo następną jedynkę masz pięć bitów w lewo), następnie do tego dodać 128 kluczy Satoshiego (bo kolejną masz o dwa bity w lewo od poprzedniej), i tak dalej, aż dodasz wszystkie. Żeby zaimplementować mnożenie przez liczbę, wystarczy 255 razy podwoić dany punkt (bo na pierwszej pozycji już masz to, co trzeba). A potem wystarczy ustalić, na których bitach są jedynki i dodawać te punkty do siebie.

tldr: mnożysz klucz publiczny przez liczbę.

Jeśli chcesz się pobawić gotową implementacją działającą w praktyce, to wejdź na bitaddress.org, wygeneruj jakikolwiek klucz, kliknij na "Vanity address", jako pierwszy klucz podaj klucz publiczny Satoshiego, jako drugi klucz podaj klucz prywatny do "1/2" i wybierz "Multiply", czyli mnożenie. Wynikiem jest połowa klucza Satoshiego.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » czwartek, 17 czerwca 2021, 20:56

No tak właśnie myślałem nawet rozłożyłem 1/2 na potęgi 2. Z tym że szybciej było przegiąć i odejmować wyszło mi że 1/2 to:
pow (2,255) -pow(2,127) -pow(2,125) -pow(2,121) -pow(2,119) -pow(2,117) -pow(2,115) -pow(2,111) -pow(2,108) -pow(2,104) -pow(2,103) -pow(2,99) -pow (2,98) -pow (2,95) -pow(2,93) -pow(2,91) -pow(2,86) -pow(2,84) -pow(2,83) -pow(2,81) -pow(2,80) -pow(2,79) -pow(2,77) -pow(2,75) -pow(2,74) -pow(2,73) -pow(2,72) -pow(2,71) -pow(2,70) -pow(2,69) -pow(2,65) -pow(2,61) -pow(2,52) -pow(2,50) -pow(2,49) -pow(2,47) -pow(2,46) -pow(2,44) -pow(2,39) -pow(2,37) -pow(2,36) -pow(2,35) -pow(2,32) -pow(2,31) -pow(2,28) -pow(2,26) -pow(2,25) -pow(2,24) -pow(2,23) -pow(2,22) -pow(2,21) -pow(2,18) -pow(2,15) -pow(2,14) -pow(2,12) -pow(2,11) -pow(2,10) -pow(2,9) -pow(2,8) -pow(2,5) -pow(2,4) -pow(2,3) -pow(2,2) -pow(2,1) -pow(2,0)
wiem że sieczka ale tak w pythonie wygląda potęgowanie. Dzięki za opis dzielenia. Sprawdzę co pokazuje jak zrobi się dzielenie nieparzystego klucza :)
Ostatnio zmieniony czwartek, 17 czerwca 2021, 21:18 przez blank2, łącznie zmieniany 2 razy.

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » czwartek, 17 czerwca 2021, 21:04

Sprawdzę co pokazuje jak zrobi się dzielenie nieparzystego klucza
Nie różni się to specjalnie od parzystego klucza, bo patrząc na sam klucz publiczny nie znasz jego parzystości. Przedrostek 02 lub 03 przy skompresowanych kluczach kompletnie się tutaj nie łączy. Zresztą, już wiesz, co się dzieje przy dzieleniu nieparzystego klucza, bo przecież punkt bazowy to jedynka, czyli wartość jak najbardziej nieparzysta. Powstaje "1/2", ot i cała filozofia.

Jeśli klucz Satoshiego wygląda tak:

abcdefgh

To dzieląc go przez dwa uzyskujesz to:

abcdefg.h

Dzieląc dalej dostaniesz:

abcdef.gh

I nie widzisz tego, że wchodzisz w ułamki, ponieważ zarówno ułamki, jak i pierwiastki, liczba pi, a także wszystko inne odbywa się w ciele skończonym, czyli jest liczbą całkowitą. Wszystko jesteś w stanie przedstawić jako jakaś liczba całkowita (a nawet naturalna, bo ujemne wchodzą na dodatnie). I nie da się tutaj stwierdzić, kiedy przekraczasz granice całkowitości, bo takich granic zwyczajnie nie ma. Pierwiastki z pierwiastków możesz wyciągać, a nadal wyniki będą liczbami naturalnymi, dlatego nie da się tego złamać.

Początkujący
Posty: 22
Rejestracja: 18 listopada 2018
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Atak na klucz publiczny.

Postautor: blank2 » czwartek, 17 czerwca 2021, 21:18

Sprawdziłem i rzeczywiście lipa przy podzieleniu nieparzystego klucza (z prywatnego = 3) dostałem klucz publiczny odpowiadający prywatnemu:
0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a2 (ten akurat znam) sprawdziłem podwojenie no i zgadza się. Trzeba pomyśleć o innej metodzie :) Nie ma się co tak łatwo poddawać.

Wygadany
Awatar użytkownika
Posty: 593
Rejestracja: 8 lutego 2020
Reputacja: 1114
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: 7-bit secp256k1

Atak na klucz publiczny.

Postautor: garlonicon » czwartek, 17 czerwca 2021, 21:26

0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a2
No i pięknie, zgodnie z matematyką masz 3/2, czyli o jeden więcej niż 1/2. Jak widzisz, wszystko pasuje. Jeśli chcesz się pobawić, to po ogarnięciu dodawania, odejmowania, mnożenia i dzielenia, możesz śmiało wejść w potęgowanie i pierwiastkowanie. Możesz przykładowo wyjść z klucza prywatnego równego dwa i poszukać takiego klucza prywatnego, który po wymnożeniu przez samego siebie da z powrotem dwójkę.

Oprócz tego zauważ, że masz już wiedzę, żeby zrobić coś więcej niż podzielić przez dwa. Możesz dzielić przez trzy, pięć, a nawet siedemnaście, wystarczy że weźmiesz wartość maksymalną i ją podzielisz przez tyle, przez ile chcesz dzielić punkty. Jak uzyskasz minus, to wystarczy odwrócić punkt i masz wynik. W ten sposób powstała 1/2 i 1/3 w moich przykładach, równie dobrze możesz pójść dalej tym tropem.

Wróć do „Bitcoin”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości