Hi,
I'm currently in the process of implementing end-to-end encryption in my
project. I naturally had a look at the freshly published XEP-0384: OMEMO
Encryption and I have some feedbacks to give on it.
1. Usage of Olm
After some talks with members of the community it seems that this
protocol was selected for two reasons : it was quite well documented
(for the crypto part) and didn't have legal concerns.
I was quite disappointed by the library provided by Matrix for this
protocol (https://matrix.org/git/olm/about/). The Javascript version of
it needs to be generated from the C/C++ code using a tool called
emscripten (https://kripken.github.io/emscripten-site/index.html) that
is actually not packaged on Debian (only a very old version from 2014 is
available for sid) and seems to rely on a forked version of LLVM.
Also I couldn't find any clear/simple documentation that could help me
with the integration of the library in a project (like we can have for
libsignal here
https://github.com/WhisperSystems/libsignal-protocol-javascript).
2. XMPP environment integration
I also had some concerns regarding the integration and coherence with
the current XMPP XEPs and syntax.
2.1. OMEMO nodes name syntax
Having node names that use the camelCase syntax is not something that
I've encountered since the vCard tag in XEP-0054: vcard-temp. I'd prefer
to stick with the kebab-case (lower-case-dash-separated syntax) like we
have in the rest of the XEPs. What do you think?
2.2. Current usage of PEP
This feedback is related to the previous message that I sent on this ML
regarding XEP-0163: Personal Eventing Protocol a couple of days ago (see
https://mail.jabber.org/pipermail/standards/2017-January/031811.html).
The current usage of PEP is, for me, not optimal and overly complex.
Having a list of devices that needs to be synchronized on a node and
their related bundles on some others brings race-conditions issues
(actually mentioned in the Example 2.) and forces the clients to
implement extra checks to ensure that everything is properly synchronized.
Proposal :
I propose to simply publish the bundles on several items in one unique
"urx:xmpp:omemo:0" node. Each item ID will be the device ID.
To discover the device ID list a simple
http://jabber.org/protocol/disco#items query would then be sufficient
and will rely on existing PEP/Pubsub implementations (client and server
wise). Furthermore, each client could be instantly notified when a
device has been added or retracted from the list.
A similar behavior has already been standardized in XEP-0277:
Microblogging over XMPP.
This seems to already work with servers like Metronome and ejabberd (not
Prosody for now) and should not cause issues with existing OMEMO
implementations that are still based on Axolotl and using the
eu.siacs.conversations.axolotl namespace.
Regards,
Timothée Jaussoin aka edhelas
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
_______________________________________________