具有微处理器的电子模块中安装的 逻辑或数学操作符的保护方法 【技术领域】
本发明涉及对搭载(embarked)系统的保护,该系统包含一个或若干个电子模块,每个模块有至少一个微处理器、一个含有至少一个要执行的程序的ROM型存储器以及与外部通信的输入/输出装置。某些模块还包含其他辅助电路,如用于更复杂应用的RAM和EEPROM,这些模块也称作微控制器。
这些模块大多以单片电子微电路或者芯片的形式实现。这些模块首先能用于经物理保护后安装在例如便携智能卡对象,微电路卡或能用于各种领域的类似部件上,特别是与银行和/或商业卡、移动无线电话、付费电视、保健和运输有关的领域,其次,能用于其他搭载系统,从比较简单的系统,如传感器和电路断路器,到更复杂的系统,如工业控制器、复接机键(multiswitch)和其他子单元和电子控制设备,直到电子控制地完整工业系统。
背景技术
在现代生活中,智能卡和其他搭载系统应用的成倍增长和它们在某些领域应用的普及,例如与银行卡、保健卡或付费电视有关的领域的普及,已使得有必要引入保护措施,例如对在微控制器的内部总线上的数据输送采取密码措施和/或数据加密措施。这些保护措施特别涉及用户验证、事务处理(transaction)及其有效性的验证、保持数据的保密性以及对所述数据的加密/解密。
尽管对智能卡的欺诈性使用并不是新的现象,但智能卡交易事务的量和值的增大已经导致欺诈者使用越来越复杂的装置和方法。特别是,以芯片为目标的短时辐射攻击会造成对在内部总线上从ROM到微处理器传送的数据和/或代码的修改,造成代码的某些部分不执行或不正常执行,例如执行不可操作的指令以代替一个或若干个保护性操作。
已经表明,对在ROM存储器中编码的程序中的一个敏感数据操作(例如涉及加密和/或解密的操作)所处位置的精确标记使得更容易瞄准攻击目标并显著增大了这种攻击的损害力。为进行这种定位,欺诈者使用SPA方法(简单功率分析),它包括记录微处理器某些点的电流消耗。能基于对信号的比较分析,通过DPA(差分功率分析)方法完成SPA方法。基于这一考虑,某些编程操作(如在加密/解密中经常使用的“异或”操作)的执行揭示出有明显特征的“标记”(signature),从而允许识别所考虑的操作并因此识别出它在程序中的位置。
【发明内容】
本发明的目的是保护一个程序内部的某些脆弱的操作,特别是逻辑的或数学的操作符或类似的操作电路,使它们难于,甚至更加难于被识别。
考虑这一目的,本发明涉及一种方法,用于保护逻辑的或数学的操作符或类似的操作电路,该操作符或电路能用于在具有微处理器的电子模块中执行一个程序,这里在所述方法中所述操作符的执行由执行一个替代操作序列所代替,这些替代操作的最终结果与所述操作符的功能得到的结果完全相同。
这样,一个复杂的操作符,(如XOR(异或)操作符)的有高度特征性的标记被一个操作序列的信号代替,这些操作往往不那么复杂但也不是必定不复杂,例如具有不那么有特征性的相近或相同标记的基本操作序列,于是该操作符的识别变得更加困难。
根据本发明方法的一个优选实现,对于由于受保护的操作符的每个调用,从一组等效序列中选择替代操作序列。这样,在执行一个给定程序过程中多重改变替代受保护操作符的操作序列,从而进一步增大了识别困难。有利地,这组序列包含至少四个等效序列,优选地包含八个等效序列,这使得欺诈者寻找操作符时该序列甚至更难于识别。
根据本发明的第一变体,被选序列在其整体中的顺序号是根据当前执行的程序的某些参数和/或有利地从伪随机数发生器得到的随机参数确定的。当在一个程序中受保护操作符重复若干次时,例如在加密/解密处理中的XOR操作符,这种用于置乱序列的置乱机制证明特别有效。
根据本发明的第二变体(不排斥第一变体),给定组的各操作序列总是有相同的执行周期。有利地,某些序列包含至少一个非操作性指令,以在执行所涉及的序列时引入延时。具体地说,该非操作性指令是从与该微处理器关联的非操作性指令中选出的,或者从正常的操作指令中选出但由于它们在该操作序列中的位置使它们变成无效了。使各序列有统一执行周期的这一机制使得更难于彼此区分这些序列。
根据本发明方法的第一应用,例如受保护的操作符是一个逻辑操作符(但不限于此),如XOR(异或)逻辑操作符。有利地,至少一个替代操作序列是由基本逻辑操作符构成的。例如,至少一个操作序列是由AND(与)、OR(或)以及NOT(非)基本逻辑操作符构成的。
关于保护XOR操作符的处理,本发明还涉及替代操作序列组S1至S8和S′1至S′8,如下式给出的那样:
S1=(x OR y)AND NOT(x AND y)
S2=(x OR y)AND(NOT x OR NOT y)
S3=NOT(NOT x AND NOT y)AND NOT(x AND y)
S4=NOT(NOT x AND NOT y)AND(NOT x OR NOT y)
S5=NOT(NOT(x OR y)OR(x AND y))
S6=NOT((NOT x AND NOT y)OR(x AND y))
S7=NOT((NOT x AND NOT y)OR NOT(NOT x OR NOT y))
S8=NOT(NOT(x OR y)OR NOT(NOT x OR NOT y))
以及有相同执行周期的替代操作序列:
S′1=(x OR NOP y OR y)AND NOP NOT(x AND NOP y AND y)
S′2=(x OR y NOP OR y)AND NOP(NOT x OR NOP NOT y)
S′3=NOT(NOT x AND NOP NOT y)AND NOT(x AND y AND y)
S′4=NOT(NOT x AND NOP NOT y)AND(NOT x OR NOT y)
S′5=NOT(NOT(x NOP OR y OR y) OR (x NOP AND y AND y))
S′6=NOT((NOT x AND NOT y NOP)OR(x AND y NOP AND y))
S′7=NOT((NOT x AND NOT y)OR NOT(NOT x OR NOT y))
S′8=NOT(NOT(x OR y OR y)OR NOT(NOT x OR NOT y))
其中指令NOP对应于与微处理器关联的非操作性指令。
根据本发明方法的其他应用,要受保护的操作符是一个数学操作符,如一位加法操作符,加法操作符,减法操作符或乘法操作符,或者类似于逻辑的或数学的操作符的功能电路,如组合电路,特别是多路组合器和/或多路分解器,编码器和/或解码器,发生器和/或奇偶性检测器或比较器。
特别是,根据本发明方法的第二应用,该操作符是一个“乘以2”数学操作符,这里通过左移1个二进位并使最低有效二进位复位得到的,这一操作符的C ANDSI表示是(X<<1)。
关于保护操作符(X<<1)的处理,替代序列S"1至S"4遵循下列等式:
S″1=(x ADD x)
S″2=(x AND F0h)ADD x ADD(x AND 0Fh)
S″3=(NOT((NOT x)ADD(NOT x)))SUB 1
S″4=(y ADD x)SUB(y SUB x),
其中,ADD操作符是作用于一个八位位组的标准加法操作符,SUB操作符是作用于一个八位位组的标准减法操作符,而后缀《h》表示一个十六进制的值。
本发明还涉及一个其操作符受到保护的电子模块,它包含至少一个微处理器和一个要执行的程序,该程序中包含至少一个要保护的逻辑或数学操作符或类似的操作电路,这里该模块包含装置用于以执行一个操作序列代替执行该操作符,该操作序列的执行结果与该操作符功能的结果完全相同。
有利的是,本发明的电子模块包含装置用于对操作符的每个调用从一组等效序列中选择操作序列,根据一个极其有利的变体,该模块包含计算机处理装置用于根据执行的程序的某些参数和/或由伪随机信号发生器产生的随机参数来确定关于选定序列的顺序号。
本发明还涉及一个其操作符受到保护的电子模块,它包含至少一个微处理器和一个要执行的程序,该程序中包含至少一个要保护的逻辑或数学操作符或类似的操作电路,这里该模块包含硬件或软件装置用以实现上述本发明的方法。
本发明还涉及搭载系统或微电路卡,其中包含如先前在其各种变体中定义的带有受保护操作符的电子模块。
【附图说明】
阅读下文中的描述将看出本发明的其他目的,优点和特点,下文的描述是关于本发明的方法在应用于保护XOR操作符的实现以及根据本发明的具有微处理器的电子模块的实施例,描述是以非限定性实例的方式结合附图给出的,这些附图是:
——图1显示根据本发明的具有微处理器和受保护的XOR操作符的电子模块实施例的图形表示,以及
——图2显示在图1的模块中实现本发明的方法等效执行XOR操作符的图形表示。
【具体实施方式】
根据本发明在图1中显示的并以非限定性实例方式描述的具有微处理器的单片电子模块10一般包含一个微处理器或中央单元CPU 11,由内部总线12双向连接于一个活的RAM存储器14、一个死的ROM存储器16、一个EEPROM存储器18以及一个I/O输入/输出接口20。模块10还包含一个具有自动复位功能的计时器22(在一个可选变体中)和伪随机信号发生器GNPA 24,它们连接于内部总线12。
应用程序安装在ROM 16,如银行卡事务处理或医疗卡应用,由于保密性和保护的原因,它们包含加密/解密、操作员验证或交易事务有效性核实子程序,其中经常出现XOR操作符,特别是用于完成逐个八位位组的比较。
关于XOR操作符的执行,这个操作符最经常地应用于构成一组算术指令的一部分,这些算术指令具有中央单元CPU或微处理器11的两个操作数OP1和OP2。
在这里描述的实施例中,实现保护XOR操作符方法的装置主要是以受保护XOR计算例程(或称XORSEC例程)形式存在的软件项目,如图2中所示。这样,对于来自XOR指令(OP1,OP2)的每次调用,该程序带着操作数OP1和OP2重定向到XORSEC例程,它将执行以替代XOR指令,应该理解,执行XORSEC例程实现的功能等效于原来的XOR指令。
根据本发明的主要特点,XOR指令的执行由XORSEC例程中一个操作序列的执行所代替,该操作系列中的操作是复杂程度较低的那类操作(但不排除其他操作),如基本操作,XORSEC例程的最终结果与XOR操作符功能的结果完全相同(这种条件容易被证实,例如通过完全相同的出口表来证实)。
利用非限定性举例,下面给出等效于XOR指令的八个序列S1至S8:
S1=(x OR y)AND NOT(x AND y)
S2=(x OR y)AND(NOT x OR NOT y)
S3=NOT(NOT x AND NOT y)AND NOT(x AND y)
S4=NOT(NOT x AND NOT y)AND(NOT x OR NOT y)
S5=NOT(NOT(x OR y)OR(x AND y))
S6=NOT((NOT x AND NOT y)OR(x AND y))
S7=NOT((NOT x AND NOT y)OR NOT(NOT x OR NOT y))
S8=NOT(NOT(x OR y)OR NOT(NOT x OR NOT y))
可以看出,所有这些序列S1至S8都是基于AND、NOT和OR三个逻辑基本指令中的至少二个,而且与XOR指令有相同的真值出口表。
使用带有两个入口x、y和一个出口s的真值表传统表现形式,有可能对XOR、AND和OR操作符以及对序列S5(以非限定性举例方式选出的)给出下列四个真值表:
XOR AND OR
x y s(XOR) x y s(AND) x y
s(OR)
0 0 0 0 0 0
0 0 0
0 1 1 0 1 0
0 1 1
1 0 1 1 0 0
1 0 1
1 1 0 1 1 1
1 1 1
对于S5=NOT(NOT(x OR y)OR(x AND y))
A=(x OR y),B=NOT A,C=(x AND y)
D=(NOT(x OR y)OR(x AND y)=BORC,
s(S5)=E=NOT D
x y A B C D E
0 0 0 1 0 1 0
0 1 1 0 0 0 1
1 0 1 0 0 0 1
1 1 1 0 1 1 0由此证明s(S5)=E与S(XOR)完全相同。
可以看出,自动选出替代XOR操作符的这个序列由5个基本操作构成,它们的标记(signature)与XOR操作符的标记显著不同。这样,有可能为实现本发明的方法具体化一个最简单的变体。
根据这里描述的实施例中使用的本发明的一个可选的但特别有利的特点,替代操作序列,即,ES组,由上文给出的8个序列S1至S8构成。这样,通过在执行程序过程中多次改变替代XOR操作符的操作序列,而且能被使用的序列S1至S8有完全不同的标记,从而进一步增加了识别XOR操作符的困难。
根据这里描述的实施例中使用的本发明的另一个可选的但特别有利的特点,被选定执行的序列Si在其整体(S1至S8)中的顺序号NDO=I(i的范围是从1至8)是根据当前执行的程序的某些参数和/或一个伪随机数确定的。有利地,所述随机参数是从一个伪随机数发生器得到的。当在程序中XOR操作符被多次调用时,特别是在加密/解密处理中,在每次调用时有效地随机选择要替代XOR操作符的序列,这种置乱序列机制证明特别有效。
如图2所示,XORSEC例程包含4个主要处理阶段,按执行顺序它们是:
——开始或初始化阶段IN-XORSEC,其间特别是存储程序计数器值和操作数OP1和OP2,
——阶段CAL-NDO,通过计算确定要被执行以替代指令XOR的操作符列Si的顺序号NDO=i(i的范围是从1至8),并分支转向相应的子例程CAL-XORSEC(i),它是由8个子例程CAL-XORSEC(1)至CAL-XORSEC(8)构成的子例程组CAL-XORSEC中的一个子例程,
——阶段CAL-XORSEC(i),以阶段CAL-NDO选定的操作序列Si的操作数OP1和OP2进行逻辑计算,以执行子例程CAL-XORSEC(i),
——阶段OUT-XORSEC,用于返回主程序以恢复它的执行,并传送CAL-XORSEC(i)的结果,该结果等效于计算两个操作数OP1和OP2之间的XOR得到的结果。
应该指出,对于阶段CAL-NDO,随机数发生器GNPA24根据要求提供一个随机八位位组R单独用作计算参数,或与从操作数OP1和OP2的值中提取的其他参数一起使用计算参数,其计算的最终结果是一个八位位组F(R)。例如通过使用NOD=i=F(R)AND 07h类型的操作,从这个八位位组中提取三个较低有效位,从而得到NOD=i的二进位值(从000到111,即00h至07h),即要执行的序列Si的顺序号。应该指出,该顺序号的值是所考虑的算法中的一个敏感数据元素。
最后,在识别难度方面,例程XORSEC表现为一个进一步改进的变体,其中的替代序列系列是由给定执行周期(由于这一点,使区分更困难)的序列构成的。于是,为达到这一点,某些序列包含至少一个非操作性指令,设计成在所考虑的序列执行中引入延时。具体地说,该非操作性指令是从与微处理器关联的非操作性指令中选出的,或者是从正常的操作性指令中选出的但通过它们在该操作序列中所放位置使其变成无效了。
如果假定基本操作AND、OR和NOT有近似相等的执行周期(例如中央单元CPU 11的4个时钟周期),如非执行操作《空格》(操作NOP)那样,于是序列S1至S8组ES被修改成新的一组序列,统一为9个操作为ES′,作为非限定性举例,如下所示(其中增加的操作用粗
S′1=(x OR NOP y OR y)AND NOP NOT(x AND NOP y AND y)
S′2=(x OR y NOP OR y)AND NOP(NOT x OR NOP NOT y)
S′3=NOT(NOT x AND NOP NOT y)AND NOT(x AND y AND y)
S′4=NOT(NOT x AND NOP NOT y)AND(NOT x OR NOT y)
S′5=NOT(NOT(x NOP OR y OR y)OR(x NOP AND y AND y))
S′6=NOT((NOT x AND NOT y NOP)OR(x AND y NOP AND y))
S′7=NOT((NOT x AND NOT y)OR NOT(NOT x OR NOT y))
S′8=NOT(NOT(x OR y OR y)OR NOT(NOT x OR NOT y))
例如,对于序列S′5,有
S′5=NOT(NOT(x NOP OR y OR y)OR(x NOP AND y AND y))
x′=x NOP,A=(x′OR y),A′=AOR y,B=NOT A′,C=
(x′AND y),C′=C AND y,D=BOR C′
s(S′5)=E=NOT D
可以写出序列S′5的真值表,它也证明s(S′5)=s(XOR)
S′5
x y x′ A A′ B C C′ D E
0 0 0 0 0 1 0 0 1 0
0 1 0 1 1 0 0 0 0 1
1 0 1 1 1 0 0 0 0 1
1 1 1 1 1 0 1 1 1 0
可以看出,对于有9个基本操作的序列,其机器时间仍是相当合理的。
本发明不限于涉及保护逻辑操作符的保护的应用,它也可应用于保护数学操作符,如一位加法操作符、加法操作符、减法操作符或乘法操作符,或者与逻辑的或数学的操作符类似的功能电路,如组合电路,特别是多路组合器和/或多路分解器、编码器和/或解码器、发生器和/或奇偶性检测器或比较器。
例如,根据本发明方法的另一应用,受保护的操作符是一个“乘以2”数学操作符,这是通过左移1个二进位并使低阶位复位得到的。以CANSI的符号表示,这一操作符也表示为(x<<1)。
这样,对由于操作符(x<<1)的每次调用,它的执行将代之以执行从下列等效序列中选出的一个操作序列:
S"1=(x ADD x)
S"2=(x AND F0h)ADD x ADD(x AND 0Fh)
S"3=(NOT((NOT x)ADD(NOT x)))SUB1
S"4=(y ADD x)SUB(y SUB x)其中ADD操作符是作用于一个八位位组的标准加法操作符,指令SUB是作用于一个八位位组的标准减法操作符,而后缀《h》表示一个十六进制的值。一般地说,等效序列S"i的选择及其实现的具体化是与先前对XOR操作符的详细描述相似或完全相同的。
还应该指出,不脱离本发明的范围,容纳根据本发明的其操作符受保护的电子模块的智能卡能由任何其他搭载系统代替。
下文所示本发明的一个实施例涉及使用电子模块来实现它。在保护逻辑的或数学的操作符或者类似的功能电路(该电路能用于在包括微处理器和存储器的电子模块中执行一个程序)的方法中,由微处理器执行所述操作符被执行替代操作序列所代替,这些替代操作的最终结果与所述操作符的功能得到的结果完全相同,所述结果被存储在存储器中。带有受保护操作符的电子模块含有至少一个微处理器和存储要执行的程序的存储器,该程序包含至少一个受保护的逻辑的或数学的操作符或类似的功能电路,这里该电子模块包含装置借助该微处理器以执行一个操作序列代替执行该操作符,执行该操作序列的最终结果与该操作符的功能的执行结果完全相同,所述结果被存储在存储器中。