CN114647444A - 使用指令指针检测处理器上的逆向工程的方法和集成电路 - Google Patents

使用指令指针检测处理器上的逆向工程的方法和集成电路 Download PDF

Info

Publication number
CN114647444A
CN114647444A CN202111563425.XA CN202111563425A CN114647444A CN 114647444 A CN114647444 A CN 114647444A CN 202111563425 A CN202111563425 A CN 202111563425A CN 114647444 A CN114647444 A CN 114647444A
Authority
CN
China
Prior art keywords
value
instruction pointer
pointer register
processor
increments
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
CN202111563425.XA
Other languages
English (en)
Inventor
D·莫伊苏克
C·艾希瓦尔德
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.)
STMicroelectronics Grenoble 2 SAS
STMicroelectronics Alps SAS
Original Assignee
STMicroelectronics Grenoble 2 SAS
STMicroelectronics Alps SAS
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
Priority claimed from FR2013623A external-priority patent/FR3118234B1/fr
Application filed by STMicroelectronics Grenoble 2 SAS, STMicroelectronics Alps SAS filed Critical STMicroelectronics Grenoble 2 SAS
Publication of CN114647444A publication Critical patent/CN114647444A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本公开的各实施例涉及使用指令指针检测处理器上的逆向工程的方法和集成电路。一种用于使用指令指针检测处理器中的信息的线性提取的方法。该方法包括监测指令指针的值,确定将指令指针的值递增恒定量的连续递增次数,并且如果该次数大于或等于检测阈值,则生成检测信号。

Description

使用指令指针检测处理器上的逆向工程的方法和集成电路
相关申请的交叉引用
本申请要求于2020年12月18日提交的法国专利申请号FR2013623的优先权,该申请的全部内容通过引用并入本文。
技术领域
本公开总体上涉及微电子,并且在特定实施例中涉及针对逆向工程的保护。
背景技术
逆向工程可以用于研究和潜在地克隆微控制器的行为。微控制器通常包括经由数据总线连接的至少一个处理器和存储器。逆向工程可以包括对微控制器的侵入式攻击以强制处理器线性访问存储器中的信息。特别地,处理器被强制进入线性读取模式。在这种情况下,嵌入存储器中的软件不再正确执行,分支指令不再执行,结果,处理器依次(即,一个接一个)读取存储器中包含的所有指令。
一个示例包括硬件分析阶段,该硬件分析阶段使用去层化和先进的显微镜技术来标识携带秘密信息的硬件元素。硬件分析阶段标识控制获取地址计算的逻辑。
使用聚焦离子束(FIB)或故障注入技术的数据提取阶段可以用于强制提取地址逻辑电路进入线性执行模式(即,其中处理器仅执行其寻址模式包括当前在处理器中读取的地址的递增的分支指令的操作模式)。
处理器会依次读取整个存储器内容,并且微传感器技术提取由处理器读取的内容。例如,可以在指令寄存器处进行数据提取,以在执行之前从存储器中临时存储每个指令。
基于由逆向工程提取的秘密内容,可以重建嵌入在微控制器中的软件,并且可以产生克隆产品。
使用通用硬件保护层或两个处理器之间的互操作技术的常规解决方案是已知的,并且已经开发了规避它们的变通方法。
检测提取存储器中包含的源代码的尝试将是有利的。此外,对这样的尝试做出响应将是有益的。此外,使检测和响应解决方案对使可能的变通方法的开发复杂化的检测具有挑战性将是有帮助的。
发明内容
在一个实施例中,本公开提出了一种用于使用指令指针检测处理器中的信息的线性提取的方法。该方法包括监测指令指针的值,确定将指令指针的值增加恒定量的连续递增次数,并且如果该次数大于或等于检测阈值,则生成检测信号。
“监测指令指针的值”被理解为例如系统地和例行地读取指令指针的值,这不影响指令指针作为存储器地址指示符的常规使用。
“递增”被理解为例如指令指针的值的变化,该变化对应于将正整数量(可以等于1或大于1)与指令指针的先前值相加。因此,“恒定量的连续递增”被理解为表示指令指针的值的连续变化,每个变化对应于将相同正整数量分别与指令指针的每个先前值相加。
然而,逆向工程方法的线性代码提取步骤产生很多连续递增,以将指令指针的值递增常数量,其可以高于正常值(即,高于在这方面选择的检测阈值)。
因此,根据该方面的监测指令指针的值并且生成检测信号允许检测和报告处理器上正在进行的逆向工程方法、特别是线性代码提取步骤。
此外,指令指针的值通常存储在位于处理器内部的寄存器中。
在一个实施例中,该方法可以直接集成到处理器中,这在逆向工程中很难标识。这增加了逆向工程过程的复杂性,并且倾向于使这种类型的过程总体上无利可图。
在一个实施例中,确定恒定量的连续递增次数包括比较指令指针的值连续递增的量。指针的值连续递增的量的比较允许确定新量是等于还是不同于先前量。这允许监测恒定量的一系列递增以检测指令指针是否正在线性递增。
在一个实施例中,确定恒定量的连续递增次数包括:如果指令指针的值连续递增的两个量相等,则递减先前被设置为检测阈值的计数器的值,反之,如果指令指针的值连续递增的两个量不同,则将计数器的值复位为检测阈值,并且检测信号是在计数器的值为零时生成的。
在设计上,如果包含检测阈值的寄存器被强制返回其起点以尝试绕过检测方法,则使用递减比递增更稳健。
更具体地,将递减计数器设置为阈值的值,该值是执行逆向工程的人不知道的先验值。相反,递增计数器被先验的设置为零值。
因此,逆向工程过程将需要额外的工作来确定计数器的起点,这增加了实现该过程的复杂性,使其总体上无利可图。
在一个实施例中,检测阈值的值结合源代码的实现来选择以允许指令指针的值在处理器对源代码的正常执行期间连续递增恒定量。
因此,检测阈值的联合选择和源代码的实现在预期的安全级别与源代码的执行性能之间取得了良好的折衷。
通过联合提供源代码的实现与作为源代码的函数的检测阈值的值,可以防止在处理器的正常操作期间检测信号的任何生成。
在实施例中,源代码必须符合阈值。如果源代码的正常执行触发检测信号,则可以在源代码中引入跳过分支指令以中断其线性。
由于检测阈值的选择限制了在逆向工程过程中可以提取的指令的数目,检测阈值应当有利地可能通过在这方面调节源代码的实现来最小化。
在一个实施例中,本公开提出了一种用于防止信息的线性提取的方法,包括如上文所定义的检测方法。响应于检测信号的生成,该方法还包括强制处理器的下一读取操作的存储器地址指向其内容不机密的存储器位置的步骤。
因此,一旦检测到线性代码提取,处理器就会被强制只读取非机密内容,从而限制了逆向工程师能够运用的信息。
在一个实施例中,该方法包括将指针复位为一指令指针的值,该指令指针的值在检测信号的生成或对其原始内容不是机密的存储器位置的命令访问之前所采用。
因此,对旨在包含非机密原始内容的存储器位置的命令访问是一种用于响应于检测到线性代码提取来保护处理器的简单的解决方案。
出于同样的目的,可以将指针复位为在检测信号被生成之前指令指针所取的值,这强迫处理器仅读取在检测信号被生成之前已经读取的存储器中的内容。
更具体地,指令指针的值对应于处理器正在读取的存储器地址。在检测信号被生成之前未被读取的存储器地址因此受到保护。
此外,将指令指针复位为指向存储器中地址的值会使检测方法难以标识,因为处理器继续以线性信息提取模式操作,这可能会使攻击者相信线性代码提取是仍在进行中。
例如,在这方面,将指针复位为指令指针的第一值与最后值之间的值,在该值上已经确定递增恒定量的连续递增次数大于或等于检测阈值。这更具体地将由处理器读取的地址值限制为仅在未授权递增期间获取的指令指针值。
在一个实施例中,本公开提出了一种集成电路,该集成电路包括具有用于包含指令指针的值的寄存器的处理器、具有被配置为监测指令指针的值的监测电路的检测器电路、被配置为确定将指令指针的值递增恒定量的连续递增次数的计数器电路、以及被配置为在该次数大于或等于检测阈值时生成检测信号的生成电路。
在一个实施例中,计数器电路被配置为比较指令指针的值连续递增的量。
在一个实施例中,计数器电路被配置为:如果指令指针的值连续递增的两个量相等,则递减计数器的值,该计数器的值旨在先前设置为检测阈值,而如果不是这种情况,则将计数器的值复位为检测阈值。生成电路被配置为当计数器的值为零时生成检测信号。
在一个实施例中,检测阈值的值的选择和源代码的实现共同调节以允许指令指针的值在处理器对源代码的正常执行期间连续递增恒定量。
在一个实施例中,该集成电路还包括响应电路,该响应电路被配置为强制处理器的下一读取操作的存储器地址指向其内容不机密的存储器位置。
在一个实施例中,响应电路被配置为使得其将指针复位为在检测信号的生成或对其原始内容不是机密的存储器位置的命令访问之前采用的指令指针的值。
在一个实施例中,响应电路被配置为使得其将指令指针复位为包括在指令指针的第一值与最后值之间的值,在该值上已经确定递增恒定量的连续递增次数大于或等于检测阈值。
在一个实施例中,检测器电路和响应电路包括位于处理器的胶合逻辑型逻辑电路区域中的逻辑电路。
附图说明
在检查实现和实施例(其绝不是限制性的)的详细描述以及附图之后,本公开的其他优点和特征将变得很清楚,在附图中:
图1是实施例微控制器的示意图;
图2是图1中的微控制器的获取地址电路、指令指针的寄存器和检测器电路的示意图;以及
图3是实施例方法的流程图。
具体实施方式
图1示出了在“线性代码提取”(LCE)类型的逆向工程尝试期间实施例微控制器(PE)的框图。所示的微控制器(PE)包括经由数据总线(B)连接到至少一个存储器MEM1、MEMn的处理器(CPU)。为了简单起见,将使用存储器来指定存储器MEM1、……、MEMn中的至少一个。
处理器(CPU)包括控制器电路(UC)以及用于解码和执行指令的电路(IDEX)。在实施例中,控制器电路(UC)包括获取地址电路(FA)、包含指令指针的值的指令指针寄存器(PC)和指令寄存器(IR)。
在处理器(CPU)的操作期间,获取地址电路(FA)计算要在存储器MEM1、……、MEMn中读取的地址,并且指令指针的指令指针寄存器(PC)存储这个地址。
在指令指针寄存器(PC)所指向的地址处存储在存储器中的源代码被加载到指令寄存器(IR)中。然后,指令寄存器(IR)将源代码传输到电路(IDEX),该电路(IDEX)对源代码进行解码并且执行对应的指令。
在实施例中,线性代码提取(LCE)尝试可以包括对获取地址电路(FA)的攻击。例如,获取地址电路(FA)被强制在一个循环中将指令指针寄存器(PC)的值递增常数量,使得由处理器(CPU)读取的地址顺序地遍历整个存储器MEM1、……、MEMn。
在实施例中,线性代码提取(LCE)尝试可以包括第一实现(A1),该第一实现(A1)在获取地址电路(FA)上使用例如聚焦离子束(FIB)以施加电势并且从而改变逻辑值。
在实施例中,第一实现(A1)可以包括故障注入技术以强制获取地址电路(FA)进入线性递增模式。
在实施例中,这种故障注入技术提供对电路的物理修改(例如,通过添加或移除电连接)以获取对获取地址电路(FA)的控制。
此外,该尝试还可以包括使用第二实现(A2)和/或第三实现(A3)来提取逻辑值。第二实现(A2)和/或第三实现(A3)使用微传感器,该微传感器布置在数据从存储器流向处理器(CPU)的通道上,例如,直接在指令寄存器(IR)上或在将指令寄存器(IR)连接到存储器的数据总线(B)上。因此,常规上,可以读取从存储器中线性提取并且临时存储在指令寄存器(IR)中的源代码。
图2示出了实施例获取地址电路(FA)、指令指针寄存器(PC)和用于检测微控制器(PE)的指令指针寄存器(PC)的线性递增的检测器电路(DFA)的框图,如参考图1所述。
在实施例中,检测器电路(DFA)被配置为报告所尝试的线性代码提取(LCE),如参考图1所述。
在实施例中,提取尝试的第一实现(A1)包括强制获取地址电路(FA)中包含的多路复用器(MUX)的选择器。
在实施例中,第一实现(A1)强制多路复用器(MUX)的选择器从获取地址电路(FA)输出通过将恒定量Cst与指令指针寄存器(PC)的先前值PCn-1相加而获取的地址。对选择器的这种强制是以牺牲其他地址AD1、AD2、……、ADn为代价的,这些其他地址理论上也可以在微控制器(PE)的正常操作期间在多路复用器(MUX)的输出处被选择和产生。
微控制器(PE)的正常操作被理解为是指按照例如制造商的用户手册(通常称为数据表)中的规定而设计的操作。
在用于检测信息的线性提取的方法的范围内,正常操作可以被认为是其中微控制器没有受到线性代码提取尝试的情况。
从获取地址电路(FA)的多路复用器(MUX)输出的地址然后存储在指令指针寄存器(PC)的寄存器中。
在实施例中,为了实现对线性代码提取尝试的检测,检测器电路(DFA)包括用于读取存储在指令指针寄存器(PC)的寄存器中的连续值PCn、PCn-1的监测电路。为此,检测器电路(DFA)连接到指令指针寄存器(PC)的寄存器。
此外,检测器电路(DFA)还包括计数器电路,该计数器电路被配置为确定将指令指针的值PCn、PCn-1递增恒定量Cst的连续递增次数。为此,计数器电路可以例如包括计数器,该计数器的当前值代表以恒定量Cst的连续递增的次数。
在实施例中,检测线性提取尝试,例如,当计数器的值指示以恒定量Cst的连续递增次数大于或等于检测阈值时;并且结果,生成检测信号。
在实施例中,检测器电路(DFA)包括生成电路,该生成电路被配置为:如果以恒定量Cst的递增次数大于或等于检测阈值,则输出检测信号。检测阈值的值可以结合存储器中包含的源代码的特定实现来选择。
在实施例中,检测阈值的值的选择和源代码的实现可以被确定以允许在处理器对源代码的执行期间的以恒定量的“正常”递增次数,该递增可以连续执行而不触发检测信号。
例如,可以在源代码的实现期间引入跳过分支指令,以适应所选择的检测阈值,以减少由处理器对源代码的执行而引起的以恒定量的正常递增次数。
通过模拟处理器(CPU)对源代码的执行或凭经验,可以自动获取以恒定量递增的正常递增次数。
在实施例中,由处理器(CPU)对源代码中包含的递增分支指令的例行执行引起恒定量的正常递增。
“递增分支指令”被理解为表示使用寻址模式的指令,其中要由处理器读取的下一地址是相对于正在读取的地址来定义的,通常通过指定正在读取的地址必须递增的量来定义。换言之,递增分支指令导致存储器地址被顺序地读取(即,按照存储器地址的升序一个接一个)。
递增分支指令与跳过分支指令相反,它导致跳转到与指令指针的当前地址或由处理器读取的最后地址无关的存储器地址。跳过分支指令例如是诸如跳转指令、过程调用指令和过程之后的返回指令等汇编语言的指令。
有利地,在用于检测信息的线性提取的方法中,处理器(CPU)对跳过分支指令的执行自动地导致计数器电路复位。更具体地,跳过分支指令中断存储器地址的线性读取。因此,跳过分支代表在线性代码提取中不被强制的操作。
此外,有利地提供对线性代码提取尝试的检测的响应,以保护在该尝试期间尚未读取的存储器的内容。
被包括在例如检测器电路(DFA)中的响应电路被配置为将指令指针寄存器(PC)复位到在检测到尝试之前已经读取的存储器MEM1、……、MEMn的地址值。
例如,复位指针的值可以包括实现在提取尝试期间指令指针所提取的第一值与最后值之间的值的无限循环(即,在以恒定量Cst递增期间指令指针寄存器(PC)所提取的第一值和最后值,这导致检测信号的生成)。
此外,检测器电路(DFA)和响应电路例如可以位于处理器(CPU)的区域中。
在实施例中,检测和响应电路有利地处于“胶合逻辑”类型区域中。更具体地,用于在这样的区域中隐藏逻辑电路的技术是已知的。因此,将检测器电路(DFA)放置在胶合逻辑类型区域的元件之间的一个特定优点是破坏检测器电路(DFA)是困难的。
图3示出了由参考图2描述的检测器电路(DFA)实现的实施例方法的流程图。步骤S1包括当每个新值存储在指令指针寄存器(PC)的寄存器中时,监测指令指针寄存器(PC)的连续值PCn、PCn-1。在实施例中,步骤S1包括当每个新值被存储时,计算与指令指针寄存器(PC)的连续值PCn、PCn-1之间的差值相对应的递增Dn。
步骤S2包括在指令指针寄存器(PC)的值以其递增的连续递增量Dn与连续递增量Dn-1之间产生比较Comp,以确定在每次递增时,两个连续递增量Dn、Dn-1相同还是不同。比较Comp用于确定是否连续递增量是以恒定量的一系列递增的一部分。
步骤S3包括两个不同的动作,这取决于先前步骤S2的比较Comp的结果。一方面,如果两个连续递增量Dn、Dn-1相等,则步骤S3包括递减先前设置为检测阈值Th的计数器Cnt的值。
备选地,计数器Cnt可以递增直到检测阈值Th的值,在这种情况下,计数器Cnt的值先前设置为零。
另一方面,如果相反,指令指针的值PCn、PCn-1递增的两个连续递增量Dn、Dn-1不同,则步骤S3包括将计数器的值复位为检测阈值Th。
步骤S4包括读取计数器Cnt的值。如果计数器Cnt的值被包括在零到检测阈值Th之间,则该方法返回到步骤S1并且等待指令指针寄存器(PC)的新值被存储在对应寄存器中。如果计数器Cnt的值等于0,在计数器递减的情况下,则步骤S4包括生成检测信号LCEdetec,其中检测信号LCEdetec的值从例如逻辑值0变为逻辑值1。
备选地,如果计数器Cnt的值等于检测阈值Th,在计数器递增的情况下,则步骤S4包括生成检测信号LCEdetec,其中检测信号LCEdetec的值从例如逻辑值0变为逻辑值1。
在这两种情况下,当检测信号LCEdetec被生成时,计数器Cnt被复位。
备选地,计数器Cnt的向下计数(或向上计数)可以在从零点任意偏移的两个边界之间的值范围内执行。
在实施例中,非零偏移值可以有利地选择以偏移计数器Cnt的两个边界,这确保了计数器Cnt的起点和终点都不能被预先知道。
在实施例中,范围的上限可以被选择以使得其等于检测阈值加上偏移值,并且范围的下限可以被选择以使得其等于偏移值。在本实施例中,计数器从上限到下限递减,或者从下限到上限递增。
此外,在该备选实施例中,如果计数器Cnt的值不在下限与上限之间,则也可以生成检测信号LCEdetec,这可以用于反对强制计数器Cnt的值超出两个边界的尝试。这再次产生必须由逆向工程过程执行的额外工作并且增加了过程的复杂性,目的是使其总体上无利可图。
虽然已经详细描述了该描述,但是应当理解,在不脱离由所附权利要求限定的本公开的精神和范围的情况下,可以进行各种改变、替换和变更。在不同的图中,相同的元素用相同的附图标记表示。此外,本公开的范围不旨在限于本文所述的特定实施例,因为本领域普通技术人员将从本公开中容易地理解,当前存在或以后将开发的过程、机器、制造、物质组成、手段、方法或步骤可以执行与本文中描述的对应实施例基本上相同的功能或实现基本上相同的结果。因此,所附权利要求旨在将这样的过程、机器、制造、物质组成、手段、方法或步骤包括在它们的范围内。
因此,说明书和附图被简单地视为对如所附权利要求所限定的本公开的说明,并且预期涵盖落入本公开的范围内的任何和所有修改、变化、组合或等效物。

Claims (20)

1.一种方法,包括:
监测指令指针寄存器的值;
确定所述指令指针寄存器的值的递增次数,所述递增对应于常数和所述指令指针寄存器的值的连续递增;
响应于确定所述递增次数大于或等于阈值,生成检测信号;以及
响应于所述检测信号的所述生成,检测与包括所述指令指针寄存器的处理器的线性代码提取类型相对应的逆向工程攻击。
2.根据权利要求1所述的方法,其中确定所述递增次数包括:比较所述指令指针寄存器递增的值。
3.根据权利要求1所述的方法,其中确定所述递增次数包括:
比较所述指令指针寄存器依次递增的值;
确定所述指令指针寄存器依次递增的相应值的值相等,并且基于所述相应值的值相等而递减计数器值,所述计数器的值最初设置为所述阈值的值,所述检测信号是响应于所述计数器的值为零而生成的;以及
确定所述指令指针寄存器依次递增的所述相应值的值不同,并且基于所述相应值的值不同而将所述计数器的值复位为所述阈值的值。
4.根据权利要求1所述的方法,其中所述阈值的值结合源代码的实现来选择,使得在所述处理器对所述源代码的正常执行期间,所述指令指针寄存器的值不断且连续地递增。
5.根据权利要求1所述的方法,还包括响应于所述检测信号的所述生成,强制将所述处理器的下一读取操作的存储器地址指向具有非机密内容的存储器位置。
6.根据权利要求5所述的方法,还包括将所述指令指针寄存器的值复位为在所述检测信号的所述生成或对具有所述非机密内容的存储器位置的命令访问之前的、所述指令指针寄存器的值。
7.根据权利要求6所述的方法,其中响应于确定所述递增次数大于或等于阈值,所述指令指针寄存器被复位为所述指令指针寄存器的第一值与最后值之间的值。
8.一种包括处理器的集成电路,所述处理器包括:
指令指针寄存器,被配置为存储指针值;
检测器电路,被配置为监测所述指令指针寄存器的值;
计数器电路,被配置为确定所述指令指针寄存器的值的递增次数,所述递增对应于常数和所述指令指针寄存器的值的连续递增;以及
生成器电路,被配置为响应于确定所述递增次数大于或等于阈值而生成检测信号,其中所述处理器被配置为响应于所述检测信号的所述生成而检测与所述处理器的线性代码提取类型相对应的逆向工程攻击。
9.根据权利要求8所述的集成电路,其中所述计数器电路被配置为比较所述指令指针寄存器递增的值。
10.根据权利要求8所述的集成电路,其中所述计数器电路被配置为:
比较所述指令指针寄存器依次递增的值;
确定所述指令指针寄存器依次递增的相应值的值相等,并且基于所述相应值的值相等而递减计数器值,所述计数器的值最初设置为所述阈值的值,所述检测信号是响应于所述计数器的值为零而生成的;以及
确定所述指令指针寄存器依次递增的所述相应值的值不同,并且基于所述相应值的值不同而将所述计数器的值复位为所述阈值的值。
11.根据权利要求8所述的集成电路,其中所述阈值的值结合源代码的实现来选择,使得在所述处理器对所述源代码的正常执行期间,所述指令指针寄存器的值不断且连续地递增。
12.根据权利要求8所述的集成电路,其中所述处理器还包括响应电路,所述响应电路被配置为响应于所述检测信号的所述生成而强制将所述处理器的下一读取操作的存储器地址指向具有非机密内容的存储器位置。
13.根据权利要求12所述的集成电路,其中所述响应电路被配置为将所述指令指针寄存器的值复位为在所述检测信号的所述生成或对具有所述非机密内容的存储器位置的命令访问之前的、所述指令指针寄存器的值。
14.根据权利要求13所述的集成电路,其中所述响应电路被配置为响应于确定所述递增次数大于或等于阈值而复位为所述指令指针寄存器的第一值与最后值之间的值。
15.根据权利要求14所述的集成电路,其中所述检测器电路和所述响应电路包括位于所述处理器的胶合逻辑类型逻辑电路区域中的逻辑电路。
16.一种处理器,包括:
指令指针寄存器,被配置为存储指针值;
检测器电路,被配置为监测所述指令指针寄存器的值;
计数器电路,被配置为确定所述指令指针寄存器的值的递增次数,所述递增对应于常数和所述指令指针寄存器的值的连续递增;以及
生成器电路,被配置为响应于确定所述递增次数大于或等于阈值而生成检测信号,其中所述处理器被配置为响应于所述检测信号的所述生成而检测与所述处理器的线性代码提取类型相对应的逆向工程攻击。
17.根据权利要求16所述的处理器,其中所述计数器电路被配置为比较所述指令指针寄存器递增的值。
18.根据权利要求16所述的处理器,其中所述计数器电路被配置为:
比较所述指令指针寄存器依次递增的值;
确定所述指令指针寄存器依次递增的相应值的值相等,并且基于所述相应值的值相等而递减计数器值,所述计数器的值最初设置为所述阈值的值,所述检测信号是响应于所述计数器的值为零而生成的;以及
确定所述指令指针寄存器依次递增的所述相应值的值不同,并且基于所述相应值的值不同而将所述计数器的值复位为所述阈值的值。
19.根据权利要求16所述的处理器,其中所述阈值的值结合源代码的实现来选择,使得在所述处理器对所述源代码的正常执行期间,所述指令指针寄存器的值不断且连续地递增。
20.根据权利要求16所述的处理器,还包括响应电路,所述响应电路被配置为响应于所述检测信号的所述生成而强制将所述处理器的下一读取操作的存储器地址指向具有非机密内容的存储器位置。
CN202111563425.XA 2020-12-18 2021-12-20 使用指令指针检测处理器上的逆向工程的方法和集成电路 Pending CN114647444A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
FR2013623A FR3118234B1 (fr) 2020-12-18 2020-12-18 Procédé de détection d’ingénierie inversée sur une unité de traitement utilisant un pointeur d’instruction et circuit intégré correspondant
FR2013623 2020-12-18
US17/644,711 US20220198005A1 (en) 2020-12-18 2021-12-16 Method for detecting reverse engineering on a processor using an instruction pointer and corresponding integrated circuit
US17/644,711 2021-12-16

Publications (1)

Publication Number Publication Date
CN114647444A true CN114647444A (zh) 2022-06-21

Family

ID=81994301

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111563425.XA Pending CN114647444A (zh) 2020-12-18 2021-12-20 使用指令指针检测处理器上的逆向工程的方法和集成电路

Country Status (1)

Country Link
CN (1) CN114647444A (zh)

Similar Documents

Publication Publication Date Title
CN107315961B (zh) 程序漏洞检测方法及装置、计算设备、存储介质
CN109101815B (zh) 一种恶意软件检测方法及相关设备
WO2016113663A1 (en) Rasp for scripting languages
EP3574426B1 (en) Method to secure a software code
US20060294397A1 (en) System and method of using a protected non-volatile memory
CN111475168B (zh) 一种代码编译方法及装置
KR20100089256A (ko) 응용 프로그램 패치 장치 및 방법
US20220198005A1 (en) Method for detecting reverse engineering on a processor using an instruction pointer and corresponding integrated circuit
CN101533370B (zh) 一种内存异常访问定位方法及装置
US20070083770A1 (en) System and method for foiling code-injection attacks in a computing device
CN114647444A (zh) 使用指令指针检测处理器上的逆向工程的方法和集成电路
EP3574425B1 (en) Method to secure a software code
US20220197644A1 (en) Reverse engineering detection method on a processor using an instruction register and corresponding integrated circuit
CN117914507A (zh) 针对攻击进行处置的安全处理设备、方法与电子设备
US7634640B2 (en) Data processing apparatus having program counter sensor
CN114647445A (zh) 在处理器上的逆向工程检测方法和对应集成电路
US20070050619A1 (en) Processor having program protection function
KR20090084530A (ko) 스크립트 언어를 사용한 취약점 공격 코드의 실시간 탐지및 차단 방법, 및 그 장치
Durães et al. A methodology for the automated identification of buffer overflow vulnerabilities in executable software without source-code
CN112527677B (zh) 应用程序的保护方法及电子设备
CN114070580B (zh) 反序列化攻击检测方法、装置、电子设备、介质及程序
CN115203652B (zh) 一种基于源混淆的ios端安全加密控制方法
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
US20230195907A1 (en) Apparatus And Method For Defending Against Control Flow Attack, And Processor
CN116795031A (zh) 可编程逻辑控制器的安全保护方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination