一種Android系統保護方法及裝置的制造方法
【技術領域】
[0001]本發明涉及通信技術領域,尤其涉及一種Android系統保護方法及裝置。
【背景技術】
[0002]0ΤΑ升級是一種常用的終端固件升級方式,用戶可通過0ΤΑ升級進行終端系統固件的升級操作。
[0003]為了增加0ΤΑ升級的安全性,防止將第三方的0ΤΑ升級包刷到Android終端中,0ΤΑ升級前會從recovery鏡像文件中加載公鑰文件,用公鑰文件驗證嵌在0ΤΑ升級包中的簽名信息是否正確,驗證成功后才會執行升級,驗證失敗,則不執行升級操作。
[0004]但是,這種機制并不十分安全,因為如果用戶通過某些方式將自己的終端刷入第三方的recovery鏡像文件,這樣與之對應的0ΤΑ升級包就能通過簽名校驗,實現刷機操作。刷機后,終端廠商預置的應用以及后期升級的應用,刷機的用戶將無法體驗到;同時刷機存在很大風險,非常容易出現機器無法正常使用甚至成磚的情況,不利于用戶使用。
【發明內容】
[0005]本發明提供了一種Android系統保護方法及裝置,避免裝置刷入第三方recovery鏡像文件后通過0ΤΑ升級包刷機,提高了系統的安全性。
[0006]為解決上述技術問題,本發明采用下述技術方案予以實現:
一方面,本發明提出了一種Android系統保護方法,包括下述步驟:
獲取recovery鏡像文件的備份文件,所述recovery鏡像文件的備份文件包含所述Android系統編譯時生成的recovery鏡像文件及其哈希值和文件大小;
判斷系統當前recovery鏡像文件是否被修改;
若是,將所述recovery鏡像文件的備份文件升級至recovery分區。
[0007]另一方面,本發明還提出了一種Android系統保護的裝置,包括:
獲取模塊,用于獲取recovery鏡像文件的備份文件;
判斷模塊,用于判斷系統當前recovery鏡像文件是否被修改;
升級模塊,用于將所述recovery鏡像文件的備份文件升級至recovery分區。
[0008]與現有技術相比,本發明的優點和積極效果是:本發明的Android系統保護方法及裝置,判斷系統當前recovery鏡像文件是否被修改,如果被修改了,則將recovery鏡像文件的備份文件升級到recovery分區,因此,即使用戶通過某些手段刷入了第三方的recovery鏡像文件,也可以將原有的recovery鏡像文件還原回去,避免裝置刷入第三方recovery鏡像文件后通過0ΤΑ升級包刷機,防止用戶因自行刷機出現的無法正常使用甚至變磚的情況的發生,提高了裝置的安全性,既保證了用戶的正常使用,也保證了廠商的利益。
[0009]結合附圖閱讀本發明的【具體實施方式】后,本發明的其他特點和優點將變得更加清
/Η- ο
【附圖說明】
[0010]圖1是本發明提出的Android系統保護方法的一個流程圖;
圖2是本發明提出的Android系統保護方法的另一個流程圖;
圖3是圖2中計算系統當前recovery鏡像文件的哈希值的流程圖;
圖4是本發明提出的Android系統裝置的一個實施例的結構示意圖;
圖5是圖4中判斷模塊的結構示意圖;
圖6是圖4中升級模塊的結構示意圖。
【具體實施方式】
[ΟΟ?? ] 本實施例的Android系統保護方法及裝置,通過判斷recovery分區中的recovery鏡像文件是否被修改,如果被修改了,則將recovery鏡像文件的備份文件升級到recovery分區,避免裝置刷入第三方recovery鏡像文件后通過OTA升級包刷機,提高了系統的安全性。
[0012]為了使本發明的目的、技術方案及優點更加清楚明白,以下將結合附圖和實施例,對本發明作進一步詳細說明。
[0013]本實施例的Android系統保護方法具體包括下述步驟。
[OOM]啟動boot loader (開機引導程序),檢測移動終端觸發進入recovery模式的操作。觸發移動終端進入recovery模式的觸發操作有多種,比如:按下特定的物理按鍵(比如同時按下power鍵和音量下鍵)、選中設置中的恢復出廠設置功能、選中設置中的系統更新功能、執tjadb reboot recovery等。
[0015]在檢測到任一上述觸發操作后,執行如圖1所示的步驟。
[0016]步驟S10:獲取recovery鏡像文件的備份文件。
[0017]recovery鏡像文件的備份文件包含有Android系統編譯時生成的recovery鏡像文件及其哈希值(hash值)和文件大小(size)。優選的,recovery鏡像文件的備份文件存儲在system 分區。
[0018]為此,在前期版本制作時,需要修改編譯流程,在recovery鏡像文件生成后,計算其哈希值及文件大小,并將該哈希值和文件大小追加在recovery鏡像文件結尾處,重新打包生成包含有哈希值及文件大小的新的recovery鏡像文件,該新的recovery鏡像文件稱為recovery鏡像文件的備份文件。
[0019]在出廠對終端裝置進行升級時,包含有哈希值和文件大小的recovery鏡像文件會被升級到recovery分區,備份文件會被存儲到system分區。
[0020]將哈希值及文件大小保存在recovery鏡像文件的目的是隨著系統升級recovery鏡像文件中的hash值及size也會隨之更新,保證系統升級后用于判斷recovery鏡像文件是否被篡改的哈希值更新為最新的。如果hash值及size不隨著recovery鏡像文件的升級而升級,會出現系統升級后,recovery分區中的recovery鏡像文件已經升級為新版本,升級后重啟過程中在執行本方案的判斷recovery鏡像文件是否被篡改的判斷程序時就會判斷錯誤,因為如果使用舊的size計算recovery分區recovery鏡像文件的哈希值,貝IJ 一定跟舊的hash值不同,而實際上升級的recovery鏡像文件是官方的,合法的。
[0021]當然,在獲取recovery鏡像文件的備份文件之前,還應判斷該備份文件是否存在,如果存在,則執行步驟S10;如果不存在,說明recovery鏡像文件的備份文件被篡改,啟動boot(禁止進入recovery模式),進入正常開機模式。
[0022]步驟S11:判斷系統當前recovery鏡像文件是否被修改。
[0023]系統當前recovery鏡像文件即recovery分區中的recovery鏡像文件。在本實施例中,通過判斷系統當前recovery鏡像文件的哈希值與recovery鏡像文件的備份文件的哈希值是否一致來判斷系統當前recovery鏡像文件是否被修改。
[0024]哈希算法將任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨后的哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上來說基本上是不可能的,數據的哈希值可以校驗數據是否被修改。
[0025]因此,本實施例通過判斷系統當前recovery鏡像文件的哈希值與recovery鏡像文件的備份文件的哈希值是否一致來判斷系統當前recovery鏡像文件是否被修改,判斷準確率較高。
[0026]如圖2所示,判斷系統當前recovery鏡像文件是否被修改的具體步驟如下:
步驟S110:計算系統當前recovery鏡像文件的哈希值。
[0027]具體步驟參見圖3所示:
步驟S110-1:獲取系統當前recovery鏡像文件的首地址。
[0028]步驟S110-2:獲取Android系統編譯時生成的recovery鏡像文件的文件大小。
[0029]先獲取recovery鏡像文件的備份文件,再讀取備份文件中的size域,從而獲取recovery鏡像文件的備份文件的文件大小。
[°03°] 步驟S110-3:根據系統當前recovery鏡像文件的首地址和Android系統編譯時生成的recovery鏡像文件的文件大小計算系統當前recovery鏡像文件的哈希值。
[0031]在本實施例中,根據系統當前recovery鏡像文件的首地址和recovery鏡像文件的備份文件的文件大小算法計算哈希值。
[0032]哈希計算有很多現成的算法,比如MD5(Message Digest Algorithm 5)、SHA(Secure Hash Algorithm)等。在本實施例中,優選使用的是SHA,SHA( Secure HashAlgorithm),即安全哈希算法,主要適用于數字簽名標準(Digital Signature StandardDSS)里面定義的數字簽名算法。
[0033]哈希值的具體計算過程如下:
首先,根據系統當前recovery鏡像文件的首地址並recovery鏡像文件的備份文件的文件大小將要計算的數據塊讀到緩存。—
[0034]其次,利用SHA算法對緩存中的數據計算sha-Ι摘要。
[0035]再次,格式化sha-Ι摘要,獲取重新分布的十六進制字符串輸出。即獲得了系統當前recovery鏡像文件的哈希值。
[0036]步驟S111:讀取所述recovery鏡像文件的備份文件的哈希值。
[0037]獲取recovery鏡像文件的備份文件,讀取備份文件中的hash域,從而獲取recovery鏡像文件的備份文件的hash值。
[0038]步驟SI 12:判斷系統當前recovery鏡像文件的哈希值與recovery鏡像文件的備份文件的哈希值是否一致;
若不一致,則判斷出系統當前recovery鏡像文件被修改了,執行步驟S12;
若一致,則判斷出系統當前recovery鏡像文件沒有被修改,執行步驟S13。
[0039]步驟S12:將recovery鏡像文件的備份文件升級至recovery分區。
[0040]由于系統當前recovery鏡像文件的哈希值與recovery鏡像文件的備份文件的哈希值不一致,說明系統當前recovery鏡像文件被修改了,將recovery鏡像文件的備份文件升級到recovery分區,從而保證系統安全。
[0041 ] 步驟S13:執行升級后reco