基於數字證書副署機製的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, 淨化網絡環境的效果.