计算机技术中,EPROM固化软件占有重要的地位。但它极易被复制,使仪器有被仿制可能,造成经济损失。针对这个问题,我们提出了关于EPROM固化软件的加密技术。

一、EPROM固化软件加密方法设想

一个典型微机系统是由中央处理单元(CPU)、EPROM、随机存储器(RAM)、输入/输出(I/O)接口和其他电路组成,一台由微机控制的仪器,也是由这几部分组成。尽管各种仪器因其功能不同,电路各异,但最基本的CPU、EPROM、RAM、和I/O接口是必不可少的。

EPROM与系统的各部分电路有密切的关系,因为它固化的程序就是用来管理和控制各部分电路工作的。利用这种关系,在编制程序中加一段相互制约的程序,秘密约定参数或状态,就形成了固化软件中的加密机关。

程序在运行中,每当执行到加密段程序时,就会对设置的加密机关特征进行鉴别,如果设置的加密机关的参数(或状态)符合软件编制的约定,程序继续进行,否则程序会转到指定的地方运行。例如进入死循环。

加密机关在电路图上没有标准,也不做文字说明,一般仿冒者是不会察觉的。如果仅是简单对EPROM内容进行复制,其程序是仿制机器上不能运行,从而达到了EPROM固化软件的加密目的。

二、EPROM固化软件加密方法的实现

EPROM固化软件加密方法单凭硬件或软件是不够的,最佳的设计是软、硬件结合,使用一种或多种硬件电路。下面我就给大家介绍两种方法,即参数法和状态法。

1、参数加密法

利用设计者自己约定的某些参数来达到加密的目的。参数存放在存储器中。一般RAM存放数据或参数,会因清零或掉电而丢失,而为加密设置的参数是要永久保存的。解决的办法是采用零功耗RAM。零功耗RAM自带电池,当外部电源断开时,RAM芯片内电池供电,使RAM芯片内容保存不变。芯片内电池供电时,消耗功率极小,故数据能长期保存。

参数加密的主要思想是,在软件编制过程中,先将参数密码写入RAM的指定单元,使之得以保存。程序编制者只需从RAM的指定单元取出密码值与约定值比较,编制成加密程序。

加密参数是事先写入RAM指定单元的,所以在避免再次使用该单元存贮数据。在初始化时,应跳过这个单元,避免密码值被修改。RAM容量一般都比较大,可供参数加密使用的单元很多,有很大的发挥余地。为了保密性更强,不仿多设几处。如图1所示。

如何加密EPROM固化软件

2、状态加密法

状态加密法是在参数加密法基础上发展起来的,弥补参数加密的不足。利用I/O接口(或其他电路)的状态,达到加密的目的。状态加密方法为图2所示。

如何加密EPROM固化软件

利用I/O接口,人为的使接口状态为加密约定状态。例如用8255A芯片,使其C口某位状态置高或低电平。编制程序时,加入读C口上加密位状态,进行鉴别的程序,即可完成加密过程。

状态加密法是一种有效的方法,可以利用的器件多种多样,使它难以破译。利用可编程逻辑器件PAL,以及器件一体化技术.均可使状态加密水平更为发展。

三、EPROM固化软件加密程序编制
为说明程序编制方法,使用8085汇编语言,举例如下,仅供参考。

1)参数加密编程

如何加密EPROM固化软件

图3是参数加密法电路图,图中RAM的型号是MK48202, 2K×8零功耗RAM。程序固化在两片EPROM中(2764,8K×8),地址分配从OOOOH到3FFFH。RAM地址是从4000H到47FFH。假定参数加密约定的密码是4,3.2,1。分别存放在RAM加密单主47FCH到47FFH中。密码查询程序可以放置在主程序的任意一段。查询程序如下:

如何加密EPROM固化软件

2)状态加密编程

图2是状态加密电路。I/O接口芯片8255A。地址分配是04H-07H。其中04H为A口地址;05H为B口地址;06H为C口地址;07H为8255A控制字寄存器地址。

程序编程中,8255A的A、B口工作方式任意,C口的PCO-PC3为输出线,PC4-PC7为输入线。选PC4-PC7四位中任一位为加密位。在本例中,选PC7为状态加密位,使其状态为低电平。加密程序如下:

如何加密EPROM固化软件

以上是两种EPROM固化软件加密应用举例,编制比较简单,在实际应用中,其强度应再增加。

小知识之EPROM

EPROM由以色列工程师Dov Frohman发明,是一种断电后仍能保留数据的计算机储存芯片——即非易失性的(非挥发性)。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦编程完成后,EPROM只能用强紫外线照射来擦除。通过封装顶部能看见硅片的透明窗口,很容易识别EPROM,这个窗口同时用来进行紫外线擦除。