[jdev] Smack 4.2.1 introduces OMEMO support

Vanitas Vitae vanitasvitae at riseup.net
Tue Jun 6 20:11:07 UTC 2017

I have the honour to announce the latest release of Smack! Version 4.2
brings among bug fixes and additional features like Explicit Message
Encryption (XEP-0380 <https://xmpp.org/extensions/xep-0380.html>) and
Message Processing Hints (XEP-0334
<https://xmpp.org/extensions/xep-0334.html>) support for OMEMO
<https://conversations.im/omemo/> Multi-End-Message-and-Object
encryption (XEP-0384 <https://xmpp.org/extensions/xep-0384.html>). OMEMO
was developed by Andreas Straub for the Conversations messenger (also as
a Google Summer of Code project) in 2015. Since then it got quite
popular and drew a lot of attention for XMPP in the media. My hope is
that my efforts to develop an easy to use Smack module will result in an
even broader adoption.

The Smack release is available from the Maven snapshot repositories.

OMEMO is a protocol for multi-end to multi-end encrypted communication,
which utilizes the so called Double Ratchet algorithm. It fulfills
amongst the basic requirements of encrypted communication
(confidentiality, authenticity and integrity) also the properties of
deniability and forward secrecy as well as future secrecy. Smacks
implementation brings support for encrypted single and group chats
including identity management and session renegotiation.

Current implementations (as well as this one) are based upon the
libsignal library developed by OpenWhisperSystems for their popular
Signal (formerly TextSecure) messenger. Smacks OMEMO support is
structured in two modules. There is smack-omemo (APL licensed), which
contains the logic specified in the XEP, as well as some basic
cryptographic code. The other module smack-omemo-signal (GPLv3 licensed)
implements some abstract methods defined by smack-omemo and encapsulates
all function calls to libsignal.

Currently smack-omemo-signal is the only module available that
implements the double ratchet functionality, but there has been a lot of
discussion on the XMPP Standards Foundations mailing list regarding the
use of alternative (more permissively licensed) libraries for OMEMO
(like for example Olm <https://matrix.org/git/olm/about>, a double
ratchet implementation from our friends over at the [matrix]
<https://matrix.org/> project). So once there is a new specification
that enables the use of other libraries, it should be pretty easy to
write another module for smack-omemo enabling OMEMO support for clients
that are not GPLv3 compatible as well.

Smack’s OMEMO modules are my first bigger contribution to a free
software project and started as part of my bachelors thesis. I’m quite
happy with the outcome :)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/jdev/attachments/20170606/21ad531f/attachment.html>

More information about the JDev mailing list