An Arduino isn't needed for this; just boot to a live CD to generate your keys, put the wallet.dat on a brand new, freshly opened (and maybe encrypted) flash drive or SD-card, and generate an address. Reboot into your primary OS and send some coins to that address. Maybe reboot again to test that they were received.
Are there any ECDSA smart cards out there? It'd be pretty cool to use a smart card for Bitcoin crypto.
This is basically the inspiration for my idea. If you go look at allinvain's post (the guy who lost 25k BC), there's this back-and-forth between people who say how simple the solution is (i.e. linux, separate machine, etc) and the others.
I'm not proposing this arduino solution for everyone, certainly not the former group as they're already aware. It's meant for the latter. That group might include our parents or grandparents, maybe people who are somewhat tech-savvy but for one reason or another can't or won't spend time learning about linux. It could also be for the tech-savvy who just want something "that works (tm)".
An Arduino isn't needed for this; just boot to a live CD to generate your keys, put the wallet.dat on a brand new, freshly opened (and maybe encrypted) flash drive or SD-card, and generate an address. Reboot into your primary OS and send some coins to that address. Maybe reboot again to test that they were received.
Are there any ECDSA smart cards out there? It'd be pretty cool to use a smart card for Bitcoin crypto.
This is pretty safe, although for large bitcoin accounts I'd still be wary of using your day-to-day, internet-connected computer. The original post is going to be a big breakthrough in managing wallets. Everybody with a sizable account is going to have one of these devices.
The next question is how to keep your secret. Ultimately you need to have a pass phrase or little USB drives that have to be read in tandem, or some combination of those. The problem with a pass phrase is you can forget it, or something can happen to you, and your coins are lost forever. The problem with USB keys is you can lose them, something could happen to them, they can be stolen, or you could have to skip town suddenly. Having both is probably a good tradeoff.
I think to make this happen, a couple of extensions have to be written for the standard bitcoin client:
1. Export an unsigned send transaction.
2. Import a signed transaction and send it out to the network.
If you have those two, the arduino device can easily generate Bitcoin keypairs and sign transactions offline. Note that you don't need a keyboard if you go with the USB drive keys. The main computer would never get anywhere near the private keys. This is about as safe as you're going to get. I intend on doing a patch, but I've got some other stuff to do first. I hope someone beats me to it.
Wow 1 and 2 really simplify things. This is why I like the idea of open source!
For the public/private key backup, there are many routes to go. One could program a single button, button combination (hold 2+ together) or a button sequence to write a file to the usb drive. If someone wants to get really fancy, integrate some identity check like a fingerprint reader, but I say make the barebones functionality first.
An alternative approach is to use an SD card for its memory store, though the memory card and reader would ultimately add to the cost of the unit. As an open source project, this could still be developed as a fork or plugin and buyers (or businesses) could offer a different variety with simpler backup.
Edit: how do you see a password/usb backup working together if the unit doesn't support a keyboard? Pre-programmed codes that differ for each unit?