Title: Memorizing a private key Post by: grondilu on November 26, 2011, 01:31:02 PM Code: This could be in technical, but it does have a "psychological" aspect too so I put it in the general discussion forum. Notice that, conveniently enough, the leading 5 in the WIF format makes the sentence often start with 'THE'. If you have other ideas about how to memorize a private key, please share.[/code] Title: Re: Memorizing a private key Post by: ThomasV on November 26, 2011, 02:19:24 PM Electrum uses a 1600-word dictionary to provide mnemonic codes:
https://bitcointalk.org/index.php?topic=51397.0 Title: Re: Memorizing a private key Post by: grondilu on November 26, 2011, 03:09:59 PM Electrum uses a 1600-word dictionary to provide mnemonic codes: https://bitcointalk.org/index.php?topic=51397.0 This looks awesome. The bitcoin forum has become so huge that it gets difficult to learn about cool stuffs. Thanks. Title: Re: Memorizing a private key Post by: BurtW on November 27, 2011, 12:39:39 AM I thought that we could simply generate a key pair by using a memorize phrase as the seed to the key pair generator. So I could memorize "Now it the time for all good men to come to the aid of their country" and then any time I want I can generate the corresponding public and private key pair from this phrase. As long as I keep my phrase secret (oops) I can get access to my coins.
Title: Re: Memorizing a private key Post by: sebastian on November 27, 2011, 02:11:13 AM bwagner: Actually a good idea. Then these live-CD-systems with bitcoin could work more well, and you have access to your coins on *any* computer with bitcoin, as long as you know your passphrase.
Like this: When you start the bitcoin client, you enter a passphrase/password, like: "HereIAm". Then, it would generate SHA hash for HereIAm.(number from 1 to 10 000) to generate a new adress. Note that the number 1-10000 is random to increase anonymity, and it will never use any other number, since then some coins would be unspendable. No track of used adresses should occur, the client is simply allowed to "reuse" adresses if its just lucky to pick the same number. (For webshops/exchanges, the webshop/exhange just check that a adress is "settled" before reusing it for a another customer. With "settled", I mean that goods have been delivered for that adress and all payments have been received for that adress) To find out coins, it could generate adresses from hash of HereIAm.1 to like hash of HereIAm.10000 and check which coins belong to these, while downloading blockchain. Then it simply saves it to RAM (this takes only 2,4 Mb) Then you would never need to save any wallet.dat, you simply enter your password/passphrase at startup, in any bitcoin client. Of course, if 2 people use same passphrase/password, they would share the same wallet, and spend each other's coins. Title: Re: Memorizing a private key Post by: FreeMoney on November 27, 2011, 05:35:17 AM I thought that we could simply generate a key pair by using a memorize phrase as the seed to the key pair generator. So I could memorize "Now it the time for all good men to come to the aid of their country" and then any time I want I can generate the corresponding public and private key pair from this phrase. As long as I keep my phrase secret (oops) I can get access to my coins. Anyone doing this or similar should really add just a bit of unique and random data. If a lot of people are choosing keys this way people are going to be trying everything remotely common. Adding your name and bank pin ought lock it up tight I think. Title: Re: Memorizing a private key Post by: casascius on November 27, 2011, 05:40:36 AM I have done this before:
rather than memorize a mnemonic, just memorize a passphrase and use the sha256 of that passphrase as the private key. this is way easier. as mentioned in a prior post, just salt it with something public, so others don't bump into your passphrase. sha256(yourname + passphrase) for example Title: Re: Memorizing a private key Post by: grondilu on November 27, 2011, 02:10:28 PM I have done this before: rather than memorize a mnemonic, just memorize a passphrase and use the sha256 of that passphrase as the private key. this is way easier. as mentioned in a prior post, just salt it with something public, so others don't bump into your passphrase. sha256(yourname + passphrase) for example I had no idea that any random number up to 2^256 could be used as a private key. I guess I should learn more about ECDSA. Title: Re: Memorizing a private key Post by: BTCurious on November 27, 2011, 02:18:35 PM I have done this before: rather than memorize a mnemonic, just memorize a passphrase and use the sha256 of that passphrase as the private key. this is way easier. as mentioned in a prior post, just salt it with something public, so others don't bump into your passphrase. sha256(yourname + passphrase) for example I had no idea that any random number up to 2^256 could be used as a private key. I guess I should learn more about ECDSA. Title: Re: Memorizing a private key Post by: ThomasV on November 27, 2011, 02:45:38 PM I thought that we could simply generate a key pair by using a memorize phrase as the seed to the key pair generator. So I could memorize "Now it the time for all good men to come to the aid of their country" and then any time I want I can generate the corresponding public and private key pair from this phrase. As long as I keep my phrase secret (oops) I can get access to my coins. The first version of Electrum worked just like that. However, this was not secure enough, because some users might not provide enough entropy. The 12-words encoding that is used now makes sure that keys have 128 bits of entropy. Key strenghtening is added to that. Title: Re: Memorizing a private key Post by: dunand on November 27, 2011, 05:36:42 PM If you want a code example in Java you can look at SimpleClient.java from the bccapi project. This SimpleClient generate a private key and public keys from a seed. That seed is generated from a passphrase and a salt.
More info here : http://code.google.com/p/bccapi/wiki/SimpleClient Title: Re: Memorizing a private key Post by: jothan on November 27, 2011, 05:48:27 PM I thought that we could simply generate a key pair by using a memorize phrase as the seed to the key pair generator. So I could memorize "Now it the time for all good men to come to the aid of their country" and then any time I want I can generate the corresponding public and private key pair from this phrase. As long as I keep my phrase secret (oops) I can get access to my coins. The first version of Electrum worked just like that. However, this was not secure enough, because some users might not provide enough entropy. The 12-words encoding that is used now makes sure that keys have 128 bits of entropy. Key strenghtening is added to that. Something like PBKDF2 should be perfect with SHA-2 256. http://en.wikipedia.org/wiki/PBKDF2 Title: Re: Memorizing a private key Post by: ThomasV on November 27, 2011, 06:07:11 PM I thought that we could simply generate a key pair by using a memorize phrase as the seed to the key pair generator. So I could memorize "Now it the time for all good men to come to the aid of their country" and then any time I want I can generate the corresponding public and private key pair from this phrase. As long as I keep my phrase secret (oops) I can get access to my coins. The first version of Electrum worked just like that. However, this was not secure enough, because some users might not provide enough entropy. The 12-words encoding that is used now makes sure that keys have 128 bits of entropy. Key strenghtening is added to that. Something like PBKDF2 should be perfect with SHA-2 256. http://en.wikipedia.org/wiki/PBKDF2 This is exactly what Electrum does with its seed, except there is no salt. Using a salt stored on a server would make users dependent on that server, which is clearly not acceptable; we want users to be able to recover their wallet in any situation. |