Author

Topic: HOWTO: create a 100% secure wallet - page 124. (Read 276225 times)

jr. member
Activity: 134
Merit: 1
June 16, 2011, 05:31:20 AM
#62
Can't the wallet.dat be encrypted already? (password when starting the bitcoin client...)

As has been said elsewhere, this wouldn't work, since the client has to somehow decrypt the file in order to use it. Decryption => a decrypted copy is stored in RAM => a clever program can find and copy it.

So this would be rather dangerous, since it would give users a false sense of security, prompting them to be even more careless. I know lots of users are whining right now and blaming the devs for not including encryption, but this is simply the truth of the matter.
member
Activity: 70
Merit: 10
June 16, 2011, 04:57:27 AM
#61
Hey, we n00bs have to stick together.  Some of us just happen to have a little more of a computing background.

Now if only I can finally land a job with my recent Bachelor's degree in Computer Science...
newbie
Activity: 9
Merit: 0
June 16, 2011, 04:31:53 AM
#60
Kuloch, just wanted to thank you for your clear and concise explanations to my questions.

-88bitcoins

While I'm a complete n00b to BTC as of yesterday, I do know a thing or two about public/private key encryption.

1)
Quote
backing up on physical media is of "NO USE"
[88bitcoins]: I'm assuming because if the same file is on your OS then it's not "protected" whether or not you have a physical backup elsewhere.
Correct.  If the unencrypted "wallet" (read "key") exists in a vulnerable place, then it doesn't matter how securely you back it up.  It's like keeping a copy of your house key under your mat but making a "secure" copy regularly.  A burglar can simply check under your mat, regardless of how securely you keep the copies.

Quote
QUESTION: is there any circumstance in which making a physical backup would be beneficial? It's certainly easy enough.
I can think of two valid reasons for separate physical copies.  The first is simply to guard against data corruption, drive destruction, etc.  The second is to keep the "secure" file only on media other than your hard drive, created and saved in a "secure" operating system.

Keeping at least one backup is a good idea.  Just remember that the *least* secure copy of your "wallet" (read "key") is effectively the only one that matters for security.

2)
Quote
Encryption does not "protect [you] from all evil"
[88bitcoins]: I'm assuming because it can still be hacked and/or encryption doesn't protect from greater dangers such as your hard drive dying and the wallet cannot be retrieved, your laptop is stolen to be sold for $20 on the street.
Hard drive corruption/destuctions/loss is why it's good to keep a backup copy on another physical medium.  Note that having your drive stolen with an unencrypted wallet means that wallet is forfeit, unless you happen to transfer all BTC out from that account to another using a backup copy before the "bad guys" get to it, first.

Quote
[QUESTION]: is encryption still recommended?
I can't speak much on local encryption, as I've never personally had anything worth the bother.  But if you have a keylogger on your system, then encryption probably isn't worth crap once you type in your password.

3)
Quote
So in order to (protect) your BTCs, you have to create a "new, untainted address, in conjunction with the wallet.dat that you deposit".
The point is that any "wallet" (read "key") that has ever existed in unencrypted form on your computer (which may have keyloggers, trojans, and the like - regardless of whatever your anti-malware software says) could potentially be compromised.  The suggestion of using a bootable linux distro so that the "wallet" (read "key") file never touches your potentially tainted system is pretty good, if a little hardcore.  But if I had 25k BTC, that's probably what I'd do.

Quote
QUESTION: (I may sound naive, but I have to ask) do I go into my bitcoin app, then create a new never been used address, then send what I have to this new address, i.e. to myself? THEN, back up both that new address and my wallet.dat file together? And additionally, each time I want to do a backup, create a fresh address?
As soon as you create a "wallet" (read "key") in your (potentially compromised) operating system, then your wallet is already potentially compromised.  Remember: securing one copy doesn't secure all copies.  Only if *every* single copy that has ever existed is secure can you consider the "wallet" (read "key") to be "secure".
newbie
Activity: 12
Merit: 0
June 16, 2011, 04:04:20 AM
#59
Can't the wallet.dat be encrypted already? (password when starting the bitcoin client...)
member
Activity: 70
Merit: 10
June 16, 2011, 03:49:42 AM
#58
I read the wiki page https://en.bitcoin.it/wiki/Transactions but it's still not quite clear to me on why there's a change address or value.

Quoting the wiki: "If the input is worth 50 BTC but you only want to send 25 BTC, Bitcoin will create two outputs worth 25 BTC: one to the destination, and one back to you (known as "change", though you send it to yourself). Any input bitcoins not redeemed in an output is considered a transaction fee; whoever generates the block will get it."

0) Why does that happen (the change itself) if I'm sending the exact amount I want to send?
1) As I understand, the change address is created and saved in the wallet.dat file but doesn't show up in the User Interface (UI). So how do I claim my money?

0) because even if you want to send exactly 20 btc, your wallet may contain addresses which have the following balances:

10 btc
15 btc
19 btc
25 btc

So what does it choose? It might choose something like the 10 and the 15, combine them together to send 25, sending 20 to your destination, and 5 back to a change address.

Then you'd have the following in your wallet:

19 btc
25 btc
5 btc (residing in the new 'change' address)

1) it's automatically claimed and will show up in your balance.

Thank you Alex, it's more clear now.

Though when you say it's automatically claimed & added to my balance, which balance is it added to? i.e., which of my current addresses?

Also, wouldn't it be easier to avoid this situation by always sending coins to one address rather than having them dispersed at multiple addresses?

Going back to Alex's example, Alice has 10 BTC in an address labeled "A" and 15 BTC in an address labeled "B".  She wants to send 20 BTC to Bob.  So the client sends all 10 BTC from "A" to Bob as one transaction.  For the rest, the client makes a second send transaction - this time from "B".  10 of the 15 BTC is sent to Bob, and the remaining 5 BTC is sent back to Alice.  The client selects a new "change" address as the receiver for this 5 BTC, and because it holds the private key for this address that 5 BTC is added back into Alice's balance.

BitCoin cannot send only partial amounts.  If in the example above Alice were to send only the 10 BTC from "B" to Bob, then the remaining 5 BTC would be claimed as a transaction fee by whomever processes the transaction.  The system is designed to allow for fees so that mining remains profitable even when minting offers little yield per new block, with the idea that fees will go up as minting yield goes down.

Also, It sounds like the new "change" address is used instead of Alice's original "B" address either to make everything more private (no one knows it belongs to "B"'s owner) or simply to help keep things separate - or both.  This was a choice made in developing the BitCoin client, and a different client could instead send the remainder amount back to the original sender address, as you suggested.
MBH
newbie
Activity: 51
Merit: 0
June 16, 2011, 03:10:34 AM
#57
I read the wiki page https://en.bitcoin.it/wiki/Transactions but it's still not quite clear to me on why there's a change address or value.

Quoting the wiki: "If the input is worth 50 BTC but you only want to send 25 BTC, Bitcoin will create two outputs worth 25 BTC: one to the destination, and one back to you (known as "change", though you send it to yourself). Any input bitcoins not redeemed in an output is considered a transaction fee; whoever generates the block will get it."

0) Why does that happen (the change itself) if I'm sending the exact amount I want to send?
1) As I understand, the change address is created and saved in the wallet.dat file but doesn't show up in the User Interface (UI). So how do I claim my money?

0) because even if you want to send exactly 20 btc, your wallet may contain addresses which have the following balances:

10 btc
15 btc
19 btc
25 btc

So what does it choose? It might choose something like the 10 and the 15, combine them together to send 25, sending 20 to your destination, and 5 back to a change address.

Then you'd have the following in your wallet:

19 btc
25 btc
5 btc (residing in the new 'change' address)

1) it's automatically claimed and will show up in your balance.

Thank you Alex, it's more clear now.

Though when you say it's automatically claimed & added to my balance, which balance is it added to? i.e., which of my current addresses?

Also, wouldn't it be easier to avoid this situation by always sending coins to one address rather than having them dispersed at multiple addresses?
MBH
newbie
Activity: 51
Merit: 0
June 16, 2011, 03:08:31 AM
#56
0) Why does that happen (the change itself) if I'm sending the exact amount I want to send?
1) As I understand, the change address is created and saved in the wallet.dat file but doesn't show up in the User Interface (UI). So how do I claim my money?

Sorry, I just have to ask:  Why did you start your numbering at 0?
Tongue

Because everything starts from zero :p
member
Activity: 70
Merit: 10
June 16, 2011, 03:05:32 AM
#55
0) Why does that happen (the change itself) if I'm sending the exact amount I want to send?
1) As I understand, the change address is created and saved in the wallet.dat file but doesn't show up in the User Interface (UI). So how do I claim my money?

Sorry, I just have to ask:  Why did you start your numbering at 0?
Tongue
full member
Activity: 154
Merit: 100
June 16, 2011, 03:00:58 AM
#54
I read the wiki page https://en.bitcoin.it/wiki/Transactions but it's still not quite clear to me on why there's a change address or value.

Quoting the wiki: "If the input is worth 50 BTC but you only want to send 25 BTC, Bitcoin will create two outputs worth 25 BTC: one to the destination, and one back to you (known as "change", though you send it to yourself). Any input bitcoins not redeemed in an output is considered a transaction fee; whoever generates the block will get it."

0) Why does that happen (the change itself) if I'm sending the exact amount I want to send?
1) As I understand, the change address is created and saved in the wallet.dat file but doesn't show up in the User Interface (UI). So how do I claim my money?

0) because even if you want to send exactly 20 btc, your wallet may contain addresses which have the following balances:

10 btc
15 btc
19 btc
25 btc

So what does it choose? It might choose something like the 10 and the 15, combine them together to send 25, sending 20 to your destination, and 5 back to a change address.

Then you'd have the following in your wallet:

19 btc
25 btc
5 btc (residing in the new 'change' address)

1) it's automatically claimed and will show up in your balance.
member
Activity: 70
Merit: 10
June 16, 2011, 02:59:59 AM
#53
Hmm... I don't especially like the idea of the client potentially leaving you not knowing with what addresses your BTC is associated, without looking up every one of your send transactions on the block explorer.  Although I suspect the software will be a little more mature by the time I actually have enough BTC for it to matter.  If not, I'll just develop something, myself, as a side project.
MBH
newbie
Activity: 51
Merit: 0
June 16, 2011, 02:58:01 AM
#52
I read the wiki page https://en.bitcoin.it/wiki/Transactions but it's still not quite clear to me on why there's a change address or value.

Quoting the wiki: "If the input is worth 50 BTC but you only want to send 25 BTC, Bitcoin will create two outputs worth 25 BTC: one to the destination, and one back to you (known as "change", though you send it to yourself). Any input bitcoins not redeemed in an output is considered a transaction fee; whoever generates the block will get it."

0) Why does that happen (the change itself) if I'm sending the exact amount I want to send?
1) As I understand, the change address is created and saved in the wallet.dat file but doesn't show up in the User Interface (UI). So how do I claim my money?
full member
Activity: 154
Merit: 100
June 16, 2011, 02:50:38 AM
#51
Alex, I think you're wrong. You can send anything you want to a given bitcoin address

I don't think I ever said you couldn't. What I confirmed above is that for every 100 times you spend from your wallet, you should do another backup, as your old backup won't contain all the new 'change' keys.

Edit: I've updated http://bitcoinsecurity.com with the link to block explorer.
jr. member
Activity: 134
Merit: 1
June 16, 2011, 02:18:01 AM
#50
Alex, I think you're wrong. You can send anything you want to a given bitcoin address, I mean otherwise the network would have to refuse a certain transaction. That's just not the case. Maybe you're confusing this with how the client behaves?

Let me say this again: You may do the following: put your wallet.dat in a safe, delete/shred any local copies, use a different account to transfer coins to it and do this as long as you please. Nothing will make it generate new addresses, that's the job of the client. Your wallet is just the _key_ to a number of addresses.

And true, you can and should use blockexplorer.com, so you'll have an oversight over what's happening on your safety account.
full member
Activity: 154
Merit: 100
June 16, 2011, 02:11:15 AM
#49
You could find out by looking at your transaction in http://blockexplorer.com

Or, you could not bother and just back up your wallet regularly.
MBH
newbie
Activity: 51
Merit: 0
June 16, 2011, 02:06:14 AM
#48
So it sounds like receiving BitCoin does not require either usage or backup of your wallet (it can stay offline and hidden in a safe), but every so many times of sending BitCoin (~100?) will require replacing the backup due to new "change" keys.

I can confirm this as correct.

So how do I know the new "change" address?
full member
Activity: 154
Merit: 100
June 16, 2011, 01:26:53 AM
#47
So it sounds like receiving BitCoin does not require either usage or backup of your wallet (it can stay offline and hidden in a safe), but every so many times of sending BitCoin (~100?) will require replacing the backup due to new "change" keys.

I can confirm this as correct.

Edit: I read your statement as sending FROM your savings wallet. Now I realise you may have meant sending 100 times TO your savings wallet, which doesn't require any further backup.
jr. member
Activity: 134
Merit: 1
June 16, 2011, 01:22:10 AM
#46
There appears to be a little more to the wallet's key handling than I had thought.  There are a couple posts in another thread that make it sound like every time you send BitCoin from your wallet, the client uses a new "hidden" receiving address for any remainder.

Quote
If I send you 4btc but my only coin is worth 5btc, 1btc is sent back to me at a new 'change' address.

So it sounds like receiving BitCoin does not require either usage or backup of your wallet (it can stay offline and hidden in a safe), but every so many times of sending BitCoin (~100?) will require replacing the backup due to new "change" keys.

Nope, that would be strange and impractical. And probably not even possible to implement. So transfer as many coins as you'd like to your preferred address, nothing is going to go wrong.

The whole thing with the generation of new addresses is simply a mechanism in the _client_ in order to gain further anonymity.

And thanks a million everybody for answering questions!
newbie
Activity: 8
Merit: 0
June 16, 2011, 01:14:16 AM
#45
Excellent help Smiley
member
Activity: 70
Merit: 10
June 16, 2011, 12:24:19 AM
#44
There appears to be a little more to the wallet's key handling than I had thought.  There are a couple posts in another thread that make it sound like every time you send BitCoin from your wallet, the client uses a new "hidden" receiving address for any remainder.

Quote
If I send you 4btc but my only coin is worth 5btc, 1btc is sent back to me at a new 'change' address.

So it sounds like receiving BitCoin does not require either usage or backup of your wallet (it can stay offline and hidden in a safe), but every so many times of sending BitCoin (~100?) will require replacing the backup due to new "change" keys.

Again, I cannot say this is absolutely true.  But I can see it being so.
member
Activity: 70
Merit: 10
June 15, 2011, 10:33:44 PM
#43
As in my previous post, I should quantify this by saying that I'm new to Bitcoin as of yesterday.  I just happen to know a bit about encryption and file systems.

1 - So tell me if I understood this right - you wallet is a physical file on your HDD (wallet.dat) and it contains all the addresses (the long strong of characters/digits) created with the bitcoin program, correct?
Correct, given that the program was using the same wallet file each time a key/address is created.

2 - If the above is true then technically you could have one wallet with 5 addresses and if 4 different people send me coins to each address then all these coins together would be contained within the one wallet?
This I'm not entirely sure about, but my impression so far is that the client connects to the Bitcoin network and makes note of any Bitcoins currently owned by the addresses in its wallet.  The sum is displayed as your current balance.

3 - Hypothetical scenario - I secure my savings wallet containing 100 coins on a flash drive, by cut and paste. Then I restart the program so a new wallet is created - I record its only address and then delete the wallet. Then I copy the savings wallet from the flash drive back to the AppData\Roaming\Bitcoin directory and open the program so it is recognized. Finally I transfer all 100 coins to the address recorded earlier. The outcome would be total lost of all the coins, correct?
If you delete the only copy of a public/private key pair (the public one being your "address"), then there is no way to claim ownership of any coins belonging to those addresses.  This is why having a backup copy is a good idea, as long as both it and the original are reasonably secured.

4 - I would guess the Bitcoin program the the wallet should be kept on a separate machine and not on the Mining rig?
It doesn't really matter as long as the wallet is kept secure.  If the mining rig is a well-secured linux box, that might be the best place to keep it.

5 - If you secure you wallet on a flash drive and then someone sends you coins on an address that is contained within that wallet when do the coins actually appear in your wallet? I mean that wallet is "offline", so how will the transaction work out?
The transactions are made and stored on the Bitcoin network.  No coins are actually stored in your wallet.  When you connect to the Bitcoin network with a wallet (or, more specifically, a given public/private key pair), then Bitcoins owned by your public key(s) are displayed as your balance.

6 - I read an article somewhere that after 50 coins accumulated in your wallet you need to back it up, because you might lose the coins. Is that just pure gibberish?
They were probably just recommending a backup once you have a worthwhile amount.  There should be no difference between having 1 Bitcoin or 25,000 - except that the latter is obviously more valuable to you.
Jump to: