web-dev-qa-db-fra.com

Comment fonctionne le nouveau protocole de discussion de groupe de WhatsApp et quelles sont ses propriétés de sécurité?

À présent, tout le monde a remarqué que WhatsApp a récemment déployé le cryptage complet de bout en bout , pour la communication directe, pour les pièces jointes multimédias et pour les discussions de groupe .

J'ai lu leur livre blanc (PDF) et j'ai remarqué une différence avec chats de groupe de Signal , où Signal envoie le message de groupe à tous les membres lui-même (avec un drapeau spécial dans l'en-tête chiffré) et WhatsApp envoie le message au serveur qui le distribue.

Maintenant, je ne sais pas comment fonctionne le protocole de chat en groupe de WhatsApp, car il ne peut pas utiliser le protocole simple de personne à personne (comme le fait Signal) et utilise plutôt une dérivation de clé basée sur un "cliquet" quelque peu compliquée (je pense) et ce qui est favorable les propriétés de sécurité sont sacrifiées par WhatsApp.

Quelles sont donc les propriétés de sécurité du protocole de conversation de groupe et comment fonctionne-t-il (à un niveau élevé)?


Parce que les "propriétés de sécurité" sont un peu génériques, voici une liste des propriétés de sécurité que je demande:

  • Sécurité passive (un espion ne peut pas casser le cryptage)
  • Sécurité active (un homme du milieu ne peut pas casser le cryptage sans être remarqué après la première configuration)
  • Forward secrecy (un compromis des clés de chiffrement secrètes d'aujourd'hui ne rompt pas la sécurité des messages enregistrés par l'attaquant)
  • Déni plausible (il n'y a aucune preuve tangible qu'un message spécifique a été envoyé par moi dès que X s'est écoulé)
  • Cohérence de la transcription (il y a une preuve "solide" que tout le monde dans le groupe a vu/voit les mêmes messages)
18
SEJPM

Tout d'abord, de leur papier

Les messages destinés aux groupes WhatsApp s'appuient sur les sessions chiffrées par paire décrites ci-dessus pour obtenir un déploiement efficace côté serveur pour la plupart des messages envoyés aux groupes. Ceci est accompli en utilisant le composant "Sender Keys" du Signal Messaging Protocol.

La première fois qu'un membre du groupe WhatsApp envoie un message à un groupe:

  1. L'expéditeur génère une clé de chaîne aléatoire de 32 octets.
  2. L'expéditeur génère une paire de clés de clé de signature Curve25519 aléatoire.
  3. L'expéditeur combine la clé de chaîne de 32 octets et la clé publique de la clé de signature dans un message de clé d'expéditeur.
  4. L'expéditeur chiffre individuellement la clé de l'expéditeur à chaque membre du groupe, en utilisant le protocole de messagerie par paire expliqué précédemment. Pour tous les messages ultérieurs au groupe:
  5. L'expéditeur dérive une clé de message de la clé de chaîne et met à jour la clé de chaîne.
  6. L'expéditeur crypte le message à l'aide d'AES256 en mode CBC.
  7. L'expéditeur signe le texte chiffré à l'aide de la clé de signature.
  8. L'expéditeur transmet le message texte chiffré unique au serveur, qui effectue un déploiement côté serveur à tous les participants du groupe. Le "cliquet de hachage" de la clé de chaîne de l'expéditeur du message assure la confidentialité du transfert. Chaque fois qu'un membre du groupe part, tous les participants du groupe effacent leur clé d'expéditeur et recommencent.

Je dirais que le point clé ici est le numéro 4: l'expéditeur individuellement chiffre la clé de l'expéditeur à chaque membre du groupe, en utilisant le protocole de messagerie par paire expliqué précédemment

C'est une adaptation intelligente qui s'appuie sur le protocole un-à-un: utilisez-le pour distribuer une clé partagée à chaque membre individuel du groupe, afin que le groupe puisse utiliser le serveur afin de fournir un "fan-out" efficace (ainsi que le stockage d'objets blob) sans que le serveur ait accès aux clés privées requises.

"Quelles sont donc les propriétés de sécurité du protocole de conversation de groupe et comment fonctionne-t-il (à un niveau élevé)?"

Quant à la façon dont cela fonctionne, je pense que le papier est autant de détails que vous trouverez disponible pour l'instant jusqu'à ce que quelqu'un d'autre fasse une analyse complète (appliquée).

Quant aux fonctionnalités qu'il propose ...

  • Secret de retransmission: le mécanisme à cliquet décrit le permet (ou du moins ils le prétendent)

  • Passif: la méthode de distribution "Sender Key" au point 4 rend les attaques passives quasiment impossibles: gardez à l'esprit qu'une partie passive devrait passer à travers la couche de chiffrement des canaux de bruit (vers les serveurs WhatsApp) pour chacune des parties du et nécessiterait probablement plusieurs points de présence, ce qui a facilité l'accès au trafic pour chaque partie du groupe ... de sorte que vous pouvez à peu près exclure quiconque là-bas à moins qu'il ne soit un important fournisseur de dorsale ou NSA.

  • Attaque active: je dirais qu'une attaque par canal latéral sur l'un des appareils du groupe serait faisable, mais si vous avez ce niveau d'accès invasif à l'appareil (et donc probablement à son propriétaire! ), une paire de pinces et 5 minutes avec le propriétaire de l'appareil est susceptible d'être beaucoup plus fructueuse.

  • Cohérence des transcriptions: tous les messages utilisent HMAC pour garantir l'intégrité (étape 7)

  • Déni plausible: si quelque chose, toute la sécurité supplémentaire fournie par leur nouvelle implémentation, il est très difficile de nier qu'un utilisateur particulier a envoyé un message ....

9
Nathan

D'après ce que je peux rassembler dans le livre blanc, les messages de groupe sont cryptés au sein du groupe. Le même Sender Key est distribué et utilisé par chaque participant, ce qui rend le message non authentifié par construction.

Comment le cliquet se synchronise-t-il entre les expéditeurs, aucun indice.

Propriétés:

  • Sécurité passive: oui (un espion ne peut pas casser le cryptage)
  • Sécurité active (un homme du milieu ne peut pas casser le cryptage sans être remarqué après la première configuration): Oui, même s'il essaie d'usurper l'identité du serveur, car le serveur n'obtient jamais aucune clé.
  • Secret de retransmission: oui par le biais de la fonction à cliquet.
  • Déni plausible: Oui, tout le monde signe et crypte avec la même clé symétrique (pour autant que je sache).
  • Cohérence des transcriptions: oui, car ils doivent être informés de la Chain Key changements.

Le livre blanc est loin d'être une description technique du protocole. Je prendrais donc cela avec une extrême prudence.

1
M'vy