[jdev] end-to-end encryption -- making it happen

Peter Saint-Andre stpeter at jabber.org
Tue Jan 9 13:33:56 CST 2007

It's time for us to get serious about end-to-end encryption (e2e).

Ian Paterson has been working hard on specs for e2e. I think we now have 
the pieces in place for strong e2e between any two users, in a way that 
even Aunt Tillie can use. Now we need to make it happen.

As far as I can see, here are the next steps:

1. Security review on the specs to make sure they work as designed.

2. Library developers implement backend e2e specs, making it easier for 
client developers to integrate. (C, C++, Java, Python, .NET?)

3. Client developers implement frontend specs so they can integrate 
backend e2e code.

This approach will ensure that the core specs are solid, that we've 
tested it in various libraries on the backend, and that client 
developers can work from the front end to integrate the backend work. 
Hopefully we'll meet somewhere in the middle. :-)

Here's an overview of the specs in question:

XEP-0155: Chat Session Negotiation

This is a great place for client developers to start, because it's used 
as a building block for negotiation of *encrypted* sessions, yet it 
applies more generally. Having XEP-0155 support in place will make it 
easier to plug in e2e support when the time comes. (Implementing support 
for threads will help, too -- see XEP-0201.)

XEP-0200: Stanza Encryption

If we hardcode the initial parameters (we can suggest values in the 
spec), then we can use those as a starting point for testing purposes 
and leave negotiation (XEP-0116) and rekeying (Section 9 of XEP-0200) 
for phase two.

XEP-0116: Encrypted Session Negotiation

This is the heavy lifting involved in "bootstapping" stanza encryption 
from a cleartext state to an encrypted session.

XEP-0187: Offline Encrypted Sessions

Online sessions (XEP-0200/XEP-0116) are a higher priority, but it's good 
to know that we can encrypt offline messages as well, if we make use of 

XEP-0189: Public Key Publishing

We need this to do offline encrypted sessions and also support 
encryption of archived messages as described in XEP-0136...

XEP-0136: Message Archiving

A related spec that enables secure archiving of the messages you send 
and receive in an encrypted session.

XEP-0188: Cryptographic Design of Encrypted Sessions

The in-depth "theory" behind XEP-0116 and XEP-0187.

The JSF has some money to support these efforts and the will to make it 
happen. I know a lot of developers want to make it happen as well. We've 
limped along without ubiquitous end-to-end encryption for far too long. 
Let's change that in 2007!

And if you're interested in helping with these efforts, make sure to be 
at FOSDEM 2007, where we'll have many in-depth discussions about e2e:


Onward and upward!


Peter Saint-Andre
Jabber Software Foundation

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 7358 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mail.jabber.org/pipermail/jdev/attachments/20070109/6f567620/attachment-0002.bin>

More information about the JDev mailing list