跳到主要内容
  1. 所有文章/

关于 Google Play 保护机制和 DRM 安全等级的那些事

·1866 字·约 4 分钟

GMS/GSF 简介 #

Google 的 GMS 服务(Google Mobile Service)和 GSF 服务(Google Service Framework)是 Android 设备上不可缺失的重要核心功能的一部分

  • GMS 服务 为 Android 设备带来对 Google 一系列 App 和 API 的支持,如:Gmail、Chrome 、Youtube、Google Maps、Play Store 等应用程序和服务;
  • GSF 服务 我们习惯称之为‘Google 服务框架’,是确保 Google 其他服务能够完好运行的基础

世界各地的 Android 设备制造商都可以选择在设备上选择预装 Google 热门应用,Google 的 Android 团队会对这些设备进行认证,以确保它们收到安全保护,并能正常安装和运行来自 Google 和 Play Store 的应用,了解 Google Play 保护机制

在中国大陆销售的 Android 设备,大多数品牌选择预装最基础的 GMS 服务(默认冻结,更新或安装 Google Play Store 即可激活),如小米/红米绝大部分机型、一加全部机型、被制裁前的华为手机的大部分机型等。预装有 GMS 服务的设备一般都已经送过 Google 的 Android 团队进行检测,并确保它们通过了 GSF 认证,这样的话当我们激活了设备上的 GMS 服务时,我们应该可以在 Play Store 的 设置关于 页面的 Play 保护机制认证 栏看到 设备已通过认证 的字样。

需要注意的一点是,对于小米/红米的 MIUI 系统,当你切换了开发版(内测版) 系统后,该认证就会失效,因为开发版(内测版) 系统更新更频繁,不可能每次更新都去过测认证的;除此外,在一些设备上我们解锁了 Android 设备的 Bootloader 锁或者刷入了自定义 ROM(第三方 ROM)后该认证也会失效。安装有 GSF 服务的 Android 设备里都有个特定的 GSF ID,它在 系统变更GSF 服务 被清除数据后进行变更,可能会导致 Google Play 保护机制认证不通过。

Netflix 无法下载
Netflix 无法下载

Widevine DRM 安全等级 #

大部分 Android 设备还有个 Widevine DRM 安全等级,它一般按照 L1~L3 等级区分:

  • Security Level 1 (L1):完全在可信执行环境 TEE(Trusted Execution Environment)中进行视频处理和加密,此级别是指硬件级 DRM
  • Security Level 2 (L2):加密仍在 TEE 中执行,视频处理通过单独的视频软件或硬件完成,此级别仍是指硬件级 DRM
  • Security Level 3 (L3):该设备不存在 TEE 环境,解密过程直接在浏览器中进行,此级别是指软件级 DRM

更高的 Widevine DRM 安全等级有什么用呢?

包括 Amazon Prime VideoBBCHuluNetflixSpotifyDisney+ 等在线流媒体平台使用 Widevine DRM 来管理优质内容的分发,并且锁定某些智能手机以不高于 480p 的分辨率播放电影或电视节目,锁定的原因是这些服务受到数字版权管理 (DRM)的保护,以防止这些视频文件的复制和未经授权的重新分发。

为了确保 Android 智能手机和许多其他设备免受盗版的侵害,这些流行的流媒体服务使用了 Google 的 Widevine DRM 平台,Widevine Cloud Licensing Service 由 Google 直接运营

开始动手 #

首先在 这里 可以使用设备型号或者设备代号检索你的 Android 设备是否已通过认证(下载 CSV 表格 查看)

以我的设备为例
以我的设备为例

以我的参考环境为例:

  • 设备型号:Redmi K30 Pro Zoom Edition(国际版为 POCO F2 Pro)
  • 出厂 Widevine DRM 安全等级 L1
  • 必须 预装 GMS&GSF,且已经通过认证
  • 必须 已解锁 Bootloader
  • 必须 已经刷入 Magisk (以版本号 23.0 为例)
  • 非必须 已经刷入某类原生自定义 ROM
  • 对其他 必须 环境不一样的情况是否起作用不作保证

通过 SafetyNet 认证 #

打开 Magisk 在首页可以看到一个 Check SafetyNet,可以看到

未通过 SafetyNet 检测
未通过 SafetyNet 检测

对于这种情况是由于我刷入了第三方的自定义 ROM,并且拥有一个错误的未经认证的 CTS 配置文件,这个问题会导致 Play Store 上一些 App 或 游戏显示与我们的设备不兼容,要解决这个问题,首先需要对 Google Play Service 开启 Magisk Hide 并且使用 随机包名 伪装来避过检测

Magisk Hide
Magisk Hide

接下来我们直接在 Magisk 模块仓库搜索并安装 MagiskHide Props Config 这个模块

MagiskHide-Props-Config
MagiskHide-Props-Config

完成后重启设备再次打开 Magisk 的 Check SafetyNet,应该可以看到通过证明了

Pass SafetyNet
Pass SafetyNet

PS:对于部分小米/红米设备,如果上面步骤仍然修复不了 CTS 配置文件,请考虑使用 XiaomiCTSPass 项目

通过 GSF 认证 #

SafetyNet 认证已经通过了,接下来我们需要来认证自己设备的 GSF 服务,首先在 Play Store 下载一个名为 Device ID 的应用(对于国内用户可以👉 在这下载),打开并复制 Google Service Framework(GSF) 那行的 16 进位数字 ID

gsf-id
gsf-id

  • 打开浏览器
  • 进入 Google GSF ID 注册页面
  • 使用 Google 账号登陆
  • Google 服务框架 Android ID 中粘贴刚才复制的十六进制 ID
  • 完成 进行人机身份验证
  • 最后点击 注册
  • 出现提示 已注册设备(ID 已转换成十进制数)
  • 注册完成

注册 GSF
注册 GSF

后续步骤 #

上面的注册步骤完成了以后,我们需要在系统设置里找到 Google Play Store 强制停止运行、清除该应用所有数据和缓存,现在连上国际互联网以后,稍等几分钟(最长不超过 48 小时),再次打开 Play Store,你应该可以看到 Play 保护机制设备已通过认证

设备已通过认证
设备已通过认证

现在可以搜索到 Netflix 并且没有出现不兼容的警告了

通过认证
通过认证

打开 DRM Info,可以看到我的设备已经恢复出厂的 L1 DRM 安全等级

DRM-L1
DRM-L1

完成,Enjoy!

参考资料 #

Dejavu Moe
作者
Dejavu Moe
Not for success, just for growing.