[jdev] Alternate MUC Authentication Mechanisms

Dave Cridland dave at cridland.net
Wed Oct 20 02:11:45 CST 2010


On Wed Oct 20 01:47:58 2010, Alex Milowski wrote:
> On Sun, Oct 17, 2010 at 5:32 AM, Kurt Zeilenga  
> <Kurt.Zeilenga at isode.com> wrote:
> 
> > User provides hash:
> >
> > <presence
> >    from='hag66 at shakespeare.lit/pda'
> >    to='darkcave at chat.shakespeare.lit/thirdwitch'>
> >  <x xmlns='http://jabber.org/protocol/muc'>
> >    <hash algorithm="sha2">hash</hash>
> >  </x>
> > </presence>
> >
> > where hash was the base64 encoded sha2 hash over the concat of  
> subscribers' normalized bare jid, " ", the room's normalized bare  
> jid, " ", and the shared password.
> 
> 
> Yes, this is something like what I'm after.  I'm not really looking  
> to
> have individual identities authenticate.  Instead, I'm looking for a
> more secure way to send the shared credentials for the room.
> 
> 
At the risk of somewhat contradicting my colleague...

That's equally (in)secure, since the hash is a plaintext equivalent.  
That's protecting you from a different user joining, but someone able  
to spoof the user can just blindly resend the hash. If you sign  
stanzas, on the other hand, the hash is pointless.

I suppose there's three cases:

a) You trust the servers/administrators, and trust them to be doing  
TLS (to at least prevent eavesdropping, which requires endpoint  
authentication), such that MITMs are not practical. In this case, the  
current plaintext password seems OK.

b) You trust the servers/administrators, but you consider an MITM on  
S2S (or C2S, I suppose) to be a threat. In this case, a simple hash  
allows a replay, and offers little beyond the password, and signed  
stanzas are required. As noted above, if you already sign the  
stanzas, then any "password" is pointless.

c) You don't trust the servers/administrators. In principle, such a  
situation might well lead to the wrong certificate being provisioned,  
but either way, signing/encrypting stanzas is effectively your only  
way out now.

In order to provision a certificate, you could consider one of:

1) The MUC runs (or has access to ) a CA, and you sign a CSR provided  
during registration.

2) The MUC has shared Trust Anchors with the users.

3) The MUC is supplied with a certificate (possibly self-signed)  
during registration.

In either 1/3, then one assumes that you would need some other  
credential during registration - this is where I'd envision using  
SASL, to buy you reasonable password (or shared-secret) based  
protection without trying to hack it into the MUC join presence.

> I suppose this should be shared on the muc list (muc at xmpp.org) but I
> haven't heard much come across that yet.

There's also a security list, which might be more useful for this.

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


More information about the JDev mailing list