Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: ripper234 on July 31, 2013, 11:13:14 AM



Title: Needed: Security best practices for creating better Bitcoin services
Post by: ripper234 on July 31, 2013, 11:13:14 AM
Over the last few years, a lot of experience has built up in the Bitcoin community regarding security practices.
One particular aspect is the security of Bitcoin Services (e.g. exchanges, wallets, stock exchanges, and any site that has bitcoins flowing through it / stores users' Bitcoins for a long time).

In order to benefit anyone that builds a similar security-critical website, I think it's essential we create some best practices focused in one centralized place, specifically targeted as service developers and operators (Securing your wallet (https://en.bitcoin.it/wiki/Securing_your_wallet) is good for users, but doesn't say help too much to Bitcoin service operators).

I suggest we as a community pull our knowledge and create a similar resource that discusses building secure Bitcoin services.

Can any of the members who were involved in securing Bitcoin services step forward and create such a wiki entry with their knowledge?
(Or post your experience here if you're more comfortable with the forum than the wiki, we'll organize it into a coherent wiki entry)

P.S. if you're in good contact with operators of Bitcoin services, feel free to forward this to them.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: Kris on July 31, 2013, 11:16:49 AM
+1

When time allows it, I will tip in.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: ripper234 on August 07, 2013, 03:44:07 PM
Bump - is anyone interested in helping out?


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: Razick on August 07, 2013, 04:26:24 PM
I will definitely look forward to reading this.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: juca on August 07, 2013, 05:40:34 PM
+1 indeed
I will be watching this thread. Probably, things will come in pieces here, than we could compile in the wiki later.

my first security tip is: whatever you do, use cold storage (https://en.bitcoin.it/wiki/Cold_storage)


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: acoindr on August 07, 2013, 06:03:05 PM
I had this same idea. I think in general there should be a repository, maybe even a new forum for Bitcoin project code, PHP/Python, etc. Bitcoin itself it open source, but everyone would benefit if some other aspects of Bitcoin development also had shared knowledge/work. Why keep re-inventing the wheel? Everyone benefits from more stable, secure businesses. Securing wallets, dealing with DDoS, even legal issues like obtaining money transmitter licenses etc. shouldn't be problems every single business faces on its own, over and over.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: Remember remember the 5th of November on August 07, 2013, 06:04:00 PM
A while back I actually posted a thread regarding this, security practices for Bitcoiners.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: ripper234 on August 07, 2013, 10:43:40 PM
A while back I actually posted a thread regarding this, security practices for Bitcoiners.

link?

I actually found this now (http://bitcoin.stackexchange.com/questions/5347/best-way-to-safely-host-a-high-volume-online-transactional-wallet), not sure it's rich enough.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: juca on August 07, 2013, 11:21:02 PM
I actually found this now (http://bitcoin.stackexchange.com/questions/5347/best-way-to-safely-host-a-high-volume-online-transactional-wallet), not sure it's rich enough.

i found this:
http://blog.coinbase.com/post/33197656699/coinbase-now-storing-87-of-customer-funds-offline
from your link

but reading it, i found a not such good statement:
Quote
Instead, we can safely move about 90% of those funds offline.  We do this by taking the sensitive data that would normally reside on our servers (the “private keys” which represent the actual bitcoins) and moving it to USB sticks and paper backups.  We then take these to a safe deposit box at an actual bank.  In this case we use the bank more like a vault instead of for storing any traditional currency.

moving funds to usb sticks are not such a good idea. usb sticks are prone to failure. paper wallets would be the correct choice.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: gweedo on August 07, 2013, 11:30:04 PM
I can be involved in this, I am always pentesting my own vms and coding new ways to protect and make Bitcoins safer, and keeping it as automated as possible.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: monsterer on August 15, 2013, 09:11:01 PM
I would be interested to read more on this subject.

I found this thread which is interesting, talks about physical security and hot wallets:

https://bitcointalk.org/index.php?topic=81341.0


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: ripper234 on August 28, 2013, 07:34:39 AM
FYI, I just got approached by someone whose website was hacked, who asked me about security practices.
I referred him to this thread, but sadly it still doesn't contain any significant information, so I'd like to bump it again and ask anyone who built a website that handles Bitcoin to contribute from their experience.

You can contribute from your bad experience as well - if you built a website that was hacked, tell us what you did wrong so we can learn from it.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: CIYAM on August 28, 2013, 07:42:23 AM
In regards to *offline* safe storage (not normal day to day stuff).

As well as generating keys securely offline and using only air-gapped comms (via QR codes) I also use GPG to be able to safely keep copies of the private keys.

I put a set of tools for doing this into a Live Distro using Open SUSE here: http://susestudio.com/a/kp8B3G/ciyam-safe

(it isn't the most pretty system but it is about as secure as you can get)


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: ripper234 on August 28, 2013, 07:44:07 AM
In regards to *offline* safe storage.

As well as generating keys securely offline and using only air-gapped comms (via QR codes) I also use GPG to be able to safely keep copies of the private keys.

I put a set of tools for doing this into a Live Distro using Open SUSE here: http://susestudio.com/a/kp8B3G/ciyam-safe

(it isn't the most pretty system but it is about as secure as you can get)

Interesting approach, thanks for sharing.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: gweedo on August 28, 2013, 08:02:20 AM
I am about to reveal a huge trade secret here. I dumped bitcoind, in favor for bitcoinj and a jetty embedded web server, which only does read only operations to the site (get address, check balance, get confirmations). Then if you need to send bitcoins, write that into the program, using the timer class almost like cron so that is all automatic. Then I use the encrypt the wallet with a 40 character password, which is changed every month.

Basically write your own bitcoin client using libraries, that is the most secure way.


Title: Re: Needed: Security best practices for creating better Bitcoin services
Post by: ripper234 on September 06, 2013, 10:12:17 AM
I am about to reveal a huge trade secret here. I dumped bitcoind, in favor for bitcoinj and a jetty embedded web server, which only does read only operations to the site (get address, check balance, get confirmations). Then if you need to send bitcoins, write that into the program, using the timer class almost like cron so that is all automatic. Then I use the encrypt the wallet with a 40 character password, which is changed every month.

Basically write your own bitcoin client using libraries, that is the most secure way.

Yeah, that's a great idea.
We specifically deal in various alts, and I have yet to see a java-based library (or any, in fact) that handles them.
I think that our fastest and perhaps most scalable approach would be to use bitcoind/litecoind/namecoind directly.
This way we don't have to try and keep up with the newest alts, but can just use the existing daemon software.