CN101779210A - 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备 - Google Patents

用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备 Download PDF

Info

Publication number
CN101779210A
CN101779210A CN200880103333.XA CN200880103333A CN101779210A CN 101779210 A CN101779210 A CN 101779210A CN 200880103333 A CN200880103333 A CN 200880103333A CN 101779210 A CN101779210 A CN 101779210A
Authority
CN
China
Prior art keywords
program
flow label
control flow
instruction
value
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.)
Granted
Application number
CN200880103333.XA
Other languages
English (en)
Other versions
CN101779210B (zh
Inventor
B·迈耶
M·沙夫休特尔
H·瑟谢克
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of CN101779210A publication Critical patent/CN101779210A/zh
Application granted granted Critical
Publication of CN101779210B publication Critical patent/CN101779210B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种用于保护程序以防控制流操纵的方法,其中用于产生和检验控制流标记序列的保护程序指令被插入到该程序的至少一个包含程序指令的程序指令序列中。

Description

用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备
技术领域
本发明涉及一种用于保护程序以防控制流操纵的方法和设备,并且用于检测有错误的程序运行过程。
背景技术
在任意硬件上运行的安全关键的程序应用中,存在如下危险:攻击者试图通过外部影响有针对性地干扰实施程序应用的硬件并且由此改变正常的程序运行过程。在加密过程中,对程序运行过程的改变足以提取在正常条件下被安全地存储在硬件中的密钥,并且足以因此有损于加密系统。
图1用于图示本发明所基于的问题。
图1示出了常规的数据处理系统中的口令输入的流程图。首先,用户被要求输入口令。在进行了口令输入之后,由该数据处理系统检查该口令的正确性。如果该口令正确,则允许接入该数据处理系统的资源。在口令有错误的情况下,拒绝数据存取。
在图1中被示为流程图的程序例如在用于执行(Abarbeitung)以任意程序语言编写的程序指令的处理器中被实施。如果进行对硬件平台或处理器的攻击,则攻击者可以在用于检验口令的程序指令被执行的那个时刻实现:操纵该程序的程序流来使得尽管口令输入有错误仍然通过数据处理单元允许数据存取,也就是说,程序流错误地分支。
例如,攻击者可以借助于激光闪光(Laserblitzen)有针对性地在时间上和在空间上干扰各个指令或程序指令的执行,使得所实施的程序的控制流被变更。在此,例如各个转移指令可被中断,或者对子程序的调用也可被中断。
另一攻击可能性在于引起所计算的中间结果的改变。
发明内容
因而,本发明的任务是提供一种用于保护程序以防控制流操纵以及用于检测有错误的程序运行过程的方法和设备。
本发明提供了一种用于保护程序以防控制流操纵的方法,其中用于产生和检验控制流标记序列的保护程序指令被插入到该程序的至少一个包含程序指令的程序指令序列中。
在根据本发明的方法的实施形式中,控制流标记序列的控制流标记由数字、随机数、计数值、程序指令的指令操作码、程序指令的指令地址、程序指令的操作数或者由程序指令计数器的计数值构成。
在根据本发明的方法的实施形式中,保护程序指令或者保护程序指令序列根据控制流标记序列来计算检查值(Prüfwert)。
在根据本发明的方法的实施形式中,在直到该时刻为止所产生的控制流标记序列的具有恒定长度的部分上构成该检查值。
在根据本发明的方法的可替换的实施形式中,在直到该时刻为止所产生的整个控制流标记序列上构成检查值。
在根据本发明的方法的实施形式中,检查值由哈希值构成。
在根据本发明的方法的实施形式中,保护程序指令或者保护程序指令序列将所计算的检查值与参考控制流标记序列的参考值进行比较或者检查:所计算的检查值是否被包含在多个参考值中。
在根据本发明的方法的实施形式中,参考值由参考值哈希值构成。
此外,本发明还提供了一种用于保护程序以防控制流操纵的设备,其中用于产生和检验控制流标记序列的保护程序指令被自动插入到该程序的至少一个包含程序指令的程序指令序列中。
此外,本发明还提供了一种用于检测程序的有错误的程序运行过程的方法,其具有步骤:
-在该程序的程序运行过程期间产生控制流标记序列,以及
-如果所产生的控制流标记序列与所存储的参考控制流标记序列不一致,或者如果所产生的控制流标记序列并不被包含在多个所存储的参考控制流标记序列中,则检测到有错误的程序运行过程。
在根据本发明的用于检测有错误的程序运行过程的方法的实施形式中,控制流标记序列包含在所有情况下由数字、随机数、计数值、指令操作码、指令地址、操作数或者由程序指令计数器的指令计数值构成的控制流标记。
在根据本发明的方法的实施形式中,如果所计算的检查值与所计算的参考值不一致,或者如果所计算的检查值并不被包含在多个所计算的参考值中,则有错误的程序运行过程被检测到。
此外,本发明还提供了一种用于检测程序的有错误的程序运行过程的设备,其具有:
-用于在该程序的程序运行过程期间产生控制流标记序列的装置,以及
-用于在所产生的控制流标记序列与所存储的参考控制流标记序列不一致时或者在所产生的控制流标记序列并不被包含在多个所存储的参考控制流标记序列中时检测程序的有错误的程序运行过程的装置。
此外,本发明还提供了一种计算机程序,该计算机程序具有为了防止控制流操纵而被插入的保护程序指令,所述保护程序指令被设置用于产生和检验控制流标记序列。
在根据本发明的计算机程序的实施形式中,控制流标记序列的控制流标记在所有情况下由数字、随机数、计数值、指令操作码、指令地址、操作数或者由指令计数值构成。
此外,本发明还提供了一种用于存储计算机程序的数据载体,所述计算机程序具有为了防止控制流操纵而被插入的保护程序指令,所述保护程序指令被设置用于产生和检验控制流标记序列。
附图说明
下面,参考附图来说明用于保护程序以防控制流操纵以及用于检测有错误的程序运行过程的根据本发明的方法和根据本发明的设备的实施形式。
图1示出了用于解释本发明所基于的问题的流程图;
图2示出了用于图示根据本发明的用于保护程序以防控制流操纵以及用于检测有错误的程序运行过程的可能的行为方式的流程图;
图3示出了要保护的程序的控制流的例子;
图4示出了图3中示例性示出的程序的控制流图;
图5示出了按照根据本发明的方法的实施形式的参考控制流标记序列的生成的例子;
图6示出了用于阐述根据本发明的方法的工作方式的在出现错误的情况下的控制流标记序列的例子;
图7示出了用于阐述根据本发明的方法的工作方式的在出现错误的情况下的控制流标记序列的另一例子;
图8示出了用于图示按照根据本发明的方法所保护的计算程序的代码列表。
具体实施方式
图2示出了根据本发明的用于保护程序以防控制流操纵以及用于检测程序的有错误的程序运行过程的方法中的基本行为方式。
首先,未受保护的程序被读入。该程序包含多个程序指令,所述程序指令由硬件根据控制流来执行。该硬件例如包含微处理器。该程序的控制流除了具有要顺序执行的程序部分之外还具有程序分支。
图3示出了示例性的计算机程序的流程图,所述计算机程序包含多个程序步骤S1至S9。图3中所示的程序步骤S1至S9中的每个程序步骤都包括一个或更多要执行的程序指令。图4是与图3中所示的流程图相关联的控制流图。如从图3、4中可以认识到的那样,所示出的实例程序具有更多程序分支S3、S4、S6。在图4中,按照图3的程序的控制流被示为有向图。该计算机程序包含要顺序经过的程序部分以及包含表示程序分支的节点,所述要顺序经过的程序部分被示为该图的棱边(Kante)。因而,对程序的特定的实施可以被示为该控制流图内的路径。根据本发明的方法允许在实施程序之后确定:该程序在其实施期间已经经过了哪条路径。
如图2所示,为了实现这一点,原始的未受保护的计算机程序首先被转换成受保护的程序。在此,为了保护该程序以防控制流操纵,该未受保护的程序通过如下方式被转换:用于产生和检验控制流标记序列的保护程序指令(S-PB)被插入到未受保护的程序的至少一个包含程序指令PB的程序指令序列中。
因此,为了确定该程序的实施路径,测试点或控制流标记被插入到顺序实施的程序部分中,所述顺序实施的程序部分对应于该控制流图的棱边。在此,在一种实施形式中,在每个顺序实施的程序部分中插入至少一个测试点或控制流标记。
所插入的控制流标记可以是数字、随机数、计数值、程序指令的指令操作码、程序指令的指令地址、程序指令的操作数或者程序指令计数器的计数值。所插入的测试点或标记可以例如被简单地连续编号。此外,在测试点上当前被插入的指令的地址可被用作标记。此外还可能把所实施的程序指令或指令本身或者其操作数用作标记。此外还可能在制订该程序期间随机地生成标记。
在根据本发明的用于保护程序以防控制流操纵的方法的实施形式中,被插入到该程序的原始程序指令序列中的保护程序指令或者保护程序指令序列根据所述控制流标记序列计算出检查值。在此,在每个测试点上执行对检查值的计算,该计算与先前的测试点的至少一个标记有关。所计算的检查值例如可以由哈希值构成。
在根据本发明的方法的实施形式中,针对直到该时刻为止所产生的整个控制流标记序列构成检查值。
在根据本发明的用于保护程序以防控制流操纵的方法的可替换的实施形式中,在直到该时刻为止所产生的控制流标记序列的具有恒定长度的部分上构成检查值。
在根据本发明的用于保护程序以防控制流操纵的方法的实施形式中,所插入的保护程序指令或者保护程序指令序列S-PB将所计算的检查值(其例如包含哈希值)与参考控制流标记序列的参考值进行比较。如果所计算的检查值与该参考值一致,则很大可能以正确的次序经过程序部分的计算机程序的实施路径。如果所计算的检查值与该参考值不一致,则很大可能该程序的实施错误存在。
在根据本发明的用于保护程序以防控制流操纵的方法的可能的实施形式中,保护程序指令或者保护程序指令序列检查:所计算的检查值是否被包含在多个预给定的参考值中。所述参考值例如可以是参考哈希值。
根据所使用的用于计算检查值的方法,可以局部地验证程序的部分实施路径。
在根据本发明的方法的实施形式中,所计算的检查值与固定数目的紧接在前面经过的测试点有关。
在根据本发明方法的可替换的实施形式中,检查值与到现在为止所经过的整个实施路径的标记有关。如果程序的到现在为止的整个实施路径被检验,则得到以下优点:对应用中的控制流的验证遍布许多测试点。因此,借助于被精确调整的攻击试图绕过检查值与参考值的各个比较的攻击也很大可能在另外的测试点上被检测到。
通过插入保护程序指令S-PB而被保护的程序使得在运行程序期间能够检测到对程序控制流的操纵。
为此,在受保护的含有被插入的保护程序指令的计算机程序的运行期间,在程序运行过程期间产生控制流标记序列。
如果在此所产生的控制流标记序列与所存储的参考控制流标记序列并不一致,或者如果所产生的控制流标记序列并不被包含在多个事先所存储的参考控制流标记序列中,则有错误的程序运行过程被检测到。
图5示出了用于阐述根据本发明的方法的简单的计算机程序的控制流图。该计算机程序是简单的循环。只要计数值i<5,则进行特定的计算。该控制流图的棱边是要顺序执行的程序部分,而节点对应于程序分支。
在正常情况下,在没有操纵的情况下,棱边A、B、C以相关联的下列参考控制流标记序列而被执行:AB AB AB AB AB C。
这意味着,包含棱边AB的循环被经过五次,并且接着通过棱边C跳转到该程序的结尾。每个程序或每个程序部分都具有可确定的表示正确的程序运行过程的参考控制流标记序列。
图6示出了在第三次经过图5中所示的程序循环时出现错误F1的情况下的控制流标记序列。
在出现错误F1的情况下的控制流标记序列为:AB AB AB C。
图7示出了在第三次迭代(i=3)中的循环结尾处出现错误F2的情况下的控制流标记序列。在出现错误F2的情况下,该控制流标记序列为:AB AB A。
如能从图6、7中的例子中认识到的那样,在计算机程序的程序分支上出现的每个错误F都具有典型的或表征性的控制流标记序列,所述控制流标记序列偏离于无错误运行的程序的参考控制流标记序列。
因而,在根据本发明的方法中,为了进行错误检测而将保护程序指令S-PB插入到原始计算机程序的程序代码中。
图8示意性地示出了利用保护程序指令S-PB而被保护的计算机程序,该计算机程序被保护以防控制流操纵。程序计数器(Programm-Counter)PC指向要执行的程序指令PB。在测试点上,保护程序指令被插入到该程序运行过程中。所述保护程序指令S-PB例如根据控制流标记序列来计算检查值。在图8中所示的例子中,保护程序指令S-PB-1根据包含多个控制流标记的控制流标记序列来计算哈希值作为检查值。在图8中所示的例子中,所述控制流标记包含在前的程序指令PC1至PCi的程序计数器PC的程序指令计数值。
在另一测试点上设置有另一保护程序指令S-PB2,所述另一保护程序指令S-PB2同样根据控制流标记来计算哈希值作为检查值。在所述第二保护程序指令S-PB2的情况下,所述控制流标记同样由在前的程序指令的程序指令计数值PC构成(PCi+1…PCj)。
另一保护程序指令S-PB 3将通过第一保护程序指令S-PB1所确定的和存储的检查值、即哈希值HASH1与参考值HASH1-REF进行比较。此外,第三保护程序指令S-PB3将通过第二保护程序指令S-PB2所计算的检查值HASH2与参考值HASH2-REF进行比较。
在图8中所示的实施例中,保护程序指令S-PB3将所计算的检查值与参考控制流标记序列的参考值进行比较。
在可替换的实施形式中可以检查:所计算的检查值、例如HASH1、HASH2是否被包含在多个预给定的所存储的参考值中。
在根据本发明的方法的可能的实施形式中,由保护程序指令针对直到该时刻为止所产生的整个控制流保护序列构成检查值。
在根据本发明的方法的可替换的实施形式中,在直到该时刻为止所产生的控制流标记序列的具有恒定长度的部分上构成检查值。程序指令PB例如可以由汇编程序语言形式的程序指令或者程序指令序列构成。
CPU内的程序指令计数器或程序计数器PC指向程序存储器的其上存放有下一要执行的程序指令的存储器地址。
例如,用于将变量的值X存储在寄存器R1中的汇编程序指令的例子是:
MOV R1,X。
该程序指令具有指令操作码MOV以及操作数。
当前在测试点上被插入的指令或程序指令的地址例如可被用作标记。可替换地,也可能使用程序指令或指令本身和/或程序指令的参数。例如,如果使用程序计数器的地址,则检查值可以在使用子程序调用的情况下被计算出,因为在执行子程序调用时,程序计数器的当前值通常被置于微控制器的栈上。如果根据本发明的方法被应用于如下程序:该程序在其运行时间期间被移位并且因而测试点在程序制定时不具有固定地址,则对程序计数器的地址的计算可以相对于固定点、例如相对于所实施的程序的开始处或者相对于所实施的程序的结尾处来进行。
如果与指令或程序指令或者其地址无关地确定测试点的标记,则也能相对简单地在程序制定时预先计算相关联的检查值。此外,在一种实施形式中可能给不同的测试点配备有相同的标记,并且通过这种方式使得可以对于所描述的行为方式来区分相应的相关联的顺序的程序部分。
在根据本发明的方法的其中地址和/或程序指令或指令被用作控制流标记的实施形式中,对检查值的确定更复杂,因为具体值随着程序的每次变化或者随着由开发工具的汇编器或者编译器进行的每个翻译过程而变化,并且因而必须被匹配。
在根据本发明的方法的可能的实施形式中,所插入的保护程序指令计算哈希值作为检查值。哈希函数或所计算的哈希值的哈希函数对冲突具有足够的抵抗力。在此,所述哈希函数被选择为使得确保不同测试点的检查值的冲突是足够罕见的。这使得能够区分测试点的经过。
在根据本发明的方法的可能的实施形式中,计算检查值,所述检查值局部地验证该程序的所经过的实施路径中的仅仅一部分。例如,恒定数目的最后所经过的标记可以被暂存,并且可以仅仅对于这些被暂存的标记进行对检查值的计算。然后,所暂存的标记或控制流标记在程序实施期间像窗那样在该程序的到现在为止所经过的实施路径的标记上推动。
在其它的实施变型方案或实施例中,在同时包含有硬件或执行程序指令的微处理器的情况下例如采用硬件计数器,所述硬件计数器与所实施的指令无关地对微处理器的时钟周期同时进行计数。
在根据本发明的方法的实施形式中,这种硬件计数器在该程序实施的开始时被初始化,并且接着该硬件计数器在实施应用或计算机程序期间被允许自由运转,其中当前的计数器读数在计算检查值的时刻被用作控制流标记。在一种实施形式中,需要微控制器的不同指令或程序指令的实施时间是恒定的,以便获得不同程序运行的可再现的计数器读数。除此之外,在所述实施形式中,计算机程序或软件允许不具有拥有非确定性的副作用的程序部分,诸如向端口轮询外部结果的中断例程或者程序部分。除此之外,在该实施形式中,需要应用或程序的控制流图的不同的顺序经过的程序部分或分段拥有不同的运行时间,或者至少对在不同的顺序经过的分段或程序部分中的检查值的计算在对于相应的计数器读数的不同时刻发生,以便也可以通过所计算的检查值来区分顺序分段或程序部分,并且可以可靠地检测到错误攻击。
根据本发明的方法执行对受保护的程序的实施路径的直接验证。在此,防止程序的程序实施中的错误的保护被耦合到该应用或该程序处理的数据上。根据本发明的方法与由应用所计算出的数据中的冗余无关,而且也与所计算的中间结果无关。
根据本发明的用于保护程序以防控制流操纵以及用于检测程序的有错误的程序运行过程的方法尤其是具有如下优点:用于保护程序的保护程序指令也可以在事后被集成到或被自动插入到已有的程序或应用中。因此,仅必须已知各个程序的控制流图。因而,在一种实施形式中,为了实施保护措施,在所期望的测试点上插入保护程序指令或者插入用于计算和验证检查值的合适子程序的调用就足以。
与通过所存储的数据内的冗余或通过所计算的中间结果的不变量的常规的保护机制不同,根据本发明的方法的另一优点在于:试图改变循环实施的数目以便由此操纵所计算的中间结果的攻击也可以被可靠地检测到。
根据本发明的方法的另一优点在于:为了插入保护程序指令,不同安全等级是可伸缩的,或在该方法中可以考虑要保护的应用或要保护的程序的安全需求。根据所使用的硬件和错误模型,通过所使用的控制流标记和检查值的类型和大小以及通过用于计算检查值的方法能调节检测到程序的控制流中的错误的概率。次外,还能采用产生不规则的随机出现的检查值的序列的方法,所述检查值序列比例如循环计数器更难以被攻击操纵。
根据本发明的方法尤其适于保护加密算法的实施以防错误攻击。为了抑制对加密算法的实施时间进行流分析(Stromanalysen)和分析,所述加密算法通常被实施为使得所述实施既不拥有与数据有关的分支也不拥有与数据有关的实施时间。因而,在这种实施方式中,实施路径仅仅与输入数据的长度有关,并且与输入数据的具体值无关。因而,这样的算法具有固定的实施路径,所述固定的实施路径利用根据本发明的方法可容易地验证。
根据本发明的方法允许通过稍微改变软件或程序来确保要保护的应用和该程序的正确控制流。受保护的程序能够很大可能独立地验证:以正确的次序实施对于正确的程序实施需要的或相关的所有程序部分。此外,可以确保经过具有正确数目的程序循环。根据本发明的方法保护程序尤其是以防如下攻击:所述攻击试图干扰或者阻碍循环、跳转或者子程序调用的实施。

Claims (20)

1.一种用于保护程序以防控制流操纵的方法,
其中,用于产生和检验控制流标记序列的保护程序指令(S-PB)被插入到该程序的至少一个包含程序指令(PB)的程序指令序列中。
2.根据权利要求1所述的方法,
其中,所述控制流标记序列的控制流标记由数字、随机数、计数值、程序指令的指令操作码、程序指令的指令地址、程序指令(PB)的操作数或者程序指令计数器的计数值构成。
3.根据权利要求1所述的方法,
其中,保护程序指令(S-PB)根据控制流标记序列来计算检查值。
4.根据权利要求3所述的方法,
其中,在直到所述时刻为止所产生的控制流标记序列的具有恒定长度的部分上构成检查值。
5.根据权利要求3所述的方法,
其中,在直到所述时刻为止所产生的整个控制流标记序列上构成检查值。
6.根据权利要求3所述的方法,
其中,检查值由哈希值(HASH)构成。
7.根据权利要求3所述的方法,
其中,保护程序指令(S-PB)将所计算的检查值与参考控制流标记序列的参考值进行比较或者检查:所计算的检查值是否被包含在多个参考值中。
8.根据权利要求7所述的方法,
其中,参考值由参考哈希值(HASH-REF)构成。
9.一种用于保护程序以防控制流操纵的设备,
其中,用于产生和检验控制流标记序列的保护程序指令(S-PB)被自动插入到该程序的至少一个包含程序指令(PB)的程序指令序列中。
10.一种用于检测程序的有错误的程序运行过程的方法,其具有下列步骤:
(a)在该程序的程序运行过程期间产生控制流标记序列;
(b)如果所产生的控制流标记序列与所存储的参考控制流标记序列不一致,或者如果所产生的控制流标记序列并不被包含在多个所存储的参考控制流标记序列中,则检测到有错误的程序运行过程。
11.根据权利要求10所述的方法,
其中,控制流标记序列包含控制流标记,所述控制流标记在所有情况下由数字、随机数、计数值、指令操作码、指令地址、操作数或者由指令计数值构成。
12.根据权利要求10所述的方法,
其中,根据所产生的控制流标记序列来计算检查值。
13.根据权利要求12所述的方法,
其中,检查值由哈希值(HASH)构成。
14.根据权利要求10所述的方法,
其中,根据参考控制流标记序列来计算参考值。
15.根据权利要求10所述的方法,
其中,参考值由参考哈希值(HASH-REF)构成。
16.根据权利要求12和13所述的方法,
其中,如果所计算的检查值与所计算的参考值不一致,或者如果所计算的检查值并不被包含在多个所计算的参考值中,则有错误的程序运行过程被检测到。
17.一种用于检测程序的有错误的程序运行过程的设备,其具有:
a)用于在该程序的程序运行过程期间产生控制流标记序列的装置;
b)用于在所产生的控制流标记序列与所存储的参考控制流标记序列不一致时或者在所产生的控制流标记序列并不被包含在多个所存储的参考控制流标记序列中时检测程序的有错误的程序运行过程的装置。
18.一种计算机程序,其具有为了防止控制流操纵而被插入的保护程序指令,所述保护程序指令被设置用于产生和检验控制流标记序列。
19.根据权利要求18所述的计算机程序,
其中,控制流标记序列的控制流标记在所有情况下由数字、随机数、计数值、指令操作码、指令地址、操作数或者由指令计数值构成。
20.一种用于存储根据权利要求18所述的计算机程序的数据载体。
CN200880103333.XA 2007-08-16 2008-07-10 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备 Active CN101779210B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE200710038763 DE102007038763A1 (de) 2007-08-16 2007-08-16 Verfahren und Vorrichtung zur Sicherung eines Programms gegen eine Kontrollflussmanipulation und gegen einen fehlerhaften Programmablauf
DE102007038763.8 2007-08-16
PCT/EP2008/058980 WO2009021789A1 (de) 2007-08-16 2008-07-10 Verfahren und vorrichtung zur sicherung eines programms gegen eine kontrollflussmanipulation und gegen einen fehlerhaften programmablauf

Publications (2)

Publication Number Publication Date
CN101779210A true CN101779210A (zh) 2010-07-14
CN101779210B CN101779210B (zh) 2014-03-05

Family

ID=39790842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880103333.XA Active CN101779210B (zh) 2007-08-16 2008-07-10 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备

Country Status (5)

Country Link
US (1) US8843761B2 (zh)
EP (1) EP2188755B1 (zh)
CN (1) CN101779210B (zh)
DE (1) DE102007038763A1 (zh)
WO (1) WO2009021789A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722422A (zh) * 2011-03-23 2012-10-10 英飞凌科技股份有限公司 通过代码转换更新签名
CN104461464A (zh) * 2013-09-20 2015-03-25 威盛电子股份有限公司 用于微处理器的动态重设方法
CN107463513A (zh) * 2016-06-02 2017-12-12 卡巴斯基实验室股份制公司 在存储位置之间转移控制的系统和方法

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8302210B2 (en) * 2009-08-24 2012-10-30 Apple Inc. System and method for call path enforcement
DE102010019995A1 (de) * 2010-05-10 2011-11-10 Giesecke & Devrient Gmbh Verfahren zum Überprüfen, ob Programmanweisungen von einem tragbaren Endgerät ausgeführt wurden
RU2454714C1 (ru) * 2010-12-30 2012-06-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения эффективности обнаружения неизвестных вредоносных объектов
US9501383B2 (en) 2013-02-26 2016-11-22 Dominique Bolignano Method for securing a program
US9721120B2 (en) 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
US9275236B2 (en) 2013-06-28 2016-03-01 Dominique Bolignano Method for securing a program
KR101568872B1 (ko) * 2015-05-11 2015-11-12 주식회사 블랙포트시큐리티 프로그램 이상흐름 검출 장치 및 방법
DE102016200850A1 (de) 2016-01-21 2017-07-27 Siemens Aktiengesellschaft Verfahren zum Betreiben einer sicherheitsrelevanten Vorrichtung und Vorrichtung
DE102016200907A1 (de) 2016-01-22 2017-07-27 Siemens Aktiengesellschaft Verfahren zum Betreiben einer sicherheitsrelevanten Vorrichtung und Vorrichtung
DE102016201176A1 (de) 2016-01-27 2017-07-27 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Erzeugen von Zufallsbits
CN108351770B (zh) 2016-02-09 2020-02-28 西门子公司 用于安全地实施程序命令的方法和实施环境
DE102016203534A1 (de) 2016-03-03 2017-09-07 Siemens Aktiengesellschaft Verfahren und Analysemodul zur Überprüfung von verschlüsselten Datenübertragungen
DE102016205289A1 (de) 2016-03-31 2017-10-05 Siemens Aktiengesellschaft Verfahren, Prozessor und Gerät zur Integritätsprüfung von Nutzerdaten
DE102016207294A1 (de) 2016-04-28 2017-11-02 Siemens Aktiengesellschaft Verfahren und Zertifikatspeicher zur Zertifikatsverwaltung
DE102016207635A1 (de) 2016-05-03 2017-11-09 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Absicherung von Gerätezugriffen
DE102016207642A1 (de) 2016-05-03 2017-11-09 Siemens Aktiengesellschaft Verfahren und Vorrichtungen zum Authentisieren eines Datenstroms
EP3252990A1 (de) 2016-06-03 2017-12-06 Siemens Aktiengesellschaft Verfahren und vorrichtung zum bereitstellen eines geheimnisses zum authentisieren eines systems und/oder komponenten des systems
DE102016219926A1 (de) 2016-10-13 2018-04-19 Siemens Aktiengesellschaft Verfahren, Sender und Empfänger zum Authentisieren und zum Integritätsschutz von Nachrichteninhalten
DE102016221301A1 (de) 2016-10-28 2018-05-03 Siemens Aktiengesellschaft Verfahren und Geräte zum Bereitstellen einer Senderidentifizierungsnachricht für einen Sender
US10503902B2 (en) * 2017-03-08 2019-12-10 Intel Corporation System, apparatus and method for detecting a data-oriented programming attack
FR3065095B1 (fr) * 2017-04-11 2019-06-28 Centre National De La Recherche Scientifique Procede d'execution d'un code machine d'une fonction securisee
EP3413530B1 (de) 2017-06-09 2019-07-31 Siemens Aktiengesellschaft Verfahren und vorrichtung zum austauschen von nachrichten
EP3435272B1 (de) 2017-07-27 2020-11-04 Siemens Aktiengesellschaft Verfahren und vorrichtung zur identifikation eines additiv gefertigten werkstücks
DE102017223099A1 (de) 2017-12-18 2019-06-19 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Übertragen von Daten zwischen einem ersten und einem zweiten Netzwerk
EP3503493A1 (de) 2017-12-22 2019-06-26 Siemens Aktiengesellschaft Kommunikationsvorrichtung und verfahren zum verarbeiten eines netzwerkpakets
EP3502806A1 (de) 2017-12-22 2019-06-26 Siemens Aktiengesellschaft Verfahren zum schutz der produktionsdaten zur herstellung eines produkts
EP3506143B1 (en) 2017-12-27 2024-02-14 Siemens Aktiengesellschaft Interface for a hardware security module
EP3509004A1 (en) 2018-01-03 2019-07-10 Siemens Aktiengesellschaft Adaption of mac policies in industrial devices
EP3509247A1 (de) 2018-01-03 2019-07-10 Siemens Aktiengesellschaft Verfahren und schlüsselgenerator zum rechnergestützten erzeugen eines gesamtschlüssels
EP3514743A1 (en) 2018-01-22 2019-07-24 Siemens Aktiengesellschaft Device and method for providing instruction data for manufacturing an individualized product
EP3534282A1 (de) 2018-03-01 2019-09-04 Siemens Aktiengesellschaft Verfahren und sicherheitsmodul zum rechnergestützten ausführen von programmcode
EP3557463B1 (de) 2018-04-16 2020-10-21 Siemens Aktiengesellschaft Verfahren und ausführungsumgebung zum ausführen von programmcode auf einem steuergerät
EP3562194B1 (en) 2018-04-23 2021-07-28 Siemens Aktiengesellschaft Method for identifying at least one network slice configuration of a mobile network, communication system, and automation system
EP3561709B1 (en) 2018-04-25 2020-07-29 Siemens Aktiengesellschaft Data processing apparatus, system, and method for proving or checking the security of a data processing apparatus
EP3562090B1 (en) 2018-04-25 2020-07-01 Siemens Aktiengesellschaft Data processing device for processing a radio signal
EP3561713B1 (en) 2018-04-25 2022-07-13 Siemens Aktiengesellschaft Retrieval device for authentication information, system and method for secure authentication
EP3562116A1 (en) 2018-04-26 2019-10-30 Siemens Aktiengesellschaft Cryptographic key exchange or key agreement involving a device without network access
EP3570489B1 (en) 2018-05-18 2020-04-08 Siemens Aktiengesellschaft Device and method for transforming blockchain data blocks
DK3584654T3 (da) 2018-06-19 2020-08-10 Siemens Ag Hierarkisk fordelt ledger
EP3598364A1 (en) 2018-07-17 2020-01-22 Siemens Aktiengesellschaft Timing constraint for transactions of a distributed database system
EP3598365A1 (en) 2018-07-17 2020-01-22 Siemens Aktiengesellschaft Traffic shaping for transactions of a distributed database system
EP3598363A1 (en) 2018-07-17 2020-01-22 Siemens Aktiengesellschaft Resource reservation for transactions of a distributed database system
EP3599740A1 (de) 2018-07-25 2020-01-29 Siemens Aktiengesellschaft Steuern eines datennetzes hinsichtlich eines einsatzes einer verteilten datenbank
EP3609148A1 (de) 2018-08-06 2020-02-12 Siemens Aktiengesellschaft Verfahren und netzwerkknoten zur verarbeitung von messdaten
EP3609240A1 (de) 2018-08-09 2020-02-12 Siemens Aktiengesellschaft Computerimplementiertes verfahren und netzwerkzugangsserver zum verbinden einer netzwerkkomponente mit einem netzwerk, insbesondere einem mobilfunknetz, mit einem erweiterten netzwerkzugangskennzeichen
EP3614319A1 (en) 2018-08-20 2020-02-26 Siemens Aktiengesellschaft Tracking execution of an industrial workflow of a petri net
EP3629332A1 (de) 2018-09-28 2020-04-01 Siemens Aktiengesellschaft Sicheres ausgeben einer substanz
EP3633914A1 (de) 2018-10-05 2020-04-08 Siemens Aktiengesellschaft Verfahren und system zur nachweisbaren datenverarbeitung unter anwendung von obfuskation
EP3637345A1 (de) 2018-10-10 2020-04-15 Siemens Aktiengesellschaft Verknüpfung von identitäten in einer verteilten datenbank
US11036866B2 (en) 2018-10-18 2021-06-15 Denso Corporation Systems and methods for optimizing control flow graphs for functional safety using fault tree analysis
US11119798B2 (en) * 2018-11-15 2021-09-14 Sternum Ltd. Applying control flow integrity verification in intermediate code files
EP3687209A1 (en) 2019-01-25 2020-07-29 Siemens Aktiengesellschaft Secure multi-hop communication paths
EP3693918A1 (en) 2019-02-08 2020-08-12 Siemens Gamesa Renewable Energy A/S Operational data of an energy system
CN113474772B (zh) * 2019-02-22 2024-06-07 美光科技公司 用于改进运行固件或有限状态机的组件或系统的安全性的方法
EP3736715A1 (en) 2019-05-10 2020-11-11 Siemens Aktiengesellschaft Managing admission to a distributed database based on a consensus process
US11687440B2 (en) * 2021-02-02 2023-06-27 Thales Dis Cpl Usa, Inc. Method and device of protecting a first software application to generate a protected software application

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4108359A (en) * 1977-03-30 1978-08-22 The United States Of America As Represented By The Secretary Of The Army Apparatus for verifying the execution of a sequence of coded instructions
US4261041A (en) * 1979-08-06 1981-04-07 Medtek Corporation Method and apparatus for controlling a microprocessor-based system
US5581763A (en) * 1988-06-14 1996-12-03 Progressive Technology Inc. Secure architecture and apparatus using an independent computer cartridge
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
FR2700032B1 (fr) * 1992-12-31 1995-02-10 Alsthom Gec Procédé de détection des erreurs d'exécution d'un logiciel.
US5402492A (en) * 1993-06-18 1995-03-28 Ast Research, Inc. Security system for a stand-alone computer
EP1679894A3 (en) * 1997-03-21 2007-10-10 Nagra Thomson Licensing Broadcast and reception system, and conditional access system therefor
US6026235A (en) * 1997-05-20 2000-02-15 Inprise Corporation System and methods for monitoring functions in natively compiled software programs
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
US5974529A (en) * 1998-05-12 1999-10-26 Mcdonnell Douglas Corp. Systems and methods for control flow error detection in reduced instruction set computer processors
GB2337893B (en) * 1998-05-28 2000-09-06 Matsushita Electric Ind Co Ltd Internet telephone apparatus and internet telephone gateway system
JP4779183B2 (ja) * 1999-03-26 2011-09-28 ソニー株式会社 再生装置および再生方法
FR2790844B1 (fr) 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
JP2000339188A (ja) * 1999-05-27 2000-12-08 Harness Syst Tech Res Ltd プログラム実行異常検出装置
JP4626784B2 (ja) * 2000-05-19 2011-02-09 ソニー株式会社 通信装置および通信方法、並びに記録媒体
JP2004503860A (ja) * 2000-06-12 2004-02-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ処理方法及び保護された命令の実行のための装置
DE10156394A1 (de) * 2001-11-16 2003-06-12 Giesecke & Devrient Gmbh Kontrollierte Programmausführung durch einen tragbaren Datenträger
US20030223417A1 (en) * 2002-06-04 2003-12-04 Masashi Higashida Method of processing data packets
FR2841015A1 (fr) 2002-06-18 2003-12-19 St Microelectronics Sa Controle d'execution d'un programme
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
US7320013B2 (en) * 2002-12-12 2008-01-15 Adaptec, Inc. Method and apparatus for aligning operands for a processor
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
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
US8136149B2 (en) * 2004-06-07 2012-03-13 Check Point Software Technologies, Inc. Security system with methodology providing verified secured individual end points
US7949883B2 (en) * 2004-06-08 2011-05-24 Hrl Laboratories, Llc Cryptographic CPU architecture with random instruction masking to thwart differential power analysis
EP1780984A4 (en) * 2004-08-06 2012-05-30 Sharp Kk TRANSMITTER, RECEIVER, COMMUNICATION SYSTEM, COMMUNICATION METHOD, AND COMMUNICATION PROGRAM
US8195953B1 (en) * 2005-10-25 2012-06-05 Trend Micro, Inc. Computer program with built-in malware protection
US7506217B2 (en) * 2005-12-30 2009-03-17 Intel Corporation Apparatus and method for software-based control flow checking for soft error detection to improve microprocessor reliability
US8302188B2 (en) * 2006-07-18 2012-10-30 Panasonic Corporation Instruction generation apparatus for generating a computer program resistant to unauthorized analyses and tampering
US8135975B2 (en) * 2007-03-09 2012-03-13 Analog Devices, Inc. Software programmable timing architecture
US7844954B2 (en) * 2007-11-06 2010-11-30 Vmware, Inc. Using branch instruction counts to facilitate replay of virtual machine instruction execution

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722422A (zh) * 2011-03-23 2012-10-10 英飞凌科技股份有限公司 通过代码转换更新签名
CN102722422B (zh) * 2011-03-23 2015-08-26 英飞凌科技股份有限公司 通过代码转换更新签名
CN104461464A (zh) * 2013-09-20 2015-03-25 威盛电子股份有限公司 用于微处理器的动态重设方法
CN104461464B (zh) * 2013-09-20 2018-04-13 上海兆芯集成电路有限公司 用于微处理器的动态重设方法
CN107463513A (zh) * 2016-06-02 2017-12-12 卡巴斯基实验室股份制公司 在存储位置之间转移控制的系统和方法
CN107463513B (zh) * 2016-06-02 2021-01-12 卡巴斯基实验室股份制公司 在存储位置之间转移控制的系统和方法

Also Published As

Publication number Publication date
EP2188755A1 (de) 2010-05-26
WO2009021789A1 (de) 2009-02-19
EP2188755B1 (de) 2017-10-18
CN101779210B (zh) 2014-03-05
US8843761B2 (en) 2014-09-23
DE102007038763A1 (de) 2009-02-19
US20100146624A1 (en) 2010-06-10

Similar Documents

Publication Publication Date Title
CN101779210B (zh) 用于保护程序以防控制流操纵以及以防有错误的程序运行过程的方法和设备
Cheng et al. Orpheus: Enforcing cyber-physical execution semantics to defend against data-oriented attacks
Moss et al. Compiler assisted masking
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
Lalande et al. Software countermeasures for control flow integrity of smart card C codes
CN109643345A (zh) 用于确定性代码流完整性保护的技术
US9087192B2 (en) Electronic circuit and method for monitoring a data processing
US11269988B2 (en) Automated software application verification system
RU2603545C2 (ru) Защита апплетов от анализа скрытых каналов
US20160077834A1 (en) Execution flow protection in microcontrollers
CN106874758A (zh) 一种识别文档代码的方法和装置
KR101626967B1 (ko) 해킹 방지를 위한 어플리케이션의 동작 방법 및 장치
JP4913353B2 (ja) ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
US20090077415A1 (en) Control flow protection mechanism
CN117081818A (zh) 基于智能合约防火墙的攻击交易识别与拦截方法及系统
CN103530555B (zh) 防止程序执行恶意操作的方法和装置
US11263313B2 (en) Securing execution of a program
Dubreuil et al. Type classification against fault enabled mutant in java based smart card
Gicquel et al. SAMVA: static analysis for multi-fault attack paths determination
Bouffard et al. Evaluation of the ability to transform SIM applications into hostile applications
US20180144228A1 (en) Method of securing a comparison of data during the execution of a program
Mohamed et al. A control flow representation for component-based software reliability analysis
Kur et al. Improving resiliency of java card code against power analysis
KR20190052447A (ko) Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법
Zhao Protecting Return Address Integrity for RISC-V via Pointer Authentication

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant