[JDEV] Security in XMPP/Jabber: some questions
David Waite
mass at akuma.org
Wed May 21 21:24:42 CDT 2003
Mattias Campe wrote:
> Hi,
>
> yesterday, I did a presentation of Jabber at my university (actually
> it was a presentation for my RSS headlines jabber component) and they
> asked me how secure Jabber was. Unfortunately I couldn't answer that
> question very good. As I still need to give in my résumé, I would like
> to have some more information on this one.
>
> First, I've done some more research myself, but I still have some
> questions. From DJ Adams book, I know that there are 3 methodes to
> authenticate, namely plaintext, digest and zero knowledge. Is it
> correct that most clients use digest by default?
Currently, althought the XMPP working group has put effort into also
using SASL.
> Then there is SSL (Secure Socket Layer?) that you can use to encrypt
> the whole stream, am I correct? Still, I don't see that clients use
> this by default. What is the reason for this? I've read somewhere that
> it could be that this causes problems on some proxy servers, is this
> true? And does SSL provide end-to-end security or only
> client-to-my-own-server security?
SSL is expensive, and there isn't always an easy way to support it for a
particular client implementation. Also, SSL only secures a segment of
the transport, it is not end-to-end and thus there are no security
guarantees either that the traffic will or will not traverse the network
at some point in clear text, and also no way to verify the identities of
all the other intermediate routes so that you can decide if you want to
trust them.
> Other two known ones are PGP and GnuPG, what's the difference between
> those two? Is a client supporting PGP compatible with one supporting
> GnuPG? How does this actually work? Is it encrypted at the client
> side, decrypted at the server side, to know the to address and then
> encrypted again to send it to the "other side"? What if the other side
> doesn't know about PGP, how those this side knows about that lack of
> feature?
OpenPGP is what GPG supports, and there is existing end-to-end
encryption based on this. You do not have protection outside of the
payload, and this sort of asymmetric encryption (with public and private
keys) is much more computationally expensive in terms of bandwidth usage
processor usage - but at least the processing is done on the ends of the
network rather than the intermediate routes.
Normally OpenPGP support is indicated by signing the presence status.
The actual signed data is meaningless (it would be simple to forge by
just sending a previous signed block), but you can get the key id used
to sign the data from the signature block, and use this to retrieve the
key and start using it based on the level of trust in it.
> I read in "The Instant Messaging Standards Race: Comparing XMPP/Jabber
> and SIP/SIMPLe" from Jabber Inc. sth. about SASL (Simple
> Authentication and Security Layer) and TLS (Transport Layer Security).
> What is the principle of those two?
TLS is basically the standardized SSL. SASL is the IETF authentication
standard. The main point of SASL is that it provides a framework for
adding new authentication mechanisms, but also saves all the effort of
designing an authentication system and verifying the authentication
system is secure - you can just use an off-the-shelf library.
> What is meant by "end-to-end" vs "hop-to-hop" encryption, that with
> the first one even the server can't read what is in the message? But
> how do they know then where to send the message?
end to end means that only the sender and recipient require knowledge of
how to decrypt the message; hop-to-hop means the transport is secure,
but the intermediate parties (the servers) can see the contents. PGP is
used for end-to-end, while SSL/TLS is hop-to-hop.
I've always thought of the SSL choice being one that the administrator
makes, not one that the user makes. If you can connect to a server with
both a straight connection and with SSL, there is little reason to
connect _with_ SSL, because the administrator already has made the
policy decision that information is allowed to travel across the network
in the clear. SSL just uses more processing power, memory, and bandwidth
in this case. Just my opinion, though :-)
> Will jabberd2 support more security than the current jabberd server?
It already does. :-)
-David Waite
More information about the JDev
mailing list