Hé Habr !
Aujourd’hui, je vais parler de ce que mes collègues et moi faisons depuis plusieurs mois : les notifications push pour les messageries instantanées mobiles. Comme je l'ai déjà dit, dans notre application, l'accent est mis sur la sécurité. Nous avons donc examiné si les notifications push présentent des « points faibles » et, si tel est le cas, comment les atténuer afin d'ajouter cette option utile à notre service.
Je publie une traduction de notre
Nous examinons le matériel
Dans le modèle classique, les notifications push rendent les messagers vulnérables aux attaques MITM (Man-in-the-middle). Par exemple, avec Google, Microsoft et l'ancienne version d'iMessage, l'application envoie des clés de chiffrement aux serveurs Apple : sur le serveur, les utilisateurs sont authentifiés et l'en-tête du message (ou son contenu) est déchiffré.
En conséquence, il est possible de lire la correspondance en accédant au serveur de notification push. Cela signifie que tout cryptage de la correspondance est inutile : les notifications push laisseront toujours la possibilité d'être lues par des tiers. Les auteurs de l'article ont discuté de cette possibilité plus en détail.
Si vous pensez que les serveurs Apple et Google sont sécurisés à 100 % contre les fuites de clés de chiffrement des utilisateurs, considérez le fait que leurs employés y ont accès. Et les employés sont des personnes.
Malgré toutes les vulnérabilités des notifications push, de nombreuses messageries instantanées « sécurisées », dont Signal et Telegram, les utilisent. Sinon, les utilisateurs devront surveiller « manuellement » les nouveaux messages en se connectant constamment à l’application. Ce qui est très gênant et les messagers concurrents auront un avantage.
Paranoïa et bon sens
Dans notre projet, nous avons abordé cette question de près il y a plusieurs mois. Nous devions ajouter une option de notification push pour être compétitifs. Mais en même temps, n’ouvrez pas de faille de sécurité, car toute fuite de données saperait la confiance dans le projet.
Cependant, nous avons déjà un avantage important : notre messagerie est décentralisée (les données sont stockées sur la blockchain), et les collaborateurs n'ont pas accès aux comptes. Seuls les utilisateurs disposent de clés de chiffrement, et les clés publiques des interlocuteurs sont disponibles sur la blockchain pour se protéger contre les attaques MITM.
Dans la première version des notifications push, nous avons décidé de jouer la sécurité autant que possible et de ne pas transmettre du tout le texte du message. Le service push n'a pas reçu le texte du message du nœud, mais seulement un signal concernant sa réception. Par conséquent, l’utilisateur a vu la notification « Un nouveau message est arrivé ». Il n'était possible de le lire que dans le messager.
Après cela, nous avons appris que la dernière version des notifications d'Apple comporte de nouvelles fonctionnalités de sécurité. Ils
Nous avons désormais développé la deuxième version des notifications push pour iOS, qui permet d'afficher le texte du message sans risque de sécurité. Dans le nouveau concept, la logique ressemble à ceci :
- Le service push envoie une notification push avec le numéro de transaction (le message crypté peut être très volumineux, et la taille des notifications est très limitée)
- Lorsque l'appareil reçoit une notification, il lance notre NotificationServiceExtension - une microapplication qui demande une transaction au nœud par identifiant, la déchiffre à l'aide de la phrase secrète enregistrée et envoie une nouvelle notification au système. La phrase secrète est stockée dans un stockage sécurisé.
- Le système affiche une notification avec un message décrypté ou une traduction.
- Les touches ne vont nulle part, tout comme le message en texte brut. Le service push n'a aucun moyen de déchiffrer le message.
Nous avons accepté cette version comme fonctionnelle et l'avons implémentée dans la dernière mise à jour de l'application iOS.
Les personnes intéressées par l'aspect technique peuvent consulter le code source :
Source: habr.com