Play Integrity API:设备回想抢先体验计划 (EAP)

Play Integrity API 可用作反滥用策略的一部分,以保护您的应用和用户。设备回想是 Play Integrity API 中的一项新功能,让应用能够以保障用户隐私的方式存储和找回与特定设备关联的一些自定义数据。这些数据会存储在 Google 的服务器上,因此即使在重新安装应用或重置设备后,您的应用也能可靠地找回每台设备的数据。例如,您可以使用此功能来找回您发现存在严重滥用行为的设备、已兑换高价值商品(例如免费试用)的设备,或者被反复用于滥用目的创建新账号的设备。设备回想可保护用户隐私,因为请求应用只能找回与设备相关联的有限数据,而无需访问任何设备或用户标识符。

设备回想机制如何运作?

参与抢先体验计划的开发者可以为其 Play Integrity API 响应启用设备回想功能。启用设备回想功能后,您的应用可以为每台设备读取和修改最多 3 个自定义值或“位”。您可以为这些值定义自己的含义;例如,您可以将这些值视为设备的单独开/关标志,也可以将它们组合为八个自定义标签。这些值会存储在服务器端,因此当您为设备修改这些值时,即使应用被卸载并重新安装,或者设备被恢复出厂设置,这些值仍会保留,您仍然可以找回它们。这意味着,您的应用可以修改与设备相关联的值(例如,表示设备已兑换免费试用),并且在将来在同一设备上安装相应应用时,应用会立即读取修改后的值(例如,拒绝提供另一次免费试用)。开启设备回想功能后,您可以执行以下操作:

  • 读取每台设备的数据:每次获得完整性判定结果时,您都可以读取这三个值。设备回想功能适用于 Play Integrity API 的传统请求和标准请求。在标准请求中,设备回想会在预热调用中刷新。换言之,修改每台设备的数据后,您需要再次进行预热才能看到更新后的值。
  • 修改每台设备的数据:获得完整性令牌后,您可以使用该令牌向 Google Play 的服务器发出服务器端调用,以修改一个或多个值。您最多可在 14 天内使用该令牌。例如,如果滥用行为仅在您首次执行完整性检查后的两周内才变得明显,您就可以修改相应值。当您修改某个值时,系统也会存储修改该值的月份和年份。

设备回想注意事项

设备回想有以下前提条件和注意事项:

  • 搭载 Android 13(API 级别 33)或更高版本的设备支持设备回想功能,前提是设备采用的芯片组支持远程密钥预配,且最初搭载的是 Android 12 或更高版本。如果设备回想功能不可用,则每台设备的值和日期将为空。
  • 设备回想功能可用于手机、平板电脑、可折叠设备、电视、汽车和 Wear OS 设备。在 Wear 上,设备回想功能仅适用于搭载 Wear OS 5 或更高版本的设备。
  • 设备回想要求设备上已安装并启用了最新版 Google Play 商店和 Google Play 服务。
  • 设备回想需要用户账号获得 Play 许可,否则判定结果将不予评估。
  • 您 Google Play 开发者账号中的所有应用都可以在每台设备上访问这三个值。换言之,如果您的某个应用修改了其中一个值,那么当您的所有应用安装在同一设备上时,它们都会读取修改后的值。
  • 如果应用从一个开发者账号转移到另一个开发者账号,设备回想功能将反映新开发者账号的每台设备数据,而不是旧开发者账号的每台设备数据。

将设备回想作为防滥用策略的一部分

设备回想最好与其他信号结合使用作为整体防滥用策略的一部分,而不是作为单独的防滥用机制使用。在您的应用中,请结合使用此信号、其他 Play Integrity API 信号以及其他适当的安全性最佳实践

确定如何使用设备回想数据

您可以为组成设备回想数据的三个值定义自己的含义:

  • 您最多可以将它们用作三个单独的标志或布尔值。例如,这些值可以表示设备是否已创建账号、是否已兑换免费试用、是否已知存在严重滥用行为。
  • 或者,您可以将值的所有状态合并到最多 8 个自定义标签中,例如,当所有三个值均未修改时,一个标签用于表示默认状态,而 7 个标签用于表示自定义含义。这样一来,您就可以根据自己定义的行为或操作,将所有设备细分为最多八个组。在此场景中,三个 writeDates 中最近更新的那个会指明您上次更新标签的时间。

您开发者账号中的所有应用在每台设备上共享相同的三个值,因此请为数据定义一个含义,以便在将使用设备回想功能的所有应用中具有意义。

考虑到时间戳,以防设备易主

设备回想包含时间戳,因此您可以将最近修改的数据的优先级设为高于很久之前修改的数据。考虑在足够长的时间段后忽略或重置数据,以考虑设备可能会易主或翻新并转售。

考虑数据擦除策略

如果您需要删除与某个设备关联的所有数据,您的应用可以将该设备上的这三个值都重置为 false。这会自动重置时间戳。

遵循针对 Play Integrity API 的现有建议

除上述做法外,请阅读 Play Integrity API 的安全注意事项

抢先体验设备回想功能

请按照以下步骤开始使用设备回想功能。

第 1 步:查看以下重要注意事项

  • 使用设备回想功能即表示您同意 Google Play 开发者分发协议Play Integrity API 服务条款中的条款。
  • 设备回想只能用于存储和找回信息,以保护应用安全,并减少滥用、欺诈和未经授权的访问。
  • 您不得使用设备回想功能来指纹化或跟踪个别用户或设备。
  • 您不得使用设备回想功能来跟踪敏感的用户或设备特征,例如性别、年龄或位置数据。
  • 为便于满足 Google Play“数据安全”部分中的要求,您可以使用所提供的关于 Play Integrity API 如何处理数据的信息。
  • 我们希望参与抢先体验计划的开发者评估设备回想情况,并向 Google Play 提供有关其评估结果的反馈和信息。
  • 在抢先体验计划期间,设备回想功能可能会发生变化。

第 2 步:申请加入设备回想 EAP

如果您的账号已被选中抢先体验设备回想功能,您会在 Play 管理中心的“Integrity API”页面上看到一个将设备回想添加至 Play Integrity API 响应的新选项,如第 3 步中所述。

如果您尚无法使用设备回想功能,但希望加入抢先体验计划,可以发送电子邮件至 integrity-api-eap@google.com 表达您的意愿,并提供以下信息:

  • 贵公司或贵组织以及您的角色
  • 您的开发者账号 ID 和应用
  • 您是已经集成了 Play Integrity API 还是计划集成 Play Integrity API
  • 您打算如何使用设备回想功能

获准加入抢先体验计划的开发者将获得在 Google Play 管理中心内启用设备回想功能的权限。

第 3 步:通过 Google Play 管理中心在 Integrity API 响应中启用设备回想功能

获准加入抢先体验计划后,您会在 Play 管理中心的“Integrity API”页面上看到一个将设备回想添加至 Play Integrity API 响应的新选项。准备就绪后,即可在 Play 管理中心开启设备回想功能:

  1. 登录 Play 管理中心。
  2. 选择要使用设备回想功能的应用。
  3. 在左侧菜单的发布部分,进入应用完整性
  4. 点击 Play Integrity API 旁边的设置
  5. 在该页面的响应部分,点击更改响应
  6. 开启设备回想功能。
  7. 点击保存更改

当您开启或关闭设备回想功能时,系统会删除您在 Play 管理中心设置的任何 Play Integrity API 测试响应,您必须重新创建这些响应。

第 4 步:将 Integrity API 集成到您的应用和应用的后端服务器

如果尚未这样做,请按照文档中的说明进行设置,并将 Play Integrity API 标准请求传统请求集成到您的应用及其后端服务器。

第 5 步:使用设备回想功能

请按照以下步骤读取和修改设备回想值。

第 5a. 步:读取设备回想值

启用后,Play Integrity API 载荷中的 deviceIntegrity 字段将包含设备回想信息。

"deviceIntegrity": {
  "deviceRecognitionVerdict": ["MEETS_DEVICE_INTEGRITY"],
  "deviceRecall": {
    "values": {
      "bitFirst": true,
      "bitSecond": false,
      "bitThird": true
    },
    "writeDates": {
      // Write time in YYYYMM format in UTC.
      "yyyymmFirst": 202401,
      // Note that yyyymmSecond is not set because bitSecond is false.
      "yyyymmThird": 202310
    }
  }
}

deviceRecall 拆分为两个字段:

  • values:找回之前通过服务器到服务器 API 设置的位值(请参阅第 5b 步)。
  • writeDates:找回以世界协调时间 (UTC) 表示的回想位写入日期,精确到年和月。每次将回想位设置为 true 时,回想位写入日期都会更新;当回想位设置为 false 时,回想位写入日期会被移除。

如果设备回想信息不可用,设备回想值将为空。

"deviceIntegrity": {
  "deviceRecognitionVerdict": ["MEETS_DEVICE_INTEGRITY"],
  "deviceRecall": {
    "values": {},
    "writeDates": {}
  }
}

第 5b. 步:修改设备回想值

您可以通过进行类似于解码完整性判定的服务器到服务器 API 调用来修改设备回想值。将位设置为 true 还会更新其写入日期(即使它已是 true)。将位设置为 false 会将其写入日期重置为空。请求中未指定的任何位都将保持不变。在写入位与能够在判定中读回位之间存在很小的传播延迟。此延迟时间最长可达 30 秒,但通常会更短。

playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \
'{
  "integrityToken": "INTEGRITY_TOKEN",
  "newValues": {
    "bitFirst": true,
    "bitThird": false
  }
}'

第 6 步:向 Google Play 提供抢先体验反馈

抢先体验计划的参与者应报告问题并提供反馈。如需报告有关设备回想或完整性判定的技术问题,请创建问题并按照要求提供所有必需信息。您还可以发送电子邮件至 integrity-api-eap@google.com,提供设备回想反馈。

详细了解 Play 完整性和签名服务,这可帮助您确保用户以您预期的方式来体验应用和游戏。