web-dev-qa-db-fra.com

Quels protocoles existent pour le chat de groupe chiffré de bout en bout?

Je recherche des protocoles existants pour une conversation de groupe avec deux choses:

  1. Chiffré de bout en bout. Exactement ce à quoi vous vous attendez: les messages ne sont déchiffrables que par les membres du chat et la falsification des messages est détectée.

  2. Il ne doit pas crypter chaque message pour chaque membre individuellement. Le protocole de signal fait cela, transformant les conversations de groupe en de nombreuses conversations individuelles, ce qui n'est pas une solution appropriée et évolutive au problème. Avec potentiellement des centaines de membres dans un groupe, même le chiffrement d'une clé de chiffrement pour chaque membre est un inconvénient considérable.

Chaque nouveau membre peut recevoir la clé publique de tout le monde lors de son adhésion, et toute clé de groupe doit être tournée lors du départ d'un membre. Cela évolue assez raisonnablement, et il n'y a peut-être pas moyen de contourner cela sans compromettre la sécurité, donc cela est autorisé et ne compte pas comme 'chiffrer chaque message pour tout le monde'.


J'ai cherché des protocoles existants, mais je n'ai trouvé aucun résultat qui réponde à ces exigences. Je pensais avoir lu quelque chose il y a quelques années où le groupe a dérivé une clé commune et utilisé ça ou quelque chose, mais je ne trouve rien de tel.

  • Signal, WhatsApp et Allo utilisent le Signal Protocol qui viole l'exigence # 2 .

  • Tox a ne documentation complète mais je n'arrive pas à trouver comment le cryptage se produit dans un chat de groupe.

  • ne autre source prétend même "vous ne pouvez pas créer des groupes de bout en bout" (même si je suis assez sûr qu'il/elle se trompe).

  • Et enfin, un tas d'autres applications populaires telles que Mumble et XMPP ne peuvent pas faire de bout en bout pour commencer, ou simplement ne prend pas en charge les discussions de groupe telles que Télégramme , Ricochet et ZRTP .

31
Luc

Permettez-moi d'essayer de résumer à quoi ressemble le paysage des protocoles de messagerie chiffrés de bout en bout pour le chat de groupe:

  • Des protocoles comme [~ # ~] pgp [~ # ~] existent depuis un certain temps et offrent une "messagerie de groupe" en cryptant simplement le contenu avec un clé symétrique générée aléatoirement puis chiffrant cette clé de manière asymétrique avec les clés publiques de chacun des destinataires. Ces protocoles n'envoient le contenu chiffré qu'une seule fois, mais chiffrent la clé de chiffrement à chacun des membres du groupe. Notez que de la même manière que PGP, cette approche ne fournit pas de secret de retransmission parfait, de déni ou d'intégrité de conversation (et donc pas de cohérence de transcription).

  • L'OTR a été introduit pour remédier à certaines des lacunes de PGP, améliorant ainsi le secret de transmission parfait, l'intégrité des conversations et le déni. Ian Goldberg, l'auteur d'OTR a également écrit un article sur une variante multipartite du protocole, nommée mpOTR . mpOTR a été conçu avec le transport XMPP à l'esprit et intrinsèquement synchrone dans sa conception, ce qui signifie que chaque membre du groupe doit être en ligne à tout moment pour négocier de nouveaux matériel de saisie. Le protocole décrit ne fournit pas un secret de transmission parfait en session et n'a pas été largement déployé. N + 1Sec est un protocole similaire avec quelques améliorations. Notez que ces protocoles ont beaucoup de complexité algorithmique et ont tendance à mal évoluer, surtout lorsque vous ajoutez de la latence dans le mix.

  • Ensuite, vous avez toute une classe de protocoles, que nous appelons simplement N fois protocoles car ils n'envoient que chaque message. Ces protocoles ont l'avantage de réutiliser un protocole un-à-un existant, ce qui est vraiment pratique lorsque vous avez déjà un canal qui vous offre de belles fonctionnalités telles que le secret de transmission parfait asynchrone. La structure du groupe n'est pas un concept cryptographique dans ce cas, perdant sur les garanties cryptographiques mais diminuant la complexité algorithmique. Le blog d'Open Whisper Systems a excellent article sur la raison pour laquelle Signal fait cela au lieu de la messagerie de style mpOTR. Cette classe de protocoles viole votre deuxième exigence car ils sont ce que nous appelons "fan-out côté client" où le client crypte et envoie tous les différents messages.

  • Il existe une optimisation sur Signal qui a été adoptée par WhatsApp et que vous pouvez trouver dans leur livre blanc appelé Sender Keys qui a "fan-out côté serveur". Il utilise N fois lors de la configuration, mais après le premier message, chaque membre du groupe peut envoyer un seul message au groupe. Ce protocole a un secret de transmission parfait en utilisant un cliquet de hachage (mais ne fournit pas un secret parfait à l'avenir). La cohérence de la transcription est appliquée par le côté serveur (parce que le fan-out côté serveur), mais pas d'un point de vue cryptographique.

Ce sont les types de protocoles que j'ai vu être mis en œuvre. Il y a des défis, à la fois dans l'utilisabilité et la recherche cryptographique sur la façon de combiner l'asynchronisme avec un futur secret parfait et la cohérence de la transcription dans le cadre du groupe.

Si vous voulez un protocole qui réponde à vos deux exigences, je pense que quelque chose comme la variante Sender Keys du protocole Signal est ce que vous recherchez.

37
FredericJacobs

Peut-être arbre à cliquet asynchrone est ce que vous demandez.

Vous pouvez également consulter Messaging Layer Security :

Messaging Layer Security (MLS) est un groupe de travail de l'IETF qui construit un protocole de messagerie de groupe moderne, efficace et sécurisé.

2
cbwang