本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種固件加密方法。
背景技術(shù):
固件(firmware),又叫韌件,是一種嵌入在硬件裝置中的軟件。通常它是位于快閃存儲器中,而且可以讓使用者更新。隨著移動技術(shù)的發(fā)展,移動終端,如智能手機(jī),不斷增加功能,其固件復(fù)雜度也隨之增加。
升級固件一般可以針對手機(jī)功能做出一些增強(qiáng),修正一些小錯(cuò)誤,讓手機(jī)程序運(yùn)行更流暢,通話質(zhì)量提高等等。
固件升級是指通過專門的升級程序,將硬件中的工作程序或源代碼進(jìn)行改進(jìn),使其得到兼容性、性能或者功能上的提高。它與升級驅(qū)動程序等不同的是從機(jī)器底層進(jìn)行更新,因而更直接、更有效,性能提高也更明顯。這種升級可將機(jī)器的性能不斷提高,進(jìn)行將主機(jī)的潛力不斷發(fā)揮出來不過,固件升級會有一定的風(fēng)險(xiǎn),因而需要對固件升級進(jìn)行有效管控,往往采用固件加密的方式來實(shí)現(xiàn)。而現(xiàn)有的技術(shù)都是通過公鑰,私鑰這種方式對固件進(jìn)行加密,如果在需要將公鑰,私鑰對外釋放的業(yè)務(wù)需求下,這種加密方式就無法滿足業(yè)務(wù)需要的要求,達(dá)不到有效加密的效果。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種固件加密方法,通過在升級前將升級包對應(yīng)的md5值寫入misc分區(qū)來進(jìn)行數(shù)據(jù)有效性的驗(yàn)證,即便公鑰、私鑰對外開放,也能夠保證系統(tǒng)不會被隨意刷機(jī),可防止第三方替換固件,有效地保障了開發(fā)者對系統(tǒng)版本的控制。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種固件加密方法,包括:
用戶終端通過空中接口ota向服務(wù)器發(fā)送升級包檢測請求;
接收所述服務(wù)器反饋的檢測結(jié)果信息,根據(jù)所述檢測結(jié)果信息確定所述服務(wù)器具有所述升級包;
所述用戶終端通過所述ota向所述服務(wù)器發(fā)送升級包下載請求;
接收所述服務(wù)器下發(fā)的升級數(shù)據(jù)包;所述升級數(shù)據(jù)包包括所述升級包和所述升級包對應(yīng)的md5值;
對所述升級數(shù)據(jù)包進(jìn)行解析,得到所述升級包和所述md5值;
將所述md5值寫入所述用戶終端的misc分區(qū)并存儲為第一md5值,并將所述升級包進(jìn)行存儲;
檢測所述用戶終端的系統(tǒng)啟動狀態(tài),當(dāng)所述系統(tǒng)重新啟動時(shí),所述用戶終端對所述升級包進(jìn)行檢測,并根據(jù)檢測結(jié)果生成升級提示信息;
接收用戶根據(jù)所述升級提示信息輸入的確認(rèn)升級操作指令;
根據(jù)所述確認(rèn)升級操作指令進(jìn)入工程recovery模式;
計(jì)算所述升級包的md5值,并從misc分區(qū)獲取所述第一md5值,確定所述計(jì)算得到的md5值與所述第一md5值是否一致;
當(dāng)確定為一致時(shí),根據(jù)所述升級包對所述用戶終端的系統(tǒng)進(jìn)行升級。
優(yōu)選的,所述根據(jù)所述確認(rèn)升級操作指令進(jìn)入工程recovery模式之前,所述方法還包括:
對所述升級包進(jìn)行數(shù)據(jù)校驗(yàn)。
進(jìn)一步優(yōu)選的,在所述數(shù)據(jù)校驗(yàn)通過后,所述方法還包括:
向所述用戶終端內(nèi)存儲的cache/recovery/command文件中寫入特定信息,并且向所述misc分區(qū)的指定位置寫入特定字段。
進(jìn)一步優(yōu)選的,在所述根據(jù)所述確認(rèn)升級操作指令進(jìn)入工程recovery模式之后并且在所述計(jì)算所述升級包的md5值之前,所述方法還包括:
讀取所述misc分區(qū)的所述指定位置,獲取所述指定位置的字段的信息;
確定所述字段與所述特定字段相一致。
進(jìn)一步優(yōu)選的,所述方法還包括:當(dāng)確定所述字段與所述特定字段不一致時(shí),生成第一錯(cuò)誤提示信息并顯示。
優(yōu)選的,當(dāng)所述計(jì)算得到的md5值與所述第一md5值不一致時(shí),所述方法還包括:生成第二錯(cuò)誤提示信息并顯示。
優(yōu)選的,在所述將所述md5值寫入所述用戶終端的misc分區(qū)并存儲為第一md5值,并將所述升級包進(jìn)行存儲之后,所述方法還包括:
生成并輸出重啟操作提示信息。
本發(fā)明實(shí)施例提供的固件加密方法,通過在升級前將升級包對應(yīng)的md5值寫入misc分區(qū)來進(jìn)行數(shù)據(jù)有效性的驗(yàn)證,即便公鑰、私鑰對外開放,也能夠保證系統(tǒng)不會被隨意刷機(jī),可防止第三方替換固件,有效地保障了開發(fā)者對系統(tǒng)版本的控制。
附圖說明
圖1為本發(fā)明實(shí)施例提供的固件加密方法的流程圖。
具體實(shí)施方式
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
本發(fā)明實(shí)施例提供的固件加密方法,主要應(yīng)用于智能移動終端設(shè)備中,尤其是應(yīng)用與智能手機(jī)中。
圖1為本發(fā)明實(shí)施例提供的固件加密方法的流程圖,如圖1所示,主要包括如下步驟:
步驟101,用戶終端通過空中接口(ota)向服務(wù)器發(fā)送升級包檢測請求;
具體的,空中接口(over-the-air,ota)是通過移動通信網(wǎng)(gsm或cdma)的空中接口對sim卡數(shù)據(jù)及應(yīng)用進(jìn)行遠(yuǎn)程管理的技術(shù)。空中接口可以采用sms、wap、gprs、cdma1x等技術(shù)。而基于短消息的ota空中下載技術(shù)是ota技術(shù)中最為簡單可靠手段。
用戶終端通過ota向服務(wù)器發(fā)送檢測請求,在檢測請求中攜帶有用戶終端的信息,其中可以具體包括當(dāng)前固件的版本信息,從而用以檢測服務(wù)器中是否具有適用于用戶終端的固件升級包。
步驟102,接收服務(wù)器反饋的檢測結(jié)果信息,根據(jù)檢測結(jié)果信息確定服務(wù)器是否具有升級包;
具體的,可以根據(jù)版本信息來確定服務(wù)器中是否具有升級包。比如當(dāng)版本信息為更新的版本時(shí),確定該固件升級包為所需的升級包。
如果不具有升級包,則直接結(jié)束該流程。
在本例中僅對檢測到有升級包的情況進(jìn)行討論。
步驟103,用戶終端通過ota向服務(wù)器發(fā)送升級包下載請求;
具體的,用戶終端在確定服務(wù)器中具有所需的升級包時(shí),生成升級包下載請求,通過ota發(fā)送到服務(wù)器。升級包下載請求中攜帶有升級包的信息,以及用戶終端的信息。
步驟104,接收服務(wù)器下發(fā)的升級數(shù)據(jù)包;
具體的,服務(wù)器在根據(jù)升級包下載請求向用戶終端下發(fā)升級數(shù)據(jù)包。升級數(shù)據(jù)包包括升級包和升級包對應(yīng)的md5值。
md5即message-digestalgorithm5,也稱為信息-摘要算法5,為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù),確保信息傳輸完整一致。
md5值就像是一個(gè)文件的“數(shù)字指紋”。每個(gè)文件的md5值是不同的,如果任何人對文件做了任何改動,其md5值也就是對應(yīng)的“數(shù)字指紋”就會發(fā)生變化。比如下載服務(wù)器針對一個(gè)文件預(yù)先提供一個(gè)md5值,用戶下載完該文件后,用這個(gè)算法重新計(jì)算下載文件的md5值,通過比較這兩個(gè)值是否相同,就能判斷下載的文件是否出錯(cuò),或者說下載的文件是否被篡改了。
步驟105,對升級數(shù)據(jù)包進(jìn)行解析,得到升級包和md5值;
具體的,用戶終端對服務(wù)器下發(fā)的升級數(shù)據(jù)包進(jìn)行解析,得到升級包和md5值。
步驟106,將md5值寫入用戶終端的misc分區(qū)并存儲為第一md5值,并將升級包進(jìn)行存儲;
具體的,android上主要有六個(gè)分區(qū):cache,misc,recovery,boot,system,data。
其中,boot分區(qū)上有android的引導(dǎo)程序,包括內(nèi)核和內(nèi)存操作程序。沒有這個(gè)分區(qū)設(shè)備就不能被引導(dǎo)?;謴?fù)系統(tǒng)的時(shí)候會擦除這個(gè)分區(qū),并且必須重新安裝引導(dǎo)程序和rom才能重啟系統(tǒng)。
system分區(qū)上是除了內(nèi)核和內(nèi)存操作之外的整個(gè)操作系統(tǒng),里面包含了android用戶接口和預(yù)先安裝的系統(tǒng)應(yīng)用。
recovery分區(qū)被認(rèn)為是另一個(gè)啟動分區(qū),啟動設(shè)備進(jìn)入recovery控制臺可以去執(zhí)行高級的系統(tǒng)恢復(fù)和管理操作。
data分區(qū)保存著用戶數(shù)據(jù)。通訊錄、短信、設(shè)置和安裝的apps都在這個(gè)分區(qū)上。擦除這個(gè)分區(qū)相當(dāng)于恢復(fù)出廠設(shè)置,當(dāng)?shù)谝淮螁釉O(shè)備的時(shí)候或者在安裝了官方或者客戶的rom之后系統(tǒng)會自動重建這個(gè)分區(qū)。當(dāng)執(zhí)行恢復(fù)出廠設(shè)置時(shí),就是在擦除這個(gè)分區(qū)。
cache分區(qū)是android系統(tǒng)存儲頻繁訪問的數(shù)據(jù)和app的地方。cache是緩存空間,程序和系統(tǒng)用到的緩存數(shù)據(jù)和指令就存放在這里。擦除這個(gè)分區(qū)不會影響個(gè)人數(shù)據(jù),當(dāng)你繼續(xù)使用設(shè)備時(shí),被擦除的數(shù)據(jù)就會自動被創(chuàng)建。
misc分區(qū)包含各種復(fù)雜的類似于on/off的系統(tǒng)設(shè)置。這些設(shè)置可能是usb配置和某些硬件配置信息。該分區(qū)中有啟動加載控制模塊(bootloadercontrolblock,bcb),主要是用于存放recovery引導(dǎo)信息。
用戶終端將服務(wù)器下發(fā)的升級數(shù)據(jù)包的md5值存儲到misc分區(qū)。為了便于區(qū)分,將存儲的值稱為第一md5值。
步驟107,檢測用戶終端的系統(tǒng)啟動狀態(tài),當(dāng)系統(tǒng)重新啟動時(shí),用戶終端對升級包進(jìn)行檢測,并根據(jù)檢測結(jié)果生成升級提示信息;具體的,升級包在下載之后,優(yōu)選的,系統(tǒng)會生成并輸出重啟操作提示信息,以提示用戶進(jìn)行系統(tǒng)重啟。重啟后系統(tǒng)檢測升級包。
進(jìn)一步的,檢測得到的檢測結(jié)果可以包括升級包對應(yīng)的固件名稱、版本信息等等。根據(jù)這些信息可以確定是否與當(dāng)前系統(tǒng)的固件版本相同,從而確認(rèn)是否需要進(jìn)行升級。在確定需要進(jìn)行升級的情況下,生成升級提示信息。
在生成升級提示信息之后,用戶終端將升級提示信息對用戶進(jìn)行顯示。
步驟108,接收用戶根據(jù)升級提示信息輸入的確認(rèn)升級操作指令;
具體的,在用戶終端對升級提示信息進(jìn)行顯示后,檢測用戶輸入,當(dāng)接收到用戶輸入的操作指令時(shí),對操作指令進(jìn)行解析,確定是否是確認(rèn)升級的操作指令。
步驟109,對升級包進(jìn)行數(shù)據(jù)校驗(yàn);
具體的,在升級包下載過程中,運(yùn)營商網(wǎng)絡(luò)可能會對升級包數(shù)據(jù)做劫持,從而導(dǎo)致最終下載的升級包文件內(nèi)容損壞,最終無法驗(yàn)證通過。如果發(fā)生升級報(bào)數(shù)據(jù)校驗(yàn)失敗的情況,可以清除已下載的數(shù)據(jù)包,并再次向服務(wù)器發(fā)送升級包下載請求。
在升級包數(shù)據(jù)校驗(yàn)通過之后,繼續(xù)執(zhí)行下述步驟。
步驟110,向用戶終端內(nèi)存儲的cache/recovery/command文件中寫入特定信息,并且向misc分區(qū)的指定位置寫入特定字段。
具體的,特定信息可以是update.zip文件。
步驟111,根據(jù)確認(rèn)升級操作指令進(jìn)入工程(recovery)模式;
其中,recovery模式主要指的是安卓的恢復(fù)刷機(jī)模式,這相當(dāng)于windows系統(tǒng)的dos模式,因此也可以稱之為安卓的工程模式,在這個(gè)工程模式下,可以進(jìn)行若干操作,包括并不限于重啟手機(jī),刷入系統(tǒng)補(bǔ)丁,刷入一個(gè)新的手機(jī)刷機(jī)包,格式化手機(jī)資料和緩存等。
步驟112,讀取misc分區(qū)的指定位置,獲取指定位置的字段的信息;
步驟113,確定字段與特定字段是否相一致;
由此可以避免在進(jìn)入到recovery模式時(shí)系統(tǒng)出現(xiàn)故障或數(shù)據(jù)丟時(shí)損壞等。
當(dāng)字段不一致時(shí),執(zhí)行步驟114,生成第一錯(cuò)誤提示信息并顯示。
具體的,第一錯(cuò)誤提示信息可以是用以提示升級包錯(cuò)誤的提示信息。
當(dāng)字段一致時(shí),執(zhí)行步驟115,計(jì)算升級包的md5值,并從misc分區(qū)獲取第一md5值;
具體的,可以適用文件校驗(yàn)和完整性驗(yàn)證程序(fciv)計(jì)算md5文件,計(jì)算得到一個(gè)md5值。在misc分區(qū)中還存儲有之前接收服務(wù)器下發(fā)的第一md5值,對二者進(jìn)行比較。
步驟116,確定計(jì)算得到的md5值與第一md5值是否一致;
當(dāng)確定為一致時(shí),執(zhí)行步驟117,根據(jù)升級包對用戶終端的系統(tǒng)進(jìn)行升級。
此外,當(dāng)計(jì)算得到的md5值與第一md5值不一致時(shí),執(zhí)行步驟118,生成第二錯(cuò)誤提示信息并顯示。具體的,第二錯(cuò)誤提示信息可以是用以提示升級失敗的提示信息。
本發(fā)明實(shí)施例提供的固件加密方法,提供了固件升級管控的全流程,通過在升級前將升級包對應(yīng)的md5值寫入misc分區(qū)來進(jìn)行數(shù)據(jù)有效性的驗(yàn)證,即便公鑰、私鑰對外開放,也能夠保證系統(tǒng)不會被隨意刷機(jī),可防止第三方替換固件,有效地保障了開發(fā)者對系統(tǒng)版本的控制。
專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上所述的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。