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écurisé et fiable. La pièce maîtresse est l'API Play Integrity, qui permet de vérifier l'authenticité des interactions en détectant les interactions potentiellement risquées et frauduleuses. En plus de l'intégrité des applications et de l'appareil, l'API Play Integrity propose désormais des informations sur les risques d'accès et d'accessibilité, Google Play Protect et l'activité récente de l'appareil. Afin de renforcer davantage votre stratégie antifraude, la plate-forme Android propose des API pour des scénarios spécifiques susceptibles d'ê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 leur application s'exécute. Vous pouvez ainsi être sûr que le bon utilisateur accède aux informations sensibles.

Il vous permet de vérifier que les interactions et les requêtes de serveur proviennent de votre 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 sur 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 à risque 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.

En quoi cela permet-il de limiter 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 protéger contre les attaques et la fraude. Par exemple, vous pouvez exiger une vérification supplémentaire de l'utilisateur ou refuser l'accès à des fonctionnalités sensibles.

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 d'un appareil pouvaient 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 des applications 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 associé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 sommes en mesure d'obtenir les signaux nécessaires pour obtenir des insights plus détaillés afin de protéger nos clients plus efficacement.
— Nubank, partenaire en accès anticipé

Le risque d'accès à l'application présente 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.

Le risque d'accès à l'application est actuellement disponible en version bêta publique et sera généralisé dans les mois à venir.

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.

Ce tableau contient 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 système par le fabricant de l'appareil. Aucune application en cours d'exécution n'entraîne des évaluations de la capture, du contrôle ou des superpositions.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Des applications sont installées par Google Play ou préchargées sur la partition du système par le fabricant de l'appareil. D'autres applications en cours d'exécution et dont les autorisations sont activées peuvent être utilisées pour afficher l'écran ou capturer d'autres entrées et sorties.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Des autorisations activées sur Play ou un système en cours d'exécution 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 être utilisées pour contrôler l'appareil et contrôler directement les entrées dans votre application.
appAccessRiskVerdict: {} Le risque d'accès à l'application n'est pas évalué, 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 sont particulièrement préoccupants pour votre application ou les données de vos utilisateurs, vous pouvez vérifier ce verdict et demander à vos utilisateurs d'activer Play Protect ou de supprimer les applications dangereuses avant de continuer.

Activer la boîte de dialogue 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 remplir ces conditions, 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 remplir ces conditions, 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 LICENSED.

Activité récente de l'appareil

Vous pouvez également activer l'activité récente de l'appareil, qui vous 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 hyperactifs inattendus, qui peuvent indiquer une attaque active. Vous pouvez décider du niveau de confiance de chaque niveau d'activité récente de l'appareil en fonction du nombre de fois où vous pensez que votre application installée sur un appareil standard demandera un jeton d'intégrité 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é habituels 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 coercitives plus strictes.

Requêtes standards et requêtes 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 fournir la réponse la plus rapide. Les requêtes classiques doivent être utilisées lorsqu'une requête nouvellement générée sur l'enregistrement d'attestation d'appareil est nécessaire.

Requête classique

Requête standard

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

Par exemple, pour vérifier de temps en temps si une action sensible ou de grande valeur est authentique.

Utilisation peu fréquente.

Les requêtes présentent une 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)

Utilisation à la demande.

Lisez la documentation Play Integrity pour en savoir plus sur les requêtes standards et classiques.

Implémentation

Pour commencer à utiliser l'API Play Integrity:

Par défaut, l'API Play Integrity autorise jusqu'à 10 000 requêtes par appli et par jour. Si vous souhaitez 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 à retenir concernant l'API Play Integrity

Protection automatique de l'intégrité (niveau d'API 23 ou supérieur)

La protection automatique de l'intégrité est un service de protection contre la falsification du code 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 les tests ni intégration du serveur backend.

En quoi cela permet-il de limiter 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 à l'aide de 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é altéré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 les versions modifiées de votre application.

Implémentation

Pour le moment, la protection automatique de l'intégrité n'est disponible que pour certains partenaires Play. Si la fonctionnalité n'est pas disponible dans la Google Play Console et que vous souhaitez demander à y accéder, contactez l'assistance pour les développeurs Google Play.

Vous pouvez activer la protection lors de la création d'une version ou sur la page Intégrité de l'appli (Version > Intégrité de l'appli). 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 faire passer sa version 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 publier en production
  • Surveillez les statistiques normalement pour détecter toute augmentation du nombre de plantages
  • Vous pouvez signaler les versions craquées de votre application sur Google Play