
Le flux d’ajout de nouveaux membres à un message de groupe WhatsApp est:
- Un membre du groupe envoie un message non signé au serveur WhatsApp qui désigne quels utilisateurs sont des membres du groupe, par exemple, Alice, Bob et Charlie
- Le serveur informe tous les membres du groupe existants qu’Alice, Bob et Charlie ont été ajoutés
- Les membres existants ont la possibilité de décider s’il faut accepter les messages d’Alice, Bob et Charlie, et si les messages échangés avec eux devraient être cryptés
Sans signatures cryptographiques vérifiant un membre existant qui souhaite ajouter un nouveau membre, des ajouts peuvent être faits par toute personne ayant la possibilité de contrôler le serveur ou les messages qui y circulent. En utilisant le scénario fictif commun pour illustrer le chiffrement de bout en bout, ce manque d’assurance cryptographique laisse ouverte la possibilité que Malory puisse rejoindre un groupe et accéder aux messages lisibles par l’homme qui y sont échangés.
WhatsApp n’est pas le seul messager manquant d’assurance cryptographique pour les nouveaux membres du groupe. En 2022, une équipe qui a inclus certains des mêmes chercheurs qui a analysé WhatsApp a constaté que Matrix – une plate-forme open source et propriétaire pour les clients et les serveurs de chat et de collaboration – n’a également fourni aucun moyen cryptographique pour garantir que seuls les membres autorisés se joignent à un groupe. Le Telegram Messenger, quant à lui, n’offre aucun chiffrement de bout en bout pour les messages de groupe, ce qui rend l’application parmi les plus faibles pour assurer la confidentialité des messages de groupe.
En revanche, le Messenger du signal open source fournit une assurance cryptographique que seul un membre du groupe existant désigné comme administrateur de groupe peut ajouter de nouveaux membres. Dans un e-mail, le chercheur Benjamin Dowling, également du King’s College, a expliqué:
Le signal met en œuvre la «gestion des groupes cryptographiques». En gros, cela signifie que l’administrateur d’un groupe, un utilisateur, signe un message dans le sens «Alice, Bob et Charley sont dans ce groupe» pour tout le monde. Ensuite, tout le monde dans le groupe prend sa décision sur qui crypter et qui accepter les messages en fonction de ces messages signés cryptographiquement, [meaning] qui accepter en tant que membre du groupe. Le système utilisé par le signal est un peu différent [than WhatsApp]depuis [Signal] fait des efforts supplémentaires pour éviter de révéler l’appartenance au groupe au serveur, mais les principes de base restent les mêmes.
À un niveau de haut niveau, dans le signal, les groupes sont associés à des listes d’appartenance de groupe qui sont stockées sur le serveur de signaux. Un administrateur du groupe génère une GroupMasterKey qui est utilisée pour apporter des modifications à cette liste d’adhésion de groupe. En particulier, le GroupMasterKey est envoyé à d’autres membres du groupe via le signal, et est donc inconnu du serveur. Ainsi, chaque fois qu’un administrateur souhaite modifier le groupe (par exemple, inviter un autre utilisateur), il doit créer une liste d’adhésion mise à jour (authentifiée avec le groupe de groupe) indiquant aux autres utilisateurs du groupe qui ajouter. Les utilisateurs existants sont informés du changement et mettent à jour leur liste de groupes, et effectuent les opérations cryptographiques appropriées avec le nouveau membre afin que le membre existant puisse commencer à envoyer des messages aux nouveaux membres dans le cadre du groupe.
La plupart des applications de messagerie, y compris le signal, ne certifient pas l’identité de leurs utilisateurs. Cela signifie qu’il n’y a aucun moyen que le signal puisse vérifier que la personne utilisant un compte nommé Alice appartient en fait à Alice. Il est pleinement possible que Malory puisse créer un compte et le nommer Alice. (En passant, et en contraste forte avec le signal, les membres du compte qui appartiennent à un groupe WhatsApp donné sont visibles par des initiés, des pirates et à toute personne ayant une assignation valide.)