保护计算机程序尤其是在微电路卡中的计算机程序的执行安全的方法技术

技术编号:2850421 阅读:164 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及保护计算机程序执行安全的方法,包括:一个向该程序的一个指令栈中推入一个预定值的步骤;和一个从该栈出栈的步骤,在必要的情况下,该出栈步骤适于容许检测一个执行异常。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种保护计算机程序执行安全的方法并涉及一种应用这样一种方法的被安全保护了的电子实体。本专利技术尤其被用于保护微电路卡(也被称作“智能卡”)的安全。在下文中,计算机程序的“安全保护”意指— 检测旨在修改计算机程序的正常行为的恶意攻击;以及— 任何旨在使计算机程序,尤其是在强烈干扰的环境,例如卫星,中执行的程序,或者对可靠性要求极高的计算机程序,例如控制心脏植入物的程序,的运行可靠的处理;另一方面,“计算机程序”意指任何程序,无论哪种计算机语言,无论用的哪种存储装置。非限制性地举例而言,计算机程序可以是用机器语言、汇编语言、C、C++、Java、VHDL编写的。程序可以存储在永久性存储器中,例如ROM或EEPROM存储器中或硬盘中,或存储在易失性存储器中,例如RAM类型的存储器中。还可以用集成电路,例如FPGA类型的,或用ASIC电路(专用集成电路)将程序固化。本专利技术容许检测旨在修改在被安全保护了的电子实体,例如微电路卡、被安全保护了的PCMIA卡(例如IBM4758卡)、USB钥匙、或在页面上集成了无触点芯片的护照,上执行的计算机程序的执行进程的攻击。本专利技术尤其容许检测通过干扰电子实体的运行的攻击,例如“通过制造错误的攻击”(英文的“fault Attack”,即“错误攻击”)类型的攻击。这些攻击旨在非法修改寄存器、存储器、或总线的内容或对这些内容的读取,或旨在迫使处理器不执行或错误地执行计算机程序的某些指令。被攻击的计算机程序于是可能以与设计时所预定的方式非常不同的方式运行。这些攻击可能通过各种方式实施,其中已知的有— 通过在处理器的电源端子上产生一个电压峰值;— 通过突然升高其温度;— 通过迅速改变其时钟频率或其电源电压;— 通过在构成它的硅部分上施加闪光、激光射线、或电磁场。
技术介绍
根据现有技术,对于保护计算机程序的安全,尤其是对于抵御通过在微电路卡中制造错误的攻击,业内人士有各种各样的方法。第一种方法在于在微电路卡的元件中安装容许检测这种攻击的传感器。然而,这种方法的有效性有限,因为实际上不可能在该元件的整个表面布置上传感器。此外,这些传感器也是由硅构成的,所以也有可能干扰这些传感器或修改它们传输的信息。第二种已知的并在大多数微电路卡操作系统中应用的安全保护方法基于“信号量(semaphore)”的使用。一种这样的方法包括— 一个在执行关键指令集期间修改存储器的内容的步骤;和— 一个检验步骤,在这个检验步骤期间,通过读前述存储区的内容,从而检验前述的修改是否实施了。如果存储区没有被修改,这说明修改步骤没有实施,因此,前述关键指令集没有正确执行。我们将注意到术语“信号量”在本文中表示一个与编程领域内并发进程已知的概念不同却具有相同名称的概念。该第二种方法由软件实施,没有前述第一种方法的弊病。然而,已经知道,传统上这些信号量是由驻留在工作存储器(RAM)中的变量来实现的,它们的操作(定位、读取)比较慢或者耗费存储空间。当程序在象智能卡这样的资源(内存、计算能力,......)有限的系统上执行时,该限制尤其不利。本专利技术力求得到一种没有前述弊病的软件安全保护方法。
技术实现思路
为此,本专利技术涉及一种保护计算机程序执行安全的方法,该方法包括— 一个向该程序的一个指令栈中推入一个预定值的步骤;和— 一个从该栈出栈的步骤,在必要的情况下,该出栈步骤适于容许检测一个执行异常。我们将在此提醒指令栈是一个用于临时保存数据的存储区。用两个在下文中分别称作PUSH和POP的专用指令将数值推入栈中及从栈中弹出。这些指令只操作固定长度的数值,例如八位字节的。栈的使用遵循LIFO(“后进先出”)类型的算法。已经知道,它尤其存储进程的返回地址(例如80×86汇编语言的RET指令)。根据本专利技术的安全保护方法因而使用执行栈来存储一个容许检测一个执行异常的数值。执行栈一方面具有快速的读写存取速度,另一方面很少耗费存储空间,因此根据本专利技术的安全保护方法尤其适合于保护在资源有限的系统上执行的计算机程序的安全。这种对指令栈的新颖使用具有其它的优点,将在以后描述。在一个最佳实施方式下,入栈步骤和出栈步骤分别与所述程序的至少一个指令子集的元素相关联。例如,入栈步骤可以与打开文件的指令“open(文件)”相关联,而出栈步骤可以与关闭该文件的指令“close(文件)”相关联。该特征尤其有利,因为它容许通过例如用编辑器将入栈和出栈操作与前述元素,即前面例子中的“open”和“close”指令,关联起来,而使安全保护指令的编写自动化。根据该最佳实施方式的一个第一变型,指令子集的元素分别是一个括号系统的一个开括号和一个关括号。为此,我们提醒,根据语言理论以及如计算机语言的业内人士所知道的,当一段文本包含同样多的开括号和关括号,而且该文本的任何开头都包含数量多于或等于关括号的数量的开括号时,我们面对的就是一个括号系统。根据这个尤其有利的特征,入栈步骤和出栈步骤可以分别与如下指令相关联— “(”和“)”;或— “{”和“}”;或— “begin”和“end”;或— “repeat”和“until”。在该最佳实施方式的另一种变型下,出栈步骤与程序或该程序的一个子程序的一条执行返回指令相关联。该特征有利地容许使用传统上在一个程序或子程序的(当执行return指令时)返回时实施的正常出栈操作来检测一个执行异常,如果在这种场合下出栈的数值与在该程序正常执行时本应该出栈的数值不一致的话。根据另一个特征,程序由这样一种编程语言编写该语言包含一个第一指令,该第一指令的执行实施入栈步骤;和/或一个第二指令,该第二指令的执行实施所述出栈步骤。在该实施方式下,一些新的指令被合并到编程语言中,这些指令每条都有一个专有函数,以及为了程序的安全保护的要么一个入栈函数,要么一个出栈函数。再回到上文中简短引入的例子,可以创造一条取名为“open(文件)”的新指令,该新指令容许既打开文件又将一个预定的数值推入程序的指令栈。因此,编程人员确信每次打开文件时,安全保护函数都被应用了,甚至无需他操心,也不需要特别的软件工具。优先地,第二指令结束程序或该程序的一个子程序。该实施方式具有与在前文中引入的实施方式方式相同的优点,在前文的这个实施方式中,入栈和出栈指令与程序的指令子集的元素相关联,而不是与这些元素合并。因此,此处的实施方式将不在后面详细描述。在一个最佳实施方式下,预定值代表程序的一个关键指令子集。当安全保护方法被用于保护程序的多个指令子集的安全时,该特征尤其有利。该特征容许在入栈步骤期间检测是否一个特定的指令子集被正确执行了,而不是其执行会导致另一个预定值入栈的另一个指令子集被执行。业内人士将容易地领会到该特征可以用于保护一个(C语言中的“if”,“then”,“else”类型的)测试的各个分支的安全,在每一个分支中,一个预定的不同的数值被入栈,而在该测试末实施出栈步骤。当程序调用一个子程序时,该特征还容许在执行子程序期间确信进入的子程序是响应这个调用的,而不是响应一个通过制造错误的攻击的。应用该特征的两个例子将在以后参照附录A和C被详述。根据另一个特征,根据本专利技术的安全保护方法包括一个如果在出栈步骤中出栈的数值不同于预定的数值就执行本文档来自技高网
...

【技术保护点】
一种保护计算机程序的执行安全的方法,其特征在于:它包括:-一个向该程序的一个指令栈中推入一个预定值的步骤;和-一个从所述栈出栈的步骤,在必要的情况下,该出栈步骤适于容许检测所述执行的一个执行异常。

【技术特征摘要】
【国外来华专利技术】FR 2003-7-11 03/085501.一种保护计算机程序的执行安全的方法,其特征在于它包括-一个向该程序的一个指令栈中推入一个预定值的步骤;和-一个从所述栈出栈的步骤,在必要的情况下,该出栈步骤适于容许检测所述执行的一个执行异常。2.根据权利要求1的安全保护方法,其特征在于所述入栈步骤和出栈步骤分别与所述程序的至少一个指令子集的元素相关联。3.根据权利要求2的安全保护方法,其特征在于所述元素分别是一个括号系统中的一个开括号和一个关括号。4.根据权利要求2的安全保护方法,其特征在于所述出栈步骤与所述程序或所述程序的一个子程序的一条执行返回指令相关联。5.根据权利要求1至4中任意一项的安全保护方法,其特征在于所述程序由一种编程语言编写,该语言包含一个第一指令,该第一指令的执行实施所述入栈步骤;和/或一个第二指令,该第二指令的执行实施所述出栈步骤。6.根据权利要求5的安全保护方法,其特征在于第二指令结束所述程序或所述程序的一个子程序。7.根据权利要求1至6中任意一项的安全保护方法,其特征在于所述预定值代表所述程序的一个关键指令子集。8.根据权利要求1至7中任意一项的安全保护方法,其特征在于它包括一个如果在所述出栈步骤中出栈的值不同于所述预定值就执行的异常处理步骤。9.根据权利要...

【专利技术属性】
技术研发人员:简博纳德费希尔休格斯TD拉克劳伊
申请(专利权)人:奥贝蒂尔卡系统股份有限公司
类型:发明
国别省市:FR[法国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利