關注Android應用安全,應該關注android的簽名機制,平時我們都是使用eclipse直接簽名,不了解簽名的流程機制,我們今天開始了解一下。Android簽名在android應用中扮演著很重要的角色,例如,Android系統禁止更新安裝簽名不一致的APK;如果應用需要使用system權限,必須保證APK簽名與Framework簽名一致,等等。android應用簽名在應用防篡改、防盜版起著著一定的作用,當然要是有權威認證就會更好了。
Android中使用Keytool(用於生成數字證書)和Jarsigner(用於使用數字證書簽名)來給apk包簽名。他們的具體使用方法可參考《Android之APK文件簽名——keytool和jarsigner》。
在反編譯橫行、版權不受保護的情況下,我們可以使用簽名對比來保障Android APK的軟件安全,鑒定應用的安全性,保證我們的應用不被篡改、反編譯。
簽名對比可以使用下面三種方式:
1、 程序自檢測。在程序運行時,自我進行簽名比對。比對樣本可以存放在APK包內,也可存放於雲端。如果放在apk包內,以考慮程序自檢測的功能用native method的方法實現;如果放在雲端可以使用用戶名加簽名的方式,保證每一用戶傳送的內容不一致,否則簡單抓包就暴漏了自檢方式。
2、 可信賴的第三方檢測。由可信賴的第三方程序負責APK的軟件安全問題。對比樣本由第三方收集,放在雲端。這種方式適用於殺毒安全軟件或者Google Play之類的軟件下載市場。缺點是需要聯網檢測,在無網絡情況下無法實現功能。iOS就不必擔心這些,appstore可以保證應用的安全,android沒有統一的應用市場,沒有可信賴的第三方軟件,這是一大軟肋。
3、 系統限定安裝。這就涉及到改Android系統了。限定僅能安裝某些證書的APK。軟件發布商需要向系統發布上申請證書。如果發現問題,能追蹤到是哪個軟件發布商的責任。適用於系統提供商或者終端產品生產商。缺點是過於封閉,不利於系統的開放性。
android應用安全是一個很復雜的問題,開發中要制定安全的通信協議、發布apk時要防反編譯,仿解壓重新編譯,仿破解,開發中要謹小細微的對待每一步。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11