專利名稱:一種軟件保護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件保護(hù)技術(shù),特別涉及一種基于軟件保護(hù)裝置的軟件保護(hù) 方法。
背景技術(shù):
使用軟件保護(hù)裝置是實現(xiàn)軟件安全保護(hù)和版權(quán)保護(hù)的主要手段。軟件保護(hù)裝置特指一種附加在計算機(jī)接口 (比如,USB接口、串口、并口等接口) 上的硬件設(shè)備,對運(yùn)行在計算機(jī)上的特定的軟件進(jìn)行軟件安全保護(hù)和版權(quán)保 護(hù)。作為當(dāng)前軟件安全保護(hù)和版權(quán)保護(hù)方面最有效的技術(shù)手段之一,軟件保 護(hù)裝置在促進(jìn)軟件行業(yè)的健康發(fā)展方面起了非常大的作用,但也因此成為盜 版者重點攻擊的對象。事實上,從軟件保護(hù)裝置誕生的那一天開始,盜版者 與軟件廠商之間的戰(zhàn)場就開始從軟件轉(zhuǎn)移到軟件保護(hù)裝置上了 。在眾多的攻 擊手段中,復(fù)制和偽造軟件保護(hù)裝置是一種危害極大的行為,這將使軟件保 護(hù)體系崩潰,軟件廠商因此不能識別合法的客戶,購買產(chǎn)品的客戶不能知道 自己使用的產(chǎn)品是否為正版,因此這是絕對不可以接受的盜版行為。軟件保護(hù)裝置實現(xiàn)保護(hù)的原理是將軟件所必須的內(nèi)容實現(xiàn)放置在裝置 中,軟件運(yùn)行時通過計算機(jī)接口訪問設(shè)備,獲得繼續(xù)運(yùn)行所需要的信息,因 此,軟件保護(hù)裝置內(nèi)放置的內(nèi)容的安全是保護(hù)軟件的關(guān)鍵,不斷增加硬件的 安全性是軟件保護(hù)裝置進(jìn)步的主要方向,從最早的EEPROM到固定算法 MCU,再到可變算法MCU為基礎(chǔ)的軟件保護(hù)裝置時代,其硬件攻擊成本是 不斷增加的,特別是現(xiàn)在基于智能卡的軟件保護(hù)裝置,其硬件攻擊的成本已 經(jīng)遠(yuǎn)遠(yuǎn)超過盜版軟件所能帶來的利潤,猖獗一時的直接克隆硬件的手段在智能卡產(chǎn)品時代已經(jīng)逐漸銷聲匿跡了 。然而,軟件保護(hù)裝置與軟件之間通信的部分卻是一個薄弱的環(huán)節(jié),盜版者可以通過軟件保護(hù)裝置的API、驅(qū)動、甚至是偵聽物理總線,獲得軟件保護(hù)裝置與軟件之間通信的數(shù)據(jù),分析出軟件保護(hù)裝置內(nèi)部被保護(hù)的數(shù)據(jù)和功 能,從而有針對的偽造出一個功能相同的軟件保護(hù)裝置。雖然現(xiàn)在可以通過 移植軟件代碼等手段提高分析的難度,甚至可以達(dá)到無法分析的難度,但是 由于移植代碼的技術(shù)難度高、受軟件本身限制等客觀原因影響,能夠?qū)嵤┻@ 種手段的軟件畢竟是少數(shù),對于多數(shù)軟件來說,由于通信數(shù)據(jù)的復(fù)雜度有限, 仍然存在很大的風(fēng)險。發(fā)明內(nèi)容有鑒于此,本發(fā)明提出一種有效防范軟件保護(hù)裝置被偽造的方法,在軟 件中利用非對稱算法對軟件保護(hù)裝置進(jìn)行合法性認(rèn)證,由于非對稱算法的安 全性已經(jīng)在理論和實踐中得到無數(shù)次檢驗,因此采用這種認(rèn)證方法后,偽造 軟件保護(hù)裝置已經(jīng)是技術(shù)上不可行的了 。非對稱密鑰算法是指一個加密算法的加密密鑰和解密密鑰是不一樣的,這兩個密鑰其中一個稱為公鑰,用于加密,是公開的;另一個稱為私鑰,用 于解密,是保密的。其中由公鑰計算私鑰是計算上不可行的。由于有這種特 性,非對稱算法在網(wǎng)上銀行、電子商務(wù)等高度注重安全的領(lǐng)域得到廣泛的應(yīng) 用,本發(fā)明將這種算法應(yīng)用范圍擴(kuò)展到對軟件保護(hù)裝置合法性的識別上,解 決偽造軟件保護(hù)裝置的問題。參見圖l,根據(jù)本發(fā)明的一個方面,提供一種軟件保護(hù)方法,其特征在 于,該方法包括步驟A、 利用非對稱算法生成一對公鑰和私鑰;B、 在受保護(hù)軟件中保存公鑰,在軟件保護(hù)裝置中保存私鑰;C、 受保護(hù)軟件使用其中保存的公鑰驗證軟件保護(hù)裝置中是否持有對應(yīng) 的私鑰;中持有對應(yīng)的私鑰,則確定軟件保護(hù)裝置 合法;否則,確定軟件保護(hù)裝置不合法。根據(jù)本發(fā)明的一個方面,其特征還在于,所述步驟C中的驗證還包括 步驟(1) 受保護(hù)軟件發(fā)送驗證數(shù)據(jù)給軟件保護(hù)裝置;(2) 軟件保護(hù)裝置對驗證數(shù)據(jù)進(jìn)行計算,將響應(yīng)數(shù)據(jù)返回給受保護(hù)軟件;(3) 受保護(hù)軟件對軟件保護(hù)裝置返回的響應(yīng)數(shù)據(jù)進(jìn)行驗證。 根據(jù)本發(fā)明的一個方面,其特征還在于,所述驗證方式為挑戰(zhàn)/響應(yīng)(Challenge/Response )方式。根據(jù)本發(fā)明的一個方面,其特征還在于,所述驗證方式為數(shù)字簽名驗證 方式。根據(jù)本發(fā)明的一個方面,其特征還在于,所述軟件保護(hù)裝置內(nèi)部可編程。 根據(jù)本發(fā)明的一個方面,其特征還在于,所述軟件保護(hù)裝置支持RSA非對稱算法。 '根據(jù)本發(fā)明的一個方面,其特征還在于,所述I^S正數(shù)據(jù)是隨機(jī)數(shù)。 根據(jù)本發(fā)明的一個方面,其特征還在于,所述軟件保護(hù)裝置為北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV高強(qiáng)度智能卡加密鎖。根據(jù)本發(fā)明的一個方面,其特征還在于,所述軟件保護(hù)裝置為北京深思洛克數(shù)據(jù)保護(hù)中心的精銳E高強(qiáng)度智能卡加密鎖。根據(jù)本發(fā)明的一個方面,其特征還在于,采用的非對稱算法為RSA或ECC公開密鑰體系算法。
圖1是本發(fā)明的方法流程示意圖。圖2是本發(fā)明中進(jìn)行驗證的流程示意圖。
具體實施方式
為使本發(fā)明所述方法更容易被理解,下面參考圖2通過具體實施例來進(jìn) 行說明。實施例一本實施例所述軟件保護(hù)裝置為北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV產(chǎn) 品,精銳IV是國內(nèi)首款智能卡加密鎖,其主要原理是在智能卡內(nèi)為數(shù)據(jù)和 代碼執(zhí)行提供一個高度安全的、不可跟蹤的環(huán)境,有效的對抗軟件盜版行為, 其內(nèi)部可提供最大64K的存儲空間,以文件方式組織,用于存儲需要保密 的代碼和數(shù)據(jù),并可以在內(nèi)部執(zhí)行文件中保存的代碼,同時,精銳IV支持 1024bit RSA非對稱算法的密鑰存儲和運(yùn)算,適合應(yīng)用于本發(fā)明所述方法。本實施例所用非對稱算法為1024bitRSA算法。本實施例所用軟件為Visual C++ 6.0開發(fā)的控制臺程序。實施步驟如下1. 利用精銳IVSDK中提供的開發(fā)測試工具生成一對1024 bit RSA公 私鑰對,保存為公鑰文件KEY.PUB和私鑰文件KEY.PRI;2. 將KEY.PUB轉(zhuǎn)換為C語言格式的字節(jié)常數(shù)定義,并加入到軟件的 源代碼中;3. 精銳IV內(nèi)部創(chuàng)建私鑰文件0001,將KEY.PRI寫入0001文件中;'4. 在精銳IV內(nèi)部建立可執(zhí)行文件0002,并編寫相應(yīng)代碼,以完成數(shù) 據(jù)接收、使用0001文件中的私鑰進(jìn)行數(shù)字簽名,和發(fā)送響應(yīng)數(shù)據(jù) 的功能;5. 軟件產(chǎn)生若干字節(jié)的隨機(jī)數(shù),并發(fā)送給精銳IV的0002可執(zhí)行文件 處理;6. 精銳IV內(nèi)的0002文件使用0001文件中的私鑰對軟件發(fā)來的數(shù)據(jù)進(jìn)行RSA數(shù)字簽名操作,并將結(jié)果返回;7. 軟件調(diào)用RSA算法庫,利用步驟2中保存的公鑰數(shù)據(jù)對精銳IV返 回的簽名結(jié)果進(jìn)行驗證。驗證通過,則認(rèn)為精銳IV持有對應(yīng)的私 鑰,為合法設(shè)備;8. 軟件中可重復(fù)5-7步驟,進(jìn)行多次認(rèn)證。實施例二本實施例所述軟件保護(hù)裝置為北京深思洛克數(shù)據(jù)保護(hù)中心的精銳E產(chǎn) 品,精銳E產(chǎn)品的原理也在智能卡內(nèi)為數(shù)據(jù)和代碼執(zhí)行提供一個高度安全 的、不可跟蹤的環(huán)境,有效的對抗軟件盜版行為,其內(nèi)部可提供最大32K 的代碼和數(shù)據(jù)存儲空間,以代碼和數(shù)據(jù)混合的模塊方式組織,支持內(nèi)部執(zhí)行 代碼,并支持1024bit RSA非對稱算法的密鑰存儲和運(yùn)算,適合應(yīng)用于本 發(fā)明所述方法。本實施例所用非對稱算法為1024 bit RSA算法。本實施例所用軟件為Visual C++ 6.0開發(fā)的控制臺程序。實施步驟如下1. 利用精銳E SDK中提供的開發(fā)測試工具生成一對1024 bit RSA公 私鑰對,保存為/>鑰文件KEY.PUB和私鑰文件KEY.PRI;2. 將KEY.PUB轉(zhuǎn)換為C語言格式的字節(jié)常數(shù)定義,并加入到軟件的 源代碼中;3. 在精銳E內(nèi)部建立可執(zhí)行模塊M1,將KEY.PRI加入到模塊的數(shù)據(jù) 區(qū),并編寫代碼處理設(shè)備驗證請求,以完成數(shù)據(jù)接收、使用數(shù)據(jù)區(qū) 中的私鑰進(jìn)行數(shù)字簽名,和發(fā)送響應(yīng)數(shù)據(jù)的功能;4. 軟件產(chǎn)生若干字節(jié)的隨機(jī)數(shù),并使用步驟3中定義的公鑰,調(diào)用 RSA算法庫加密,將加密結(jié)果發(fā)送給精銳E的Ml模塊處理;5. 精銳E內(nèi)的Ml模塊對軟件發(fā)來的數(shù)據(jù)進(jìn)行RSA解密操作,并將 結(jié)果返回;6. 軟件比較步驟4產(chǎn)生的隨機(jī)數(shù)和步驟5返回的設(shè)備響應(yīng),如果相同,則認(rèn)為精4兌IV持有對應(yīng)的私鑰,為合法i殳備;7. 軟件中可重復(fù)4-6步驟。以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范 圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種軟件保護(hù)方法,其特征在于,該方法包括步驟A、利用非對稱算法生成一對公鑰和私鑰;B、在受保護(hù)軟件中保存公鑰,在軟件保護(hù)裝置中保存私鑰;C、受保護(hù)軟件使用其中保存的公鑰驗證軟件保護(hù)裝置中是否持有對應(yīng)的私鑰;D、如果驗證出軟件保護(hù)裝置中持有對應(yīng)的私鑰,則確定軟件保護(hù)裝置合法;否則,確定軟件保護(hù)裝置不合法。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C中的驗證還 包括步驟(1) 受保護(hù)軟件發(fā)送驗證數(shù)據(jù)給軟件保護(hù)裝置;(2) 軟件保護(hù)裝置對驗證數(shù)據(jù)進(jìn)行計算,將響應(yīng)數(shù)據(jù)返回給受保護(hù)軟件;(3 )受保護(hù)軟件對軟件保護(hù)裝置返回的響應(yīng)數(shù)據(jù)進(jìn)行驗證。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述驗證方式為挑戰(zhàn)/ 響應(yīng)(Challenge/Response)方式。
4、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述驗證方式為數(shù)字簽 名-驗i正方式。
5、 根據(jù)權(quán)利要求1-4所述任一方法,其特征在于,所述軟件保護(hù)裝置 內(nèi)部可編程。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述軟件保護(hù)裝置支持 RSA非對稱算法。 '
7、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述驗證數(shù)據(jù)是隨機(jī)數(shù)。
8、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述軟件保護(hù)裝置為北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV高強(qiáng)度智能卡加密鎖。
9、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述軟件保護(hù)裝置為北 京深思洛克數(shù)據(jù)保護(hù)中心的精銳E高強(qiáng)度智能卡加密鎖。
10、 根據(jù)權(quán)利要求l-9所述的任一方法,其特征在于,釆用的非對稱算 法為RSA或ECC公開密鑰體系算法。
全文摘要
本發(fā)明公開了一種基于非對稱算法的軟件保護(hù)方法,其原理在于受保護(hù)軟件使用非對稱算法驗證軟件保護(hù)裝置的合法性,鑒別偽造軟件保護(hù)裝置的行為。本發(fā)明將身份認(rèn)證領(lǐng)域廣泛應(yīng)用的、且已經(jīng)經(jīng)過時間檢驗被證明是安全有效的認(rèn)證算法用于軟件對軟件保護(hù)裝置的驗證過程,徹底解決偽造軟件保護(hù)裝置的問題。
文檔編號G06F21/22GK101281575SQ20081010656
公開日2008年10月8日 申請日期2008年5月14日 優(yōu)先權(quán)日2008年5月14日
發(fā)明者孫吉平, 勇 韓 申請人:北京深思洛克數(shù)據(jù)保護(hù)中心