韌體升級方法及裝置
本申請涉及電子技術領域,尤其涉及一種韌體升級方法及裝置。
韌體(Firmware)是指設備內部保存的設備“驅動程式”,承擔著作業系統最基礎最底層的工作,透過韌體,作業系統才能按照標準的設備驅動實現特定機器的運行動作。可見,在硬體設備中,韌體就是硬體設備的靈魂,決定著硬體設備的功能及性能。
為了修復產品缺陷、滿足不斷變化的需求和新功能、以及縮短產品週期,會對設備的韌體進行升級。目前,在對韌體進行升級的過程中,相關韌體檔的保密程度較低,易於被篡改或破解,存在較大的安全隱患。
為解決上述技術問題,需要提出一種安全性較高的韌體升級方法。
本說明書實施例的目的是提供一種韌體升級方法及裝置,本說明書實施例是這樣實現的:
第一態樣,提供了一種韌體升級方法,應用於伺服端,所述方法包括:
獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
第二態樣,提供了一種韌體升級方法,應用於終端設備,所述方法包括:
接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
如果所述第二校驗值與所述第一校驗值匹配,則採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
使用所述源韌體檔對所述終端設備進行韌體升級。
第三態樣,提供了一種韌體升級裝置,應用於伺服端,所述裝置包括:
獲取模組,用於獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
加密模組,用於採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
第一校驗模組,用於採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
發送模組,用於向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
第四態樣,提供了一種韌體升級裝置,應用於終端設備,所述裝置包括:
指令接收模組,用於接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
下載模組,用於根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
第二校驗模組,用於採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
解密模組,用於在所述第二校驗值與所述第一校驗值匹配的情況下,採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
升級模組,用於使用所述源韌體檔對所述終端設備進行韌體升級。
第五態樣,提供了一種電子設備,包括:
處理器;以及
被安排成儲存電腦可執行指令的記憶體,所述可執行指令在被執行時使所述處理器執行以下操作:
獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
第六態樣,提供了一種電子設備,包括:
處理器;以及
被安排成儲存電腦可執行指令的記憶體,所述可執行指令在被執行時使所述處理器執行以下操作:
接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
如果所述第二校驗值與所述第一校驗值匹配,則採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
使用所述源韌體檔對所述終端設備進行韌體升級。
第七態樣,提供了一種電腦儲存媒體,所述電腦可讀儲存媒體儲存一個或多個程式,所述一個或多個程式當被包括多個應用程式的電子設備執行時,使得所述電子設備執行以下操作:
獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
第八態樣,提供了一種電腦儲存媒體,所述電腦可讀儲存媒體儲存一個或多個程式,所述一個或多個程式當被包括多個應用程式的電子設備執行時,使得所述電子設備執行以下操作:
接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
如果所述第二校驗值與所述第一校驗值匹配,則採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
使用所述源韌體檔對所述終端設備進行韌體升級。
由以上本說明書實施例提供的技術方案可見,本說明書實施例中,透過對開發人員開發出的新韌體檔(即源韌體檔)進行多次加密和校驗,來確保韌體升級過程中韌體檔的內容不被破解和篡改,安全性較高。
為了使本技術領域的人員更好地理解本說明書中的技術方案,下面將結合本說明書實施例中的附圖,對本說明書實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅是本說明書一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本領域普通技術人員在沒有做出進步性勞動前提下所獲得的所有其他實施例,都應當屬於本說明書保護的範圍。
本說明書實施例提供了一種韌體升級方法及裝置。
為了便於理解,下面首先對本說明書實施例中涉及到的一些概念及應用場景進行介紹。
空中下載技術(Over The Air,OTA):是指透過多樣化的空中傳輸方法(包括不限於WiFi、ZigBee和BLE等)將需要升級資源或配置分發到嵌入式終端設備上,使終端設備進行自動更新升級的技術。目前,終端設備的韌體升級主要透過OTA實現。
訊息佇列遙測傳輸(Message Queuing Telemetry
Transport,MQTT):是IBM開發的一個即時通訊協定,屬於輕量級傳輸協定。
非對稱加密:非對稱加密演算法是一種金鑰的保密方法,涉及公開金鑰和私有金鑰,其中,公開金鑰與私有金鑰是一對,如果用私有金鑰對資料進行加密,只有用對應的公開金鑰才能解密;如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密。
對稱加密:對稱加密演算法是一種金鑰的保密方法,採用單鑰金鑰加密,同一個金鑰可以同時用作資料的加密和解密,也稱為單金鑰加密。
數位摘要:數位摘要是將任意長度的消息變成固定長度的短消息,它類似於一個引數是消息的函數,也就是Hash函數。數位摘要採用單向Hash函數將需要加密的明文“摘要”成一串固定長度(例如128位)的密文這一串密文又稱為數位指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致。
啟動裝載(BootLoader):是嵌入式系統在加電後執行的第一段代碼,在它完成CPU和相關硬體的初始化之後,再將作業系統映射或固化的嵌入式應用程式裝在到記憶體中然後跳轉到作業系統所在的空間,啟動作業系統運行。
本說明書實施例技術方案的應用場景:應用場景中包括:開發環境、管理中心、伺服端和終端設備;其中,開發人員在開發環境中開發韌體檔,開發人員開發的韌體檔稱為“源韌體檔”,源韌體檔用於終端設備的韌體升級;管理中心用於對開發人員開發的源韌體檔進行儲存和版本資訊管理,在開發人員開發出新的源韌體檔後,管理中心會將新的源韌體檔錄入到該管理中心中,為了確保源韌體檔的合法性,管理中心會對新的源韌體進行非對稱加密,並將非對稱加密得到的韌體檔提供給伺服端;伺服端對來自管理中心的韌體檔進行一系列處理後,將處理後的韌體檔的下載位址提供給終端設備;終端設備根據來自伺服端的韌體檔下載位址去下載韌體檔,對下載得到的韌體檔進行校驗、解密,如果校驗通過、且解密成功,則會得到源韌體檔,使用源韌體檔對終端設備的韌體進行升級。
接下來對本說明書實施例提供的一種韌體升級方法進行介紹。
圖2是本說明書的一個實施例的韌體升級方法的流程圖,該方法應用於伺服端,如圖2所示,該方法可以包括以下步驟:步驟202、步驟204、步驟206和步驟208,其中,
在步驟202中,獲取第一韌體檔,其中,第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,第一金鑰為私有金鑰。
本說明書實施例中,源韌體檔為開發人員在開發環境中開發的韌體檔,源韌體檔為非加密的檔。
本說明書實施例中,在開發人員在開發環境中開發(或編譯)出新的源韌體檔後,會將其錄入管理中心中進行儲存,管理中心會對源韌體檔進行非對稱加密,得到非對稱加密後的韌體檔,即第一韌體檔;具體的,管理中心可以採用RSA加密演算法的私有金鑰對源韌體檔進行加密,得到第一韌體檔。相應的,伺服端從管理中心中獲取第一韌體檔。
在步驟204中,採用第二金鑰對第一韌體檔進行加密,得到第二韌體檔。
本說明書實施例中,為了避免傳輸過程中韌體檔的資料和業務邏輯的洩露,伺服端會對第一韌體檔進行加密。考慮到AES加密演算法具備運算速度快,安全性高以及資源消耗少等優點,因此,可以優先選擇採用AES加密演算法對第一韌體進行加密,此時,第二金鑰為AES金鑰。
在步驟206中,採用預設校驗演算法對第二韌體檔進行校驗,得到第一校驗值。
本說明書實施例中,保證韌體升級過程的安全性,伺服端會對第二韌體檔進行校驗,其中,校驗演算法可以包括:SHA256校驗演算法、SHA128校驗演算法或MD5校驗演算法。具體的,當校驗演算法為SHA256校驗演算法時,第一校驗值為256位元的字串;具體的,當校驗演算法為SHA128校驗演算法時,第一校驗值為128位元的字串;具體的,當校驗演算法為MD5校驗演算法時,第一校驗值為128位元的字串。
在步驟208中,向終端設備發送韌體升級指令,其中,韌體升級指令用於指示終端設備進行韌體升級,韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值。
本說明書實施例中,當檢測到終端設備中的韌體版本低於源韌體檔的版本時,向該終端設備發送韌體升級指令。
考慮到韌體升級指令中攜帶的資料量比較小,本說明書實施例中,可以透過輕量級傳輸協定,向終端設備發送韌體升級指令;其中,輕量級傳輸協定可以包括:MQTT協定或CoAP協定。
本說明書實施例中,伺服端可以接收終端設備上報的狀態資訊,其中,狀態資訊可以包括下述至少一項:韌體的版本資訊和韌體的安裝進度資訊,韌體的版本資訊用於確定終端設備是否需要進行韌體升級。
本說明書實施例中,如果終端設備在韌體升級過程中發生錯誤,則伺服端可以根據韌體的安裝進度資訊進行錯誤定位。
本說明書實施例中,如果終端設備的韌體升級失敗,則伺服端可以在終端設備重啟時再次下發韌體升級指令。
由上述實施例可見,該實施例中,透過對開發人員開發出的新韌體檔(即源韌體檔)進行多次加密和校驗,來確保韌體升級過程中韌體檔的內容不被破解和篡改,安全性較高。
圖3是本說明書的另一個實施例的韌體升級方法的流程圖,該方法應用於終端設備,如圖3所示,該方法可以包括以下步驟:步驟302、步驟304、步驟306、步驟308和步驟310,其中,
在步驟302中,接收伺服端發送的韌體升級指令,其中,韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,第一校驗值是採用預設校驗演算法對第二韌體檔進行校驗得到的,第一金鑰為私有金鑰。
在步驟304中,根據第二韌體檔的下載位址,獲取第二韌體檔。
本說明書實施例中,透過可以HTTPS證書認證的方式,驗證韌體檔的下載位址的合法性,從而確保韌體升級指令中的韌體檔下載位址和校驗值未被篡改,相應的,上述步驟304具體可以包括以下步驟:
獲取第二韌體檔的下載位址對應的數位憑證;
判斷數位憑證是否處於預設白名單中,如果數位憑證處於預設白名單中,則從第二韌體檔的下載位址獲取第二韌體檔,其中,預設白名單中的數位憑證為合法數位憑證。
本說明書實施例中,可以獲取第二韌體檔的下載位址對應的證書,透過預先儲存的合法下載位址的根證書對所獲取的證書進行驗證;如果驗證通過,則從第二韌體檔的下載位址獲取第二韌體檔。具體的,在終端設備中預埋合法下載位址的根證書,當需要從下載位址獲取韌體檔(即需要與伺服端進行通信)時,透過下載位址中包括的主機功能變數名稱,獲取主機(即伺服端)的證書,使用預設的驗證演算法和預埋的根證書,對主機的證書進行驗證,如果驗證通過,則表明主機是合法的,此時從下載位址下載相應的韌體檔,如果驗證未通過,則表明主機是非法的,此時不從下載位址下載相應的韌體檔。
在步驟306中,採用預設校驗演算法對第二韌體檔進行校驗,得到第二校驗值。
本說明書實施例中,為了確保韌體檔的合法性,終端設備會對下載得到的韌體檔進行校驗,得到校驗值,透過將該校驗值與韌體升級指令中攜帶的校驗值進行比較,確定該韌體檔的合法性;其中,如果兩者匹配(即相同),則表明該韌體檔是合法的,未被篡改;如果兩者不匹配(即不相同),則表明該韌體檔是非法的,已被篡改,這種情況下,不再執行該韌體檔的後續升級操作。
在步驟308中,如果第二校驗值與第一校驗值匹配,則採用第二金鑰對第二韌體檔進行解密得到第一韌體檔,以及採用預先儲存的第三金鑰對第一韌體檔進行解密得到源韌體檔,第三金鑰為第一金鑰對應的公開金鑰。
本說明書實施例中,終端設備會預先儲存用於韌體檔簽名的公開金鑰(即第三金鑰)和私有金鑰(即第一金鑰)。
本說明書實施例中,使用韌體升級指令中攜帶的金鑰對下載得到的韌體檔進行解密,得到解密後的韌體檔。由於使用韌體升級指令中攜帶的金鑰解密得到的韌體檔仍然為加密的韌體檔、且是使用私有金鑰加密的韌體檔、且終端設備本地維護了該私有金鑰對應的公開金鑰,因此終端設備可以使用對應的公開金鑰對前述韌體檔進行解密,如果解密失敗,則說明韌體檔為非法的,已被篡改,在這種情況下,不再執行該韌體檔的後續升級操作;如果解密成功,則根據解密得到的韌體檔(即源韌體檔)對終端設備進行韌體升級。
在步驟310中,使用源韌體檔對終端設備進行韌體升級。
本說明書實施例中,可以將源韌體檔寫入終端設備的快閃記憶體中。在將源韌體檔寫入終端設備的快閃記憶體中後,可以立即重啟終端設備以完成韌體的升級;也可以設置預設時長後或到達預設時間點時,重啟終端設備以完成韌體的升級。
本說明書實施例中,可以對終端設備的快閃記憶體進行加密,以確保快閃記憶體中所儲存資料的安全性。具體的,如果終端設備的快閃記憶體為加密的,則向快閃記憶體中寫入資料時需要先對快閃記憶體進行解密,之後再寫入資料;以及從快閃記憶體中讀取資料時需要先對快閃記憶體進行解密,之後再讀取資料。
本說明書實施例中,為了保證終端設備的啟動裝載BootLoader不被篡改,可以採用第四金鑰對終端設備的BootLoader進行加密,並對加密後的BootLoader進行校驗,得到第三校驗值;將第三校驗值儲存至終端設備的快閃記憶體中,以便當終端設備再次啟動時需要對
BootLoader進行校驗,只校驗通過後才可以啟動;在這種情況下,可以將第三金鑰預先儲存在BootLoader中,以確保第三金鑰的安全性。其中,第四金鑰可以為Security Boot開啟後生成的一個256位元的字串,可以將該字串作為AES金鑰對BootLoader進行加密,可以將第三校驗值儲存在快閃記憶體0x0開始的位置。
本說明書實施例中,終端設備可以向伺服端上報狀態資訊,其中,狀態資訊包括下述至少一項:韌體的版本資訊和韌體的安裝進度資訊,韌體的版本資訊用於確定終端設備是否需要進行韌體升級,韌體的安裝進度資訊用於伺服端進行韌體升級錯誤的定位。
由上述實施例可見,該實施例中,透過對開發人員開發出的新韌體檔(即源韌體檔)進行多次加密和校驗,來確保韌體升級過程中韌體檔的內容不被破解和篡改,安全性較高。
圖4是本說明書的一個實施例的韌體升級裝置的結構示意圖,該韌體升級裝置應用於伺服端,在一種軟體實施方式中,韌體升級裝置400,可以包括:獲取模組401、加密模組402、第一校驗模組403和發送模組404,其中,
獲取模組401,用於獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
加密模組402,用於採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
第一校驗模組403,用於採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
發送模組404,用於向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
由上述實施例可見,該實施例中,透過對開發人員開發出的新韌體檔(即源韌體檔)進行多次加密和校驗,來確保韌體升級過程中韌體檔的內容不被破解和篡改,安全性較高。
可選地,作為一個實施例,所述發送模組404,可以包括:
指令發送子模組,用於透過輕量級傳輸協定,向所述終端設備發送韌體升級指令。
可選地,作為一個實施例,所述第二金鑰包括:AES金鑰。
可選地,作為一個實施例,所述預設校驗演算法包括:SHA256校驗演算法、SHA128校驗演算法或MD5校驗演算法。
可選地,作為一個實施例,所述韌體升級裝置400,還可以包括:
接收所述終端設備上報的狀態資訊,所述狀態資訊包括下述至少一項:韌體的版本資訊和韌體的安裝進度資訊。
圖5是本說明書的另一個實施例的韌體升級裝置的結構示意圖,該韌體升級裝置應用於終端設備,在一種軟體實施方式中,韌體升級裝置500,可以包括:指令接收模組501、下載模組502、第二校驗模組503、解密模組504和升級模組505,其中,
指令接收模組501,用於接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
下載模組502,用於根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
第二校驗模組503,用於採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
解密模組504,用於在所述第二校驗值與所述第一校驗值匹配的情況下,採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
升級模組505,用於使用所述源韌體檔對所述終端設備進行韌體升級。
由上述實施例可見,該實施例中,透過對開發人員開發出的新韌體檔(即源韌體檔)進行多次加密和校驗,來確保韌體升級過程中韌體檔的內容不被破解和篡改,安全性較高。
可選地,作為一個實施例,所述下載模組502,可以包括:
證書獲取子模組,用於獲取所述第二韌體檔的下載位址對應的證書;
驗證子模組,用於透過預先儲存的合法下載位址的根證書對所獲取的證書進行驗證;
韌體檔下載子模組,用於在驗證通過的情況下,從所述第二韌體檔的下載位址獲取所述第二韌體檔。
可選地,作為一個實施例,所述韌體升級裝置500,還可以包括:
加密子模組,用於採用第四金鑰對所述終端設備的BootLoader進行加密,並對加密後的BootLoader進行校驗,得到第三校驗值;
儲存子模組,用於將所述第三校驗值儲存至所述終端設備的快閃記憶體中。
可選地,作為一個實施例,所述第三金鑰預先儲存在所述BootLoader中。
可選地,作為一個實施例,所述升級模組505,可以包括:
升級子模組,用於將所述源韌體檔寫入所述終端設備的快閃記憶體中。
可選地,作為一個實施例,所述韌體升級裝置500,還可以包括:
上報模組,用於向所述伺服端上報狀態資訊,所述狀態資訊包括下述至少一項:韌體的版本資訊和韌體的安裝進度資訊。
圖6是本說明書的一個實施例的電子設備的結構示意圖,該電子設備可以為伺服端,如圖6所示,在硬體層面,該電子設備包括處理器,可選地還包括內部匯流排、網路介面、記憶體。其中,記憶體可能包含記憶體,例如高速隨機存取記憶體(Random-Access Memory,RAM),也可能還包括非易失性記憶體(non-volatile memory),例如至少1個磁碟記憶體等。當然,該電子設備還可能包括其他業務所需要的硬體。
處理器、網路介面和記憶體可以透過內部匯流排相互連接,該內部匯流排可以是ISA(Industry Standard
Architecture,工業標準架構)匯流排、PCI(Peripheral
Component Interconnect,周邊組件互連標準)匯流排或EISA(Extended Industry Standard Architecture,延伸工業標準架構)匯流排等。所述匯流排可以分為位址匯流排、資料匯流排、控制匯流排等。為便於表示,圖6中僅用一個雙向箭頭表示,但並不表示僅有一根匯流排或一種類型的匯流排。
記憶體,用於存放程式。具體地,程式可以包括程式碼,所述程式碼包括電腦操作指令。記憶體可以包括記憶體和非易失性記憶體,並向處理器提供指令和資料。
處理器從非易失性記憶體中讀取對應的電腦程式到記憶體中然後運行,在邏輯層面上形成韌體升級裝置。處理器,執行記憶體所存放的程式,並具體用於執行以下操作:
獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
可選地,作為一個實施例,所述向所述終端設備發送韌體升級指令,包括:
透過輕量級傳輸協定,向所述終端設備發送韌體升級指令。
可選地,作為一個實施例,所述第二金鑰包括:AES金鑰。
可選地,作為一個實施例,所述預設校驗演算法包括:SHA256校驗演算法、SHA128校驗演算法或MD5校驗演算法。
可選地,作為一個實施例,所述方法還包括:
接收所述終端設備上報的狀態資訊,所述狀態資訊包括下述至少一項:韌體的版本資訊和韌體的安裝進度資訊。
上述如本說明書圖6所示實施例揭示的韌體升級裝置執行的方法可以應用於處理器中,或者由處理器實現。處理器可能是一種積體電路晶片,具有信號的處理能力。在實現過程中,上述方法的各步驟可以透過處理器中的硬體的積體邏輯電路或者軟體形式的指令完成。上述的處理器可以是通用處理器,包括中央處理器(Central Processing Unit,CPU)、網路處理器(Network Processor,NP)等;還可以是數位訊號處理器(Digital Signal Processor,DSP)、專用積體電路(Application Specific Integrated Circuit,ASIC)、現場可程式設計閘陣列(Field-Programmable Gate Array,FPGA)或者其他可程式設計邏輯器件、分立閘或者電晶體邏輯器件、分立硬體組件。可以實現或者執行本說明書實施例中的公開的各方法、步驟及邏輯方塊圖。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。結合本說明書實施例所公開的方法的步驟可以直接體現為硬體解碼處理器執行完成,或者用解碼處理器中的硬體及軟體模組組合執行完成。軟體模組可以位於隨機記憶體,快閃記憶體、唯讀記憶體,可程式設計唯讀記憶體或者電可讀寫可程式設計記憶體、暫存器等本領域成熟的儲存媒體中。該儲存媒體位於記憶體,處理器讀取記憶體中的資訊,結合其硬體完成上述方法的步驟。
該電子設備還可執行圖2的方法,並實現韌體升級裝置在圖2所示實施例的功能,本說明書實施例在此不再贅述。
圖7是本說明書的另一個實施例的電子設備的結構示意圖,該電子設備可以為終端設備,如圖7所示,在硬體層面,該電子設備包括處理器,可選地還包括內部匯流排、網路介面、記憶體。其中,記憶體可能包含記憶體,例如高速隨機存取記憶體(Random-Access Memory,RAM),也可能還包括非易失性記憶體(non-volatile memory),例如至少1個磁碟記憶體等。當然,該電子設備還可能包括其他業務所需要的硬體。
處理器、網路介面和記憶體可以透過內部匯流排相互連接,該內部匯流排可以是ISA(Industry Standard
Architecture,工業標準架構)匯流排、PCI(Peripheral
Component Interconnect,外設部件互連標準)匯流排或EISA(Extended Industry Standard Architecture,延伸工業標準架構)匯流排等。所述匯流排可以分為位址匯流排、資料匯流排、控制匯流排等。為便於表示,圖7中僅用一個雙向箭頭表示,但並不表示僅有一根匯流排或一種類型的匯流排。
記憶體,用於存放程式。具體地,程式可以包括程式碼,所述程式碼包括電腦操作指令。記憶體可以包括記憶體和非易失性記憶體,並向處理器提供指令和資料。
處理器從非易失性記憶體中讀取對應的電腦程式到記憶體中然後運行,在邏輯層面上形成韌體升級裝置。處理器,執行記憶體所存放的程式,並具體用於執行以下操作:
接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
如果所述第二校驗值與所述第一校驗值匹配,則採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
使用所述源韌體檔對所述終端設備進行韌體升級。
可選地,作為一個實施例,所述根據所述第二韌體檔的下載位址,獲取所述第二韌體檔,包括:
獲取所述第二韌體檔的下載位址對應的證書;
通過預先儲存的合法下載位址的根證書對所獲取的證書進行驗證;
如果驗證通過,則從所述第二韌體檔的下載位址獲取所述第二韌體檔。
可選地,作為一個實施例,所述方法還包括:
採用第四金鑰對所述終端設備的BootLoader進行加密,並對加密後的BootLoader進行校驗,得到第三校驗值;
將所述第三校驗值儲存至所述終端設備的快閃記憶體中。
可選地,作為一個實施例,所述第三金鑰預先儲存在所述BootLoader中。
可選地,作為一個實施例,所述使用所述源韌體檔對所述終端設備進行韌體升級,包括:
將所述源韌體檔寫入所述終端設備的快閃記憶體中。
可選地,作為一個實施例,所述方法還包括:
向所述伺服端上報狀態資訊,所述狀態資訊包括下述至少一項:韌體的版本資訊和韌體的安裝進度資訊。
上述如本說明書圖7所示實施例揭示的韌體升級裝置執行的方法可以應用於處理器中,或者由處理器實現。處理器可能是一種積體電路晶片,具有信號的處理能力。在實現過程中,上述方法的各步驟可以通過處理器中的硬體的積體邏輯電路或者軟體形式的指令完成。上述的處理器可以是通用處理器,包括中央處理器(Central Processing Unit,CPU)、網路處理器(Network Processor,NP)等;還可以是數位訊號處理器(Digital Signal Processor,DSP)、專用積體電路(Application Specific Integrated Circuit,ASIC)、現場可程式設計閘陣列(Field-Programmable Gate Array,FPGA)或者其他可程式設計邏輯器件、分立閘或者電晶體邏輯器件、分立硬體組件。可以實現或者執行本說明書實施例中的公開的各方法、步驟及邏輯方塊圖。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。結合本說明書實施例所公開的方法的步驟可以直接體現為硬體解碼處理器執行完成,或者用解碼處理器中的硬體及軟體模組組合執行完成。軟體模組可以位於隨機記憶體,快閃記憶體、唯讀記憶體,可程式設計唯讀記憶體或者電可讀寫可程式設計記憶體、暫存器等本領域成熟的儲存媒體中。該儲存媒體位於記憶體,處理器讀取記憶體中的資訊,結合其硬體完成上述方法的步驟。
該電子設備還可執行圖3的方法,並實現韌體升級裝置在圖3所示實施例的功能,本說明書實施例在此不再贅述。
本說明書實施例還提供了一種電腦可讀儲存媒體,該電腦可讀儲存媒體儲存一個或多個程式,該一個或多個程式包括指令,該指令當被包括多個應用程式的可攜式電子設備執行時,能夠使該可攜式電子設備執行圖2所示實施例的方法,並具體用於執行以下方法:
獲取第一韌體檔,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一金鑰為私有金鑰;
採用第二金鑰對所述第一韌體檔進行加密,得到第二韌體檔;
採用預設校驗演算法對所述第二韌體檔進行校驗,得到第一校驗值;
向終端設備發送韌體升級指令,所述韌體升級指令用於指示所述終端設備進行韌體升級,所述韌體升級指令中攜帶所述第二韌體檔的下載位址、所述第二金鑰和所述第一校驗值。
本說明書實施例還提供了一種電腦可讀儲存媒體,該電腦可讀儲存媒體儲存一個或多個程式,該一個或多個程式包括指令,該指令當被包括多個應用程式的可攜式電子設備執行時,能夠使該可攜式電子設備執行圖3所示實施例的方法,並具體用於執行以下方法:
接收伺服端發送的韌體升級指令,所述韌體升級指令中攜帶第二韌體檔的下載位址、第二金鑰和第一校驗值,所述第二韌體檔是採用第二金鑰對第一韌體檔進行加密得到的,所述第一韌體檔是採用第一金鑰對源韌體檔進行加密得到的,所述第一校驗值是採用預設校驗演算法對所述第二韌體檔進行校驗得到的,所述第一金鑰為私有金鑰;
根據所述第二韌體檔的下載位址,獲取所述第二韌體檔;
採用所述預設校驗演算法對所述第二韌體檔進行校驗,得到第二校驗值;
如果所述第二校驗值與所述第一校驗值匹配,則採用所述第二金鑰對所述第二韌體檔進行解密得到所述第一韌體檔,以及採用預先儲存的第三金鑰對所述第一韌體檔進行解密得到所述源韌體檔,所述第三金鑰為所述第一金鑰對應的公開金鑰;
使用所述源韌體檔對所述終端設備進行韌體升級。
總之,以上所述僅為本說明書的較佳實施例而已,並非用於限定本說明書的保護範圍。凡在本說明書的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本說明書的保護範圍之內。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦。具體的,電腦例如可以為個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任何設備的組合。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式設計唯讀記憶體(EEPROM
)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁磁片儲存或其他磁性存放裝置或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均採用漸進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
400‧‧‧韌體升級裝置
401‧‧‧獲取模組
402‧‧‧加密模組
403‧‧‧第一校驗模組
404‧‧‧發送模組
500‧‧‧韌體升級裝置
501‧‧‧指令接收模組
502‧‧‧下載模組
503‧‧‧第二校驗模組
504‧‧‧解密模組
505‧‧‧升級模組
為了更清楚地說明本說明書實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本說明書中記載的一些實施例,對於本領域普通技術人員來講,在不付出進步性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本說明書的一個實施例的韌體升級方法的應用場景圖;
圖2是本說明書的一個實施例的韌體升級方法的流程圖;
圖3是本說明書的另一個實施例的韌體升級方法的流程圖;
圖4是本說明書的一個實施例的韌體升級裝置的結構示意圖;
圖5是本說明書的另一個實施例的韌體升級裝置的結構示意圖;
圖6是本說明書的一個實施例的電子設備的結構示意圖;
圖7是本說明書的另一個實施例的電子設備的結構示意圖。