專利名稱:保護(hù)軟件系統(tǒng)的完整性的安全設(shè)備和方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)和軟件安全領(lǐng)域,尤其涉及保護(hù)在不安全環(huán)境中 運(yùn)行的軟件系統(tǒng)的完整性的安全設(shè)備和方法及其系統(tǒng)。
背景技術(shù):
在許多情況下,客戶所獲得的軟件運(yùn)行于對(duì)軟件供應(yīng)商來(lái)說(shuō)不安全的環(huán) 境中。雖然軟件供應(yīng)商已經(jīng)在軟件包中嵌入了諸如"試用版本"時(shí)間限制之 類的使用限制機(jī)制,但是客戶仍然具有強(qiáng)烈的動(dòng)機(jī)來(lái)破解和繞過(guò)該限制機(jī)制 以獲得更大的利益。如何在惡意環(huán)境中保護(hù)限制機(jī)制以防止被惡意用戶破解 和繞過(guò)總是所關(guān)注的問(wèn)題。隨著軟件服務(wù)的發(fā)展,許多軟件供應(yīng)商提供服務(wù)軟件或者軟件模塊,對(duì) 于這些作為服務(wù)而提供和部署在客戶位置處的不安全服務(wù)器中的軟件來(lái)說(shuō), 雖然軟件供應(yīng)商總是希望依據(jù)他們的服務(wù)運(yùn)行而進(jìn)行適當(dāng)?shù)挠涃~,但是對(duì)服 務(wù)的交易狀態(tài)進(jìn)行審核是非常困難的。一個(gè)更通常的情況是那些服務(wù)組件可以進(jìn)一步集成到部署在其他客戶站 點(diǎn)處的新解決方案中。在這樣的情況下,如何得知服務(wù)組件的再使用狀態(tài)并 且控制對(duì)服務(wù)組件的使用來(lái)獲得更多的收益, 一直是服務(wù)組件所有者考慮的 大問(wèn)題。通常,利用防篡改技術(shù)(例如,加殼(envelop)技術(shù))來(lái)保護(hù)軟件程序, 以防止該軟件程序被篡改或者分析(例如,提取密鑰,專用算法等)。大多數(shù) 傳統(tǒng)的防篡改技術(shù)基于軟件方式。這些技術(shù)是加密軟件的敏感數(shù)據(jù)/代碼,以 提高惡意用戶竊取機(jī)密的門(mén)檻。但是純軟件方式的安全級(jí)別是有限的,并面 臨被有經(jīng)驗(yàn)的駭客破解的危險(xiǎn)。此外, 一旦軟件程序已經(jīng)交付給客戶,則難 以升級(jí)其安全算法。另一種避免被破解的解決方案是將一些關(guān)鍵的模塊移植到部署在軟件供 應(yīng)商站點(diǎn)處的后臺(tái)服務(wù)器中,即安全域中。但是這種解決方案要求部署在客 戶站點(diǎn)處的服務(wù)器頻繁地連接后臺(tái)服務(wù)器,因此,這對(duì)于客戶是不方便的。(例如,客戶可能想要將整個(gè)服務(wù)產(chǎn)品部署在單獨(dú)的系統(tǒng)中并向終端用戶演 示)。此外,在這種解決方案中,軟件供應(yīng)商必須進(jìn)行7X24的維護(hù)服務(wù),以 接收來(lái)自客戶的連接??尚牌脚_(tái)(Trusted Platform, TP )是具有可能以內(nèi)置硬件形式構(gòu)造的可 信部件的計(jì)算平臺(tái),其使用該部件創(chuàng)建軟件處理的信任基礎(chǔ)。它使用基于平 臺(tái)完整性的信任來(lái)提供比純軟件方案更高的安全性。但是,考慮到客戶的感 受和實(shí)現(xiàn)復(fù)雜度,在客戶的服務(wù)器或者機(jī)器中部署TP模塊并不總是可接受 的。此外,某些可信平臺(tái)的存儲(chǔ)器大小和CPU性能可能會(huì)對(duì)運(yùn)行的服務(wù)進(jìn)行 限制。軟件狗可用于保護(hù)軟件程序防止被未經(jīng)授權(quán)的拷貝,但是它們不能防止 破解或者繞過(guò)限制功能。因此可以看出,現(xiàn)有技術(shù)要么提供過(guò)低的軟件保護(hù)級(jí)別,要么需要特定 的硬件系統(tǒng),這對(duì)于軟件供應(yīng)商而言都不是所期望的。所需要的是一種能夠 增強(qiáng)在不安全環(huán)境中運(yùn)行的軟件系統(tǒng)的安全性、以防止被篡改和繞過(guò),并且 不用改變現(xiàn)有硬件結(jié)構(gòu)的軟件保護(hù)技術(shù)。發(fā)明內(nèi)容考慮到上述問(wèn)題而在本發(fā)明中提出了一種新穎的保護(hù)軟件系統(tǒng)完整性的 安全設(shè)備和方法及其系統(tǒng)。本發(fā)明的一個(gè)目的是提供一種能夠以高軟件保護(hù)級(jí)別來(lái)保護(hù)在不安全運(yùn) 行環(huán)境中的軟件,以防止該軟件被篡改和繞過(guò)的安全設(shè)備和方法及其系統(tǒng)。本發(fā)明的另一個(gè)目的是提供一種能夠以客戶可以接受的方式來(lái)保護(hù)在客 戶站點(diǎn)處運(yùn)行的軟件的安全設(shè)備和方法及其系統(tǒng)。本發(fā)明的還有一個(gè)目的是提供一種能夠不改變現(xiàn)有硬件結(jié)構(gòu)且以高保護(hù) 級(jí)別來(lái)保護(hù)軟件的安全設(shè)備和方法及其系統(tǒng)。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于保護(hù)軟件 系統(tǒng)的完整性的安全設(shè)備,其包含模板存儲(chǔ)庫(kù),用于存儲(chǔ)生成代理模塊所 需的模板;代理模塊生成器,用于從所述模板存儲(chǔ)庫(kù)中隨機(jī)選擇一個(gè)模板, 并根據(jù)所選擇的模板生成新代理模塊;以及收發(fā)器,用于將所述新代理模塊 發(fā)送到與所述安全設(shè)備通信的外部設(shè)備,以更新在所述外部設(shè)備中運(yùn)行的當(dāng) 前代理模塊,其中所述當(dāng)前代理模塊用于驗(yàn)證在所述外部設(shè)備中運(yùn)行的所述軟件系統(tǒng)的完整性。根據(jù)本發(fā)明的另 一個(gè)方面,還提供了 一種用于在安全設(shè)備中保護(hù)軟件系統(tǒng)的完整性的方法,包括步驟選擇用于生成代理模塊的模板;根據(jù)所選定 模板生成新代理模塊;以及將所生成的新代理模塊發(fā)送到與所述安全設(shè)備通 信的外部設(shè)備,以更新在所述外部設(shè)備中運(yùn)行的當(dāng)前代理模塊,其中所述當(dāng) 前代理模塊用于驗(yàn)證在所述外部設(shè)備中運(yùn)行的所述軟件系統(tǒng)的完整性。根據(jù)本發(fā)明的再一個(gè)方面,提供了一種用于保護(hù)軟件系統(tǒng)的完整性的系 統(tǒng),包括模板提供設(shè)備,用于存儲(chǔ)并更新生成代理模塊所需的模板;安全 設(shè)備,用于從所述模板提供設(shè)備接收模板,并根據(jù)接收的模板生成新代理模 塊;以及外部設(shè)備,用于運(yùn)行所述軟件系統(tǒng)以及當(dāng)前代理模塊,其中所述當(dāng) 前代理模塊用于驗(yàn)證所述軟件系統(tǒng)的完整性,其中,所述安全設(shè)備將所述新代理模塊發(fā)送到所述外部設(shè)備,以更新所述當(dāng)前代理;漠塊。在本發(fā)明中,安全設(shè)備部署在客戶站點(diǎn)處,并且可以間斷性地連接到部 署在軟件供應(yīng)商站點(diǎn)處的后臺(tái)服務(wù)器。該安全設(shè)備連接到其上部署了要被保 護(hù)的軟件的服務(wù)器,并且具有強(qiáng)制整個(gè)軟件或者嵌入該軟件中的代理模塊自 動(dòng)定期更新到最新版本的機(jī)制。因此,為了獲得未經(jīng)授權(quán)的權(quán)限,惡意客戶 必須破解每個(gè)版本,因此破解工作將增強(qiáng)到客戶無(wú)法接受的程度。此外,安 全設(shè)備還提供了一些服務(wù)(例如,信任時(shí)間服務(wù))來(lái)防止惡意客戶欺騙限制 機(jī)制(例如,通過(guò)時(shí)間回滾)。與傳統(tǒng)解決方案相比,本發(fā)明具有下列優(yōu)點(diǎn)提供了比傳統(tǒng)軟件防篡改技術(shù)更強(qiáng)的安全性而不用太多工作;.因?yàn)檎麄€(gè) 軟件或者軟件中的限制模塊(即代理模塊)的更新間隔可以根據(jù)動(dòng)態(tài)風(fēng)險(xiǎn)等 級(jí)而改變,所以可以動(dòng)態(tài)調(diào)整安全等級(jí)。不必讓安全設(shè)備一直連接到部署在軟件供應(yīng)商處的后臺(tái)服務(wù)器,因此允 許客戶將整個(gè)服務(wù)產(chǎn)品部署在具有安全設(shè)備的單獨(dú)筆記本計(jì)算機(jī)中,并且向 終端用戶演示。不取決于特定可信平臺(tái),因此其對(duì)于客戶是方便和節(jié)省成本的;性能不 受特定硬件的限制。安全設(shè)備可以由多個(gè)服務(wù)器共享,以便減少成本。因此,根據(jù)本發(fā)明所提供的安全設(shè)備和安全系統(tǒng)及其方法不僅可以防止 未經(jīng)授權(quán)的拷貝,而且還可以防止對(duì)限制機(jī)制的破解。
本發(fā)明可以通過(guò)參考下文中結(jié)合附圖所進(jìn)行的描述而得到更好的理解, 其中在所有附圖中使用了相同或相似的附圖標(biāo)記來(lái)表示相同或者相似的部 件,在附圖中圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的服務(wù)盒的框圖; 圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的軟件保護(hù)系統(tǒng)的詳細(xì)體系結(jié)構(gòu)圖; 圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的代理模塊及對(duì)應(yīng)模板具體結(jié)構(gòu)圖; 圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的生成代理模塊的處理的流程圖; 圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,從模板生成代理模塊的具體處理的 流程圖;圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例從模板生成代理模塊的具體消息流;圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例生成模塊更新請(qǐng)求的流程圖;圖8示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,在服務(wù)盒和代理模塊之間更新代理模塊的消息流示意圖;圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的服務(wù)盒中的模板部署示意圖; 圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,隨機(jī)選擇模板的處理流程圖; 圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例驗(yàn)證底層軟件完整性的處理流程圖; 圖12示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,驗(yàn)證底層軟件系統(tǒng)完整性的處理的消息流示意圖;圖13示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的軟件系統(tǒng)之間的功能調(diào)用流程圖; 圖14示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的軟件系統(tǒng)之間功能調(diào)用的消息流 示意圖;以及圖15示出了根據(jù)本發(fā)明的系統(tǒng)的典型布置圖。
具體實(shí)施方式
以下將結(jié)合附圖進(jìn)行描述。為了清楚和簡(jiǎn)明起見(jiàn),在說(shuō)明書(shū)中并未描述 實(shí)際實(shí)施方式的所有特征。然而,應(yīng)該了解,在開(kāi)發(fā)任何這種實(shí)際實(shí)施例的 過(guò)程中必須做出很多特定于實(shí)施方式的決定,以便實(shí)現(xiàn)開(kāi)發(fā)人員的具體目標(biāo), 例如符合那些與系統(tǒng)及業(yè)務(wù)相關(guān)的限制條件,其中這些限制條件會(huì)隨著實(shí)施 方式的不同而改變。此外,還應(yīng)該了解,雖然開(kāi)發(fā)工作有可能非常復(fù)雜和費(fèi)時(shí),但對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),這種開(kāi)發(fā)工作僅僅是例行的任務(wù)。在此,需要說(shuō)明的一點(diǎn)是,為了避免因不必要的細(xì)節(jié)而模糊了本發(fā)明, 在附圖中僅^l示出了與本發(fā)明的方案密切相關(guān)的裝置結(jié)構(gòu)和/或處理步驟,而 省略了與本發(fā)明關(guān)系不大的其他細(xì)節(jié)。圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的安全設(shè)備(服務(wù)盒)110的框圖。如圖l所示,本發(fā)明用于保護(hù)軟件系統(tǒng)的完整性的服務(wù)盒110包括模 板存儲(chǔ)庫(kù)111,用于存儲(chǔ)生成代理模塊130所需的模板103;模塊生成器112, 用于從所述模板存儲(chǔ)庫(kù)111中隨機(jī)選擇一個(gè)模板103,并根據(jù)所選擇的模板 103生成新代理模塊;以及信息收發(fā)器114,用于將所述新代理模塊發(fā)送到與 所述服務(wù)盒110通信的外部設(shè)備140,以更新在所述外部設(shè)備140中運(yùn)行的 當(dāng)前代理模塊130。在本發(fā)明中,所述當(dāng)前代理模塊130用于驗(yàn)證在所述外 部設(shè)備140中運(yùn)行的軟件系統(tǒng)150的完整性。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的軟件保護(hù)系統(tǒng)100的體系結(jié)構(gòu)框圖。 如圖2所示,軟件保護(hù)系統(tǒng)100包含后臺(tái)服務(wù)器101、安全設(shè)備(在本說(shuō)明 書(shū)中也稱為"服務(wù)盒",二者可以替換使用)110、和外部設(shè)備140,其中外 部設(shè)備140中運(yùn)行有代理模塊130。后臺(tái)服務(wù)器101位于軟件供應(yīng)商的站點(diǎn) 處,由軟件供應(yīng)商控制,后臺(tái)服務(wù)器101中包含有模板存儲(chǔ)器102,其中存 儲(chǔ)了由軟件供應(yīng)商提供的模板103。在后臺(tái)服務(wù)器101和"服務(wù)盒"IIO之間 存在可間斷的連接,當(dāng)服務(wù)盒110連接到后臺(tái)服務(wù)器101時(shí),服務(wù)盒110從 后臺(tái)服務(wù)器101下載新發(fā)布的模板103,并且將其存儲(chǔ)在模板存儲(chǔ)庫(kù)111中。 這里,所述新發(fā)布的模板103是從服務(wù)盒110上次連接到后臺(tái)服務(wù)器101以 來(lái)新發(fā)布的模板103。服務(wù)盒110位于客戶位置處,其中包含有模板存儲(chǔ)庫(kù)111,用于存儲(chǔ) 模板103;第二信息收發(fā)器112,用于與后臺(tái)服務(wù)器101建立連接(該連接可 以是雙向的,也可以是單向的),其可以向后臺(tái)服務(wù)器101發(fā)送各種請(qǐng)求,和 /或接收從后臺(tái)服務(wù)器101發(fā)送的新模板103,并將新模板103存儲(chǔ)到模板存 儲(chǔ)庫(kù)lll中;模塊生成器112,用于從模板存儲(chǔ)庫(kù)111中選擇一個(gè)(或多個(gè)) 模板103,并根據(jù)所選擇的模板103來(lái)生成新的代理模塊;第一信息收發(fā)器 114,用于與服務(wù)盒110外部的外部設(shè)備140建立雙向連接,以便從外部設(shè)備 140中的代理模塊130接收各種請(qǐng)求以及將各種處理結(jié)果返回到外部設(shè)備140 中的代理模塊130;處理器115,用于對(duì)來(lái)自代理模塊130的請(qǐng)求進(jìn)行檢驗(yàn),并且提取其中的各種請(qǐng)求消息,并且根據(jù)各個(gè)消息的內(nèi)容,將各個(gè)請(qǐng)求們轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)模塊116、 117、 118a、 118b、 119等中進(jìn)行處理。服務(wù)盒110中還包含代理模塊更新服務(wù)模塊116、信任時(shí)間服務(wù)模塊117、 關(guān)鍵功能服務(wù)模塊118a、加密解密服務(wù)模塊118b、和軟件系統(tǒng)完整性服務(wù)模 塊119之類的各種服務(wù)模塊,用于對(duì)處理器115所轉(zhuǎn)發(fā)的各種請(qǐng)求進(jìn)行相應(yīng) 的處理。服務(wù)盒110中還包含有控制器120,用于在服務(wù)盒110通電時(shí),加載 服務(wù)盒110中的各個(gè)部件,并且驗(yàn)證這些部件是否運(yùn)行正常和未被篡改。雖 然服務(wù)盒110是一個(gè)單獨(dú)的硬件裝置,但是由于服務(wù)盒110部署在客戶位置 處,服務(wù)盒110存在被一些惡意客戶篡改的可能性,因此提供控制器120, 使其在服務(wù)盒110通電運(yùn)行時(shí)檢查其完整性,以避免服務(wù)盒110被惡意篡改, 這提高了服務(wù)盒110的安全性。代理模塊130優(yōu)選為軟件模塊,其嵌入在客戶位置處運(yùn)行的外部設(shè)備140 中。在一些情況下,外部設(shè)備140中可以僅僅運(yùn)行一個(gè)模塊,此時(shí),代理模 塊130本身就可以是外部設(shè)備140中運(yùn)行的整個(gè)軟件系統(tǒng)。在大多數(shù)情況下, 如圖1所示,客戶位置處的外部設(shè)備140中運(yùn)行的軟件系統(tǒng)是大型的軟件系 統(tǒng),其包括多層軟件模塊,如位于最底層的操作系統(tǒng)和硬件接口層141、位 于其上的各種應(yīng)用運(yùn)行環(huán)境層(例如java虛擬機(jī)層144和網(wǎng)絡(luò)應(yīng)用服務(wù)器145)、以及處于頂層的各個(gè)運(yùn)行組件143。在多層軟件模塊中,越底層的模 塊處理越底層的事務(wù),如系統(tǒng)I/0,硬件接口、驅(qū)動(dòng)等,所以越不會(huì)發(fā)生更新; 而在軟件系統(tǒng)頂層運(yùn)行的各個(gè)組件與具體業(yè)務(wù)相關(guān),因此需要根據(jù)業(yè)務(wù)邏輯 而進(jìn)行較為頻繁的修改。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,為了在保護(hù)該軟件系統(tǒng) 的同時(shí)避免對(duì)現(xiàn)有系統(tǒng)進(jìn)行頻繁更新,優(yōu)選為將代理模塊130實(shí)現(xiàn)為最頂層 的運(yùn)行組件之一。性的技術(shù)。在本發(fā)明的實(shí)施例中,代理模塊130可以驗(yàn)證其底層軟件層的完 整性(將在下文中詳細(xì)描述該處理),因此利用代理模塊130就可以驗(yàn)證在客 戶位置運(yùn)行的整個(gè)軟件系統(tǒng)的完整性。此時(shí),如何保持代理模塊130的完整 性以及防止代理模塊130被破解就成了本發(fā)明首要關(guān)注的問(wèn)題。本發(fā)明提供了一種強(qiáng)制代理模塊130通過(guò)服務(wù)盒110以某個(gè)間隔自動(dòng)地 將自身更新到新版本的機(jī)制來(lái)保證代理模塊130的完整性。同時(shí),在該機(jī)制 中,每個(gè)新代理模塊130都是隨機(jī)產(chǎn)生的,其難以讓破解者找到破解每個(gè)自動(dòng)新生成的代理模塊130的一般方法。此外, 一些模板103被選擇的可能性非常小,而且很少被選擇,因此,等待全部模板的出現(xiàn)變?yōu)椴豢赡艿氖虑?。此外,由于服?wù)盒110從軟件供應(yīng)商處的后臺(tái)服務(wù)器101不定期下載更新后 的模板,這更會(huì)使得對(duì)代理模塊130的破解變?yōu)閹缀醪豢赡艿氖虑椤T谙挛?中,將會(huì)對(duì)代理模塊130更新處理進(jìn)行更詳細(xì)的描述。在描述代理模塊130更新處理之前,首先對(duì)代理模塊130和其相對(duì)應(yīng)的 模板103的具體結(jié)構(gòu)進(jìn)行詳細(xì)描述。圖3示出了根據(jù)本發(fā)明實(shí)施例的代理模 塊130及其相對(duì)應(yīng)的模板103的具體結(jié)構(gòu)。如圖3所示,模板103主要包含五個(gè)單元原始文件單元301,包含一 個(gè)或者多個(gè)原始文件302,每個(gè)原始文件302包含在代理模塊130中的每個(gè) 相對(duì)應(yīng)文件311的原始數(shù)據(jù);參數(shù)單元303,其中定義了每個(gè)原始文件302 中的哪些部分將由新生成的參數(shù)所代替;密鑰拆分算法單元304,定義了如何根據(jù)密鑰生成這些參數(shù)的算法,即將該密鑰拆分為各個(gè)參數(shù)并且將其嵌入 到各個(gè)文件311中的算法,其中密鑰是在根據(jù)模板103生成代理模塊130時(shí), 由服務(wù)盒110為該代理模塊130生成的密鑰(第一密鑰);"有效時(shí)段"單元 305,定義了這個(gè)模板103的有效時(shí)段;以及概率單元306,定義了該模板被 選中的概率。在為每個(gè)模板103生成密鑰的處理中,服務(wù)盒110可以生成對(duì) 稱密鑰和不對(duì)稱密鑰對(duì),該不對(duì)稱密鑰對(duì)包括私鑰和公鑰。在服務(wù)盒110生 成不對(duì)稱密鑰對(duì)的情況下,由密鑰拆分算法所拆分的密鑰是其中的私鑰。與模板103的具體結(jié)構(gòu)相對(duì)應(yīng),代理模塊130中主要包含以下單元各 個(gè)文件311,其中嵌入了為該代理模塊130生成的密鑰(第一密鑰)的各個(gè) 密鑰段(未示出);密鑰組合算法單元313,其利用與模板103中的密鑰拆分 算法相反的密鑰組合算法,組合嵌入在各個(gè)文件311中的密鑰段,以恢復(fù)該 代理模塊130的密鑰;代理模塊證書(shū)單元314,由生成該代理模塊130的服 務(wù)盒110簽名,并且包括所述代理模塊130的密鑰,該證書(shū)中還包含了代理 模塊130的有效期315,當(dāng)有效期到期時(shí),強(qiáng)制代理模塊130進(jìn)行更新。如 上所述,在服務(wù)盒110為代理模塊130生成不對(duì)稱密鑰對(duì)的情況下,由密鑰 組合算法313組合被插入到各個(gè)文件311中的密鑰段所形成的密鑰是其中的 私鑰,而包含在代理模塊證書(shū)單元314中的密鑰是與該私鑰對(duì)應(yīng)的公鑰。接下來(lái),參考圖4、圖5和圖6描述代理模塊130的更新處理,其中圖4 示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的服務(wù)盒110生成代理模塊130的流程圖400。如圖4所示,生成新代理模塊的處理400開(kāi)始于步驟S401,其中模塊生 成器112響應(yīng)于代理模塊更新服務(wù)模塊116的命令,從模板存儲(chǔ)庫(kù)111中隨 機(jī)選擇一個(gè)模板103,如何隨機(jī)選擇模板103的處理將在下文中進(jìn)行詳細(xì)描 述。代理模塊更新服務(wù)模塊116可以響應(yīng)于來(lái)自代理模塊130的請(qǐng)求而發(fā)出 該命令,或者本身定期主動(dòng)發(fā)出該命令。當(dāng)然,不論是哪種情況,都屬于本 發(fā)明的保護(hù)范圍之內(nèi)。然后,處理前進(jìn)到步驟S405,其中模塊生成器112根據(jù)所選擇的模板103 來(lái)生成新的代理模塊(生成新代理模塊的過(guò)程將在下面詳細(xì)描述)。在模塊生成器112生成了新代理模塊之后,在步驟S410,模塊生成器112 生成用于該新代理模塊的證書(shū)314,該證書(shū)314中包含了預(yù)先為該新代理模 塊生成的密鑰(第一密鑰,其中在不對(duì)稱密鑰對(duì)的情況下,在該證書(shū)中包含 了密鑰對(duì)中的公鑰),并且用服務(wù)盒110的私鑰對(duì)該證書(shū)314簽名,即用服務(wù) 盒110本身的密鑰(第二密鑰,在不對(duì)稱密鑰對(duì)的情況下,是其中的私鑰) 對(duì)證書(shū)中的密鑰或者密鑰對(duì)中的公鑰進(jìn)行加密。在該證書(shū)中可定義新代理模 塊的有效期,以便當(dāng)代理模塊130到期時(shí),強(qiáng)制代理模塊130進(jìn)行更新。此 外,代理模塊130的有效期是可以動(dòng)態(tài)調(diào)整的值,軟件供應(yīng)商可根據(jù)外部設(shè) 備140中的軟件系統(tǒng)所處環(huán)境的風(fēng)險(xiǎn)等級(jí)來(lái)調(diào)整該值,例如在較為友好的環(huán) 境中,可以將代理模塊130的有效期設(shè)置的長(zhǎng)一些。然后該處理將該證書(shū)附 加到新代理模塊中。然后,在步驟S415,服務(wù)盒110中的第一信息收發(fā)器114將所生成的新 代理模塊傳輸?shù)酵獠吭O(shè)備140中,以替換原代理模塊130 (可以稱為當(dāng)前代 理模塊),從而完成該處理。圖5示出了根據(jù)模塊生成器112生成新代理模塊的具體處理流程500, 其是上述步驟S405的更具體的描述。在該處理中,模塊生成器112首先生成 專用于該新代理模塊的對(duì)稱密鑰,或者在使用不對(duì)稱密鑰對(duì)的情況下,生成 不對(duì)稱密鑰對(duì)(S510)。隨后,模塊生成器112提取模板103的"原始文件" 單元301中的各個(gè)原始文件302(S520 )。接著,片莫塊生成器112根據(jù)模板103 中的密鑰拆分算法304,將所生成的密鑰(在不對(duì)稱密鑰對(duì)的情況下,是指 其中的私鑰)拆分為各個(gè)參數(shù)(S530 )。需要注意的是,各個(gè)參數(shù)不必全部都 是密鑰的組成部分,這些參數(shù)可以是任何數(shù)據(jù),只要與密鑰拆分算法相對(duì)應(yīng) 的密鑰組合算法可以根據(jù)這些參數(shù)組合出被拆分的密鑰即可。例如, 一些參數(shù)可以是在拆分密鑰時(shí)隨機(jī)生成的數(shù)據(jù)。模塊生成器112然后根據(jù)模板103 的參數(shù)單元303的定義,用所生成的各個(gè)參數(shù)替換原始文件302中的各個(gè)部 分,以形成新代理模塊中的各個(gè)文件311 (S540)??蛇x地,模塊生成器112 還可以生成與密鑰拆分算法304相對(duì)應(yīng)的密鑰組合算法313,并且將其嵌入 到代理模塊130中(S550 )。優(yōu)選地,密鑰組合算法313可以作為可執(zhí)行代碼 而預(yù)先嵌入到某個(gè)原始文件302中,此時(shí),由于該算法已經(jīng)被包括在新代理 模塊中,因此可以省略步驟S550。由上述圖4和圖5的處理過(guò)程可知,所述生成的代理模塊中被嵌入了證 書(shū)以及被分解的第 一密鑰,其中所述證書(shū)是利用第二密鑰加密所述第 一密鑰 而獲得的。圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,根據(jù)模板103生成代理模塊130的 具體示例。如圖6所示,模板103包含兩個(gè)原始文件,即Classl和Class2。 參數(shù)單元303定義了三個(gè)參數(shù)位置,即Classl的"FactorO 1=0000"中的"0000" 部分(P01)和"Factor02=0000,,中的"0000"部分(P02),以及Class2的 "Factor01=0000"中的"0000"部分(P03)。密鑰拆分算法304定義了生成 三個(gè)參數(shù)的算法,其中P01和P02是隨機(jī)數(shù),而P03是4艮據(jù)算法"P01AP02A 代理模塊私鑰"而生成的。原始文件Class2中還嵌入了與密鑰拆分算法304 相對(duì)應(yīng)的密鑰組合算法313。在生成新代理模塊的過(guò)程中,服務(wù)盒110生成 用于新代理模塊的密鑰對(duì),并提取原始文件Classl和Class2。然后服務(wù)盒110 根據(jù)密鑰拆分算法304,生成用于參數(shù)P01和P02的兩個(gè)隨機(jī)數(shù)1010和1001, 并根據(jù)算法"P0"P02A代理模塊私鑰"來(lái)生成P03,其值為1111。接著,根 據(jù)參數(shù)P01 、 P02和P03在原始文件Classl和Class2中的位置,將Classl中 "FactorO 1=0000"修改為"Factor01=1010"以及"Factor02=0000"修改為 "Factor02=1001 ,,, 以及將Class2 中的 "FactorO 1=0000 ,,修改為 "Factor01=llll",由此產(chǎn)生了新代理模塊中的文件Classl和Class2。從上面的描述可以看出,代理模塊中的參數(shù)位置和數(shù)目可以按照每個(gè)代 理模塊而不同,而且每個(gè)代理模塊都有自己專用的密鑰,且用于組合代理模 塊密鑰的算法也可以隨著代理模塊的不同而不同,因此對(duì)于惡意客戶來(lái)說(shuō), 逐個(gè)破解代理模塊是非常困難的事情。上面已經(jīng)完整地描述了服務(wù)盒110更新代理模塊130的處理流程。如上所述,上述過(guò)程可以是在服務(wù)盒110中的控制器120的控制下,響應(yīng)于來(lái)自代理模塊130的更新請(qǐng)求而完成的?,F(xiàn)在將詳細(xì)描述外部設(shè)備140 中的代理模塊130發(fā)送該更新請(qǐng)求的處理流程。圖7示出了在外部設(shè)備140和服務(wù)盒110之間發(fā)送和接收代理模塊更新 請(qǐng)求的處理流程700。如圖7所示,在步驟S720,代理模塊130首先生成代理模塊更新請(qǐng)求。 生成代理模塊更新請(qǐng)求的處理可以以預(yù)定的時(shí)間間隔來(lái)進(jìn)行,該時(shí)間間隔的 長(zhǎng)短可以根據(jù)具體的應(yīng)用環(huán)境而設(shè)定為不同的值。然后,處理前進(jìn)到步驟 S725,其中,代理模塊130利用嵌入其中的密鑰組合算法313,提取嵌入在 代理模塊130的各個(gè)文件311中的各個(gè)參數(shù),并且計(jì)算得到該代理模塊130 的密鑰(在不對(duì)稱密鑰對(duì)的情況下,其為代理模塊130的私鑰)。然后,在步 驟S730,用該代理模塊密鑰來(lái)加密該代理模塊更新請(qǐng)求,以生成加密后的代 理模塊更新請(qǐng)求。隨后,在步驟S735,將代理模塊130中的證書(shū)附加于該請(qǐng) 求,并且以上述的預(yù)定時(shí)間間隔將它們一起發(fā)送到服務(wù)盒110。即,所述服 務(wù)盒IIO從所述外部設(shè)備接收的由代理模塊130生成的請(qǐng)求(代理模塊更新 請(qǐng)求),是利用從代理模塊130中提取的第一密鑰來(lái)加密的,并附有所述證書(shū)。在步驟S740,服務(wù)盒110中的處理器115通過(guò)第一信息收發(fā)器114接收 該請(qǐng)求,并且驗(yàn)證所附的證書(shū)。由于該證書(shū)是用服務(wù)盒110的私鑰簽名(加 密)的,所以服務(wù)盒110可以利用其公鑰(第二密鑰)對(duì)其進(jìn)行解密,以獲 得其中的代理模塊密鑰(第一密鑰),由此驗(yàn)證該證書(shū)是否是由該服務(wù)盒110 簽名的(即,比較該代理模塊密鑰是否是服務(wù)盒110為該代理模塊130原始 產(chǎn)生的密鑰)。如果驗(yàn)證通過(guò),則處理前進(jìn)到步驟S745,否則,經(jīng)由第一信 息收發(fā)器114發(fā)送錯(cuò)誤警告(步驟S755 )然后結(jié)束該處理。在步驟S745,處理器115利用證書(shū)中所包含的代理模塊密鑰(第一密鑰, 在不對(duì)稱密鑰對(duì)的情況下,其為公鑰),解密已加密的代理模塊更新請(qǐng)求,以 獲得未加密的代理模塊更新請(qǐng)求。即,處理器115利用第二密鑰解密該證書(shū), 以獲得第一密鑰,并用所獲得的第一密鑰解密被加密的"i貪求,以獲得該請(qǐng)求 的內(nèi)容和/或類型。隨后,在步驟S750,處理器115根據(jù)該請(qǐng)求的類型(在這里是代理模塊 更新請(qǐng)求),將該請(qǐng)求發(fā)送給代理模塊更新服務(wù)模塊116進(jìn)行處理。代理模塊 更新服務(wù)模塊116接收該請(qǐng)求,向模塊生成器112發(fā)送命令,以開(kāi)始如上所 述生成代理模塊的更新處理。由上所述,該模塊更新請(qǐng)求被定期發(fā)送到服務(wù)盒110,其中的模塊生成 器112響應(yīng)于該模塊更新請(qǐng)求來(lái)生成新代理模塊。另夕卜,在步驟S750,如果所接收的請(qǐng)求是其它類型的請(qǐng)求,則處理器115 將根據(jù)請(qǐng)求的不同類型,分別將請(qǐng)求發(fā)送給相應(yīng)的服務(wù)模塊116、 117、 118a、 118b、 119等進(jìn)行處理。根據(jù)上述可以看出,代理模塊130向服務(wù)盒110發(fā)送更新請(qǐng)求的處理中, 用代理模塊密鑰對(duì)其進(jìn)行加密,并且連同代理模塊證書(shū)一起發(fā)送到服務(wù)盒 110,然后服務(wù)盒110驗(yàn)證代理模塊證書(shū),利用代理模塊證書(shū)中的代理模塊密 鑰對(duì)解密服務(wù)請(qǐng)求,然后進(jìn)行相關(guān)的處理。實(shí)際上不僅僅是代理模塊更新請(qǐng) 求,任何從外部設(shè)備140發(fā)送到服務(wù)盒110的處理都需要經(jīng)過(guò)類似的處理, 即利用代理模塊密鑰進(jìn)行加密,并且在服務(wù)盒110處進(jìn)行解密的過(guò)程。這樣 的處理保證了在外部設(shè)備140和服務(wù)盒110之間的加密通信,可以防止敏感 信息泄露,并且提高了該通信被破解的難度,此外,由于代理模塊130會(huì)定 期更新,則使得惡意用戶獲取通信內(nèi)容的企圖更加難以實(shí)現(xiàn)。根據(jù)上述,為了使代理模塊130更加難以破解,可以在根據(jù)模板103生 成代理模塊130的處理中,隨機(jī)地選擇一個(gè)模板。以上描述可以參考圖8得到直觀的示例,其中圖8示出了根據(jù)本發(fā)明一 個(gè)實(shí)施例,當(dāng)更新代理模塊130時(shí),在服務(wù)盒IIO和外部設(shè)備140之間的消 息流示意圖。在下文中,將參考圖9和圖10更詳細(xì)描述模板103的存儲(chǔ)方式和隨機(jī)選 擇模板103的處理流程。圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,服務(wù)盒110中的模板103部署方式。 如圖9所示,服務(wù)盒110中的模板存儲(chǔ)庫(kù)111包含三個(gè)區(qū)域,"就緒"區(qū)域901, "使用中,,區(qū)域卯2,和"過(guò)期,,區(qū)域903。當(dāng)服務(wù)盒IIO連接到后臺(tái)服務(wù)器 101時(shí),它將下載更新后的全部模板103,并且將它們放入"就緒"區(qū)域901 中。隨后,如果模板103中的"有效時(shí)段"305的內(nèi)容指示該模板103處于 有效期內(nèi),則將該模板103移入"使用中"區(qū)域902中。如果模板103中的 "有效時(shí)段,,305的內(nèi)容指示該模板103已經(jīng)失效,則將該模板103移入"過(guò) 期"區(qū)域903中。在選擇一個(gè)模板103以生成新代理模塊130的處理中,模 塊生成器112隨機(jī)選擇處于模板儲(chǔ)存庫(kù)111的"使用中"區(qū)域902中的某個(gè) 模板103。圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例隨機(jī)選擇模板103的處理流程1000。 如圖10所示,在隨機(jī)選擇模板103的處理中,首先在步驟S1010,模塊生成 器112生成大小在0和l之間的隨機(jī)數(shù)Rn。然后在步驟S1020,對(duì)于在模板 存儲(chǔ)庫(kù)111的"使用中"區(qū)域902中的模板103,提取這些模板103中的概率 單元306中的值。接著在步驟S1030,利用'M吏用中"區(qū)域902中的模板103 的數(shù)量和表示每個(gè)模板103被選取的可能性的概率值,為每個(gè)模板103提供 一個(gè)選中范圍,該選中范圍與每個(gè)模板103中的概率值相對(duì)應(yīng)。模板103的 概率值越大,所產(chǎn)生的選中范圍也就越大。即,模塊生成器112基于隨機(jī)數(shù) 以及所述模板中定義的概率值,從所述模板存儲(chǔ)庫(kù)中選4奪所述模板。圖9中給出了計(jì)算選中范圍的一種算法。如圖9所示,首先計(jì)算每個(gè)模 板103的概率值占"使用中"區(qū)域902中的全部模板103的概率值總和的比 例,然后按照模板103的某個(gè)次序順序排列每個(gè)模塊所占比例的所處范圍, 即可得到每個(gè)模塊的選中范圍。例如,在"使用中"區(qū)域902中包括兩個(gè)模 板具有概率值0.1的模板3和具有概率值0.4的模板2,則根據(jù)該算法,模 板3所占比例為0.1/(0.1+0.4)=0.2,而模板2所占比例為0.4/(0.1+0.4)=0.8,因 為模板的排列次序?yàn)橄饶0?后模板2,所以模板3的選中范圍為0-0.2,而 模板2的選中范圍為0,2-1,0。然后,回到圖10,在步驟S1040,將隨機(jī)數(shù)Rn和每個(gè)模板103的選中 范圍進(jìn)行比較,如果隨機(jī)數(shù)Rn落入某個(gè)模板103的選中范圍中,則選擇該才莫 板103用于生成新代理模塊130。如上所述,每個(gè)模板103被選中以生成新代理模塊130的概率和每個(gè)模 板的概率值緊密相關(guān)。因?yàn)椴荒艽_定會(huì)選擇哪個(gè)模板,所以難以讓破解者找 到破解每個(gè)新生成的代理模塊的一般方法。此外, 一些模板可能具有非常小 的概率值而且很少被選擇,因此,等待全部沖莫板的出現(xiàn)變?yōu)椴豢赡艿氖虑椋?這讓破解者幾乎不可能破解代理^^莫塊130。此外,應(yīng)當(dāng)注意到,上面結(jié)合圖IO流程圖給出的隨機(jī)獲取模板103的處 理僅僅是示范性的??梢允褂闷渌魏坞S機(jī)處理來(lái)選擇才莫板103,只要該隨 機(jī)處理使得每個(gè)模板103被選中的概率和模板中的概率值相關(guān)即可。上面已經(jīng)描述了通過(guò)強(qiáng)制更新代理模塊130、并在更新代理模塊130時(shí) 隨機(jī)產(chǎn)生所述新代理模塊130來(lái)防止代理模塊130的完整性被破解的機(jī)制和 處理,但是如先前所述,在代理^^莫塊130作為軟件組件而在軟件系統(tǒng)中運(yùn)行的情況下,還需要通過(guò)代理模塊130來(lái)保證底層軟件的完整性。下面參考圖11和12描述利用代理模塊130來(lái)保證底層軟件完整性的處 理。圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例,驗(yàn)^t底層軟件完整性的處理流程; 而圖12示出了該驗(yàn)證處理的消息流示意圖。假定用于計(jì)算底層軟件的完整性特征信息的可執(zhí)行代碼包含在代理模塊 130中某個(gè)文件中。對(duì)于代理模塊130作為代理組件在一個(gè)多層軟件系統(tǒng)中 運(yùn)行的情況下,由于多層軟件系統(tǒng)一般會(huì)對(duì)各層軟件之間的調(diào)用進(jìn)行嚴(yán)格限 制,即在通常情況下,在多層軟件系統(tǒng)中,上層軟件對(duì)底層軟件的調(diào)用一般 通過(guò)底層軟件所提供的接口完成,且上層軟件不能直接訪問(wèn)底層軟件的地址 空間,因此優(yōu)選為將代理模塊130中用于計(jì)算底層軟件完整性特征信息的可 執(zhí)行代碼劃分為兩個(gè)部分, 一部分在上層軟件空間中運(yùn)行(如圖12所示的 Check.class),而另 一部分則在底層軟件空間中運(yùn)行(如圖12所示的JNI.dll )。 由于JNI.dll處于底層軟件空間中,所以其可以計(jì)算在底層軟件運(yùn)行時(shí)處理空 間中的每個(gè)模塊的完整性特征信息,并且通過(guò)其和Check.class之間的接口將 計(jì)算結(jié)果傳送到上層空間。因此,這種劃分可以在符合多層軟件系統(tǒng)要求的 情況下,獲得底層軟件的完整性特征信息。如圖11中的步驟S1110所示,在開(kāi)始檢查底層軟件空間完整性時(shí),位于 上層軟件空間中的Check.class (如圖12所示)調(diào)用處于底層軟件空間中的 JNI.dll,對(duì)在底層軟件運(yùn)行空間中每個(gè)模塊的只讀部分進(jìn)行哈希計(jì)算,以獲 得每個(gè)模塊的哈希值。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,哈希值是完整性特征信息 的一種,在本發(fā)明中,顯然還可以使用模塊的其它信息作為模塊的完整性特 征信息。在隨后的步驟S1120、 S1130、 S1140、 S1150和S1160類似于參考圖7 所述的步驟S725、 S730、 S735、 S740,即,將所提取的各個(gè)模塊哈希值作為 要由代理模塊130發(fā)送的請(qǐng)求處理,其中,利用代理模塊密鑰加密該請(qǐng)求, 并且將該加密的請(qǐng)求連同代理模塊證書(shū)一起發(fā)送到服務(wù)盒110,然后由服務(wù) 盒110檢測(cè)該代理模塊證書(shū)是否正確。其中,在步驟S1120,使用所計(jì)算的 哈希值生成完整性驗(yàn)證請(qǐng)求;在步驟S1130,提取密鑰組合算法313以計(jì)算 代理模塊密鑰;然后,在步驟S1140,用代理模塊密鑰加密完整性驗(yàn)證請(qǐng)求; 然后,在步驟S1150,將代理模塊證書(shū)附加到該驗(yàn)證請(qǐng)求中,并將該驗(yàn)證請(qǐng) 求發(fā)送到服務(wù)盒110。在步驟S1160中,服務(wù)盒IIO接收該驗(yàn)證請(qǐng)求,并驗(yàn)證該證書(shū)是否正確 以及是否過(guò)期。步驟S1160與圖7中的步驟S740的不同之處在于,在步驟 S1160中,還對(duì)證書(shū)的有效期進(jìn)^^僉查,如果該證書(shū)過(guò)期了,則前進(jìn)到步驟 S1165,經(jīng)由第一信息收發(fā)器U4向代理模塊130傳輸指示"證書(shū)不正確或者 過(guò)期,,的消息,以強(qiáng)制代理模塊130進(jìn)行更新。如果對(duì)證書(shū)的驗(yàn)證通過(guò),則處理前進(jìn)到步驟S1170。在步驟S1170中, 提取代理模塊證書(shū)中的代理模塊密鑰,以解密該完整性驗(yàn)證請(qǐng)求;然后,在 步驟S1180,根據(jù)請(qǐng)求的內(nèi)容,處理器115將該請(qǐng)求發(fā)送到軟件完整性服務(wù) 模塊119。步驟S1170和S1180中的處理分別類似圖7中的步驟S745和S750 中的處理。所不同之處在于,由于此時(shí)代理模塊130發(fā)送的請(qǐng)求中所包含的 內(nèi)容是各個(gè)模塊的哈希值,所以控制器120會(huì)將該請(qǐng)求內(nèi)容發(fā)送給軟件完整 性服務(wù)模塊119。然后,在步驟S1190,軟件完整性服務(wù)模塊119將代理模塊130所發(fā)送 的各個(gè)模塊的哈希值與軟件完整性服務(wù)模塊119中存儲(chǔ)的各個(gè)模塊的相應(yīng)哈 希值進(jìn)行比較。如果二者相一致,則認(rèn)為外部設(shè)備140中的軟件系統(tǒng)是完整 的,并且在步驟S1192允許該外部設(shè)備140中的軟件系統(tǒng)進(jìn)行進(jìn)一步#:作。 否則,認(rèn)為該軟件系統(tǒng)的完整性受到了破壞,并在步驟S1195采取進(jìn)一步措 施來(lái)阻止該軟件系統(tǒng)的運(yùn)行。也就是說(shuō),所述服務(wù)盒110的軟件完整性服務(wù)模塊119響應(yīng)于上述驗(yàn)證 請(qǐng)求,利用驗(yàn)證請(qǐng)求中的軟件系統(tǒng)完整性特征信息(哈希值),驗(yàn)證在外部設(shè) 備140中運(yùn)行的軟件系統(tǒng)的完整性。如上所述,可以利用代理模塊130和服務(wù)盒110來(lái);^驗(yàn)在代理模塊130 底層軟件系統(tǒng)的完整性。另外,現(xiàn)有技術(shù)中已經(jīng)提供了由底層軟件系統(tǒng)來(lái)檢 驗(yàn)上層軟件完整性的已知技術(shù),因此,在現(xiàn)有技術(shù)基礎(chǔ)上結(jié)合本發(fā)明所提供 的創(chuàng)造性方法和系統(tǒng),可以保證在客戶位置處的外部設(shè)備140中運(yùn)行的軟件 系統(tǒng)的完整性。另外,還存在惡意客戶繞過(guò)代理模塊130和服務(wù)盒110的可能性,即, 上述所有處理均需要代理模塊130和服務(wù)盒110之間的交互,如果惡意客戶 使得外部設(shè)備140的軟件系統(tǒng)中的軟件運(yùn)行不通過(guò)代理才莫塊130進(jìn)行,則就 可以繞過(guò)服務(wù)盒110,為了防止這樣的繞過(guò),可以采用下列方法中的一個(gè)或 者多個(gè)以確保軟件系統(tǒng)中的某些功能需要服務(wù)盒110的幫助。1. 將軟件系統(tǒng)中運(yùn)行的軟件應(yīng)用的一些關(guān)鍵功能移植到服務(wù)盒110中,作為由服務(wù)盒110提供的服務(wù)(如圖2所示的關(guān)鍵功能服務(wù)模塊118a);2. 軟件系統(tǒng)中運(yùn)行的軟件應(yīng)用所需要的一些數(shù)據(jù)(例如,數(shù)據(jù)庫(kù),調(diào)用 參數(shù)等)必須由服務(wù)盒110加密(如圖2所示的加密解密服務(wù)模塊118b);3. 在某一軟件系統(tǒng)中運(yùn)行的軟件應(yīng)用(如圖14所示的軟件應(yīng)用1403 ) 需要調(diào)用在其他軟件系統(tǒng)中的軟件應(yīng)用(如圖14所示的軟件應(yīng)用1404)所 提供的功能時(shí),該軟件系統(tǒng)間的調(diào)用必須通過(guò)代理模塊130完成。所述第1和第2種方法的處理類似于圖7、 8、 11和12.中有關(guān)代理模塊 130向服務(wù)盒110發(fā)送請(qǐng)求的處理,所不同之處僅在于代理模塊130所發(fā)送 的請(qǐng)求的類型和內(nèi)容不同,以及服務(wù)盒110中進(jìn)行處理的相應(yīng)服務(wù)模塊不同。例如,如果代理模塊130所發(fā)送的請(qǐng)求是信任時(shí)間服務(wù)請(qǐng)求、關(guān)鍵功能 服務(wù)請(qǐng)求、加密解密服務(wù)請(qǐng)求等中的一種或幾種,則服務(wù)盒110中的各個(gè)服 務(wù)模塊117、 118a、 118b等可以響應(yīng)于所接收的服務(wù)請(qǐng)求,向外部設(shè)備140 中的軟件系統(tǒng)提供信任時(shí)間服務(wù)、關(guān)鍵功能服務(wù)、以及加密解密服務(wù)中的一 種或幾種。由此,通過(guò)提供相應(yīng)的服務(wù)來(lái)防止惡意客戶欺騙限制機(jī)制,例如, 可以提供信任時(shí)間源來(lái)防止時(shí)間回滾。此外,當(dāng)代理模塊130調(diào)用服務(wù)盒110來(lái)幫助執(zhí)行這些服務(wù)功能時(shí),如 上述圖11中的步驟S1160所示,服務(wù)盒110將檢查代理模塊130是否及時(shí)更 新到新的版本。如果代理模塊130未更新到新版本(即代理模塊130的證書(shū) 已經(jīng)過(guò)期了),則拒絕該調(diào)用,并強(qiáng)制代理模塊130更新到最新的版本。也就 是說(shuō),上述請(qǐng)求的證書(shū)中包含代理模塊130的有效期,如果該有效期已經(jīng)過(guò) 期,則服務(wù)盒IIO拒絕該請(qǐng)求,并要求發(fā)出該請(qǐng)求的代理模塊130進(jìn)行更新。下面參考圖13和14,詳細(xì)描述上述第3種方法中在軟件系統(tǒng)之間進(jìn)行 功能調(diào)用的過(guò)程。其中圖13描述了根據(jù)本發(fā)明一個(gè)實(shí)施例、在軟件系統(tǒng)之間 的功能調(diào)用流程圖1300,而圖14描述了根據(jù)本發(fā)明的一個(gè)實(shí)施例、軟件系 統(tǒng)之間功能調(diào)用的消息示意圖。如圖13所示,在步驟S1301,某一軟件系統(tǒng)中的軟件應(yīng)用(如圖14中 的1403 )生成原始的系統(tǒng)間調(diào)用請(qǐng)求。隨后該軟件系統(tǒng)中的代理模塊(如圖 14中的140a)在步驟S1305提取代理模塊密鑰,在步驟S1310用代理模塊密 鑰加密該系統(tǒng)間調(diào)用請(qǐng)求,然后在步驟S1315,將代理模塊證書(shū)附于該加密 請(qǐng)求,并且將該包含代理模塊證書(shū)的請(qǐng)求返回到該系統(tǒng)中的軟件應(yīng)用1403。步驟S1305到S1315的處理類似于圖7中的步驟S725到S735,所不同之處 僅為請(qǐng)求的內(nèi)容不同。該處理繼續(xù)到步驟S1320,其中該軟件應(yīng)用1403將經(jīng)加密的系統(tǒng)間調(diào)用 請(qǐng)求發(fā)送到另一個(gè)軟件系統(tǒng)中對(duì)應(yīng)軟件應(yīng)用(如圖14中的1404)。該對(duì)應(yīng)軟 件應(yīng)用1404隨后在步驟S1325將該加密的系統(tǒng)間調(diào)用請(qǐng)求發(fā)送到該軟件系統(tǒng) 中的代理模塊(如圖14中的140b)。該代理模塊140b在步驟S1330利用服 務(wù)盒110的公鑰對(duì)該請(qǐng)求所包含的證書(shū)進(jìn)行驗(yàn)證并檢查其是否過(guò)期。如果證 書(shū)未通過(guò)驗(yàn)證或者過(guò)期了,則拒絕該系統(tǒng)間調(diào)用(步驟S1335 )。如果證書(shū)通 過(guò)驗(yàn)證且未過(guò)期,則該代理模塊140b在步驟S1340用代理模塊證書(shū)中嵌入的 代理模塊密鑰解密該請(qǐng)求以獲得原始系統(tǒng)間調(diào)用請(qǐng)求??蛇x地,該代理模塊 140b還可對(duì)已解密的系統(tǒng)間調(diào)用請(qǐng)求進(jìn)行策略檢查,以確定是否允許該調(diào)用 (步驟S1345 )。如果不允許該調(diào)用,則拒絕該系統(tǒng)間調(diào)用(步驟S1335 )。相 反,如果允許該調(diào)用,則將該系統(tǒng)間調(diào)用請(qǐng)求返回到對(duì)應(yīng)的軟件應(yīng)用1404, 以進(jìn)行進(jìn)一步處理(步驟S1350 )。圖14示出了系統(tǒng)間功能調(diào)用的 一個(gè)詳細(xì)示意圖,假定存在兩個(gè)根據(jù)本發(fā) 明的軟件系統(tǒng)1401和1402,軟件系統(tǒng)1401中包括代理模塊140a和軟件應(yīng)用 1403,而軟件系統(tǒng)1402中包括代理才莫塊140b和軟件應(yīng)用1404。當(dāng)軟件應(yīng)用 1403調(diào)用軟件系統(tǒng)1402中的軟件應(yīng)用1404所提供的功能時(shí),其將功能調(diào)用 請(qǐng)求發(fā)送到代理模塊140a進(jìn)行加密和簽名,然后將經(jīng)過(guò)加密的請(qǐng)求和簽名發(fā) 送到軟件應(yīng)用1404。軟件應(yīng)用1404在收到經(jīng)過(guò)加密的請(qǐng)求和簽名之后,請(qǐng) 求其所在的軟件系統(tǒng)1402中的代理模塊140b對(duì)該請(qǐng)求進(jìn)行^S正和解密,獲 得原始功能調(diào)用請(qǐng)求,而且代理模塊140b中還包括策略引擎1405,其對(duì)該 功能調(diào)用請(qǐng)求的策略進(jìn)行檢查,以確定是否允許該調(diào)用,如果允許,則將該 請(qǐng)求返回到軟件應(yīng)用1404進(jìn)行后續(xù)處理。上面已經(jīng)描述了三種防止繞過(guò)代理模塊130的方法,通過(guò)上述三種方法, 使得外部設(shè)備140中的軟件系統(tǒng)的運(yùn)行根本無(wú)法繞過(guò)代理模塊130,因此也 就無(wú)法繞過(guò)服務(wù)盒110。如上所述,根據(jù)本發(fā)明所提供的安全設(shè)備、系統(tǒng)和方法,在外部設(shè)備的 軟件系統(tǒng)中的代理模塊被強(qiáng)制自動(dòng)地定期更新到最新的版本,而且新版本的 選擇是隨機(jī)的,所以難以讓破解者找到破解代理模塊的方法。此外,代理模 塊可以通過(guò)與安全設(shè)備的交互來(lái)保證代理模塊所處的外部設(shè)備中的軟件系統(tǒng)的完整性,而且外部設(shè)備中的軟件系統(tǒng)的運(yùn)行無(wú)法繞開(kāi)代理模塊和安全設(shè)備, 因此根據(jù)本發(fā)明所提供的安全設(shè)備、系統(tǒng)和方法可以以較高的安全級(jí)別保護(hù) 在不安全環(huán)境中運(yùn)行的軟件系統(tǒng)。另外,安全設(shè)備本身將部署在安全的嵌入系統(tǒng)中,其中沒(méi)有運(yùn)行未經(jīng)授 權(quán)軟件的方法,而且在加載期間會(huì)驗(yàn)證該設(shè)備本身的完整性。這些措施可以 確保該安全設(shè)備本身難以被破解。另外,安全設(shè)備和外部設(shè)備的軟件系統(tǒng)之間的連接可以采用任何連接方 式,該軟件系統(tǒng)可以部署在桌面或者膝上型計(jì)算機(jī)中,或者多個(gè)軟件系統(tǒng)可 以部署在一臺(tái)服務(wù)器當(dāng)中。所有這些軟件系統(tǒng)可以共享同一個(gè)安全設(shè)備,以 便減少成本。圖15給出了本發(fā)明軟件保護(hù)系統(tǒng)的典型部署方式。其中,服務(wù)盒110作為單獨(dú)的設(shè)備連接到LAN 1510中,包含有代理模塊的軟件系統(tǒng) 1520a和1520b分別駐留在作為外部設(shè)備的膝上型計(jì)算機(jī)1530a和1530b中, 且分別包含有不斷更新的模板的軟件系統(tǒng)1540a和1540b駐留在同一臺(tái)服務(wù) 器1550中。計(jì)算機(jī)1530a和1530b以及服務(wù)器1550都連接到LAN 1510。軟 件系統(tǒng)1520a、 1520b、 1540a和1540b通過(guò)LAN與服務(wù)盒110相連,并且共 享同一個(gè)服務(wù)盒110。上述系統(tǒng)的操作方式與圖2中所示的軟件保護(hù)系統(tǒng)相 類似,這里不再——詳述。需要說(shuō)明的是,本發(fā)明的實(shí)施例可以通過(guò)硬件、軟件或者硬件和軟件結(jié) 合的方式來(lái)實(shí)現(xiàn),其實(shí)現(xiàn)方式不對(duì)本發(fā)明的范圍構(gòu)成限制。其中多個(gè)部件的功能可以被合并為同一個(gè)部件來(lái)完成,而其中某一個(gè)部件的 功能也可以被分解為多個(gè)部件類完成。例如,服務(wù)盒110中的處理器115和 控制器120,它們的功能可以由一個(gè)部件例如控制器120獨(dú)自完成。以上雖然結(jié)合附圖詳細(xì)描述了本發(fā)明的實(shí)施例,但是應(yīng)當(dāng)明白,上面所 描述的實(shí)施方式只是用于說(shuō)明本發(fā)明的示例,而并不構(gòu)成對(duì)本發(fā)明的限制。 對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),可以對(duì)上述實(shí)施方式做出各種修改和變更而不背離本發(fā)明的實(shí)質(zhì)和范圍。因此,本發(fā)明的范圍僅由所附權(quán)利要求及其等效 含義來(lái)限定。
權(quán)利要求
1、一種用于保護(hù)軟件系統(tǒng)的完整性的安全設(shè)備,包含模板存儲(chǔ)庫(kù),用于存儲(chǔ)生成代理模塊所需的模板;代理模塊生成器,用于從所述模板存儲(chǔ)庫(kù)中隨機(jī)選擇一個(gè)模板,并根據(jù)所選擇的模板生成新代理模塊;以及收發(fā)器,用于將所述新代理模塊發(fā)送到與所述安全設(shè)備通信的外部設(shè)備,以更新在所述外部設(shè)備中運(yùn)行的當(dāng)前代理模塊,其中所述當(dāng)前代理模塊用于驗(yàn)證在所述外部設(shè)備中運(yùn)行的所述軟件系統(tǒng)的完整性。
2. 如權(quán)利要求1所述的安全設(shè)備,還包括板,并將其存儲(chǔ)于所述模板存儲(chǔ)庫(kù)中。
3. 如權(quán)利要求1所述的安全設(shè)備,其中所述代理模塊生成器基于隨機(jī)數(shù) 以及所述模板中定義的概率值,從所述模板存儲(chǔ)庫(kù)中選擇所述模板。
4. 如權(quán)利要求1所述的安全設(shè)備,其中所述當(dāng)前代理模塊和所述新代理 模塊中被嵌入了證書(shū)以及被分解的第 一 密鑰,其中所述證書(shū)是利用第二密鑰 加密所述第一密鑰獲得的。
5. 如權(quán)利要求4所述的安全設(shè)備,其中所述收發(fā)器從所述外部設(shè)備接收 由所述當(dāng)前代理模塊生成的請(qǐng)求,其中所述請(qǐng)求是利用從當(dāng)前代理模塊中提 取的所述第一密鑰來(lái)加密的,并附有所述證書(shū)。
6. 如權(quán)利要求5所述的安全設(shè)備,其中所述請(qǐng)求是代理模塊更新請(qǐng)求, 所述代理模塊更新請(qǐng)求被定期發(fā)送到所述安全設(shè)備,而且所述代理模塊生成 器響應(yīng)于所述代理模塊更新請(qǐng)求來(lái)生成所述新代理^^塊。
7. 如權(quán)利要求5所述的安全設(shè)備,其中所述請(qǐng)求是驗(yàn)證請(qǐng)求,并且所述 安全設(shè)備還包括驗(yàn)證模塊,其響應(yīng)于所述驗(yàn)證請(qǐng)求,利用所述驗(yàn)證請(qǐng)求中的 軟件系統(tǒng)完整性特征信息,驗(yàn)證在所述外部設(shè)備中運(yùn)行的軟件系統(tǒng)的完整性。
8. 如權(quán)利要求5所述的安全設(shè)備,其中所述請(qǐng)求是服務(wù)請(qǐng)求,并且所述 安全設(shè)備還包括服務(wù)模塊,其響應(yīng)于所述服務(wù)請(qǐng)求,向所述軟件系統(tǒng)提供信 任時(shí)間服務(wù)、關(guān)鍵功能服務(wù)、以及加密解密服務(wù)中的一種或多種。
9. 如權(quán)利要求7或8所述的安全設(shè)備,其中所述請(qǐng)求的證書(shū)中包含所述當(dāng)前代理模塊的有效期,如果所述有效期過(guò)期,則拒絕所述請(qǐng)求,并要求發(fā) 出所述請(qǐng)求的當(dāng)前代理模塊進(jìn)行更新。
10. 如權(quán)利要求5所述的安全設(shè)備,還包括處理器,用于利用所述第二 密鑰解密所述證書(shū),以獲得所述第一密鑰,并用所述第一密鑰解密被加密的 請(qǐng)求,以獲得所述請(qǐng)求。
11. 一種在安全設(shè)備中保護(hù)軟件系統(tǒng)的完整性的方法,包括步驟 選擇用于生成代理模塊的模板; 根據(jù)所選定模板生成新代理模塊;以及將所生成的新代理模塊發(fā)送到與所述安全設(shè)備通信的外部設(shè)備,以更新 在所述外部設(shè)備中運(yùn)行的當(dāng)前代理模塊,其中所述當(dāng)前代理模塊用于驗(yàn)證在所述外部設(shè)備中運(yùn)行的所述軟件系統(tǒng) 的完整性。
12. 如權(quán)利要求11所述的方法,還包括步驟從所述安全設(shè)備外部的服務(wù)提供端間斷地接收新的模板,并將所述新模 板存儲(chǔ)于所述模板存儲(chǔ)庫(kù)中。
13. 如權(quán)利要求11所述的方法,其中基于隨機(jī)數(shù)以及定義的概率值選擇 所述模板。
14. 如權(quán)利要求11所述的方法,還包括步驟利用第二密鑰加密第一密 鑰以獲得證書(shū),所述當(dāng)前代理模塊和所述新代理模塊中被嵌入了證書(shū)以及被 分解的第一密鑰。
15. 如權(quán)利要求14所述的方法,其中還包括從所述外部設(shè)備接收由所述 當(dāng)前代理模塊生成的請(qǐng)求的步驟,其中所述請(qǐng)求是利用從當(dāng)前代理模塊中提 取的所述第一密鑰加密的,并附有所述證書(shū)。
16. 如權(quán)利要求15所述的方法,其中所述請(qǐng)求是代理^t塊更新請(qǐng)求,所 述代理模塊更新請(qǐng)求被定期發(fā)送到所述安全設(shè)備,并且響應(yīng)于所述代理模塊 更新請(qǐng)求來(lái)生成所述新代理模塊。
17. 如權(quán)利要求15所述的方法,其中所述請(qǐng)求是驗(yàn)證請(qǐng)求,所述方法還 包括步驟響應(yīng)于所述驗(yàn)證請(qǐng)求,利用所述驗(yàn)證請(qǐng)求中的、運(yùn)行于所述外部 設(shè)備中的所述軟件系統(tǒng)的完整性特征信息,驗(yàn)證所述軟件系統(tǒng)的完整性。
18. 如權(quán)利要求15所述的方法,其中所述請(qǐng)求是服務(wù)請(qǐng)求,并且還包括 步驟響應(yīng)于所述服務(wù)請(qǐng)求,向所述軟件系統(tǒng)提供信任時(shí)間服務(wù)、關(guān)鍵功能服務(wù)、以及加密解密服務(wù)中的一種或多種。
19. 如權(quán)利要求17或18所述的方法,其中所述請(qǐng)求的證書(shū)中包含所述 當(dāng)前代理模塊的有效期,如果所述有效期過(guò)期,則拒絕所述請(qǐng)求,并要求發(fā) 出所述請(qǐng)求的當(dāng)前代理模塊進(jìn)行更新。
20. 如權(quán)利要求15所述的方法,還包括步驟利用所述第二密鑰解密所 述證書(shū),以獲得所述第一密鑰,并用所述第一密鑰解密被加密的請(qǐng)求,以獲 得所述請(qǐng)求。
21. —種用于保護(hù)軟件系統(tǒng)的完整性的系統(tǒng),包括 模板提供設(shè)備,用于存儲(chǔ)并更新生成代理模塊所需的模板; 安全設(shè)備,用于從所述模板提供設(shè)備接收模板,并根據(jù)接收的模板生成新代理模塊;以及外部設(shè)備,用于運(yùn)行所述軟件系統(tǒng)以及當(dāng)前代理模塊,其中所述當(dāng)前代 理模塊用于驗(yàn)證所述軟件系統(tǒng)的完整性,其中,所述安全設(shè)備將所述新代理模塊發(fā)送到所述外部設(shè)備,以更新所 述當(dāng)前代理模塊。
全文摘要
提供了一種用于保護(hù)軟件系統(tǒng)的完整性的安全設(shè)備及其方法,該設(shè)備包括模板存儲(chǔ)庫(kù),用于存儲(chǔ)生成代理模塊所需的模板;代理模塊生成器,用于從所述模板存儲(chǔ)庫(kù)所存儲(chǔ)的模板中隨機(jī)選擇一個(gè)模板,并根據(jù)所選擇的模板生成新代理模塊;以及收發(fā)器,用于將所述新代理模塊發(fā)送到與所述安全設(shè)備通信的外部設(shè)備,以更新在所述外部設(shè)備中運(yùn)行的當(dāng)前代理模塊,其中所述當(dāng)前代理模塊用于驗(yàn)證在所述外部設(shè)備中運(yùn)行的所述軟件系統(tǒng)的完整性。該安全設(shè)備能夠以高軟件保護(hù)級(jí)別來(lái)保護(hù)在不安全運(yùn)行環(huán)境中的軟件,以防止該軟件被篡改和繞過(guò)。
文檔編號(hào)G06F21/00GK101335746SQ20071012636
公開(kāi)日2008年12月31日 申請(qǐng)日期2007年6月29日 優(yōu)先權(quán)日2007年6月29日
發(fā)明者黨亞斌, 李實(shí)恭, 楊順祥, 琳 羅, 郝大明 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司