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