Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Zawsze mam rację
Awatar użytkownika
Posty: 6923
Rejestracja: 15 lutego 2011
Reputacja: 4513
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Zmienna

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: ShadowOfHarbringer » czwartek, 5 października 2017, 00:39

Najłatwiej będzie otworzyć kod otwartoźródłowego programu i po kolei patrzeć jakie działania są wykonywane, przetłumaczyć je na matematykę i potem powtarzać je na papierze.

Jeżeli chcesz zwykły klucz publiczny, to wystarczy przejrzeć kod np. Bitcoin Paper wallet(Javascript) albo Electrum(python).

Niestety z kluczem SegWitowym będzie trudniej, bo jest obsługiwany właściwie tylko przez klienty Core(C++) i GreenAdress(Android/Java).

Wydaje mi się, że to będzie najprostsza droga.
Gotówka P2P da światu wolność. To są jej wrogowie: Bitcoin Core, Blockstream, Lightning Network.
Ocenzurowane i zmanipulowane fora: /r/Bitcoin, /r/CryptoCurrency, BitcoinTalk
Klucze GPG/PGP: [3072D/F92EDBA4]

Zawsze mam rację
Awatar użytkownika
Posty: 6923
Rejestracja: 15 lutego 2011
Reputacja: 4513
Reputacja postu: 
0
Napiwki za post: 0.0015 BTC
Lokalizacja: Zmienna

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: ShadowOfHarbringer » czwartek, 5 października 2017, 01:13

Hegemon95 pisze:Nie jestem programistą czego bardzo żałuje i w moim przypadku jak i myślę że naprawdę wielu osób jest to bardzo przydatna wiedza dlatego podbijam stawkę.

Za precyzyjny poradnik krok po kroku jak dla idioty z kartką kalkulatorem i długopisem 0,02 BTC
Nie istnieje taki poradnik, na pewno nie w języku polskim.

Jak Twój angielski ?

Tutaj ktoś próbuje zrobić to samo co Ty, ale ze zwykłym kluczem. Nie jestem pewien czy uzyskał satysfakcjonującą odpowiedź i czy mu się udało.
https://bitcoin.stackexchange.com/quest ... rivate-key

SegWit jest kosmicznie skomplikowany w porównaniu do zwykłego Bitcoina i z tego co pamiętam nikt do tej pory się nie podjął takiego zadania w jego przypadku.

Krótko mówiąc: Jeżeli chcesz się podejmować tak ambitnych rzeczy no to niestety musisz zostać programistą. Przynajmniej na tyle żeby rozumieć czytany kod. Bez tego ani rusz.
Gotówka P2P da światu wolność. To są jej wrogowie: Bitcoin Core, Blockstream, Lightning Network.
Ocenzurowane i zmanipulowane fora: /r/Bitcoin, /r/CryptoCurrency, BitcoinTalk
Klucze GPG/PGP: [3072D/F92EDBA4]

Weteran
Awatar użytkownika
Posty: 3283
Rejestracja: 31 marca 2017
Reputacja: 3705
Reputacja postu: 
0
Napiwki za post: 0 BTC

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: akos » czwartek, 5 października 2017, 01:39

Hegemon95 pisze:Szukam gdzie się da na ten temat i naprawdę nigdzie nie ma nic co byłoby oparte w 100% o przysłowiową kartkę długopis i kalkulator.
Bo tego się nie liczy na kartce, chyba, że masz kilkaset godzin wolnego czasu, ale kup sobie od razu spory zapas zeszytów w kratkę i uważaj żeby się nie pomylić w liczeniu sha256 oraz base58 ;) Rozwiązaniem problemu ograniczonego zaufania do dostawcy narzędzi jest skorzystanie tak jak podpowiada @ShadowOfHarbringer z programów z dostępnym kodem źródłowym, które możesz zbudować ze źródeł lub uruchomić w danym interpreterze w przypadku języków skryptowych. Na początek polecam niewielkie i jedno z prostszych narzędzi napisane w pythonie: https://github.com/weex/addrgen To co chcesz zrobić czyli wygenerować adres publiczny z prywatnego poszukaj w metodzie test(otherversion, passphrase=None) pod komentarzem "# by private key". Niestety ten skrypcik jest na tyle minimalistyczny, że nie udostępnia wygodnego interfejsu z linii poleceń i trzeba odkomentować wybraną metodę w źródle przed uruchomieniem. Mam gdzieś własną przeróbkę gdzie można podać parametry uruchomienia bez konieczności edytowania skryptu, może uda mi się to odnaleźć gdybyś był zainteresowany, ew. mogę na szybko coś dorobić.

Tyle w skrócie, natomiast gdybyś był bardziej zainteresowany, to podrzucam lektury:
generowanie klucza prywatnego z sha256(passphrase)
https://en.bitcoin.it/wiki/Wallet_import_format

oraz nieco bardziej zaawansowane narzędzia z dostępnymi kodami źródłowymi:

https://en.bitcoin.it/wiki/Vanitygen - pozwala wygenerować adres zawierający podany ciąg znaków, np. swój nick
https://github.com/samr7/vanitygen - źródła do powyższego
https://github.com/matja/bitcoin-tool - inne popularne narzędzie m. in. do operowania na adresach

p.s.
Niestety nie jestem w stanie odpowiedzieć jak to wygląda w wersji SW, ponieważ jeszcze nie badałem tematu, ale powyższe źródła mogą być punktem wyjścia, bo generalnie najpierw musisz obczaić podstawy jeśli faktycznie chcesz generować klucze samodzielnie.

Zawsze mam rację
Awatar użytkownika
Posty: 6923
Rejestracja: 15 lutego 2011
Reputacja: 4513
Reputacja postu: 
1
Napiwki za post: 0 BTC
Lokalizacja: Zmienna

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: ShadowOfHarbringer » czwartek, 5 października 2017, 08:27

Hegemon95 pisze:Ale tak na logikę nawet jeśli możemy zobaczyć kod źródłowy i wyczytać jak ten program to liczy to co nam po tym jeśli nie znamy a tak naprawdę nie rozumiemy schematu wg którego on to liczy.
Znamy i rozumiemy.

Bitcoin opiera się na algorytmach kryptografii klucza publicznego prywatnego typu ECDSA. Algorytmy są znane i używane wszędzie, Bitcoin nie jest jakoś oderwany od rzeczywistości.
Po drugie, wyliczenie tego na kartce nic nie zmieni w tym przypadku, algorytm matematyczny może być tak złożony, że sam w sobie może mieć takie same pułapki jak kod programistyczny (informatyka to przecież właściwie "matematyka zautomatyzowana" a kod programu to jest właściwie zautomatyzowane równanie matematyczne).
Hegemon95 pisze:A co jeśli za parę lat się okaże że tylko kilka portfeli będzie w stanie obliczać nowe adresy albo jeszcze gorzej okaże się że te nieliczne firmy powiedzą... "no dobra tylko my wiemy że klucz publiczny c = a + b. Więc jeśli a = b - c i nikt się w to nie zagłębia to raz na jakiś czas możemy podbierać jakieś środki z portfeli np najrzadziej używanych żeby nikt się od razu nie połapał
To o czym tutaj mówisz jest nierealne i niemożliwe do wykonania bo wszystko co dzieje się w Bitcoin jest transparentne, łącznie z kodem źródłowym.

Na Twoim miejscu zapomniałbym o całym temacie - rozumiem co chcesz zrobić, ale zabierasz się do tego ze złych powodów i absolutnie nic w ten sposób nie osiągniesz, przy czym zmarnujesz 6 miesięcy na wykonanie tego zadania (4 miesiące na naukę programowania i 2 miesiące na spisanie algorytmu segwit na papier).

Zmarnujesz tylko czas i nic Ci to nie da, a za 6 miesięcy to SegWit może równie dobrze nie istnieć lub przynajmniej nie być nigdzie używanym.
Ostatnio zmieniony czwartek, 5 października 2017, 08:49 przez ShadowOfHarbringer, łącznie zmieniany 1 raz.
Gotówka P2P da światu wolność. To są jej wrogowie: Bitcoin Core, Blockstream, Lightning Network.
Ocenzurowane i zmanipulowane fora: /r/Bitcoin, /r/CryptoCurrency, BitcoinTalk
Klucze GPG/PGP: [3072D/F92EDBA4]

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
2
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: rav3n_pl » czwartek, 5 października 2017, 08:38

Hegemon95 pisze: wyczytać jak ten program to liczy to co nam po tym jeśli nie znamy a tak naprawdę nie rozumiemy schematu wg którego on to liczy.
Totalnie mylisz pojęcia.
Klucz prywatny to po prostu losowa 256bit liczba. Musisz ją tylko zapisać w formacie WIF.
Uzyskujesz ją w dowolny sposób: rzucając monetą, kośćmi czy tasując karty (patrz mój podpis).
Sposób obliczania adresu z klucza jest STAŁY i możesz użyć do tego dowolnego narzędzia, choćby bitaddress czy brainwallet, czy bx z konsoli.
I dlaczego segwit? Większość/wszystkie papier wallety obsługują "zwykłe" adresy.
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Zawsze mam rację
Awatar użytkownika
Posty: 6923
Rejestracja: 15 lutego 2011
Reputacja: 4513
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Zmienna

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: ShadowOfHarbringer » czwartek, 5 października 2017, 08:47

rav3n_pl pisze:Większość/wszystkie papier wallety obsługują "zwykłe" adresy.
Nawet lepiej: Nie istnieje jeszcze paper wallet typu SegWit.

Wszystkie paper wallety obecnie to klasyczne paper wallety.

Generalnie to SegWit mocno namieszał coś w algorytmach paper walleta, zdaje się że paper wallety ze SegWitem nie będą w ogóle możliwe w dzisiejszym formacie, ale nie będę się przy tym upierał bo nie pamiętam szczegółów.
Gotówka P2P da światu wolność. To są jej wrogowie: Bitcoin Core, Blockstream, Lightning Network.
Ocenzurowane i zmanipulowane fora: /r/Bitcoin, /r/CryptoCurrency, BitcoinTalk
Klucze GPG/PGP: [3072D/F92EDBA4]

Weteran
Posty: 2518
Rejestracja: 21 marca 2014
Reputacja: 1468
Reputacja postu: 
3
Napiwki za post: 0 BTC

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: The Real McCoin » czwartek, 5 października 2017, 08:49

@Hegemon95, jesteś hardkorem?
Napisałeś:
z wymyślonego klucza prywatnego
a to już brzmi jak złamanie podstawowej zasady.
Klucza kryptograficznego się nie wymyśla. Do utworzenia klucza kryptograficznego nie używa się mózgu.
Klucz ma być losowy, żeby był maksymalnie trudny do odgadnięcia. W przypadku Bitcoina to 256-bitowa liczba.
Myśleć trzeba o tym jak zdobyć losowość. Można użyć np. do tego takiego narzędzia: kostki do gry. Z tym, że musisz wtedy ufać jej producentowi, że nie umieścił w niej backdoora.
Ludzie, wiadomo, to wygodnisie, a wygoda to przeciwny biegun bezpieczeństwa.
Dlatego ludzie zmniejszają przestrzeń kombinacji używając zwrotów językowych.
Musisz być tego świadomy. Świadomy tego, że utworzenie klucza prywatnego to zagadnienie samo w sobie.
Jeżeli klucz chcesz utworzyć z passphrase to silnie zalecane jest użycie do tego celu key stretchingu:
In cryptography, key stretching techniques are used to make a possibly weak key, typically a password or passphrase, more secure against a brute force attack by increasing the time it takes to test each possible key. Passwords or passphrases created by humans are often short or predictable enough to allow password cracking. Key stretching makes such attacks more difficult.
Może pamiętasz historię stronki brain walleta. Autor nie użył key stretchingu i pookradano ludzi.
Oczywiście zastosowanie key stretchingu ręcznie to będzie dodatkowy problem i wysiłek.

Jesteś hardkorem?
Jeżeli nie to zignoruj ten mój post.

Orator
Posty: 845
Rejestracja: 3 kwietnia 2014
Reputacja: 279
Reputacja postu: 
0
Napiwki za post: 0 BTC

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: Awesomist » czwartek, 5 października 2017, 09:33

@Hegemon95 podziwiam zapał ale wyobraź sobie ile czasu stracisz na coś takie - czy nie lepiej byłoby przeznaczyć na coś innego?

Dla mnie obecnie najbezpieczniejszym rozwiązaniem jest użycie trezora (nie trzeba rozbijać banku gdy coś się stanie i będziesz potrzebował części środków) z zapamiętaniem 24 słów.
Nie jest problemem przecież je zapamiętać, a można sprawę sobie jeszcze ułatwić: użyć najprostszej mnemotechniki i ułożyć ze słów krótką historię gdzie Tylko ty będziesz wiedział, które słowa (lub dla bezpieczeństwa ich odpowiednie wariacje, synonimy itd) są kluczem i w jakiej kolejności. Takie coś możesz sobie nawet zapisać i trzymać na lodówce, póki nikt nie będzie wiedział do czego służy - jesteś bezpieczny (bo i tak musiałby wybrać odpowiednie slowa (lub ich jakiekolwiek zastępstwa, które tylko ty znasz i kolejność).
Naturalnie dla skryptu to pewnie nie byłby problem na dłuższą metę ale póki będzie to siedziało w twojej głowie - żaden problem.

Można być naprawdę kreatywnym w kwestii zabezpieczenia seed'ów jeżeli chcesz zaufać tylko sobie nie będąc programistą.

pm7
Weteran
Posty: 7893
Rejestracja: 20 maja 2012
Reputacja: 969
Reputacja postu: 
1
Napiwki za post: 0 BTC

Jak obliczyć klucz publiczny z wymyślonego klucza prywatnego.

Postautor: pm7 » czwartek, 5 października 2017, 10:23

Hegemon95 pisze: 1dwa3cztery5szesc7osiem9dzisiec11dwanascie13czternasci (54 znaki)
Jeżeli myślisz o standardowym formacie klucza prywatnego WIF, to jest to nieprawidłowy klucz:
https://en.bitcoin.it/wiki/Private_key# ... ort_format
Hegemon95 pisze: jakie obliczenia powinienem wykonać jedno po drugim by wyliczyć swój adres publiczny w wersji segwit.
Odpuść sobie SW na razie. Te adresy są słabo wspierane.
Hegemon95 pisze: Szukam gdzie się da na ten temat i naprawdę nigdzie nie ma nic co byłoby oparte w 100% o przysłowiową kartkę długopis i kalkulator. Zawsze jest jakiś program jakaś firma itd, nawet jeśli działa offline to nie znaczy że nie może działać wg jakiegoś z góry określonego schematu.
O ile mogę zrozumieć taki argument w kwestii bezpiecznego generowania klucza, to nie rozumiem problemu z użyciem programu do przeliczenia klucza prywatnego na adres. Jak masz jakieś wątpliwości, użyj kilku różnych programów, wszystkie powinny wygenerować ten sam adres.
Hegemon95 pisze: A co jeśli za parę lat się okaże że tylko kilka portfeli będzie w stanie obliczać nowe adresy
Na chwilę obecną tylko parę portfeli obsługuje SW i nie wiem, czy są określone standardy zapisu kluczy prywatnych SW. Należy zaczekać. Jeżeli chodzi o zwykłe adresy, to standard zapisu kluczy nie zmienił się od lat i można spokojnie założyć, że zawsze da się go wykorzystać w przyszłości. Z SW powinno być podobnie jak ustali się standardy i pojawią się portfele, które je implementują.
ShadowOfHarbringer pisze: Generalnie to SegWit mocno namieszał coś w algorytmach paper walleta, zdaje się że paper wallety ze SegWitem nie będą w ogóle możliwe w dzisiejszym formacie, ale nie będę się przy tym upierał bo nie pamiętam szczegółów.
Była taka propozycja, żeby uniknąć sytuacji, że te same klucze pokazują różne saldo na portfelach obsługujących/nieobsługujących SW.

Wróć do „Bitcoin”

Kto jest online

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