Sécuriser l'environnement

Google propose un ensemble d'API et de services pour vous aider à détecter si votre application s'exécute dans un environnement sûr et fiable. L'API Play Integrity est au cœur de ce système. Elle permet de vérifier que les interactions sont authentiques en détectant les interactions potentiellement dangereuses et frauduleuses. En plus de l'intégrité des applications et des appareils, l'API Play Integrity fournit désormais des informations sur les risques d'accès et d'accessibilité, sur Google Play Protect et sur l'activité récente de l'appareil. Pour renforcer davantage votre stratégie antifraude, la plate-forme Android propose des API pour des scénarios spécifiques qui peuvent être pertinents pour votre application.

API Play Integrity

Fonctionnalités de l'API Play Integrity

L'API Play Integrity vous permet de connaître l'état de sécurité de l'appareil sur lequel votre application s'exécute. Vous pouvez ainsi vous assurer que l'utilisateur approprié accède aux informations sensibles.

Il vous aide à vérifier que les interactions et les requêtes du serveur proviennent du binaire d'application authentique dans un environnement fiable:

  • Binaire d'application authentique: déterminez si vous interagissez avec le binaire non modifié reconnu par Google Play.
  • Installation Play authentique: déterminez si le compte utilisateur actuel dispose d'une licence, c'est-à-dire si l'utilisateur a installé ou payé votre application ou votre jeu à partir de Google Play.
  • Appareil Android authentique: déterminez si votre application s'exécute sur un appareil Android authentique équipé des services Google Play.
  • Absence de logiciel malveillant connu: déterminez si Google Play Protect est activé et s'il a détecté des applications douteuses ou dangereuses installées sur l'appareil.
  • Faible risque d'accès par d'autres applications: déterminez si d'autres applications en cours d'exécution peuvent capturer l'écran ou contrôler l'appareil et les entrées dans votre application.

Comment cela permet-il de lutter contre la fraude ?

Lorsqu'un utilisateur effectue une action importante dans votre application, vous pouvez appeler l'API Play Integrity. Si ce n'est pas le cas, le serveur backend de votre application peut décider de la marche à suivre pour se prémunir contre les attaques et les fraudes. Par exemple, vous pouvez exiger une validation supplémentaire de l'utilisateur ou refuser l'accès à une fonctionnalité sensible.

Flux de décision de l'API Play Integrity

Risque d'accès à l'appli

Le signal Risque d'accès à l'application a été introduit pour vous aider à évaluer si d'autres applications sur un appareil peuvent afficher et capturer l'écran lorsque votre application est en cours d'exécution ou y accéder à l'aide d'autorisations d'accessibilité. Les applications d'accessibilité validées sont automatiquement exclues de ces évaluations. Le risque d'accès à l'application aide les développeurs à protéger leurs applications tout en préservant la confidentialité des utilisateurs, car l'application à l'origine de la demande n'obtient pas l'identité des applications installées, et l'évaluation n'est pas liée aux identifiants des utilisateurs ou des appareils.

Capture d'écran d'un téléphone demandant à l'utilisateur de fermer certaines applications.

Grâce à cette collaboration, nous pouvons obtenir les signaux nécessaires pour obtenir des insights plus approfondis et protéger plus efficacement nos clients.
—Nubank, partenaire en accès anticipé

Le risque d'accès à l'application comporte différents niveaux de risque:

  • Une réponse de capture signifie que d'autres applications en cours d'exécution peuvent capturer l'écran.
  • Une réponse de contrôle signifie que d'autres applications en cours d'exécution peuvent contrôler l'appareil. Elles peuvent donc à la fois capturer l'écran et contrôler les entrées dans votre application.

Application du risque d'accès à l'application

Identifiez les actions sensibles ou importantes dans votre application ou jeu pour vous protéger avec l'API Play Integrity, au lieu de refuser complètement l'accès. Si possible, vérifiez la légitimité du trafic dangereux avant de lui permettre d'accéder aux actions importantes. Par exemple, lorsque le risque d'accès à l'application indique qu'une application en cours d'exécution pourrait capturer l'écran, demandez à l'utilisateur de désactiver ou de désinstaller les applications qui peuvent capturer l'écran avant de lui permettre d'accéder à une fonctionnalité que vous souhaitez protéger.

Vous trouverez ci-dessous quelques exemples de résultats:

Exemple de réponse d'évaluation du risque d'accès à l'application Interprétation
appsDetected:
["KNOWN_INSTALLED"]
Seules les applications installées sont reconnues par Google Play ou préchargées sur la partition du système par le fabricant de l'appareil. Aucune application en cours d'exécution ne peut entraîner l'évaluation CAPTURING, CONTROLLING ou OVERLAYS.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Des applications sont installées par Google Play ou préchargées sur la partition système par le fabricant de l'appareil. D'autres applications sont en cours d'exécution, dont les autorisations sont activées, peuvent servir à afficher l'écran ou à capturer d'autres entrées et sorties.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Des applications Play ou système en cours d'exécution dont les autorisations sont activées peuvent être utilisées pour afficher l'écran ou capturer d'autres entrées et sorties. D'autres applications en cours d'exécution, dont les autorisations sont activées, peuvent servir à contrôler l'appareil et à commander directement les entrées dans votre application.
appAccessRiskVerdict: {} Le risque d'accès à l'application n'est pas examiné, car une condition requise n'a pas été respectée. Par exemple, l'appareil n'était pas suffisamment fiable.

Signal Play Protect

Le signal Play Protect indique à votre application si Play Protect est activé et s'il a détecté des applications dangereuses connues installées sur l'appareil.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Si les logiciels malveillants constituent un problème particulier pour votre application ou les données de vos utilisateurs, vous pouvez vérifier cette évaluation et demander à vos utilisateurs d'activer Play Protect ou de supprimer les applications dangereuses avant de continuer.

Boîte de dialogue "Activer Play Protect"

playProtectVerdict peut avoir une des valeurs suivantes :

Évaluation Explication Action recommandée

NO_ISSUES

Play Protect est activé et n'a détecté aucun problème d'application sur l'appareil.

Play Protect est activé et n'a détecté aucun problème. Aucune action n'est donc requise de la part de l'utilisateur.

NO_DATA

Play Protect est activé, mais aucune analyse n'a encore été effectuée. L'appareil ou l'application Play Store ont peut-être été réinitialisés récemment.

Play Protect est activé et n'a détecté aucun problème. Aucune action n'est donc requise de la part de l'utilisateur.

POSSIBLE_RISK

Play Protect est désactivé.

Play Protect est activé et n'a détecté aucun problème. Aucune action n'est donc requise de la part de l'utilisateur.

MEDIUM_RISK

Play Protect est activé et a détecté des applications potentiellement dangereuses installées sur l'appareil.

En fonction de votre tolérance au risque, vous pouvez demander à l'utilisateur de lancer Play Protect et de prendre des mesures concernant les avertissements Play Protect. Si l'utilisateur ne peut pas répondre à ces exigences, vous pouvez l'empêcher d'effectuer l'action du serveur.

HIGH_RISK

Play Protect est activé et a détecté des applications dangereuses installées sur l'appareil.

En fonction de votre tolérance au risque, vous pouvez demander à l'utilisateur de lancer Play Protect et de prendre des mesures concernant les avertissements Play Protect. Si l'utilisateur ne peut pas répondre à ces exigences, vous pouvez l'empêcher d'effectuer l'action du serveur.

UNEVALUATED

L'évaluation Play Protect n'a pas été menée.

Plusieurs raisons peuvent expliquer cette situation. Par exemple:

  • L'appareil n'est pas suffisamment fiable.
  • Jeux uniquement: le compte utilisateur n'est pas LICENCIÉ.

Activité récente de l'appareil

Vous pouvez également activer l'option permettant de connaître l'activité récente de l'appareil. Celle-ci indique le nombre de fois où votre application a demandé un jeton d'intégrité sur un appareil spécifique au cours de la dernière heure. Vous pouvez utiliser l'activité récente de l'appareil pour protéger votre application contre les appareils qui enregistrent une forte activité de manière anormale, ce qui peut être le signe qu'une attaque est en cours. Vous pouvez décider du niveau de confiance attribué à chaque niveau d'activité récente de l'appareil en fonction du nombre de fois que vous estimez qu'un jeton d'intégrité devrait être demandé par votre appli installée sur un appareil type au cours de chaque heure.

Si vous acceptez de recevoir recentDeviceActivity, le champ deviceIntegrity aura deux valeurs:

deviceIntegrity: {
  deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
  recentDeviceActivity: {
    // "LEVEL_2" is one of several possible values.
    deviceActivityLevel: "LEVEL_2"
  }
}

Tout d'abord, vous devez vérifier les données pour connaître les niveaux d'activité typiques de votre application sur tous vos appareils. Vous pouvez ensuite décider de la manière dont votre application doit répondre lorsqu'un appareil envoie trop de requêtes. Si l'activité est un peu élevée, vous pouvez demander à l'utilisateur de réessayer plus tard. Si l'activité est très élevée, vous pouvez prendre des mesures d'application plus strictes.

Requêtes standards et classiques

Lors de l'implémentation de Play Integrity, il est important de prendre en compte les deux types de requêtes. Dans la plupart des cas, vous devez utiliser des requêtes standards pour obtenir la réponse la plus rapide. Les requêtes classiques doivent être utilisées lorsqu'une nouvelle requête générée à partir de l'enregistrement d'attestation de l'appareil est nécessaire.

Requête classique

Requête standard

Les requêtes prennent plus de temps et doivent être effectuées moins fréquemment.

Par exemple, pour vérifier de temps en temps si une action particulièrement intéressante ou sensible est légitime.

Utilisez-le rarement.

Les requêtes sont à faible latence et peuvent être utilisées à la demande.

Une requête standard comprend deux étapes :

  • Préparer le fournisseur de jetons d'intégrité (de façon ponctuelle)
  • Demander un jeton d'intégrité (à la demande)

Utiliser à la demande

Pour en savoir plus sur les requêtes standards et classiques, consultez la documentation Play Integrity.

Implémentation

Pour commencer à utiliser l'API Play Integrity:

Par défaut, l'API Play Integrity autorise jusqu'à 10 000 requêtes par application et par jour. Pour demander à augmenter le nombre maximal de requêtes quotidiennes, suivez ces instructions. Pour pouvoir bénéficier d'une augmentation du nombre maximal de requêtes par jour, votre application doit implémenter correctement l'API Play Integrity et être disponible sur Google Play en plus de tout autre canal de distribution.

Points à prendre en compte pour l'API Play Integrity

Protection automatique de l'intégrité (API 23 ou version ultérieure)

La protection automatique de l'intégrité est un service de protection du code contre la falsification qui protège votre application contre les modifications et redistributions non autorisées portant atteinte à son intégrité. Elle fonctionne sans connexion de données et ne nécessite aucun travail de la part du développeur avant l'exécution des tests ni l'intégration du serveur backend.

Comment cela permet-il de lutter contre la fraude ?

Lorsque vous activez la protection automatique de l'intégrité, Google Play ajoute des vérifications au code de votre application et les rend difficiles à supprimer grâce à des techniques avancées d'obscurcissement et de protection contre la rétro-ingénierie. Au moment de l'exécution, la protection vérifie si votre application a été falsifiée ou redistribuée:

  • Si la vérification du programme d'installation échoue, les utilisateurs sont invités à télécharger votre application sur Google Play.
  • Si la vérification des modifications échoue, l'application n'est pas exécutée.

Cela permet de protéger les utilisateurs contre des versions modifiées de votre application.

Implémentation

La protection automatique de l'intégrité n'est actuellement disponible que pour certains partenaires Play. Contactez l'assistance Google Play pour les développeurs si la fonctionnalité n'est pas disponible dans votre Google Play Console et que vous souhaitez y accéder.

Vous pouvez activer la protection lorsque vous créez une version ou sur la page Intégrité de l'application (Version > Intégrité de l'application). La protection automatique de l'intégrité nécessite que votre application utilise la signature d'application Play.

Assurez-vous de tester votre application protégée avant de la publier en production.

À retenir

  • Ne pas publier de versions d'application non protégées
  • Être vigilant lorsque vous associez plusieurs solutions de protection contre la falsification
  • Tester votre application protégée avant de la déployer en production
  • Surveillez les statistiques comme d'habitude pour détecter toute augmentation du nombre de plantages.
  • Vous pouvez signaler les versions craquées de votre application à Google Play.