This is a still unripe idea, but I'll mention it here, just in case somebody can improve it to make it really useful.
I was trying to create a private key backup and was worried to let the file with the private key wander through insecure communications channels and systems like Windows computers.
So I found a ZIP archiver that can encrypt and zipped and encrypted the file right on the phone. Now I can move and store the file through insecure channels and on insecure machines.
An example could be that you have a safe phone and a safe computer with a printer, but no safe connection between the two. Another example is safe storage of the backup on an unsafe computer. You would never decrypt your backup on that unsafe computer, but you could move it back to a safe phone and decrypt it only there. (A safe phone could be a factory-reset phone with only Mycelium and a ZIP archiver app on it.)
Remaining problems are, obviously:
- You have to remember the encryption key safely.
- The ZIP archiver program could steal the key.
I used ZArchiver, which is apparently the most powerful ZIP archiver for Android. My reasoning is that nobody writes a powerful first-class archiver only to embed a virus in it. But, of course, a residual risk always remains.
In theory, Mycelium itself could contain an encrypting ZIP archiver or some other encrypting software, if the idea holds any water.
I'm putting this out here for discussion, in case there is any interest and I have not overlooked some fundamental counter-indication.
Interesting idea.
One of the current export features allows you to export directly from a phone to a printer with no intermediate computer. Demo:
http://www.youtube.com/watch?v=W7V2myIwAuESo if you have a trusted phone and printer that accepts SD-cards, this is a very viable solution.
As you say, passwords can be forgotten. Also, passwords have to be strong to have any real effect (unfortunately making them easier to forget).
Therefore the best solution for encrypted export I have seen is this:
The wallet exports a JPG image which contains the encrypted private key both as text and a QR-code (also contains bitcoin address, label etc). The encryption key is derived from a passphrase. The passphrase is automatically generated and contains enough entropy to make brute force unfeasible. The JPG goes to the SD-card, an email, dropbox, or whatever. The passphrase is only displayed on the device once during export.
The user has to write the passphrase down, as it is impossible to remember. This can be on a printout of the JPG or on something else.
We can add a "Verify Export" feature that allows you to verify that your key can be imported, keys that have been verified get tagged.
We can add a feature that nags you as long as you have not verified all your keys.