+++

title = "XMPP et OMEMO sont dans un bâteau (1/2)"
date = 2019-03-12
aliases = [ "post/2019/03/12/XMPP-et-OMEMO-sont-dans-un-bâteau"]
[taxonomies]
tags = [ "internet", "messagerie" ]
+++
J'ai fait une rime \o/
<!-- more -->
La messagerie instantanée est un merdier sans nom depuis que je connais Internet. ICQ, MSN, Messenger, Jabber/XMPP, Facebook Messenger, WhatsApp, Wire, Telegram, Signal, c'est la jungle et ça l'a toujours été d'aussi loin que je me souvienne.\

Et la démocratisation de l'ordinateur de poche n'a finalement fait qu'empirer encore les choses : maintenant, tout le monde peut créer un compte sur n'importe quelle appli en quelques secondes et aller balancer l'ensemble de son carnet d'adresses chez une compagnie aux pratiques douteuses.

## Petit état des lieux…

Alors, je ne vais pas faire un bilan complet de toutes les applications de messagerie instantanée existantes. D'abord, parce que j'ai autre chose à foutre, ensuite parce qu'elles sont bien trop nombreuses pour les citer toutes (et je suis certain que d'autres l'ont fait bien mieux que moi) et enfin parce que ce n'est pas forcément ce qu'il y a de plus intéressant à faire.

Je vais néanmoins lister quelques critères qui me semblent très important concernant la messagerie instantanée :

* open source a minima, libre dans l'idéal côté serveur comme côté client ;
* la possibilité d'avoir des groupes de discussion (c'est probablement ce qui fait que le SMS est autant délaissé par les gens) ;
* la possibilité de chiffrer de bout en bout entre utilisateur mais également dans un groupe de discussion ;
* la possibilité de pouvoir accéder à toutes les conversations/contacts/groupe de discussion depuis plusieurs appareils (téléphone, ordinateur, etc…) ;
* la possibilité d'accéder le plus anonymement possible au service (pas besoin de mettre un courriel ou un numéro de téléphone ou d'autres informations personnelles) ;
* totalement décentralisé dans l'idéal.

À partir de ce moment-là, vous pouvez imaginer la note que récupérerait quelques services bien connus de messagerie instantanée :

* WhatsApp : centralisé, propriétaire, appartenant à Facebook, non-auditable (donc sécurité de bout en bout = 0). Pire choix possible donc.
* [Silence](https://f-droid.org/en/packages/org.smssecure.smssecure/) : chiffré, libre, basé sur du SMS (donc décentralisé dans une certaine mesure), mais malheureusement pas accessible depuis un ordinateur et pas de possibilité de faire des groupes (parce que SMS du coup). Je dirais que c'est une base qui peut être utile. En tout cas, ça ne mange pas de pain, mais il faut obligatoirement avoir autre chose en complément à mon humble avis.
* Telegram : open source côté client, un chiffrement qui semble solide au moins pour les dialogues 1:1, accessible depuis un PC. Bon par contre, pas de chiffrement pour les groupes, propriétaire côté serveur, centralisé et exige un numéro de téléphone valide pour s'inscrire. Donc mieux, mais pas top…
* Signal : open source côté client (mais Signal fait chier le monde concernant la distribution du code source et de la recompilation donc douteux), chiffrement solide, accessible depuis un PC. Par contre, se base essentiellement sur les infras de Google/Apple pour l'acheminement des messages, propriétaire côté serveur, centralisé et exige toujours un numéro de téléphone valide. Donc pareil, c'est mieux, mais c'est toujours pas top.
* Matrix/Riot : open source partout, accessible de partout, décentralisé. Mais malheureusement très bordélique à maintenir, et en fait, la décentralisation fait que le truc est lent pour délivrer des messages entre les instances (à ce qu'il paraît, je n'ai jamais pu le vérifier moi-même). On commence à toucher un truc pas trop mal là, mais j'ai personnellement le sentiment (sans avoir trempé dans le code ni rien) que ça ne sera pas vraiment utilisable à grande échelle.

Et donc, il nous reste le dernier (enfin dernier, on se comprend) candidat : XMPP avec OMEMO. XMPP, je pense que je n'ai pas vraiment besoin de le présenter : c'est LE protocole standard de messagerie instantanée sur Internet (oui, le seul…). Et OMEMO, c'est un standard supplémentaire qui permet de chiffrer de bout en bout mais pour plusieurs appareils et/ou plusieurs personnes. Les avantages de ce combo sont très nombreux :

* complètement décentralisé (c'est XMPP quoi) ;
* accessible depuis n'importe où : téléphone via [ChatSecure](https://itunes.apple.com/us/app/chatsecure-messenger/id464200063) sur iOS, [Conversations](https://f-droid.org/en/packages/eu.siacs.conversations/) sur Android, [Gajim](https://gajim.org/) sous Linux/Windows (j'ai un doute pour macOS, mais il doit bien exister quelque chose) ;
* chiffré de bout en bout, y compris pour les conversations de groupe et sur tous les appareils en même temps : c'est ça la grosse innovation d'OMEMO, pouvoir envoyer un message chiffré à destination de tous les appareils connectés du correspondant. Cela veut dire que l'on peut envoyer un message chiffré à la fois depuis un téléphone ou un PC mais aussi en **simultané** vers plusieurs téléphones, plusieurs PC, etc…
* c'est du XMPP donc ça ne nécessite en aucune manière un numéro de téléphone. Par contre, c'est un carnet d'adresses à part, en tout cas si tu ne partages pas ton roster XMPP avec ton carnet d'adresses habituel.

## :miam:

On verra donc une prochaine fois comment on peut s'installer un petit serveur XMPP tranquillou chez soi pour converser en toute sécurité avec d'autres barbus à poil dru ;)
