專利名稱:軟件升級(jí)包封裝方法以及軟件升級(jí)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件的安全升級(jí)技術(shù)。
背景技術(shù):
作為一種特殊的產(chǎn)品,與純的硬件相比,軟件具有明顯的特點(diǎn)硬件產(chǎn)品如果出了問題 或者功能不完善,可能需要進(jìn)行修理、增加模塊甚至全部更換,軟件作為一個(gè)依附于硬件平 臺(tái)的產(chǎn)品,如果出了類似問題則只需要進(jìn)行簡單的升級(jí)即可以解決。軟件由于系統(tǒng)的復(fù)雜性 、設(shè)計(jì)的不完善、增加功能或者開發(fā)人員的疏忽等,需要更新的可能則更大.比如,微軟的操 作系統(tǒng)不停的發(fā)現(xiàn)BUG, 一個(gè)XP的操作系統(tǒng)到目前為止,可能已經(jīng)有了幾百甚至上千個(gè)補(bǔ)丁。 甚至,有的廠家可能為了趕進(jìn)度、搶占市場,將軟件功能并未全部完善的產(chǎn)品發(fā)布出去,然 后通過升級(jí)的方式為用戶增加新的功能。可見,升級(jí)是軟件非常平常的操作。
軟件的升級(jí)可以分為兩類(1)軟件版本升級(jí);(2)原始版本軟件功能完善,如軟件 補(bǔ)丁或者改變、增加功能或者模塊。軟件的版本升級(jí)指的是新的軟件和原始軟件的功能等發(fā) 生了非常顯現(xiàn)或者重大的變化,而軟件功能的完善則是在原有軟件的基礎(chǔ)上,由于某種安全 或者不穩(wěn)定等原因,增加或者改變原有的部分功能模塊,軟件的功能不發(fā)生重大的變化。比 如對(duì)于常用殺毒軟件,病毒庫的升級(jí)就是后一重情況,而殺毒軟件本身的升級(jí)則是第一類。
在PC機(jī)上,最常見的升級(jí)方式就是到某個(gè)網(wǎng)站去下載軟件的升級(jí)程序,下載或者購買軟 件的高級(jí)版本;也可以由軟件通過網(wǎng)絡(luò),自動(dòng)到相應(yīng)的網(wǎng)站下載升級(jí)。
而對(duì)于數(shù)碼設(shè)備、數(shù)字電視、數(shù)字電視機(jī)頂盒、IPTV機(jī)頂盒、手機(jī)等軟件的升級(jí),則沒 有這么簡單。這些設(shè)備的軟件升級(jí)則比較復(fù)雜。比如,對(duì)于某些數(shù)碼播放設(shè)備,軟件的升級(jí) 需要用戶到指定維修商去升級(jí)或者到相應(yīng)網(wǎng)站下載相關(guān)程序,然后使用數(shù)據(jù)線連接,使用專 用軟件進(jìn)行升級(jí)操作。對(duì)于IPTV終端,由于IPTV本身支持雙向,并向某個(gè)網(wǎng)站發(fā)起服務(wù),因 此可以由終端自身完成升級(jí)操作。而對(duì)于數(shù)字電視和數(shù)字電視機(jī)頂盒,由于這些終端主要使 用在廣播網(wǎng)絡(luò)中,程序的升級(jí)一般只有專業(yè)人員手動(dòng)升級(jí),或者利用數(shù)字電視廣播信道,采 用空中升級(jí)的方式進(jìn)行升級(jí),即廣播服務(wù)器前端將要升級(jí)的軟件封裝為與數(shù)字電視節(jié)目類似 的碼流,并作好標(biāo)記,并通過數(shù)據(jù)播出服務(wù)器向全廣播網(wǎng)絡(luò)播出,并通過條件接收系統(tǒng)等通 知機(jī)頂盒到指定的頻點(diǎn)過濾取出相關(guān)碼流并還原為升級(jí)文件,然后進(jìn)行機(jī)頂盒軟件升級(jí)。
不管采用什么方式獲得升級(jí)文件然后再怎么進(jìn)行升級(jí),以上升級(jí)方式最大的缺點(diǎn)就是存在安全性問題。對(duì)于一般的軟件而言,終端用戶無法知道所獲得的軟件是否就是軟件發(fā)行商 提供的軟件,這些軟件有沒有感染病毒、被修改或者被添加了間諜模塊,這些對(duì)用戶的系統(tǒng) 安全造成了極大的威脅。比如目前常用的Winnap以及暴風(fēng)影音的音視頻播放軟件,被綁了很 多的廣告插件。Wi皿ap以及暴風(fēng)影音等, 一般都是基于開源的程序,程序本身免費(fèi),但是在 網(wǎng)絡(luò)上, 一般都被廣告商采用軟件打包的方式(比如安裝程序制作工具),與廣告或者其它 軟件作成了一個(gè)軟件升級(jí)包。由于用戶無法確定軟件是否只有自己想安裝的部分,是否是自 己需要安裝的部分,因此用戶一旦安裝,將在自己的電腦上安裝許多的間諜軟件和廣告軟件 ,并且很多沒有辦法下載,給用戶系統(tǒng)的安全性、穩(wěn)定性、系統(tǒng)的性能造成很大危害,而這 些問題目前的殺毒軟件并不能有效解決。
對(duì)于涉及到安全的軟件,比如網(wǎng)上銀行,客戶端的軟件除了軟件開發(fā)商本身要保證本軟 件是自己發(fā)行的原始軟件外,銀行還必須保證這個(gè)軟件是自己認(rèn)證過的軟件,開發(fā)商沒有作 手腳,以保證用戶數(shù)據(jù)的安全。在IPTV和數(shù)字電視等涉及到收費(fèi)營運(yùn)的領(lǐng)域,也需要軟件 開發(fā)商和營運(yùn)商共同保證軟件的合法性、有效性和完整性,以有效保護(hù)用戶的安全、保證營 運(yùn)商的安全。
目前,現(xiàn)有的軟件升級(jí)過程, 一般是采用直接升級(jí)的方式,特別是在機(jī)頂盒等數(shù)碼產(chǎn)品 上,在升級(jí)軟件進(jìn)行封裝時(shí)根本沒有經(jīng)過簽名,沒有考慮到軟件的完整性,也沒有考慮多家 對(duì)軟件提供認(rèn)證的問題。本發(fā)明將數(shù)字簽名技術(shù)引入軟件的安全升級(jí)過程,有效保證了軟件 的安全升級(jí)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種保證升級(jí)軟件合法性、完整性的軟件升級(jí)包封 裝方法以及軟件升級(jí)方法。
本發(fā)明為解決上述技術(shù)問題所才的技術(shù)方案是,軟件升級(jí)包封裝方法,包括以下步驟
a、 軟件升級(jí)包發(fā)行商確定需要對(duì)升級(jí)軟件包進(jìn)行驗(yàn)證的多個(gè)認(rèn)證機(jī)構(gòu);
b、 升級(jí)軟件明文經(jīng)哈希運(yùn)算后得到的信息摘要經(jīng)多個(gè)認(rèn)證機(jī)構(gòu)的私鑰分別進(jìn)行加密, 得到各認(rèn)證機(jī)構(gòu)的數(shù)字簽名;
c、 軟件升級(jí)包發(fā)行商將軟件明文、各認(rèn)證機(jī)構(gòu)的數(shù)字簽名和各認(rèn)證機(jī)構(gòu)的數(shù)字證書重 新組合為軟件升級(jí)包發(fā)送至終端設(shè)備。
軟件升級(jí)方法,包括以下步驟
a、 確定需要對(duì)升級(jí)軟件包進(jìn)行驗(yàn)證的多個(gè)認(rèn)證機(jī)構(gòu);
b、 終端設(shè)備接收到軟件升級(jí)包進(jìn)行分解,分解為軟件明文、各認(rèn)證機(jī)構(gòu)的數(shù)字簽名、各認(rèn)證機(jī)構(gòu)的數(shù)字證書;
C、終端設(shè)備驗(yàn)證各認(rèn)證機(jī)構(gòu)的數(shù)字證書是否全部合法,如是,進(jìn)入步驟d;如否,不執(zhí)
行升級(jí)程序;
e、終端設(shè)備采用各認(rèn)證機(jī)構(gòu)的公鑰對(duì)數(shù)字簽名進(jìn)行驗(yàn)證,判斷數(shù)字簽名是否全部合法 ,如是執(zhí)行升級(jí)程序;如否,不執(zhí)行升級(jí)程序。
所述認(rèn)證機(jī)構(gòu)包括軟件升級(jí)包發(fā)行商、軟件開發(fā)商、服務(wù)運(yùn)營商、終端設(shè)備生產(chǎn)商。
采用了本發(fā)明的軟件升級(jí)包封裝方法以及對(duì)應(yīng)的升級(jí)方法, 一旦添加了第三方的東西, 則簽名驗(yàn)證無法通過,可以立即發(fā)現(xiàn)該程序不是原始程序。數(shù)字簽名的基礎(chǔ)就是雜湊算法, 也就是對(duì)整個(gè)程序進(jìn)行摘要運(yùn)算, 一旦程序被修改,則修改后的程序再次取雜湊運(yùn)算,得到 的值和簽名時(shí)的值不相同。
本發(fā)明的有益效果是,通過各認(rèn)證機(jī)構(gòu)的數(shù)字證書驗(yàn)證軟件升級(jí)包的合法性,通過各認(rèn) 證機(jī)構(gòu)的數(shù)字簽名驗(yàn)證軟件升級(jí)包的完整性,經(jīng)過多方參與的對(duì)軟件進(jìn)行共同簽名,保證了 軟件的安全升級(jí)。
具體實(shí)施例方式
本發(fā)明的實(shí)現(xiàn)主要分為以下3個(gè)部分 (1 )在終端設(shè)備中預(yù)置可信任的認(rèn)證機(jī)構(gòu)的數(shù)字證書或者利用服務(wù)器來確認(rèn)可信任的 認(rèn)證機(jī)構(gòu);
(2) 認(rèn)證機(jī)構(gòu)(包括軟件發(fā)行商或者多個(gè)第三方組織)對(duì)軟件分別進(jìn)行數(shù)字簽名,并 將原始的明文軟件和所有的數(shù)字簽名、數(shù)字證書一起發(fā)送給終端設(shè)備;
(3) 終端設(shè)備驗(yàn)證所有的數(shù)字證書是否合法,并判斷軟件的升級(jí)必須要哪幾個(gè)認(rèn)證機(jī) 構(gòu)共同進(jìn)行,如果條件都成立,則驗(yàn)證所有的數(shù)字簽名,驗(yàn)證完成后,進(jìn)行軟件升級(jí)。
拋開軟件升級(jí)終端設(shè)備的具體形態(tài),根據(jù)軟件升級(jí)是否能夠或者支持第三方參與,可以 將終端設(shè)備升級(jí)分為兩類獨(dú)立進(jìn)行軟件升級(jí)和需要第三方權(quán)威機(jī)構(gòu)參與的軟件升級(jí)。這兩 種方式各有特點(diǎn),獨(dú)立進(jìn)行軟件升級(jí)的方式操作簡單,在線或者離線均可以進(jìn)行軟件升級(jí), 在數(shù)字電視廣播中則只能采用該方式,該方式的缺點(diǎn)是信任的認(rèn)證機(jī)構(gòu)以及升級(jí)規(guī)則必須事 先確定,另外需要第三方權(quán)威機(jī)構(gòu)進(jìn)行的升級(jí),則非常靈活,升級(jí)規(guī)則和信任的簽名機(jī)構(gòu)都 可以隨時(shí)靈活更新,缺點(diǎn)是終端必須具備雙向網(wǎng)絡(luò)通信功能。不管是哪類升級(jí)方式,安全升 級(jí)的原理相同,不同的僅僅是升級(jí)程序獲取的方式和數(shù)字證書合法性驗(yàn)證的途徑而已。
本方案定義的軟件升級(jí)包封裝過程如下 (1)升級(jí)包發(fā)行商將要發(fā)布的信息軟件包經(jīng)過Hash運(yùn)算后,得到一個(gè)軟件信息摘要MD,MD = Hash(軟件包)。升級(jí)包發(fā)行商可以是軟件開發(fā)商,也可以是營運(yùn)商;
(2) 升級(jí)包發(fā)行商i用自己的私鑰對(duì)數(shù)據(jù)摘要MD進(jìn)行加密,得到升級(jí)包發(fā)行商i的數(shù)字 簽名。(在下面的軟件安全升級(jí)的過程中,用發(fā)行商i的公鑰對(duì)數(shù)字簽名進(jìn)行解密,再比較 明文得到的摘要,通過判斷是否相同來判斷合法性;
(3) 判斷發(fā)布此升級(jí)軟件必須簽名的認(rèn)證機(jī)構(gòu)(認(rèn)證機(jī)構(gòu)可包括軟件升級(jí)包發(fā)行商、 軟件開發(fā)商、服務(wù)運(yùn)營商、終端設(shè)備生產(chǎn)商等)是否已經(jīng)全部進(jìn)行了簽名,如果沒有完成, 則繼續(xù)其它認(rèn)證機(jī)構(gòu)對(duì)軟件信息摘要MD的數(shù)字簽名過程,如果完成,則升級(jí)包發(fā)行商i將軟 件明文、數(shù)字簽名和自己的數(shù)字證書,重新組合為一個(gè)新的軟件包。
在很多情況下,軟件涉及到多方的利益,軟件的更改、變動(dòng)必須得到多方的共同認(rèn)可才 可以進(jìn)行正式發(fā)布,比如,數(shù)字電視營運(yùn)商要對(duì)數(shù)字電視終端用戶進(jìn)行收費(fèi),如果不進(jìn)行軟 件升級(jí)包合法性的控制,則可能在終端的收費(fèi)被回避,導(dǎo)致營運(yùn)商損失經(jīng)濟(jì)利益,因此營運(yùn) 商要求機(jī)頂盒生廠商或者數(shù)字電視生產(chǎn)廠商發(fā)布的軟件,必須要經(jīng)過軟件開發(fā)商和營運(yùn)商的 共同確認(rèn),才可以進(jìn)行升級(jí)操作。
軟件安全升級(jí)的過程與封裝的過程互為一個(gè)逆過程
(1) 終端設(shè)備將接收到的軟件升級(jí)包進(jìn)行分解,將其分解為軟件包、數(shù)字簽名和數(shù)字證
書;
(2) 升級(jí)終端首先驗(yàn)證數(shù)字證書是否在信任證書列表中,如果是,則繼續(xù)進(jìn)行一步, 否則,重新執(zhí)行第一步;對(duì)于數(shù)字證書是否可是可信任證書,還可以通過互聯(lián)網(wǎng),到指定第 三方權(quán)威機(jī)構(gòu)驗(yàn)證,也可以通過權(quán)威機(jī)構(gòu)的多極CA認(rèn)證機(jī)制進(jìn)行驗(yàn)證。 一般采取在生產(chǎn)終端 設(shè)備時(shí),將信任證書列表全部存儲(chǔ)在終端設(shè)備中,形成信任證書列表的方式進(jìn)行。信任的模 型除了支持直接的證書,還支持基于證書的多級(jí)信任機(jī)制,具體參照PKI定義的方法
(3) 如果成功證書驗(yàn)證完畢,則執(zhí)行下一步,否則繼續(xù)對(duì)(1)步分解后的軟件包繼續(xù) 進(jìn)行步驟(2);
(4) 驗(yàn)證(1)步分解的軟件包以及軟件包的數(shù)字簽名是否合法,如是,則將軟件包輸 出;否則驗(yàn)證失敗,退出,不進(jìn)行軟件升級(jí);
(5) 判斷所軟件的簽名是否已經(jīng)全部完成,如果是,則進(jìn)行下一步,否則,繼續(xù)執(zhí)行 (1);
(6) 判斷軟件升級(jí)包是否滿足升級(jí)的要求,如果滿足升級(jí)的要求,則執(zhí)行下一步,否 則軟件驗(yàn)證失敗退出,不進(jìn)行軟件的升級(jí)。所謂滿足升級(jí)要求是指規(guī)定的所有數(shù)字簽名的 驗(yàn)證已經(jīng)全部通過,比如,數(shù)字電視的升級(jí)要求條件接收系統(tǒng)廠商、機(jī)頂盒終端廠商、營運(yùn)商全部對(duì)軟件進(jìn)行認(rèn)證簽名,則終端進(jìn)行軟件升級(jí)時(shí)必須驗(yàn)證營運(yùn)商、終端廠商、條件接收 系統(tǒng)廠商的全部數(shù)字簽名,任何一個(gè)沒有數(shù)字簽名或者任何一個(gè)數(shù)字簽名沒有通過,均視為 數(shù)字簽名驗(yàn)證失敗,不可執(zhí)行升級(jí)程序; (7)執(zhí)行軟件升級(jí)。
權(quán)利要求
權(quán)利要求1軟件升級(jí)包封裝方法,其特征在于,包括以下步驟a、軟件升級(jí)包發(fā)行商確定需要對(duì)升級(jí)軟件包進(jìn)行驗(yàn)證的多個(gè)認(rèn)證機(jī)構(gòu);b、升級(jí)軟件明文經(jīng)哈希運(yùn)算后得到的信息摘要經(jīng)多個(gè)認(rèn)證機(jī)構(gòu)的私鑰分別進(jìn)行加密,得到各認(rèn)證機(jī)構(gòu)的數(shù)字簽名;c、軟件升級(jí)包發(fā)行商將軟件明文、各認(rèn)證機(jī)構(gòu)的數(shù)字簽名和各認(rèn)證機(jī)構(gòu)的數(shù)字證書重新組合為軟件升級(jí)包發(fā)送至終端設(shè)備。
2.如權(quán)利要求l所述軟件升級(jí)包封裝方法,其特征在于,所述認(rèn)證機(jī) 構(gòu)包括軟件升級(jí)包發(fā)行商、軟件開發(fā)商、服務(wù)運(yùn)營商、終端設(shè)備生產(chǎn)商。
3.軟件升級(jí)方法,其特征在于,包括以下步驟a、 確定需要對(duì)升級(jí)軟件包進(jìn)行驗(yàn)證的多個(gè)認(rèn)證機(jī)構(gòu);b、 終端設(shè)備接收到軟件升級(jí)包進(jìn)行分解,分解為軟件明文、各認(rèn)證機(jī)構(gòu)的數(shù)字簽名、 各認(rèn)證機(jī)構(gòu)的數(shù)字證書;c、 終端設(shè)備驗(yàn)證各認(rèn)證機(jī)構(gòu)的數(shù)字證書是否全部合法,如是,進(jìn)入步驟d;如否,不 執(zhí)行升級(jí)程序;d、 終端設(shè)備采用各認(rèn)證機(jī)構(gòu)的公鑰對(duì)數(shù)字簽名進(jìn)行驗(yàn)證,判斷數(shù)字簽名是否全部合法 ,如是執(zhí)行升級(jí)程序;如否,不執(zhí)行升級(jí)程序。
4.如權(quán)利要求3所述軟件升級(jí)方法,其特征在于,步驟a中,終端設(shè) 備獲取各認(rèn)證機(jī)構(gòu)的數(shù)字證書,并根據(jù)各認(rèn)證機(jī)構(gòu)的數(shù)字證書建立信任證書列表;步驟c中,終端設(shè)備通過査找本地的信任證書列表,判斷各認(rèn)證機(jī)構(gòu)的數(shù)字證書是否都 在信任證書列表中,如是,各認(rèn)證機(jī)構(gòu)的數(shù)字證書全部合法;否則,不合法。
5.如權(quán)利要求3所述軟件升級(jí)方法,其特征在于,步驟c中,終端設(shè) 備將各認(rèn)證機(jī)構(gòu)的數(shù)字證書發(fā)送至指定的第三方權(quán)威機(jī)構(gòu)進(jìn)行驗(yàn)證,判斷各認(rèn)證機(jī)構(gòu)的數(shù)字 證書是否均驗(yàn)證通過,如是,各認(rèn)證機(jī)構(gòu)的數(shù)字證書全部合法;否則,不合法。
6.如權(quán)利要求3、 4或5所述軟件升級(jí)方法,其特征在于,所述認(rèn)證機(jī)構(gòu)包括軟件升級(jí)包發(fā)行商、軟件開發(fā)商、服務(wù)運(yùn)營商、終端設(shè)備生產(chǎn)商。
全文摘要
本發(fā)明涉及軟件的安全升級(jí)技術(shù),提供一種保證升級(jí)軟件合法性、完整性的軟件升級(jí)包封裝方法以及軟件升級(jí)方法。本發(fā)明在終端設(shè)備中預(yù)置可信任的認(rèn)證機(jī)構(gòu)的數(shù)字證書或者利用服務(wù)器來確認(rèn)可信任的認(rèn)證機(jī)構(gòu);認(rèn)證機(jī)構(gòu)對(duì)軟件分別進(jìn)行數(shù)字簽名,并將原始的明文軟件和所有的數(shù)字簽名、數(shù)字證書一起發(fā)送給終端設(shè)備;終端設(shè)備驗(yàn)證所有的數(shù)字證書是否合法,并判斷軟件的升級(jí)必須要哪幾個(gè)認(rèn)證機(jī)構(gòu)共同進(jìn)行,如果條件都成立,則驗(yàn)證所有的數(shù)字簽名,驗(yàn)證完成后,進(jìn)行軟件升級(jí)。本發(fā)明通過各認(rèn)證機(jī)構(gòu)的數(shù)字證書驗(yàn)證軟件升級(jí)包的合法性,通過各認(rèn)證機(jī)構(gòu)的數(shù)字簽名驗(yàn)證軟件升級(jí)包的完整性,經(jīng)過多方參與的對(duì)軟件進(jìn)行共同簽名,保證了軟件的安全升級(jí)。
文檔編號(hào)G06F9/445GK101425114SQ20081030620
公開日2009年5月6日 申請(qǐng)日期2008年12月12日 優(yōu)先權(quán)日2008年12月12日
發(fā)明者劉賢洪 申請(qǐng)人:四川長虹電器股份有限公司