SXMP
Questions and Answers
- What's the difference between SXMP and XMPP?
-
It is mostly technical. While XMPP is indeed an excellent and battle-tested protocol,
it lacks several security and privacy features. This leads to multiple problems:
-
Transparency of the contact list. By default, servers can see your contact list,
meaning they are able to trace where exactly your messages go, thus building a
social graph of yours. Also, servers are able to know whom you have blocked. To
prevent this knowledge, one should use an experimental
XEP-0510.
In SXMP, if the contact list is enabled, it is stored encrypted. Additionally, it is
totally possible to not have any contact list at all.
-
In addition to the previous problem, XMPP servers always know who is talking to
whom. XMPP was designed at the time when privacy and security were quite luxurious.
The only possible solution is to use a mixnet and a random JID username, that does
not relate to your real identity anyhow at all.
For this reason, SXMP follows the logic of SimpleX. If possible, it omits any
long-term identifiers and implements the same queue mechanism as in
SimpleX.
-
If using OMEMO (XEP-0384),
servers are able to gather information regarding the number of active devices,
whenever you add or remove a device, and when someone requests your key bundles to
start a conversation.
Currently, SXMP solves the first and second issues.
-
Unencrypted alongside supplementary content in a message's body. If you send an
end-to-end encrypted message (using OMEMO) containing a typing notification,
message reaction update, reply, or custom element from a custom extension,
they will be sent in plaintext. Thus, additional implementation
(XEP-0420) is
required, which encrypts the whole transmitted stanza of your message, and not
only its contents.
Notably, this influences the behavior of message retraction, which is technically
considered as a feature of confidentiality. If XEP-420 is used, the server does not
know if you have just deleted your message, meaning the recipient will be able to
access its contents, despite the fact of retraction. If XEP-0420 is not used,
the server does know this fact and is supposed to wipe the message entirely from
the disk. However, the server now has knowledge what messages were deleted and when.
SXMP, on the other hand, encrypts entire content, eliminating this issue
for developers. Message management is handled via key slots, mitigating the
opportunity to either reveal the content of a message, or inform the server
about a message's deletion.
-
Offline message queuing is not private enough. Whenever your device is disconnected,
the server stores the messages sent to you. So, the server knows exactly how many
messages you are waiting for, their sizes, who sent them and when they were sent.
In SXMP there is minimal knowledge for a server about messages sent to you, when
you are offline.
-
Traffic analysis.
While quite uncommon and rarely seen in practice, this is still a feasible attack.
Most of the messages sent over the wire in XMPP can be correlated by their size or
the time of transmission.
There is no such issue in SXMP, as it enables dynamic message padding and allows
you to send dummy messages or slightly delay your messages.
Technically, as has been stated already, some of these and similar problems can be resolved
using corresponding extensions. However, it is important to understand that XMPP extensions
are mostly optional to implement and use. A user's client might not implement the extensions
that desirably fix aforementioned privacy flaws. In XMPP, the server should be trusted,
otherwise it could potentially not support the securing extensions on purpose. In SXMP,
the server is not trusted. It either follows the protocol's specification or does not.
- Any other protocols involved?
-
Yes, there are several well-known techniques from other protocols in use.
-
As mentioned earlier, SXMP was motivated by XMPP's philosophy to a certain
extent. Therefore, as part of the viewpoint, our protocol is extensible. It
has own defined boundaries of extensibility and what extensions can change.
-
SimpleX has affected the protocol in terms of message routing and server
trust. Usually, messages are delivered in accordance with a specific constant
identifier. Considering superior solutions, the identifier is less linked to
an actual identity and, preferably, being periodically rotated. Basically,
this is a definition of
anonymous message queues.
-
SXMP is designed with
Perfect Forward Secrecy
in mind by means of the
Double Ratchet algorithm.
-
The protocol also utilizes the
Noise Protocol Framework as a fulcrum for
handshakes and encryption. Although not standardized, it is available for
everyone and has been widely used by WireGuard,
I2P, and others.
- Do you have any plans to standardize the protocol?
-
At this moment, it is important to design at least a prototype that is quite ready to
be deployed. So, it is hard to tell whether the protocol will be standardized in the
future. We truly hope it would be possible to do so, but we cannot be sure. Nevertheless,
the protocol is going to be completely free and accessible to everyone to read and to use.
- Is it free and publicly available?
-
Indeed, as stated above. We do not have any plans to monetize it, as we believe that
privacy and confidentiality must be convenient and available to any person.
- How do I contribute?
- Please, contact me: skylumen@tuta.io (E-Mail) or lumen@xmpp.is (XMPP).