防拷贝只读存储器的制作方法

文档序号:6742746阅读:378来源:国知局
专利名称:防拷贝只读存储器的制作方法
技术领域
本发明是一种防止非法拷贝的只读存储器器件,应用于电子计算机系统中。
在电子计算机系统中,基础软件一般固化在只读存储器(ROM或EPROM)中,因而很容易被拷贝,致使其关键的软件技术得不到保护。
如何防止对ROM(或EPROM)的非法拷贝,一直是一个未解决的问题。这一问题,广泛影响了软件版权、计算机安全性及隐私权的保护。
过去曾有人研制了一种被称为KEPROM的器件。这种器件在程序运行前,首先要对关键字进行访问,而随机产生的关键字分别存放于两块KEPROM内。关键字访问成功后,KEPROM才允许进行程序的读出操作。它虽然阻止了对只读存储器的直接拷贝,但若借助于一个含有微处理机探头的分析器或开发系统,在关键字访问成功后,仍可读出全部程序,导致关键的软件技术外泄。
本发明的目的,就是提出一种全新的只读存储器(ROM或EPROM)器件,来防止对软件的非法拷贝。在这项发明中即使借助于有微处理机探头的分析器或开发系统,也无法得到存储器中的全部软件。这项发明,在此称为防拷贝只读存储器。
本发明的结构框图见

图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的存储器,用来设定用户规定的密码锁,在此称为“闩锁”存储器。它的地址输入口a0~a7接至1的输出端Q0~Q7,2的输出口Q0~Q2接至三D触发器3的输入端(D0~D2)。3是一个三D触发器,用来锁存2的输出状态。在3的CLOCK端出现脉冲上升沿时,把2的输出状态(Q0~Q2)锁存入3,并反映在3的输出Q0、Q1、Q2上。图1中的Aj是“密钥”控制线,当它是高电平时,在OE的作用下,与门6向3的CLOCK端发出时钟信号,把2的“锁数据”锁存在3中。RESET信号用来在加电或复位时,使三D触发器3进入初始状态(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的整个存储空间被均分成八个容量相等的地址区间(每组为256×8bit),用来存放八组不同的解码表。这八组解码表分别与1中各段加密程序相对应。例如,在程序运行的某一时刻,3的Q0~Q2已选中4的某一组解码表,存放于1中的一条加密指令(或加密字节)由1的Q0~Q7送入4的a0~a7,而4的a0~a7指定的单元内存放的与该加密指令(或加密字节)相对应的一个解码表数据即由4的Q0~Q7输出,完成了解码的工作。使用正确时,在3的控制下,4的Q0~Q7一步步的输出解密后的原码程序(或数据),并经过三态控制门5把它们传递到数据总线(DATA BUS)上。而在非法操作或拷贝时,3的工作不正常,4的八位解码表无法正确选择,只能输出错误的程序或数据。5是一个八组的三态控制门,CS是片选信号,OE是输出控制信号。在CS=1,OE=1时,它把出现在输入端i0~i7的信号传送至数据总线上。若CS=O或OE=O,5的输出端O0~O7将是悬空状态。非门7的作用是向5的OE端提供三态控制信号,并经过与门6和Aj一齐向3提供CLOCK信号。在OE有效(低电平)时,7的输出变为高电平“1”,此时5的OE有效。若“密钥”控制线Aj=1,则6的输出将变为“1”,向3发出CLOCK信号,把2的输出Q0~Q2锁存入3。8是一个反相缓冲器,若它的输入CS为低电平“O”,则表示该专利器件被选中,否则即处在“挂起”状态。
使用时,用户把程序按自己规定的密码格式分段编码后存放于主存储存器1中,这些程序最多可按八种编码方式编制,每一种编码方式中都有256种编码组合,与这八种编码方式相对应的八组解码表存放于4的八个地址区间内,这八种编码方式可跳跃使用,也可重复使用。1中用不同编码方式加密的程序段之间,要用“密钥指令”来链接。“密钥指令”的功能,就是要用规定的“密钥”,打开相应的“锁”,以便随时跟踪运行中的程序,来选用正确的解码表工作。实际上,2的输出Q0~Q2所代表的八个状态,即是这八个“锁”。它们对应着4中的八组解码表。而“锁”的密钥,则是2中存放锁数据的单元地址,它们隐含在2的a0~a7之中。因为只有八个“锁”,所以,在2的256个单元地址中,只任选其中8个就可以了,其它空余单元内可存入无关的任何数据。
在执行“密钥指令”时,要先使Aj=1,1的Q0~Q7端输出相关的“密钥”数据,这个数据送至2的a0~a7端,将相对应的“锁”数据由2的Q0~Q2送出。此时,因Aj=1,在OE信号到来时,3将2的输出状态锁定,并确定4中对应的那组解码表。而后,应使Aj=0,“换锁”工作完毕,一条“密钥指令”执行结束。在下次Aj=1出现之前,“锁”的状态将锁定在3中,以保证后面的程序能正确运行。
显然,“密钥指令”的时序关系应符合下述条件1、使Aj=1。
2、在1的Q0~Q7送出相应的“密钥”数据。
3、OE有效时将“锁”数据锁定在3中。
4、使Aj=0。
这在不同的计算机系统中,可用不同的语言结构来实现。
例如,在一个由MCS-51单片机构成的系统中,主存储器(图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)状态锁存入3,以便对4中的第四组或第五组解码表定位。在这同时,1的输出也经由4和5送至数据总线上输出。但因1的输出数据(即ROOM4或ROOM5中的内容)是按前一种编码方式加密的,而OE信号到来时,在3的控制下,4已换用后一种解码表,所以,此时出现在数据总线上的“密钥”数据仍是密码,根本得不到真正的“密钥”。这就进一步保证了本发明的安全性,显然,每一小段“密钥”程序必须用与它前面紧连的一段程序相同的编码方法加密,否则不能正确运行。
在运行几段由“密钥程序”链接起来的加密程序时,每更换一次“密钥”,可换用一把“锁”,改变一次3的输出状态,换用一组4中的编码表。这样,CPU在运行程序时,不断地换用密码结构,动态地选择相对应的解码表,从而使仅在运行中的小部分程序透明,其余则是密码。若用带有微处理机的分析器或开发系统进行读出及对该器件进行拷贝时,由于程序并不运行,Aj信号不能与“密钥”数据正确的同步出现,3的状态不做正确的翻转,所以,无论3处在什么状态下,都不可能读出正确的程序,达到了防拷贝的目的。即使是该用户程序的编制者,也无法将其中的程序正确地读出。
由于该器件有8×256种密码结构,256种“密钥”结构,且“密钥”可存放于1中的任何地址空间内,所有“密钥”、密址、加密切换点都是加密的,所以对该专利器件的解密几乎是不可能的。可以说,这是一种保密性极强的、不可复制的只读存储器件,由于它的整个转换工作在OE信号的前沿完成,所以也不增加额外的运行时间,这在实时控制系统中尤为重要。在电路复位或加电时,3进入初始状态(Q2、Q1、Q0=000),自动选用4中的第一组解码表,所以,1中存放的第一段加密程序,必须用第一种编码方法加密,否则不能正确启动。
本发明的专利权仅涉及该器件的读操作结构。在写操作时,器件中还应有相应的开关阵列,把2、4的地址线入口切到地址总线ADDBUS上,把2、4的输出端切到数据总线DATABUS上,以便对数据进行写入及校验。当然,它还应有一个加密位,在加密位有效时,可阻止器件的写入及校验。
权利要求
1.一种防止对程序进行非法拷贝的只读存储器器件,其特征是在主存储器(1)后设置了“闩锁”存储器(2)、解码表存储器(4)、三D触发器(3),用来改变(3)、(4)工作状态的“密钥”是一组存放于主存储器(1)中的数据,在“密钥”的选择控制下,通过(2)和(3)动态的选用(4)中的不同解码表,来解出(1)中按不同编码方式编制的密码程序,解码后的原程序经过三态控制门传送到数据总线。
2.按照权利要求1所说的防拷贝只读存储器,其特征是主存储器(1),“闩锁”存储器(2)和解码表存储器(4)都是可编程的。
3.根据权利要求1和2所说的防拷贝只读存储器,其特征是“闩锁”存储器(2)和“解码表”存储器(4)内的密码应该能永久性的存储。
全文摘要
本发明是一种用于电子计算机系统中的防拷贝只读存储器器件。它由主存储器,“闩锁”存储器,三D触发器,解码表存储器等构成,程序在运行时,可利用“密钥”自动启动“闩锁”存储器,将“锁”状态锁存在三D触发器中,并依此选择正确的解码表解密,工作时,可动态地在八种加密结构中改变状态,是一种保密性极强的器件,由于全部工作在一个脉冲沿的过程中完成,故不增加运行时间。
文档编号G11C17/00GK1070759SQ9210665
公开日1993年4月7日 申请日期1992年8月15日 优先权日1992年8月15日
发明者吕伟建 申请人:吕伟建
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1