Author

Topic: Como encriptar uma chave privada com bip38 já existente? (Read 770 times)

hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Aproveitando o topico.

É possivel fazer a engenharia reversa de uma pass?

Exemplo, tenho uma carteira da breadwallet, é possivel eu chegar a private key para ser usado em qualquer carteira? Ex, Bitcoin Core?

Agora de cabeça eu não lembro bem como funciona o bitcoin core, pois só instalei ele la em 2014..e depois larguei de mão isso de bitcoin... na epoca eu lembro que salvei um .dat só...mas não lembro se tinha gerado uma senha ou algo do tipo para ter uma privatekey

Então, não existe este lance de private key que pode ser usada em "qualquer carteira" porque cada carteira gera e guarda o seu conjunto de chaves de maneira diferente.

Chegar na master private key a partir da frase mnemonica não é "engenharia reversa", é o sentido natural da coisa. Sabendo a lista de palavras usada por uma carteira deterministica e o derivation path voce consegue gerar todos os infinitos pares de chaves dela. E importar as private keys que te interesse (por exemplo, as que contém dinheiro), uma a uma em qualquer outra wallet que suporte sweep de single wallet.

Várias carteiras possuem a opção de importar ou fazer sweep de single wallets, que é uma unica chave privada referente a uma única chave publica, tipo as single wallets que voce consegue gerar em programas de gerar paper wallet.

Até ha algum tempo atrás (antes da 0.13) a forma como a bitcoin core gerava as multiplas chaves que formam o keypool da wallet era de forma randomica, ao criar a wallet ele criava 100 pares de chaves para voce ir usando... Com o artificio do Bip32, muitas wallets começaram a gerar esse keypool a partir de uma unica master key privada, ao inves de gerar varios pares de chave aleatoriamente. Inclusive a core, que hoje usa um esquema deterministico para gerar os pares de chave da sua keypool.

Mas como o bip32 nao força nenhum path especifico, cada carteira usa o que faz mais sentido para ela. No caso da breadwallet, ela usa as palavras do bip39, e o layout padrao do bip32. Já a core, não usa mnemonics e o layout é m/0'/0'/i'

Cada carteira tem uma forma de backup diferente. O jeito de guardar um backup da keypool da bitcoin core é fazer uma copia do arquivo wallet.dat para um lugar seguro. O jeito de guardar um backup da keypool da breadwallet é anotar uma sequencia de 12 palavras, na ordem certa, num papel e guardar num lugar seguro.


Eu salvando a masterprivkey da minha carteira bitcoin core, eu consigo importar em outra wallet que aceite o derivation path que o bitcoin core usa? Por exemplo, se ao invés de eu fazer o backup da wallet.dat eu só simplesmente copiar o xprivkey do bitcoin core como que eu faço para importar o xprivkey (igual importa uma chave privada) no bitcoin core em outro computador caso eu precise ??
newbie
Activity: 34
Merit: 0
Aproveitando o topico.

É possivel fazer a engenharia reversa de uma pass?

Exemplo, tenho uma carteira da breadwallet, é possivel eu chegar a private key para ser usado em qualquer carteira? Ex, Bitcoin Core?

Agora de cabeça eu não lembro bem como funciona o bitcoin core, pois só instalei ele la em 2014..e depois larguei de mão isso de bitcoin... na epoca eu lembro que salvei um .dat só...mas não lembro se tinha gerado uma senha ou algo do tipo para ter uma privatekey

Então, não existe este lance de private key que pode ser usada em "qualquer carteira" porque cada carteira gera e guarda o seu conjunto de chaves de maneira diferente.

Chegar na master private key a partir da frase mnemonica não é "engenharia reversa", é o sentido natural da coisa. Sabendo a lista de palavras usada por uma carteira deterministica e o derivation path voce consegue gerar todos os infinitos pares de chaves dela. E importar as private keys que te interesse (por exemplo, as que contém dinheiro), uma a uma em qualquer outra wallet que suporte sweep de single wallet.

Várias carteiras possuem a opção de importar ou fazer sweep de single wallets, que é uma unica chave privada referente a uma única chave publica, tipo as single wallets que voce consegue gerar em programas de gerar paper wallet.

Até ha algum tempo atrás (antes da 0.13) a forma como a bitcoin core gerava as multiplas chaves que formam o keypool da wallet era de forma randomica, ao criar a wallet ele criava 100 pares de chaves para voce ir usando... Com o artificio do Bip32, muitas wallets começaram a gerar esse keypool a partir de uma unica master key privada, ao inves de gerar varios pares de chave aleatoriamente. Inclusive a core, que hoje usa um esquema deterministico para gerar os pares de chave da sua keypool.

Mas como o bip32 nao força nenhum path especifico, cada carteira usa o que faz mais sentido para ela. No caso da breadwallet, ela usa as palavras do bip39, e o layout padrao do bip32. Já a core, não usa mnemonics e o layout é m/0'/0'/i'

Cada carteira tem uma forma de backup diferente. O jeito de guardar um backup da keypool da bitcoin core é fazer uma copia do arquivo wallet.dat para um lugar seguro. O jeito de guardar um backup da keypool da breadwallet é anotar uma sequencia de 12 palavras, na ordem certa, num papel e guardar num lugar seguro.

jr. member
Activity: 66
Merit: 2
Aproveitando o topico.

É possivel fazer a engenharia reversa de uma pass?

Exemplo, tenho uma carteira da breadwallet, é possivel eu chegar a private key para ser usado em qualquer carteira? Ex, Bitcoin Core?

Agora de cabeça eu não lembro bem como funciona o bitcoin core, pois só instalei ele la em 2014..e depois larguei de mão isso de bitcoin... na epoca eu lembro que salvei um .dat só...mas não lembro se tinha gerado uma senha ou algo do tipo para ter uma privatekey
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Complicado de entender inicialmente, mas tendo a seed ou o xprivkey estou de boas.
newbie
Activity: 34
Merit: 0
Isso, o Bip32 trata de como gerar carteiras deterministicas. Como gerar multiplas chaves filhas a partir de uma chave mestra pai, esta regra pode ser usada para gerar hierarquias (arvores) de carteiras diversas, a padrao é uma convencionada para ter 3 niveis:

https://github.com/bitcoin/bips/raw/master/bip-0032/derivation.png

m / account' / change / address_index

https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

Mas depois disso foi proopsto no Bip43 usar um layout onde o segundo nivel é um campo "purpose" com o numero do bip que descreve o derivation path das subarvores depois dele:

m / purpose' / ...

https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki

E então Bip44 é uma proposta de um outro layout, um outro derivation path levemente diferente do default, que permite alem de multiplas contas, multiplas moedas:

m / purpose' / coin_type' / account' / change / address_index

https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

Ou seja, uma carteira que segue o BIP44 obrigatoriamente segue o BIP32 também, mas voce pode achar uma que segue o BIP32 sem o 44, seja usando o derivation path default do 32 ou algum outro.

Já a forma como você gera a chave mestra pode variar também, a carteira Electrum se não me engano foi quem começou com o uso de uma lista de palavras para isso, e depois a Trezor formalizou em uma bip (39) um metodo para fazer essa conversão de mnemonic para seed baseada na mesma ideia, mas com uma lista de palavras diferente.

https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

É mais ou menos assim que eu entendo a relação entre essas 4 propostas Tongue
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
por que algumas seeds tem formatos diferentes, tipo bip32 ou bip44?

Se não me engano, todas as seeds seguem o bip 32, mas nem todas seguem o bip 44. O bip 32 dá várias "opções" enquanto o bip 44 padroniza essas opções.
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
por que algumas seeds tem formatos diferentes, tipo bip32 ou bip44?
newbie
Activity: 34
Merit: 0
Eu já conhecia esse site de bip 39 mnemonic que de um modo que não sei como, identifica as chave privada de qualquer seed ou Xprivkey que você cola nesse site que inclusive funciona offline.

Ele nao identifica, ele GERA, deterministicamente, ou seja: de forma previsivel, tem uma regra para gerar uma cadeia de chaves a partir de uma seed. Essa regra, essa fórmula está descrita na BIP32.
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Obrigado, depois que eu criei esse tópico eu descobri como faz, é só ir nesses sites que geram paperwallets mas em vez de gerar uma nova chave, eu utilizo uma chave já conhecida, como a minha do bitcoin core.

Eu já conhecia esse site de bip 39 mnemonic que de um modo que não sei como, identifica as chave privada de qualquer seed ou Xprivkey que você cola nesse site que inclusive funciona offline. Por isso eu digo, bastando eu ter a seed da carteira, eu automaticamente tenho todas as senhas privadas de qualquer carteira, mesma que a carteira que gerou a seed não tenha a opção de exportar chaves privadas.
newbie
Activity: 34
Merit: 0
Assumindo que o que você busca é uma forma de colocar senha em chaves privadas que voce conhece, para guardar a versao com senha delas e nao a sem senha, abaixo vai instrucoes de como fazer isso:

Se a chave privada que voce quer por senha for uma "single wallet" em formato wif:

Exemplo, se sua chave privada for:
5KPtjGkfRb24tSBXaXbk3CtXH97XLcyQBDTn2j6dQQaN3MdGgS2
compressed: L4C3KaXibX9iA29Txz4LxjUQeEonubmwJ61BkcoqgK4Fs7AZyoLf

(instrucoes em ingles aqui: https://bitcoinpaperwallet.com/bip38-password-encrypted-wallets/ )

1- baixe o codigo de https://github.com/cantonbecker/bitcoinpaperwallet
2- confira a assinatura do download
3- analise o codigo
4- copie para uma maquina offline
5- abra o html num navegador
6- clique no botao skip ja que voce nao vai gerar um endereço novo
7- clique em "Validate or Decrypt"
8- clique no botao "Use these details to print a paper wallet"
9- clique no checkbox Encript with bip38
10- no exemplo acima, se voce usar a senha foobar o resultado será 6PRUtoi482AhYsBuaxKpSE61UsyoaANbMMx1uD3AbycKEGfvFj3tsY8sxx

Resumindo, com esse processo voce coloca senha numa chave de single wallet, transforma de um formato base58 que começa com 5... ou uma que começa com L... em uma encriptada por bip38, um endereço que começa em 6P...

Se não confiar nessa ferramenta, existem outras implementacoes em diversas linguagens de programacao, na pagina do BIP tem alguns links.

No caso de você querer colocar senha numa seed (BIP32 + BIP39 + BIP44, ou BIP32 + BIP39 com outro derivation path)

Exemplos de wallets deterministicas assim: Samourai, Mycelium, Copay... se não me engano MultiBitHD tb mas não lembro. Electrum não usa BIP39, não sei qual o esquema de passphrase ela usa.

Ferramenta: https://iancoleman.github.io/bip39/

Digite a lista de palavras no campo de mnemonic e a senha no campo do passphrase, os mesmos cuidados basicos devem ser tomados: conferir a integridade do download, inspecionar o codigo, usar uma maquina offline, etc.

O legal do Bip39 é que qualquer passphrase gera um keypool valido, entao o mesmo seed sem senha, ou com uma senha A ou com uma senha B, vai gerar uma wallet cada, 3 wallets funcionais. Isso é uma coisa bacana para negação plausível(plausible deniability), vc pode ter a "senha do ladrão" e deixar algum dinheiro nessa carteira. O dia que você for torturado para dizer a seed e a senha, você passa essa Wink

Exemplo 1:
Seed: wood close display bread width tuition pyramid view shed below draft ahead
Senha: foobar
Bip44 account (private): xprv9ypv8znaZGT2cZanETcrrAUVBECK1vFB74qDFUkkNAtS71ZzVjbimfRAvPP9jqeQBa5xfcdaKNV zeciun9oNQGLeBwxYKpMT5VGmEMF4pff

Exemplo 2:
Seed: wood close display bread width tuition pyramid view shed below draft ahead
Senha:
Bip44 account: xprv9xrHiQPysQtDTcnQFdzq9wrSzujCjg4kY37Ng7fG5ryuVnBQ6VnskfzkX5e36FLsTzDd4NBydkw 6vfxqyJ1NRwXqMFE82frht75rKZZXJUL

Moral da história, nao tem um padrao para "embaralhar seed", voce guarda ela como é, e a senha que da origem a carteira que interessa é o segredo. Portanto se voce ja tem uma sem senha com dinheiro e quer que o backup tenha senha, talvez seja mais facil transferir o dinheiro dela para outra (que pode ter o mesmo seed) com uma senha diferente de vazio.
newbie
Activity: 34
Merit: 0
Sua pergunta está confusa, pode reformular?

Voce tem uma chave privada em formato wif e quer saber como seria a versao encriptada dela com uma senha (bip38)?

Ou voce quer saber se existe alguma chave X em formato wif tal que ela + uma senha Y, passando pelo processo do bip38 resulte numa chave Z em formato wif que voce ja conhece?

O primeiro caso é facil, o segundo é impossível.
hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
 Olá senhores, quero saber como encriptar uma chave privada da minha carteira, por exemplo, ao importar essa chave, o carteira pede senha para a importação, eu sei que tem como gerar uma chave privada nesses sites que geram endereços para paperwallets que tem a função de encriptar a chave com bip38, só que eu quero saber como faz esse mesmo processo de encriptar uma chave, mas ao invés de gerar uma nova, seja uma já existente que tem na minha carteira por exemplo. Tem como?

Tem como fazer o mesmo processo com a Seed de uma carteira também?
Jump to: