ietf-sasl
[Prev] Thread [Next] | [Prev] Date [Next]
Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams Thu May 28 17:00:41 2009
On Thu, May 28, 2009 at 10:49:03PM +0100, Alexey Melnikov wrote: > 1). SCRAM should just use a single allowed TLS channel binding and don't > have any negotiation of other TLS channel bindings (*) (**) > a). the default is tls-unique > b). the default is tls-server-end-point > 2). SCRAM should just use tls-server-end-point, fallback to tls-unique, > no negotiation of other TLS channel bindings (*) > 3). SCRAM should always use channel binding negotiation (*) > 4). SCRAM should have a default TLS channel binding with optional > negotiation of TLS channel bindings (*) > a). the default is tls-unique > b). the default is > 5). I have another opinion [this is for the case when there is some > valid choice which you think should be considered by the WG] (1a) future-proofed would be my preferred approach. I.e., (1a) with the '**' details filled out. I believe we can do this by adding a field to the GS2 header that would be present *only* when the channel binding type used is not the default one. Since this would not materially change SCRAM/GS2, I believe this would be the ideal solution. So, really, I want (5), which in my case is: - by default use tls-unique (in the case of TLS channels, of course) (this is (1a) so far) - if the client wishes to use any other channel binding type then it must indicate which type that is via a GS2 header field that would otherwise not be present - if we ever need to add channel binding type negotation we can do it later because of the previous item. My (5) is almost indistinguishable from (1a). It adds a single conditional to server implementations of SCRAM/GS2 and nothing at all to clients. (1b) is not acceptable. tls-unique is available for all TLS channels; the same can't be said for tls-server-end-point, which makes it not suitable for use as the only channel binding type. (2) would be OK, BUT, keep in mind that this has to be true for GS2 as well, and that there may be mechanisms like YAP for which tls-server-end-point is a weaker channel binding type than tls-unique (see below!). (3) seems too complicated. (4a) is almost like my (1a)/my (5), but with "later" being "now". (4a) is not worthwhile at this time. I don't know what (4b) mean. Did you mean to say "tls-server-end-point" or "<fill in the blank>"? Either way, (1a)/my (5) is preferable. As for whether tls-server-end-point is weaker than tls-unique for YAP... That's a very interesting question! Sam and I spent quite a bit of time today discussing it. And the answer is not as obvious as we'd thought. Clearly YAP with tls-server-end-point (or any non-unique channel binding type) is subject to replays, but if the only entities that could do the replaying are the client and the server, then there's no real harm. The assumption buried there is that there are no trusted proxies -- perhaps not a good assumption! Also, suppose there was an end-point channel binding type that uses the server end-point's name rather than the end-point's cert/public key, then you get an additional weakness: a dependency on trust anchors being actually trust-worthy. Another weakness for YAP with non-unique channel binding types may be that an attacker can compute a dictionary of YAP messages, off-line, one for every possible password, and if SASL authentication is retriable then the attacker gets as many tries as the server allows. Whereas with unique channel bindings the attacker must do the computation in real-time. So unique channel binding types are a better fit for YAP and YAP-like mechanisms, but it's not clear that end-point channel binding types are fatal to YAP. In fact, if there are no proxies and the client uses a TLS cipher suite with confidentiality protection, then it should be fine for the client to use YAP with tls-server-end-point, provided that the server has an N-strikes-you're-locked-and-must-change-your-password policy. But clearly unique channel binding types are stronger in the face of authentication mechanisms like YAP that need a nonce from an external source and use the channel binding as one. Now consider that SCRAM is a GS2 mechanism, and that someone could have a GSS-API mechanism that is like YAP (i.e., it depends on unique channel bindings for non-replayability). This argues for a preference for tls-unique over tls-server-end-point. The above analysis is the reason that I support (1a)/my (5). I believe Sam is also on board with this. Thanks, Nico --
- Re: Poll: use of TLS channel bindings in SCRAM, (continued)
- Re: Poll: use of TLS channel bindings in SCRAM Alexey Melnikov
- Re: Poll: use of TLS channel bindings in SCRAM Alexey Melnikov
- Re: Poll: use of TLS channel bindings in SCRAM Alexey Melnikov
- Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams
- Re: Poll: use of TLS channel bindings in SCRAM Simon Josefsson
- Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams
- Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams
- Re: Poll: use of TLS channel bindings in SCRAM Simon Josefsson
- Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams
- Re: Poll: use of TLS channel bindings in SCRAM Alexey Melnikov
Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams <=
- Re: Poll: use of TLS channel bindings in SCRAM Jeffrey Hutzelman
Re: Poll: use of TLS channel bindings in SCRAM Kurt Zeilenga
- Re: Poll: use of TLS channel bindings in SCRAM Nicolas Williams
- Re: Poll: use of TLS channel bindings in SCRAM Alexey Melnikov
- Re: Poll: use of TLS channel bindings in SCRAM Kurt Zeilenga
- Re: Poll: use of TLS channel bindings in SCRAM Jeffrey Hutzelman
- Re: Poll: use of TLS channel bindings in SCRAM Kurt Zeilenga
- Re: Poll: use of TLS channel bindings in SCRAM Jeffrey Hutzelman
- Re: Poll: use of TLS channel bindings in SCRAM Kurt Zeilenga
- Re: Poll: use of TLS channel bindings in SCRAM Jeffrey Hutzelman