Please help. I have finally set up my cold storage system for but I am too paranoid to login to blockchain.info wallet to send the funds out.

Let's assume the account is safe and protected from most attacks at this very moment (strong passwords + graphical keyboard, 2FA, using secure network, no online backups sitting somewhere). Let's also assume bc itself can be trusted.

So I feel the wallet is relatively safe just "sitting there" but I am still concerned about attacks during the actual login and while I am sending transactions.

- Would the chrome app or firefox extension be safer than logging in and out of their URL?

-Is it a bad idea to use TORBROWSER? Can an exit node still sniff my data if I'm using https? What about the FF extension AND torbrowser together.

-Even if I take advantage of all best security practices on the wallet itself, my physical system, and my personal network... WHAT OTHER REALISTIC VECTORS SHOULD I BE AWARE OF?

Thank you so much. Security is a huge hurdle for all of us…I hope that others can benefit from your answers.


The key to security questions is asking what you want to be secure from. The most obvious problem you will want to avoid is losing your bitcoin to some attacker. If this is the only objective you have, it is easy to see that TOR will probably not help you: It only introduces more nodes to pass your traffic, not extra encryption security. But if you have some additional objectives, such as maintaining anonymity, TOR might help as part(!) of a much more difficult solution. For the rest of my answer, I will assume that not losing your bitcoin to a cybercriminal is your only concern.

Cold storage is a good start, and by offline storage usually being tangible physical storage, your own intuition is probably rather good at understanding all issues there. Moving to the moment when you move bitcoin back from cold storage to a wallet, the issues are obviously the transport and the execution environment of the bitcoin client through which you use the wallet.

Blockchain.info provides a fairly reputable wallet service that claims to not actually move enough information to their servers for that side to be a security concern (and they appear to run an open source wallet, with code on github). But what guarantees do you have to trust that this is and remains the case for you? If you value safety against being lied to (and be it only by some secret order to blockchain.info or because whoever may hack them might be as vile as to change things without asking for their approval first), then this is not a perfect solution---but you may decide to put more trust in them than in maintaining a safe execution environment for a bitcoin client on your own computer or smartphone. In one aspect, however, their wallet service may be particularly bad, though: Being in large part client-safe based (such that they alone can claim not to have their private key), obviously even using them you are exposed to the risk of your browser/computer being hacked in a way specifically aimed at hijacking your bitcoin transaction by changing its destination.

Using a browser app to access blockchain.info would probably protect against nothing else but you mistyping their URL to something registered by a cybercriminal. As crazy as this sounds, it is not without value, but compare that risk to the risk of forgetting to never install any other browser app (these things can get access to just about anything that happens inside your browser, hence quite likely to everything needed to hijack a transaction you make thourgh blockchain.info).

The best thing would be to have a completely self-contained box where your private key never needs to leave it, but from where you could make bitcoin transactions by entering the necessary info (destination address and unspent input tx), signing them, and outputting the tx that needs to be passed on to the bitcoin network. Such hardware bitcoin clients exist, e.g. TREZOR or Bitcoincard. However, I haven't looked closely at either, so please don't understand this as endorsement about their design or structure---in fact, from just a cursory look, I feel that maybe I should warn you about Bitcoincard pitching the inherent, well, surveillance-like data mining benefits to merchants installing supporting infrastructure. I suspect this list is not complete; I've heard an idea somewhere about putting such a client into (or via a shim on top of) a phone SIM card, and apart from the obvious question of how to secure the rest of the hardware you would use to interact with it, love the idea for its potential low cost yet more-secure-than-a-smartphone-app aspect. If I wasn't busy with another project, I might try to make that happen myself!

But back to the last part of your question: Let us assume that you stop using a third-party service like blockchain.info and run a bitcoin client on your own "physical system" as you write (I'll assume computer/smartphone), and that those best practices you mention are sufficient to keep unwanted malware and the like out of your computer (and whatever internal part of your network might handle sensitive information like your bitcoin address' private key). That may be overly optimistic, as I guess the NSA leaks we've seen make it fairly clear that this situation is very nearly impossible to maintain with personal computing equipment not specifically dedicated to, designed and hardened for a single use, at least not against a sufficiently determined and equipped adversary---but that part of computer security is better addressed elsewhere on stackexchange anyways. Still, if we can assume all that, or are simply not worried about such adversaries becoming interested in petty crime such as taking bitcoins, the obvious remaining attack vector is the bitcoin client itself. If any such client has an undiscovered bug that allows stealing bitcoin, then chances are it could be discovered after an exploit. You would minimized your exposure by using the latest version of such a client offline to create the transaction you intend to make (which may require use of a command-line interface on some clients). In fact, if you then take that new transaction and transfer it to a different system not in possession of your private key, you can completely isolate the first computer from the internet and hence any attack coming from the internet.

Obviously there are non-network based attack or loss vectors, like physically stealing one (or losing all) your cold storage device (paper?). With their own potential solutions.

But there is one well-known (and fairly obvious, to a cryptographer) potential problem that can be exploited even without your wallet being in any way connected to the internet: The private key to your bitcoin address may be weak in the sense that someone can guess it. There are two obvious causes: Either you have a brain wallet with a guessable passphrase---an easy mistake to make accidentally, as it is hard not to see how e.g. a phrase you thought you had invented yourself really happens to be printed somewhere in a book that an attacker uses to guess bain wallets, just because some author stumbled across the same idea for a sentence or phrase. Or else the software you used to generate your bitcoin address has a bug that leads to a weak key, which has already happened, leading to the discovery of a very serious defect (see this Guardian article) in the Android random number generator.


The safest way to use blockchain.info is to not let it have any private keys until it needs them. If your coins are [really] in cold storage then you can log onto your blockchain.info wallet with zero risk. When you are ready to spend, import the private key(s) into blockchain.info. At this point you are at risk until you spend and then store any remainder back into cold storage.

This will limit how much someone could steal and it's pretty easy. However for large transactions a Windows box should never be used because with all the potential attack vectors it's just too risky.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.