基于数字证书副署机制的Android应用追溯

目前, 关于移动终端/智能手机中的恶意应用的报道频现, 手机用户惴惴不安, 央视也就此话题多次进行了相关专题报道. 本文针对安卓手机应用, 提出一种利用数字证书的副署机制, 通过对APK整个发布周期的各个环节进行带时间戳的副署签名的方式, 达到所有环节可验证, 可追溯的效果.

基本流程图如下:
APK签名流程

效果:

  • 不改变APK的文件结构;
  • 原有APK的安装模式和安全机制没有任何改变(无前提条件, 完全透明);
  • 任何一个环节, 只要进行了副署, 就可以成为一个可追溯的环节;
  • 追溯的内容包括: 签名时间, 签名者身份, 签名有效性;
  • 从后端到前端的完整解决方案;

在手机端, 我们开发了一个用于APP追溯的应用, TrustTracker, 该APP的主要目的是为了演示本方案的可行性和有效性.

以下将以界面截图+注释的方式给予说明:

TrustTracker的欢迎界面:
x.m1

主界面:
x.m2
x.m3

TrustTracker自己是一个APP, 我们对它进行了3次副署:

  1. 开发者自己的副署
  2. 模拟检测机构的副署
  3. 模拟应用商店的副署

x.tt1
x.tt2

有了TrustTracker这个工具, 我们就来看看一些主流的应用在APK的签名方面是怎么做的. 以下的截图都是基于我目前的手机中的APP应用.

这是12306的:
x.12306

再看看银行的:
x.gf
x.zs

腾讯:
x.qq
x.wx

百度:
x.baidu

淘宝:
x.taobao

挑个国外的应用看看:
x.quora

安卓系统由于它的开放性, 管理相对苹果公司而言较弱, 基本上是大家自己各行其是, 从TrustTracker提供的信息来看, 中外没啥区别, 即使是一些知名企业/机构发布的应用, 其中的签名证书都不大正规, 甚至部分还有着浓郁的个人色彩. 其中的风险可想而知, 以安卓应用目前的签名机制而言, 甚至可以把别人的APP拿来, 自己修改后重新打包签名, 由于大量使用自签名证书的机制, 不仅用户安装时根本无法鉴别, 专业机构拿到一个APP, 不跟源厂商有沟通协调, 也无法鉴别签名的真假.

本方案所提出的解决方案依托第3方可信的数字证书颁发机构, 由这些数字证书颁发机构向开发者, 检测机构, 应用商店颁发可信的数字证书, 在APK的发布流程的每个环节, 通过使用可信数字证书加以副署机制, 可以达到整个APK发布环节可追溯, 可验证, 从而达到防范恶意APP, 净化网络环境的效果.