John, I've been reading up on your threads -- great stuff! I like the idea of some tools being integrated into bitcoin itself, because it makes that part more authoritative (lots of people looking at it, good maintenance schedule).
I think you could get some really good security combining some of these ideas. For small checking accounts, you'd just use the standard Bitcoin client, probably on an encrypted volume, with backups. For large savings accounts:
1. Never use the standard Bitcoin client -- it connects to the Internet.
2. All sensitive work is done on an offline, LiveCD box. (See
https://www.privacy-cd.org/)
3. The LiveCD has a command line tool that generates a new wallet with as many accounts as you want.
4. It requests a pass phrase, generates the wallet, and spits out the account codes in plain text. Signs all this stuff.
5. The pass phrase isn't stored anywhere, it's just used to encrypt the wallet and then forgotten. You can test that you entered the pass phrase correctly by attempting to decrypt the wallet on the LiveCD box. (This "verify" step should be a standard feature of the tool. It lets you feel safe that you can transfer money to the account.)
6. Copy the signed package to a USB drive and then to your regular computer and upload it all over the place.
7. Now transfer lots of bitcoins to one or all of the new addresses in the usual way.
8. To spend, use another tool on the internet computer to download the minimum amount of data needed to sign the transfer. This could be part of the standard client.
9. Export another signed package to the USB drive. Insert USB in the LiveCD box.
10. On the LiveCD box, run a transaction tool. It will ask you for an amount to transfer, recipient address to send to (or maybe let you choose from the original batch you generated), and your pass phrase. It will then write a certified transaction package to the USB drive.
11. On the internet box, use yet another tool to send in the transaction to bitcoin. This could also be part of the standard client.
12. Monitor with an online app, or another tool, or both.
This sounds like a ton of steps, but a lot of them are being done inside the tools and transparent to the user. They're all just a matter of moving a USB disk around and running a few commands. They've been thoroughly tested and they reassure you by acknowledging that you have the right pass phrase and that all your data has been checked for integrity. Ultimately, they could be consolidated into the standard client on the internet box, and an offline gui on the LiveCD box. This is also nothing new, I'm mostly paraphrasing John's previous steps, but it helps me organize it for myself and hopefully others.
1. We don't have to worry much about keyloggers or malware on the LiveCD box because: A. How would they get there? B. How would they send the intercepted data out? We still have to worry about physical keyloggers, but that's a threat most people don't have to worry about, and there are physical ways to handle that. Eventually there could be dedicated devices instead of the LiveCD box.
2. Make sure your pass phrase is really strong.
3. The biggest remaining danger is that you forget your pass phrase. I think the
dead man's switch is a good way to approach this. You might have to do the whole USB shuffle once a month, but it would be great if this were built into the tools. You could even have your bitcoins sent to some online trusted entity after a year of no activity, as a final backstop.
See also:
Deterministic walletJohn's vaporware approachPrivate key and wallet import/exportPrivate key import