As much as I want to run it, the bitcoin-qt client currently has lax security in my opinion. Protecting any amount of coin with a only a simple passphrase risks many kinds of unauthorized withdrawal attacks, mainly from keylogging malware. As this discussion has evolved, it has become more about the security issues with private keys themselves and how to fix them. Don't get me wrong, the Bitcoin-Qt client is a fantastic wallet that I would love to run on my computer, but I honestly feel like keeping my BTC behind a layer of 2-factor authentication is safer.
One of the biggest fears any bitcoin holder has is that an unauthorized program will clean out their wallet. It's unfortunate that thieves who are successful at it are very likely to do it again. There is absolutely no recourse for the vitcim to get their coins back, and currently no punishment awaiting those who perpetrate the crime. Is it ever totally the victim's fault? It's a moot question. You can point fingers and play the blame game all you want but the reality is in these kinds of circumstances, thieves will absolutely try to steal coins any way they can and it's BAD FOR BITCOIN.
How can we fix it and especially protect the most vulnerable users? Cold storage, Paper wallets, hardware wallets, and multi-sig are a start, but believe me when I say they're not enough, they shouldn't be the only options, and many users actually don't have the wherewithal to set them up. My rule is if you can't trust your bitcoins with grandma, it's not easy enough yet.
Each user should be able to run their own digital trustless BTC vaultWhat's an easy way to beef up security without trusting other people to hold your coins? The answer is simple, and built right into bitcoin: time. Time can be measured two ways, by the computers clock or by the network itself in terms of confirmations. If we can use scripts to prevent our coins from even being sent out until a specified time or number of confirmations have been made after our request, it will greatly help decrease the chances that our coins are spent without our approval, it will also solve other problems propagated by human error.
I have five simple suggestions for potentially improving the security of coins kept on any wallet, but especially the bitcoin-qt
- give users the option to specify time delays for withdrawals. When a request is made to send money, a specified period of time (or number of confirmations) must pass before it is sent out and the request can be cancelled anytime before that. Even more importantly, many methods of notification should be available to say that a withdrawal request has been made.
- allow users the option to lock-in the next destination addresses of their coins. For instance if a user wants to keep coins in their wallet but make sure they're not transferred anywhere else but their next hotwallet they can do so. They may even choose to set up a list of trusted addresses.
- allow users to specify a maximum amount of BTC that can be transferred out in a given timeframe.
- allow users a kind of "total lockup" mode, specifying a period of time in which no coins can be transferred to a new address in any way shape or form until a period of time or a specified number of confirmations has passed. Personally I believe this should have a maximum to prevent coins from being locked up for years by accident or malicious intent.
- a password is not enough, allow the wallet to use any kind of 2nd factor authentication if possible, please!
Pros: thieves attempting to drain a wallet of funds will find their attempts hampered. Even if they know the password (or private key) and attempt to withdraw, they must wait a specified time period and the wallet owner is simultaneously notified with the option to cancel. Thieves may also find that the wallet is unable to process a request to send the funds to their address, i.e. theirs is not on a list of trusted forwarding addresses.
I think the parameters should be as flexible as possible, and of course optional. Users should be able to specify whether they want a weeks delay or a 5 minute delay, a 2 BTC daily withdrawal limit or a 100 BTC daily withdrawal limit. Many other different kinds of rules for addresses can be imagined, but of course users could always choose to generate a normal address, and protected from accepting a transaction with these kinds of extra-restrictive output scripts. A failsafe should always be in effect as well, meaning that the user pre-defines a trusted address that could accept the BTC instantly. Thieves would have to hack this as well if they wish to spend the coins instantly, and another still if a chain were set up...ad nauseum.
Cons: Users will have the option of enabling these extra security layers, but may find their coins less accessible if they are not careful. Caution should be exercised so that coins with ultra-constrictive security options are not created.
I'm very interest in any comments on this. Thank you!
EDIT 1: To much skepticism, I have further elaborated how this may be possible to do below in the responses. It essentially involves creating transactions that have more constricting output scripts, some of which may require changes to the bitcoin protocol. Jump to:
https://bitcointalksearch.org/topic/m.2213559