You're moving to Ghana?
Ebola had reached its peak and the whole world was freaking out.
I'd just accepted a volunteering job teaching code in Accra and to the average news-reader, moving to West-Africa was dangerous.
Guess what? Ebola never made it to Ghana.
BitGo was the wallet software used by Bitfinex who lost $60m of its customers' funds.
The bitcoins were stolen from a BitGo wallet, so it's their fault, right? Wrong.
The problem arose not from the BitGo software, but how it was implemented.
Jan, Jörg and I are 3 co-founders. If we ever need to manage bitcoin for our customers, we'd probably set up a cold wallet requiring 2-of-3 keys to access the funds. This means that if one of us goes rogue, or is about to be sexually assaulted by a group of skinheads (watch Mr. Robot), it still wouldn't be enough.
Before multisig, we probably would have each had a copy of the same key, meaning that only one of us has to be compromised to steal user funds.
The Bitfinex setup allowed the attackers to gain access to at least two keys. If two-of-three keys were on the server or stored in a database, an attacker would have everything they need.
Yes. No. They do have two keys, (user and BitGo keys) but the user key is encrypted, and without the password they can't use it to access your Bitcoins.
What if BitGo gets hacked?
No problem. When you created a wallet, you downloaded your backup card and made a note of your password to allow for recovery of funds.
What if Bitwala goes bankrupt or just wants to have a really expensive party?
We appreciate your faith in us. See previous answer ^^.
Could what happen to Bitfinex happen to Bitwala?
To the best of our knowledge, this is impossible. Bitfinex is an exchange which needs to be able to move its users funds around without them authorising every transaction. We offer a wallet and don't need to make transactions on your behalf.
We don't have access to your Bitcoins. Your private keys are generated and encrypted in your browser. The information needed to access your bitcoins is never stored in our database or passes through our servers.
They received signed transactions and properly authorised requests. They were simply 'following orders'.
As someone who's implemented their software, they could've done a few things better:
The BitGo documentation encourages you to use the simpler methods to create a wallet.
To be allowed to communicate with BitGo's API, you need to authenticate yourself. You can either:
Therefore, the authentication token is the only way to go. It's less secure, as you can use that single token to authenticate all of the wallets for the user.
If you want to ensure that you never store or have access to the data needed to access your customers' bitcoin, it's actually quite complicated. This is what we do:
CLIENT
What do you think of BitGo and multisignature wallets? Let us know in the comments.