<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Nov 14, 2016 at 2:45 PM, Ray Dillinger <span dir="ltr"><<a href="mailto:bear@sonic.net" target="_blank">bear@sonic.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Predictably we still have massive fraud perpetrated through credential theft followed by use of stolen credentials as an unauthenticated client. [...]<br>
<br>
There is a technical standard for client-side certificates, which was part of the original SSL specification.</blockquote><div><br></div><div>Browsers are (I think quite clearly?) the main use case, but the existing client cert implementation and UX in browsers is rather suboptimal. Browser vendors seem to be reluctant to even support it, and are looking at phasing parts of it out (e.g. the <keygen> tag) since it's so infrequently used.</div><div><br></div><div>The main problem is in the current incarnation, client certs are a same-origin policy violation: one cert can potentially be used on many sites. This means:</div><div><br></div><div>1) We don't automatically know what client cert to use to authenticate a user. This means we have to ASK the user which cert to use. Often browsers don't remember</div><div>2) Since certs can be used across origins, they leak a linkable identity across sites</div><div><br></div><div>What's needed to solve these issues is a system which provisions unique "certificates" per site (i.e. origin-bound certificates). Our best bet there is Token Binding, which is implemented as a TLS extension and HTTP header, which is being standardized through the IETF (with Google doing most of the design/implementation work):</div><div><br></div><div><a href="http://www.browserauth.net/token-binding">http://www.browserauth.net/token-binding</a><br></div><div><br></div><div>I believe they're in the process of wrapping up their work. I saw they just open sourced an implementation as well:</div><div><br></div><div><a href="https://github.com/google/token_bind">https://github.com/google/token_bind</a></div><div><br></div><div>All that said, I think client certs are fantastic for server-to-server authentication, but something like token binding seems like a better fit for end users, IMO.</div><div> </div></div>-- <br><div class="gmail_signature">Tony Arcieri<br></div>
</div></div>