保护环境

Google 提供了一组 API 和服务,可帮助您检测您的应用程序是否在安全可信的环境中运行。核心是 Play Integrity API,它通过检测潜在的风险和欺诈性互动来帮助检查互动是否真实。除了应用程序和设备完整性外,Play Integrity API 现在还提供有关 访问和可访问性风险Google Play Protect最近的设备活动 的信息。为了进一步加强您的反欺诈策略,Android 平台为可能与您的应用程序相关的特定场景提供了 API。

Play Integrity API

Play Integrity API features

使用 Play Integrity API,您可以了解其应用程序运行的设备的安全状态。这有助于您确信正确的用户正在访问敏感信息。

它可以帮助您检查互动和服务器请求是否来自您在可信环境中的原始应用程序二进制文件。

  • 原始应用程序二进制文件:确定您是否正在与 Google Play 识别的未修改二进制文件进行互动。
  • 原始 Play 安装:确定当前用户帐户是否已获得许可,这意味着用户已在 Google Play 上安装或付费购买您的应用程序或游戏。
  • 原始 Android 设备:确定您的应用程序是否运行在由 Google Play 服务支持的原始 Android 设备上。
  • 没有已知恶意软件:确定 Google Play Protect 是否已开启以及它是否已找到安装在设备上的危险或危险应用程序。
  • 低风险被其他应用程序访问:确定是否正在运行其他应用程序,这些应用程序可能会捕获屏幕或控制设备以及对应用程序的输入。

如何帮助减少欺诈

当用户在您的应用程序中执行重要操作时,您可以调用 Play Integrity API。如果没有,那么应用程序的后端服务器可以决定采取哪些措施来防御攻击和欺诈。例如,您可以要求额外的用户验证或拒绝访问敏感功能。

The Play Integrity API decision flow

应用程序访问风险

应用访问风险信号已推出,可帮助您评估设备上的其他应用是否可以在您的应用运行时查看和捕获屏幕,或使用辅助功能权限访问您的应用。经过验证的辅助功能应用将自动从这些判决中排除。应用访问风险有助于开发人员保护其应用,同时维护用户隐私,因为请求应用不会获取已安装应用的身份,并且判决不会与用户或设备标识符相关联。

Screenshot of phone requiring the user to close certain apps.

通过这种合作努力,我们能够获得所需的信号,以便更深入地了解如何更有效地保护我们的客户。
——Nubank,早期访问合作伙伴

应用访问风险具有不同的风险级别

  • 捕获响应意味着正在运行可以捕获屏幕的其他应用。
  • 控制响应意味着正在运行可以控制设备的其他应用,因此它们既可以捕获屏幕,也可以控制输入到您的应用。

应用访问风险现已在公开测试版中提供,将在未来几个月内全面推出。

应用访问风险执行

使用 Play Integrity API 识别应用或游戏中需要保护的高价值或敏感操作,而不是直接拒绝访问。如果可能,在允许高价值操作继续之前,挑战有风险的流量。例如,当应用访问风险表明正在运行可以捕获屏幕的应用时,请要求用户在允许他们继续执行要保护的功能之前禁用或卸载可以捕获屏幕的应用。

此表包含一些示例判决

示例应用访问风险判决响应 解释
appsDetected
["KNOWN_INSTALLED"]
只安装了 Google Play 识别或设备制造商在系统分区上预加载的应用。没有正在运行的应用会导致捕获、控制或覆盖判决。
appsDetected
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
有 Google Play 安装或设备制造商在系统分区上预加载的应用。正在运行其他应用,并且启用了可能用于查看屏幕或捕获其他输入和输出的权限。
appsDetected
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
有 Play 或系统正在运行,这些系统启用了可能用于查看屏幕或捕获其他输入和输出的权限。还有其他正在运行的应用,这些应用启用了可能用于控制设备并直接控制输入到您的应用的权限。
appAccessRiskVerdict: {} 由于缺少必要的条件,未评估应用访问风险。例如,设备不够可靠。

Play Protect 信号

Play Protect 信号会告诉您的应用 Play Protect 是否已开启,以及是否已发现设备上安装了已知的有害应用。

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

如果恶意软件对您的应用或用户的數據特别令人担忧,您可以检查此判决并要求用户在继续之前打开 Play Protect 或删除有害应用。

Turn on Play Protect dialog

playProtectVerdict 可以具有以下值之一

判决 解释 推荐操作

NO_ISSUES

Play Protect 已开启,并且未在设备上发现任何应用问题。

Play Protect 已开启,并且未发现任何问题,因此不需要用户操作。

NO_DATA

Play Protect 已开启,但尚未执行扫描。设备或 Play 商店应用可能最近重置。

Play Protect 已开启,并且未发现任何问题,因此不需要用户操作。

POSSIBLE_RISK

Play Protect 已关闭。

Play Protect 已开启,并且未发现任何问题,因此不需要用户操作。

MEDIUM_RISK

Play Protect 已开启,并且已发现设备上安装了潜在有害的应用。

根据您的风险承受能力,您可以要求用户启动 Play Protect 并对 Play Protect 警告采取措施。如果用户无法满足这些要求,您可能会阻止他们进行服务器操作。

HIGH_RISK

Play Protect 已开启,并且已发现设备上安装了危险应用。

根据您的风险承受能力,您可以要求用户启动 Play Protect 并对 Play Protect 警告采取措施。如果用户无法满足这些要求,您可能会阻止他们进行服务器操作。

UNEVALUATED

未评估 Play Protect 判决。

这可能由于以下原因造成:

  • 设备不够可靠。
  • 游戏专属:用户帐户未经许可。

最近的设备活动

您还可以选择加入最近的设备活动,它会告诉您您的应用在过去一小时内在特定设备上请求完整性令牌的次数。您可以使用最近的设备活动来保护您的应用免受意外的、过度活跃的设备攻击,这些设备可能是主动攻击的迹象。您可以根据预期安装在典型设备上的应用每小时请求完整性令牌的次数,决定对每个最近的设备活动级别信任多少。

如果您选择加入接收 recentDeviceActivity,则 deviceIntegrity 字段将具有两个值

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

首先,您应该检查数据以查看您的应用在所有设备上的典型设备活动级别。然后,您可以决定当设备发出过多请求时,您的应用应该如何响应。如果活动稍高,您可能需要让用户稍后重试。如果活动非常高,您可能需要采取更强有力的执行措施。

标准请求与经典请求

在实施 Play Integrity 的过程中,务必考虑两种类型的请求。在大多数情况下,您应该使用**标准**请求以提供最快的响应,而**经典请求**应该在需要针对设备证明记录生成新的请求的情况下使用。

经典请求

标准请求

请求需要更长时间,应该更少地进行。

例如,作为偶尔的一次性操作,以检查高价值或敏感操作是否合法。

不常使用.

请求延迟低,可以按需使用。

标准请求包含两部分

  • 准备完整性令牌提供者(一次性)
  • 请求完整性令牌(按需)

按需使用.

阅读 Play Integrity 文档以获取有关 标准经典 请求的更多信息。

实施

要开始使用 Play Integrity API

默认情况下,Play Integrity API 允许每个应用每天最多 10K 个请求。要表示有兴趣增加您的每日最大请求数,请按照这些说明操作。要符合增加每日最大请求数的资格,您的应用必须正确实施 Play Integrity API 并且必须在 Google Play 以及任何其他分发渠道上提供。

关于 Play Integrity API 需要牢记的事项

自动完整性保护(API >= 23)

自动完整性保护是一种防篡改代码保护服务,它可以保护您的应用免受以未经授权的修改和重新分发形式进行的完整性滥用。它无需数据连接即可运行,并且在测试之前不需要开发人员工作,也不需要后端服务器集成。

如何帮助减少欺诈

当您打开自动完整性保护时,Google Play 会向您的应用代码添加检查,并使用高级混淆和反逆向工程技术使这些检查难以删除。在运行时,保护措施会检查您的应用是否已被篡改或重新分发

  • 如果安装程序检查失败,用户将被提示在 Google Play 上获取您的应用
  • 如果修改检查失败,应用将无法运行

这有助于保护用户免受应用的修改版本。

实施

目前,只有选定的 Play 合作伙伴可以使用自动完整性保护。如果您在 Google Play Console 中没有提供此功能并且您想表示有兴趣获得访问权限,请联系 Google Play 开发人员支持。

您可以在创建版本时或在 应用完整性 页面(版本 > 应用完整性)上打开保护。自动完整性保护要求您的应用使用 Play 应用签名

在将版本推广到生产环境之前,请务必测试您的受保护应用.

需要注意的事项

  • 不要发布未受保护的应用版本
  • 混合使用防篡改保护解决方案时要小心
  • 在将受保护的应用发布到生产环境之前,请对其进行测试
  • 像往常一样监控统计信息,以查看崩溃率是否增加
  • 您可以向 Google Play 报告应用的破解版本