In the wild: Phony SSL certificates impersonating Google, Facebook, and iTunes
arstechnica.com
arstechnica.com
Suggestion: a protocol to register names on Bitcoin blockchain. You can securely transfer ownership of a name, securely associate more metadata with it etc. Every client can independently check if a given certificate for a given domain name is issued by a proper owner, not by one of opaque organizations that you just have to trust.
Today personal computers are bundled with hundreds of root certificates. If one is compromised by FBI or Mossad, they can impersonate FB or Google no problem. DNS records can be taken from you and/or censored, DNS servers spoofed etc.
Combining SSL with decentralized DNS-on-blockchain is just so logical. BTW, Namecoin is not the best attempt because it requires separate blockchain. People want one, the most powerful, most robust blockchain and we should pin all our metadata right there. The real problem is how to organize socially, how to agree that this particular protocol with that distribution of names is The Name System, while all others are cheap clones.
With modern DNS and SSL one of the root issuers can be compromised to impersonate any website. More root certificates - more targets.
With blockchain as a root authority, every website is their own guardian. If Google loses their keys, someone may impersonate only Google, but not Facebook, Twitter or your homepage. In combination with multisignature transactions, Google may lock access to their "BitDNS" records to a board of directors with 3-of-5 vote. If one or two keys are compromised or unavailable, it does not stop the company from moving their property how they want.
What's so bad about keeping different things separated?
Also: blockchain does not need to store more than 32 bytes of metadata or have special name-handling features like Namecoin does. You only need to associate 1 satoshi with a 32-byte hash of your metadata (addresses, certificates, private keys etc.) Metadata can be distributed by any means, e.g. by today's network of name servers. Blockchain only works as a proof of name ownership that links that metadata to a name. You can use just 1 satoshi to be allocated for the name. If you lose your name, it'll be worth much more than that anyway.
You only need to associate 1 satoshi with
a 32-byte hash of your metadata (addresses,
certificates, private keys etc.) Metadata
can be distributed by any means, e.g. by
today's network of name servers.
If you store the hashes and rely on something else to tell you the metadata, how do you stop people deleting records from the past by deleting or blocking access to the metadata?For example:
The legitimate owner of www.alice.com creates a DNS record saying "www.alice.com is owned by alice", then puts scrypt("www.alice.com is owned by alice") into the blockchain, then creates a DNS record saying "and the proof of this ownership is transaction e8a2e79eee906 which took place in December 2013".
You're on malicious coffee shop wifi. You don't have anything pinned. You make a DNS request and you get records saying "www.alice.com is owned by eve" and "the proof of this is transaction c8bb5f503dc26820 which took place in January 2014".
How do you find the first, legitimate transaction?
--EDIT-- Opps they did mention PK pinning as a solution. Cool.
Supposedly Google pays Mozilla $300m/yr. If we can accept that astronomical number, then WTF happens to all that money? Trivial FF changes like moving tabs above the address bar. But useful improvements like pinning languish.
With Chrome, the answer is easy. Google control the browser code, so you're implicitly trusting them anyway, and they're vouching for the certificates to their own sites, so you have good reason to accept what they say are the real certs.
With Firefox, the picture is much more hazy. The certificates being pinned aren't owned by Mozilla (at least, for the functionality to be useful you want to pin certs from other places, unless you browse mozilla's website all day long). So someone at Mozilla has to vouch for a 3rd party's certificate. Why should we trust Mozilla at this? How would Mozilla decide who to trust when they say 'honest, this really is my certificate'? And even if we accepted mozilla's judgement, all this does is make them an authority. You know, like all those other certificate authorities that already do this job. So nothing will have changed and nothing will have been improved.
The challenge is really to encourage offline authentication of DNS and SSL certificate changes. It should be something that can be put in a safe and requires physical attack to circumvent. Something permanent enough that loss would be unlikely, and would result in permanent revocation of the domain.
Pinning by public key means makes upgrades and certificate renewal less of a problem.