引言
在海外安卓APP市场,Google Play Integrity API是风控策略的最重要一环。大部分APP风控系统均依赖于这个体系,Play Integrity Check不是一个简单的设备检查,而是一套精密的远程安全证明(Remote Key Attestation) 系统
Play Integrity API 的响应结构(Integrity Verdict)本身就是其技术理念的体现——分层判决。它不是给出一个单一结论,而是提供一组信号,由开发者服务器基于自身风险模型进行最终决策。
技术原理: 其核心依赖于一个由Google硬件根密钥签名的认证链。整个过程可分解为:
应用向设备上的Play服务发起请求,附带一个由服务器生成的、一次性的随机数("nonce")或哈希("requestHash")。此步骤用于防止重放攻击。
Play服务作为可信执行环境(TEE)或StrongBox的调用代理,收集设备硬件、系统状态、应用身份等多种信号。这些信号与"nonce"一起,由一个受硬件保护的密钥进行签名,生成一个完整性令牌(Integrity Token)。
验证通过后,服务器解码令牌中的JSON载荷,并根据其中各个字段的信号进行综合风控判决。
{
"requestDetails": { ... },
"appIntegrity": { ... },
"deviceIntegrity": { ... },
"accountDetails": { ... },
"environmentDetails": { ... }
}
"requestDetails": {
// 代码包名
"requestPackageName": "com.package.name",
// 请求哈希
"requestHash": "aGVsbG8gd29scmQgdGhlcmU",
// 时间戳
"timestampMillis": "1675655009345"
}
技术原理: 这是所有验证的第一道关卡。服务器必须严格比对
"requestPackageName"和
"requestHash"/
"nonce"是否与原始请求一致。
风控意义: 确保返回的判决结果确实是对本次特定请求的响应,有效抵御攻击者截获并重复使用旧令牌的重放攻击(Replay Attack)。
* 技术原理: 此字段直接验证应用本身的二进制身份。
"appRecognitionVerdict"的取值源于与Google Play服务器上的官方记录进行比对。
"PLAY_RECOGNIZED":应用的证书SHA256摘要、包名和版本号与Play商店中最新或允许的版本完全匹配。这证明了应用未被篡改、重打包或替换签名。
"UNRECOGNIZED_VERSION":证书或包名可能有效,但版本不符(如安装的是非官方渠道的修改版)。
风控意义: 这是对抗重打包应用(Repackaged App) 和木马植入的第一道防线。对于金融、支付等核心场景,应强制要求"PLAY_RECOGNIZED"。
"deviceIntegrity": {
// "MEETS_DEVICE_INTEGRITY" is one of several possible values.
"deviceRecognitionVerdict": ["MEETS_DEVICE_INTEGRITY"]
}
这是最复杂且最核心的部分,采用了一种标签化(Label-based) 的信任模型。
技术原理: 系统通过多个维度评估设备环境:
硬件支持验证: 检查是否具备硬件支持的密钥认证(如TEE),"verifiedBootState"是否为"Verified","deviceLocked"是否为
"true"。这是"MEETS_DEVICE_INTEGRITY"的基础。
模拟器检测: 纯软件模拟器通常无法通过硬件验证,因此无法获得"MEETS_DEVICE_INTEGRITY"标签。"MEETS_VIRTUAL_INTEGRITY"则为Google认可的安全模拟器提供了出路。
标签体系解析:
"MEETS_BASIC_INTEGRITY":最低限度信任。 设备可能已解锁Bootloader或系统未认证,但系统内核未被严重破坏(无Root)。可用于过滤掉最粗糙的篡改。
重点参考:KeyAttestion验证是否为合法谷歌颁发证书,且未吊销。非模拟器设备,ROM为经过谷歌GMS认证的设备系统。(主要通过Build信息和系统签名来判断)
参考意义:依据谷歌的说法,如果获得此项检测,则至少说明设备应该获取到GMS验证
"MEETS_DEVICE_INTEGRITY":核心信任等级。 意味着设备是正版硬件,引导加载程序已锁定,运行的是经过认证的系统映像。这是绝大多数安全操作的必要条件。
重点参考:证书的rootOfTrust结构,确保该设备BL未被解锁
"MEETS_STRONG_INTEGRITY":最高信任等级。 在"MEETS_DEVICE_INTEGRITY"基础上,还要求系统在过去一年内接收过安全更新。这旨在排除那些长期不更新、存在已知漏洞的设备。
重点参考:Build.SECURITY_PATCH,证书里面的补丁版本信息
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2025-9-30 18:36
被恋空编辑
,原因: 1