Android APK签名方案新增DRM验证,其原理是什么?

  • 回答 (6)
  • 关注 (0)
  • 查看 (456)

近日得知安卓的APK签名方案有了新的变动,在流程中添加了DRM验证,什么是DRM验证呢?会对开发者和用户产生怎样的影响呢?

看破红尘的黑猫看破红尘的黑猫提问于
阿布回答于

原理可以直接看下官网介绍啊:

https://source.android.com/security/apksigning/

验证

在 Android 7.0 中,可以根据 APK 签名方案 v2(v2 方案)或 JAR 签名(v1 方案)验证 APK。更低版本的平台会忽略 v2 签名,仅验证 v1 签名。

APK签名方案V2过程

APK 签名方案 v2 验证

找到“APK 签名分块”并验证以下内容:

“APK 签名分块”的两个大小字段包含相同的值。

“ZIP 中央目录结尾”紧跟在“ZIP 中央目录”记录后面。

“ZIP 中央目录结尾”之后没有任何数据。

找到“APK 签名分块”中的第一个“APK 签名方案 v2 分块”。如果 v2 分块存在,则继续执行第 3 步。否则,回退至使用 v1 方案验证 APK。

对“APK 签名方案 v2 分块”中的每个 signer 执行以下操作:

signatures 中选择安全系数最高的受支持 signature algorithm ID。安全系数排序取决于各个实现/平台版本。

使用 public key 并对照 signed data 验证 signatures 中对应的 signature。(现在可以安全地解析 signed data 了。)

验证 digestssignatures 中的签名算法 ID 列表(有序列表)是否相同。(这是为了防止删除/添加签名。)

使用签名算法所用的同一种摘要算法计算 APK 内容的摘要

验证计算出的摘要是否与 digests 中对应的 digest 相同。

验证 certificates 中第一个 certificate 的 SubjectPublicKeyInfo 是否与 public key 相同。

如果找到了至少一个 signer,并且对于每个找到的 signer,第 3 步都取得了成功,APK 验证将会成功。

注意:如果第 3 步或第 4 步失败了,则不得使用 v1 方案验证 APK。

是不是没有看到DRM验证?

其实官方也并没有宣称是DRM(数字版权保护)验证,主要是为了保护分发市场的分发的安卓应用的确是未经篡改的程序。

蠢胖胖回答于

据谷歌官方 表示, 引入该机制的一个原因,是为了帮助 开发 者接触到更广泛的用户群体 —— 特别是那些因为连接受限和流量套餐昂贵,而导致 p2p 应用分享变得常见的地区市场。

新机制意味着,无论设备是否在线,都可以认定 app 的真实性。它不仅适用于通过 Play Store 分发的 app,还适用于那些授权的应用分发渠道。(http://tech.ifeng.com/a/20180625/45037252_0.shtml)

可以说通过这种添加的方式对于用户和开发者来说都是件好事情,尤其在中国流量费昂贵的情形下,如何能让原创应用的开发者找到合适的广大的用户群,用户如何可以安全的得到正版应用,是一个有待解决的问题。

板溪回答于

DRM验证也就是Digital Rights Management数字版权管理,主要是为了保护音视频的版权,

所以很多音视频爱好者都对该技术深恶痛绝,但安卓将该项技术用于app签名认证,

目的自然也为了更好地防止app被非法篡改。

值得肯定,个人感觉,不喜勿喷。

wy衡Learn回答于

其实APK签名的改动也是为了应对应用市场上的新变化制定的策略,挺好的

粥蛋蛋回答于
甄三十七寻找冬日里的蓝色牧场回答于

扫码关注云+社区

领取腾讯云代金券