Pages:
Author

Topic: [ANN] bitaddress.org Safe JavaScript Bitcoin address/private key - page 22. (Read 153371 times)

hero member
Activity: 574
Merit: 500
Where can I find the SHA-1 for version 2.6.1?

At this time I only sign SHA1 hashes for versions that go on the bitaddress.org website.

Thanks for the response. I was trying to find a download link for 2.6.0 then but could not find one... I'm probably just missing it, apologies in advance for the stupidity of asking.
newbie
Activity: 56
Merit: 0
I have asked this all over, so sorry for that, but one last time: Is there a way to make this work on the raspberry pi? Everytime I try it either hangs or doesn't finish even within 5+ hours of waiting. Is there a way to calculate how long it should take knowing the raspberry pi (version B) specs? I'm talking about using the BIP 38. Thanks!
sr. member
Activity: 437
Merit: 415
1ninja
Where can I find the SHA-1 for version 2.6.1?

At this time I only sign SHA1 hashes for versions that go on the bitaddress.org website.
legendary
Activity: 1442
Merit: 1000
Antifragile
Thanks again for all the replies. I tested it out - simple, nice, effective!

I guess the best thing (as you never want to lose the password), is to make it something you absolutely won't forget. Even something simple takes a lot of time in Scrypt to hack (as long as you know your wallet was compromised you will have time.)

Or, absolutely put it in a few key places, and back it up also.  I mean, you need the password and the BIP38 Private Key, so it is a sort of 2FA.

Any ideas?

IAS
full member
Activity: 218
Merit: 100
Thanks for the BIP38 integration. It feels a lot more secure having a password to get to the wallet, though I realize passwords can be forgotten.

? - Is there a walk through available on importing it into the wallet? (E.g. - How do we "cash in" (import) using the BitcoinQT client? I imagine we need the private key format to do the import.) I will play with a fraction of a BTC of course before utilizing the new wallets.

Any recommended BIP38 links would be appreciated.

Thanks,
IAS

After searching for this answer for a while, I found that I was able to get the funds from my BIP0038 encrypted paper wallet imported to my Blockchain.info wallet.
Under the Import/Export section, you'll find a place to "Import Private Key".
Once you input the encrypted private key, it askes for the passphrase you used to encrypt it with.

Super easy !

Side notes:
- Don't be tempted to use the "Import Paper Wallet" with the webcam option at the bottom of that page. You'll get an "Unsupported key format" error message.
- You can use webqr.com if you're lazy like me and don't want to type out the entire addrress.
newbie
Activity: 40
Merit: 0
Is there a walk through available on importing it into the wallet?

Bitcoin-Qt doesn't support BIP-0038 so you'ld need to convert the decrypt the BIP-0038 encrypted private key and then import that.  To decrypt the BIP-0038 encrypted private key click on the Wallet Details tab of BitAddress.org and enter or paste the BIP-0038 encrypted private key.  It will then prompt you for the BIP-0038 passphrase, and if it was correct the page will show the Bitcoin address and the private key (both the WIF, as well as WIF Compressed).

And then after that you can import it into BitcoinQT (or most other wallets)
https://en.bitcoin.it/wiki/Paper_wallet#Redeeming_Keys_and_Withdrawing_Funds
legendary
Activity: 2506
Merit: 1010
Is there a walk through available on importing it into the wallet?

Bitcoin-Qt doesn't support BIP-0038 so you'ld need to convert the decrypt the BIP-0038 encrypted private key and then import that [edit: into your client, such as Bitcoin-Qt].  To decrypt the BIP-0038 encrypted private key click on the Wallet Details tab of BitAddress.org and enter or paste the BIP-0038 encrypted private key.  It will then prompt you for the BIP-0038 passphrase, and if it was correct the page will show the Bitcoin address and the private key (both the WIF, as well as WIF Compressed).
legendary
Activity: 1442
Merit: 1000
Antifragile
Thanks for the BIP38 integration. It feels a lot more secure having a password to get to the wallet, though I realize passwords can be forgotten.

? - Is there a walk through available on importing it into the wallet? (E.g. - How do we "cash in" (import) using the BitcoinQT client? I imagine we need the private key format to do the import.) I will play with a fraction of a BTC of course before utilizing the new wallets.

Any recommended BIP38 links would be appreciated.

Thanks,
IAS
hero member
Activity: 574
Merit: 500
Where can I find the SHA-1 for version 2.6.1?
newbie
Activity: 40
Merit: 0
newbie
Activity: 17
Merit: 0
I've noticed that on the paper wallet page you have the option to choose how many wallets you wish to create. The problem is that the "random" secureRandom object is used for ALL of the wallets which you create on that page. Why is the object not refreshed on each wallet creation?

Why would it be? Entropy is not 'used up'. Recreating the object won't save you if you don't have enough entropy.


In fact in bitaddress.org a small amount entropy is constantly added with every mouse move, mouse click and key press.

Code:


edit3: On further inspection I've found this is not true. Even though seedTime() is invoked, the entropy is not added to the PRNG used to create private keys. There is a TODO in the source about reseeding so the author has this in mind.



Also please could somebody explain this bit of logic for randomising the 256 digits in this bit of code:

      while (sr.pptr < sr.poolSize) {  // extract some randomness from Math.random()
         t = Math.floor(65536 * Math.random());
         sr.pool[sr.pptr++] = t >>> 8;
         sr.pool[sr.pptr++] = t & 255;
      }

What is the reasoning of the bitand and the >>> 8? Couldn't this be a bit shift to a different integer? Why 8? Please explain to me.

Thanks!

It's pretty clear to me that the code is like this to extract two bytes from each call of Math.random()

So the first line in that loop creates a random number in the range [0, 65536) which is the standard 16 bit range.
The next line with the right shift by 8 adds the upper 8 bits to the sr.pool array, the line after that adds the lower 8 bits to the sr.pool array.

I'm not too sure why the author doesn't extract one byte at a time. Although I'm pretty confident it won't steal your bitcoins doing it either way.
Code:
while (sr.pptr < sr.poolSize) {
sr.pool[sr.pptr++] = Math.floor(256 * Math.random());
}


Soon enough, all these fears can be rested when something like this is added. I imagine a nice text entry box where the user can type in anything they like. I'll be extracting randomness from /dev/random on my LiveCD and copypasting the result into the text entry box.
Other paranoid people might be taking a photo with their hand covering the camera, since the fluctuations on the CCDs are a good source of randomness. Others might even download from random.org

edit: needless to say you could do that now by modifying the source. Add this to the code right after sr.seedInt(window.screenY); when sr is initialised.
Code:
secret_seed = "372f7e2fd2d01ce2a1d71dc072acbba4c6fd25a1087cd7f153f4ec0ce37e1ede"
for (t = 0; t < secret_seed.length; ++t) {
sr.pool[sr.pptr++] ^= secret_seed.charCodeAt(t) & 255;
if (sr.pptr >= sr.poolSize) sr.pptr -= sr.poolSize;
}

Then put whatever you want into secret_seed and that entropy will be added to the RNG.
I'm not responsible for any loss of bitcoins. Peer review of my code happily accepted.

edit2: for completeness I'd run this on the terminal to obtain 16 bytes (128 bits) of entropy.
Code:
cat /dev/random | head -c 16 | sha256sum

This is extremely helpful. Thanks for clearing this up yakov, I have sent you a little donation Smiley
sr. member
Activity: 437
Merit: 415
1ninja
how do you spend the funds that are stored to a bip38 encrypted password wallet?

found an answer: http://www.bit2factor.org and click "decrypt private key".   then import that private key into a client, or sweep it using something like the cold storage spend feature in mycelium for android.  to do that, you can generate a qr code of the private key using the "wallet details" tab from bitaddress.org and then scan that from mycelium.


It is not clear but you can decrypt the BIP38 on the "wallet details" tab. You just enter the BIP38 key and click View Details and it will show the passphrase input and a button to decrypt.
newbie
Activity: 40
Merit: 0
I've noticed that on the paper wallet page you have the option to choose how many wallets you wish to create. The problem is that the "random" secureRandom object is used for ALL of the wallets which you create on that page. Why is the object not refreshed on each wallet creation?

Why would it be? Entropy is not 'used up'. Recreating the object won't save you if you don't have enough entropy.


In fact in bitaddress.org a small amount entropy is constantly added with every mouse move, mouse click and key press.

Code:


edit3: On further inspection I've found this is not true. Even though seedTime() is invoked, the entropy is not added to the PRNG used to create private keys. There is a TODO in the source about reseeding so the author has this in mind.



Also please could somebody explain this bit of logic for randomising the 256 digits in this bit of code:

      while (sr.pptr < sr.poolSize) {  // extract some randomness from Math.random()
         t = Math.floor(65536 * Math.random());
         sr.pool[sr.pptr++] = t >>> 8;
         sr.pool[sr.pptr++] = t & 255;
      }

What is the reasoning of the bitand and the >>> 8? Couldn't this be a bit shift to a different integer? Why 8? Please explain to me.

Thanks!

It's pretty clear to me that the code is like this to extract two bytes from each call of Math.random()

So the first line in that loop creates a random number in the range [0, 65536) which is the standard 16 bit range.
The next line with the right shift by 8 adds the upper 8 bits to the sr.pool array, the line after that adds the lower 8 bits to the sr.pool array.

I'm not too sure why the author doesn't extract one byte at a time. Although I'm pretty confident it won't steal your bitcoins doing it either way.
Code:
while (sr.pptr < sr.poolSize) {
sr.pool[sr.pptr++] = Math.floor(256 * Math.random());
}


Soon enough, all these fears can be rested when something like this is added. I imagine a nice text entry box where the user can type in anything they like. I'll be extracting randomness from /dev/random on my LiveCD and copypasting the result into the text entry box.
Other paranoid people might be taking a photo with their hand covering the camera, since the fluctuations on the CCDs are a good source of randomness. Others might even download from random.org

edit: needless to say you could do that now by modifying the source. Add this to the code right after sr.seedInt(window.screenY); when sr is initialised.
Code:
secret_seed = "372f7e2fd2d01ce2a1d71dc072acbba4c6fd25a1087cd7f153f4ec0ce37e1ede"
for (t = 0; t < secret_seed.length; ++t) {
sr.pool[sr.pptr++] ^= secret_seed.charCodeAt(t) & 255;
if (sr.pptr >= sr.poolSize) sr.pptr -= sr.poolSize;
}

Then put whatever you want into secret_seed and that entropy will be added to the RNG.
I'm not responsible for any loss of bitcoins. Peer review of my code happily accepted.

edit2: for completeness I'd run this on the terminal to obtain 16 bytes (128 bits) of entropy.
Code:
cat /dev/random | head -c 16 | sha256sum
legendary
Activity: 873
Merit: 1000
how do you spend the funds that are stored to a bip38 encrypted password wallet?

found an answer: http://www.bit2factor.org and click "decrypt private key".   then import that private key into a client, or sweep it using something like the cold storage spend feature in mycelium for android.  to do that, you can generate a qr code of the private key using the "wallet details" tab from bitaddress.org and then scan that from mycelium.

update:
pointbiz responded below ... use the "wallet details" tab, paste the encrypted private key and it will prompt for the bip38 passphrase.  then it will show the qr code of the private key that can be spent using cold storage spending from mycelium for android.
newbie
Activity: 17
Merit: 0
Disclaimer: I am no expert especially with Javascript.

I have been digging through the bitaddress.org code and I have a couple of concerns in generating the paper wallet addresses.

I've noticed that on the paper wallet page you have the option to choose how many wallets you wish to create. The problem is that the "random" secureRandom object is used for ALL of the wallets which you create on that page. Why is the object not refreshed on each wallet creation?

Let me show this with screenshot.

https://i.imgur.com/96ppaNM.jpg

So this random object value is used for ALL of the wallets when creating them in bulk. Surely the secureRandom should be recreated for each wallet?

Also please could somebody explain this bit of logic for randomising the 256 digits in this bit of code:

      while (sr.pptr < sr.poolSize) {  // extract some randomness from Math.random()
         t = Math.floor(65536 * Math.random());
         sr.pool[sr.pptr++] = t >>> 8;
         sr.pool[sr.pptr++] = t & 255;
      }

What is the reasoning of the bitand and the >>> 8? Couldn't this be a bit shift to a different integer? Why 8? Please explain to me.

Thanks!
VTC
member
Activity: 84
Merit: 14
Is it possible to BIP38 passphrase protect already generated private keys?
I'd love to print again some of my existing paperwallets and passphrase protect them.


It is possible with https://github.com/casascius/Bitcoin-Address-Utility
There's a complied win32 on his website.
legendary
Activity: 3038
Merit: 1032
RIP Mommy
Is it possible to BIP38 passphrase protect already generated private keys?
I'd love to print again some of my existing paperwallets and passphrase protect them.


+1
donator
Activity: 674
Merit: 523
Is it possible to BIP38 passphrase protect already generated private keys?
I'd love to print again some of my existing paperwallets and passphrase protect them.
donator
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
legendary
Activity: 873
Merit: 1000
v2.5.1

 - BIP38 passphrase protected paper wallets.

how do you spend the funds that are stored to a bip38 encrypted password wallet?
Pages:
Jump to: