防止对存储器中指令的不正当使用的制作方法

文档序号:6463739阅读:228来源:国知局
专利名称:防止对存储器中指令的不正当使用的制作方法
一般来讲,本发明涉及对存储器中记录的敏感指令的不正当、即非法使用的防范措施。具体来讲,本发明涉及到防止对例如设在智能卡中的微控制器(也称为微控制机)或任何其它便携式电子装置的只读存储器ROM中的保密数据项进行写、读或修改。
许多智能卡可能含有敏感数据或程序,知道这些数据或程序会导致这样的后果、即发现制造厂家的工业技术秘密、编程技术或工具、如应用程序接口(API)等。在很多情况下,智能卡引用一种安全性矩阵,根据该矩阵,以读方式、特别是针对ROM存储器中数据的任何访问,都会被位于卡的微控制器的非易失性EEPROM(电可擦可编程只读存储器)或RAM(随机存取存储器)中的指令、或者连接着微控制器的任何其它RAM存储器、例如在卡之外且包含在接受该卡的终端中的RAM存储器中的指令所禁止。在这种情况下,显然只能借助于本身写在ROM存储器中的指令读取ROM存储器中的数据。
但是,已了解能访问或修改保密数据项的指令的地址的黑客能够获取保密数据项。
为了说明这种可能性,

图1表示按照先有技术的含有出自INTEL(注册商标)的80C51微处理器的微控制器中的EEPROM存储器和ROM存储器中的部分内容的实例。微控制器的程序计数器的计数例如对于在ROM存储器中含有的各单元的地址,从Adr0=0到AdrM=1000地变化,对于在EEPROM存储器中含有的各单元的地址,从Adr(M+1)=1001到AdrP=2000地变化,其中M<<P。因而,存储器中的数据指针DPTR的值可在0到P之间变化。
假设在ROM存储器中,位于地址Adrm=100的“危险”指令[MOVC A,@A+DPTR]相当于移动指针DPTR的当前值在EEPROM存储器中指向的“公开”数据项、如代码字节CB,以便将数据项转移到微控制器的中央处理器(CPU)中的累加器A。数据项CB被写在地址Adrp处,其中M+1≤p≤P。返回指令RET位于ROM存储器中的地址Adr(m+1)处,而紧接着是传送指令MOVC。
在EEPROM存储器中没有任何攻击者序列COM的正常情况下,当运行了写在存储器(特别是在地址Adrm之前的ROM存储器的地址)中的第一部分程序(未示出)之后,指针DPTR收到p值。为了读取数据项CB并传送到累加器A,执行地址Adrm处的操作指令MOVC,数据项CB在返回指令RET之后的第二部分程序中被使用。
一个企图获取位于ROM存储器中的地址Adrn处的保密数据项DS的黑客,例如m+1<n=200<M,他还了解指令MOVC的地址Adrm,为了将指针DPTR改到所需的n值,在EEPROM存储器中写了一个短执行命令序列COM。序列COM包括三个连续的指令。第一条指令[CLRA]将累加器A的内容设置为零。第二条指令[MOV DPTR,n]将数据指针DPTR设置到对应于地址Adrn的n值。第三条指令[CALLm]调用一个过程调用,用于直接执行ROM存储器中在地址Adrm处的指令MOVC。
在所调用的“危险”指令执行期间,带有n值的指针DPTR指向地址Adrn处的数据DS,所需的保密数据项DS被传送到累加器A,并且可容易地被黑客获取。在返回指令RET之后,任何指令的执行,例如黑客在EEPROM中紧接着调用指令[CALL m]写的[MOVX@Ri,A]的执行,使他能够通过清空累加器的内容,例如在微控制器外面的外部RAM存储器中,获得从ROM存储器中读取的保密数据项DS。
本发明的目的是在不阻止把“危险”指令写在ROM存储器中的前提下,抑制这类危险,以便防止不正当使用这种危险指令的结果。
为此,有一种方法,用于保护写在存储装置中的指令序列中包含的操作指令,防止控制装置发出的执行命令对序列指令的结束作出响应而访问操作指令的执行结果,该方法的特征在于所述序列包括在操作指令之后立即执行的、对与所述操作指令的至少一个操作数有关的条件的测试,当满足该条件时,操作指令执行的结果从存储装置转移到控制装置,当不满足该条件时,不执行序列指令的结束。
按照第一实施例,所述测试包括计算诸如随操作数和预定值而定的差,所述条件是计算结果与至少一个预定阈值、比如零值的比较结果。当计算结果落在具有作为上限和下限其中之一的阈值的第一范围中时,则把操作指令的结果转移到控制装置,当计算结果落在具有作为第二范围的上限和下限中另一个的阈值的第二范围中时,不执行结束指令。所述操作指令可以是对存储装置中的数据项的读、写或者修改,而操作数可以是数据地址指针。若不满足所述条件,则可以通过执行指令到其本身的跳转,致使结束指令不被执行,或者按照常规发出错误消息或者将卡拒绝。
按照第二实施例,操作指令是一种交易,测试条件是对交易的核准。最好是,操作指令是在控制装置中读取余额之后对其进行的修改,把所述条件运用在余额或余额增量上,而传送包括把修改后余额从存储装置写入控制装置。
本发明还涉及包括微控制器的便携式电子装置,所述微控制器的不可重写存储器和可编程非易失性存储器和/或随机存取存储器分别包含在用于实现本发明的方法的存储装置和控制装置中。特别是,写在不可重写存储器中的至少一条用于读、写或修改非易失性存储器和/或随机存取存储器中数据项的操作指令之后,紧跟着写在不可重写存储器中的测试,所述测试是针对与所述操作指令的至少一个操作数有关的条件,以便当不满足所述条件时,使所述装置失效。
从参照相应的附图、对本发明的若干最佳实施例的以下描述中,将更清楚地看出本发明的其它特征和优点。
图1表示说明上面提到的先有技术的、针对写在ROM存储器中的序列而写在EEPROM存储器中的攻击程序;图2是一种智能卡的框图,其中根据本发明第一实施例的保护方法修改了写在ROM存储器中的受攻击的序列;图3表示按照第二个已知实施例的写在ROM存储器中的“危险”序列的指令。
图4表示有关第二实施例的、根据本发明的保护方法修改后的“修改的危险”序列。
参考图2,假设如图1那样,微控制器、特别是智能卡CP或任何其它便携式电子装置含有实际上由上述80C51型微处理器构成的处理单元CPU。具体来讲,单元CPU包括特别含有累加器A的算术逻辑单元UAL、指令地址计数器CP和当前指令寄存器RI。按照常规,微控制器还包括ROM型的不可重写存储器ME、可编程非易失型EEPROM的存储器MC、以及为了与微控制器以外的世界、例如接受智能卡CP的终端交换数据的随机存取型RAM的存储器MA。
当至少一部分写在ROM存储器中、一部分在EEPROM存储器中的程序或应用程序运行期间,存储器与处理器CPU通过总线BU、借助于请求和包含指令执行的“结果”的响应来相互作用。
按照图2所示的第一实施例,在EEPROM存储器MC中找到黑客写的具有三条指令的执行命令序列COM,EEPROM存储器MC根据本发明构成了能访问存储器ME中被调用的“危险”操作指令的结果的控制装置。因此,所述三个指令涉及到擦除累加器A的内容,将存储器指针DPTR设置为与存储器ME中的保密数据DS相关的地址Adrn的值n,以及调用在ROM存储器中的地址Adrm处的单元m中写的、被认为“危险”的指令。
与图1中ROM存储器的内容相比,在存储器ME中增补了指令序列SQ,使得执行序列SEQ的结束指令RET、以便再一次执行存储器MC中的指令是有条件的,要根据关于加在指向地址Adrm的先前的危险指令的操作数上的条件的测试而定。添加的序列主要包括下面两条指令SUBB DPTR,#MJC$它们被写在ME存储器中的连续地址Adr(m+1)和Adr(m+2)处,紧跟“危险”指令[MOVC A,@A+DPTR]之后,并且在现在写到地址Adr(m+3)处的指令RET之前。
第一条添加的指令SUBB在指针DPTR的最后值上减去从存储器ME中最高地址AdrM而来的M值,其中所述指针DPTR的最后值通常被用来指向先前的操作指令MOVC执行时、在存储器MC中读取的数据项CB。
第二条添加的指令JC是条件指令“SI”(IF),它根据前一条减法操作DPTR=DPTR-M的结果实现地址跳转。
如果DPTR-M的差值是负数,特别是作为对将指针DPTR的值设置为比M小的n值的黑客的调用指令[CALL m]的响应,地址Adr(m+2)处的指令JC跳转到它本身,在ROM存储器中强加一个无限循环,如虚线所示。这个无限反复的循环阻止了随后的结束指令RET的执行,因此禁止了黑客从累加器中恢复数据项DS。
反之,如果指针DPTR的最后值高于存储器ME的地址的最大值M,即等于这样一个值M+1≤p≤P,并指定存储器MC中的某个公开数据单元,则差值DPTR-M为正值。指令JP使地址Adr(m+1)的指令SUBB的序列跳转到地址Adr(m+3)的结束指令RET,以便继续当前的程序。
在另一种形式中,地址单元Adrn中的“危险”操作指令不是执行数据读取,而是执行数据写入甚至是任何数据修改。
根据又一种变换形式,地址单元Adr(m+1)和Adr(m+2)中的添加指令由指针DPTR与存储器ME的MIN(最小)和MAX(最大)两个地址值比较来代替,这两个地址指定其中存储空间含有要保护的机密数据的单元。黑客尝试的任何在MIN和MAX之间的指针值都导致无限循环JC。
在以上描述中,应当理解,智能卡CP包括所有已知类型的智能卡,也称为微控制器卡,诸如下面以非限定性实例的方式提到的接触式或非接触式卡信用卡、付款卡、预付卡、电话卡、SIM卡、“附加”卡、中心购物卡、游戏卡等等。更广义地说,本发明不仅涉及到智能卡,也涉及到通称为电子数据处理装置的其它便携式电子装置,如电子助手或电子组织者、电子钱包、令牌、袖珍计算器等等。
按照图3所示的第二个已知实施例,在四个连续的地址单元Adr(m-1)、Adrm、Adr(m+1)和Adr(m+2)中,ROM存储器含有交易序列的一些指令,所述交易序列涉及到从EEPROM存储器将余额SO读到ROM存储器中,用选择的增量ΔSO来增加余额、把增加的余额SO=SO+ΔSO从ROM存储器写到EEPROM存储器中,最后,序列指令Return(返回)的结束通常跟随着从接受终端将智能卡取出。
对于这个第二实施例,ROM和EEPROM存储器都包含在作为电子钱包的智能卡中。
按照先有技术,在余额增加序列之前的地址单元Adr(m-2),有一个用于核准存款操作的测试,它包括这样的条件,该条件至少涉及到存款操作、主要是操作增加指令SO=SO+ΔSO中含有的余额操作数SO和/或增量操作数ΔSO。
所述测试核实该钱包是否处于正常的操作前后关系中。例如,所述条件可能是电子钱包的主人的银行帐户的余额大于增量ΔSO,或者是增量ΔSO小于一个上限,和/或在预定时期内这类增量的总和小于最大授权存款。在核实条件之前,可能要通过与店主的销售接受终端的点和/或银行服务器的对话识别用户和/或核实电子钱包。
如果黑客知道ROM存储器中包含余额读取指令的单元的地址Adr(m-1),不管在前一步是否满足Adr(m-2)中的测试条件,黑客都能用他选择的增量增加余额,并且用Retum指令恢复被存款的电子钱包。最坏的情况是,黑客可能在EEPROM存储器MC中写入一个序列,用黑客所希望的次数重复执行指令Adr(m-1)到Adr(m+2)的序列。
参照图4,按照本发明,为了防止黑客能借助于写在EEPROM存储器MC中的程序来控制ROM存储器MEa中的这种交易序列的执行,本发明通过在存储器MEa中引入对存款的测试,从而保护这种序列。
这样,紧跟地址Adrm处的“危险”操作增加指令之后,下一个地址单元Adr(m+1)含有例如与参考图3给出的测试相同的测试、或者是针对与由结果SO=SO+ΔSO构成的操作数有关的条件的测试,比如与上限比较以及所有者的识别。
如果不满足条件指令Adr(m+1),则不执行随后的在地址Adr(m+2)和Adr(m+3)处的指令。增加的余额不被写入EEPROM存储器MC,而且所述序列被切换成发送错误消息等,以便使电子钱包无效,还可能从接受终端中弹出它。
反之,如果满足条件指令Adr(m+1),则按照地址Adr(m+2)处的指令将增加后的余额SO写入存储器MC,并且当地址Adr(m+3)处的序列指令Return结束后,程序继续运行。
虽然以上描述提到通过在不可重写ROM存储器ME中的地址Adrm处写的“危险”指令,在正常情况下读取非易失性EEPROM存储器MC中的数据项CB,但是,本发明所指的控制装置可以不仅包括EEPROM存储器MC,而且包括微控制器的随机存取存储器RAMMA。
权利要求
1.一种方法,它用于保护写在存储装置(ME)中的指令序列(SQ)中包含的操作指令(Adrm),防止来自控制装置(MC)的执行命令(COM)对序列指令的结束(Adr(m+3))作出响应而访问操作指令执行的结果,其特征在于所述序列包括在操作指令(Adrm)之后立即执行的、针对与所述操作指令的至少一个操作数(DPTR)相关的条件的测试(Adr(m+1),Adr(m+2)),当满足所述条件时,把所述操作指令执行的结果(CB)从所述存储装置(ME)转移(RET)到所述控制装置(MC),当不满足所述条件时,不执行所述序列指令的结束(Adr(m+3))。
2.如权利要求1所述的方法,其特征在于所述测试包括随操作数和预定值(M)而定的计算,所述条件是所述计算的结果与至少一个预定阈值的比较。
3.如权利要求1或2所述的方法,其特征在于所述操作指令(Adrm)是读、写或修改所述控制装置(MC)中的数据项(CB),而所述操作数是数据地址指针(DPTR)。
4.如权利要求1至3中任何一个所述的方法,其特征在于在不满足所述条件之后,接着执行一个指令到其本身的跳转(JC),从而导致所述结束指令(Adr(m+3))的不执行。
5.如权利要求1所述的方法,其特征在于所述操作指令(Adrm)是一种交易,而所述测试条件(Adr(m+1))是对交易的核准。
6.如权利要求5所述的方法,其特征在于所述操作指令(Adrm)是在所述控制装置(MC)中读取(Adr(m-1))余额(SO)之后、对所述余额(SO)的修改,所述条件被加在所述余额或余额增量(ΔSO)上,所述转移包括把修改后的余额从所述存储装置(MEa)写到(Adr(m+2))所述控制装置中。
7.一种包含微控制器的便携式电子装置(CP),其特征在于所述微控制器的不可重写存储器和所述微控制器的非易失性可编程存储器和/或随机存取存储器(MA)分别包含在用于实现如权利要求1到6中任何一个所述的方法的所述存储装置(ME)和所述控制装置(MC)中。
8.如权利要求7所述的装置,其特征在于用于读、写或修改所述非易失性存储器(MC)和/或所述随机存取存储器中的数据项的、写在所述不可重写存储器中的至少一条所述操作指令(Adrm)之后,紧接着写在所述不可重写存储器中的、针对与所述操作指令的至少一个操作数有关的条件的测试(Adr(m+1),Adr(m+2)),以便在不满足所述条件时使所述装置无效。
全文摘要
微控制器(CP)的ROM存储器(ME)中的数据读、写、修改类型的或交易的操作指令(Adrm)可能会受到为了访问保密数据项(DS)而不是公开数据项(CB)的、微控制器的EEPROM存储器(MC)中的命令(COM)的攻击,作为对结束指令(Adr(m+3))的响应。为了保护操作指令,在操作指令(Adrm)之后立刻执行测试(Adr(m+1))。测试条件、如比较与所述操作指令的至少一个操作数(DPTR)有关。只有满足所述条件时,才将操作指令的结果(CB)转移到EEPROM存储器。
文档编号G06F12/14GK1392980SQ0180293
公开日2003年1月22日 申请日期2001年9月26日 优先权日2000年9月27日
发明者P·帕利尔, D·纳卡彻 申请人:格姆普拉斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1