web-dev-qa-db-fra.com

Comment WhatsApp envoie-t-il des messages chiffrés de bout en bout dans les notifications Push?

WhatsApp a implémenté le chiffrement de bout en bout ( livre blanc ) dans leur dernière mise à jour.

Comment est-il possible pour WhatsApp d'envoyer des notifications Push avec le contenu du message au service de notification Push Apple Apple $ ===?

Une solution possible serait d'envoyer le message non chiffré aux APN à partir de l'application elle-même, mais cela serait sujet à des abus et irait à l'encontre de l'objectif du chiffrement de bout en bout.

Mise à jour:
Je viens de le tester un peu plus, selon la documentation d'Apple:

Cependant, le système ne lance pas automatiquement votre application si l'utilisateur l'a forcée à la quitter. Dans ce cas, l'utilisateur doit relancer votre application ou redémarrer l'appareil avant que le système ne tente de relancer automatiquement votre application.

Ce que j'ai testé et qui m'a permis de recevoir toujours les notifications Push en texte brut. Cela m'amènerait à croire que l'application ne fonctionne pas en arrière-plan pour décrypter les notifications reçues, puis les republier.

Mise à jour mai-2017:

J'ai maintenant utilisé l'API VoIP (comme mentionné dans les réponses ci-dessous) pour atteindre efficacement le même résultat moi-même dans une application de démonstration. Fonctionne très bien.

Mise à jour juillet-2017:

Apple n'autorise plus l'utilisation de l'API pour les notifications Push des applications non VOIP. Ils permettent cependant à WhatsApp de le faire dans leur équité infinie.

Mise à jour de septembre 2018:

Une extension d'application de notification peut désormais être utilisée pour décrypter les notifications Push. Cependant, les bibliothèques dynamiques sont déconseillées dans ces extensions, vous devez donc avoir une base de code qui peut être compilée statiquement pour le déchiffrement, etc.

71
Antwan van Houdt

WhatsApp pourrait utiliser le mode d'arrière-plan VOIP avec PushKit pour résoudre ce problème.

Les push VoIP sont:

  • livré directement à l'application.
  • considérées comme des notifications hautement prioritaires et sont transmises sans délai.
  • livré même si l'application a été forcée de quitter l'utilisateur.

Pour plus de détails, reportez-vous à Meilleures pratiques de voix sur IP (VoIP)

Une fois que la charge utile chiffrée de VOIP Push est déchiffrée, ils affichent une "Notification locale" avec le message déchiffré.

Il y a cependant un petit problème, PushKit est disponible uniquement sur iOS 8 et versions ultérieures. Alors, comment Whatsapp le fait-il pour les versions antérieures d'iOS? Et bien non. Ils ne vous permettent pas de voir l'aperçu des messages dans les notifications des versions antérieures à iOS 8 (vérifié sur iOS 7, voir capture d'écran)

Whatsapp Settings in iOS 7

71
Abhay Singh

Ce que vous appelez Push Notifications (ceux que vous voyez dans votre centre de notification) ne sont pas exactement la même chose que Remote Notifications (ceux envoyés via les APN).

Sur Android les deux sont totalement différents. Le premier s'appelle Notification , le second s'appelle Message ou Downstream Message.

Mais de retour sur iOS, l'application peut générer Notifications locales qui s'affichera dans votre centre de notifications. Ceux-ci n'ont pas besoin d'être déclenchés par une notification à distance, c'est à la logique de l'application de le faire et les applications iOS ont la possibilité d'effectuer des tâches d'arrière-plan et une synchronisation qui peuvent générer ces notifications.
Depuis iOS7, une application iOS peut également effectuer des opérations HTTP en arrière-plan pour une durée illimitée (car l'application délègue le transfert réseau au système, qui réveillera l'application pour un montant limité de temps lorsque le transfert est terminé).

Notifications à distance , d'autre part, ont d'abord été conçues pour envoyer un Push directement pour APN à l'utilisateur. Mais Apple a réalisé la nécessité pour les développeurs d'envoyer des notifications Push à leur application plutôt qu'au centre de notification et a ajouté un indicateur silencieux aux notifications à distance pour que le serveur puisse envoyer une notification pour réveiller l'application sans déranger l'utilisateur. L'application effectuera alors une synchronisation et une logique et décidera de créer elle-même Notifications locales ou non (qui s'afficheront dans le centre de notification).
En outre, les notifications à distance ' la charge utile a subi une limite de 256 octets jusqu'à récemment , ce qui a forcé de nombreux développeurs à utiliser ces notifications comme un Push-to- sync plutôt qu'en tant que canal de données.

Si vous me comprenez bien, vous comprenez que Whatsapp n'a pas besoin d'envoyer la charge utile du message dans les notifications à distance à l'aide d'APN.

10
Thibault D.