專利名稱:可編程的軟件加密鎖的制作方法
技術(shù)領(lǐng)域:
本實(shí)用新型涉及一種可編程的軟件加密鎖,屬計(jì)算機(jī)技術(shù)領(lǐng)域。
所謂軟件加密就是通過修改軟件,使軟件的正常運(yùn)行離不開特定的硬件,這個(gè)硬件被稱為軟件加密鎖,簡稱加密鎖。加密鎖是一種計(jì)算機(jī)外設(shè),它工作在計(jì)算機(jī)的并行口。軟件運(yùn)行時(shí),首先向加密鎖發(fā)送指令,加密鎖接收到指令后,完成相應(yīng)的處理,然后把處理結(jié)果返回給軟件,軟件收到后檢查數(shù)據(jù)是否合理,進(jìn)一步?jīng)Q定是否繼續(xù)正常運(yùn)行。
加密鎖有很多種,其核心功能就是算法變換功能。深思洛克數(shù)據(jù)保護(hù)中心的sensel型軟件加密鎖就屬于這種加密鎖。
sensel型的算法變換功能是這樣的軟件向加密鎖發(fā)送一個(gè)數(shù)據(jù),加密鎖內(nèi)部對這個(gè)數(shù)據(jù)進(jìn)行加密變換,然后將變換結(jié)果返回給軟件。加密鎖內(nèi)的變換方程是加密鎖的生產(chǎn)廠商在保密狀態(tài)下設(shè)計(jì)的,是不對外公開的。使用加密鎖的軟件廠商不知道變換方程,只能設(shè)置變換方程中的某些參數(shù)。當(dāng)方程中的參數(shù)被設(shè)置好以后,這個(gè)變換方程的輸入、輸出是一一對應(yīng)的,軟件廠商就是利用這個(gè)特點(diǎn)對軟件進(jìn)行加密處理。具體的方法如下軟件廠商首先設(shè)置算法的參數(shù),并且選擇一組數(shù)據(jù),讓加密鎖進(jìn)行算法變換,并且一一記錄變換結(jié)果;然后在軟件中還用這組數(shù)據(jù),調(diào)用加密鎖的算法功能;最后比較加密鎖的變換結(jié)果與預(yù)先的記錄是否一致,如果一致則說明這個(gè)加密鎖是自己設(shè)置的,軟件繼續(xù)運(yùn)行,否則軟件結(jié)束退出。以上方法實(shí)現(xiàn)了只有經(jīng)過軟件廠商自己設(shè)置的加密鎖,才能使軟件正常運(yùn)行。
利用sensel型的算法變換功能可以達(dá)到軟件加密的目的,但是這種加密方法很容易被解密。通過跟蹤軟件的運(yùn)行,就可以截獲軟件與加密鎖之間的數(shù)據(jù)通訊,也就是說軟件中調(diào)用算法功能時(shí)的輸入、輸出數(shù)據(jù)都可以被解密者記錄下來。解密者將這些數(shù)據(jù)保存在自己的數(shù)據(jù)庫之中,然后修改軟件中訪問加密鎖的代碼,讓這些代碼不再訪問加密鎖而是調(diào)用解密者自己的程序。解密者的程序負(fù)責(zé)從數(shù)據(jù)庫中提取數(shù)據(jù),然后返回給軟件。經(jīng)過這樣處理過的軟件就不再訪問加密鎖,而是訪問解密者的數(shù)據(jù)庫,軟件離開了加密鎖以后還可以正常運(yùn)行,軟件被解密了。
以上的解密方法是一種常見的解密方法,就是用軟件來仿真加密鎖,稱之為仿真法。由于加密者自己并不知道算法變換方程的具體內(nèi)容,加密設(shè)計(jì)時(shí)只能把加密鎖看成一個(gè)黑匣子,利用其輸入、輸出一一對應(yīng)的特點(diǎn)進(jìn)行加密。這就使得加密軟件中用于檢測加密鎖的數(shù)據(jù)量很有限(整個(gè)軟件的一部分),解密者只要都截獲下來,就可以通過仿真的方法解密了。利用仿真法解密這種加密鎖所需的工作量是非常有限的,甚至可以自動(dòng)化實(shí)現(xiàn)。sensel型的算法變換功能的弱點(diǎn)是加密鎖的算法變換不公開,從而導(dǎo)致輕易被仿真法解密。
本實(shí)用新型的目的是設(shè)計(jì)一種可編程的軟件加密鎖,使得加密者能夠自己設(shè)計(jì)加密鎖的功能,能夠自己設(shè)計(jì)加密鎖的算法變換方程,給仿真法解密帶來更大的困難。
本實(shí)用新型設(shè)計(jì)的可編程的軟件加密鎖,該加密鎖包括寄存器區(qū)、存儲(chǔ)區(qū)和控制區(qū)三部分,寄存器區(qū)由通用寄存器、標(biāo)志寄存器和指令寄存器組成。存儲(chǔ)區(qū)由程序區(qū)、數(shù)據(jù)區(qū)組成??刂茀^(qū)由輸入輸出模塊、存儲(chǔ)區(qū)改寫模塊、指令尋址、譯碼和執(zhí)行模塊組成。控制區(qū)、寄存器區(qū)設(shè)在單片機(jī)U1上,存儲(chǔ)器設(shè)在單片機(jī)U2上,U1和U2之間通過信號線相聯(lián),U1通過接口接計(jì)算機(jī)并行口。
本實(shí)用新型的可編程軟件加密鎖與以往加密鎖不同之處在于,加密鎖的算法方程可以由加密者自己設(shè)計(jì),然后編譯成加密鎖專用的執(zhí)行代碼,設(shè)置到加密鎖中。設(shè)置內(nèi)容只有加密者自己知道,解密者既不知道如何設(shè)置的,也無法修改。軟件運(yùn)行時(shí)調(diào)用加密鎖中的算法,并把算法需要的輸入數(shù)據(jù)傳送給加密鎖,加密鎖完成算法變換后再將結(jié)果發(fā)送回來。加密者了解算法內(nèi)容,就可以在自己的軟件中使用任意數(shù)據(jù)來檢測加密鎖內(nèi)的算法方程。
由于加密軟件可以使用任意數(shù)據(jù)來檢測加密鎖,解密者雖然還可以截獲加密鎖的輸入、輸出數(shù)據(jù),但是仿真加密鎖變得非常困難。首先,這些數(shù)據(jù)是難以枚舉的,這種新型加密鎖的輸入、輸出各為64比特?cái)?shù)據(jù),如果想通過枚舉出所有的可能情況來仿真加密鎖,是無法實(shí)現(xiàn)的;其次,加密鎖內(nèi)的方程是難以求解的,方程中可以包含各種運(yùn)算及循環(huán)、分支等,完全由加密者控制,如果想通過解析出加密鎖內(nèi)的方程來仿真加密鎖,是非常困難的。
由于這種加密鎖具備可編程的能力,加密者可以任意設(shè)計(jì)加密鎖的功能既可以是很復(fù)雜的變換方程,也可以代替加密前軟件中的部分程序。加密軟件中檢查加密鎖時(shí),可以使用隨機(jī)數(shù)據(jù)來檢測加密鎖內(nèi)的方程是否準(zhǔn)確無誤。加密鎖完全是由加密者自己控制的,加密軟件的加密強(qiáng)度也是加密者自己控制的。這種新的加密方式,給仿真法解密帶來了很大難度。
圖1是本實(shí)用新型的原理框圖。
圖2、圖3和圖4是本實(shí)用新型的電路圖。
以下結(jié)合附圖,詳細(xì)介紹本實(shí)用新型的內(nèi)容。
首先介紹加密鎖工作原理,先對將加密鎖進(jìn)行設(shè)置,設(shè)置時(shí)由存儲(chǔ)區(qū)改寫模塊控制。此模塊接收從輸入輸出模塊傳送過來的數(shù)據(jù),數(shù)據(jù)中包含口令和要寫的地址、數(shù)據(jù),口令核對成功后,將數(shù)據(jù)寫入程序區(qū)或者數(shù)據(jù)區(qū)中的指定地址。
如圖1所示,加密鎖的工作過程可以大致分成五步。
第一步,加密鎖接收軟件傳送過來的數(shù)據(jù)。這是由輸入輸出模塊完成的。接收的數(shù)據(jù)包括指向程序區(qū)的指針和算法參數(shù)兩部分。指針賦給指令指針寄存器(ip),算法參數(shù)賦給通用寄存器組(gr)。
第二步,取指令。這是由指令尋址模塊完成的。通過指令指針寄存器(ip),從程序區(qū)(code)獲取當(dāng)前指令內(nèi)容,并把指令傳送給指令譯碼模塊。
第三步,指令譯碼。這是由指令譯碼模塊完成的。譯碼的結(jié)果分成兩部分,一部分是指令操作碼,發(fā)送給指令執(zhí)行模塊;另一部分是指令的寄存器尋址,發(fā)送給寄存器組。
第四步,指令執(zhí)行。這是由指令執(zhí)行模塊完成的。首先執(zhí)行指令相應(yīng)的功能,然后根據(jù)指令操作碼是否為返回指令進(jìn)行不同的處理。如果不是返回指令,則修改指令指針寄存器(ip),使它指向下一條指令,然后把控制權(quán)交給指令尋址模塊,即轉(zhuǎn)向第二步繼續(xù)運(yùn)行。如果是返回指令,則轉(zhuǎn)向下一步。
第五步,加密鎖返回?cái)?shù)據(jù)。這是由輸入輸出模塊完成的。加密鎖把通用寄存器組(gr)中的數(shù)據(jù)發(fā)送給軟件。
加密鎖的電路主要由兩個(gè)芯片組成。圖4的U1為單片機(jī)(89C2051),是整個(gè)電路的核心。圖3的U2為EEPROM(93C46)。加密鎖的控制區(qū)、寄存器區(qū)都設(shè)在U1上。加密鎖的存儲(chǔ)區(qū)設(shè)在U2上。圖2的25針插口的針端(PIN)接計(jì)算機(jī)的并行口。
并行口的數(shù)據(jù)端口(D3到D7)接到U1的IO腳(P1.3到P1.7),計(jì)算機(jī)向加密鎖發(fā)送的數(shù)據(jù)經(jīng)過這些數(shù)據(jù)線傳輸。
并行口的狀態(tài)端口(BUSY)接到U1的IO腳(P1.2),加密鎖向計(jì)算機(jī)返回的數(shù)據(jù)經(jīng)過這根線傳輸。
這種新型加密鎖給使用者提供了可編程的性能。加密鎖支持一個(gè)指令集,這個(gè)指令集可以完成算術(shù)運(yùn)算、邏輯運(yùn)算、位運(yùn)算、循環(huán)、分支、數(shù)據(jù)的輸入、輸出、搬移等基本操作。加密鎖內(nèi)有程序區(qū),指令保存在程序區(qū)內(nèi)。加密鎖在工作時(shí)逐條解釋、執(zhí)行程序區(qū)內(nèi)的代碼。程序區(qū)可以通過專用口令被設(shè)置,但永遠(yuǎn)不可讀。
權(quán)利要求1.一種可編程的軟件加密鎖,其特征在于該加密鎖包括寄存器區(qū)、存儲(chǔ)區(qū)和控制區(qū)三部分,所述的寄存器區(qū)由通用寄存器、標(biāo)志寄存器和指令寄存器組成;所述的存儲(chǔ)區(qū)由程序區(qū)、數(shù)據(jù)區(qū)組成;所述的控制區(qū)由輸入輸出模塊、存儲(chǔ)區(qū)改寫模塊、指令尋址、譯碼和執(zhí)行模塊組成;所述的控制區(qū)、寄存器區(qū)設(shè)在單片機(jī)U1上,存儲(chǔ)器設(shè)在單片機(jī)U2上,U1和U2之間通過信號線相聯(lián),U1通過接口接計(jì)算機(jī)并行口。
專利摘要本實(shí)用新型涉及一種可編程的軟件加密鎖,包括寄存器區(qū)、存儲(chǔ)區(qū)和控制區(qū)三部分,控制區(qū)、寄存器區(qū)設(shè)在單片機(jī)U1上,存儲(chǔ)器設(shè)在單片機(jī)U2上,U1和U2之間通過信號線相聯(lián),U1通過接口接計(jì)算機(jī)并行口。由于這種加密鎖具備可編程的能力,加密者可以任意設(shè)計(jì)加密鎖的功能,加密軟件中檢查加密鎖時(shí),可以使用隨機(jī)數(shù)據(jù)來檢測加密鎖內(nèi)的方程是否準(zhǔn)確無誤。加密鎖完全是由加密者自己控制的,給仿真法解密帶來了很大難度。
文檔編號G06F12/14GK2372721SQ9921421
公開日2000年4月5日 申請日期1999年6月18日 優(yōu)先權(quán)日1999年6月18日
發(fā)明者張 杰 申請人:北京深思洛克數(shù)據(jù)保護(hù)中心