I have read much of the Bitcoin algorithm and its encryption basis, however little has been said of the software's inherent security.

What solutions are already built in to the software, and what is planned?

Problems I see:

  • At the moment it uses IRC networks for locating others. (IRC is fairly insecure and easily taken out with simple DDoS)

  • Wallets have not been encrypted by default. (Physical or remote access to the hard drive provides anyone with the wallet without even so much as a passphrase.)

  • Wallets are complex data structures with no backup tools. (They cannot be easily backed up to a physical hard copy or a secured digital copy. At least not without using 3rd party software such as PGP or TrueCrypt.)

  • The server communication protocols default to plain text instead of SSL or some other encrypted traffic.

up vote 7 down vote accepted

Essentially, almost none. But all of the problems aren't really particularly serious or the proposed solutions don't really help anyway.

The latest version of the client doesn't use IRC by default, though it's still supported to help older clients find newer clients. Instead, DNS is used. But these really aren't points of failure because a list of known working legitimate nodes is hard coded into the client. And as soon as you can find one node, it can send you the current list of working nodes anyway.

Wallets aren't encrypted by default, but if they were, we'd be flooded with "I forgot my wallet password" complaints and people would lose their Bitcoins anyway. Also, there are complex technical reasons why password-protecting the wallet won't actually work against the typical threat model (mass distributed malware with specific Bitcoin knowledge).

The client supports a 'backup wallet' command. But the wallet is in BerkeleyDB format. I wish the client had a native wallet format specifically for backups. There is work on fully deterministic wallets, so you can 'backup' your wallet just by knowing a passphrase even with no backup files at all. This is a legitimate issue and one that's being worked on.

The server does default to plain text, but it also defaults to localhost communication only and you must configure a password to run it in server mode. (There's no issue in GUI mode.)

These issues are all being worked on. The client is pretty raw at the moment, definitely.

  • 3
    One thing to add is that wallet encryption is often seen as the one cure to cure everything, when it's actually not. The reason being that elaborate virii can still steal the unencrypted keys from memory, if the have elevated privileges, and several other exploits exist, so providing encryption might result in a false sense of security. Nevertheless the new 0.4 line of Clients will have an encryption feature, which is off by default. – cdecker Sep 3 '11 at 21:14
  • Viruses in the first place are a single point of failure you really cannot defeat. Anti-virus software only catches them after they are out in the wild, and very rarely a few heuristics catch something. You can write code to protect against many attack vectors, but you can almost never find them all. My concern is more deliberate access, theft of computer, or some such, that is what wallet encryption is good for. – Evil Spork Sep 3 '11 at 22:56

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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