web-dev-qa-db-fra.com

Comment WhatsApp peut-il restaurer des sauvegardes locales ou Google Drive?

Tout cela ne concerne pas leur protocole de transmission de bout en bout et ma question est principalement Android centric.

Ce que je me demande: lors de la lecture sur le piratage et le décryptage des sauvegardes de bases de données WhatsApp locales, il est mentionné qu'une clé privée dans une zone d'application restreinte est nécessaire depuis Android. Si vous n'avez pas de téléphone rooté, vous ne devriez normalement pas avoir accès à cette clé. Les fichiers de sauvegarde (extension de fichier crypt5-12) sont normalement inutiles sans cette clé.

Lorsque vous changez de téléphone (par exemple, en achetant un nouveau), vous pouvez copier votre _ sdcard/WhatsApp dossier vers le nouveau téléphone et WhatsApp peut décrypter cette sauvegarde si le même numéro est utilisé: la source est ici https://www.whatsapp.com/faq/en/Android/20887921#restore

Première hypothèse: la clé de sauvegarde est également enregistrée sur les serveurs WhatsApp. Sinon, une sauvegarde de téléphone à téléphone local ne fonctionnerait pas?

Deuxième hypothèse: le pire est donc que si vous sauvegardez sur Google Drive, WhatsApp a théoriquement accès (?) À votre sauvegarde (espérons-le cryptée) et également accès à la clé de cryptage/décryptage sur leurs serveurs. Ou existe-t-il au moins une séparation entre Google Drive non lisible par WhatsApp lui-même? Quelqu'un a-t-il plus de détails?

Un dernier mot sur le protocole de chiffrement end2end: il semble inutile (pas contre les pirates informatiques normaux, mais je pense contre la surveillance américaine) quand au moins un de vos amis fera une sauvegarde Google Drive de leur chat (l'historique des chats est récupérable).

19
therealmarv

Première hypothèse: la clé de sauvegarde est également enregistrée sur les serveurs WhatsApp. Sinon, une sauvegarde de téléphone à téléphone local ne fonctionnerait pas?

TL; DR: Oui, après une enquête, cela semble être le cas.

Appareils secondaires

Le protocole est assez compliqué et ne se limite pas à WhatsApp, mais fonctionne généralement comme ceci; Le téléphone qui utilise l'application de chat s'appelle premier appareil. Cet appareil est l'appareil tout-puissant qui stocke toutes les données sensibles comme les clés d'identité privées, les mots de passe de connexion, les clés de cryptage locales, les clés de cryptage des pièces jointes, etc. Tous les autres appareils sont appelés deuxièmes appareils, cela inclut WhatsApp Web et le bureau clients. Ces clients sont essentiellement stupides.

Chaque fois qu'un nouveau périphérique apparaît, il doit d'abord être authentifié via le premier périphérique. WhatsApp le fait en utilisant un code QR initial (d'autres applications utilisent des jetons SMS), puis via un ensemble de preuves. Finalement, le premier appareil décide si un appareil secondaire est autorisé à contrôler les données sensibles. Si c'est le cas, le deuxième appareil reçoit ces clés sur demande. Avec ces clés, le deuxième appareil peut télécharger le fichier de contact et le déchiffrer à l'aide de la clé demandée. La même chose fonctionne pour tous les messages multimédias. ne note pour WhatsApp spécifique: ces demandes de clés sont très courtes et sont donc des clients secondaires requis pour demander régulièrement au premier appareil une nouvelle clé pour accéder aux données. Cela provoque l'alerte ennuyeuse ' Téléphone non connecté' sur le Web WhatsApp.

Chaque fois que vous installez WhatsApp sur un nouveau téléphone, tout ce processus aura lieu et le premier appareil autorisera le nouveau téléphone et verrouillera immédiatement l'une des deux instances actives. Vous avez alors le choix de choisir l'un des téléphones. Si vous choisissez le nouveau téléphone, la propriété de tous les secrets sera transférée au deuxième appareil, qui deviendra alors le premier appareil ce qui rend le cercle complet.

Sauvegardes

Après quelques recherches, décompilation de l'application et exécution de scénarios de test, nous pouvons procéder comme suit: L'application utilise plusieurs bases de données locales (SQLite). Les messages sont stockés dans ces bases de données non chiffrés, et les bases de données elles-mêmes ne sont pas chiffrées non plus. Vous pouvez le vérifier vous-même en téléchargeant les fichiers .db depuis le dossier data /. Il s'agit de l'emplacement de stockage par défaut pour WhatsApp en mode exécution, et n'est pas crypté pour des raisons de performances très probablement. Les applications normales ne devraient pas pouvoir accéder aux fichiers .db dans le dossier de données, mais il existe plusieurs solutions de contournement adb.

Les fichiers de base de données, y compris les paramètres et les messages, sont sauvegardés dans Google Drive (si vous choisissez de le faire). L'application peut demander un verrou sur le dossier dans Google Drive pour empêcher les utilisateurs de télécharger ou d'accéder à la sauvegarde. Les bases de données de messages envoyées à l'emplacement de sauvegarde à distance sont les fichiers msgstore.db.crypt[0-12], Où le dernier chiffre indique la version du protocole. Les bases de données sont cryptées avec une clé stockée dans le dossier de données. Cette clé est en effet stockée sur le serveur WhatsApp.

Deuxième hypothèse: le pire est donc que si vous sauvegardez sur Google Drive, WhatsApp a théoriquement accès (?) À votre sauvegarde (espérons-le cryptée) et également accès à la clé de cryptage/décryptage sur leurs serveurs. Ou existe-t-il au moins une séparation entre Google Drive non lisible par WhatsApp lui-même? Quelqu'un a-t-il plus de détails?

Au moment où vous installez un nouvel appareil et configurez votre compte Google, les fichiers peuvent être demandés par l'application et configurés sur l'appareil local. Cela inclut la base de données axolotl contenant la clé d'identité qui est nécessaire pour prouver votre identité aux autres. La clé de déchiffrement est récupérée après la preuve de la propriété du numéro de téléphone (nom d'utilisateur) sur l'instance WhatsApp nouvellement installée. En théorie, WhatsApp devrait pas être en mesure d'accéder à ces fichiers, mais uniquement vous et Google. Bien sûr, WhatsApp pourrait télécharger les fichiers et les envoyer vers un autre emplacement. Mais à un moment donné, nous devons faire confiance à l'application, surtout si elle n'est pas open source.

WhatsApp effectue également des sauvegardes locales, généralement deux fois par jour sur sdcard/whatsapp. Ces sauvegardes locales contiennent également la clé d'identité et les bases de données de stockage des messages, et sont en fait cryptées. Une fois de plus, la clé de cryptage est stockée sur le serveur distant avec votre profil WhatsApp. Cela explique pourquoi vous pouvez déplacer l'intégralité du dossier de sauvegarde WhatsApp d'un appareil à un autre. Sans numéro de téléphone vérifié, vous ne pouvez pas lire les fichiers de sauvegarde ou utiliser la clé d'identité, mais tout appareil enraciné peut donner un accès facile aux fichiers de base de données originaux et non chiffrés.

Un dernier mot sur le protocole de chiffrement end2end: il semble inutile (pas contre les pirates informatiques normaux, mais je pense contre la surveillance américaine) quand au moins un de vos amis fera une sauvegarde Google Drive de leur chat (l'historique des chats est récupérable).

L'histoire ne s'améliore pas à partir de ce point, car nous savons que Google et d'autres sociétés telles que Facebook et WhatsApp fournissent des fichiers sur demande en vertu de la loi FISA. Il n'est pas nécessaire de frapper à la communication de bout en bout car il y a déjà une "porte dérobée". E2E protège uniquement contre les adversaires actifs sur le canal de communication, qui ne possèdent pas le pouvoir d'exiger des fichiers de sauvegarde de la partie et la clé de déchiffrement de l'autre.

Fenêtre d'attaque

Supposons que nous examinions la situation d'un attaquant non gouvernemental ou "normal" avec des ressources limitées, alors l'appareil est la faiblesse évidente. Toute application disposant de privilèges root peut également accéder aux bases de données, copier des clés, etc. Les ROM par défaut Android contiennent de nombreuses applications exécutées sous l'utilisateur système, mais également les applications du fournisseur fournies avec la ROM (et les mises à jour) sont protégées contre l'intervention de l'utilisateur, et exécutez donc comme système.

Les applications malveillantes ne sont pas sans risque non plus. Avec les autorisations appropriées, ils ont un contrôle total sur le stockage de la carte SD et peuvent accéder aux sauvegardes chiffrées. Lorsque la vérification SMS est interceptée au bon moment (connexion à l'appel de réception SMS) et que le numéro de téléphone est copié, il devrait être possible d'activer une instance WhatsApp auto-contrôlée et de recevoir le clé de déchiffrement de la base de données. L'attaque devient encore plus plausible si l'adversaire contrôle les communications mobiles (ce que font souvent les gouvernements).

L'attaque adb est encore pire car elle ne nécessite pas d'autorisations root. Fondamentalement, une attaque de déclassement est possible lorsqu'une ancienne version de WhatsApp est installée via l'interface de pont. Ce soi-disant WhatsApp hérité peut être piégé dans une sauvegarde complète de l'application, résultant en une archive tar. L'archive tar est tirée côté serveur adb et extraite. Une fois correctement préparé, il faudrait un câble USB et quelques secondes.

17
Yorick de Wid