專利名稱:一種分塊式的遠程更新方法
技術領域:
本發(fā)明涉及軟件保護技術,特別是一種分塊的遠程更新軟件保護裝置中 的功能模塊的方法。
背景技術:
功能模塊軟件開發(fā)商中從軟件產品中提取出來的可以或者已經放在軟 件保護設備中的供外部調用代碼,數據或者代碼和數據。
功能模塊升級包用于升級軟件保護設備中的功能模塊的數據包。
隨著經濟技術的飛速發(fā)展,軟件作為輔助工具已經深入到了各行各業(yè)當 中。軟件產品是軟件設計者和軟件編程人員智慧的結晶,軟件開發(fā)商的生存 和發(fā)展是軟件產品充足供應的基礎,因而,保護軟件產品的版權,防止軟件 產品被盜版,具有很重要的現實意義。
在軟件開發(fā)商已有的保護軟件產品的眾多策略中,多數采用了這樣一種 方式提煉出軟件產品中的核心算法或密鑰作為關鍵程序代碼,將所述關鍵 程序代碼及該程序代碼所需要的數據放在軟件保護設備中。作為軟件保護設 備的功能模塊,供外部軟件調用。釆用這種方式以后當用戶使用軟件產品時, 必須要有軟件保護設備同時運行,否則將無法使用該軟件產品。
這種策略的優(yōu)勢是,軟件產品的關鍵代碼是放在軟件保護設備中的,破 解者很難得到軟件產品的關鍵程序代碼,也很難克隆軟件保護設備,也就很 難破解該軟件產品。當然所述的軟件保護設備的處理芯片是一個具有一定安 全認證等級的智能卡芯片才可以防止被硬克隆。正因為有這種優(yōu)勢,國內外 越來越多的軟件開發(fā)商都采用了這種策略保護自己的軟件產品。
但是,軟件開發(fā)商所生產的軟件產品需要不斷更新升級,因而對于使用 該軟件產品的用戶來說,也需要同步的更新與軟件產品配套的軟件保護設備 的功能模塊。
為了降低成本,軟件開發(fā)商可以通過遠程升級技術升級軟件保護裝置內 的功能模塊,但由于通訊數據量的限制,待升級內容無法一次性的傳入到軟 件保護裝置中,需要分批傳入到軟件保護裝置中,并保存在軟件保護裝置中, 直到所有的數據都傳入后,才能確定待升級內容是否完整和合法,然后才能 對功能模塊進行升級。這樣就需要額外的存儲區(qū)來存放傳入待升級的數據。
發(fā)明內容
有鑒于此,本發(fā)明提供了一種分塊安裝或者更新軟件保護裝置中的功能 模塊的方法。
根據本發(fā)明的一個方面,提供一種分塊式的遠程更新的方法,其特征在
于,該方法包括步驟
(1) 將待升級的功能模塊分塊;
(2) 對分塊的升級數據塊進行處理后生成功能模塊升級包;
(3) 軟件保護裝置使用所述升級包升級功能模塊。 根據本發(fā)明的一個方面,其特征還在于,在步驟(2)中,為每個升級
數據塊設置控制信息。
根據本發(fā)明的一個方面,其特征還在于,在步驟(2)中,為每個升級
數據塊加密并計算校驗碼。
根據本發(fā)明的一個方面,其特征還在于,將升級數據塊組合起來形成功 能模塊升級包。
根據本發(fā)明的一個方面,其特征還在于,在步驟(3)中,軟件保護裝 置先將功能模塊設置成禁用狀態(tài)。
根據本發(fā)明的一個方面,其特征還在于,軟件保護裝置接收升級數據塊。 根據本發(fā)明的一個方面,其特征還在于,軟件保護裝置驗證接收到的升級數據塊的校驗碼。
根據本發(fā)明的一個方面,其特征還在于,如果校驗碼驗證通過,則為合
法升級包;否則為非法的升級包,終止升級過程。
.根據本發(fā)明的一個方面,其特征還在于,通過校驗碼驗證后,檢查升級 數據塊中的控制信息,判斷升級包有效或無效,如果是無效升級包則終止升 級過程。
根據本發(fā)明的一個方面,其特征還在于,如果是有效升級包則升級功能 模塊中的對應的數據。
根據本發(fā)明的一個方面,其特征還在于,檢查當前的升級數據塊是否是 最后一個。
根據本發(fā)明的一個方面,其特征還在于,如果是最后一個數據塊,則將 功能模塊設置為可用狀態(tài)。
圖1,本發(fā)明的工作流程示意圖。
圖2,本發(fā)明的一個實施例的升級數據塊結構示意圖。
圖3,本發(fā)明的一個實施例的工作流程示意圖
具體實施例方式
為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉 實施例,對本發(fā)明進行進一步詳細說明。
圖1為本發(fā)明的工作流程圖,如圖1所示,本發(fā)明包含以下步驟
開發(fā)商端生成升級包
步驟IOI,將待升級功能模塊分塊。
本步驟中,軟件開發(fā)商端根據實際需要將待升級的功能模塊的數據分塊。
例如,可以根據軟件保護裝置中的功能模塊每次通訊能被升級的最大的 數據量來對數據分塊。
步驟102,設置每個數據塊的控制信息。
本步驟中,軟件開發(fā)商端為每個數據塊設置控制信息。
所述的控制信息,包含有對該功能模塊升級包的適用范圍的描述、數據 塊標志和偏移地址。
功能模塊升級包的適用范圍的描述可以是針對所有、一組或者單個軟件 保護設備的。如果是針對一組或者單個軟件保護裝置設備,控制信息中還需 要包含待升級的軟件保護設備的特征信息。
所述的軟件保護設備特征信息可以是單個軟件保護設備的唯一標識,也 可以是一組軟件保護設備的唯一標識。單個軟件保護設備的唯一標識與軟件 保護設備是——對應的,可以是軟件保護設備的硬件全球唯一序列號。 一組 軟件保護設備的唯一標識是指一組軟件保護設備共有的區(qū)別于不同組的軟 件保護設備的信息。
軟件開發(fā)商獲取待升級的軟件保護設備特征信息的方法可以是軟件開 發(fā)商在出售軟件產品時記錄同時發(fā)售的軟件保護設備的軟件保護設備特征 信息,也可以是當用戶有升級軟件保護設備的需求時向軟件開發(fā)商提供的該 用戶所持有的軟件保護設備的軟件保護設備特征信息。
數據塊標志用來指明該數據塊是否是最后一個數據塊。
步驟103,加密數據塊并計算校驗碼。
本步驟中,軟件開發(fā)商端對每個數據塊進行加密,并計算控制信息和數 據塊的校驗碼。再把控制信息和數據塊和校驗碼組合成生升級數據塊 加密使用的算法可以是對稱算法也可以是非對稱算法。 計算校驗碼使用的算法可以使HASH算法,HMAC算法,MAC算法或 者非對稱的數字簽名算法
數據塊中的控制信息和校驗碼部分可以加密也可以不加密。
計算校驗碼可以是對加密前的數據計算校驗碼,也可以是對加密后的數
據計算校驗碼,但如果對加密后的數據計算校驗碼,使用的算法不能使
HASH。
例如可以先對^t據(可以包含或者不包含控制信息部分)力。密,然后
計算控制信息和加密后的數據部分的校驗碼,此時校驗碼的計算算法必須使
用需要密鑰參與密鑰的HMAC算法、MAC算法或者非對稱得數字簽名算法。 也可以先對控制信息和加密前的數據計算校驗碼,然后對數據(可以包含或 者不包含控制信息部分或者校驗碼部分)加密,此時計算校驗碼的算法可以 是不需要密鑰參與的HASH算法,也可以使用需要密鑰參與的HMAC算法、 MAC算法或者非對稱的數字簽名算法。
步驟104,組合升級數據塊成為功能模塊升級包。
本步驟中,軟件開發(fā)商端組合升級數據塊,成為功能模塊升級包。
軟件保護裝置端使用升級包升級功能模塊
步驟lll,設置功能模塊為禁用狀態(tài)。
本步驟中,軟件保護裝置先將功能模塊設置成禁用狀態(tài)。
步驟112,接收一個升級數據塊。
本步驟中,軟件保護裝置接收一個升級數據塊。
步驟113,驗證校驗碼并解密數據塊。
本步驟中,軟件保護裝置驗證接收到的升級數據塊的校驗碼,并對加密
的數據進行解密。如果校驗碼驗證通過,則為合法升級包,執(zhí)行步驟114,
否則,為非法的升級包,終止升級過程。
解密數據和驗證校驗碼的過程是和步驟103的順序相對應的。 如果步驟103中校驗碼是針對加密后的數據計算的,那么驗證校驗的過
程是針對解密前的數據的。如果步驟103中校驗碼是針對加密前的數據計算
的。那么驗證校驗碼的過程也是針對解密后的數據。
解密使用的算法也是和步驟103使用的加密算法相對應的。 驗證校驗碼的算法和步驟103使用的計算校驗碼的算法也是相對應的。 步驟U4,檢查控制信息中的參數。
本步驟中,軟件保護裝置檢查升級數據塊中的控制信息中參數。確定升 級數據塊的有效性。
軟件保護裝置檢查數據塊的控制信息中升級包的適用范圍。如果該升級
包是針對全部的軟件保護裝置,則為有效的升級包,否則為無效升級包;如 果該升級包是針對一組軟件保護裝置,則檢查該軟件保護裝置的組唯一標識 是否和控制信息中的硬件特征信息一致,如果一致,則為有效的升級包,否 則為無效升級包;如果該升級包是針對單個軟件保護裝置,則檢查該軟件保 護裝置的唯一標識是否和控制信息中的硬件特征信息一致,如果一致則為有 效升級包,否則為無效升級包,如果是有效升級包則執(zhí)行步驟115,否則終 止升級過程。
步驟115,升級功能模塊中的對應位置的數據。
本步驟中軟件保護裝置檢查功能模塊是否處于禁用狀態(tài),如果是則根據 控制信息中指定的偏移地址升級功能模塊相應偏移地址的數據。否則,終止 升級過程。
步驟116,檢查是否是最后一個數據塊。
本步驟中,軟件保護裝置檢查是否接收到的升級數據塊是否是最后一 塊,如果是則執(zhí)行步驟117,否則返回步驟112
步驟117,設置功能模塊為可用狀態(tài)。
本步驟中,軟件保護裝置設置功能模塊為可用狀態(tài)。
為了使升級過程更加安全,在上述的步驟102中,控制信息中還可以包 含數據塊的序號。步驟114中,加入對序號的檢查,這樣可以保證升級過程 的完整,防止有的數據塊被有意或者無意的丟棄;步驟102中,控制信息中 還可以加入升級包的唯一標識。步驟114中,加入對升級包的唯一標識的檢 查,對升級包的唯一標識的檢查過程如下,如果是第一個數據塊,保存升級 包的唯一標識,如果不是第一個數據塊,則檢查數據塊的升級包的唯一標識 是否和保存的升級包的唯一標識一致,如果一致為有效,否則為無效。這樣 可以保證升級過程數據塊的正確性,防止不同的升級包的數據塊被混合使
用。
上述步驟ill中的,設置功能模塊為禁用狀態(tài),也可以在接收到第一個 合法,有效的升級數據塊的時候完成,那么步驟111就可以省略。
具體實施例
本實施例中,使用TDES算法對數據進行加密,使用HMAC算法計算 校驗碼;升級包可以是針對所有軟件保護裝置或者單個軟件保護裝置,使用 軟件保護裝置的硬件序列號為硬件特征信息;采用對加密前的數據計算校驗 碼的方案;每個升級數據塊中帶有升級數據塊序號和升級包唯一標識。
圖2為本實施例的升級數據塊結構示意圖,如圖2所示
升級數據塊包含了由升級包標識,數據塊序號,數據塊標志,適用范圍 描述,功能模塊標識和偏移地址構成的控制信息,控制信息未加密,以明文 的方式存在。升級數據塊中的數據和校驗碼都被加密的,以密文的方式存在。
圖3為本實施例的流程圖,如圖3所示,
本實施例包括以下步驟
軟件開發(fā)商端生成升級數據包
步驟301,對待升級功能模塊分塊。
本步驟中,軟件開發(fā)商端根據軟件保護設備的通訊數據量對待升級的功 能模塊的數據分塊。
步驟302,設置每個數據塊的控制信息。 本步驟中,軟件開發(fā)商端為每個數據塊設置控制信息。 本實施例中,軟件開發(fā)商生成UUID作為功能模塊升級包的標識。數據 塊的序號以0為基準的遞增的排序。最后一個升級數據塊的數據塊標志為1, 其他的升級數據塊數據塊標志為0,針對單個軟件保護裝置的升級包的適用 范圍描述為8個字節(jié)的硬件序列號。針對所有的軟件保護裝置的升級包的適 用范圍描述為8個字節(jié)的0x00。功能模塊標識為功能模塊的ID,用于標識 同 一個軟件保護裝置中的不同的功能模塊。偏移地址為數據塊的長度乘數據 塊的序號值。
步驟303,加密數據塊并計算校驗碼。
本步驟中,軟件開發(fā)商端對每個數據塊進行加密,并計算控制信息和數 據塊的校驗碼。再把控制信息和數據塊和校驗碼組合成生升級數據塊
本實施例中,軟件開發(fā)商端使用HMAC算法,對控制信息和加密前的 數據塊計算校驗碼。然后使用TDES算法對數據塊和校驗碼加密。
HMAC算法和TDES算法使用的密鑰都是事前在軟件開發(fā)商端和軟件 保護裝置之間預先約定好的。
步驟304,組合升級數據塊成為功能模塊升級包。
本步驟中,軟件開發(fā)商端組合升級數據塊,成為功能模塊升級包
軟件保護裝置端使用升級包升級功能模塊
步驟3U,接收一個升級數據塊。
本步驟中,軟件保護裝置接收一個升級數據塊。
步驟312,驗證校驗碼并解密數據塊。
本步驟中,軟件保護裝置驗證接收到的升級數據塊的校驗碼。并對加密 的數據進行解密。如果校驗碼驗證通過,則為合法升級包,執(zhí)行步驟114, 否則,為非法的升級包,終止升級過程。
本實施例中,軟件保護裝置先使用TDES算法對數據塊和校驗碼解密, 然后使用HMAC算法驗證控制信息和數據塊的校驗碼,如果驗證通過,為 合法的升級數據塊,否則為非法的升級數據塊,終止升級過程。
步驟313,檢查控制信息中的參數。
本步驟中,軟件保護裝置檢查升級數據塊中的控制信息中參數。確定升 級數據塊的有效性。
本實施例中,如果接收的升級數據塊的升級數據塊序號為0,則保存升 級包標識和升級數據塊序號。否則^f企查升級數據塊序號和升級數據塊中的升 級包標識,如果升級數據塊序號等于保存得升級數據塊序號加1,為有效升 級數據,否則為無效升級數據塊,如果升級數據塊中的升級包標識和保存的 升級包標識一致,為有效的升級數據塊。否則為無效的升級數據塊;軟件保
護裝置檢查適用范圍描述,如果是8個字節(jié)的0x00,則為有效升級數據塊, 如果不是8個字節(jié)的0x00,則判斷適用范圍描述是否合自身的硬件序列號 相同,如果相同則為有效升級數據塊;檢查是否存在功能模塊標識指定的功 能模塊,如果存在為有效的升級數據塊,否則為無效升級數據塊;如果是有 效的數據塊
步驟314,檢查或者設置功能模塊的狀態(tài)。
本步驟中,軟件保護裝置根據接收到的升級數據塊的控制信息檢查或者 設置功能模塊的狀態(tài)。
本實施例中,軟件保護裝置檢查升級數據塊的升級數據塊序號,如果為 0,設置指定的功能模塊為禁用狀態(tài);如不是0則檢查功能狀態(tài)是否處于禁 用狀態(tài),如果處于禁用狀態(tài),執(zhí)行步驟315,否則終止升級過程。
步驟315,升級功能模塊中的對應位置的數據。
本步驟中軟件保護裝置根據控制信息中指定的偏移地址升級功能模塊 相應偏移地址的數據。
步驟316,檢查是否是最后一個數據塊。
本步驟中,軟件保護裝置檢查是否接收到的升級數據塊是否是最后一 塊,如果是則執(zhí)行步驟317,否則返回步驟311。
本實施例中,軟件保護裝置檢查升級數據塊的升級數據塊標志,如果為 1,則為最后一個數據塊,否則認為還有后續(xù)的數據塊。
步驟317,設置功能模塊為可用狀態(tài)。
本步驟中,軟件保護裝置設置功能模塊為可用狀態(tài)。
權利要求
1、一種分塊式的遠程更新的方法,其特征在于,該方法包括步驟(1)將待升級的功能模塊分塊;(2)對分塊的升級數據塊進行處理后生成功能模塊升級包;(3)軟件保護裝置使用所述升級包升級功能模塊。
2、 根據權利要求1的所述方法,其特征在于,在步驟(2)中,為每個 升級數據塊設置控制信息。
3、 根據權利要求2的所述方法,其特征在于,在步驟(2)中,為每個 升級數據塊加密并計算校驗碼。
4、 根據權利要求3的所述方法,其特征在于,將升級數據塊組合起來 形成功能模塊升級包。
5、 根據權利要求1的所述方法,其特征在于,在步驟(3)中,軟件保 護裝置先將功能模塊設置成禁用狀態(tài)。
6、 根據權利要求5的所述方法,其特征在于,軟件保護裝置接收升級 數據塊。
7、 根據權利要求6的所述方法,其特征在于,軟件保護裝置驗證接收 到的升級數據塊的校驗碼。
8、 根據權利要求7的所述方法,其特征在于,如果校驗碼驗證通過, 則為合法升級包;否則為非法的升級包,終止升級過程。
9、 根據權利要求8的所述方法,其特征在于,通過校驗碼驗證后,檢 查升級數據塊中的控制信息,判斷升級包有效或無效,如果是無效升級包則終止升級過程。
10、 根據權利要求9的所述方法,其特征在于,如果是有效升級包則升 級功能模塊中的對應的數據。
11、 根據權利要求10的所述方法,其特征在于,檢查當前的升級數據 塊是否是最后一個。
12、 根據權利要求11的所述方法,其特征在于,如果是最后一個數據 塊,則將功能模塊設置為可用狀態(tài)。
全文摘要
本發(fā)明公開了一種軟件保護裝置中的功能模塊的升級方法,該方法包括軟件開發(fā)商端在生成升級包時,將待升級的功能模塊的數據分成多個數據塊,并為每個數據塊設置控制信息、計算校驗碼,并對需要加密的數據加密,然后組合這些數據塊,形成功能模塊升級包。軟件保護裝置在升級功能模塊時,也是分塊地對功能模塊進行升級,并通過驗證每個數據塊的校驗碼以確定每個數據塊的合法性,通過檢查數據塊中的控制信息來確定每個數據塊的有效性。
文檔編號G06F21/22GK101344906SQ200810111950
公開日2009年1月14日 申請日期2008年5月19日 優(yōu)先權日2008年5月19日
發(fā)明者孫吉平, 勇 韓 申請人:北京深思洛克數據保護中心