Bitcoin Forum
April 19, 2024, 10:08:27 PM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: 1 2 [All]
  Print  
Author Topic: How Much Trust does Bitaddress.org deserve?  (Read 5004 times)
traderjoe (OP)
Jr. Member
*
Offline Offline

Activity: 34
Merit: 12


View Profile
July 13, 2012, 05:24:26 PM
Last edit: July 14, 2012, 03:31:47 PM by traderjoe
 #1

Newbie here wondering how much confidence more veteran members put in the addresses generated by Bitaddress.org.  I understand from watching deterministic wallets like Armory that apparently random private addresses can be generated from a single seed.  I'm not skilled enough to review the code generating the private keys to verify the author has not used a deterministic seed, known only to himself, to generate all of the apparently random addresses.  Or, maybe the libraries used for making the address do not have access to enough entropy, making collisions more likely than they should be.  --Or-- even using the site feature to generate a private key from a passphrase, it might not actually be using the hash of the passphrase to create the private key, just saying it did and doing the translation in a consistent way.  I did verify the page's checksum and the author's signature on the changelog.

So, are there many people here who have reviewed the code behind bitaddress.org and have a lot of confidence in the way the addresses are generated?  

Short of that, if there are other forum members who have been using addresses created by bitaddress.org for a long time and trust it, I'd love to hear from you about how much confidence to put on the page.  Or if you know the author of the pages from the forum here & form an opinion based on that.
"If you don't want people to know you're a scumbag then don't be a scumbag." -- margaritahuyan
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713564507
Hero Member
*
Offline Offline

Posts: 1713564507

View Profile Personal Message (Offline)

Ignore
1713564507
Reply with quote  #2

1713564507
Report to moderator
anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 13, 2012, 05:35:06 PM
 #2

I read the code - there is no Trojan in there. Since I use that code often, I stored it on my own site to make sure this wouldn't change and so I have it.

If you want to be absolutely sure, do this:
1. Load the page in the browser
2. Disconnect the network
3. Create your Brain or Paper Wallet
4. Shut down your box, reconnect and boot.

▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
unclemantis
Member
**
Offline Offline

Activity: 98
Merit: 10


(:firstbits => "1mantis")


View Profile
July 13, 2012, 06:02:23 PM
 #3

I use it all the time. It is a universally os compatable solution. I have bitaddress.org and everpassword.com/aes-encryptor saved to my usb drive.

When I want to make a new offline wallet I just fire up ubuntu OS on a live disc. Insert my usb drive. Open up bitaddress.org. Generate my keypairs. Copy and paste them into the aes-encryptor. Choose a strong password. Encrypt. Copy and paste the encrypted string into a txt file on the usb drive. Copy and paste just the public keys in plain txt into the same file. Restart into windows. Print the file with OCR text and presto!

PHP, Ruby, Rails, ASP, JavaScript, SQL
20+ years experience w/ Internet Technologies
Bitcoin OTC | GPG Public Key                                                                               thoughts?
traderjoe (OP)
Jr. Member
*
Offline Offline

Activity: 34
Merit: 12


View Profile
July 14, 2012, 03:06:29 AM
Last edit: July 14, 2012, 05:08:46 AM by traderjoe
 #4

Thank you very much for sharing what you know of bitaddress.org and paper wallets.

I have to say, the bitaddress.org + everpassword.com/aes-encryptor  combo to create paper wallets on a Ubuntu live disk or usb, has got to be one of the slickest ways to make them that I have seen so far!  I've spent a long time studying alternatives that people on this board are using, thanks for sharing another alternative.

After thinking about security for a long time, I am inclined to backup an aes-encrypted digital copy of the private keys somewhere on my windows hard drive where it will be backed up (for protection from losing them).  But to keep the strong password to the aes-encrypted private keys, "offline" in a hard copy with the rest of my important documents.  That keeps the offline copy from itself needing another layer of protection from physical access.  If any readers have other great easy ways to do this, I'd like to hear.  But the everpassword.com/aes-encryptor combo on a live Ubuntu CD, looks like a great way to get there.
nimda
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1000


0xFB0D8D1534241423


View Profile
July 14, 2012, 03:31:35 AM
 #5

bitaddress.org is great for brainwallets. I've looked at the source code, monitored network activity while generating addresses, and tried to generate addresses after unplugging the ethernet cord (it worked). I am reasonably convinced that it does not store your private keys.
I have a copy of the website saved to my flash drive. In order to get into my brainwallet, you'd need to know my full name, SSN, driver's license ID number, and other things, not to mention the several-word salt I memorized. The novel part is that due to hashing algorithms, the brainwallet's passphrase includes none of this information Grin
TangibleCryptography
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250


Tangible Cryptography LLC


View Profile WWW
July 14, 2012, 03:50:37 AM
 #6

In order to get into my brainwallet, you'd need to know my full name, SSN, driver's license ID number, and other things, not to mention the several-word salt I memorized. The novel part is that due to hashing algorithms, the brainwallet's passphrase includes none of this information

Security through obscurity?

1) What does adding publicly available information to a strong passphrase add?
2) If you have to memorize it then it isn't a salt.

anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 14, 2012, 07:10:48 AM
 #7

In order to get into my brainwallet, you'd need to know my full name, SSN, driver's license ID number, and other things, not to mention the several-word salt I memorized. The novel part is that due to hashing algorithms, the brainwallet's passphrase includes none of this information

Security through obscurity?

1) What does adding publicly available information to a strong passphrase add?
2) If you have to memorize it then it isn't a salt.


It adds to security because this stuff applies to you only.  This means an attack can't be directed against all brain wallets any more - it is specifically against you. But one of them is certainly enough.

So my suggestion is: use your SSN OR drivers license number, then use a string of words that is easy to remember for YOU, but not easy to guess for others - so you won't forget it. You can use some of these words in a foreign language or add some deliberate miss-spelling to them.

▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
DublinBrian
Full Member
***
Offline Offline

Activity: 197
Merit: 100


View Profile
July 14, 2012, 10:45:14 AM
Last edit: July 14, 2012, 12:12:13 PM by BitcoinTraderIE
 #8

My main concern is whether Bitaddress generates truly random keypairs. This is a problem whether your box is offline or not. And its irrelevant whether you have booted from a CD or not.

If the developers of Bitaddress know what keypairs their program will generate then they can steal your funds, even if you never go online again. They can steal the funds of everyone who ever used their program, by regenerating the same keypairs that users generated.

How do we know that Bitaddress isnt only capable of generating 100 million keypairs. The developers can wait until there is a good quantity of funds, scattered around those 100 million addresses and then they can regenerate all 100 million private keys and steal the funds.

Im not saying that they are doing this, Im simply saying that, as someone who doesnt have the competence to review source code, or even compile source code, I cannot be 100% sure that this is impossible.
anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 14, 2012, 11:12:46 AM
 #9

My main concern is whether Bitaddress generates truly random keypairs. This is a problem whether your box is offline or not. And its irrelevant whether you have booted from a CD or not.


The code uses your mouse movements as a source of entropy. For deterministic (brain) wallets, that is irrelevant, anyway, because the entropy comes from the passphrase you dream up.

▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
DublinBrian
Full Member
***
Offline Offline

Activity: 197
Merit: 100


View Profile
July 14, 2012, 11:45:26 AM
 #10

The code uses your mouse movements as a source of entropy. For deterministic (brain) wallets, that is irrelevant, anyway, because the entropy comes from the passphrase you dream up.
How do we know that the Bitaddress.org program is actually the compiled source code that is published?

If a government actor were trying to damage bitcoin, this would be the kind of trick they would use.
mcorlett
Donator
Sr. Member
*
Offline Offline

Activity: 308
Merit: 250



View Profile
July 14, 2012, 11:55:53 AM
 #11

I read the code - there is no Trojan in there. Since I use that code often, I stored it on my own site to make sure this wouldn't change and so I have it.

If you want to be absolutely sure, do this:
1. Load the page in the browser
2. Disconnect the network
3. Create your Brain or Paper Wallet
4. Shut down your box, reconnect and boot.
Sure, you might be able to check that it's not phoning home to some server somewhere with the generated private keys, but you'd have to be an experienced cryptographer to check for more advanced vulnerabilities.

anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 14, 2012, 02:12:06 PM
 #12


Sure, you might be able to check that it's not phoning home to some server somewhere with the generated private keys, but you'd have to be an experienced cryptographer to check for more advanced vulnerabilities.

Indeed, it's possible to use the mouse movements to do something deterministic or something. I did not go to great length to establish the integrity of the code, so I may have overlooked something - it's 4000 lines, after all.

But the brain wallet is straightforward: It's private key is SHA256(Passphrase) and the SHA256 code does just that: It creates a sha256 hash. And that is a very small amount of code. You can create it with JS and verify that on the command line:
Code:
$ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum

That said: I obviously don't guarantee anything.

▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
mcorlett
Donator
Sr. Member
*
Offline Offline

Activity: 308
Merit: 250



View Profile
July 14, 2012, 02:33:00 PM
 #13

Indeed, it's possible to use the mouse movements to do something deterministic or something. I did not go to great length to establish the integrity of the code, so I may have overlooked something - it's 4000 lines, after all.
I was thinking that using the number of milliseconds since some kind of epoch as n in the standard deterministic wallet would be a good idea. That's about 86,400,000 possible keys per day, which would be trivial to check with a local copy of the blockchain.

But the brain wallet is straightforward: It's private key is SHA256(Passphrase) and the SHA256 code does just that: It creates a sha256 hash. And that is a very small amount of code. You can create it with JS and verify that on the command line:
Code:
$ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum
That's a good tip!

TangibleCryptography
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250


Tangible Cryptography LLC


View Profile WWW
July 14, 2012, 02:34:14 PM
 #14

It adds to security because this stuff applies to you only.  This means an attack can't be directed against all brain wallets any more - it is specifically against you. But one of them is certainly enough.

That is the purpose of salt.  No need to memorize salt though it isn't a secret.
DublinBrian
Full Member
***
Offline Offline

Activity: 197
Merit: 100


View Profile
July 14, 2012, 02:47:48 PM
 #15

But the brain wallet is straightforward: It's private key is SHA256(Passphrase) and the SHA256 code does just that: It creates a sha256 hash. And that is a very small amount of code. You can create it with JS and verify that on the command line:
Code:
$ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum
If its that easy, why are people using Bitaddress? Just generate your own keypair.

(Im not trying to be argumentative here, I genuinely want to know. Im not a coder but Ive put a lot of trust in Bitaddress.org key generator, and I do not want to lose any funds)
anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 14, 2012, 02:48:29 PM
 #16


That is the purpose of salt.  No need to memorize salt though it isn't a secret.

If it isn't, you are surely able to post my drivers license number here.

Such information isn't strictly secret, but it's most likely unavailable to a cracker - especially the brand who are simply trying every address in the blockchain if it was created by a simple password.

▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
mcorlett
Donator
Sr. Member
*
Offline Offline

Activity: 308
Merit: 250



View Profile
July 14, 2012, 02:50:37 PM
 #17

But the brain wallet is straightforward: It's private key is SHA256(Passphrase) and the SHA256 code does just that: It creates a sha256 hash. And that is a very small amount of code. You can create it with JS and verify that on the command line:
Code:
$ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum
If its that easy, why are people using Bitaddress? Just generate your own keypair.

(Im not trying to be argumentative here, I genuinely want to know. Im not a coder but Ive put a lot of trust in Bitaddress.org key generator, and I do not want to lose any funds)
That only gives you the private key in hex. You need to derive a public key from that, and in turn a Bitcoin address from that.

nimda
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1000


0xFB0D8D1534241423


View Profile
July 14, 2012, 02:55:42 PM
 #18

The code uses your mouse movements as a source of entropy. For deterministic (brain) wallets, that is irrelevant, anyway, because the entropy comes from the passphrase you dream up.
How do we know that the Bitaddress.org program is actually the compiled source code that is published?

If a government actor were trying to damage bitcoin, this would be the kind of trick they would use.
I haven't seen an answer to this yet.
We know that the bitaddress.org program is the code which is published because it is not compiled. Javascript is by nature a client-side scripting-language, so you can just "view source" to see what code it is using.
TangibleCryptography
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250


Tangible Cryptography LLC


View Profile WWW
July 14, 2012, 02:56:00 PM
 #19


That is the purpose of salt.  No need to memorize salt though it isn't a secret.

If it isn't, you are surely able to post my drivers license number here.

Such information isn't strictly secret, but it's most likely unavailable to a cracker - especially the brand who are simply trying every address in the blockchain if it was created by a simple password.

One more time before I give up.
THE CRYPTOGRAPHIC METHOD TO ENSURE THE ATTACKER CAN'T PERFORM A PRECOMPUTATION ATTACK IS SALT!
While an attacker may be able to precompute SHA256(password) he can't precompute SHA256(password+salt).  Where salt is a random 128 bit number.

Using things like personal information doesn't provide sufficient entropy.  While he may not be able to find your driver's license number a modern GPU could attempt every possible drivers license number in a second or two.  So you merely adding complexity without adding any real security.  More complexity increases the chance you will not be able to recover the private key later.   Say it is 20 years from now and you need to recover your private key.  Hmm was that (passphrase+name+driver's license) or was it (passphrase+drivers license+name)? Wait did I capitalize the name?  The driver's license has dashes now but did it have dashes 20 years ago?  Did the DMV ever change my driver's license?  etc. 

There is no cryptographic value to adding personal information to a passphrase.   We use salt to ensure the attacker needs to isolate and attack one passphrase. 

To be truly secure you need:
a) strong passphrase
b) salt of sufficient size (128 bit recommended)
c) private key derived from password using a multi-round process (PBKDF2, bcrypt, scrypt, etc)
anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 14, 2012, 02:57:16 PM
 #20

But the brain wallet is straightforward: It's private key is SHA256(Passphrase) and the SHA256 code does just that: It creates a sha256 hash. And that is a very small amount of code. You can create it with JS and verify that on the command line:
Code:
$ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum
If its that easy, why are people using Bitaddress? Just generate your own keypair.

(Im not trying to be argumentative here, I genuinely want to know. Im not a coder but Ive put a lot of trust in Bitaddress.org key generator, and I do not want to lose any funds)

Because this command simply creates a "random" 256-bit number, which can be interpreted as a private key. This command doesn't give you the address that belongs to that key so you cannot send funds to it. And it doesn't give you the key in WIF format which is what you need to import it into a wallet - so you can spend it.


▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
anu
Legendary
*
Offline Offline

Activity: 1218
Merit: 1001


RepuX - Enterprise Blockchain Protocol


View Profile
July 14, 2012, 03:07:55 PM
 #21


That is the purpose of salt.  No need to memorize salt though it isn't a secret.

If it isn't, you are surely able to post my drivers license number here.

Such information isn't strictly secret, but it's most likely unavailable to a cracker - especially the brand who are simply trying every address in the blockchain if it was created by a simple password.

One more time before I give up.
THE CRYPTOGRAPHIC METHOD TO ENSURE THE ATTACKER CAN'T PERFORM A PRECOMPUTATION ATTACK IS SALT!
While an attacker may be able to precompute SHA256(password) he can't precompute SHA256(password+salt).  Where salt is a random 128 bit number.

Using things like personal information doesn't provide sufficient entropy.  While he can't know your driver's license number a modern GPU could attempt every possible drivers license number in a second or so. 

One more time before I give up: IT DOESN'T HURT IF THE CRACKER DOESN'T KNOW THE SALT


▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
███████████▄    ▄███████████
█████████████▄▄█████████████
████████████████████████████
████████████████████████████
▀█████████████████████████▀
  ▀█████████████████████▀
   ▄████████████████████▄
 ████████████████████████▄
████████████████████████████
████████████████████████████
█████████████▀▀█████████████
███████████▀    ▀███████████
▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
RepuX▄██▄
████
████
████
████
████
████
████
▀██▀
.Decentralized Data & Applications Protocol For SMEs.
.
▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
▄██▄
████
████
████
████
████
████
████
▀██▀
Enterprise Blockchain Protocol
.GET WHITELISTED.
Token Sale starts 6th of February 2018
nimda
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1000


0xFB0D8D1534241423


View Profile
July 14, 2012, 03:13:46 PM
 #22

Yes, the real reason to use bitaddress.org for brainwallets is how it transforms the private key into wallet import format and gives you the public key. Without it, have fun computing secp256k1 and RIPEMD-160 and base58 and all of that...
TangibleCryptography
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250


Tangible Cryptography LLC


View Profile WWW
July 14, 2012, 03:31:05 PM
Last edit: July 14, 2012, 04:29:37 PM by TangibleCryptography
 #23

    One more time before I give up: IT DOESN'T HURT IF THE CRACKER DOESN'T KNOW THE SALT

    So my original post was accurate.  Security through obscurity.

    One should assume the attacker knows everything but the secret.  

    That includes:
    • algorithm
    • salt
    • number of rounds
    • other technical details

    Strong cryptography is still strong even if all of the above is given to the attacker.  It is strength from numbers not strength from obscurity.


    There is no value in obscuring the salt. While it is true the attacker not knowing the salt doesn't make it weaker it doesn't make it stronger.  On the other hand using an input with limited entropy as a salt is a cryptographic flaw.  A driver's license number has at most 30 bits of entropy which is pitifully weak given the computing power of today's systems.  Modern salt should be at least 64bit (have at least 17 trillion times as much entropy) and honestly given the "cheapness" of larger bits there is no reason to not use 128 bit (almost a quadrillion, quadrillion times as much entropy).[/list]
    TangibleCryptography
    Sr. Member
    ****
    Offline Offline

    Activity: 476
    Merit: 250


    Tangible Cryptography LLC


    View Profile WWW
    July 14, 2012, 03:38:03 PM
     #24

    Yes, the real reason to use bitaddress.org for brainwallets is how it transforms the private key into wallet import format and gives you the public key. Without it, have fun computing secp256k1 and RIPEMD-160 and base58 and all of that...

    This.  I do hope the author considers expanding the site.  The ability to generate a printout of encrypted private keys for cold wallets would be a useful feature.  The ability to generate a single address or sequence of addreses from a passphrase would also be a useful feature. 
    Maged
    Legendary
    *
    Offline Offline

    Activity: 1204
    Merit: 1015


    View Profile
    July 14, 2012, 04:18:43 PM
     #25

    One more time before I give up: IT DOESN'T HURT IF THE CRACKER DOESN'T KNOW THE SALT

    So my original post was accurate.  Security through obscurity.

    One should assume the attacker knows everything but the secret.
    Using publicly available information and semi-private information alone is a bad idea, yes, but it can add a few bits of entropy if you use it along with a good secret. Hell, just the order that the information is used is worth 1-2 bits of entropy (depending on how much information you include).

    Also, passwords as a whole are security through obscurity, so we might as well just give up, then, because we have to assume that all attackers know the secret, too.

    anu
    Legendary
    *
    Offline Offline

    Activity: 1218
    Merit: 1001


    RepuX - Enterprise Blockchain Protocol


    View Profile
    July 14, 2012, 04:29:00 PM
     #26

    One more time before I give up: IT DOESN'T HURT IF THE CRACKER DOESN'T KNOW THE SALT

    So my original post was accurate.  Security through obscurity.


    Not at all. The thing is supposed to be a brain wallet. That means it's in your brain, and only there.

    And security through obscurity is not always bad. For example I use words from 3 languages in my (real) passphrase, 2 of which are obscure indeed - the other is Thai. Good luck with your dictionary attack!

    ▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
    ███████████▄    ▄███████████
    █████████████▄▄█████████████
    ████████████████████████████
    ████████████████████████████
    ▀█████████████████████████▀
      ▀█████████████████████▀
       ▄████████████████████▄
     ████████████████████████▄
    ████████████████████████████
    ████████████████████████████
    █████████████▀▀█████████████
    ███████████▀    ▀███████████
    ▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
    RepuX▄██▄
    ████
    ████
    ████
    ████
    ████
    ████
    ████
    ▀██▀
    .Decentralized Data & Applications Protocol For SMEs.
    .
    ▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
    ▄██▄
    ████
    ████
    ████
    ████
    ████
    ████
    ████
    ▀██▀
    Enterprise Blockchain Protocol
    .GET WHITELISTED.
    Token Sale starts 6th of February 2018
    weex
    Legendary
    *
    Offline Offline

    Activity: 1102
    Merit: 1014



    View Profile
    July 14, 2012, 04:31:59 PM
     #27

    This is really the wrong question. A better one is: Assuming you don't trust it, how much work does it require to trust it?

    I have saved a copy of the site and even hacked a bit on the code but I wouldn't send a new user blindly to the site claiming that it's forever safe.

    For this purpose, I am hosting a minimal address generator that uses python at github.
    It's much less code to read and if a change is made you'll see it in the commit log.

    http://github.com/weex/addrgen
    DublinBrian
    Full Member
    ***
    Offline Offline

    Activity: 197
    Merit: 100


    View Profile
    July 14, 2012, 05:09:17 PM
     #28

    How do we know that the Bitaddress.org program is actually the compiled source code that is published?

    If a government actor were trying to damage bitcoin, this would be the kind of trick they would use.
    I haven't seen an answer to this yet.
    We know that the bitaddress.org program is the code which is published because it is not compiled. Javascript is by nature a client-side scripting-language, so you can just "view source" to see what code it is using.
    Thanks for that info. Donation sent to address in your sig.

    traderjoe (OP)
    Jr. Member
    *
    Offline Offline

    Activity: 34
    Merit: 12


    View Profile
    July 14, 2012, 05:46:27 PM
    Last edit: July 14, 2012, 07:16:57 PM by traderjoe
     #29

    This is really the wrong question. A better one is: Assuming you don't trust it, how much work does it require to trust it?

    I have saved a copy of the site and even hacked a bit on the code but I wouldn't send a new user blindly to the site claiming that it's forever safe.

    For this purpose, I am hosting a minimal address generator that uses python at github.
    It's much less code to read and if a change is made you'll see it in the commit log.

    http://github.com/weex/addrgen

    Thanks for writing some code to generate addresses.  For me, it's true that I have to start out NOT trusting that the random number generation is without any flaws.  But as a non-programmer of java or javascript, I must rely on the opinions of others more qualified to look at the exact lines of code creating the addresses, and who, hopefully, also understand the crypto and the libraries the javascript is using.  I see mandatory security updates to the crypto libraries of python in my Ubuntu distribution regularly, but don't understand the implications for applications that make use of the libraries.  

    I'm reading some of the other members talking about generating the input to hash on the bitaddress.org site, as meaning that, it's better to sidestep my question about how the site creates random numbers and generate the string yourself with your own entropy, whether you do it as a "brain wallet" or not.  I have verified that the site really does give the sha256 hashes of what the user puts in the text box.

    I have been surprised of how trusting people on the forum seem to be of the address generation process for private keys in general, from any of the applications that do this.  Especially considering that security experts such as Bruce Schneier have observed years ago that the US government most likely deliberately introduced standards for "random" number generation for elliptic curves, (Dual_EC_DRBG), such that the author of the standard (NSA in this case), was in a position to posses secret keys would make the "random" outputs, predictable, which would make the encryption trivial for someone in possession of the secret keys to crack.  Here is the article http://www.wired.com/politics/security/commentary/securitymatters/2007/11/securitymatters_1115

    & I understand sha256 itself arose from a nsa standard.  I would think if anyone on the planet has something better than brute force to break that hash, or to break a random number source, it would be them, especially when they are coming from standards they themselves authored.   I'd be really interested in hearing from any of the developers of bitcoin software that know all about these issues and have thought about their implications for the applications they write.
    nimda
    Hero Member
    *****
    Offline Offline

    Activity: 784
    Merit: 1000


    0xFB0D8D1534241423


    View Profile
    July 14, 2012, 06:46:56 PM
     #30

    Thanks, BitcoinTraderIE Smiley

    One thing that applies to things like Bitcoin and, to a lesser extent, bitaddress.org is that someone will hopefully find flaws. For example, if Bitcoin-Qt contained code which allowed Gavin to access your coins from a remote server at will, don't you think someone would have found it by now? Wouldn't at least one of the thousands of users of Bitcoin have spoken up? Even if their claims were on Freenet or a Tor hidden service? It's been years, and I still have yet to hear such a claim. Thus, without doing more than a cursory review of the code, I feel safe trusting Bitcoin-Qt with large amounts of money (provided I do backups Wink). As more people look at Bitaddress.org and find nothing wrong with its source, the other users can become more assured that it is a safe tool to use.
    traderjoe (OP)
    Jr. Member
    *
    Offline Offline

    Activity: 34
    Merit: 12


    View Profile
    July 14, 2012, 07:09:59 PM
    Last edit: July 14, 2012, 07:20:17 PM by traderjoe
     #31

    ...
    One thing that applies to things like Bitcoin and, to a lesser extent, bitaddress.org is that someone will hopefully find flaws. For example, if Bitcoin-Qt contained code which allowed Gavin to access your coins from a remote server at will, don't you think someone would have found it by now? ...

    Nimda, you are right, I have the most confidence in the way Bitcoin-Qt generates private keys, because it has been around the longest and seems to be passing the test of time.  For anything newer, I want to hear how widespread their use is & what peoples' experiences are before putting my trust in them & ideally, someone who has looked at the code and thought about this question.   & part of the purpose of my post was to encourage anyone with the ability & interest, to look at Bitaddress.org's javascript, or to share the results if they had done so in the past.

    But I do respect that code can be very difficult for people to read and the list of people able to pick out something that was purposely obfuscated by the writer, and who have the inclination and time to do it, is probably pretty short!
    casascius
    Mike Caldwell
    VIP
    Legendary
    *
    Offline Offline

    Activity: 1386
    Merit: 1136


    The Casascius 1oz 10BTC Silver Round (w/ Gold B)


    View Profile WWW
    July 14, 2012, 07:24:34 PM
     #32

    I have thought a fair bit about this risk, and I wish it went a step further.

    It would be nice if the script did its own random number generation as it does, but also took a string of input from the KEYBOARD (not mouse), and from that, generated a second pseudo-random number stream in a predictable, easy to audit manner, and XOR'd the two streams together.  By "predictable", I mean, for example, each 32 byte chunk of the stream is calculated as merely SHA256(string + n), where n increments for each chunk.  (This is how I generate random number for Casascius Coins, as a hedge against the potential for a flaw if one were to be found in the Microsoft library RNG I was using, despite it being documented as "cryptographically secure").

    Also it's worth noting: the original author of BitAddress.org has historically been very responsive to making improvements in exchange for donations and bonuses, and I feel I have had a satisfactory effect on just the current functionality by stating what I think it needs and offering to donate.

    Companies claiming they got hacked and lost your coins sounds like fraud so perfect it could be called fashionable.  I never believe them.  If I ever experience the misfortune of a real intrusion, I declare I have been honest about the way I have managed the keys in Casascius Coins.  I maintain no ability to recover or reproduce the keys, not even under limitless duress or total intrusion.  Remember that trusting strangers with your coins without any recourse is, as a matter of principle, not a best practice.  Don't keep coins online. Use paper or hardware wallets instead.
    traderjoe (OP)
    Jr. Member
    *
    Offline Offline

    Activity: 34
    Merit: 12


    View Profile
    July 15, 2012, 01:28:16 PM
    Last edit: July 15, 2012, 02:00:46 PM by traderjoe
     #33

    My main concern is whether Bitaddress generates truly random keypairs. This is a problem whether your box is offline or not. And its irrelevant whether you have booted from a CD or not.

    If the developers of Bitaddress know what keypairs their program will generate then they can steal your funds, even if you never go online again. They can steal the funds of everyone who ever used their program, by regenerating the same keypairs that users generated.

    How do we know that Bitaddress isnt only capable of generating 100 million keypairs. The developers can wait until there is a good quantity of funds, scattered around those 100 million addresses and then they can regenerate all 100 million private keys and steal the funds.

    Im not saying that they are doing this, Im simply saying that, as someone who doesnt have the competence to review source code, or even compile source code, I cannot be 100% sure that this is impossible.

    Yes--that!  The situation you describe, could also turn out to be the case without any willful intent by the developer:  if weaknesses were subsequently identified in the crypto libraries the code is calling to generate random numbers, the address space it creates, could turn out to be too small.  Without anyone involved aware of that fact when the addresses are being generated.  IMHO, it would be more secure to simply mash on the keyboard a while than to rely on the crypto libraries not having some flaw that is subsequently uncovered.
    DublinBrian
    Full Member
    ***
    Offline Offline

    Activity: 197
    Merit: 100


    View Profile
    July 15, 2012, 01:48:06 PM
     #34

    Yes--that!  The situation you describe, could also turn out to be the case without any willful intent by the developer:  if weaknesses were subsequently identified in the crypto libraries the code is calling to generate random numbers, the address space from which it creates addresses, could turn out to be too small.  Without anyone involved aware of that fact when the addresses are being generated.  IMHO, it would be more secure to simply mash on the keyboard a while than to rely on the crypto libraries not having some flaw that is subsequently uncovered.

    So to protect myself from that possiblity Im thinking I will create my own java script webpage with the following command, courtesy of the poster Anu

    Quote from: Anu
    Code:
    $ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum

    That will generate a private key from a passphrase. Then I use Bitaddress offline to generate the correponding public key, and bitcoin address.
    traderjoe (OP)
    Jr. Member
    *
    Offline Offline

    Activity: 34
    Merit: 12


    View Profile
    July 15, 2012, 02:14:30 PM
     #35

    ...
    So to protect myself from that possiblity Im thinking I will create my own java script webpage with the following command, courtesy of the poster Anu
    ...

    That sounds like a great idea, providing the java script webpage you create, is run in an environment where nothing is stored, such as a ubuntu live cd...
    pointbiz
    Sr. Member
    ****
    Offline Offline

    Activity: 437
    Merit: 415

    1ninja


    View Profile
    July 15, 2012, 03:39:22 PM
     #36


    Quote from: Anu
    Code:
    $ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum

    That will generate a private key from a passphrase. Then I use Bitaddress offline to generate the correponding public key, and bitcoin address.

    That is already possible on bitaddress.org on the Wallet Details tab. I'm thinking of adding a "Brain Wallet" tab to bring that feature to peoples attention.

    Casascius is offering me a bounty to upgrade the Paper Wallet tab to support deterministic wallets based on a passphrase.

    Regarding the random number generator, for those sufficiently paranoid, I would advise not to use the first address generated and to move the mouse around for two minutes, then generate a new address. The mouse movements continuously add to the random seed pool while you are on the page.

    Casascius also has entropy from keyboard input to the random number generator on his bounty list.


    Coder of: https://www.bitaddress.org      Thread
    Open Source JavaScript Client-Side Bitcoin Wallet Generator
    Donations: 1NiNja1bUmhSoTXozBRBEtR8LeF9TGbZBN   PGP
    anu
    Legendary
    *
    Offline Offline

    Activity: 1218
    Merit: 1001


    RepuX - Enterprise Blockchain Protocol


    View Profile
    July 15, 2012, 03:53:54 PM
     #37


    Quote from: Anu
    Code:
    $ printf 'my really diffficult Paßphrase (made from P. Cubensis and A. Uigedail)' | sha256sum

    That will generate a private key from a passphrase. Then I use Bitaddress offline to generate the correponding public key, and bitcoin address.

    That is already possible on bitaddress.org on the Wallet Details tab. I'm thinking of adding a "Brain Wallet" tab to bring that feature to peoples attention.


    Indeed. I posted that command line so anyone can verify that the private key generated on your page really and truly is the sha256(passphrase). Other than that, it does not add anything.

    I think moving the "brain wallet" functionality to a separate tab with the right label is an excellent idea.

    ▄▄▄▄▄▄▄▄▄▄        ▄▄▄▄▄▄▄▄▄
    ███████████▄    ▄███████████
    █████████████▄▄█████████████
    ████████████████████████████
    ████████████████████████████
    ▀█████████████████████████▀
      ▀█████████████████████▀
       ▄████████████████████▄
     ████████████████████████▄
    ████████████████████████████
    ████████████████████████████
    █████████████▀▀█████████████
    ███████████▀    ▀███████████
    ▀▀▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀▀
    RepuX▄██▄
    ████
    ████
    ████
    ████
    ████
    ████
    ████
    ▀██▀
    .Decentralized Data & Applications Protocol For SMEs.
    .
    ▔▔▔▔  ●  Twitter  ●  Facebook  ●  Bitcointalk  ●  Reddit  ●  ▔▔▔▔
    ▄██▄
    ████
    ████
    ████
    ████
    ████
    ████
    ████
    ▀██▀
    Enterprise Blockchain Protocol
    .GET WHITELISTED.
    Token Sale starts 6th of February 2018
    DublinBrian
    Full Member
    ***
    Offline Offline

    Activity: 197
    Merit: 100


    View Profile
    July 15, 2012, 03:55:07 PM
    Last edit: July 15, 2012, 04:26:14 PM by BitcoinTraderIE
     #38

    Edit: Sorry, I understand now that the program is continuously monitoring mouse movements while you have the page loaded.

    Thats pretty cool.
    Pages: 1 2 [All]
      Print  
     
    Jump to:  

    Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!