We all love Ethereum/Bitcoin (i.e. EC secp256k1) private keys, because they let us sign transactions. However, browsers don't support those keys for authentication -- what they do (sort of) support is client-side SSL certs.
So the obvious question that comes to mind is: what would it be like to generate an X.509 SSL certificate from an Ethereum (or Bitcoin for that matter) private key? Would servers recognise such authenticated HTTPS connections? What support would be missing on client side?
To sum that up, the first workflow that I have in mind is SSL client auth:
- I (the user) generate an SSL cert from an Ethereum private key (once) and imports it into the browser
- I log into a website by providing that cert
- The website trusts that I own the corresponding Ethereum address. Note that this won't let me sign any transaction, but it at least will let me prove that I own that address. Depending on the use case, that is sometimes sufficient.
Another workflow that comes to mind is CAs (Certification Authorities, think "Verisign"). The job of a CA is to sign X.509 certificates. So if I could generate a certificate from an Ethereum address, I could have that certificate signed by a CA and thus bridge Ethereum with the huge web-of-trust infrastructure that already exists. All those well-established CAs could start signing EC certs, thus anchoring Ethereum addresses to real-life entities.
So the key part is deriving a client or server X.509 cert from an EC private key. Is that at all doable? What are the obstacles or impediments?