專利名稱:一種對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件保護(hù)技術(shù),具體涉及一種對(duì)軟件保護(hù)設(shè)備的功能 模塊的代碼或者數(shù)據(jù)進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法。
背景技術(shù):
首先給出如下定義功能模塊軟件開(kāi)發(fā)商中從軟件產(chǎn)品中提取出來(lái)的可以或者已經(jīng) 設(shè)置在軟件保護(hù)設(shè)備中的供外部調(diào)用的代碼或數(shù)據(jù)或兩者的結(jié)合。功能模塊升級(jí)包用于對(duì)軟件保護(hù)設(shè)備中的功能^^莫塊進(jìn)行升級(jí)的 數(shù)據(jù)包。軟件保護(hù)設(shè)備用戶持有的軟件開(kāi)發(fā)商在其開(kāi)發(fā)的某 一款軟件產(chǎn) 品中和軟件配套使用的設(shè)備。隨著經(jīng)濟(jì)技術(shù)的飛速發(fā)展,軟件作為輔助工具已經(jīng)深入到了各行 各業(yè)當(dāng)中。軟件產(chǎn)品是軟件設(shè)計(jì)者和軟件編程人員智慧的結(jié)晶,軟件 開(kāi)發(fā)商的生存和發(fā)展是軟件產(chǎn)品充足供應(yīng)的基礎(chǔ),因而,保護(hù)軟件產(chǎn) 品的版權(quán),防止軟件產(chǎn)品被盜版,具有很重要的現(xiàn)實(shí)意義。在軟件開(kāi)發(fā)商已有的保護(hù)軟件產(chǎn)品的眾多策略中,多數(shù)采用了這 樣一種方式提取出軟件產(chǎn)品中的核心算法或密鑰作為關(guān)鍵程序代碼, 將所述關(guān)鍵程序代碼及其所需數(shù)據(jù)設(shè)置在軟件保護(hù)設(shè)備中,以作為軟 件保護(hù)設(shè)備的功能模塊供外部軟件調(diào)用。采用這種方式以后,當(dāng)用戶使用軟件產(chǎn)品時(shí),必須要有軟件保護(hù)設(shè)備同時(shí)運(yùn)行,否則將無(wú)法使用 該軟件產(chǎn)品。這種策略的優(yōu)勢(shì)是,軟件產(chǎn)品的關(guān)鍵代碼是設(shè)置在軟件保護(hù)設(shè)備 中的,軟件破解者很難得到軟件產(chǎn)品的關(guān)鍵程序代碼,也很難克隆軟 件保護(hù)設(shè)備,也就很難破解該軟件產(chǎn)品。當(dāng)然所述的軟件保護(hù)設(shè)備的 處理芯片必須是一個(gè)具有一定安全認(rèn)證等級(jí)的智能卡芯片才可以防止 被硬克隆。正因?yàn)橛羞@種優(yōu)勢(shì),國(guó)內(nèi)外越來(lái)越多的軟件開(kāi)發(fā)商都采用 了這種策略保護(hù)自己的軟件產(chǎn)品。但是,軟件開(kāi)發(fā)商所生產(chǎn)的軟件產(chǎn)品需要不斷更新升級(jí),因而對(duì) 于使用該軟件產(chǎn)品的用戶來(lái)說(shuō),也需要同步地更新與軟件產(chǎn)品配套的 軟件保護(hù)設(shè)備的功能模塊。這個(gè)看似簡(jiǎn)單的過(guò)程,對(duì)于軟件開(kāi)發(fā)商來(lái) 說(shuō)并不簡(jiǎn)單,他們可能需要通過(guò)上門分發(fā)或回收軟件保護(hù)設(shè)備等方式 來(lái)升級(jí)軟件保護(hù)設(shè)備中的功能模塊,從而增加了服務(wù)成本?;蛘哕浖?開(kāi)發(fā)商將需要升級(jí)的功能模塊打包成功能模塊升級(jí)包,然后通過(guò)電信 網(wǎng)絡(luò)、因特網(wǎng)等不安全的信道發(fā)送到各用戶的軟件保護(hù)設(shè)備中,但是 這樣的話,功能模塊升級(jí)包很容易被竊聽(tīng)與替換,從而給軟件開(kāi)發(fā)商 造成極大的經(jīng)濟(jì)損失。發(fā)明內(nèi)容為了解決上述的軟件開(kāi)發(fā)商在升級(jí)軟件保護(hù)設(shè)備的功能模塊時(shí)遇 到的種種問(wèn)題,本發(fā)明提供一種對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法,其特征在于,包括以下步驟 a、服務(wù)器端al、設(shè)置軟件功能模塊升級(jí)包的控制信息并獲取新的功能模塊;a2 、對(duì)所述控制信息和新的功能模塊計(jì)算校驗(yàn)信息;a3、對(duì)新的功能模塊進(jìn)行加密后,將所述控制信息、所述經(jīng)加密 的新的功能模塊以及所述校驗(yàn)信息組合為功能模塊升級(jí)包并發(fā)送給所 述軟件保護(hù)設(shè)備;b、軟件保護(hù)設(shè)備端bl、檢查所接收的所述功能模塊升級(jí)包中的控制信息以判斷該功 能模塊升級(jí)包是否適用于升級(jí)自身的功能模塊,如果適用則進(jìn)入b2步 驟,否則結(jié)束升級(jí)流程;b2、對(duì)所述功能模塊升級(jí)包中的經(jīng)加密的新的功能模塊進(jìn)行解密 后得到新的功能模塊,并根據(jù)所述控制信息和所述解密后得到的新的 功能模塊來(lái)驗(yàn)證所述的校驗(yàn)信息;b3、如果驗(yàn)證通過(guò)則使用所述新的功能模塊對(duì)所述軟件保護(hù)設(shè)備 中的已有功能模塊進(jìn)行升級(jí),否則結(jié)束升級(jí)流程。本發(fā)明另 一方面提供一種對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升 級(jí)的方法,包括以下步驟a、月l務(wù)器端al 、設(shè)置軟件功能模塊升級(jí)包的控制信息并獲取新的功能模塊;a2、對(duì)所述新的功能模塊加密,并對(duì)所述控制信息和經(jīng)加密的新 的功能模塊計(jì)算校驗(yàn)信息;a3、將所述控制信息、所述經(jīng)加密的新的功能模塊以及所述校驗(yàn) 信息組合為功能模塊升級(jí)包并發(fā)送給所述軟件保護(hù)設(shè)備;b、軟件保護(hù)設(shè)備端b 1 、檢查所接收的所述功能模塊升級(jí)包中的控制信息以判斷該功能模塊升級(jí)包是否適用于升級(jí)自身的功能模塊,如果適用則進(jìn)入b2步 驟,否則結(jié)束升級(jí)流程;b2、根據(jù)所接收的所述功能模塊升級(jí)包中的所述控制信息和經(jīng)加 密的新的功能模塊來(lái)驗(yàn)證所述校驗(yàn)信息,如果驗(yàn)證通過(guò)則進(jìn)入b3步驟, 否則結(jié)束升級(jí)流程;b3 、對(duì)該經(jīng)加密的新的功能模塊進(jìn)行解密后得到新的功能模塊, 并使用所述新的功能模塊對(duì)所述軟件保護(hù)設(shè)備中的已有功能模塊進(jìn)行 升級(jí)。上述的兩種遠(yuǎn)程升級(jí)的方法的區(qū)別在于第一種方法,是對(duì)明文的控制信息和明文的新的功能模塊計(jì)算校 驗(yàn)信息之后再對(duì)所述新的功能模塊進(jìn)行加密,所以校驗(yàn)信息的計(jì)算可 以使用不需要密鑰參與的算法,可以減少密鑰管理的成本,例如,單 向散列算法。由于破解者沒(méi)有辦法得到明文的新的功能模塊,所以也 無(wú)法偽造校驗(yàn)信息。當(dāng)然也可以使用有密鑰參與的算法。如MAC, HMAC,非對(duì)稱的數(shù)字簽名算法;第二種方法,是對(duì)明文的控制信息和加密后的新的功能模塊計(jì)算 校驗(yàn)碼,這種方法,校驗(yàn)信息的計(jì)算必須使用需要密鑰參與的算法, 如MAC, HMAC,非對(duì)稱的數(shù)字簽名算法。否則,破解者就可以偽造 校驗(yàn)信息。使用上述的本發(fā)明的構(gòu)造功能模塊升級(jí)包的方法具有如下優(yōu)點(diǎn)
1、 構(gòu)造的功能模塊升級(jí)包中,控制信息始終以是明文(未加密) 形式存在的,這樣在升級(jí)軟件保護(hù)設(shè)備的過(guò)程中,首先可直接確定該 功能模塊升級(jí)包是否適用于被升級(jí)的軟件保護(hù)設(shè)備。減少了對(duì)功能模塊升級(jí)包的操作;其次可以在軟件保護(hù)設(shè)備的外部增加對(duì)功能模塊的 適用范圍的判斷,減少對(duì)軟件保護(hù)設(shè)備不必要的操作,從而減少了可 能對(duì)軟件保護(hù)設(shè)備內(nèi)的功能模塊造成影響的風(fēng)險(xiǎn)。當(dāng)然軟件保護(hù)設(shè)備 內(nèi)部也需要對(duì)功能模塊升級(jí)包的適用范圍進(jìn)行判斷,用來(lái)防止破解者 繞過(guò)外部的功能模塊升級(jí)包的適用范圍的檢查過(guò)程。
2、 對(duì)功能模塊升級(jí)包的控制信息和加密前的或者加密后的新的功 能模塊計(jì)算校驗(yàn)信息,可以防止破解者對(duì)明文的控制信息或者對(duì)加密 后的新的功能模塊進(jìn)行篡改。如果破解者篡改了控制信息,則在驗(yàn)證 校驗(yàn)信息時(shí)用的控制信息和開(kāi)發(fā)商端計(jì)算校驗(yàn)信息時(shí)用的控制信息不 一致。驗(yàn)證必然會(huì)失敗。如果破解者篡改了加密后的新的功能模塊, 在軟件保護(hù)設(shè)備中解密得到的新的功能模塊是錯(cuò)誤的,則同樣在驗(yàn)證 校驗(yàn)信息時(shí)會(huì)失敗。
3、 對(duì)新的功能模塊加密防止功能模塊泄漏,只有擁有正確密鑰的 軟件保護(hù)設(shè)備才能解密得到明文的新的功能模塊??梢?jiàn),在本發(fā)明提供了一種實(shí)現(xiàn)了軟件開(kāi)發(fā)商安全的可控的對(duì)軟 件保護(hù)設(shè)備中的功能^^塊進(jìn)行遠(yuǎn)程升級(jí)的方法。
圖1為本發(fā)明的對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法 的第 一 實(shí)施例的流程示意圖;圖2為本發(fā)明的方法的第一實(shí)施例中的功能模塊升級(jí)包的數(shù)據(jù)結(jié)構(gòu)示意圖;圖3為本發(fā)明的方法的第二實(shí)施例的流程示意圖;圖4為本發(fā)明的方法的第三實(shí)施例的功能;f莫塊升級(jí)包的數(shù)據(jù)結(jié)構(gòu) 示意圖;圖5為本發(fā)明的方法的第三實(shí)施例中服務(wù)器端的功能模塊升級(jí)包 的簽發(fā)流程示意圖;圖6為本發(fā)明的方法的第三實(shí)施例的軟件保護(hù)設(shè)備端功能模塊升 級(jí)流程示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附 圖并舉實(shí)施例,對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明實(shí)施例的主要思想是軟件開(kāi)發(fā)商端設(shè)置控制信息,計(jì)算 校驗(yàn)信息,加密新的功能模塊,并構(gòu)造功能模塊升級(jí)包。軟件保護(hù)設(shè) 備檢查控制信息,解密新的功能模塊,驗(yàn)證校驗(yàn)信息,最后升級(jí)軟件 保護(hù)設(shè)備的功能模塊。下面結(jié)合附圖詳細(xì)說(shuō)明本發(fā)明技術(shù)方案的實(shí)現(xiàn) 過(guò)程。圖1為本發(fā)明安全的可控的遠(yuǎn)程升級(jí)方法的第一實(shí)施例的流程示 意圖。參見(jiàn)圖1,該方法包括步驟101:軟件開(kāi)發(fā)商設(shè)置功能模塊升級(jí)包的控制信息并獲取新的 功能模塊。本步驟中,軟件開(kāi)發(fā)商在服務(wù)器端通過(guò)設(shè)置功能模塊升級(jí)包的控 制信息來(lái)設(shè)置功能模塊升級(jí)包的適用范圍。所述的控制信息包含有對(duì) 該功能模塊升級(jí)包的適用范圍的描述,可以設(shè)置成適用于所有、 一組 或者單個(gè)軟件保護(hù)設(shè)備,如果適用范圍設(shè)置為一組或者單個(gè)軟件保護(hù) 設(shè)備,則需要在該控制信息中加入待升級(jí)的軟件保護(hù)設(shè)備的特征信息。軟件開(kāi)發(fā)商獲取所述特征信息的方法可以是在出售軟件產(chǎn)品時(shí)記 錄同時(shí)發(fā)售的軟件保護(hù)設(shè)備的軟件保護(hù)設(shè)備特征信息,也可以是當(dāng)用 戶有升級(jí)軟件保護(hù)設(shè)備的需求時(shí)向軟件開(kāi)發(fā)商提供該用戶所持有的軟 件保護(hù)設(shè)備的軟件保護(hù)設(shè)備特征信息。 —所述特征信息可以是單個(gè)軟件保護(hù)設(shè)備的唯一標(biāo)識(shí),也可以是一 組軟件保護(hù)設(shè)備的唯一標(biāo)識(shí)。如果簽發(fā)的是針對(duì)一組軟件保護(hù)設(shè)備的 升級(jí)包,則軟件保護(hù)設(shè)備特征信息為組的唯一標(biāo)識(shí), 一組軟件保護(hù)設(shè) 備的唯一標(biāo)識(shí)是指一組軟件保護(hù)設(shè)備的共有的區(qū)別于不同組別的軟件保護(hù)設(shè)備的信息;如果簽發(fā)的是針對(duì)單個(gè)軟件保護(hù)設(shè)備的升級(jí)包,則軟件保護(hù)設(shè)備特征信息為待升級(jí)的軟件保護(hù)設(shè)備的唯一標(biāo)識(shí),單個(gè)軟 件保護(hù)設(shè)備的唯一標(biāo)識(shí)與軟件保護(hù)設(shè)備是——對(duì)應(yīng)的,例如為軟件保 護(hù)設(shè)備的硬件全球唯一序列號(hào)。所述簽發(fā)過(guò)程可以由軟件開(kāi)發(fā)商的服務(wù)器端的計(jì)算機(jī)程序?qū)崿F(xiàn), 也可以由軟件開(kāi)發(fā)商持有的加密設(shè)備實(shí)現(xiàn)。以上兩種方式都可以完成 簽發(fā)功能模塊升級(jí)包的功能。步驟102:對(duì)控制信息和新的功能模塊計(jì)算校驗(yàn)信息。本步驟中,計(jì)算校驗(yàn)信息過(guò)程是首先把控制信息和新的功能模塊 組合成數(shù)據(jù)串,然后對(duì)組合后的數(shù)據(jù)串通過(guò)密碼學(xué)算法計(jì)算出校驗(yàn)信息。所述密碼學(xué)算法可以是單向散列算法,HMAC算法,MAC算法或 者非對(duì)稱的簽名算法。計(jì)算所述校驗(yàn)信息的密碼學(xué)算法如果是HMAC算法或者M(jìn)AC算 法,需要在軟件開(kāi)發(fā)商的服務(wù)器端和軟件保護(hù)裝置之間共享一個(gè)密鑰, 用來(lái)計(jì)算和驗(yàn)證校驗(yàn)信息。計(jì)算校驗(yàn)信息的密碼學(xué)算法如果是非對(duì)稱的簽名算法,則需要在 服務(wù)器端保存一對(duì)非對(duì)稱密鑰的私鑰用于計(jì)算校驗(yàn)信息,在軟件保護(hù) 設(shè)備內(nèi)保存對(duì)應(yīng)的公鑰用于驗(yàn)證校驗(yàn)信息。為了提高安全強(qiáng)度該可以對(duì)校驗(yàn)信息進(jìn)行加密,加密算法可以是 對(duì)稱算法,或者非對(duì)稱算法。使用的密鑰可以是用于對(duì)新的功能模塊 的加密密鑰,也可以是別的密鑰。步驟103:對(duì)新的功能模塊進(jìn)行加密。本步驟中,對(duì)所述的新的功能模塊的加密過(guò)程可以使用對(duì)稱算法 或者非對(duì)稱算法。如果使用對(duì)稱算法則需要在軟件開(kāi)發(fā)商的服務(wù)器端 和軟件保護(hù)設(shè)備之間共享一個(gè)對(duì)稱密鑰,用于對(duì)新的功能模塊進(jìn)行加 密和解密。如果使用非對(duì)稱算法則需要在服務(wù)器端保存一對(duì)非對(duì)稱密 鑰的公鑰用于加密新的功能模塊,在軟件保護(hù)設(shè)備內(nèi)保存對(duì)應(yīng)的私鑰 用于解密新的功能模塊。上述的加解密使用的對(duì)稱密鑰也可用于計(jì)算和驗(yàn)證上述校驗(yàn)信 息,這樣可以減少密鑰管理的成本,但相對(duì)的降低了系統(tǒng)的安全性。步驟104:生成功能模塊升級(jí)包。本步驟中,將上述未加密的控制信息,經(jīng)加密的新的功能模塊和 校驗(yàn)信息組合成功能模塊升級(jí)包。步驟105:發(fā)送功能模塊升級(jí)包。本步驟中,軟件開(kāi)發(fā)商的服務(wù)器端將生成的功能模塊升級(jí)包發(fā)送 到用戶的軟件保護(hù)設(shè)備。升級(jí)過(guò)程是軟件保護(hù)設(shè)備的內(nèi)部程序來(lái)完成的。步驟lll:校驗(yàn)功能模塊升級(jí)包的適用范圍。本步驟中,軟件保護(hù)設(shè)備;f企查接收到的功能模塊升級(jí)包的控制信能模塊。如果不能,則終止升級(jí)過(guò)程。具體為,如果該功能模塊升級(jí)包是適用于所有的軟件保護(hù)設(shè)備, 則該功能模塊升級(jí)包適用于自身;如果該功能模塊升級(jí)包是適用于一 組軟件保護(hù)設(shè)備,則檢查該功能模塊升級(jí)包的控制信息中包含的軟件 保護(hù)設(shè)備的特征信息是否和自身所在的組的唯一標(biāo)識(shí)一致,如果一致 則該功能模塊升級(jí)包適用于自身,否者不能被升級(jí);如果該功能模塊 升級(jí)包只適用于單個(gè)軟件保護(hù)設(shè)備,那么檢查該功能模塊升級(jí)包的控 制信息中包含的軟件保護(hù)設(shè)備特征信息是否和自身的唯一標(biāo)識(shí)一致, 如果一致,則該功能模塊升級(jí)包適用于自身,否則不能^l升級(jí)。步驟112:解密新的功能模塊。本步驟中,解密用的密碼學(xué)算法合密鑰均和步驟103中用的加密 算法和密鑰是相對(duì)應(yīng)的。如果使用密碼學(xué)算法是對(duì)稱算法,則解密使 用的密鑰是上述的服務(wù)器端和軟件保護(hù)設(shè)備中共享的用于加解密待升級(jí)的內(nèi)容的對(duì)對(duì)稱密鑰;如果使用的算法是非對(duì)稱算法,則解密使用的密鑰是上述的保存在軟件保護(hù)設(shè)備中用于解密的私鑰。步驟113:驗(yàn)證校驗(yàn)信息。本步驟中,驗(yàn)證校驗(yàn)信息過(guò)程是指使用密碼學(xué)算法來(lái)檢查校驗(yàn)信 息是否正確。如果校驗(yàn)信息驗(yàn)證失敗,則終止升級(jí)過(guò)程。本步驟中使 用的密碼學(xué)算法和密鑰均是和步驟102中計(jì)算校驗(yàn)信息時(shí)使用的密碼 學(xué)算法和密鑰相對(duì)應(yīng)的,對(duì)于不同算法驗(yàn)證過(guò)程的具體流程也不同。如果計(jì)算所述校驗(yàn)信息時(shí)使用的密碼學(xué)算法是HMAC或者M(jìn)AC 算法時(shí),則驗(yàn)證校驗(yàn)信息的具體流程如下軟件保護(hù)設(shè)備使用相應(yīng)算法重新計(jì)算軟件功能模塊控制信息和解 密后的新的功能模塊的校驗(yàn)信息,然后將重新計(jì)算出的校驗(yàn)信息和功 能模塊升級(jí)包中獲得的校驗(yàn)信息比較,完全一致則校驗(yàn)通過(guò),說(shuō)明該 功能模塊升級(jí)包是合法的,否則校驗(yàn)失敗,說(shuō)明該功能模塊升級(jí)包是 不合法的。在重新計(jì)算校驗(yàn)信息使用的密鑰是上述的在服務(wù)器端和軟 件保護(hù)設(shè)備之間共享的用于計(jì)算或者驗(yàn)證校驗(yàn)信息的密鑰。如果計(jì)算校驗(yàn)信息時(shí)使用的密碼學(xué)算法是非對(duì)稱的簽名算法,則 驗(yàn)證校驗(yàn)信息的具體流程如下軟件保護(hù)裝置使用上述保存在軟件保護(hù)設(shè)備內(nèi)的公鑰解密功能模 塊升級(jí)包中的校驗(yàn)信息。并計(jì)算功能模塊升級(jí)包的控制信息及解密后 的新的功能模塊的組合結(jié)果的HASH值,比較解密后的校驗(yàn)信息和計(jì) 算出來(lái)的HASH值。如果計(jì)算校驗(yàn)信息時(shí)對(duì)HASH值做了編碼,則在比較前也需要對(duì) HASH進(jìn)行相同的編碼,或者先對(duì)解密后的校驗(yàn)信息進(jìn)行解碼再比較。 如果計(jì)算校驗(yàn)信息時(shí)沒(méi)有對(duì)控制信息和新的功能模塊組合的數(shù)據(jù)串先 進(jìn)4亍HASH,則—瞼i正時(shí)也不需要HASH,直4妄比專交。上述比較結(jié)果如果是完全一致則校驗(yàn)通過(guò),說(shuō)明功能模塊升級(jí)包 是合法的,否則校驗(yàn)失敗,說(shuō)明該功能模塊升級(jí)包是不合法的。如果校驗(yàn)信息是加密的,在校驗(yàn)之前需要先對(duì)校驗(yàn)信息進(jìn)行解密。 使用的密鑰和算法都應(yīng)該和上述的校驗(yàn)信息加密過(guò)程使用的算法和密 鑰相對(duì)應(yīng)。根據(jù)前述校驗(yàn)信息的特點(diǎn),如果發(fā)生了功能模塊升級(jí)包中的任何 數(shù)據(jù)被修改或者在傳送過(guò)程中出現(xiàn)錯(cuò)誤的情況,以及校驗(yàn)碼本身被修 改或者傳輸錯(cuò)誤的情況,則驗(yàn)證校驗(yàn)信息過(guò)程的必將失敗。從而軟件 保護(hù)設(shè)備認(rèn)為該功能模塊升級(jí)包是不合法的,將立即中止升級(jí)過(guò)程。步驟114:升級(jí)軟件保護(hù)設(shè)備內(nèi)的功能模塊對(duì)軟件保護(hù)設(shè)備的功能模塊進(jìn)行升級(jí),是用解密后的新的功能模 塊替換軟件保護(hù)設(shè)備內(nèi)已有的功能模塊。如果軟件保護(hù)設(shè)備中沒(méi)有待 升級(jí)的功能模塊,則可以根據(jù)預(yù)先設(shè)置的策略,新建該功能模塊,或 者終止升級(jí)過(guò)程。圖2為本發(fā)明的方法的第一實(shí)施例中的功能模塊升級(jí)包的數(shù)據(jù)結(jié) 構(gòu)示意圖。參見(jiàn)圖2,功能模塊升級(jí)包包括控制信息,加密的新的功 能模塊和校驗(yàn)信息。其中控制信息是用于確定該功能模塊升級(jí)包的適用范圍,可以是 所有, 一組或者單個(gè)軟件保護(hù)設(shè)備。第一實(shí)施例中,檢驗(yàn)信息是使用密碼學(xué)算法針對(duì)軟件保護(hù)設(shè)備的 特征信息和未加密的新的功能模塊計(jì)算的。圖3為本發(fā)明的方法的第二實(shí)施例的流程示意圖。如圖所示,第二實(shí)施例包括以下步驟,其中各步驟中具體的實(shí)現(xiàn)方式適用上述第一實(shí)施例中相應(yīng)步驟的實(shí)現(xiàn)方式步驟301:軟件開(kāi)發(fā)商設(shè)置功能模塊升級(jí)包的控制信息并獲取新的 功能模塊;步驟302:對(duì)新的功能模塊進(jìn)行加密;步驟303:對(duì)控制信息和步驟302中得到的經(jīng)加密的新的功能模塊 計(jì)算校驗(yàn)信息;本步驟計(jì)算校驗(yàn)信息的算法可以使MAC算法,HMAC算法,非 對(duì)稱的簽名算法。步驟304:生成功能模塊升級(jí)包,本步驟中,將上述控制信息,經(jīng) 加密的新的功能模塊,以及步驟303中得到的校驗(yàn)信息組合成功能模 塊升級(jí)包;步驟305:服務(wù)器向軟件保護(hù)設(shè)備發(fā)送功能模塊升級(jí)包;步驟311:校驗(yàn)功能模塊升級(jí)包的適用范圍;本步驟中,軟件保護(hù)設(shè)備檢查接收到的功能模塊升級(jí)包的控制信 能模塊,如果不能,則終止升級(jí)過(guò)程。步驟312:校驗(yàn)驗(yàn)證信息;本步驟中,對(duì)接收到的功能模塊升級(jí)包中的控制信息和經(jīng)加密的 新的功能模塊重新計(jì)算校驗(yàn)信息,然后使用密碼學(xué)算法來(lái)檢查校驗(yàn)信 息是否正確。如果校驗(yàn)信息驗(yàn)證失敗,則終止升級(jí)過(guò)程。本步驟中使 用的密碼學(xué)算法和密鑰均是和步驟303中計(jì)算^^交驗(yàn)信息時(shí)使用的密碼 學(xué)算法和密鑰相對(duì)應(yīng)的,對(duì)于不同算法驗(yàn)證過(guò)程的具體流程也不同。上述比較結(jié)果如果是完全一致則校驗(yàn)通過(guò),說(shuō)明功能模塊升級(jí)包 是合法的,否則校驗(yàn)失敗,說(shuō)明該功能模塊升級(jí)包是不合法的。如果校驗(yàn)信息是加密的,在校驗(yàn)之前需要先對(duì)校-險(xiǎn)信息進(jìn)行解密。 使用的密鑰和算法都應(yīng)該和上述的校驗(yàn)信息加密過(guò)程使用的算法和密 鑰相對(duì)應(yīng)。步驟313:解密新的功能模塊;本步驟中,解密用的密碼學(xué)算法或密鑰均和步驟302中用的加密 算法或密鑰是相對(duì)應(yīng)的。步驟314:升級(jí)軟件保護(hù)設(shè)備內(nèi)的功能模塊。本實(shí)施例中的功能模塊升級(jí)包數(shù)據(jù)結(jié)構(gòu)與圖2所示的第一實(shí)施例 中的功能模塊升級(jí)包數(shù)據(jù)結(jié)構(gòu)相同,包括控制信息、加密的新的功能 模塊、校驗(yàn)信息。下面對(duì)本發(fā)明的方法的第三實(shí)施例進(jìn)行說(shuō)明。本實(shí)施例中,軟件保護(hù)設(shè)備使用的硬件平臺(tái)是NXP公司提供16位智能卡芯片。可以有效的防止硬件被破解或者硬克隆。遠(yuǎn)程升級(jí)系 統(tǒng)支持對(duì)單個(gè)軟件保護(hù)設(shè)備或者所有的軟件保護(hù)設(shè)備進(jìn)行升級(jí)。遠(yuǎn)程升級(jí)系統(tǒng)中使用加密算法是TDES ,計(jì)算校驗(yàn)信息的算法是HMAC 。第三實(shí)施例的功能模塊升級(jí)包的數(shù)據(jù)結(jié)構(gòu)如圖4所示,包括控制 信息,加密的新的功能模塊和加密的校驗(yàn)信息。第三實(shí)施例中服務(wù)器端的模塊升級(jí)包的簽發(fā)流程如圖5所示步驟501:設(shè)置控制信息,控制信息中包含,該功能模塊升級(jí)包的 適用范圍,待升級(jí)的功能模塊的標(biāo)識(shí),是否允許新建一個(gè)功能模塊的 描述;步驟502:計(jì)算控制信息和新的功能模塊組合后得到的數(shù)據(jù)串的 HMAC值作為校驗(yàn)信息;步驟503:使用TDES算法對(duì)新的功能模塊和校驗(yàn)信息各進(jìn)行加密;步驟504:組合控制信息和503步驟的加密結(jié)果,成為功能模塊升 級(jí)包。遠(yuǎn)程升級(jí)系統(tǒng)中的功能模塊升級(jí)流程如圖6所示步驟601:檢查升級(jí)包的適用范圍,如果不能被自己使用,則終止 結(jié)束過(guò)程;步驟602:使用TDES算法解密新的功能模塊和校驗(yàn)信息;步驟603:使用HMAC算法重新計(jì)算控制信息和新的功能模塊組 合成的數(shù)據(jù)串的HMAC值;步驟604:比較計(jì)算出來(lái)的HMAC值和解密得到的校驗(yàn)信息,如 果不一致,則直接終止升級(jí)過(guò)程;步驟605:在軟件保護(hù)設(shè)備中找到控制信息中指定的功能模塊,并 使用新的功能模塊對(duì)其進(jìn)行升級(jí)。如果沒(méi)有找到指定的功能模塊,可 以根據(jù)控制信息中指定是否允許新建功能模塊,來(lái)確定是新建立 一個(gè) 功模塊,還是直接終止升級(jí)過(guò)程。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、 改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法,其特征在于,包括以下步驟a、服務(wù)器端a1、設(shè)置軟件功能模塊升級(jí)包的控制信息并獲取新的功能模塊;a2、對(duì)所述控制信息和新的功能模塊計(jì)算校驗(yàn)信息;a3、對(duì)新的功能模塊進(jìn)行加密后,將所述控制信息、所述經(jīng)加密的新的功能模塊以及所述校驗(yàn)信息組合為功能模塊升級(jí)包并發(fā)送給所述軟件保護(hù)設(shè)備;b、軟件保護(hù)設(shè)備端b1、檢查所接收的所述功能模塊升級(jí)包中的控制信息以判斷該功能模塊升級(jí)包是否適用于升級(jí)自身的功能模塊,如果適用則進(jìn)入b2步驟,否則結(jié)束升級(jí)流程;b2、對(duì)所述功能模塊升級(jí)包中的經(jīng)加密的新的功能模塊進(jìn)行解密后得到新的功能模塊,并根據(jù)所述控制信息和解密后得到的新的功能模塊來(lái)驗(yàn)證所述校驗(yàn)信息;b3、如果驗(yàn)證通過(guò)則使用所述新的功能模塊對(duì)所述軟件保護(hù)設(shè)備中的已有功能模塊進(jìn)行升級(jí),否則結(jié)束升級(jí)流程。
2、 如權(quán)利要求l所述的方法,其特征在于,所述的控制信息包含 有對(duì)該功能模塊升級(jí)包的適用范圍的描述,如果將該適用范圍設(shè)置為 針對(duì)一組或者單個(gè)軟件保護(hù)設(shè)備,則需要在所述控制信息中加入待升級(jí)的軟件保護(hù)設(shè)備的特征信息,例如單個(gè)軟件保護(hù)i殳備的唯一標(biāo)識(shí)或 者一組軟件保護(hù)i殳備的唯一標(biāo)識(shí)。
3、 如權(quán)利要求l所述的方法,其特征在于,a2步驟中的計(jì)算校驗(yàn) 信息過(guò)程是首先把所述控制信息和新的功能模塊組合成數(shù)據(jù)串,然后 對(duì)該數(shù)據(jù)串通過(guò)密碼學(xué)算法計(jì)算出校驗(yàn)信息,其中所述的密碼學(xué)算法 包括單向散列算法,HMAC算法,MAC算法或者非對(duì)稱的簽名算法。
4、 如權(quán)利要求l所述的方法,其特征在于,a2步驟中還包括對(duì)校 驗(yàn)信息進(jìn)行加密的步驟,該步驟采用對(duì)稱算法或者非對(duì)稱算法,同時(shí) b2步驟中還包括使用對(duì)應(yīng)的密碼學(xué)算法對(duì)經(jīng)加密的校驗(yàn)信息進(jìn)行解密 的步驟。
5、 如權(quán)利要求l所述的方法,其特征在于,a3步驟中的對(duì)新的功 能模塊的加密過(guò)程使用對(duì)稱算法或者非對(duì)稱算法。
6、 如權(quán)利要求l所述的方法,其特征在于,bl步驟中,如果所述 功能模塊升級(jí)包被預(yù)先設(shè)置為適用于一組軟件保護(hù)設(shè)備或者只適用于 單個(gè)軟件保護(hù)設(shè)備,則檢查所述控制信息中包含的軟件保護(hù)設(shè)備的特 征信息是否和自身所在的組的唯一標(biāo)識(shí)一致或者是否和自身的唯一標(biāo) 識(shí)一致,如果一致則該功能模塊升級(jí)包適用于自身,否者結(jié)束升級(jí)流 程。
7、 如權(quán)利要求3所述的方法,其特征在于,步驟b2中驗(yàn)證校驗(yàn) 信息所使用的密碼學(xué)算法和步驟a2中計(jì)算校驗(yàn)信息所使用的密碼學(xué)算 法是相對(duì)應(yīng)的。
8、 如權(quán)利要求l所述的方法,其特征在于,b4步驟中的對(duì)軟件保 護(hù)設(shè)備的功能模塊進(jìn)行升級(jí)的過(guò)程,是用解密后的新的功能模塊替換軟件保護(hù)設(shè)備內(nèi)已有的功能模塊,如果所述軟件保護(hù)設(shè)備中沒(méi)有相應(yīng) 的待升級(jí)功能模塊,則根據(jù)預(yù)先設(shè)置的策略新建該功能模塊或者終止 升級(jí)過(guò)程。
9、 一種對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法,其特征在于,包括以下步驟a、 月良務(wù)器端al、設(shè)置軟件功能模塊升級(jí)包的控制信息并獲取新的功能模塊;a2、對(duì)所述新的功能模塊加密,并對(duì)所述控制信息和經(jīng)加密的新 的功能模塊計(jì)算校驗(yàn)信息;a3、將所述控制信息、所述經(jīng)加密的新的功能;f莫塊以及所述校驗(yàn) 信息組合為功能模塊升級(jí)包并發(fā)送給所述軟件保護(hù)設(shè)備;b、 軟件保護(hù)設(shè)備端b 1 、檢查所接收的所述功能模塊升級(jí)包中的控制信息以判斷該功 能模塊升級(jí)包是否適用于升級(jí)自身的功能模塊,如果適用則進(jìn)入b2步 驟,否則結(jié)束升級(jí)流程;b2、根據(jù)所接收的所述功能模塊升級(jí)包中的所述控制信息和經(jīng)加 密的新的功能模塊來(lái)驗(yàn)證所述校驗(yàn)信息,如果驗(yàn)證通過(guò)則進(jìn)入b3步驟, 否則結(jié)束升級(jí)流程;b3 、對(duì)該經(jīng)加密的新的功能模塊進(jìn)行解密后得到新的功能模塊, 并使用所述新的功能模塊對(duì)所述軟件保護(hù)設(shè)備中的已有功能模塊進(jìn)行 升級(jí)。
10、 如權(quán)利要求9所述的方法,其特征在于,所述的控制信息包 含有對(duì)該功能模塊升級(jí)包的適用范圍的描述,如果將該適用范圍設(shè)置 為針對(duì)一組或者單個(gè)軟件保護(hù)設(shè)備,則需要在所述控制信息中加入待 升級(jí)的軟件保護(hù)設(shè)備的特征信息,例如單個(gè)軟件保護(hù)設(shè)備的唯一標(biāo)識(shí) 或者一組軟件保護(hù)設(shè)備的唯一標(biāo)識(shí)。
11、 如權(quán)利要求9所述的方法,其特征在于,a2步驟中的對(duì)新的 功能模塊的加密過(guò)程使用對(duì)稱算法或者非對(duì)稱算法。
12、 如權(quán)利要求9所述的方法,其特征在于,a2步驟中的計(jì)算校 驗(yàn)信息過(guò)程是首先把所述控制信息和經(jīng)加密的新的功能模塊組合成數(shù) 據(jù)串,然后對(duì)該數(shù)據(jù)串通過(guò)密碼學(xué)算法計(jì)算出校驗(yàn)信息,其中所述的 密碼學(xué)算法包括HMAC算法,MAC算法或者非對(duì)稱的簽名算法。
13、 如權(quán)利要求9所述的方法,其特征在于,bl步驟中,如果所 述功能模塊升級(jí)包被預(yù)先設(shè)置為適用于一組軟件保護(hù)設(shè)備或者只適用 于單個(gè)軟件保護(hù)設(shè)備,則檢查所述控制信息中包含的軟件保護(hù)設(shè)備的 特征信息是否和自身所在的組的唯一標(biāo)識(shí)一致或者是否和自身的唯一 標(biāo)識(shí)一致,如果一致則該功能模塊升級(jí)包適用于自身,否者結(jié)束升級(jí) 流程。
14、 如權(quán)利要求12所述的方法,其特征在于,步驟b2中驗(yàn)證校 驗(yàn)信息所使用的密碼學(xué)算法和步驟a2中計(jì)算校驗(yàn)信息所使用的密碼學(xué) 算法是相對(duì)應(yīng)的。
15、 如權(quán)利要求9所述的方法,其特征在于,b4步驟中的對(duì)軟件 保護(hù)設(shè)備的功能模塊進(jìn)行升級(jí)的過(guò)程,是用解密后的新的功能模塊替 換軟件保護(hù)設(shè)備內(nèi)已有的功能模塊,如果所述軟件保護(hù)設(shè)備中沒(méi)有相應(yīng)的待升級(jí)功能模塊,則根據(jù)預(yù)先設(shè)置的策略新建該功能模塊或者終 止升級(jí)過(guò)程。
全文摘要
一種對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)的方法,包括服務(wù)器端設(shè)置功能模塊升級(jí)包的控制信息并獲取新的功能模塊,對(duì)控制信息和新的功能模塊計(jì)算校驗(yàn)信息后加密新的功能模塊、或者先加密新的功能模塊后對(duì)控制信息和經(jīng)加密的新的功能模塊計(jì)算校驗(yàn)信息,再將控制信息、經(jīng)加密的新的功能模塊、校驗(yàn)信息組合為功能模塊升級(jí)包發(fā)給軟件保護(hù)設(shè)備;軟件保護(hù)設(shè)備檢查所接收功能模塊升級(jí)包中的控制信息,解密得到新的功能模塊,根據(jù)控制信息和新的功能模塊驗(yàn)證升級(jí)包中的校驗(yàn)信息,如果驗(yàn)證通過(guò)則使用新的功能模塊對(duì)自身進(jìn)行升級(jí)。本發(fā)明的功能模塊升級(jí)包中功能模塊在傳遞過(guò)程中全部是密文,從而有效實(shí)現(xiàn)了對(duì)軟件保護(hù)設(shè)備進(jìn)行安全可控的遠(yuǎn)程升級(jí)。
文檔編號(hào)G06F21/00GK101251883SQ200810101709
公開(kāi)日2008年8月27日 申請(qǐng)日期2008年3月11日 優(yōu)先權(quán)日2008年3月11日
發(fā)明者孫吉平, 勇 韓 申請(qǐng)人:北京深思洛克數(shù)據(jù)保護(hù)中心