Direction Shift for Web Authentication
Monday, August 18th, 2008 by hartmansIn may of 2006 I published my first draft of requirements for web authentication mechanisms designed to reduce the impact of phishing. Last week I updated the requirements based on some comments I received during last call before going on paternity lea.
However the landscape is different than it was when I started the document in May of 2006. At that time I thought that some significant work needed to be done on channel binding for HTTP. Channel binding is not the only way of meeting my requirements, but I at least think it is the best long-term approach. Several of us contributed to a framework for HTTP channel binding. This spring, Microsoft took a strong interest in HTTP channel binding and started using it for GSS-API, NTLM and digest authentication. Microsoft also convinced us that a number of simplifications can be made and much of the complexity we assumed was needed turns out not to be necessary. Their solution meets all or almost all of my requirements. The good news is that at least within the enterprise,
there appear to be some strong choices for authentication. Microsoft explicitly did not solve the upgrade and negotiation problem: you do not end up knowing whether you are using strong authentication or not.
I don’t think these requirements were ever about asking people to design entirely new authentication mechanisms. I had envisioned that small changes to existing mechanisms in order to enable channel binding or other minor changes would be the sort of work that would result in the IETF. However Microsoft seems to have gone off and done that themselves. Their approach is not on the standards track.
So, I’ve been thinking about whether this document still has a purpose. I ultimately have concluded that it probably does. First, some people seem to be trying to design new authentication mechanisms for HTTP. I’d rather they do it right if they are going to be designed. Secondly, I think there is still work to be done in order to make these mechanisms available on the public Internet. We need to work on how you know if strong mechanisms are available. We also need to work on ways to integrate them into websites outside of closed communities. Nico thinks that an extension to xmlhttprequest is the right approach there. Something is probably needed for DAV and Atom agents to indicate support. Some of that work may belong in the IETF.
It is definitely clear to me now that I do not want to go encourage people to develop more HTTP authentication mechanisms in order to meet these requirements. The Microsoft experience has convinced me that if work is needed on specific mechanisms, it is relatively small and should be a point solution to a bug or lack of negotiation. I definitely do not want someone to point to this document as an argument for entirely new authentication mechanisms. However, I think the current purpose section can be read that way. So, it looks like it’s time for another update to try and make that more clear.