Communication XMPP × Ğ1

J’aimerais bien me servir de la toile de confiance Ğ1 conjointement au protocole XMPP. 1

Objectifs

  • utiliser la toile de confiance comme facteur d’authentification et filtre antispam
  • avoir une procédure de création de compte simple pour les personnes de confiance
  • permettre l’intégration dans divers services (par ex appli Ğecko, notifications Ğchange…)
  • profiter d’un écosystème complet de clients de messagerie et de réseaux sociaux
  • viser une architecture décentralisée avec plusieurs hébergeurs

Noms

  • xcli : client xmpp standard (Dino, Conversations, Conversejs, Movim, Beagle…)
  • ğxcli : client xmpp custom implémentant les fonctionnalités spécifiques à la ğ1 (par ex ğ1-compagnon)
  • xsrv : serveur xmpp standard (prosody…)
  • ğxsrv : serveur xmpp custom implémentant les fonctionnalités spécifiques à la ğ1 (par ex prosody avec module)

Idées exprimées en terme d’UX

  • création de compte
    • l’utilisateur se rend sur un ğxcli et voit une liste d’instances ğxsrv disponibles
    • il sélectionne une de son choix et demande la création de compte
    • le ğxcli envoie un message signé à un ğxsrv demandant la création de compte
    • si la clé correspond à ses critères, le ğxsrv répond avec un message comprenant un JID et mot de passe (le JID peut par exemple correspondre à l’UID dans le cas d’un compte membre)
    • à partir de ce moment, le compte est créé, et l’utilisateur peut se connecter depuis n’importe quel xcli par JID/password
  • envoi d’un message côté client
    • dans le cas d’un xcli, envoi de message standard (en clair, chiffré PGP, chiffré OMEMO par exemple)
    • dans le cas d’un ğxcli, possibilité de signer le message avec sa clé et de chiffrer pour la clé du destinataire
  • réception d’un message côté client
    • dans le cas d’un xcli, réception standard
    • dans le cas d’un ğxcli, possibilité de différencier un message signé d’un autre, gestion de whitelist/blacklist…
  • réception d’un message côté serveur
    • le filtrage peut se faire côté serveur, cela permet à un utilisateur de bénéficier d’une fonctionnalité antispam même depuis des clients non ğxcli.
  • fonctionnalités bonus
    • informations de profil importés depuis césium+
    • contacts xmpp ajoutés automatiquement depuis les certifications en toile de confiance
    • créer des groupes de discussion dédiés aux groupes locaux, aux ğmarchés…

À terme, cela permettrait par exemple d’ouvrir des instances ğMovim qui communiquent entre elles et appliquent leurs règles de modération. On pourrait ainsi fermer le forum monnaie libre au profit d’une solution décentralisée.

On pourrait également brancher les systèmes de notifications de Ğchange, Césium+, DeathRipper ou autre pour notifier les gens de la réception d’un virement, ou d’une certification, d’un message, de l’expiration de l’adhésion, d’une petite annonce… On pourrait brancher le bot Ğ1SMS pour gérer un compte par message, ou BoĞ pour monitorer des choses par message. Bref, les applications ne manquent pas et peuvent être développées plutôt facilement une fois le système en place.

L’avantage de s’appuyer sur un protocole aussi bien installé 1 est qu’il existe une immense variété de serveurs et de clients de telle sorte que tout le monde y trouve son bonheur. C’est très différent de l’approche qu’on a jusque là avec Discourse, Rocketchat ou les clients custom où on enferme ou exclut les utilisateurs à cause de solutions centralisées ou trop compliquées à mettre en place.


1 et éventuellement IMAP/SMTP pour Thunderbird / DeltaChat mais administrer un serveur mail est quand même bien plus compliqué qu’un serveur xmpp

3 « J'aime »

J’ai un peu de mal à voir l’idée. Par exemple, de quelle clé parles-tu ici ? D’autres parts, tu sembles indiqué que c’est le serveur qui génère et communique le mot de passe à l’utilisateur, ce qui me semble très étrange, pourquoi ce choix ?

Je parle de la clé choisie par l’utilisateur qui souhaite créer un compte et avec laquelle il signe son message. Ça peut être sa clé membre par exemple.

Le mot de passe est la méthode d’authentification implémentée dans tous les clients. L’utilisateur peut toujours changer ce mot de passe par le suite depuis le client de son choix.