如何加密EPROM固化軟件

計(jì)算機(jī)技術(shù)中,EPROM固化軟件占有重要的地位。但它極易被復(fù)制,使儀器有被仿制可能,造成經(jīng)濟(jì)損失。針對(duì)這個(gè)問(wèn)題,我們提出了關(guān)于EPROM固化軟件的加密技術(shù)。

一、EPROM固化軟件加密方法設(shè)想

一個(gè)典型微機(jī)系統(tǒng)是由中央處理單元(CPU)、EPROM、隨機(jī)存儲(chǔ)器(RAM)、輸入/輸出(I/O)接口和其他電路組成,一臺(tái)由微機(jī)控制的儀器,也是由這幾部分組成。盡管各種儀器因其功能不同,電路各異,但最基本的CPU、EPROM、RAM、和I/O接口是必不可少的。

EPROM與系統(tǒng)的各部分電路有密切的關(guān)系,因?yàn)樗袒某绦蚓褪怯脕?lái)管理和控制各部分電路工作的。利用這種關(guān)系,在編制程序中加一段相互制約的程序,秘密約定參數(shù)或狀態(tài),就形成了固化軟件中的加密機(jī)關(guān)。

程序在運(yùn)行中,每當(dāng)執(zhí)行到加密段程序時(shí),就會(huì)對(duì)設(shè)置的加密機(jī)關(guān)特征進(jìn)行鑒別,如果設(shè)置的加密機(jī)關(guān)的參數(shù)(或狀態(tài))符合軟件編制的約定,程序繼續(xù)進(jìn)行,否則程序會(huì)轉(zhuǎn)到指定的地方運(yùn)行。例如進(jìn)入死循環(huán)。

加密機(jī)關(guān)在電路圖上沒(méi)有標(biāo)準(zhǔn),也不做文字說(shuō)明,一般仿冒者是不會(huì)察覺(jué)的。如果僅是簡(jiǎn)單對(duì)EPROM內(nèi)容進(jìn)行復(fù)制,其程序是仿制機(jī)器上不能運(yùn)行,從而達(dá)到了EPROM固化軟件的加密目的。

二、EPROM固化軟件加密方法的實(shí)現(xiàn)

EPROM固化軟件加密方法單憑硬件或軟件是不夠的,最佳的設(shè)計(jì)是軟、硬件結(jié)合,使用一種或多種硬件電路。下面我就給大家介紹兩種方法,即參數(shù)法和狀態(tài)法。

1、參數(shù)加密法

利用設(shè)計(jì)者自己約定的某些參數(shù)來(lái)達(dá)到加密的目的。參數(shù)存放在存儲(chǔ)器中。一般RAM存放數(shù)據(jù)或參數(shù),會(huì)因清零或掉電而丟失,而為加密設(shè)置的參數(shù)是要永久保存的。解決的辦法是采用零功耗RAM。零功耗RAM自帶電池,當(dāng)外部電源斷開(kāi)時(shí),RAM芯片內(nèi)電池供電,使RAM芯片內(nèi)容保存不變。芯片內(nèi)電池供電時(shí),消耗功率極小,故數(shù)據(jù)能長(zhǎng)期保存。

參數(shù)加密的主要思想是,在軟件編制過(guò)程中,先將參數(shù)密碼寫入RAM的指定單元,使之得以保存。程序編制者只需從RAM的指定單元取出密碼值與約定值比較,編制成加密程序。

加密參數(shù)是事先寫入RAM指定單元的,所以在避免再次使用該單元存貯數(shù)據(jù)。在初始化時(shí),應(yīng)跳過(guò)這個(gè)單元,避免密碼值被修改。RAM容量一般都比較大,可供參數(shù)加密使用的單元很多,有很大的發(fā)揮余地。為了保密性更強(qiáng),不仿多設(shè)幾處。如圖1所示。

如何加密EPROM固化軟件

2、狀態(tài)加密法

狀態(tài)加密法是在參數(shù)加密法基礎(chǔ)上發(fā)展起來(lái)的,彌補(bǔ)參數(shù)加密的不足。利用I/O接口(或其他電路)的狀態(tài),達(dá)到加密的目的。狀態(tài)加密方法為圖2所示。

如何加密EPROM固化軟件

利用I/O接口,人為的使接口狀態(tài)為加密約定狀態(tài)。例如用8255A芯片,使其C口某位狀態(tài)置高或低電平。編制程序時(shí),加入讀C口上加密位狀態(tài),進(jìn)行鑒別的程序,即可完成加密過(guò)程。

狀態(tài)加密法是一種有效的方法,可以利用的器件多種多樣,使它難以破譯。利用可編程邏輯器件PAL,以及器件一體化技術(shù).均可使?fàn)顟B(tài)加密水平更為發(fā)展。

三、EPROM固化軟件加密程序編制
為說(shuō)明程序編制方法,使用8085匯編語(yǔ)言,舉例如下,僅供參考。

1)參數(shù)加密編程

如何加密EPROM固化軟件

圖3是參數(shù)加密法電路圖,圖中RAM的型號(hào)是MK48202, 2K×8零功耗RAM。程序固化在兩片EPROM中(2764,8K×8),地址分配從OOOOH到3FFFH。RAM地址是從4000H到47FFH。假定參數(shù)加密約定的密碼是4,3.2,1。分別存放在RAM加密單主47FCH到47FFH中。密碼查詢程序可以放置在主程序的任意一段。查詢程序如下:

如何加密EPROM固化軟件

2)狀態(tài)加密編程

圖2是狀態(tài)加密電路。I/O接口芯片8255A。地址分配是04H-07H。其中04H為A口地址;05H為B口地址;06H為C口地址;07H為8255A控制字寄存器地址。

程序編程中,8255A的A、B口工作方式任意,C口的PCO-PC3為輸出線,PC4-PC7為輸入線。選PC4-PC7四位中任一位為加密位。在本例中,選PC7為狀態(tài)加密位,使其狀態(tài)為低電平。加密程序如下:

如何加密EPROM固化軟件

以上是兩種EPROM固化軟件加密應(yīng)用舉例,編制比較簡(jiǎn)單,在實(shí)際應(yīng)用中,其強(qiáng)度應(yīng)再增加。

小知識(shí)之EPROM

EPROM由以色列工程師Dov Frohman發(fā)明,是一種斷電后仍能保留數(shù)據(jù)的計(jì)算機(jī)儲(chǔ)存芯片——即非易失性的(非揮發(fā)性)。它是一組浮柵晶體管,被一個(gè)提供比電子電路中常用電壓更高電壓的電子器件分別編程。一旦編程完成后,EPROM只能用強(qiáng)紫外線照射來(lái)擦除。通過(guò)封裝頂部能看見(jiàn)硅片的透明窗口,很容易識(shí)別EPROM,這個(gè)窗口同時(shí)用來(lái)進(jìn)行紫外線擦除。