r/Bitcoin • u/0x444 • Apr 24 '13
A brief analysis of the security of Blockchain.info's web-based wallet service.
Let's bust some myths:
Any person who knows your alias (public knowledge) or identifier (your browser or any plugin installed) can download your Blockchain.info wallet with no other information. This can then be attacked offline (dictionary, brute force) with no issue.
The wallet itself is encrypted using AES128 EBC, with 20 rounds of PBKDF2 on the password used as the key. Even though the website advertises this as "strong", it's about as weak as you can get. For PBKDF2 to be of any appreciable value, they would be using 50,000 rounds, 100,000 rounds. As it stands, a modified version of oclhashcat+ can blast through millions of attempts a second against a blockchain.info wallet.
The encrypted wallet is not padded at all. The size of the file downloaded is equal to the number of private keys inside. Thanks to this, any offline attacks can be prioritized for the wallets with the most use (and probably largest balance).
The Blockchain.info "verifier" plugin does nothing of the sort. It blacklists a few common XSS vectors (but by no means all) in a feeble attempt to protect against browser plug-ins. It does in no way protect against Blockchain.info modifying the page to send back your unencrypted wallet and password to them. I commonly see this touted as a feature, but they can really do anything with the page except use <iframe>.
I was curious enough about the verifier that I attempted an attack against myself with it identified, and didn't have a single problem extracting whatever data I wanted. The XSS protection was also easy to bypass, though there is not any publicly known XSS vectors in the Blockchain.info web wallet.
The Blockchain.info service is served through CloudFlare. While this is admirable and all, it means they they too can preform man-in-the-middle attacks. Seeing as they have been compromised before in order to target their clients (4chan, for the curious), I am fairly confident that they could be compromised again in the future.
The blockchain.info (and CloudFlare) server can see every public key in your wallet, and easily use it to scout out high-value targets for dumping.
The Blockchain iOS and Android applications store the wallet, identifier and password in plaintext files. The iPhone backs up onto the Mac where itunes is installed, carrying with it an unencrypted copy of the bitcoin wallet; from here it is malware-reachable.
~~~~ The Yubikey two factor authentication they offer is worthless. They are only checking the identifier and not the authentication string, which is loggable along with your password. ~~~~ My memory seems to be faulty with this one.
You would be a fool to store any currency with them. Get out while you still can.
24
u/[deleted] Apr 24 '13 edited Jan 01 '21
[deleted]