CN1350675A - 用于监控程序流程的方法 - Google Patents

用于监控程序流程的方法 Download PDF

Info

Publication number
CN1350675A
CN1350675A CN00807379A CN00807379A CN1350675A CN 1350675 A CN1350675 A CN 1350675A CN 00807379 A CN00807379 A CN 00807379A CN 00807379 A CN00807379 A CN 00807379A CN 1350675 A CN1350675 A CN 1350675A
Authority
CN
China
Prior art keywords
instruction
inst
program
value
monitored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN00807379A
Other languages
English (en)
Inventor
P·吉拉尔
D·纳卡希
L·鲁索
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gemplus SA
Original Assignee
Gemplus SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gemplus SA filed Critical Gemplus SA
Publication of CN1350675A publication Critical patent/CN1350675A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Abstract

本发明涉及一种用于监控一段计算机程序的一系列指令(Inst.1-Inst.n)的执行流程的方法,包含:对被传送到处理器(4)的指令序列进行分析,其中该处理器用于执行被监控的程序;通过参考用上述程序记录的参考数据(Vref)对上述分析的结果进行验证。该参考数据能够以这种方式包含一个预先确定的值(Vref),以使只有当所有这些指令(Inst.1-Inst.n)在程序流程期间实际上已经被分析过了时它才与在监控过程中产生的分析的结果相符合。本发明还涉及一种用于监控程序执行的设备、依据上述监控原理进行操作的一种程序设备和一种编程设备。

Description

用于监控程序流程的方法
本发明涉及计算机程序安全领域,尤其是用于在一段计算机程序的执行中检测不可接受步骤的一种方法和设备,其中该程序能够用一种低级或者高级语言编写。
在一段用低级语言编写的程序中,依据一种结构非常接近于那些实际由计算机处理器部分执行的指令的结构来编制命令。该程序在能够被执行之前仅仅需要进行编译。低级语言,通称为机器代码,特别用于编程微处理器或者微控制器。微控制器是仅仅能够执行少量特定指令的处理器。特别地,它们用于装备智能卡(银行信用卡、电话卡、提供服务接入的卡,等等)以及用于控制工业或者家庭装置。
在一段用高级语言编写的程序中,命令具有一个接近于自然语言的结构,但另一方面更远离了处理器所使用的结构。以这样的语言写成的命令在它们能够以指令形式被处理器执行之前,必须首先进行解释,也就是说要被转换为机器代码命令。
这样任何计算机程序都会产生一系列适于它用于的处理器、微处理器或者微控制器的指令。
通常,一段程序的指令由一个处理器以一个指令计数器所控制的次序执行,如将结合附图1简要描述的那样。
一段程序的编译指令以连续的指令块Inst.1、Inst.2、Inst.3、……、Inst.n(其中n是一个整数)为单位、以代码或者微码的形式装载到一个指令寄存器2中。在这个寄存器2中,每条指令都由一个特定地址进行标识。在该例子中,这些指令Inst.1、Inst.2、Inst.3、……、Inst.n的地址分别被指定为Ad.1、Ad.2、Ad.3、……、Ad.n。这些指令从指令寄存器2中读取出来并且被连续地装载到处理器4里以便在一个指令计数器6的控制下在那儿执行,其中该指令计数器本身由处理器4控制。为了这个目的,该指令计数器6具有一个地址指针8,用来指示寄存器2的地址Ad.1、……、Ad.n,而在一个指令序列的执行期间必须从该寄存器2中读取要载入到处理器4中的指令。指针8的位置相对于指令寄存器2中的地址,因此会随着这些指令的执行而改变。
在图1描绘的例子中,在寄存器2中的这些指令Inst.1、Inst.2、Inst.3、……、Inst.n必须从第一条指令Inst.1到第n条指令Inst.n连续地执行,即以一种线性方式执行。这样指令计数器6的指针8最初指定寄存器2的地址为Ad.1,而且相应指令Inst.1的数据10-1被载入到处理器4中。当处理器4命令指令计数器6提供下一条指令(在这种情况下是Inst.2)时,所述计数器将指针8的位置增加一个地址更换单元以便指定地址Ad.2。重复这个过程,并且当指针8指定地址Ad.n以便载入最后一条指令Inst.n的数据10-n(虚线)时,结束这个过程。
以一种线性方式执行的一系列指令不包含任何“跳转”,“跳转”脱离了指针8关于连续地址的顺序增长。这就是这种情况,例如,以微码形式的指令序列如下所示:
lda  t
txa
mul
bset 3,t
sta  n
换句话说,这个序列将以一种线性方式执行,当从一条指令转移到另一条指令时,指令计数器6增加一个地址更换单元。
然而,一段程序的执行需要跳转到位于寄存器2中存在的指令线性序列之外的指令,这是正常的。这样的跳转能够由一条用于载入位于该序列之外一个地址上的数据的指令产生,或者是由一条称为开关指令、用于条件执行随后命令的指令产生。
一条导致跳转的指令使得下面这个过程变得必要:即在指令计数器6处,确定在这个跳转之后的下一条指令在寄存器2中的地址,并且将指针8定位到这个地址以便使位于那儿的指令或者数据被载入到处理器2中。
举例来说,序列:
lda
txa
bra label;jump
mul
bset  3,t
sta  n
label  rts
将导致一个在对应于命令“jump”的代码位置的新值载入到指令计数器6中。
这种在命令下能够跳转到一个顺序系列地址之外的地址的事实会不幸地引起程序中不可接受的步骤。在程序中这样不可接受的步骤可以由该程序设备一个意外的误操作产生。然而,它也可以由一个旨在使程序设备功能偏离它要求功能的恶意操作产生。例如,在智能卡的情况下,通过创建或者修改跳转和/或开关指令来修改微处理器的程序编制,可以使载入错误数据(增加用一个银行或者电话卡授权的信贷,对访问某些服务的错误授权,等等)、或者恢复保存在存储器中的机密数据(存取码,关于该卡持有人的个人信息,等等)成为可能。
这是因为,即使当程序以一种固定的方式记录在一个半导体芯片上时,仍然有可能利用用于探测和测试组件的当前技术、使用具有焦点离子束或者FIB的工作站在该芯片的表面上(或者甚至在其中的低层上)创建探测触点。
这些探测点一旦被创建了,就使得使用专用的工作台、英语术语也称为“Probe station”放置探测针成为可能,这允许连续地读取一位(以及监控它随时间的变化)或者对其值进行一个外部修改。
特别地,在指令计数器6寄存器上放置触点,使得从外部载入当前正被执行的寄存器中值以及导致一个不是由程序设计员提供的转换成为可能。如上所述,这样的一个跳转自然会对应用程序安全产生有害的后果,例如当产生不完全计算时会导致保密数据的泄露。
还存在更基本、但是确信度较小的方法导致程序运行过程中的这种误操作。R.Anderson在一篇名为“Tamper resistance,a cautionarynote”的文章中给出一个例子。另一种技术包括利用故意导致的计算误差,以便从一个智能卡中提取诸如密匙之类的数据。这种技术在Boneh、DeMillo和Lipton等人于1996年10月31日在Bellcore Report上发表的、名为“On the Importance of Checking Computations”的文章中描述过。
当然,当要攻击的程序被解释而不是被编译时也会发生相同的现象。例如,如果攻击者设法造成在向解释器指示当前指令的解释器程序指针上的一个改变,这样则以Java或者BASIC语言编写的应用程序就能够偏移它的合法使用。
然而,当前的计算机系统没有进行特定设计以阻止在一个代码内不受控制的转换。恰恰相反,汇编语言已经被特定设计以允许程序员的最大自由。举例来说,在C语言中,使用由指针索引的执行,就有可能在一个函数的代码内进行跳转。
根据以一种不可接受的方式运行一段程序的这些问题,而不论它们是否由不想要的误操作或者由一个将该程序偏移其预期使用的意图所造成,本发明提出了一种方法用于在一段计算机程序的一系列指令执行中监控进程,该方法包括:分析被传输到用于执行正被监控的程序的处理器的指令序列,而且利用和所述程序一起记录的参考数据验证这个分析的结果。
这样本发明使得如下过程成为可能:即检验在考虑中的指令集里所包含的所有指令是否为了它们的执行的确已经传输到处理器中。如果情况是这样的话,就假定如此读取的指令将也已经被执行了。
该参考数据,例如能够是预先确定的一个值,以便只有当该指令序列中的所有指令事实上已经在该程序执行期间被分析过了时,才对应于在该监控方法期间产生的分析结果。
更可取地,该分析步骤包含如下子步骤:从每条传输到处理器的指令中提取一个数据项,以及在每个这样提取的数据项上进行预定计算;而验证步骤包括将分析的结果和参考数据进行比较。
有利地是,验证步骤受到与监控装置有关的一个寄存器中包含的值和该参考值的一个硬接线比较的影响,其中后者能够以一种硬接线方式输入到该程序中,并在构成正被监控程序的代码掩蔽期间被一次固定(例如在一个ROM类型的固定存储器中)。
更可取地是,该验证由一条位于该程序中一个预定位置上的指令引起,这条指令包含上述的参考数据。
有利地是,当要被监控的指令集中的指令处于一个值、十六进制或者十进制时,在上述分析期间这些指令被当作简单的数字值对待。
这样用于监控一段计算机程序的一个指令序列执行的全程方法能够包含以下步骤:
-在该程序的准备期间:
-在该程序一个指令序列中在至少一个预定位置上包含一个参考值,该值是依据适用于每条要被监控指令中的可识别数据的一个给定规则确定的;以及
-在要被监控的部分程序的执行期间:
-获得在每条执行指令中的上述可识别数据;
-对这样获得的上述可识别数据应用上述给定规则,以便建立一个验证值;以及
-验证这个验证值其事实上相当于和程序一起记录的参考值。
在本发明的一个最佳实施例中,当检测到该验证值不等于参考值时,为中断该程序的运行预先采取了措施。如果检测到在验证值和参考值之间的这种不一致性达到了一个预定次数,则这个中断能够伴随着对将来包含被监控计算机程序的设备使用的无效作用。
有利地是,要被监控的指令集在为其而设的运行中不包括跳转,以便期望它包含的所有指令在所有设想的情况下执行。
当要被监控的程序或者程序的一部分包含了至少一个跳转时,就有可能为不包含跳转的指令集分别应用这个监控方法。
在一条指令取决于正被操作的数据产生至少一次跳转的情况下,也就是说在条件转换中,有可能分别为在该跳转之前没有跳转的一个指令集和在这个跳转之后没有跳转的至少一个指令集使用该监测方法。
在这种情况下,能够想象到,对于在一个跳转之前的指令集,为了进行旨在获得这个指令集验证值的分析,要求该跳转的指令(这条指令一般是一个切换之前的最后一条指令)要包含在这个指令集中,这样在执行该转移指令之前,这个指令集的正确运行就能够得到验证。
有利地是,在该方法前一次实施期间所获得的验证值在该方法的每次新实施中都被删去了。这个规定使得有可能容易地控制对一段程序中不同指令集、诸如那些由跳转分开的指令集的监控。特别地,这使得为由跳转分开的不同指令集实施使用相同初始条件验证值计算的方法成为可能。
在该方法的每次新实施中,能够通过一次简单的复位删去验证值。这个值还可以被另一个预定的初始值所替代。通过该被保护软件本身就能够激活这些复位或初始化操作。
有利地是,作为一系列值中的最后一个值获得该验证值,其中该系列值随着对该指令集中每一条相应指令的分析而连续改变。这种方法使得包含该监控方法运行的一个内部状态以及跟踪它的改变成为可能。
更可取地是,允许验证值这种改变的分析方式包括:为每条跟随前一条指令的相应指令,对从正讨论指令中提取的值以及在前一条指令上执行相同操作获得的结果,计算一个操作结果。对于与第一条要被验证指令相关的计算,有可能把操作应用到从该第一条指令提取的数据以及一个预定值(其可能相当于重新初始化值或者上述的复位值)上,在缺少前一个操作结果的情况下,这能够用作一个“种子”值。
这样,通过使用一个适用于以同样方式用于从每一条正被讨论的指令中提取的数据上的递归算法,就有可能获得正确的验证值。此外,能够容易地选择该计算操作,以便只有当在计算期间所有指令的一些数据已经被考虑过,而且它们已经以一个规定的次序考虑过时,才能获得一个正确的验证值。
依据在数据加密领域本来已知的技术,这种计算操作能够是运用一个散列函数,诸如由联邦散列标准确定的SHA-1散列函数。在这种情况下,通过加密散列在最后执行的初始化之后执行的所有操作代码(被认为是数字值)以及地址,有可能在该监测方法的运行中实现上述的内部变化。
在一个变体中,有可能通过对在最后进行的初始化之后执行的所有操作代码和地址进行一个冗余度计算,而不一定是加密计算,来改变该验证值。举例来说,有可能使用CRC(英语称为cyclic redundancycheck)类型的算法。
当包含在相应指令中的数据是在其执行期间获得时,利用本发明就有可能通过中间值的计算获得比较值。利用这个方法,就没有必要保存每个从正被讨论指令集的指令中提取的值。这是因为,在一次中间值计算的最后,仅仅这个中间值用于计算下一个中间值(或者最后的值,其相当于验证值),而且不再考虑有可能产生它的数据项。这个方案使得实现本发明的装置节省存储空间成为可能。
作为一个变体,有可能保存该指令集的指令中包含的每个数据项,这些指令被认为是仅仅在必要时、例如在验证步骤中被执行并且实现该验证值的计算。
本发明还涉及一种用于监控一段计算机程序的一系列指令执行步骤的设备,其特征在于:它具有用于分析指令序列的装置,其中该指令序列被传输到用于执行该被监控程序的处理器中,以及它还具有用于利用与所述程序一起记录的参考数据验证这个分析结果的装置。
有利地是,根据本发明的监控装置包含一个寄存器用于记录该验证值计算中的中间结果。这个寄存器能够适合于仅仅保持最后的当前中间结果。
能够预先采取措施,以允许在当前正被执行程序的命令下记录一个预定值或者一个复位。这样,该程序能够在该监控方法的每次新实施时要求关于该寄存器内容的一个初始条件,例如发生在该程序中的一次跳转之后。
该监控设备能够集成到一个用于执行被监控程序的设备中,或者被集成到包含被监控程序的被编程设备中。
本发明还涉及一种程序执行设备,例如一台计算机,一个具有微处理器或者微控制器的装置诸如一个智能卡阅读器或者一个用于读取以PCMCIA格式记录在一张卡上的程序的阅读器,该设备用于执行一段计算机程序的一系列指令,其特征在于:它具有用于分析传输用以执行的指令序列的装置,以及用于验证这个分析的结果是否与该程序一起记录的参考数据符合的装置。
本发明还涉及一个程序设备,用于与上述的程序执行设备一起作用,并且包含一系列指令,其特征在于它还包括依据所述指令中包含的数据预先确定的参考数据,以及用于允许对由上述程序执行设备分析的指令序列进行一次验证。
该被编程设备,例如一个智能卡或者诸如一个ABS制动系统的机械控制设备,能够在一个ROM类型的固定存储器中包含被监控的程序。
有利地是,参考数据在程序代码屏蔽期间,只此一次以预先布线值的形式被记录在该存储器中。
本发明还涉及一种对用于执行一段程序、和上述被编程设备协同作用的设备进行编程的设备,其特征在于:它包含装置用于,在该程序的一系列指令的至少一个预定位置上,输入一个参考值,该参考值依据一种预定模式、由在一个希望其执行被监控的指令集中的每条指令所包括的数据计算得到。
最后,本发明还涉及一个虚拟机或者解释器用于解释关键代码,其特征在于:它实现了上述用于执行这个关键代码的监控方法。
上述用于监控、执行一段程序、或者编程的设备,或者装备有这样程序的设备能够装备实现上述监控方法不同的可能可选方面所必需的所有装置。
举例来说,有可能设想,在一个与一个智能卡相关的应用中,除了增加一个执行一段程序的微处理器之外,还附加一个硬件部件作为一个监控单元。这个单元的作用是监控任何不是由软件设计师提供的跳转不能够在执行期间发生。在这个例子中,该监控单元可以由寄存器组成,其中该寄存器的内容在任何时候都构成了该监控单元的内部状态。该监控单元的一个特定输入允许它被重置,这一般是通过清除该监控单元的内容来完成。这个操作可以在任何时候由正执行的软件激活,并且能够,例如,受到在汇编程序中增加一个新的操作码(例如“clr us”)的影响或者受到对保护组件的存储器中的一个数据位进行操作(例如:setb 3,service)的影响。
在这个示例应用中,监控单元将它的内部状态与由保护软件提供的一个数据串进行比较。例如,这能够受到在该监控单元内复制该值(利用一个“Ida-sta”循环)的影响,其中所需软件利用该值来比较内部状态。一旦该值的复制已经结束,该监控单元把它与其内部状态相比较,并且采取以下的动作:如果该监控单元的状态等于由该受保护软件呈现的值,则正常地继续执行,否则就停止该程序的执行(强迫用户重置该卡),有可能通过预先批准一个在EEPROM类型非易失性存储器中的错误执行计数器,在该计数器的值超过一个合理的极限(例如4)时,影响该卡的确定块。
该监控单元能够永久地保持从它最后一次复位之后执行的指令代码和地址的一个加密散列。
该监控机构能够应用于在一个虚拟机中的代码解释(例如Java“Byte code”类型)。编译程序能够计算一部分字节代码散列的值,其中该代码被集成到一个英语术语称为产品“class file”(类文件)的结构的属性中,并且添加到英语术语称为附加“opcodes”(操作码)的字节代码形成码中,其中该“opcodes”对应于监控单元的复位以及对应于验证操作的调用。该虚拟机将替代一个监控单元,并且当它遇到验证操作码时,相对类文件中包含的理论散列值,验证当前的散列值。
通过阅读以下仅作为举例而给出的最佳实施例的描述并结合附图,本发明将更清楚地得到理解,而且其优点和特征将更清楚地显露出来,其中:
——图1,已经介绍过了,是一个为了说明一个指令计数器在一段程序执行中作用的简化框图;
——图2是一个程序执行设备的简化框图,旨在说明根据本发明第一实施例的一个监控单元的操作原理;
——图3是依据本发明的监控方法的流程图;
——图4是依据本发明的监控方法的一个变体的流程图;
——图5是一个程序执行设备的简化框图,旨在说明依据本发明第二实施例的一个监控单元的操作原理;
——图6是依据本发明、适于第二实施例的监控方法的流程图;
——图7示意性地描述了具有转换的一段程序的指令集,该指令集还包含专用于该监控方法的指令。
本发明的原理将结合图2的框图加以说明,其中那些作用类似于图1中的那些方框的方框具有相同的标记,而且为简明起见将不再进行描述。
图2描述了一个程序执行设备20在广义上的基本元件。它能够是一台用于执行一段用高级语言编制的程序的计算机、一个微处理器或一个微控制器,后者在用低级语言编制的程序下运行。举例来说,执行设备20能够是一个用于管理银行业务或电话交易或者其它服务的智能卡阅读器。然后要被验证的程序被包含在该智能卡中。
为了使以下的描述更为具体,假定程序执行设备20基于一个微控制器型的处理器4。
该处理器4执行以微码形式保存在一个指令寄存器2中的一部分程序。这个程序部分的操作部分包含一个n条指令序列(其中n是一个大于1的整数),分别用Inst.1、Inst.2、Inst.3、……、Inst.n表示。构成这些指令的这些微码处于数字值形式,它们能够是十进制或者十六进制。
因此,能够以两种不同的方式考虑这样的一个值,分别带有一个数据项:首先,作为一条指令,它表示该处理器(在这种情况下它将是指定的“代码值”);其次,作为一个简单的数字值能够进行算术运算处理(在这种情况下它将是指定的“数字值”Vinst.)。例如,第一条指令Inst.1等于40.这个数字是一个相当于一条由该处理器识别的指令的代码,但是它与该数字值40有相同的二进制结构。
在这些指令Inst.1、Inst.2、Inst.3、……、Inst.n中没有指令命令跳转到在这些指令执行的线性序列之外的其它指令。因此这个程序部分的正常和预期运行必然需要每一条指令连续地执行,从指令Inst.1开始并以指令Inst.n结束。这样,当指令寄存器2中的指令Inst.1到Inst.n被载入到处理器4中时,指令计数器6(已经描述过了)将它的指针8连续地定位在每一条指令的地址上。
根据本发明,程序执行设备20有一个监控单元22,它使得验证每一条指令Inst.1到Inst.n为了它们的执行的确已经被载入到处理器4中成为可能。它被功能连接在指令寄存器2和处理器4之间。因此,所有这些从指令寄存器2读取的指令在到达处理器4之前都要经过监控单元2。
在这个实例中,将监控单元22描述成被集成到程序执行设备20中。然而,当例如监控单元22被集成到一个在存储器中包含要监控的程序的智能卡中时,不用改变下面将要描述的这些原则,它同样能够和包含要监控程序的设备结合起来。
如以下更为详细的解释那样,监控单元22有一个寄存器24用于暂时地存储一个在指令Inst.1、Inst.2、Inst.3、……、Inst.n中包含的数据项,以及一个计算器26用于在这个数据项上执行运算。
监控单元的使用要求增加二条新指令到该程序的n条指令Inst.1、Inst.2、Inst.3、……、Inst.n中。第一条监控指令Inst.0放置在该程序的第一条指令Inst.1之前,第二条监控指令Inst.n+1放置在该程序的最后一条指令Inst.n之后。
在该程序n条指令的执行期间,对指令计数器6进行初始控制从而将它的指针8定位在第一条监控指令Inst.0的地址上。这条指令指示监控单元初始化一个包含在其寄存器24中的散列值VH。在该实例中,指令Inst.0简单地指示寄存器2使得值VH=0。它没有被传送到处理器4。
接下来,程序执行设备20进入该程序这些指令Inst.1、Inst.2、Inst.3、……、Inst.n的正常执行阶段。从指令寄存器2读取的每条指令首先被传送到监控单元22,在那儿它被认为是一个数字值。
每条指令的数字值由计算器26进行一个散列算法,诸如用联邦散列标准说明的SHA-1散列法。与一条指令Inst.i(其中i是一个从1到n的整数)相关的散列操作结果VHi被输入到寄存器24中。
这个VHi值用作下一条指令Inst.i+1散列操作的基础。然后,输入这样得到的关于指令Inst.i+1的散列结果VHi+1,来替代先前得到的散列结果VHi。
为经过监控单元22的每一条指令Inst.1、Inst.2、Inst.3、……、Inst.n都继续这个过程。
当执行最后一条指令Inst.n时,第二条监控指令Inst.n+1被载入到监控单元22中。这条指令有两个组分:一个参考值Vref和用于计算器26的一个命令,用于将这个参考值Vref与输入到寄存器24中的最后一个散列结果进行比较。因此,这个最后值对应于从指令Inst.n(在该图中等于36)的数字值和为前一条指令Inst.n-1得到的散列结果VHn-1中获得的散列结果VHn。
因此,响应于第二条监控指令Inst.n+1,计算器26将寄存器22中的值VHn与在这条监控指令中指定的参考值Vref进行比较。
为了对应于指令Inst.1、Inst.2、Inst.3、……、Inst.n值的连续散列结果的预期值VHn,在该记录的程序的准备期间确定该参考值Vref。这个值Vref能够预先通过一个与监控单元22使用同样的过程,使用指令Inst.1、Inst.2、Inst.3、……、Inst.n的连续散列过程计算出来。
最好是,值Vref被存入到一个固定存储器以便使其不致于被一个恶意行为所修改。
如果当执行监控指令Inst.n+1时,监控单元22发现上述值Vref和VHn相同,则断定所有这些指令Inst.1、Inst.2、Inst.3、……、Inst.n为了它们的执行的确已经传送给处理器4。
相反,如果监控单元22发现值Vref和VHn不相同,则断定要么就是不是所有的这些指令Inst.1、Inst.2、Inst.3、……、Inst.n已经由该监控单元接收和传送,要么就是它们没有以预期的顺序接收和传送。在这种情况下,能够提供一个动作用于警告该程序的用户或所有者、或是阻止该程序继续运行。在该实例中,这样一个动作以一条用于中断该程序Int的指令形式从监控单元22传送给处理器4。
现在将结合图3中描绘的流程图对这种通过图2装置实现的监控方法进行描述。假定被监控的程序或程序部分通过分别在开始和末端包含第一和第二条监控指令为这种监控方法正确地做好了准备。
在初始阶段,监控单元22位于监控例程的开始处30,其中的第一个步骤32是等待第一条监控指令(Inst.0)。
当接收到第一条监控指令Inst.0时,监控单元22实施一个指令计数器和寄存器24初始化(通过复位)的步骤34。寄存器24的复位是一种在这个寄存器中放置一个“种子”值的方法以便开始一个散列操作序列,这将在随后加以说明。这些操作能够由第一条监控指令直接控制或是简单地由与监控单元22有关的例程起动。
在这个第一种情况中,复位能够受到在汇编指令中添加一条新操作码(例如“clr us”)、或是在程序执行设备20的存储器中操作一个给定位的影响。这样的一个命令能够是“Setb 3,service”。
在初始化步骤之后,监控单元22以一个单元为单位递增指令计数器(然后将这个计数器设置为n=1)(步骤36)。
接下来,在监控下的该程序或程序部分的第一条指令Inst.1从指令寄存器2中读取出来(步骤38)。如上所述,这条指令被监控单元22认为是一个允许算术运算的数字值。在图2的实施例中,这个值是40。
然后该第一条指令Inst.1的数字值用寄存器24中包含的值进行散列操作。就第一条指令来说,这个最后值是初始化值,即0。
众所周知,在此散列操作本质上是使一个数学运算符f(VHn-1,Vinst.n)作用于所讨论指令n的值上,其中VHn-1是记录在寄存器24中前一次散列操作的结果(或者就第一条指令来说是初始化值),而Vinst.n是所讨论指令n的数字值。
然后这个散列操作的结果VHn替代前一次的结果VHn-1记录在寄存器24中(步骤42)。应当注意到:在每次散列操作中更新寄存器内容的过程使得永久保持自上次初始化以来执行的指令代码和地址的加密散列成为可能。
在这个散列操作的结尾,为了它的执行该指令传送给处理器4(步骤44)。
接下来监控单元22确定被监控的程序或程序部分是否包含另一条要执行的指令(步骤46)。
因此,该过程从n到n+1增量执行一个循环返回B1回到步骤36。然后下一条指令(Inst.2)的值将从指令寄存器2中读取出来,并以与用于指令Inst.1同样的方式进行散列操作。然而,一方面这次用指令Inst.2的数字值和在前一个散列操作期间获得的结果进行散列,即值VH1(n在这儿等于2),然后它进入寄存器24中。
以与用于第一条指令相同的方式进行该方法的步骤42到46。这样,分别为从指令寄存器2中读取的每一条指令Inst.1、Inst.2、Inst.3、……、Inst.n继续步骤组36到46的循环,对一条指令Inst.i(其中i是一个从1到n的整数)来说,利用寄存器24中的值VHni-1和值Vinst.i进行散列。
一旦所有的指令Inst.1、Inst.2、Inst.3、……、Inst.n已经由监控单元22这样处理过了,监控单元22就接收在正被监控的程序或程序部分的最后一条指令Inst.n之后的第二条监控指令Inst.n+1。
这第二条监控指令指示监控单元22从程序中提取参考值Vref(步骤48),并将寄存器24的内容与这个Vref值进行比较(步骤50)。借助于一个循环“lda-sta”能够影响这个命令。
应当说明的是:通过执行步骤36到46的连续循环,目前包含在寄存器中的值是用前一次散列的结果VHn-1和指令n的数字值(在图2的实例中等于36)实现的散列结果VHn。
参考值Vref是在该程序的准备期间利用散列操作的知识预先确定的,以便使其等于监控单元22应该返回的值VHn,如果所有这些指令Inst.1、Inst.2、Inst.3、……、Inst.n的确被传送到处理器4的话。
因此,比较的结果使得核对这些指令Inst.1、Inst.2、Inst.3、……、Inst.n是否已经正确打开成为可能:如果VHn=Vref(步骤52),假定所有这些指令实际上已经被传送到处理器4了。然后,就包含这些指令Inst.1、Inst.2、Inst.3、……、Inst.n的程序或程序部分来说,这个监控操作就终止了。
然后该监控过程返回到起始阶段30等待新的第一条监控指令。
另一方面,如果比较步骤50显示出这些比较值间不相同,则假定要么不是所有的指令Inst.1、Inst.2、Inst.3、……、Inst.n都已经被传送到处理器4,要么是没有以正确的次序进行传送(步骤54)。这是因为一个连续散列操作的结果取决于它们的执行次序。
在这种情况下,监控单元22要求一个动作(步骤56),诸如中断该程序和/或记录该程序未正确运行的事实。
现在将结合图4的流程图对上述监控方法的变体进行描述。依据这个变体,不是在监控单元22接收每条新指令期间执行一个散列操作,而是仅仅在第二条监控指令接收以后才执行所有的散列操作。在图4的流程图中,与先前结合图3描述的那些步骤相同的步骤带有相同的标记,而且为了简明起见,将不会对它们进行描述。
该监控方法就步骤30到38来说呈现先前的情况(图3和4)。在步骤38读取指令寄存器2中的指令Vinst.n的值之后,监控单元22继续进行这个值的记录(步骤39)。这个记录能够发生在计算器26的一个内部寄存器中、寄存器24的一个专用部分中、监控单元22的一个特定存储器(未显示)中、或者在监控单元22之外的一个存储器中,假如它能够被监控单元22访问的话。
接下来监控单元22继续进行先前描述的步骤44和46。将要注意到:记录值Vinst.n的步骤39,处于逐个单元递增n、连接步骤46到步骤36的循环B1中,从而使每一个Vinst.n值都这样被记录,直到在步骤46中检测到第二条监控指令为止。
当这个第二条指令来到时,监控单元22读取参考值Vref(步骤48),并在步骤49依据与先前描述的图3步骤40和42相同的算法、基于先前记录的Vinst值集合,执行散列。那么最后的散列值VHn与在图3方法中的情况相同。应当注意到:有可能颠倒步骤48和49的次序。
比较步骤50以及随后的那些步骤与图3中的那些步骤是相同的。
图5是依据本发明第二个实施例的监控单元22的简化框图。与参考图2和3描述的第一实施例相同的方式集成到程序执行设备20中,而且为了简明起见,关于其指令计数器6、指令寄存器2和处理器4的功能将不再重复。
依据第二实施例的监控单元22本质上不同于第一实施例中的监控单元,体现在:它还具有一个存储器60,用来记录没有根据参考图3或4说明的标准正确执行的一系列指令Inst.1-Inst.n的发生次数。
在该实例中,存储器60是以一个带有电可擦内容的固定(非易失性)存储器(通常用英语术语EEPROM表示)的形式制造而成的。
存储器60功能上和计算器26相连接以便使它记录一个计数值VC,它在每次注意到一系列正被监控的指令一次不正确的执行时,逐个单元递增该计数值。这个计数值VC因此使得检测一系列指令不正确执行的数目以及据此进行动作成为可能,例如,如果这个数目超过一个阈值,则使包含该程序的设备(例如一个智能卡)的任何未来使用无效。
图6中的流程图给出了一个使用该计数值VC来监控执行该程序的设备的实例。这个实例包含图3中流程图的这组步骤30到54或是图4中的相似步骤。
继比较步骤52之后当监控单元22在步骤54检测到这些指令Inst.1-Inst.n的一个意外执行时,计算单元26增加存储器60中的计数值VC,最初为0,然后逐个单元递增(步骤62)。接下来它检查这样增加的计数值VC是否已经达到一个预定阈值VCthreshold(步骤64)。这个阈值VCthreshold对应于指令Inst.1-Inst.n被认为在为处理这样一个故障采取明确措施之前能够在编程设备中发生意外执行的次数。举例来说,在智能卡的情况中,适当数目的这种故障是能够接受(例如3或4)的,这有利于怀疑它是否是一种与阅读器(程序执行设备20)相关的瞬间损害情况,但是超过了这个数目就必须认为该卡已经被无意或者恶意损坏。在这种实现情况下,还可以为在编程设备(卡)中输入值VC做好准备,以便完全地将这些有故障执行的历史记录保留到程序设备中。
如果计数值VC低于阈值VCthreshold,则监控单元22如先前描述的那样用一个用于用户和/或操作系统的简单警告信息建立中断指令Int(步骤66),并将它传送到处理器4(步骤68)。
另一方面,如果计数值VC达到了阈值VCthreshold,则监控单元22如先前描述的那样用一条用于禁止包含以意外方式执行的这些指令的编程设备的任何未来使用的指令建立该中断指令Int(步骤70),并将它传送到处理器(步骤68)。在这种情况下,将使得仅仅在已经对存储器60重新编程之后就重新使用这个设备变得可能。其中这个存储器60是一个EEPROM或其它非易失性存储器的形式,这种重新编程很难以一种转移方式执行。
将会注意到:程序中断指令Int伴随一个警告信息或未来使用无效指令进行传输,并且能够在处理器或者是在监控单元22中执行。
下面将结合图7描述依据本发明,监控单元22能够怎样用于监控一段提供跳跃或切换的程序。
在图7的实例中,程序执行设备20在指令寄存器2中包含一段用于处理器4的程序或程序部分,它包含三组指令:
-第一组指令Inst.EI1-1到Inst.EI1-j(其中j是一个大于1的整数),最后一条指令EI1-j是一个要求有条件地切换到随后两组中的一组或另外一组的代码;
-第二组指令Inst.EI2-1到Inst.EI2k(其中k是一个大于1的整数);如果这两个条件中的第一个条件满足的话,就继有条件的切换指令EI1-j执行之后执行这组中的第一条指令Inst.EI2-1;以及
-第三组指令Inst.EI3-1到Inst.EI31(其中k是一个大于1的整数);如果这两个条件中的第二个条件满足的话,就继有条件的切换指令EI1-j执行之后执行这组中的第一条指令Inst.EI3-1。
这三组指令EI1、EI2和EI3在它们的指令序列内部没有包含任何跳跃。(就第一组指令来说,在序列末端条件转移到指令EI1-j.)因此,分别对这三组指令来说,所有这些指令被设计为自第一条指令起连续地执行。
在程序准备期间,在每组指令EI1、EI2和EI3的头尾处分别增加以上结合图2所述的第一条监控指令和第二条监控指令。
然后对由组EI1、EI2和EI3组成的程序或程序部分的监控继续进行如下。
监控单元22首先定位于监控阶段的开始处(步骤30,图3)。
从执行第一组指令EI1开始这个过程。位于这组头部的第一条监控指令将首先被载入到监控单元22中。响应于这条指令,监控单元初始化它的指令计数器和它的散列值VH寄存器24(步骤34,图3),并依据图3中的步骤36到46分别为第一组指令的指令Inst.EI1-1到Inst.EI1-j继续进行散列过程。
因此控制转换的这组中的最后一条指令EI1-j也要进行由监控单元22进行散列以便被送到处理器4。
随后的指令是位于第一组指令EI1尾部的第二条监控指令(步骤46,图3),它带来了记录在寄存器24里的上一个散列值和与这第二条指令有关的参考值Vref之间的比较阶段。
如果在比较步骤50(图3)检测到这样记录的上一个散列值与参考值Vref不相符,则监控单元22继续进行程序中断步骤54和56(图3和4)或是步骤54到70(图6)。最好是,甚至在程序已经执行有条件的转换之前为这个中断发生采取措施。这能够例如通过采用已知的编程技术将转移指令和一条来自监控单元的等候验证指令相关联而实现。
如果在比较步骤50(图2)检测到这样记录的最后一个散列值实际上相当于参考值Vref,则监控单元批准由这组中最后一条指令EI1-j所确定的有条件转换的执行。然后该程序根据由这个最后一条指令定位的转换条件继续第二或第三组指令中的一个或另一个。
假定在该实例中这个条件转移促使转换到第二组指令执行。在这种情况下,指令计数器6使指令指针8直接从位于第一组指令EI1尾部的第二条监控指令传递到在第三组指令EI3头部的第一条监控指令。
监控单元将通过重新初始化指令计数器和寄存器24来执行这个新的第一条指令。因此,对这第三组指令的监控过程会以与第一组指令完全相同的方式继续进行。因此监控单元22将进行在这组中读取的每一条指令的连续散列,使用和第一组一样的一个“种子”值(这里相当于0)开始散列。这次第二条监控指令使得在执行中检测位于这个第一组指令的一个意外行为情况、以及在步骤56继续进行同一类型的动作成为可能。
应明白:继转换指令和第一组指令执行之后,就转换到第三组的情况所给出的说明以绝对类似的方式适用于转换到第二组指令的情况。
有可能使监控单元22不仅能统计在包含转移的一段程序中异常步骤的数目,而且能统计产生它们的独立监控的指令组。
因此,依据第二个实施例的监控单元22(图5)能够在它的存储器60里记录下每个记录的中断所涉及的指令组。还有可能依据中断位于其中的指令组为程序的将来使用无效制定标准。
当然,应明白监控单元22能够与处理器4分离或是在功能上被集成到处理器4中。
最后,显然用方法描述的本发明的所有这些方面能够很容易地用实际装置来实现,反之亦然。同样地,应明白所描述的本发明还覆盖了一个实施例或另一实施例的变体的所有明显置换。

Claims (34)

1.一种用一段计算机程序中一系列指令(Inst.1-Inst.n)监控执行进程的方法,在于:分析被送到用于执行该正被监控程序的处理器(4)的指令序列,并参考同上述程序一起记录的参考数据(Vref)来验证这个分析的结果。
2.如权利要求1所述的方法,其特征在于:只有当该指令序列中的所有指令(Inst.1-Inst.n)实际上已经在程序运行期间被分析过了时,参考数据包括一个预先确立的值(Vref)以便对应于监控方法期间产生的这个分析的结果。
3.如权利要求1或2所述的方法,其特征在于:指令序列(Inst.1-Inst.n)的上述分析包含从每条被传送到处理器(4)的指令中提取一个数据项,以及在这样提取的每个数据项上的预定计算(40,42);以及验证包含对该分析的结果与参考数据(Vref)的比较(50)。
4.如权利要求1到3中任一项所述的方法,其特征在于:上述分析结果的验证是由被监控程序中的一条位于一预定存储单元的指令(Inst.n+1)所引起,这条指令包含与其正确执行受到监控的指令集(Inst.1-Inst.n)有关的参考数据(Vref)。
5.如权利要求1到4中任一项所述的方法,其特征在于:当被监控的该指令集中的指令(Inst.1-Inst.n)是以一个值的形式例如以十六进制或十进制形式记录代码时,将这些指令考虑为一个数字值来实现这些指令的上述分析。
6.如权利要求1所述的方法,包含以下步骤:
-在被监控程序的准备期间:
-在该程序的一指令序列(Inst.1-Inst.n)中,在至少一个预定存储单元上包括一个依据一个预定规则确定的参考值(Vref),其中该规则适用于每条被监控指令中的可识别数据;以及
-在被监控程序的执行期间:
-为了它的执行获得(38)在收到的每条指令中的上述可识别数据;
-将上述预定规则应用(40,42)到这样获得的上述可识别数据上以便确定一个验证值(VHn);以及
-验证(50)这个验证值实际上符合于和该程序一起记录的参考值。
7.如权利要求1到6中任一项所述的方法,其特征在于:它还包含一个步骤(56),即如果分析显示正被监控的程序没有象期望的那样运行,则中断被监控程序的流程。
8.如权利要求1到7中任一项所述的方法,其特征在于:它还包含一个步骤(70):即如果上述分析显示正被监控的程序没有以期望的方式运行预定次数,则使包含该被监控程序的设备的未来使用无效。
9.如权利要求1到8中任一项所述的方法,其特征在于:被监控的指令集在它的预期流程中不包含跳转。
10.如权利要求1到8中任一项所述的方法,其特征在于:当被监控的程序(EI1、EI2、EI3)或程序部分提供了至少一个跳转时,该监控方法被分别地应用到这个程序中两条连续指令之间不包含跳转的指令集。
11.如权利要求10所述的方法,其特征在于:当被监控的程序包含一条依赖于操作数据而引起跳转的指令(EI1-j)时,分别为在该跳转之前的指令集(EI1),和在这个跳转之后的至少一个指令集(EI2,EI3)执行该监控方法。
12.如权利要求11所述的方法,其特征在于:就提供一个跳转的一个指令集(EI1)来说,为了进行旨在获得用于这个指令集的验证值(VH)的分析,在这个指令集中包含指令(EI1-j)来控制这个跳转,这样就能在执行该跳转指令之前验证这个指令集的正确运行。
13.如权利要求1到12中任一项所述的方法,其特征在于:该分析在对被监控的一个指令序列或一个指令集(EI1、EI2、EI3)的每个新监控之前重新初始化。
14.如权利要求13所述的方法,其特征在于:对每个新监控的分析的重新初始化是清除或替换在前一个分析期间获得的验证值(VH)。
15.如权利要求13或14所述的方法,其特征在于:监控分析的重新初始化是由保护软件本身控制的。
16.如权利要求1到15中任一项所述的方法,其特征在于:该分析产生一个验证值(VH),其作为一系列值中的最后一个值而获得,它随着对该指令集中每一条分析指令(Inst.1-Inst.n)的分析的连续地改变,从而使包含该监控方法运行的内部状态以及跟踪它的变化成为可能。
17.如权利要求1到16中任一项所述的方法,其特征在于:该分析是自前一条指令(Inst.n-1)之后分别为考虑中的每一条指令(Inst.n)计算(40,42)在值(VHn)和结果(VHn-1)上进行一个操作的结果,其中(VHn)由所述的指令获得,而(VHn-1)是对前一条指令执行同一个操作所获得的结果。
18.如权利要求1到17中任一项所述的方法,其特征在于:该分析是从执行的最后一次初始化开始对由每条被监控指令获得的值循环应用一个散列函数f(VHn-1,Vinst.n)。
19.如权利要求1到17中任一项所述的方法,其特征在于:该分析是通过对自实现的最后一次初始化以来执行的所有操作码和地址执行一个冗余度计算,不一定加密,而使验证值发生改变。
20.如权利要求1到19中任一项所述的方法,其特征在于:该分析是当用作这个计算的相应指令的数据在这些指令执行期间获得时,通过计算连续的中间值来获得一个比较值(VCn)。
21.如权利要求1到19中任一项所述的方法,其特征在于:该分析包含步骤:当被监控的指令集(Inst.1-Inst.n)中的指令被执行时,保存从这些指令处获得的、为验证所必需的每个数据项;以及一旦必要的数据已经获得,就仅仅在必要的时间执行对来自于这些数据的验证值(VHn)的计算。
22.一种用于监控一段计算机程序中一系列指令(Inst.1-Inst.n)执行进程的设备,包含:装置(22-26)用于分析被送到处理器(4)的指令序列,其中该处理器(4)用于执行该正被监控的程序;以及装置(26)用于通过参照和上述程序一起记录的参考数据(Vref)来验证这个分析的结果(VCn)。
23.如权利要求22所述的设备,适于执行如权利要求1到21中任何一个所述的监控方法,其特征在于:它具有一个寄存器(24),用于记录由分析装置(26)实现的一个按链式计算的中间结果(VH)以便获得一个验证值(VHn)。
24.如权利要求23所述的设备,其特征在于:它包含装置用于在被监控的一段程序的执行期间、例如在该程序中的一个跳转发生时,允许在传送的一条指令(Inst.n+1)的控制下记录一个预定值或是寄存器(24)的复位。
25.如权利要求22到24中任何一个所述的设备,其特征在于:它包含:装置(60)用于计算在正被监控的程序中由分析装置(26)确定的异常事件的数目;以及装置用于如果这个数字达到一个预定阈值(VCthreshold)则使要被监控的该程序的将来使用无效。
26.如权利要求22到25中任何一个所述的设备,其特征在于:它被集成到包含要被监控的上述程序的一个被编程设备中,例如一个智能卡中。
27.如权利要求22到25中任何一个所述的设备,其特征在于:它被集成到一个程序执行设备(20)中。
28.一种程序执行设备(20),用于执行一段计算机程序中的一系列指令(Inst.1-Inst.n),其特征在于:它包含:装置(22-26),用于分析被传送用于执行的指令序列;以及装置,用于通过参考和被监控的程序一起记录的参考数据(Vref)来验证这个分析的结果。
29.如权利要求28所述的程序执行设备(20),适于执行如权利要求1到21中任何一个所述的方法。
30.一种包含了一系列记录指令(Inst.1-Inst.n)的被编程设备,其特征在于:它还包含预先确定的参考数据(Vref),作为一个被包含在上述指令中的数据函数,并用于允许对依据如权利要求1到21中任何一个分析的指令序列进行验证。
31.如权利要求30所述的设备,其特征在于:它是一个智能卡的形式。
32.如权利要求30或31所述的设备,其特征在于:参考数据(Vref)以一个预先布线的值或是固定在存储器中的值的形式被记录下来。
33.一种用于对一个依据权利要求30到32中任何一项被编程的设备进行编程的设备,其特征在于:它包含装置,用于在该程序的一指令序列(Inst.1-Inst.n)中,在至少一个预定存储单元处输入一个参考值(Vref),该参考值(Vref)是依据一种预先确定的方式从包含在一指令集每条指令内的数据计算出来的,希望它监控控制该指令集的执行。
34.一种用于解释一个关键代码的虚拟机或解释器,其特征在于:它执行如权利要求1到21中任何一个所述的方法用于这个关键代码的执行。
CN00807379A 1999-03-09 2000-01-24 用于监控程序流程的方法 Pending CN1350675A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9902924A FR2790844B1 (fr) 1999-03-09 1999-03-09 Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
FR99/02924 1999-03-09

Publications (1)

Publication Number Publication Date
CN1350675A true CN1350675A (zh) 2002-05-22

Family

ID=9542995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN00807379A Pending CN1350675A (zh) 1999-03-09 2000-01-24 用于监控程序流程的方法

Country Status (10)

Country Link
US (1) US7168065B1 (zh)
EP (1) EP1161725B1 (zh)
JP (1) JP4172745B2 (zh)
CN (1) CN1350675A (zh)
AT (1) ATE232616T1 (zh)
AU (1) AU3058900A (zh)
DE (1) DE60001393T2 (zh)
FR (1) FR2790844B1 (zh)
MX (1) MXPA01009056A (zh)
WO (1) WO2000054155A1 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053927A (zh) * 2010-12-29 2011-05-11 北京握奇数据系统有限公司 攻击监控方法及具有攻击监控功能的装置
CN102693148A (zh) * 2003-09-15 2012-09-26 英特尔公司 处理特许事件的多个虚拟机监控器的使用
CN102708013A (zh) * 2011-03-07 2012-10-03 英飞凌科技股份有限公司 程序语句控制的指令流控制
CN102722422A (zh) * 2011-03-23 2012-10-10 英飞凌科技股份有限公司 通过代码转换更新签名
CN103176863A (zh) * 2006-05-22 2013-06-26 英特尔公司 使用冗余虚拟机的错误检测
CN103455445A (zh) * 2012-05-31 2013-12-18 上海华虹集成电路有限责任公司 智能卡系统抵抗故障攻击的方法
CN101779210B (zh) * 2007-08-16 2014-03-05 西门子公司 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备
CN103718182A (zh) * 2011-08-09 2014-04-09 飞思卡尔半导体公司 电子器件和计算机程序产品
CN104573502A (zh) * 2013-10-23 2015-04-29 英飞凌科技股份有限公司 用于确保计算机程序的执行完整性的数据处理布置和方法
CN107533500A (zh) * 2015-04-15 2018-01-02 英赛瑟库尔公司 用于确保程序执行的方法
CN108646708A (zh) * 2018-05-02 2018-10-12 阳光电源股份有限公司 一种程序流监控方法及系统

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10148157B4 (de) * 2001-09-28 2006-05-18 Infineon Technologies Ag Programmgesteuerte Einheit
DE10156394A1 (de) * 2001-11-16 2003-06-12 Giesecke & Devrient Gmbh Kontrollierte Programmausführung durch einen tragbaren Datenträger
US20030149887A1 (en) * 2002-02-01 2003-08-07 Satyendra Yadav Application-specific network intrusion detection
US7533412B2 (en) 2002-04-23 2009-05-12 Stmicroelectronics S.A. Processor secured against traps
FR2841015A1 (fr) * 2002-06-18 2003-12-19 St Microelectronics Sa Controle d'execution d'un programme
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
EP1460546A1 (fr) * 2003-03-18 2004-09-22 SCHLUMBERGER Systèmes Procédé de sécurisation de l'exécution d'un programme dans un ensemble électronique contre les attaques par introduction d'erreurs
DE10340411B4 (de) 2003-09-02 2005-10-13 Infineon Technologies Ag Vorrichtung und Verfahren zur sicheren Ausführung eines Programms
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
JP4282472B2 (ja) * 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
FR2864655B1 (fr) 2003-12-31 2006-03-24 Trusted Logic Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution
DE102004007614A1 (de) * 2004-02-17 2005-09-01 Giesecke & Devrient Gmbh Datenträger mit Ablaufdiagnosespeicher
US7904775B2 (en) 2004-04-21 2011-03-08 Stmicroelectronics Sa Microprocessor comprising signature means for detecting an attack by error injection
WO2006009081A1 (ja) * 2004-07-16 2006-01-26 Matsushita Electric Industrial Co., Ltd. アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
US20060047955A1 (en) * 2004-08-30 2006-03-02 Axalto Inc. Application code integrity check during virtual machine runtime
US8364792B2 (en) * 2005-03-09 2013-01-29 Vudu, Inc. Method and system for distributing restricted media to consumers
US7873947B1 (en) * 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
FR2884000A1 (fr) * 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur
FR2883998A1 (fr) * 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant un circuit de detection d'un evenement
EP1717704A3 (fr) 2005-04-20 2011-07-20 St Microelectronics S.A. Protection du déroulement d'un programme exécuté par un circuit intégré
FR2886027A1 (fr) * 2005-05-20 2006-11-24 Proton World Internatinal Nv Detection d'erreur de sequencement dans l'execution d'un programme
WO2006136189A1 (de) * 2005-06-23 2006-12-28 Bayerische Motoren Werke Aktiengsellschaft Verfahren und vorrichtung zum überwachen eines unerlaubten speicherzugriffs einer rechenvorrichtung, insbesondere in einem kraftfahrzeug
FR2895814A1 (fr) * 2006-01-04 2007-07-06 Gemplus Sa Procede de securisation de l'execution d'un programme d'ordinateur
US7900060B2 (en) * 2006-02-17 2011-03-01 Vudu, Inc. Method and system for securing a disk key
US8239686B1 (en) * 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
DE102006021494A1 (de) * 2006-05-09 2007-11-15 Giesecke & Devrient Gmbh Verfahren und Vorrichtung zur Erkennung nichteindeutiger Hashwerte
EP2296108B1 (en) * 2006-06-15 2012-11-14 Kabushiki Kaisha Toshiba Portable electronic device and control method thereof
EP1870829B1 (en) 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
DE102006037810A1 (de) 2006-08-11 2008-02-14 Giesecke & Devrient Gmbh Sichere Programmcodeausführung
EP1923789A1 (fr) * 2006-11-16 2008-05-21 Nagracard S.A. Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
US7644322B2 (en) 2006-11-21 2010-01-05 Atmel Corporation Hardware flow control monitor
DE102006057297A1 (de) * 2006-12-05 2008-06-12 Giesecke & Devrient Gmbh Verfahren zur Überwachung des Ablaufs eines Programms
US8429623B2 (en) * 2007-01-16 2013-04-23 Oracle America Inc. Processing engine for enabling a set of code intended for a first platform to be executed on a second platform
EP2043017A1 (fr) * 2007-04-12 2009-04-01 Gemplus Procédé d'exécution sécurisée d'une application
FR2915007A1 (fr) * 2007-04-12 2008-10-17 St Microelectronics Sa Protection de l'execution d'un programme
CN101689233B (zh) * 2007-07-05 2013-01-02 Nxp股份有限公司 安全敏感系统中的微处理器
JP4661854B2 (ja) * 2007-11-09 2011-03-30 株式会社デンソー 検査システム及びプログラム
JP5060372B2 (ja) 2008-04-10 2012-10-31 ルネサスエレクトロニクス株式会社 データ処理装置
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
US8667352B2 (en) * 2008-05-27 2014-03-04 Freescale Semiconductor, Inc. Semiconductor device and method for validating a state thereof
JP5200664B2 (ja) * 2008-05-28 2013-06-05 大日本印刷株式会社 メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム
JP5200686B2 (ja) * 2008-06-18 2013-06-05 大日本印刷株式会社 情報処理装置、正常処理判別方法、及び情報処理プログラム
EP2262259A1 (en) 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
FR2958764B1 (fr) * 2010-04-07 2013-01-25 Proton World Int Nv Compteur d'evenements dans un systeme adapte au langage javacard
FR2970357B1 (fr) * 2011-01-07 2013-01-11 Oridao Dispositif et procede de tracage
US20120179898A1 (en) * 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
US8725644B2 (en) * 2011-01-28 2014-05-13 The Active Network, Inc. Secure online transaction processing
FR2977342A1 (fr) 2011-06-30 2013-01-04 Proton World Int Nv Verification d'integrite d'un programme execute par un circuit electronique
US8417609B2 (en) * 2011-08-19 2013-04-09 Bank Of America Corporation Methods and systems for modeling deposits' data
US8745594B1 (en) * 2013-05-10 2014-06-03 Technobasics Software Inc. Program flow specification language and system
CN103383566B (zh) * 2013-06-24 2015-10-28 奇瑞汽车股份有限公司 一种程序流监控方法
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
JP6318976B2 (ja) * 2014-08-22 2018-05-09 富士通株式会社 デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
EP3091437A1 (en) 2015-05-08 2016-11-09 Robert Bosch Gmbh Method and apparatus for monitoring a control flow of a computer program
WO2017183099A1 (ja) 2016-04-19 2017-10-26 三菱電機株式会社 中継装置
US10552413B2 (en) * 2016-05-09 2020-02-04 Sap Se Database workload capture and replay
CN105955115A (zh) * 2016-05-10 2016-09-21 重庆长安汽车股份有限公司 一种汽车整车控制器的程序流监控方法和装置
GB2550903B (en) * 2016-05-27 2019-06-12 Arm Ip Ltd Context data control
US10298702B2 (en) 2016-07-05 2019-05-21 Sap Se Parallelized replay of captured database workload
EP3279826A1 (en) * 2016-08-04 2018-02-07 Nagravision SA Sequence verification
US11467565B2 (en) * 2017-01-25 2022-10-11 Mitsubishi Electric Corporation Attack/abnormality detection device, attack/abnormality detection method, and attack/abnormality detection program
US10592528B2 (en) 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
CN107194258B (zh) * 2017-04-06 2019-10-01 珠海格力电器股份有限公司 监测代码漏洞的方法、装置及电子设备、存储介质
US10345801B2 (en) * 2017-08-21 2019-07-09 Honeywell International Inc. Ensuring a correct program sequence in a dual-processor architecture
US10698892B2 (en) 2018-04-10 2020-06-30 Sap Se Order-independent multi-record hash generation and data filtering
CN112055846A (zh) * 2018-07-31 2020-12-08 惠普发展公司,有限责任合伙企业 执行指令
US11144375B2 (en) * 2018-10-09 2021-10-12 Argo AI, LLC Execution sequence integrity parameter monitoring system
US11138085B2 (en) 2018-10-09 2021-10-05 Argo AI, LLC Execution sequence integrity monitoring system
CN111427723B (zh) * 2020-03-19 2023-05-30 阳光电源股份有限公司 基于AutoSAR的程序流监控方法及应用装置
US11709752B2 (en) 2020-04-02 2023-07-25 Sap Se Pause and resume in database system workload capture and replay
US11615012B2 (en) 2020-04-03 2023-03-28 Sap Se Preprocessing in database system workload capture and replay
KR20230144611A (ko) * 2021-04-06 2023-10-16 구글 엘엘씨 보안 암호화 코프로세서

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4266272A (en) * 1978-10-12 1981-05-05 International Business Machines Corporation Transient microcode block check word generation control circuitry
DE2855865C3 (de) * 1978-12-22 1981-11-19 Ibm Deutschland Gmbh, 7000 Stuttgart Verfahren und Einrichtung für eine elektronische Datenverarbeitungsanlage zur Prüfung der aus einer Instruktion abgeleiteten Steuersignale
CA2100576A1 (en) * 1991-01-18 1992-07-19 David Naccache Method and apparatus for access control and/or identification
US5347581A (en) * 1993-09-15 1994-09-13 Gemplus Developpement Verification process for a communication system
JP2000503154A (ja) * 1996-01-11 2000-03-14 エムアールジェイ インコーポレイテッド デジタル所有権のアクセスと分配を制御するためのシステム
DE69738810D1 (de) * 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
DE69713400T2 (de) * 1996-01-24 2002-10-31 Sun Microsystems Inc Prozessor mit Bereichsüberprüfung bei Matrixzugriffen
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6199181B1 (en) * 1997-09-09 2001-03-06 Perfecto Technologies Ltd. Method and system for maintaining restricted operating environments for application programs or operating systems
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US5991414A (en) * 1997-09-12 1999-11-23 International Business Machines Corporation Method and apparatus for the secure distributed storage and retrieval of information
US6279123B1 (en) * 1997-09-15 2001-08-21 Lucent Technologies, Inc. System for viewing and monitoring embedded processor operation
US6023764A (en) * 1997-10-20 2000-02-08 International Business Machines Corporation Method and apparatus for providing security certificate management for Java Applets
FR2776410B1 (fr) * 1998-03-20 2002-11-15 Gemplus Card Int Dispositifs pour masquer les operations effectuees dans une carte a microprocesseur
US6092120A (en) * 1998-06-26 2000-07-18 Sun Microsystems, Inc. Method and apparatus for timely delivery of a byte code and serialized objects stream
US6418420B1 (en) * 1998-06-30 2002-07-09 Sun Microsystems, Inc. Distributed budgeting and accounting system with secure token device access
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US6859533B1 (en) * 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US6402028B1 (en) * 1999-04-06 2002-06-11 Visa International Service Association Integrated production of smart cards
US6615264B1 (en) * 1999-04-09 2003-09-02 Sun Microsystems, Inc. Method and apparatus for remotely administered authentication and access control
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
US6327700B1 (en) * 1999-06-08 2001-12-04 Appliant Corporation Method and system for identifying instrumentation targets in computer programs related to logical transactions
AU6615600A (en) * 1999-07-29 2001-02-19 Foxboro Company, The Methods and apparatus for object-based process control
FR2804234B1 (fr) * 2000-01-24 2003-05-09 Gemplus Card Int Procede de protection contre le vol de la valeur d'authentification pour cartes a puce(s) multi-applications, cartes a puce(s) mettant en oeuvre le procede et terminaux susceptibles de recevoir lesdites cartes
US6557168B1 (en) * 2000-02-25 2003-04-29 Sun Microsystems, Inc. System and method for minimizing inter-application interference among static synchronized methods
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
CA2305249A1 (en) * 2000-04-14 2001-10-14 Branko Sarcanin Virtual safe
US6951018B2 (en) * 2000-05-30 2005-09-27 Sun Microsystems, Inc. Method and apparatus for efficiently tracking monitors
FR2809892B1 (fr) * 2000-05-31 2002-09-06 Gemplus Card Int Procede de protection contre la modification frauduleuse de donnees envoyees a un support electronique securise
FR2810481B1 (fr) * 2000-06-20 2003-04-04 Gemplus Card Int Controle d'acces a un moyen de traitement de donnees
US6862684B1 (en) * 2000-07-28 2005-03-01 Sun Microsystems, Inc. Method and apparatus for securely providing billable multicast data
CA2315449A1 (en) * 2000-08-10 2002-02-10 Ibm Canada Limited-Ibm Canada Limitee Generation of runtime execution traces of applications and associated problem determination
FR2814557B1 (fr) * 2000-09-27 2002-12-27 Gemplus Card Int Protection contre l'exploitation abusive d'une instruction dans une memoire

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693148B (zh) * 2003-09-15 2016-05-11 英特尔公司 处理特许事件的多个虚拟机监控器的使用
CN102693148A (zh) * 2003-09-15 2012-09-26 英特尔公司 处理特许事件的多个虚拟机监控器的使用
CN103176863B (zh) * 2006-05-22 2016-06-01 英特尔公司 使用冗余虚拟机的错误检测
CN103176863A (zh) * 2006-05-22 2013-06-26 英特尔公司 使用冗余虚拟机的错误检测
CN101779210B (zh) * 2007-08-16 2014-03-05 西门子公司 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备
CN102053927A (zh) * 2010-12-29 2011-05-11 北京握奇数据系统有限公司 攻击监控方法及具有攻击监控功能的装置
US10867028B2 (en) 2011-03-07 2020-12-15 Infineon Technologies Ag Program-instruction-controlled instruction flow supervision
US10515206B2 (en) 2011-03-07 2019-12-24 Infineon Technologies Ag Program-instruction-controlled instruction flow supervision
CN102708013B (zh) * 2011-03-07 2016-01-06 英飞凌科技股份有限公司 用于程序语句控制的指令流控制的设备、签名模块及方法
CN102708013A (zh) * 2011-03-07 2012-10-03 英飞凌科技股份有限公司 程序语句控制的指令流控制
CN102722422A (zh) * 2011-03-23 2012-10-10 英飞凌科技股份有限公司 通过代码转换更新签名
CN102722422B (zh) * 2011-03-23 2015-08-26 英飞凌科技股份有限公司 通过代码转换更新签名
CN103718182A (zh) * 2011-08-09 2014-04-09 飞思卡尔半导体公司 电子器件和计算机程序产品
CN103718182B (zh) * 2011-08-09 2016-11-23 飞思卡尔半导体公司 电子器件和计算机程序产品
CN103455445A (zh) * 2012-05-31 2013-12-18 上海华虹集成电路有限责任公司 智能卡系统抵抗故障攻击的方法
CN104573502B (zh) * 2013-10-23 2018-11-13 英飞凌科技股份有限公司 用于确保计算机程序的执行完整性的数据处理布置和方法
CN104573502A (zh) * 2013-10-23 2015-04-29 英飞凌科技股份有限公司 用于确保计算机程序的执行完整性的数据处理布置和方法
CN107533500A (zh) * 2015-04-15 2018-01-02 英赛瑟库尔公司 用于确保程序执行的方法
CN108646708A (zh) * 2018-05-02 2018-10-12 阳光电源股份有限公司 一种程序流监控方法及系统

Also Published As

Publication number Publication date
DE60001393D1 (de) 2003-03-20
FR2790844B1 (fr) 2001-05-25
AU3058900A (en) 2000-09-28
EP1161725B1 (fr) 2003-02-12
FR2790844A1 (fr) 2000-09-15
DE60001393T2 (de) 2003-12-11
JP2002539523A (ja) 2002-11-19
ATE232616T1 (de) 2003-02-15
WO2000054155A1 (fr) 2000-09-14
US7168065B1 (en) 2007-01-23
EP1161725A1 (fr) 2001-12-12
JP4172745B2 (ja) 2008-10-29
MXPA01009056A (es) 2002-04-24

Similar Documents

Publication Publication Date Title
CN1350675A (zh) 用于监控程序流程的方法
RU2497189C2 (ru) Система и способ для обнаружения вредоносных программ
CN101281459B (zh) 受保护的功能调用
US7934197B2 (en) Maintaining code integrity in a central software development system
CN100483434C (zh) 病毒识别方法及装置
US20130160127A1 (en) System and method for detecting malicious code of pdf document type
US20120317421A1 (en) Fingerprinting Executable Code
KR101687439B1 (ko) 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법
US20030120938A1 (en) Method of securing software against reverse engineering
EP1505470A2 (en) Terminal application generation apparatus and application authentication method
CN103020495B (zh) 一种嵌入式软件防盗版加密方法
CN1609811A (zh) 向具有高保证执行环境的系统提供安全输入
CN1933647A (zh) 外部存储器管理装置和外部存储器管理方法
CN106778247B (zh) 应用程序动态分析的方法及装置
CN1754178A (zh) 用于非接触ic卡的通信系统和通信方法
CN109284585B (zh) 一种脚本加密方法、脚本解密运行方法和相关装置
US20110271350A1 (en) method for protecting software
CN103065072A (zh) 提高Java软件破解难度的方法及装置、版权验证方法
CN104657259B (zh) 一种测试Android应用程序的方法和装置
CN106874758B (zh) 一种识别文档代码的方法和装置
JP2021515314A (ja) コンパイルデバイス及び方法
JP4664055B2 (ja) プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
EP2264635A1 (en) Software resistant against reverse engineering
CN102004885B (zh) 一种软件保护方法
CN112784290B (zh) 数据导出工具安全性分析方法及系统及数据导出方法

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication