Les deux serveurs XMPP (celui d'Alice et celui de Bob) savent qu'elles adresses XMPP parlent avec qui. Ça, c'est certain.
Cependant, les adresses XMPP dans Silence ne sont pas conçues pour être utilisées dans un autre contexte que dans Silence. Les adresses utilisées sont des UUID : pas de nom.prenom@, pas de 0612345678@. Utiliser un UUID (en fait, utiliser n'importe quoi de généré aléatoirement) permet d'éviter les risques de collision. En effet, si j'utilise la même adresse XMPP dans Silence qu'ailleurs, les risques de collisions sont grands et les attaques rendues moins difficiles.
En outre, aucune info de contacts n'est envoyée via XMPP : la découverte des utilisateurs utilisant Silence se base sur le carnet d'adresses local du téléphone et l'échange de l'adresse XMPP au moment de l'initialisation des sessions chiffrées.
Pour les MMS, c'est également possible en théorie dans Silence. Je suis néanmoins confronté à un problème technique. Historiquement, un message multimédia était échangé en initialisant une connexion directement de l'expéditeur vers le destinataire. Ensuite, le développeur de Conversations a travaillé sur un mécanisme similaire aux MMS, c'est-à-dire l'envoi du fichier multimédia sur un serveur distant, qui sera ensuite récupéré par le destinataire avec les jetons d'authentification transmis par l'expéditeur. Le gros avantage est que cela ne nécessite pas que les deux contacts soient connectés au moment de l'envoi du fichier. Ça, c'est la XEP-0363: HTTP File Upload. Prosody supporte cette XEP (je n'ai pas regardé les autres serveurs). Le problème, c'est que Smack, la bibliothèque utilisée dans Silence pour XMPP, ne supporte pas cette extension.
Pour ce qui est du support multi-appareils, il y a un blocage lié au fait que le numéro de téléphone reste le moyen d'identifier un contact et que l'envoi de SMS ne se fait que vers un seul appareil (Silence reste une application de SMS). C'est mille fois plus facile de ne transmettre qu'un numéro de téléphone plutôt qu'une adresse XMPP (qui plus est, générée aléatoirement). J'avais il y a quelques temps commencé à travailler sur une API REST pour gérer à distance les SMS/MMS du téléphone : un client quelconque peut ensuite se connecter au téléphone pour gérer les SMS/MMS à distance. Je n'ai jamais terminé cette fonctionnalité, et comme ce n'est pas une fonctionnalité si demandée que ça, je me suis concentré sur d'autres choses. L'idée de Silence est vraiment d'être un moyen de communication d'un téléphone vers un autre téléphone. Certes, c'est plus simple d'écrire un long SMS depuis son ordinateur, d'où l'idée de l'API REST.
[^] # Re: My 2 cents
Posté par BastienLQ . En réponse à la dépêche Silence : XMPP, chiffrement et méta‐données. Évalué à 2.
Les deux serveurs XMPP (celui d'Alice et celui de Bob) savent qu'elles adresses XMPP parlent avec qui. Ça, c'est certain.
Cependant, les adresses XMPP dans Silence ne sont pas conçues pour être utilisées dans un autre contexte que dans Silence. Les adresses utilisées sont des UUID : pas de nom.prenom@, pas de 0612345678@. Utiliser un UUID (en fait, utiliser n'importe quoi de généré aléatoirement) permet d'éviter les risques de collision. En effet, si j'utilise la même adresse XMPP dans Silence qu'ailleurs, les risques de collisions sont grands et les attaques rendues moins difficiles.
En outre, aucune info de contacts n'est envoyée via XMPP : la découverte des utilisateurs utilisant Silence se base sur le carnet d'adresses local du téléphone et l'échange de l'adresse XMPP au moment de l'initialisation des sessions chiffrées.
Pour les MMS, c'est également possible en théorie dans Silence. Je suis néanmoins confronté à un problème technique. Historiquement, un message multimédia était échangé en initialisant une connexion directement de l'expéditeur vers le destinataire. Ensuite, le développeur de Conversations a travaillé sur un mécanisme similaire aux MMS, c'est-à-dire l'envoi du fichier multimédia sur un serveur distant, qui sera ensuite récupéré par le destinataire avec les jetons d'authentification transmis par l'expéditeur. Le gros avantage est que cela ne nécessite pas que les deux contacts soient connectés au moment de l'envoi du fichier. Ça, c'est la XEP-0363: HTTP File Upload. Prosody supporte cette XEP (je n'ai pas regardé les autres serveurs). Le problème, c'est que Smack, la bibliothèque utilisée dans Silence pour XMPP, ne supporte pas cette extension.
Pour ce qui est du support multi-appareils, il y a un blocage lié au fait que le numéro de téléphone reste le moyen d'identifier un contact et que l'envoi de SMS ne se fait que vers un seul appareil (Silence reste une application de SMS). C'est mille fois plus facile de ne transmettre qu'un numéro de téléphone plutôt qu'une adresse XMPP (qui plus est, générée aléatoirement). J'avais il y a quelques temps commencé à travailler sur une API REST pour gérer à distance les SMS/MMS du téléphone : un client quelconque peut ensuite se connecter au téléphone pour gérer les SMS/MMS à distance. Je n'ai jamais terminé cette fonctionnalité, et comme ce n'est pas une fonctionnalité si demandée que ça, je me suis concentré sur d'autres choses. L'idée de Silence est vraiment d'être un moyen de communication d'un téléphone vers un autre téléphone. Certes, c'est plus simple d'écrire un long SMS depuis son ordinateur, d'où l'idée de l'API REST.