I don't see any reason to believe that coins were lost due to a trojan. From his description it seems that he has installed an Android OS update, and that somehow BitcoinSpinner lost its data during that process. If this is the case, then BS will behave as if it was just installed and generate a new random key.
However, since he hasn't replied to my PMs or to this thread I believe that he either never lost any coins or just restored a backup.
My remarks were only triggered by the lost-my-coins panic message. I also think it much more likely that in this case the software update triggered the appearance of a loss. I just took the opportunity to write a more general security reminder.
Good news is that
Google itself is apparently planning to deliver malware protection, but we also know that some zero-day exploits will probably be able to slip through the fences.
What would be your recommendations? Would you agree that using a possibly old, unrooted phone that gets no new software installed, is not continuously online, and is not used for things like web browsing, could be a good candidate for a safer BitcoinSpinner wallet? We are looking forward to even better solutions for fat bitcoin wallets, but what are the bits we can do here and now?
I guess it is a good idea to use your new PIN feature. If the PIN were actually used to decrypt the key, that would raise the bar for a Trojan even more, because it would then have to contain and run a key logger to get at the PIN, which is not a very easy task on Android, but probably still not entirely impossible.
What are your thoughts on these questions? After all, a successful attack against BitcoinSpinner could ruin its good reputation. Not that I consider it very likely for the near future, but some risk is always there. What can we do to hike security just a bit?
Thanks for your comments. Here are my thoughts on the topic:
Android uses a Linux OS and each app has its own user identity. BitcoinSpinner stores private keys in app-private storage. This means that another installed app cannot read the private keys just like that. Because each app has its own user identity the security model should be as safe and often safer than conventional desktop OSes (Windows and Linux, etc)
However, an app may discover and exploit a security vulnerability in Android and somehow obtain root identity. I am not sure how common that is, maybe someone else has some input on this?
If another app manages to root the device you are basically toast, but there are things you can do to prevent this and also make it harder to obtain your keys. In the end it depends on how many coins you keep on your device.
I have a cheap device that I use for storing the bulk of my BTC. I have reset it to factory defaults, I don't install anything else on it, it has a PIN, no SIM card, and I don't carry it around. Oh, and yes, I have a paper backup with a printout of my backup QR-code!
If you cannot afford an extra device or don't want to have an extra device for this purpose you can manage several wallets with one BitcoinSpinner installation like this:
Install BS and take a picture of the backup QR-code, print it on paper
Uninstall BS
Install BS a second time and take a picture of the backup QR-code, print it on paper (every install generates random keys)
Now you have two paper backups and can switch between them just by scanning a QR-code. Whenever you switch to another wallet the previous wallet is totally wiped. This dramatically reduces the window where your private key is exposed to other apps on the device.
I am working on a major feature release for BitcoinSpinner which introduces the above as a more prominent feature called transient wallets. It will be a few months before this is done.
Regarding encrypting your keys using the 6-digit PIN: I have decided not to do this as brute forcing a 6 digit password is trivial, and wouldn't give any noteworthy security. In the end it would just give a false sense of security. The PIN is there to prevent someone from picking up your device and transferring your funds in an instant.
Going forward I believe that multi-signature transactions is what is going to provide the highest level of security, also against a rooted device. I have this in my roadmap for BitcoinSpinner, but it is going to take a while.