專(zhuān)利名稱(chēng):一種撤銷(xiāo)軟件許可的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件許可保護(hù)技術(shù),特別涉及一種軟件許可的遠(yuǎn)程撤銷(xiāo)技術(shù)。
背景技術(shù):
使用軟件保護(hù)設(shè)備是實(shí)現(xiàn)軟件安全保護(hù)和版權(quán)保護(hù)的主要手段。軟件保 護(hù)設(shè)備中存儲(chǔ)著軟件的使用許可,例如決定軟件是否可以被使用,哪些模塊 被使用等等。簡(jiǎn)單地在軟件保護(hù)設(shè)備中存儲(chǔ)數(shù)據(jù)并不能避免軟件免受盜版等 非合法授權(quán)使用的情況。因而,軟件保護(hù)設(shè)備通常具有一些特殊的功能用于 軟件版權(quán)等保護(hù),最常見(jiàn)的是軟件保護(hù)設(shè)備提供一些可設(shè)置的黑箱功能,在 經(jīng)過(guò)軟件所有者的初始設(shè)置之后,軟件保護(hù)設(shè)備就具備了一些軟件開(kāi)發(fā)者私 有的功能,并用于軟件的合法性校驗(yàn)。絕大多數(shù)情況下,對(duì)軟件保護(hù)設(shè)備進(jìn) 行初始化設(shè)置需要驗(yàn)證一個(gè)所謂的高級(jí)密碼,只有擁有這個(gè)高級(jí)密碼才可以 改變軟件保護(hù)設(shè)備的內(nèi)部功能設(shè)置。同時(shí), 一般來(lái)說(shuō)這個(gè)高級(jí)密碼并不能從 軟件保護(hù)設(shè)備中讀取敏感數(shù)據(jù),也就是說(shuō)如果高級(jí)密碼不慎泄漏,并不一定 會(huì)威脅到軟件保護(hù)設(shè)備中的數(shù)據(jù)安全。然而,很少有人將自己軟件保護(hù)設(shè)備 的高級(jí)密碼泄漏出去,以避免潛在的其它風(fēng)險(xiǎn),例如有人利用這個(gè)高級(jí)密碼 對(duì)軟件保護(hù)設(shè)備的功能進(jìn)行惡意修改。中國(guó)專(zhuān)利申請(qǐng)第99214217.2號(hào)中公開(kāi)了一種軟件保護(hù)設(shè)備。在這個(gè)專(zhuān) 利公開(kāi)文獻(xiàn)中,提供了一種軟件保護(hù)設(shè)備的工作方法,可以對(duì)軟件的版權(quán)進(jìn) 行保護(hù)。具體來(lái)說(shuō),該軟件保護(hù)設(shè)備運(yùn)行軟件開(kāi)發(fā)者在其中寫(xiě)入的匯編代碼, 從而使得軟件保護(hù)設(shè)備能夠?qū)崿F(xiàn)特定的功能,即形成一段有特定功能的算 法。軟件在運(yùn)行過(guò)程中,既可以直接調(diào)用軟件保護(hù)設(shè)備完成特定的功能,也可以通過(guò)對(duì)軟件保護(hù)設(shè)備中功能的正確性進(jìn)行驗(yàn)證,來(lái)確保軟件的授權(quán)是合 法的。寫(xiě)入?yún)R編代碼時(shí)需要一個(gè)所謂的"開(kāi)發(fā)商密碼",只有這個(gè)密碼才能 修改裝置內(nèi)部的匯編指令,但是即時(shí)擁有開(kāi)發(fā)商密碼也不能讀出軟件保護(hù)設(shè) 備內(nèi)部的匯編指令內(nèi)容。隨著時(shí)間的推移,舊的軟件保護(hù)設(shè)備由于其功能性和安全性的問(wèn)題,可 能已經(jīng)不能適用于新版本的軟件,即新版本的軟件需要更換為新的軟件保護(hù)如果繼續(xù)留給用戶(hù),那么用戶(hù)就可以同時(shí)擁有新舊兩套軟件保護(hù)設(shè)備設(shè)置, 也就意味著同時(shí)擁有兩套可用的軟件,這通常是軟件開(kāi)發(fā)者所不允許的。然 而,由于技術(shù)條件所限,舊的軟件保護(hù)設(shè)備在發(fā)行的時(shí)候都沒(méi)有考慮到遠(yuǎn)程 撤銷(xiāo)授權(quán)問(wèn)題,只提供物理回收(即要求用戶(hù)將舊軟件保護(hù)設(shè)備郵寄給軟件發(fā)行者)這樣一種解決途徑。然而這個(gè)唯一的解決途徑至少存在兩個(gè)問(wèn)題 第一,郵寄的成本問(wèn)題,用戶(hù)很難認(rèn)可承擔(dān)這部分成本,開(kāi)發(fā)者也會(huì)認(rèn)為這 是一種浪費(fèi);第二,時(shí)間間隔問(wèn)題,用戶(hù)如果在收到新的軟件保護(hù)設(shè)備之前 就將舊設(shè)備寄出,就會(huì)面臨數(shù)日內(nèi)無(wú)軟件可用的問(wèn)題,而如果開(kāi)發(fā)者允許用 戶(hù)在收到新版本后寄出舊版設(shè)備,又會(huì)面臨用戶(hù)故意拖延甚至不寄出的問(wèn) 題。因此,最佳的解決方法是,軟件開(kāi)發(fā)者可以在提供給用戶(hù)新版的軟件保 護(hù)設(shè)備的同時(shí),能夠可靠的撤銷(xiāo)舊版軟件保護(hù)設(shè)備中的軟件許可。發(fā)明內(nèi)容為了解決上述問(wèn)題,本發(fā)明提出了一種遠(yuǎn)程撤銷(xiāo)軟件保護(hù)設(shè)備中所擁有 的軟件使用許可的方法,在軟件開(kāi)發(fā)者的控制策略之下,可以在不回收硬件 設(shè)備的基礎(chǔ)上,安全地撤銷(xiāo)軟件保護(hù)設(shè)備中的已有許可。具體來(lái)說(shuō),新版本 的軟件保護(hù)設(shè)備(第一軟件保護(hù)設(shè)備)能夠?qū)εf版本軟件保護(hù)設(shè)備(第二軟 件保護(hù)設(shè)備)中的軟件使用許可是否被安全撤銷(xiāo)進(jìn)行驗(yàn)證,驗(yàn)證成功后新的 軟件保護(hù)設(shè)備的功能才正式啟用,從而實(shí)現(xiàn)了新舊軟件之前的無(wú)縫切換。為了便于敘述,首先對(duì)以下概念進(jìn)行說(shuō)明軟件保護(hù)設(shè)備特指一種附加在計(jì)算機(jī)接口尤其是USB接口上的硬件 設(shè)備,能夠利用設(shè)備所提供的功能,對(duì)運(yùn)行在計(jì)算機(jī)上的軟件進(jìn)行版權(quán)保護(hù);軟件使用許可對(duì)軟件的使用權(quán)利進(jìn)行規(guī)定和約束的許可,例如規(guī)定軟 件的使用時(shí)間,最簡(jiǎn)單的許可形式為決定軟件是否可以被運(yùn)行。根據(jù)本發(fā)明的一個(gè)方面,提供一種撤銷(xiāo)軟件許可的方法,其特征在于, 該方法包括步驟A、 將第一軟件保護(hù)設(shè)備設(shè)置為受限制狀態(tài),并將第一軟件保護(hù)設(shè)備發(fā) 送給軟件用戶(hù);B、 軟件用戶(hù)得到第一軟件保護(hù)設(shè)備后,將替換代碼寫(xiě)入第二軟件保護(hù) 設(shè)備中,并且寫(xiě)入的替換代碼與第二軟件保護(hù)設(shè)備中未被替換的代碼結(jié)合工 作以完成新的功能;C、 驗(yàn)證第二軟件保護(hù)設(shè)備是否已經(jīng)被寫(xiě)入了所述替換代碼;D、 如果驗(yàn)證成功,則解除步驟A中對(duì)第一軟件保護(hù)設(shè)備受限制狀態(tài), 否則繼續(xù)保持第 一 軟件保護(hù)設(shè)備的受限制狀態(tài)。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,在步驟A中,對(duì)第一軟件保護(hù) 設(shè)備的限制是限定所保護(hù)軟件的運(yùn)行次數(shù)或者時(shí)間,或者禁止所保護(hù)的軟 件運(yùn)行。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,在步驟B中,所述的替換代碼 是可執(zhí)行代碼,或者改變第二軟件保護(hù)設(shè)備的配置數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,如果所述替換代碼是可執(zhí)行代 碼,那么替換代碼不能全部替代第二軟件保護(hù)設(shè)備中的已有代碼,而只能替 換第二軟件保護(hù)設(shè)備中可執(zhí)行代碼的一部分,并與未被替換的代碼結(jié)合形成 新的功能。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,如果所述替換代碼是改變第二 軟件保護(hù)設(shè)備的配置數(shù)據(jù),那么在配置數(shù)據(jù)被修改后,仍然保留未被修改的 配置數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,改變第二軟件保護(hù)設(shè)備的配置數(shù)據(jù)是種子碼或者密鑰。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,步驟C中驗(yàn)證第二軟件保護(hù)設(shè) 備是否已經(jīng)被寫(xiě)入了所述替換代碼驗(yàn)證的具體步驟是驗(yàn)證步驟B中新的功 能是否被正確實(shí)現(xiàn)。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,在步驟C中,所述驗(yàn)證是發(fā)送一個(gè)隨機(jī)數(shù)給第二軟件保護(hù)設(shè)備;第二軟件保護(hù)設(shè)備根據(jù)步驟B中最終得到的新功能對(duì)所述隨機(jī)數(shù)進(jìn)行 處理;第二軟件保護(hù)設(shè)備將得到的處理結(jié)果發(fā)送給第一軟件保護(hù)設(shè)備; 第 一軟件保護(hù)設(shè)備驗(yàn)證處理結(jié)果是否正確。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,限制步驟C中重復(fù)驗(yàn)證的次數(shù), 如果在限定的次數(shù)內(nèi)沒(méi)有成功驗(yàn)證,對(duì)第一軟件保護(hù)設(shè)備進(jìn)行鎖定,不允許 繼續(xù)進(jìn)行-瞼i正。根據(jù)本發(fā)明的一個(gè)方面,其特征還在于,步驟C中,驗(yàn)證過(guò)程利用網(wǎng) 絡(luò)進(jìn)行,或者在第一軟件保護(hù)設(shè)備和第二軟件保護(hù)設(shè)備之間直接進(jìn)行。
圖1為本發(fā)明的示意圖。圖2為根據(jù)本發(fā)明的第一實(shí)施方式的撤銷(xiāo)可執(zhí)行代碼的舊版軟件保護(hù) 設(shè)備許可并解除新版軟件保護(hù)設(shè)備初始限制的流程圖;圖3為根據(jù)本發(fā)明的第二實(shí)施方式的撤銷(xiāo)配置型舊版軟件保護(hù)設(shè)備并 解除新版軟件保護(hù)設(shè)備初始限制的流程圖。
具體實(shí)施方式
本發(fā)明的過(guò)程包括以下步驟a)軟件開(kāi)發(fā)者將新的軟件保護(hù)設(shè)備置于一種受限制的狀態(tài)并發(fā)送給軟 件用戶(hù);b)軟件用戶(hù)得到新的軟件保護(hù)設(shè)備后,運(yùn)行軟件開(kāi)發(fā)者所提供的軟件, 將部分替換代碼寫(xiě)入舊版的軟件保護(hù)設(shè)備中,并與殘留的代碼結(jié)合工作,以完成新的功能;法是驗(yàn)證步驟b中新的功能是否被正確實(shí)現(xiàn);如果驗(yàn)證成功,則解 除步驟a中對(duì)新的軟件保護(hù)設(shè)備的限制,否則繼續(xù)保持限制狀態(tài)。在經(jīng)過(guò)上述步驟之后,舊的軟件保護(hù)設(shè)備中的功能已經(jīng)被改變,從而導(dǎo) 致原有的軟件不能繼續(xù)運(yùn)行,其結(jié)果是將軟件保護(hù)設(shè)備中的授權(quán)撤銷(xiāo);新的 軟件保護(hù)設(shè)備在確認(rèn)舊的授權(quán)被撤銷(xiāo)之后方解除對(duì)自身的限制,也就使得用 戶(hù)完全獲得了新版本軟件的許可。在步驟a中,對(duì)新的軟件保護(hù)設(shè)備的限制可以是限定所保護(hù)的軟件可以 運(yùn)行的次數(shù)或者時(shí)間,也可以限制所保護(hù)的軟件完全不能運(yùn)行。在步驟b中,所述的替換代碼不限于是完全可執(zhí)行的代碼,也可以是能 夠改變舊版軟件保護(hù)設(shè)備的配置數(shù)據(jù),例如種子碼、密鑰等。如果所述替換代碼是可執(zhí)行的代碼,那么替換代碼必須不能全部替代舊 版軟件保護(hù)設(shè)備中的已有代碼,而只能是替換舊版軟件保護(hù)設(shè)備中可執(zhí)行代 碼的一部分,并與未被替換即殘留的代碼結(jié)合形成新的功能。因?yàn)榕f版軟件 保護(hù)設(shè)備中的已有代碼是不可預(yù)知的,因而盡管被寫(xiě)入的替換代碼的功能可 以被截取到,但是替換代碼和殘留代碼結(jié)合后,形成的新功能依然無(wú)法預(yù)知。 這種方式就可以保證只有新版軟件保護(hù)設(shè)備能夠校驗(yàn)所述替換代碼是否被 寫(xiě)入到了舊版軟件保護(hù)設(shè)備中。如果所述替換代碼是改變舊版軟件保護(hù)設(shè)備的配置數(shù)據(jù),例如種子碼或 者密鑰等,那么在配置數(shù)據(jù)被修改后,仍然可以保留部分舊的配置數(shù)據(jù)。此 時(shí),新的軟件保護(hù)設(shè)備可以同時(shí)對(duì)新的配置數(shù)據(jù)引起的功能改變和殘留的配 置數(shù)據(jù)所附有的功能分別進(jìn)行驗(yàn)證,根據(jù)全部的驗(yàn)證結(jié)果來(lái)判斷所述替換代 碼是否被成功寫(xiě)入。在步驟b中可以進(jìn)一步要求,所述的替換代碼具備一定的隨機(jī)性,針對(duì)不同的舊版軟件保護(hù)設(shè)備,所寫(xiě)入的替換代碼是可變的,寫(xiě)入的過(guò)程受新版 軟件保護(hù)設(shè)備的控制。這樣可以避免某個(gè)舊版軟件保護(hù)設(shè)備被多個(gè)新版軟件 保護(hù)設(shè)備所驗(yàn)證通過(guò)。在步驟C中,所述驗(yàn)證可以是發(fā)送一個(gè)隨機(jī)數(shù),要求舊版的軟件保護(hù)設(shè)備根據(jù)步驟b中所最終得到的新功能對(duì)隨機(jī)數(shù)進(jìn)行處理,將得到的處理結(jié)果 發(fā)送給新版軟件保護(hù)設(shè)備,由新版軟件保護(hù)設(shè)備驗(yàn)證處理結(jié)果是否正確。為 了進(jìn)一步提高安全性,可以限制步驟c可重復(fù)驗(yàn)證的次數(shù),如果在設(shè)定的次 數(shù)內(nèi)沒(méi)有成功驗(yàn)證,將對(duì)新版軟件保護(hù)設(shè)備進(jìn)行鎖定,不允許繼續(xù)進(jìn)行驗(yàn)證。步驟c中,驗(yàn)證過(guò)程既可以是利用互聯(lián)網(wǎng)遠(yuǎn)程進(jìn)行,也可以在軟件的協(xié) 助下在新版軟件保護(hù)設(shè)備和舊版軟件保護(hù)設(shè)備之間直接進(jìn)行。下面結(jié)合附圖2、 3對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)描述。 實(shí)施例一本實(shí)施例中,舊版軟件保護(hù)設(shè)備為可執(zhí)行代碼的軟件保護(hù)設(shè)備,如中國(guó) 專(zhuān)利第99214217.2號(hào)中公開(kāi)對(duì)軟件保護(hù)設(shè)備。在這種舊版軟件保護(hù)設(shè)備中,通過(guò)軟件開(kāi)發(fā)者寫(xiě)入的可執(zhí)行代碼,使得 軟件保護(hù)設(shè)備具備了軟件開(kāi)發(fā)者所預(yù)期的功能。這部分功能只有軟件開(kāi)發(fā)者 自己知道細(xì)節(jié),也就是任何其他人無(wú)法知道可執(zhí)行代碼的內(nèi)容。可執(zhí)行代碼 是對(duì)可以運(yùn)行的指令的統(tǒng)稱(chēng),可以是一種匯編指令組成的代碼,也可以是一 些指令的集合。這些可執(zhí)行代碼可以被部分進(jìn)行替換,而且不能夠被讀出。在本實(shí)施例中,包括一個(gè)新的軟件保護(hù)設(shè)備A,和一個(gè)舊版的軟件保護(hù) 設(shè)備B。其中,軟件保護(hù)設(shè)備B中包含了舊版軟件的使用許可,以專(zhuān)利 99214217.2中公開(kāi)的設(shè)備為例,設(shè)備中包括了一段匯編代碼,例如ADD AX1,BX0MOV BXO, BX1SUB AX1,BX0RORAX1,5上面四句匯編指令的意義是第一句將BXO寄存器中的數(shù)據(jù)與AX1寄存器中的數(shù)據(jù)相加,得到的 結(jié)果存儲(chǔ)到AX1中;第二句將BX1中的數(shù)據(jù)移到BX0中;第三句將AX1中的數(shù)據(jù)減去BXO中的數(shù)據(jù),得到的結(jié)果存儲(chǔ)到AX1中;第四句將AX1中的數(shù)據(jù)向右循環(huán)移位5位;這四句組成了一個(gè)簡(jiǎn)單的運(yùn)算功能Fl,軟件在運(yùn)行過(guò)程中將對(duì)此運(yùn)算 功能進(jìn)行驗(yàn)證,如果驗(yàn)證成功就認(rèn)為是正版,也就相當(dāng)于軟件保護(hù)設(shè)備B 中存儲(chǔ)了一份軟件使用許可。如果這四句的內(nèi)容被破壞,不能執(zhí)行原定的功 能,那么軟件的驗(yàn)證過(guò)程就會(huì)失敗,從而被判定為盜版。參考圖2,圖2為根據(jù)本發(fā)明得到的第一種實(shí)施方式的工作流程圖。步驟101:準(zhǔn)備用于替換軟件保護(hù)設(shè)備B中部分匯編代碼的方案,本實(shí) 施例將匯編代碼的偶數(shù)行進(jìn)行替換,從而改變軟件保護(hù)設(shè)備B中的代碼功 能。替換后的匯編代碼變?yōu)锳DD AX1,BX0ADD BXO, BX1SUB AX1,BX0ROL AX1,2即,將原代碼中的第二行和第四行進(jìn)行了替換,從而得到了新的功能F2。步驟102:將功能F2寫(xiě)入到新的軟件保護(hù)設(shè)備A中;步驟103:將步驟101中所述的偶數(shù)行代碼寫(xiě)入到軟件保護(hù)設(shè)備B中,這樣軟件保護(hù)設(shè)備B中的功能就由Fl變成了 F2',軟件保護(hù)設(shè)備B所保護(hù)的軟件將不能被使用;其中,如果寫(xiě)入過(guò)程正確,F(xiàn)2=F2,;步驟104:軟件保護(hù)設(shè)備A中產(chǎn)生一組種子數(shù),例如AX1 = 123, BX1 =456, BX0 = 789,并用F2進(jìn)行運(yùn)算,將得到的結(jié)果存儲(chǔ)在軟件保護(hù)設(shè)備A中步驟105:軟件保護(hù)設(shè)備A將步驟104中的種子數(shù)傳遞給軟件保護(hù)B, 要求軟件保護(hù)設(shè)備B用步驟103中生成的共F2,對(duì)所述種子數(shù)進(jìn)行運(yùn)算,將 計(jì)算結(jié)果返回給軟件保護(hù)設(shè)備A;步驟106:軟件保護(hù)設(shè)備A將對(duì)步驟104中得到的結(jié)果和步驟105中得 到的結(jié)果進(jìn)行比較,如果相同則認(rèn)為軟件保護(hù)設(shè)備B中的原有功能已經(jīng)由 F1變成了F2,也就是軟件許可被撤銷(xiāo),可以啟用軟件保護(hù)設(shè)備A中的新軟 件的使用許可;否則,則認(rèn)為軟件保護(hù)設(shè)備B中原有的軟件許可仍然存在, 不能啟用軟件保護(hù)設(shè)備A中的軟件使用許可;因?yàn)樵O(shè)備B中殘留的代碼是不可知的,所以盡管步驟103中的代碼存 在被截獲的可能,但是攻擊者仍然沒(méi)有辦法知曉組合得到的新功能F2',因 而無(wú)法偽造出正確的驗(yàn)證結(jié)果。這樣,只有對(duì)設(shè)備B進(jìn)行了破壞之后,才可 能成功啟用設(shè)備A中軟件許可,達(dá)到了撤銷(xiāo)軟件使用授權(quán)的目的。實(shí)施例二本實(shí)施例中,舊版軟件保護(hù)設(shè)備為配置型,不能在軟件保護(hù)設(shè)備內(nèi)部運(yùn) 行可執(zhí)行代碼,但是能夠通過(guò)設(shè)置種子碼或者密鑰,使軟件保護(hù)設(shè)備提供不 同的算法功能。種子碼不能夠被讀出,而且不同種子碼產(chǎn)生的輸出結(jié)果對(duì)于 軟件開(kāi)發(fā)者之外的人是不可預(yù)知的。在本實(shí)施例中,包括一個(gè)新的軟件保護(hù)設(shè)備A2,和一個(gè)舊版的軟件保 護(hù)設(shè)備B2。其中,軟件保護(hù)設(shè)備B2中包含了舊版軟件的使用許可,體現(xiàn)為 設(shè)備中包含了兩個(gè)密鑰種子Sl和S2;其中,Sl和S2能夠配合軟件保護(hù)設(shè) 備B2產(chǎn)生不同的保密算法。軟件在運(yùn)行過(guò)程中,將使用與S1和S2相關(guān)的 算法進(jìn)行數(shù)據(jù)處理;如果S1或者S2被替換為新的密鑰種子,那么相應(yīng)的算 法也會(huì)被改變,從而導(dǎo)致軟件不能正常運(yùn)行。密鑰種子碼Sl和S2只有軟件 開(kāi)發(fā)者知道,攻擊者無(wú)法得知。參考圖3,圖3為根據(jù)本發(fā)明得到的第二種實(shí)施方式的工作流程圖。步驟201:準(zhǔn)備新的密鑰種子碼S3,用于替換軟件保護(hù)設(shè)備B2中的密鑰種子碼S2;步驟202:準(zhǔn)備驗(yàn)證數(shù)據(jù),例如一個(gè)隨機(jī)數(shù)Rl,并得到利用密鑰種子 S3和Sl計(jì)算得到處理結(jié)果P3和Pl;步驟203:將R1、 P3和P1寫(xiě)入到軟件保護(hù)設(shè)備A2中;步驟204:修改軟件保護(hù)設(shè)備B2的密鑰種子S2,將其覆蓋為S3;步驟205:軟件保護(hù)設(shè)備A2將隨機(jī)數(shù)R1發(fā)送給軟件保護(hù)設(shè)備B2,要 求軟件保護(hù)設(shè)備B2對(duì)Rl進(jìn)行計(jì)算,計(jì)算分別釆用Sl和S3所關(guān)聯(lián)的算法 進(jìn)行,得到結(jié)果P1,和P3,,并傳送給軟件保護(hù)設(shè)備A2;步驟206:軟件保護(hù)設(shè)備A2對(duì)P1和P1,、 P3和P3,進(jìn)行比較,如果比 較成功,則認(rèn)為軟件保護(hù)設(shè)備B2中的軟件許可已經(jīng)被撤銷(xiāo),啟動(dòng)軟件保護(hù) 設(shè)備A2中所包含的軟件許可;否則認(rèn)為軟件保護(hù)設(shè)備B2中的許可沒(méi)有撤 銷(xiāo),不能啟用軟件保護(hù)設(shè)備A2中的軟件使用許可;因?yàn)檐浖Wo(hù)設(shè)備B2中即使知道了種子碼S3,仍然不可能離開(kāi)設(shè)備制 作出正確的輸出結(jié)果,所以盡管S3存在被截獲的可能,但是仍然沒(méi)有辦法 偽造出正確結(jié)果。這樣,只有對(duì)軟件保護(hù)設(shè)備B2進(jìn)行了破壞之后,才可能 成功啟用設(shè)備A中軟件許可,達(dá)到了回收軟件使用授權(quán)的目的。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范 圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種撤銷(xiāo)軟件許可的方法,其特征在于,該方法包括步驟A、將第一軟件保護(hù)設(shè)備設(shè)置為受限制狀態(tài),并將第一軟件保護(hù)設(shè)備發(fā)送給軟件用戶(hù);B、軟件用戶(hù)得到第一軟件保護(hù)設(shè)備后,將替換代碼寫(xiě)入第二軟件保護(hù)設(shè)備中,并且寫(xiě)入的替換代碼與第二軟件保護(hù)設(shè)備中未被替換的代碼結(jié)合工作以完成新的功能;C、驗(yàn)證第二軟件保護(hù)設(shè)備是否已經(jīng)被寫(xiě)入了所述替換代碼;D、如果驗(yàn)證成功,則解除步驟A中第一軟件保護(hù)設(shè)備的受限制狀態(tài),否則繼續(xù)保持第一軟件保護(hù)設(shè)備的受限制狀態(tài)。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟A中,對(duì)第一軟 件保護(hù)設(shè)備的限制是限定所保護(hù)軟件的運(yùn)行次數(shù)或者時(shí)間,或者禁止所保 護(hù)的軟件運(yùn)行。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟B中,所述的替 換代碼是可執(zhí)行代碼,或者改變第二軟件保護(hù)設(shè)備的配置數(shù)據(jù)。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,如果所述替換代碼是可 執(zhí)行代碼,那么替換代碼不能全部替代第二軟件保護(hù)設(shè)備中的已有代碼,而 只能替換第二軟件保護(hù)設(shè)備中可執(zhí)行代碼的一部分,并與未被替換的代碼結(jié) 合形成新的功能。
5、 根據(jù)權(quán)利要求3所述的方法,其特征在于,如果所述替換代碼是改 變第二軟件保護(hù)設(shè)備的配置數(shù)據(jù),那么在配置數(shù)據(jù)被修改后,仍然保留未被修改的配置數(shù)據(jù)。
6、 根據(jù)權(quán)利要求3所述的方法,其特征在于,改變第二軟件保護(hù)設(shè)備 的配置數(shù)據(jù)是種子碼或者密鑰。
7、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟C中驗(yàn)證第二軟件 保護(hù)設(shè)備是否已經(jīng)被寫(xiě)入了所述替換代碼驗(yàn)證的具體步驟是驗(yàn)證步驟B中新的功能是否被正確實(shí)現(xiàn)。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,在步驟C中,所述驗(yàn)證是發(fā)送一個(gè)隨機(jī)數(shù)給第二軟件保護(hù)設(shè)備;第二軟件保護(hù)設(shè)備根據(jù)步驟B中最終得到的新功能對(duì)所述隨機(jī)數(shù)進(jìn)行 處理;第二軟件保護(hù)設(shè)備將得到的處理結(jié)果發(fā)送給第一軟件保護(hù)設(shè)備; 第一軟件保護(hù)設(shè)備驗(yàn)證處理結(jié)果是否正確。
9、 根據(jù)權(quán)利要求8所述的方法,其特征在于,限制步驟C中重復(fù)驗(yàn)證 的次數(shù),如果在限定的次數(shù)內(nèi)沒(méi)有成功驗(yàn)證,則對(duì)第一軟件保護(hù)設(shè)備進(jìn)行鎖 定,不允許繼續(xù)進(jìn)行-瞼證。
10、 根據(jù)權(quán)利要求9所述的方法,其特征在于,步驟C中,驗(yàn)證過(guò)程利 用網(wǎng)絡(luò)進(jìn)行,或者在第一軟件保護(hù)設(shè)備和第二軟件保護(hù)設(shè)備之間直接進(jìn)行。
全文摘要
本發(fā)明公開(kāi)了一種撤銷(xiāo)軟件保護(hù)設(shè)備中軟件許可的方法。本發(fā)明通過(guò)向已經(jīng)發(fā)行的軟件保護(hù)設(shè)備中寫(xiě)入部分校驗(yàn)性代碼,在破壞已有軟件保護(hù)設(shè)備內(nèi)容的同時(shí),在內(nèi)部形成不可探測(cè)的驗(yàn)證機(jī)制,使得軟件的所有者能夠遠(yuǎn)程驗(yàn)證軟件保護(hù)設(shè)備中的軟件許可是否已經(jīng)按要求進(jìn)行了撤銷(xiāo)。由于在撤銷(xiāo)軟件許可的過(guò)程中不需要將軟件保護(hù)設(shè)備進(jìn)行回收,而是直接遠(yuǎn)程進(jìn)行,從而節(jié)約了大量的物流成本并避免了用戶(hù)的等待時(shí)間。
文檔編號(hào)G06F21/00GK101271504SQ20081010587
公開(kāi)日2008年9月24日 申請(qǐng)日期2008年5月4日 優(yōu)先權(quán)日2008年5月4日
發(fā)明者孫吉平, 勇 韓 申請(qǐng)人:北京深思洛克數(shù)據(jù)保護(hù)中心