[jdev] end-to-end encryption -- making it happen
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!
Jabber Software Foundation
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 7358 bytes
Desc: S/MIME Cryptographic Signature
More information about the JDev