[Standards] SASL External via X.509 without TLS

Dave Cridland dave at cridland.net
Fri Jun 8 06:34:13 CDT 2007


On Fri Jun  8 09:51:06 2007, Ian Paterson wrote:
> SASL External Auth (as specified in XEP-0178) relies on the TLS 
> layer to verify X.509 certificates.

Sort of...

>  However, clients connecting using BOSH (XEP-0124) don't use TLS 
> encryption, they use https:// instead (i.e., they do not present a 
> certificate before SASL). I think it might therefore be useful to 
> define a protocol independent of TLS that enables X.509 certificate 
> presentation and verification of ownership. The protocol would be 
> advertised as a stream feature and performed before SASL.
> 
> 
I think you're abusing SASL EXTERNAL, which basically is an agreement 
between client and server that the channel has some property which 
can be used to authenticate them. By tradition, this tends to mean 
TLS auth, but that's purely an example.

I'm not convinced this is the case with the scenario you're 
describing. In that scenario, you're looking at X.509 authentication 
as a SASL mechanism. (FWIW, some people hoped TLS might end up as a 
SASL mechanism in and of itself).

You might instead want the BOSH implementation to handle the 
authentication, and then pass the authorization identifier it then 
obtains through, perhaps using TLS-based strong auth and SASL 
EXTERNAL, independent of what the client uses. (This is known as 
proxy-auth, although for wordsmiths it's a different use of "proxy" 
than "HTTP proxy" - it just happens that many reverse-proxies tend to 
be doing proxy-auth).

There's good reasons for doing this, including that the newer SASL 
mechanisms being designed are likely to support (and maybe require) 
channel binding, and in this case, if the channel bindings used 
related to the TLS session over which BOSH was run, a pass-through 
authentication would fail, as it'd correctly detect a MITM. Equally, 
running TLS-over-BOSH would be painful in the extreme, so we probably 
don't want to be thinking about that.


> I don't know enough about the TLS protocol. Perhaps it allows 
> certificate verification without resulting in any stream 
> encryption? In which case, there might not be any need to define a 
> new protocol.
> 
> 
Sort of - it supports an encryption algorithm NULL, which is roughly 
the same thing. It's almost always disabled by default, since you 
rarely want it to happen.

Dave.
-- 
Dave Cridland - mailto:dave at cridland.net - xmpp:dwd at jabber.org
  - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
  - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade


More information about the Standards mailing list