專利名稱:基于數(shù)字簽名的固件升級(jí)、固件封裝方法與裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式軟件升級(jí)技術(shù),尤其是涉及一種基于數(shù)字簽名的固件升級(jí)方法與裝 置,以及一種基于數(shù)字簽名的固件封裝方法與裝置。
背景技術(shù):
固件(Firmware)由一組編譯好的二進(jìn)制代碼組成,包括啟動(dòng)加載程序(BootLoader )、 內(nèi)核文件、文件系統(tǒng)等模塊,且固件通常是保存在主板上的快閃存儲(chǔ)器(Flash)中。BootLoader 是硬件系統(tǒng)加電所運(yùn)行的第1段軟件代碼,它的主要任務(wù)包括初始化最基本的硬件;將 BootLoader本身拷貝到內(nèi)存RAM中運(yùn)行;將內(nèi)核文件復(fù)制到RAM中并運(yùn)行內(nèi)核文件。為 了確保系統(tǒng)的安全,通常情況下在產(chǎn)品出廠后系統(tǒng)的BootLoader不會(huì)進(jìn)行更新,而內(nèi)核文 件和文件系統(tǒng)等模塊則根據(jù)需要通過(guò)升級(jí)程序?qū)lash中相應(yīng)地址的模塊擦除重寫(xiě)即可完成 升級(jí)。
出于完善產(chǎn)品的軟件功能或修復(fù)bug的目的,廠商會(huì)在產(chǎn)品出廠以后不斷地對(duì)其產(chǎn)品的 固件進(jìn)行軟件升級(jí),將準(zhǔn)備發(fā)布的固件按模塊生成對(duì)應(yīng)名稱的二進(jìn)制文件,然后將其發(fā)布到 網(wǎng)絡(luò)上通知用戶去下載。由用戶根據(jù)需要自行從網(wǎng)絡(luò)上下載相應(yīng)版本的固件進(jìn)行升級(jí)。由于 網(wǎng)絡(luò)傳輸?shù)臄U(kuò)散性和多樣性,大多數(shù)用戶無(wú)法保證所下載的固件的合法性(確認(rèn)是原版、未 被修改的)和完整性,當(dāng)用戶不慎下載破損的或者非法版本的甚至被不法者惡意篡改的固件 對(duì)產(chǎn)品進(jìn)行升級(jí)后,往往會(huì)導(dǎo)致產(chǎn)品無(wú)法啟動(dòng)而使用戶蒙受較大損失,如果固件中生產(chǎn)廠商 的版權(quán)、版本等信息也被修改了,生產(chǎn)廠商的利益也會(huì)受到損傷。
為了防止文件內(nèi)容被惡意者進(jìn)行篡改,廠商在發(fā)布固件的時(shí)候,通過(guò)單向散列函數(shù)(如 MD5、 SHAl、 CRC32)對(duì)固件內(nèi)容進(jìn)行運(yùn)算,生成該文件對(duì)應(yīng)的哈希摘要,然后在發(fā)布固 件的同時(shí)提供該文件的哈希摘要。用戶下載到該固件后,通過(guò)哈希計(jì)算器計(jì)算其哈希摘要, 然后與網(wǎng)站上提供的哈希摘要進(jìn)行對(duì)比,如果一致證明文件是發(fā)布者原版提供的,如果不一 致表示文件不完整或者被其他人惡意篡改了 。
然而,當(dāng)固件升級(jí)模塊文件較多時(shí),容易發(fā)生文件拷貝錯(cuò)誤、丟失的情況,而且按文件 名來(lái)區(qū)分固件的類型,風(fēng)險(xiǎn)性比較大。當(dāng)用戶下載固件以后,需要通過(guò)第三方工具進(jìn)行哈希 摘要對(duì)比來(lái)檢驗(yàn)文件是否完整和合法,這需要用戶具有一定計(jì)算機(jī)知識(shí)(至少知道MD5、 SHAl、 CRC32的作用)。而在不少情況下,用戶會(huì)從非官方渠道下載該產(chǎn)品的固件,如果 一些惡意者對(duì)固件內(nèi)容進(jìn)行了修改(例如版權(quán)、圖標(biāo))或破壞,同時(shí)很容易地產(chǎn)生一個(gè)新的 哈希摘要,然后將固件發(fā)布出去;對(duì)于這樣的固件,通過(guò)哈希工具對(duì)比只能判定文件的完整 性,而不能判斷文件是廠商原版發(fā)布的;如果用戶將這樣的固件對(duì)產(chǎn)品進(jìn)行升級(jí)后,就很可 能會(huì)導(dǎo)致系統(tǒng)無(wú)法啟動(dòng)而造成損失。
因此,如何提高固件升級(jí)的安全性與便利性,成為當(dāng)前急需解決的技術(shù)難題之一。
發(fā)明內(nèi)容
本發(fā)明在于提出一種基于數(shù)字簽名的固件升級(jí)方法與裝置,以及一種種基于數(shù)字簽名的 固件封裝方法與裝置,通過(guò)數(shù)字簽名文件驗(yàn)證升級(jí)文件中各個(gè)升級(jí)才莫塊文件的完整性與合法 性,生成升級(jí)腳本完成固件升級(jí)操作,從而提高固件升級(jí)的安全性與便利性。
為解決本發(fā)明的技術(shù)問(wèn)題,本發(fā)明公開(kāi)一種基于數(shù)字簽名的固件升級(jí)方法,其包括步驟
生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本信息的XML文件,采 用數(shù)字簽名私鑰對(duì)XML文件加密處理,生成數(shù)字簽名文件,將數(shù)字簽名文件和各個(gè)升級(jí)模 塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用于固件升級(jí)的升級(jí)文件;
待進(jìn)行固件升級(jí)的產(chǎn)品獲取升級(jí)文件,從升級(jí)文件中提取數(shù)字簽名文件并解密處理,得到XML文件;
解析XML文件,篩選出需要作升級(jí)處理的升級(jí)模塊文件;
分別對(duì)每個(gè)需要作升級(jí)處理的升級(jí)模塊文件進(jìn)行驗(yàn)證處理,生成對(duì)所有通過(guò)驗(yàn)證處理的 升級(jí)模塊文件進(jìn)行升級(jí)操作的升級(jí)腳本; 執(zhí)行升級(jí)腳本對(duì)固件進(jìn)行升級(jí)處理。 優(yōu)選的,所迷驗(yàn)證處理包括步驟
從所述升級(jí)文件中提取一個(gè)需要作升級(jí)處理的升級(jí)模塊文件; 使用與生成所述XML文件所使用的哈希算法,計(jì)算所述升級(jí)沖莫塊文件的哈希摘要; 將計(jì)算獲得的哈希摘要與所述XML文件對(duì)應(yīng)描述的哈希摘要做比較,若兩者一致則表 示通過(guò)^驗(yàn)證處理。
優(yōu)選的,所述解密處理是使用數(shù)字簽名公鑰,該數(shù)字簽名公鑰與生成所述數(shù)字簽名文件
的數(shù)字簽名私鑰為密鑰對(duì)。
優(yōu)選的,所迷封裝結(jié)構(gòu)可封裝任意數(shù)量且不限數(shù)據(jù)格式的所述升級(jí)模塊文件。
另外,本發(fā)明還公開(kāi)一種基于數(shù)字簽名的固件升級(jí)裝置,其,包括
固件封裝模塊,用于生成描迷各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本信
息的XML文件,采用數(shù)字簽名私鑰對(duì)所述XML文件加密處理,生成數(shù)字簽名文件,將所
述數(shù)字簽名文件和各個(gè)所述升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用于固
件升級(jí)的升級(jí)文件;
信息獲取模塊,用于從升級(jí)文件中提取數(shù)字簽名文件;
解密模塊,用于對(duì)所述數(shù)字簽名文件解密處理,得到所述XML文件;
XML文件解析模塊,用于解析XML文件,篩選出需要作升級(jí)處理的升級(jí)模塊文件;
驗(yàn)證處理模塊,用于分別對(duì)每個(gè)需要作升級(jí)處理的升級(jí)模塊文件進(jìn)行驗(yàn)證處理;
升級(jí)腳本生成模塊,用于生成對(duì)所有通過(guò)驗(yàn)證處理的升級(jí)模塊文件進(jìn)行升級(jí)操作的升級(jí)
腳本;
升級(jí)執(zhí)行模塊,用于執(zhí)行升級(jí)腳本對(duì)固件進(jìn)行升級(jí)處理。 優(yōu)選的,所述驗(yàn)證處理模塊包括
文件提取單元,用于從所述升級(jí)文件中提取一個(gè)需要作升級(jí)處理的升級(jí)模塊文件; 哈希摘要計(jì)算單元,用于使用與生成所述XML文件所使用的哈希算法,計(jì)算所述升級(jí) 模塊文件的哈希摘要;
哈希摘要比較單元,用于將計(jì)算獲得的哈希摘要與所述XML文件對(duì)應(yīng)描述的哈希摘要 做比較,若兩者一致則表示通過(guò)-險(xiǎn)證處理。
再者,本發(fā)明還公開(kāi)一種基于數(shù)字簽名的固件封裝方法,其包括 生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本信息的XML文件; 采用數(shù)字簽名私鑰對(duì)XML文件加密處理,生成數(shù)字簽名文件;
將數(shù)字簽名文件和各個(gè)升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用于固 件升級(jí)的升級(jí)文件。
對(duì)應(yīng)的,本發(fā)明還公開(kāi)一種基于數(shù)字簽名的固件封裝裝置,其包括
XML文件生成單元,用于生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件 版本信息的XML文件;
數(shù)字簽名文件生成單元,用于采用數(shù)字簽名私鑰對(duì)XML文件加密處理,生成數(shù)字簽名 文件;
封裝單元,用于將數(shù)字簽名文件和各個(gè)升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封 裝,得到用于固件升級(jí)的升級(jí)文件。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果
1、本發(fā)明將多個(gè)升級(jí)^f莫塊文件封裝到一個(gè)升級(jí)文件中進(jìn)^f亍集中管理,生成描述各個(gè)升 級(jí)模塊文件的哈希摘要、存儲(chǔ)位置、軟硬件版本等重要信息的XML文件,并通過(guò)數(shù)字簽名私鑰對(duì)XML文件進(jìn)行加密,按預(yù)定的封裝結(jié)構(gòu)封裝成升級(jí)文件。 一方面,本發(fā)明采用的封 裝結(jié)構(gòu)具有可擴(kuò)展性,可封裝任意數(shù)量和任何數(shù)據(jù)格式的升級(jí)才莫塊文件,從而確保了升級(jí)文 件的完整性;另一方面,本發(fā)明在封裝升級(jí)文件過(guò)程中采用加密處理,避免升級(jí)文件被篡改, 從而確保了升級(jí)文件的合法性。
2、 本發(fā)明進(jìn)行固件升級(jí)過(guò)程中,由于升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置、版本等重 要信息保存在數(shù)字簽名文件中,而取得數(shù)字簽名文件必須對(duì)加密的升級(jí)文件進(jìn)行正確的解密 處理,因此,本發(fā)明對(duì)升級(jí)文件進(jìn)行數(shù)字簽名處理,確保了升級(jí)流程的可靠性。
3、 本發(fā)明提出了在封裝的升級(jí)文件中集成數(shù)字簽名,通過(guò)數(shù)字簽名驗(yàn)證升級(jí)模塊的完 整性和合法性,并通過(guò)后自動(dòng)生成的一個(gè)升級(jí)腳本完成將升級(jí)模塊文件寫(xiě)入到Flash的操作, 故對(duì)升級(jí)文件的解析和校驗(yàn)全部自動(dòng)完成,不需要人工干預(yù),提高了升級(jí)程序的便利性和健 壯性。
圖1是本發(fā)明 一個(gè)較佳實(shí)施例的流程示意圖; 圖2是本發(fā)明進(jìn)行固件封裝的流程示意圖; 圖3是圖1中升級(jí)文件的封裝結(jié)構(gòu)示意圖; 圖4是本發(fā)明一個(gè)較佳實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為了避免用于固件升級(jí)的升級(jí)文件被纂改,在固件發(fā)布的時(shí)候如果對(duì)固件的內(nèi)容進(jìn)行數(shù) 字簽名,并將數(shù)字簽名隨同固件一起提供給用戶進(jìn)行下載,那么在用戶端可以對(duì)固件內(nèi)容進(jìn) 行合法性和完整性驗(yàn)證了 。這里的數(shù)字簽名是指信息發(fā)送者用自己的簽名私鑰對(duì)原始數(shù)據(jù)的 哈希(Hash)變換后所得消息摘要進(jìn)行加密所得的數(shù)據(jù)。信息接收者使用信息發(fā)送者的數(shù)字 證書(shū)對(duì)附在原始信息后的數(shù)字簽名進(jìn)行解密后獲得消息摘要,并對(duì)收到的原始數(shù)據(jù)采用相同 的哈希算法計(jì)算其消息摘要,將二者進(jìn)行對(duì)比,即可校驗(yàn)原始信息是否被篡改。因此,數(shù)字 簽名不僅可以保護(hù)數(shù)據(jù)完整性,還可以保護(hù)傳送數(shù)據(jù)行為的不可抵賴性。
考慮到升級(jí)文件中包含的升級(jí)模塊文件數(shù)量較多,本發(fā)明采用基于數(shù)字簽名的固件升級(jí) 方法,將多個(gè)升級(jí)模塊封裝到一個(gè)文件中,并對(duì)升級(jí)模塊文件的p合希摘要、存儲(chǔ)位置、軟硬 件版本等重要信息進(jìn)行數(shù)字簽名,再對(duì)所有升級(jí)模塊文件進(jìn)行合法性、完整性和版本檢查通 過(guò)后,自動(dòng)生成升級(jí)腳本,最后由升級(jí)腳本完成將升級(jí)模塊文件燒入到Flash相應(yīng)地址空間 的操作。
如圖l所示,本發(fā)明包括如下步驟
步驟Sl:待進(jìn)行固件升級(jí)的產(chǎn)品,通過(guò)網(wǎng)絡(luò)從廠商指定的網(wǎng)站,或通過(guò)外接設(shè)備,獲 取用于固件升級(jí)的升級(jí)文件;并從升級(jí)文件中提取數(shù)字簽名文件。
升級(jí)文件采用一種可擴(kuò)展的固件封裝格式,在封裝文件中保存有數(shù)字簽名文件和所有的 升級(jí)模塊文件,升級(jí)模塊文件的個(gè)數(shù)可以根據(jù)實(shí)際需要做擴(kuò)展。其中數(shù)字簽名文件的對(duì)象是 所有升級(jí)模塊文件的升級(jí)信息,包括對(duì)每個(gè)升級(jí)模塊丈件的哈希摘要、存儲(chǔ)信息、軟硬件版 本信息等進(jìn)行數(shù)字簽名后的內(nèi)容;而升級(jí)模塊文件為對(duì)固件中某一個(gè)模塊(比如文件系統(tǒng)、 內(nèi)核文件或應(yīng)用程序)進(jìn)行升級(jí)的對(duì)應(yīng)二進(jìn)制文件。
為了提高數(shù)字簽名的保密性,采用RSA數(shù)字簽名算法對(duì)所有升級(jí)模塊文件的哈希摘要、 存儲(chǔ)位置、版本等重要信息進(jìn)行數(shù)字簽名,RSA數(shù)字簽名算法為本專業(yè)領(lǐng)域人員所熟知, 在此不再贅述。RSA算法中產(chǎn)生的密鑰對(duì),私鑰保存在生產(chǎn)廠商用于發(fā)布新版本的固件時(shí) 生成數(shù)字簽名文件,公鑰作為數(shù)字證書(shū)存放在產(chǎn)品的Flash中用于用戶端檢驗(yàn)升級(jí)文件的數(shù) 字簽名。
結(jié)合圖2所示,升級(jí)文件的制作過(guò)程如下
步驟S21:由XML文件規(guī)范描述升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置、軟硬件版本等信息。
步驟S22:采用數(shù)據(jù)簽名私鑰對(duì)XML文件進(jìn)行加密,得到數(shù)字簽名文件。步驟S23:將數(shù)字簽名文件與升級(jí)模塊文件按照?qǐng)D3的固件封裝格式進(jìn)行封裝,即可得 到升級(jí)文件。
步驟S2:利用產(chǎn)品的Flash中作為數(shù)字證書(shū)存儲(chǔ)的用于用戶端抬,驗(yàn)升級(jí)文件的公鑰,對(duì) 步驟S1中提取的數(shù)字簽名文件解密,解密后的文件為XML ( Extensible Markup Language, 可擴(kuò)展標(biāo)記語(yǔ)言)文件。
XML文件中描述了數(shù)字簽名文件中包含的各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置、 版本等信息,如下為XML文件的表達(dá)代碼實(shí)例 < xml version="1.0" encoding="GB2312" > <signature version="l .0"> 〈platform id="eul" /> <hardware version = "200809" /> <bin count="2">
<module id="0" type="kemel" digest="ABCDEF 123456" start="0" end="213562" version="0.1" releasedate="20080909" />
<moduleid="rtype="rootfs"digest="DF124656FACD" start="213563" end="789245" version-"O.l" releasedate="20080909" /> </bin>
其中,platform id表示平臺(tái)的標(biāo)示號(hào);hardware version表示石更件的版本號(hào);bin count表 示升級(jí)模塊文件的個(gè)數(shù);module id表示升級(jí)模塊文件的序列號(hào);module type表示升級(jí)模塊 文件的類型,例長(zhǎng)口 BootLoader、 kernel、 rootfs或resource等;module digest表示升級(jí)才莫塊文 件的哈希摘要(MD5值),由單向散列函數(shù)md5 ()產(chǎn)生;module start表示升級(jí)模塊文件在 封裝文件中的起始地址;module end表示升級(jí)模塊文件在封裝文件中的終止地址;module version表示升級(jí)模塊文件的軟件版本號(hào);module releasedate表示升級(jí)模塊文件的發(fā)布日期。 步驟S3:檢查XML文件的版本是否支持對(duì)固件的升級(jí)處理。 步驟S4:解析XML文件,從XML文件中提取各升級(jí)模塊文件的版本號(hào)。 步驟S5:檢查產(chǎn)品的硬件版本是否與XML文件描述的版本匹配。 步驟S6:將步驟S4提取的各升級(jí)模塊文件的版本號(hào)與產(chǎn)品中對(duì)應(yīng)模塊的版本號(hào)比,篩 選出需要進(jìn)行升級(jí)的模塊。
步驟S7:從升級(jí)文件中提取升級(jí)模塊文件。
步驟S8:采用與生成升級(jí)模塊文件哈希摘要一致的哈希算法對(duì)提取的模塊文件進(jìn)行哈 希運(yùn)算,獲取其哈希摘要。
步驟S9:對(duì)比XML文件中存儲(chǔ)的該模塊的哈希摘要和步驟S8中計(jì)算的哈希摘要,如 果一致表明該模塊文件是原版并未修改的。
步驟S10:將該升級(jí)模塊文件寫(xiě)入到升級(jí)腳本中。
步驟S11:重復(fù)步驟S7至步驟S10,完成對(duì)所有升級(jí)才莫塊文件的合法性、完整性甚至兼 容性的檢查,并于檢查完成后,生成升級(jí)腳本。
該升級(jí)腳本包括了對(duì)所有需要升級(jí)處理的模塊對(duì)應(yīng)的升級(jí)命令,比如,升級(jí)文件中包含 升級(jí)模塊丈件l、 2、 3和4,經(jīng)過(guò)步驟S6從產(chǎn)品現(xiàn)有的固件中篩選出需要升級(jí)僅有對(duì)應(yīng)升 級(jí)模塊文件1和4的對(duì)應(yīng)模塊,因此,升級(jí)腳本包括將升級(jí)模塊文件1寫(xiě)入Flash相應(yīng)空 間地址的命令;將升級(jí)模塊文件4寫(xiě)入Flash相應(yīng)空間地址的命令。
步驟S12:執(zhí)行升級(jí)腳本,由升級(jí)腳本完成升級(jí)模塊文件燒入到Flash相應(yīng)地址空間的 操作。
步驟S13:提示升級(jí)成功。
步驟S14:提示升級(jí)失敗以及出錯(cuò)原因。
另夕卜,還可以通過(guò)如下方式魅r證升級(jí)文件完整性將升級(jí)文件用壓縮工具(例如WinZIP 或者WinRAR)進(jìn)行打包,用戶下載后先進(jìn)行解壓,如果解壓成功(WinZIP和WinRAR自帶文件完整性校驗(yàn)功能),表示文件內(nèi)容是完整的。而驗(yàn)證升級(jí)文件內(nèi)容合法性可采用如下 方式廠商在發(fā)布固件的時(shí)候,對(duì)固件內(nèi)容進(jìn)行哈希運(yùn)算(MD5、 SHA1、 CRC32等),生 成該升級(jí)文件對(duì)應(yīng)的哈希碼,然后在發(fā)布固件的同時(shí)提供該升級(jí)文件的哈希碼;用戶下載到 該升級(jí)文件后,通過(guò)哈希計(jì)算器計(jì)算其哈希碼,然后與網(wǎng)站上提供的哈希碼進(jìn)行比對(duì),如果 一致證明文件是發(fā)布者原版提供的,如果不一致表示文件不完整或者^(guò)皮其他人惡意篡改了 。
因此,本發(fā)明基于數(shù)字簽名的固件升級(jí)方法,適應(yīng)于一個(gè)或者多個(gè)升級(jí)模塊文件的混合 打包,而且對(duì)升級(jí)模塊文件的數(shù)據(jù)類型不限制,并在打包格式中加入了平臺(tái)、軟硬件版本號(hào) 校驗(yàn),防止錯(cuò)誤的版本升級(jí);同時(shí)提出了在封裝文件中集成數(shù)字簽名,通過(guò)數(shù)字簽名驗(yàn)證升 級(jí)模塊的完整性和合法性,并通過(guò)后自動(dòng)生成的一個(gè)升級(jí)腳本完成將升級(jí)模塊文件寫(xiě)入到 Flash的操作,故對(duì)升級(jí)文件的解析和校驗(yàn)全部由程序自動(dòng)完成,不需要人工干預(yù),提高了 升級(jí)程序的便利性和健壯性。
結(jié)合圖4所示,本發(fā)明還公開(kāi)一種基于數(shù)字簽名的固件裝置,其包括包括固件封裝 模塊200、信息獲取模塊210、解密模塊220、 XML文件解析模塊230、驗(yàn)證處理模塊240、 升級(jí)腳本生成模塊250和升級(jí)執(zhí)行模塊260。所述信息獲取模塊210用于從獲取升級(jí)文件, 并從升級(jí)文件中提耳又?jǐn)?shù)字簽名文件;所述解密模塊220用于對(duì)所述數(shù)字簽名文件解密處理, 生成描述所迷升級(jí)文件中各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本信息的 XML文件;所述XML文件解析模塊230用于解析XML文件,篩選出需要作升級(jí)處理的升 級(jí)模塊文件;所述驗(yàn)證處理模塊240用于分別對(duì)每個(gè)需要作升級(jí)處理的升級(jí)模塊文件進(jìn)行驗(yàn) 證處理;所述升級(jí)腳本生成模塊250用于生成對(duì)所有通過(guò)驗(yàn)證處理的升級(jí)沖莫塊文件進(jìn)行升級(jí) 操作的升級(jí)腳本;所述升級(jí)執(zhí)行模塊260,用于執(zhí)行升級(jí)腳本對(duì)固件進(jìn)行升級(jí)處理。
其中> 固件封裝模塊200包括XML文件生成單元201、數(shù)字簽名文件生成單元202 和封裝單元203。 XML文件生成單元201用于生成描迷各個(gè)升級(jí)模塊文件的哈希摘要、存 儲(chǔ)位置和軟硬件版本信息的XML文件;數(shù)字簽名文件生成單元202用于采用數(shù)字簽名私鑰 對(duì)XML文件加密處理,生成數(shù)字簽名文件;封裝單元203用于將數(shù)字簽名文件和各個(gè)升級(jí) 模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用于固件升級(jí)的升級(jí)文件。
另外,所述驗(yàn)證處理模塊240包括文件提取單元241、哈希摘要計(jì)算單元242和哈希 摘要比較單元243。所述文件提取單元241,用于從所述升級(jí)文件中提取一個(gè)需要作升級(jí)處 理的升級(jí)模塊文件;所述B^希摘要計(jì)算單元242用于使用與生成所迷XML文件所使用的哈 希算法,計(jì)算所述升級(jí)模塊文件的哈希摘要;所述哈希摘要比較單元243用于將計(jì)算獲得的 哈希摘要與所迷XML文件對(duì)應(yīng)描述的哈希摘要做比較,若兩者一致則表示通過(guò)驗(yàn)證處理。
綜上,本發(fā)明具有如下有益技術(shù)效果
1、 本發(fā)明將多個(gè)升級(jí)模塊文件封裝到一個(gè)升級(jí)文件中進(jìn)^f亍集中管理,生成描述各個(gè)升 級(jí)模塊文件的哈希摘要、存儲(chǔ)位置、軟硬件版本等重要信息的XML文件,并通過(guò)數(shù)字簽名 私鑰對(duì)XML文件進(jìn)行加密,按預(yù)定的封裝結(jié)構(gòu)封裝成升級(jí)文件。 一方面,本發(fā)明采用的封 裝結(jié)構(gòu)具有可擴(kuò)展性,可封裝任意數(shù)量和任何數(shù)據(jù)格式的升級(jí)模塊文件,從而確保了升級(jí)文 件的完整性;另一方面,本發(fā)明在封裝升級(jí)文件過(guò)程中采用加密處理,避免升級(jí)文件被篡改, 從而確保了升級(jí)文件的合法性。
2、 本發(fā)明進(jìn)行固件升級(jí)過(guò)程中,由于升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置、版本等重 要信息保存在數(shù)字簽名文件中,而取得數(shù)字簽名文件必須對(duì)加密的升級(jí)文件進(jìn)行正確的解密 處理,因此,本發(fā)明對(duì)升級(jí)文件進(jìn)行數(shù)字簽名處理,確保了升級(jí)流程的可靠性。
3 、本發(fā)明提出了在封裝的升級(jí)文件中集成數(shù)字簽名,通過(guò)數(shù)字簽名驗(yàn)證升級(jí)模塊的完 整性和合法性,并通過(guò)后自動(dòng)生成的一個(gè)升級(jí)腳本完成將升級(jí)模塊文件寫(xiě)入到Flash的操作, 故對(duì)升級(jí)文件的解析和校驗(yàn)全部自動(dòng)完成,不需要人工干預(yù),提高了升級(jí)程序的便利性和健 壯性
權(quán)利要求
1、一種基于數(shù)字簽名的固件升級(jí)方法,其特征在于,包括步驟生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本信息的XML文件,采用數(shù)字簽名私鑰對(duì)XML文件加密處理,生成數(shù)字簽名文件,將數(shù)字簽名文件和各個(gè)升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用于固件升級(jí)的升級(jí)文件;待進(jìn)行固件升級(jí)的產(chǎn)品獲取升級(jí)文件,從升級(jí)文件中提取數(shù)字簽名文件并解密處理,得到XML文件;解析XML文件,篩選出需要作升級(jí)處理的升級(jí)模塊文件;分別對(duì)每個(gè)需要作升級(jí)處理的升級(jí)模塊文件進(jìn)行驗(yàn)證處理,生成對(duì)所有通過(guò)驗(yàn)證處理的升級(jí)模塊文件進(jìn)行升級(jí)操作的升級(jí)腳本;執(zhí)行升級(jí)腳本對(duì)固件進(jìn)行升級(jí)處理。
2、 根據(jù)權(quán)利要求1所述基于數(shù)字簽名的固件升級(jí)方法,其特征在于,所述驗(yàn)證處理 包括步驟從所述升級(jí)文件中提取一 個(gè)需要作升級(jí)處理的升級(jí)模塊文件; 使用與生成所述XML文件所使用的哈希算法,計(jì)算所述升級(jí)模塊文件的哈希摘要; 將計(jì)算獲得的哈希摘要與所述XML文件對(duì)應(yīng)描述的哈希摘要做比較,若兩者一致則 表示通過(guò)驗(yàn)證處理。
3、 根據(jù)權(quán)利要求1所述基于數(shù)字簽名的固件升級(jí)方法,其特征在于,所述解密處理 是使用數(shù)字簽名公鑰,該數(shù)字簽名公鑰與生成所述數(shù)字簽名文件的數(shù)字簽名私鑰為密鑰 對(duì)。
4、 根據(jù)權(quán)利要求1所述基于數(shù)字簽名的固件升級(jí)方法,其特征在于,所述封裝結(jié)構(gòu) 可封裝任意數(shù)量且不限數(shù)據(jù)才各式的所述升級(jí);f莫塊文件。
5、 一種基于數(shù)字簽名的固件升級(jí)裝置,其特征在于,包括固件封裝模塊,用于生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本 信息的XML文件,采用數(shù)字簽名私鑰對(duì)所述XML文件加密處理,生成數(shù)字簽名文件,將 所述數(shù)字簽名文件和各個(gè)所述升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用 于固件升級(jí)的升級(jí)文件;信息獲取^i塊,用于獲取升級(jí)文件,并從升級(jí)文件中提耳又^:字簽名文件; 解密模塊,用于對(duì)所述數(shù)字簽名文件解密處理,得到所述XML文件;XML文件解析模塊,用于解析XML文件,篩選出需要作升級(jí)處理的升級(jí)模塊文件; 驗(yàn)證處理模塊,用于分別對(duì)每個(gè)需要作升級(jí)處理的升級(jí)模塊文件進(jìn)行驗(yàn)證處理; 升級(jí)腳本生成模塊,用于生成對(duì)所有通過(guò)驗(yàn)證處理的升級(jí)模塊文件進(jìn)行升級(jí)操作的升 級(jí)腳本;升級(jí)執(zhí)行模塊,用于執(zhí)行升級(jí)腳本對(duì)固件進(jìn)行升級(jí)處理。
6、 根據(jù)權(quán)利要求5所述基于數(shù)字簽名的固件升級(jí)裝置,其特征在于,所述驗(yàn)證處理 模塊包括文件提取單元,用于從所述升級(jí)文件中提取一個(gè)需要作升級(jí)處理的升級(jí)模塊文件; 哈希摘要計(jì)算單元,用于使用與生成所述XML文件所使用的哈希算法,計(jì)算所述升級(jí)模塊文件的哈希摘要;哈希摘要比較單元,用于將計(jì)算獲得的哈希摘要與所述XML文件對(duì)應(yīng)描述的哈希摘要做比較,若兩者一致則表示通過(guò)驗(yàn)證處理。
7、 一種基于數(shù)字簽名的固件封裝方法,其特征在于,包括生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件版本信息的XML文件; 采用數(shù)字簽名私鑰對(duì)XML文件加密處理,生成數(shù)字簽名文件;將數(shù)字簽名文件和各個(gè)升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行封裝,得到用于 固件升級(jí)的升級(jí)文件。
8、 一種基于數(shù)字簽名的固件封裝裝置,其特征在于,包括XML文件生成單元,用于生成描述各個(gè)升級(jí)模塊文件的哈希摘要、存儲(chǔ)位置和軟硬件 版本信息的XML文件;數(shù)字簽名文件生成單元,用于采用數(shù)字簽名私鑰對(duì)XML文件加密處理,生成數(shù)字簽 名文件;封裝單元,用于將數(shù)字簽名文件和各個(gè)升級(jí)模塊文件按預(yù)定義的可擴(kuò)展封裝結(jié)構(gòu)進(jìn)行 封裝,得到用于固件升級(jí)的升級(jí)文件。
全文摘要
本發(fā)明公開(kāi)一種基于數(shù)字簽名的固件升級(jí)方法及裝置。其中,該升級(jí)方法包括按預(yù)定封裝結(jié)構(gòu)封裝生成基于數(shù)字簽名的升級(jí)文件;待進(jìn)行固件升級(jí)的產(chǎn)品獲取升級(jí)文件,從升級(jí)文件中提取數(shù)字簽名文件并解密處理,獲得XML文件;解析XML文件,篩選出需要作升級(jí)處理的升級(jí)模塊文件;分別對(duì)每個(gè)需要作升級(jí)處理的升級(jí)模塊文件進(jìn)行合法性和完整性驗(yàn)證處理,生成對(duì)所有通過(guò)驗(yàn)證處理的升級(jí)模塊文件進(jìn)行升級(jí)操作的升級(jí)腳本;執(zhí)行升級(jí)腳本對(duì)固件進(jìn)行升級(jí)處理。本發(fā)明公開(kāi)一種基于數(shù)字簽名的固件封裝方法及裝置。本發(fā)明通過(guò)數(shù)字簽名文件驗(yàn)證升級(jí)文件中各個(gè)升級(jí)模塊文件的完整性與合法性,生成升級(jí)腳本完成固件升級(jí)操作,從而提高固件升級(jí)的安全性與便利性。
文檔編號(hào)G06F17/30GK101436141SQ20081021761
公開(kāi)日2009年5月20日 申請(qǐng)日期2008年11月21日 優(yōu)先權(quán)日2008年11月21日
發(fā)明者麟 景 申請(qǐng)人:深圳創(chuàng)維數(shù)字技術(shù)股份有限公司