專利名稱:防拷貝只讀存儲器的制作方法
技術領域:
本發(fā)明是一種防止非法拷貝的只讀存儲器器件,應用于電子計算機系統(tǒng)中。
在電子計算機系統(tǒng)中,基礎軟件一般固化在只讀存儲器(ROM或EPROM)中,因而很容易被拷貝,致使其關鍵的軟件技術得不到保護。
如何防止對ROM(或EPROM)的非法拷貝,一直是一個未解決的問題。這一問題,廣泛影響了軟件版權、計算機安全性及隱私權的保護。
過去曾有人研制了一種被稱為KEPROM的器件。這種器件在程序運行前,首先要對關鍵字進行訪問,而隨機產生的關鍵字分別存放于兩塊KEPROM內。關鍵字訪問成功后,KEPROM才允許進行程序的讀出操作。它雖然阻止了對只讀存儲器的直接拷貝,但若借助于一個含有微處理機探頭的分析器或開發(fā)系統(tǒng),在關鍵字訪問成功后,仍可讀出全部程序,導致關鍵的軟件技術外泄。
本發(fā)明的目的,就是提出一種全新的只讀存儲器(ROM或EPROM)器件,來防止對軟件的非法拷貝。在這項發(fā)明中即使借助于有微處理機探頭的分析器或開發(fā)系統(tǒng),也無法得到存儲器中的全部軟件。這項發(fā)明,在此稱為防拷貝只讀存儲器。
本發(fā)明的結構框圖見
圖1。圖中1是主存儲器,用來存放加密后的用戶程序或數據。A0~Ai是它的地址總線(ADDBUS),Q0~Q7是它的輸出,CS是片選線。在CS=1(高電平)時,地址總線A0~Ai選中的存儲單元中存放的數據由Q0~Q7輸出,送至2和4的a0~a7端,在CS=0(低電平)時,1的輸出端Q0~Q7全部無效。2是一個容量為256×3bit的存儲器,用來設定用戶規(guī)定的密碼鎖,在此稱為“閂鎖”存儲器。它的地址輸入口a0~a7接至1的輸出端Q0~Q7,2的輸出口Q0~Q2接至三D觸發(fā)器3的輸入端(D0~D2)。3是一個三D觸發(fā)器,用來鎖存2的輸出狀態(tài)。在3的CLOCK端出現(xiàn)脈沖上升沿時,把2的輸出狀態(tài)(Q0~Q2)鎖存入3,并反映在3的輸出Q0、Q1、Q2上。圖1中的Aj是“密鑰”控制線,當它是高電平時,在OE的作用下,與門6向3的CLOCK端發(fā)出時鐘信號,把2的“鎖數據”鎖存在3中。RESET信號用來在加電或復位時,使三D觸發(fā)器3進入初始狀態(tài)(Q0=O,Q1=O,Q2=O)。4是解碼表存貯器,它的容量是2048×8bit。4的低八位地址輸入線a0~a7接至1的輸出端Q0~Q7,高三位地址線a8、a9、a10則分別接至3的Q0、Q1、Q2端。在3的Q0、Q1、Q2的控制下,4的整個存儲空間被均分成八個容量相等的地址區(qū)間(每組為256×8bit),用來存放八組不同的解碼表。這八組解碼表分別與1中各段加密程序相對應。例如,在程序運行的某一時刻,3的Q0~Q2已選中4的某一組解碼表,存放于1中的一條加密指令(或加密字節(jié))由1的Q0~Q7送入4的a0~a7,而4的a0~a7指定的單元內存放的與該加密指令(或加密字節(jié))相對應的一個解碼表數據即由4的Q0~Q7輸出,完成了解碼的工作。使用正確時,在3的控制下,4的Q0~Q7一步步的輸出解密后的原碼程序(或數據),并經過三態(tài)控制門5把它們傳遞到數據總線(DATA BUS)上。而在非法操作或拷貝時,3的工作不正常,4的八位解碼表無法正確選擇,只能輸出錯誤的程序或數據。5是一個八組的三態(tài)控制門,CS是片選信號,OE是輸出控制信號。在CS=1,OE=1時,它把出現(xiàn)在輸入端i0~i7的信號傳送至數據總線上。若CS=O或OE=O,5的輸出端O0~O7將是懸空狀態(tài)。非門7的作用是向5的OE端提供三態(tài)控制信號,并經過與門6和Aj一齊向3提供CLOCK信號。在OE有效(低電平)時,7的輸出變?yōu)楦唠娖健?”,此時5的OE有效。若“密鑰”控制線Aj=1,則6的輸出將變?yōu)椤?”,向3發(fā)出CLOCK信號,把2的輸出Q0~Q2鎖存入3。8是一個反相緩沖器,若它的輸入CS為低電平“O”,則表示該專利器件被選中,否則即處在“掛起”狀態(tài)。
使用時,用戶把程序按自己規(guī)定的密碼格式分段編碼后存放于主存儲存器1中,這些程序最多可按八種編碼方式編制,每一種編碼方式中都有256種編碼組合,與這八種編碼方式相對應的八組解碼表存放于4的八個地址區(qū)間內,這八種編碼方式可跳躍使用,也可重復使用。1中用不同編碼方式加密的程序段之間,要用“密鑰指令”來鏈接。“密鑰指令”的功能,就是要用規(guī)定的“密鑰”,打開相應的“鎖”,以便隨時跟蹤運行中的程序,來選用正確的解碼表工作。實際上,2的輸出Q0~Q2所代表的八個狀態(tài),即是這八個“鎖”。它們對應著4中的八組解碼表。而“鎖”的密鑰,則是2中存放鎖數據的單元地址,它們隱含在2的a0~a7之中。因為只有八個“鎖”,所以,在2的256個單元地址中,只任選其中8個就可以了,其它空余單元內可存入無關的任何數據。
在執(zhí)行“密鑰指令”時,要先使Aj=1,1的Q0~Q7端輸出相關的“密鑰”數據,這個數據送至2的a0~a7端,將相對應的“鎖”數據由2的Q0~Q2送出。此時,因Aj=1,在OE信號到來時,3將2的輸出狀態(tài)鎖定,并確定4中對應的那組解碼表。而后,應使Aj=0,“換鎖”工作完畢,一條“密鑰指令”執(zhí)行結束。在下次Aj=1出現(xiàn)之前,“鎖”的狀態(tài)將鎖定在3中,以保證后面的程序能正確運行。
顯然,“密鑰指令”的時序關系應符合下述條件1、使Aj=1。
2、在1的Q0~Q7送出相應的“密鑰”數據。
3、OE有效時將“鎖”數據鎖定在3中。
4、使Aj=0。
這在不同的計算機系統(tǒng)中,可用不同的語言結構來實現(xiàn)。
例如,在一個由MCS-51單片機構成的系統(tǒng)中,主存儲器(圖1中的1)容量為32K×8bit,占用的地址空間為A0~A14(即圖1中的AO~Ai線),用地址線A15做“密鑰”控制線Aj,MCS-51的PSEN控制線接至圖1的OE端。在主存儲器1中存儲了若干段加密程序,并用“密鑰程序”將它們鏈接起來。其中第一段程序用第一種編碼方法加密,運行時選用4中的第一組解碼表(用3的Q2、Q1、Q0=000來選中)解密;第二段用第四種編碼方法加密,運行時選用4的第四組解碼表(用3的Q2、Q1、Q0=011來選中)解密;第三段用第五種編碼方法加密,運行時選用4中的第五組解碼表(用3的Q2、Q1、Q0=100選中)解密。
此時,程序的編制方式如下
在本例中,ROOM4和ROOM5都是十六位的地址數據,它表示主存儲器1中存儲“密鑰4”及“密鑰5”的單元地址(A0~A15)。圖1中A0~A14接至1的地址總線(A0~Ai),而A15位接至密鑰控制線Aj,因而在這個地址數據有效時,導致Aj=1。ROOM4和ROOM5的存放的數據是換用第四組和第五組解碼表的“密鑰”。在運行MOVC A,@A+DPTR這條指令時,ROOM4或ROOM5地址數據送至地址總線(ADD BUS)上,A15使Aj=1,而ROOM4或ROOM5的A0~A14位指定的單元內的數據經由1的Q0~Q7送至2的地址輸入線a0~a7上這個數是2的“密鑰”開啟數,在它指定的單元內,必然存在著011或100,用來選用4的第四組或第五組解碼表。當MCS-51的PSEN信號有效時,圖1中的OE信號把2的輸出(011或100)狀態(tài)鎖存入3,以便對4中的第四組或第五組解碼表定位。在這同時,1的輸出也經由4和5送至數據總線上輸出。但因1的輸出數據(即ROOM4或ROOM5中的內容)是按前一種編碼方式加密的,而OE信號到來時,在3的控制下,4已換用后一種解碼表,所以,此時出現(xiàn)在數據總線上的“密鑰”數據仍是密碼,根本得不到真正的“密鑰”。這就進一步保證了本發(fā)明的安全性,顯然,每一小段“密鑰”程序必須用與它前面緊連的一段程序相同的編碼方法加密,否則不能正確運行。
在運行幾段由“密鑰程序”鏈接起來的加密程序時,每更換一次“密鑰”,可換用一把“鎖”,改變一次3的輸出狀態(tài),換用一組4中的編碼表。這樣,CPU在運行程序時,不斷地換用密碼結構,動態(tài)地選擇相對應的解碼表,從而使僅在運行中的小部分程序透明,其余則是密碼。若用帶有微處理機的分析器或開發(fā)系統(tǒng)進行讀出及對該器件進行拷貝時,由于程序并不運行,Aj信號不能與“密鑰”數據正確的同步出現(xiàn),3的狀態(tài)不做正確的翻轉,所以,無論3處在什么狀態(tài)下,都不可能讀出正確的程序,達到了防拷貝的目的。即使是該用戶程序的編制者,也無法將其中的程序正確地讀出。
由于該器件有8×256種密碼結構,256種“密鑰”結構,且“密鑰”可存放于1中的任何地址空間內,所有“密鑰”、密址、加密切換點都是加密的,所以對該專利器件的解密幾乎是不可能的??梢哉f,這是一種保密性極強的、不可復制的只讀存儲器件,由于它的整個轉換工作在OE信號的前沿完成,所以也不增加額外的運行時間,這在實時控制系統(tǒng)中尤為重要。在電路復位或加電時,3進入初始狀態(tài)(Q2、Q1、Q0=000),自動選用4中的第一組解碼表,所以,1中存放的第一段加密程序,必須用第一種編碼方法加密,否則不能正確啟動。
本發(fā)明的專利權僅涉及該器件的讀操作結構。在寫操作時,器件中還應有相應的開關陣列,把2、4的地址線入口切到地址總線ADDBUS上,把2、4的輸出端切到數據總線DATABUS上,以便對數據進行寫入及校驗。當然,它還應有一個加密位,在加密位有效時,可阻止器件的寫入及校驗。
權利要求
1.一種防止對程序進行非法拷貝的只讀存儲器器件,其特征是在主存儲器(1)后設置了“閂鎖”存儲器(2)、解碼表存儲器(4)、三D觸發(fā)器(3),用來改變(3)、(4)工作狀態(tài)的“密鑰”是一組存放于主存儲器(1)中的數據,在“密鑰”的選擇控制下,通過(2)和(3)動態(tài)的選用(4)中的不同解碼表,來解出(1)中按不同編碼方式編制的密碼程序,解碼后的原程序經過三態(tài)控制門傳送到數據總線。
2.按照權利要求1所說的防拷貝只讀存儲器,其特征是主存儲器(1),“閂鎖”存儲器(2)和解碼表存儲器(4)都是可編程的。
3.根據權利要求1和2所說的防拷貝只讀存儲器,其特征是“閂鎖”存儲器(2)和“解碼表”存儲器(4)內的密碼應該能永久性的存儲。
全文摘要
本發(fā)明是一種用于電子計算機系統(tǒng)中的防拷貝只讀存儲器器件。它由主存儲器,“閂鎖”存儲器,三D觸發(fā)器,解碼表存儲器等構成,程序在運行時,可利用“密鑰”自動啟動“閂鎖”存儲器,將“鎖”狀態(tài)鎖存在三D觸發(fā)器中,并依此選擇正確的解碼表解密,工作時,可動態(tài)地在八種加密結構中改變狀態(tài),是一種保密性極強的器件,由于全部工作在一個脈沖沿的過程中完成,故不增加運行時間。
文檔編號G11C17/00GK1070759SQ9210665
公開日1993年4月7日 申請日期1992年8月15日 優(yōu)先權日1992年8月15日
發(fā)明者呂偉建 申請人:呂偉建