Retour

Deltachat


Depuis un moment maintenant j’utilise DeltaChat, une application de messagerie instantanée. Il en existe déjà beaucoup, des très bien même, mais j’aimerais écrire ici pourquoi je trouve qu’elle vaut le coup de s’y pencher.

Précision: ma position politique globale fait que les messageries instantanées qui promeuvent le capitalisme, le fascisme, l’autoritarisme sont les entités à détruire. Les messageries instantanées qui ne promeuvent pas ça ne doivent pas être en compétition, il ne sert à rien d’en trouver une qui écrase les autres.

C’est quoi

Deltachat est une application semi-libre disponible sur Android, iOS, Windows, Linux et Ubuntu Touch. Semi, car la version de bureau se base sur Electron qui bien que techniquement libre repose sur Google. L’interface est relativement standard, on peut se créer plusieurs profils, chaque profil peut discuter avec plusieurs personnes, en 1-1 ou en groupe. L’entièreté des communications est chiffrée de bout-en-bout via PGP

Deltachat est fait pour fonctionner hors-ligne en priorité. On peut créer des groupes, y ajouter des membres, envoyer des messages sans connexion; tout sera envoyé comme voulu au moment à la prochaine connexion. Les groupes sont totalement égalitaires: il n’y a pas de rôle, tout le monde peut y ajouter ou enlever n’importe qui. Il faut donc veiller à faire confiance aux personnes qui y sont.

Il est possible d’utiliser plusieurs appareils pour un compte donné. Aucun appareil n’est plus important qu’un autre. Le moyen le plus simple pour faire des backups, ainsi, est d’avoir un appareil/bot additionel qui partage le même compte.

Pour ajouter une personne, il faut scanner son qr code ou entrer son lien: c’est une information privée accessible sur demande, et qui garantit le chiffrement de bout en bout (à condition que personne n’ait accès au QR code ou au lien: il vaut mieux scanner le qr code en présentiel, au pire des cas on peut envoyer le lien par un moyen tiers mais on doit faire confiance à ce moyen).

https://securejoin.delta.chat/

Du point de vue technique un compte est simplement une paire de clés PGP. Elle sert tout autant à identifier le compte qu’à chiffrer le contenu. Les messages sont de simples emails chiffrés. Il y a donc une ou plusieurs addresses à provisionner pour chaque compte. Chaque adresse pourra être utilisée pour envoyer et recevoir des messages, en passant par des serveurs mails. On peut utiliser une adresse existante, ou on peut utiliser les relais chatmail. Ce sont des serveurs mails sur lesquels sont ajoutés quelques petits bonus bien utiles pour le mode de fonctionnement de Deltachat:

À noter: tous les détails techniques sont cachés des utilisataires. Il n’y a pas besoin de savoir comment ça marche pour utiliser Deltachat. La seule chose importante à retenir si on vient de l’extérieur: Deltachat envoie et reçoit des emails chiffrés avec PGP. Les emails ont des métadonnées particulières pour fonctionner proprement (modification de message, réaction, groupes, messages webxdc …) mais qui ne sont que des ajouts sur des emails classiques. L’interopérabilité est une base qui ne changera pas.

https://github.com/chatmail/core/blob/main/standards.md

Deltachat réfléchit à la manière de faire des groupes aux rôles hiérarchiques. En attendant d’avoir la solution miracle il est possible de créer des canaux de distribution: c’est comme un groupe, sauf qu’il n’y a qu’un seul compte qui peut écrire, les autres ne peuvent que lire, même pas réagir. Sans être une solution ce sera certainement une brique utile pour y arriver, et est déjà utile aujourd’hui.

Les applications WebXDC

https://webxdc.org/

Le gros point différenciant de Deltachat, ce sont les applications webxdc. Ce sont des documents html+css+js (un peu comme une webapp purement côté client) zippés.

Une application est un fichier partagé à l’intérieur d’un groupe de discussion donné. Les différentes applications à l’intérieur d’une même conversation sont totalement indépendantes: on peut partager plusieurs fois la même application mais elles ne se verront pas.

Pour éviter tout problème les applications sont exécutées dans un environnement cadenassé qui bloque toute communication avec l’extérieur (HTTP, DNS, webrtc, appareil, rien ne passe), sauf envoyer et recevoir des messages dans la conversation. Les messages envoyés dans la conversation seront ainsi reçus par toutes les personnes dans la conversation, accessibles uniquement à l’intérieur de l’application. Et comme les messages sont conservés, la conversation sert aussi de stockage de données.

Les applications WebXDC peuvent aussi ouvrir un canal iroh: c’est un tunnel direct entre les comptes qui sont connectés, chiffré de bout en bout, qui ne passe pas par le serveur (sauf la partie signalisation pour se trouver). Le tunnel permet ainsi de s’affranchir des limites de taille. Tout comme les messages, les paquets sont envoyés à tous les comptes connectés; il n’est pas possible de choisir individuellement dans le tunnel.

D'autres applications s'intéressent à ce format: cheogram et monocles, deux messageries instantanées basées sur XMPP, permettent de les utiliser. Bien sûr vu qu'elles ne parlent que XMPP elles ne peuvent pas dialoguer avec DeltaChat

https://github.com/n0-computer/iroh

Les points qui diffèrent

Par rapport à d’autres messageries voici ce qui m’intéresse et qui fait que je considère Deltachat comme intéressant, sans ordre de préférence:

https://github.com/chatmail/core

https://chaos.social/@delta/113307519686226505

Les limites

Tout n’est pas parfait bien entendu, il y a des points sur lesquels il faudrait plus de clarté:

https://merlinux.eu/

Pourquoi Deltachat est construit comme ça

Beaucoup d'imprécisions circulent sur Deltachat et pourquoi est-ce que c'est construit comme ça (pourquoi le mail, pourquoi PGP, ...). C'est une conséquence de l'historique de l'application: au début les développeur·euses pensaient pouvoir faire une application qui réutilisait un compte email existant, pour faire de la conversation instantanée en utilisant le même compte, à la fois pour des conversations format long et format court, le tout chiffré automatiquement avec PGP. C'est en ce sens qu'Autocrypt a été utilisé: si les échanges se font en clair, propager les clés PGP pour que petit à petit, ce dernier soit utilisé partout.

Cette façon de faire, intéressante à priori, a posé plusieurs problèmes:

À ce moment là déjà, la manière de fonctionner de Deltachat avait divergé: au lieu d'être identifié par une adresse email, chaque profil est identifié par une clé PGP. Les serveurs mails ne sont que de simples passe-messages. Pour éviter d'avoir à subir les problèmes évoqués plus haut, dans un premier temps l'équipe a mis au point les relais chatmail. Ce sont de simples serveurs mail (smtp+imap) avec une particularité: tous les comptes sont automatiquement provisionés à partir du moment où une personne essaie de s'authentifier (et que le compte n'existe pas déjà, bien sûr). Cela permet à l'application de créer un compte aléatoire et de l'utiliser pour communiquer. Le compte mail peut être supprimé et recréé, cela n'a pas d'importance: tant que la clé PGP est la même le profil ne change pas.

Également, Deltachat a changé la manière de voir les choses: puisqu'un profil est défini par sa clé publique, et que connaître cette clé publique permet de lui envoyer des messages, celle-ci n'est jamais directement manipulable dans l'interface. À la place la prise de contact se fait prioritairement en scannant un qr code, ou en échangeant un lien. Ce protocole est une partie de SecureJoin, mis au point pour éviter les MITM. Les relais ont également comme particularité qu'aucun message non-chiffré ne peut passer, ni en réception, ni en envoi. Avec ceci est venu la dernière évolution: puisque les relais ne sont que des relais, il est possible d'en utiliser plusieurs. Chaque profil a ainsi maintenant plusieurs boîtes par lesquelles les messages sont envoyés et reçus, sans que les relais ne sachent qui discute avec qui puisque les adresses mails sont créées aléatoirement. Les relais ne sont que de simples relais, ils ne savent rien de ce qu'il se passe dans les communications: qui parle à qui, qui est dans un groupe avec qui, qui a combien d'appareils, ...

SecureJoin

Quelques questions courantes et leur réponse

Pourquoi utiliser le mail et pas XMPP comme fondation

SMTP/IMAP sont faits pour de la communication asynchrone, XMPP est fait pour du synchrone, cela devrait être pourtant logique ! SMTP/IMAP ont été choisis initialement pour leur déploiement massif existant. L'erreur initiale a été de croire qu'un compte existant pouvait être réutilisé sans problème. La nouvelle architecture aurait donc pu se faire sur XMPP mais

Le mail n'a pas de réactions/modifications/groupes, le sujet est en clair/on peut pas chiffrer les métadonnées etc

Certaines de ces fonctionnalités ont été standardisées en dehors de Deltachat, d'autres non; quelle que soit leur origine, tout est documenté, spécifié, parfois même dans des rfc

Les standards utilisés Les spécifications de messagerie spécifiques à Deltachat

Pourquoi réinventer la roue ?/C'est incompatible !

Le fonctionnement, ce sont des discussions potentiellement de groupes entièrement asynchrones: créer un groupe, le modifier, y inviter des personnes, réagir à des messages, entamer une discussion avec un nouveau contact, tout doit être complètement faisable hors-ligne. La roue n'existe juste pas. C'est nécessairement incompatible avec l'existant puisque l'existant ne permet pas de faire ce qui est demandé

Les mails en PGP c'est pas safe

Il y a plusieurs parties dans cette affirmation qui ont besoin d'être éclairées.

PGP est un format relativement vieux et qui date d'une époque où plusieurs des hypothèses ont été depuis cassées. Notons que c'est aussi le cas de TLS. Il n'y a donc rien de rédhibitoire à pgp en tant que tel, mais les implémentations doivent faire plus attention, ce qui est source de problèmes. OpenSSL par exemple n'est pas exempt de bugs critiques par le passé, mais son analyse continue fait qu'il est encore ok aujourd'hui. GnuPG a été source de problèmes également, et deltachat ne l'utilise pas mais a mis au point une implémentation indépendante et auditée, rpgp. Cette implémentation, et le format des messages de Deltachat, font que les failles que l'on a en tête ne marchent pas. Failles qui étaient plutôt de l'ordre d'une mauvaise gestion des emails que de pgp pour certaines, ou gpg qui est trop laxiste pour d'autres

Les audits de Deltachat

On remarquera que les personnes qui critiquent omemo ont comme standard Signal. Ce sont les mêmes personnes qui vont dire que pgp est sûrement pire

Puisque ce sont des serveurs spécifiques l'infrastructure déployée n'est pas réutilisable donc l'argument de l'infra est caduc

Les relais sont des serveurs postfix+dovecot, configuré avec dkim mais sans dmarc, arc ni spf, avec un wrapper qui a les fonctionnalités suivantes:

Bref, rien de spécifique. Les serveurs classiques peuvent tout à fait être utilisés, avec un compte mail spécifique (mais qui du coup perdra en anonymat). La plupart des déploiements ayant des mesures antispam (quotas, greylisting), ces mesures ralentiront les conversations. Si on a son propre serveur qu'on peut configurer on peut désactiver les mesures pour les comptes utilisés sur deltachat. Et on peut tout à fait utiliser un compte non-chiffré, mais uniquement pour les mails "classiques" donc non-chiffrés: ce sera comme un client mail classique mais au format messagerie.

Bref, l'infrastructure est réutilisable, pas forcément en l'état, mais c'est surtout une conséquence de l'état asseè triste de l'infra qu'autre chose