CN107637009B - 一种用于保护处理器对程序的执行的方法、装置和存储介质 - Google Patents

一种用于保护处理器对程序的执行的方法、装置和存储介质 Download PDF

Info

Publication number
CN107637009B
CN107637009B CN201680027175.9A CN201680027175A CN107637009B CN 107637009 B CN107637009 B CN 107637009B CN 201680027175 A CN201680027175 A CN 201680027175A CN 107637009 B CN107637009 B CN 107637009B
Authority
CN
China
Prior art keywords
comparison
data items
compared
processor
blocks
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.)
Active
Application number
CN201680027175.9A
Other languages
English (en)
Other versions
CN107637009A (zh
Inventor
V·杜帕奎斯
E·勒科康恩
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.)
Rambus Inc
Original Assignee
Rambus Inc
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 Rambus Inc filed Critical Rambus Inc
Publication of CN107637009A publication Critical patent/CN107637009A/zh
Application granted granted Critical
Publication of CN107637009B publication Critical patent/CN107637009B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • G06K19/07372Means for preventing undesired reading or writing from or onto record carriers by detecting tampering with the circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • 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/60Protecting data
    • 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/75Protecting 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 by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7271Fault verification, e.g. comparing two values which should be the same, unless a computational fault occurred
    • 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
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Quality & Reliability (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种用于保护处理器对程序的执行的方法,所述程序包括用于比较两个数据项(D1、D2)的比较指令(S1),后跟根据由所述比较指令提供的比较结果选择的程序操作(SI2),所述方法包括以下步骤:在执行所述比较指令之前,用多种方式计算代表要比较的数据的相等性的比较数据;在执行所述比较指令之后,检验所计算的比较数据与选择或不选择所述程序操作的事实是否一致;以及在所述比较数据互相不一致或与所述比较的结果不一致的情况下,激活错误信号(ER)。

Description

一种用于保护处理器对程序的执行的方法、装置和存储介质
技术领域
本发明涉及控制处理器对程序的执行,具体地说,涉及在程序执行之前或程序执行期间保护程序不被修改或篡改。本发明具体应用于与基于数据比较的关键决策相关的程序部分。
背景技术
诸如智能卡IC的安全集成电路受到欺诈者的各种攻击,他们试图发现安全集成电路的结构和/或他们存储或操纵的秘密。这样的电路包括例如加密电路或被编程为执行加密算法的微处理器。
一些入侵方法包含将错误注入集成电路以中断所谓的敏感操作(例如认证操作或加密算法的操作)的执行。
这样的攻击(称为故障或错误注入攻击)可能在所谓的敏感计算阶段发生,例如在识别码的计算阶段期间或在读取存储器中的加密密钥期间发生。它们(与数学模型相结合并有意使用虚假结果)允许借助应用于集成电路的干扰来确定诸如密钥或密码的机密元素或推导出加密算法的结构。
具体地说,局部攻击包括例如通过激光束或X射线束在电路的给定点处引入干扰(毛刺)。局部攻击可能涉及例如电源电压、数据或地址路径或集成电路的时钟信号。
这样的攻击可能具体地触发通常作为数据比较(例如将识别或认证数据与期望值进行的比较)的结果执行的关键操作。通过这样的攻击,能在要比较的数据的存储器读取期间、在实际比较期间、或在决策和基于比较结果到达要执行的指令的指令跳转期间干扰数据比较。此攻击也能将要比较的一个数据项的读取地址作为目标,并且因此导致比较错误。此攻击也能将程序存储器的地址作为目标,并且因此导致在缺少任何跳转指令代码时跳转,使得在没有实际执行调节关键操作执行的比较指令的情况下触发关键操作。
因此期望的是保护由处理器执行的程序中的数据比较,并且检验源自此类比较的决策。
也可以期望的是通过使用执行程序的处理器的尽可能少的资源以及在不增加开发程序必需的编码任务的情况下实现此目标。
发明内容
实施例涉及一种用于保护处理器对程序的执行的方法,所述程序包括比较指令,所述比较指令具有两个数据项,后跟基于由所述比较指令提供的比较结果来选择的程序操作,所述方法包括以下步骤:在执行所述比较指令之前,计算代表要比较的数据项的相等性的比较变量;在执行所述比较指令之后,检查所计算的比较变量与选择或不选择所述程序操作是否一致;以及在所述比较变量彼此一致或与所述比较结果一致的情况下,使能错误信号。
根据权利要求1所述的方法,所述方法在执行所述比较指令之后包括以下步骤:检查所述比较变量与基于所述比较结果所述程序操作是否被选择的事件之间的一致性。
根据一个实施例,在所述比较指令确定所述要比较的数据项相同的情况下,所述比较指令后跟分别选择的两个程序操作,以及在所述比较指令确定所述要比较的数据项不同的情况下,在执行所述比较指令之后,检查所计算的比较变量与基于所述比较结果选择的程序操作之间的一致性。
根据一个实施例,所述比较变量包括以下比较变量中的至少两个:第一二进制比较变量,其值取决于所述要比较的数据项的相等性;第二二进制比较变量,其等于通过逻辑“或”运算对第一二进制字的位的组合,所述第一二进制字源自通过逻辑“异或”运算对所述要比较的数据项的逐位组合;第三二进制比较变量,其等于通过逻辑“与”运算对第二二进制字的位的组合,所述第二二进制字源自通过逻辑“或”运算将一个所述要比较的数据项与另一个所述要比较的数据项的二进制1的补码逐位组合;以及第四二进制比较变量,其等于通过逻辑“或”运算对第三二进制字的位的组合,所述第三二级制字源自通过逻辑“与”运算将一个所述要比较的数据项与另一个所述要比较的数据项的二进制1的补码逐位组合。
根据一个实施例,在每次计算比较变量时从存储器读取至少一个所述要比较的数据项。
根据一个实施例,所述方法包括以下至少一者:在所比较的数据项相同的情况下使能第一标志;以及在所比较的数据项不同的情况下使能第二标志。
根据一个实施例,所述要比较的数据项是具有多个字的区块,要比较的所述区块中的一个区块的每个字被与要比较的所述区块中的另一区块的对应字单独地比较,所述方法包括以下步骤:对要比较的两个区块之间相同的字的数量进行计数,其中所述比较指令将所述要比较的两个区块之间相同的字的数量与要比较的每个区块中的字数进行比较。
根据一个实施例,所述方法包括以下步骤:对要比较的两个区块之间不同的字的数量进行计数;以及检查所述要比较的两个区块之间相同的字的数量与不同的字的数量之和等于所述要比较的每个区块中的字数。
根据一个实施例,所述要比较的数据项是具有多个字的区块,要比较的所述区块中的一个区块的每个字被与要比较的所述区块中的另一区块的对应字单独地比较,所述方法包括以下步骤:计算要比较的每个区块的字数和;所述比较指令比较所述要比较的每个区块的字数和。
根据一个实施例,要比较的所述区块中的一个区块的字数和中的第一字数和包括对该区块的字计数的字计数器的相继值,所述方法包括以下步骤:从要比较的每个区块中的字数计算所述字计数器的所述相继值的和;以及通过从所述第一字数和中减去所计算的所述字计数器的所述相继值的和来修改所述第一字数和。
实施例也包括一种用于保护由处理器执行的程序中的测试的执行的电路,所述电路被配置为实施根据权利要求1所述的安全方法。
实施例也包括一种包括指令的计算机程序产品,当由处理器执行时,所述指令实施根据权利要求1所述的方法。
附图说明
通过以下仅为了示意性目的提出并在附图中表示的本发明的特定实施例的描述,其他优点和特征将变得更加显而易见,这些附图是:
图1示意性地表示能够实施根据一个实施例的用于保护数据比较的执行的方法的计算机的一个示例,
图2A、2B分别是包括数据比较的未实施和实施根据一个实施例的保护方法的程序部分的流程图,
图3A、3B分别是包括数据比较的未实施和实施根据另一个实施例的保护方法的程序部分的流程图,
图4A、4B分别是包括数据比较的未实施和实施根据另一个实施例的保护方法的程序部分的流程图,
图5A到5D是根据若干实施例的数据比较步骤序列的流程图,
图6A、6B是根据实施例的在比较之后的决策监督序列的流程图,
图7和8是根据多种实施例的用于比较两个数据区块的序列的流程图,
图9示意性地表示被配置为保护根据一个实施例的比较和决策操作的微型电路或协处理器。
具体实施方式
图1示出适于实施根据一个实施例的用于保护数据比较步骤之后的决策的方法的电子设备PC。设备PC包括存储程序和数据的存储器MEM、和被配置为执行程序的处理器PRC。设备可以包括硬件单元诸如包括用户控制接口的输入/输出单元、和通信或网络接口电路IR。因此,控制接口可以包括显示屏DSP、一个或多个输入设备(诸如,鼠标MS和键盘KEYB)和/或其他输入/输出外围设备(诸如,触摸板和诸如硬盘HD的外部存储器)。电子设备PC可以是计算机或包括执行程序的处理器的任何其他设备,诸如智能手机、数字平板电脑、智能卡微电路或安全元件。电子设备也可以是诸如片上系统(SoC)的系统中的嵌入式组件或集成电路的一部分。
根据一个实施例,设备PC包括诸如协处理器的微电路CCP,微电路 CCP连接到处理器PRC并且被配置为向处理器PRC提供用于保护比较操作的执行和在比较操作之后保护决策的功能。
图2A、2B示出了由处理器PRC执行并且包括系列指令SI1、SI2、 SI3和数据比较操作S1的程序部分SC1、SC2。在系列指令SI1和SI3之间执行比较操作S1。比较操作S1比较数据项D1和D2,并且在数据项 D1和D2相同的情况下,执行系列操作SI2。换句话说,在数据项D1和 D2相同的情况下,执行系列指令SI1、SI2以及SI3,如果不同,则仅执行系列指令SI1和SI3。
程序部分SC1是常规的,而根据一个实施例,程序部分SC2通过提供附加步骤S2和S3被保护。在比较操作S1之前执行的步骤S2通过向安全比较功能SCP提供要比较的数据项D1、D2或所述数据项的相应地址来调用该安全比较功能SCP。在比较操作S1确定数据项D1和D2相同的情况下,执行步骤S3。步骤S3使能标志FLT,从而注册处理器PRC已执行当数据项D1和D2相同时被执行的程序分支。使能标志FLT之后是用于检查通过功能SCP获得的数据项D1和D2的比较结果与对应于该比较的决策之间的一致性的操作。如果这些检查操作检测到不一致,则能够使能错误信号ER。
取决于程序的上下文,能在系列指令SI2之前或之后,或甚至在仅部分系列指令SI2之后执行步骤S3。因此,能在关键操作之前执行步骤S3。步骤S3可以被配置为中断处理器PRC对程序的执行和/或在导致执行系列指令SI2的决策在步骤3期间被检测出错误(使能错误信号ER)的情况下激活错误管理功能。注意,错误管理功能能够是活动的而不中断程序的正常执行。
系列指令SI3(无论在步骤S1中完成的比较的结果为何,系列指令 SI3均被执行)之前可以是步骤S4,步骤S4调用功能CPCK以便检查测试的正常执行,例如功能CPCK可以检查标志FLT的状态与由比较功能 SCP提供的结果之间的一致性,并且当检测到不一致时使能错误信号ER。如果在步骤S1中数据项D1和D2不应该不同,则功能CPCK能检查标志 FLT的值,并且如果错误信号ER未被使能,则功能CPCK可以使能错误信号ER。
图3A、3B示出了由处理器PRC执行并且包括系列指令SI1、SI2、 SI3以及数据比较操作S1的程序部分SC3、SC4。在系列指令SI1与SI3 之间执行比较操作S1。比较操作S1比较数据项D1和D2,并且在数据项 D1和D2不同的情况下执行系列操作SI2。在数据项D1和D2相同的情况下,仅执行系列指令SI1和SI3,否则执行系列指令SI1、SI2以及SI3。程序部分SC3是常规的,而根据一个实施例,程序部分SC4被保护。
程序部分SC3、SC4与图2A、2B的程序部分SC1、SC2不同,在程序部分SC3、SC4中,不是当数据项D1和D2相同时,而是当它们不同时执行操作SI2。在图3B中,代替当数据项相同时执行步骤S3,当数据项 D1和D2不同时执行步骤S5。步骤S5使能标志FLT,从而注册处理器PRC已执行当数据项D1和D2不同时被执行的程序分支。使能标志FLT 之后是用于检查通过功能SCP获得的数据项D1和D2的比较结果与对应于该比较的决策之间的一致性的操作。
图3B的程序部分SC4也可以包括用于调用功能CPCK以便检查测试的正常执行的步骤S4。如上文那样,功能CPCK能检查标志FLF的状态与由比较功能SCP提供的结果之间的一致性,并且在检测到不一致的情况下使能错误信号ER。如果在步骤S1中数据项D1和D2不应该相同,则功能CPCK可以检查标志FLT的值,并且如果错误信号ER未被使能,则功能CPCK可以使能错误信号ER。
图4A、4B示出了由处理器PRC执行并且包括系列指令SI1、SI3以及备选系列指令SI2-1、SI2-2(取代系列指令SI2)和数据比较操作S1的程序部分SC5、SC6。在系列指令SI1和SI3之间执行比较操作S1。比较操作S1比较数据项D1和D2,并且在数据项D1和D2相同的情况下执行系列操作SI2-1,在数据项D1和D2不同的情况下执行系列指令SI2-2。因此,在数据项D1和D2相同的情况下,执行系列指令SI1、SI2-1以及SI3,否则执行系列指令SI1、SI2-2以及SI3。程序部分SC5是常规的,而根据一个实施例,程序SC6被保护。
在图4B中,在比较操作S1之前,使用要比较的数据项D1、D2或所述数据项的相应地址来调用安全比较功能SCP(步骤S2)。当数据D1和 D2相同时执行的分支包括用于使能标志FLT的步骤3,并且当所述数据项不同时执行的分支包括用于使能标志FLF的步骤5。再次地,此处可以分别在系列指令SI2-1、SI2-2之前或之后,或甚至在仅部分系列指令SI2-1、 SI2-2之后执行步骤S3和S5。优选地,在关键操作之前完成步骤S3和/ 或步骤S5。如上文那样,在导致执行系列指令SI2-1或SI2-2的决策在步骤3或S5期间被检测为不正确(使能错误信号ER)的情况下,步骤S3 和S5可以被配置为中断处理器PRC对程序的执行。
系列指令SI3(无论在步骤S1中完成的比较的结果为何,系列指令 SI3均被执行)之前可以是步骤S4,步骤S4调用功能CPCK以便检查测试的正确执行。因此,功能CPCK可以例如检查标志FLF、FLT中的仅一个标志被使能。应该注意,当使用程序部分SC2(图2B)和SC4(图 3B)时,也能完成该检查。
根据一个实施例,在步骤S2、S3、S4以及S5中执行的功能由电路 CCP实施。在这种情况下,由电路CCP向处理器PRC发送错误信号。
当然,通过在图2B的流程图的无指令分支中提供步骤S5和在图3B 的流程图中的无指令分支中提供步骤S3,也能够检查至图2B和3B的流程图的无指令分支的切换。
图5A到5D示出了能由步骤S2中调用的安全比较功能SCP执行的两个数据项D1、D2的比较序列SCP1、SCP2、SCP3、SCP4的示例。在图 5A中,比较序列SCP1包括步骤S20到S22。在步骤S20和S21中,在相应地址&D1和&D2处,在存储器中读取要比较的数据项D1和D2。在步骤S22中,基于在步骤S20和S21从存储器中读取的数据项D1和D2之间的直接比较,计算布尔变量CP1。例如,在数据项D1和D2相同的情况下,所述变量等于1(或真),否则等于0(或假)。
在图5B中,比较序列SCP2包括步骤S30到S33。在步骤S30和S31 中,在它们相应的地址&D1和&D2处从存储器读取要比较的数据项D1和 D2。在步骤S32中,通过逐位“异或”(XOR)逻辑运算,在步骤S30 和S31从存储器中读取的数据项D1和D2被彼此组合。在步骤S33中,由“异或”运算提供的结果XS2的位通过“或”逻辑运算被彼此组合。此组合的结果被赋予布尔变量CP2。以这种方法,如果数据项D1和D2相同,则结果XS2是0,并且因此变量CP2等于0(或假)。相反,如果数据项D1和D2彼此相差至少一位,则结果XS2不同于0,并且因此变量CP2是1(或真)。
在图5C中,比较序列SCP3包括步骤S40到S43。在步骤S40和S41 中,在它们相应的地址&D1和&D2处从存储器读取要比较的数据项D1和 D2。在步骤S42中,通过逐位逻辑“或”运算,在步骤S30和S31中从存储器读取的数据项D1和D2被组合,使得数据项D1被与数据项D2的1 的补码(~D2)相组合。在步骤S43中,由在步骤S42中执行的运算产生的结果XS3的位通过逻辑“与”运算被彼此组合。此组合的结果被赋予布尔变量CP3。以这种方式,如果数据项D1和D2相同,则结果XS3是$FF...F (在十六进制中,在十六位数据的情况下例如$FFFF),并且因此变量CP3 等于1(或真)。另一方面,如果数据项D1和D2彼此相差至少一位,则结果XS3不一定不同于$FF...F,并且因此变量CP3能够是0(或假)或1。
在图5D中,比较序列SCP4包括步骤S50到S53。在步骤S50和S51 中,在它们相应的地址&D1和&D2处从存储器读取要比较的数据项D1和 D2。在步骤S52中,通过逐位逻辑“与”运算,在步骤S50和S51中从存储器读取的数据项D1和D2被组合,使得数据项D1被与数据项D2的1 的补码(~D2)相组合。在步骤S53中,由在步骤S52中执行的运算提供的结果XS4的位通过逻辑“或”运算被彼此组合。此组合的结果被赋予布尔变量CP4。以这种方式,如果数据项D1和D2相同,则结果XS4等于 0,并且因此变量CP4等于0(或假)。另一方面,如果数据项D1和D2 彼此相差至少一位,则结果XS4不一定不同于0,并且因此变量CP4能够等于0或1。
例如CP3AND(~CP4)的变量CP3和CP4的组合使得能确定数据项 D1和D2是相同还是不同,(~CP4)表示变量CP4的1的补码。因此,组合CP3AND(~CP4)相当于变量CP1或CP2。例如,通过反转比较序列SCP3和SCP4中的数据项D1和D2的角色,可以计算其他比较变量。
根据一个实施例,在对SCP功能的调用之后执行比较序列SCP1-SCP4 中的若干序列。备选地,执行所有比较序列以产生比较变量CP1-CP4。
根据一个实施例,当执行功能SCP时,比较变量CP1-CP4的计算值被分开存储,并且仅当通过在步骤S3和S5中调用的检验功能检查这些计算值时,这些计算值才能够通过逻辑运算被组合。
应该注意,基于攻击可能干扰要比较的数据项D1、D2的读取之一(在步骤S20、S21、S30、S31、S40、S41以及S50、S51中的任何步骤中完成),但攻击不可能干扰数据项的所有读取的知识,每次计算比较变量CP1-CP4 时,在存储器中读取来源于数据存储器的每个数据项D1和D2,以便获得更高的安全性。当然,如果较低的安全性符合要求,或如果期望减少内存访问或降低执行时间的恶化,则可以执行每个要比较的数据项D1、D2在存储器MEM中的单次读取以计算所有比较变量CP1-CP4。当然,如果要比较的数据项之一是立即值,则其不源于数据存储器并且因此在比较变量的每次计算时不能在这样的存储器中被读取。
根据实施例,图6A、6B表示在激活标志FLT(步骤S3)或FLF(步骤S5)之后执行的相干性检查功能的步骤。当在步骤S3中标志FLT被使能时,也就是说当在步骤S1处数据项D1和D2被认为相等时,执行图6A 的步骤。图6A的步骤包括由比较序列SCP1-SCP4确定的比较变量 CP1-CP4中的至少一些比较变量的逻辑组合CB的步骤S55,然后是用于测试该组合的结果CC的步骤S56。如果该组合的结果CC与已出现标志 FLT的事实不一致,则在步骤S57中使能错误信号ER。
当在步骤S5中标志FLF被使能时,也就是说当在步骤S1中数据项 D1和D2被认为不同时,执行图6的检查序列。所述检查序列包括由比较序列SCP1-SCP4确定的比较变量CP1-CP4中的至少一些比较变量的逻辑组合CB的步骤S60,然后是用于测试该组合的结果CC的步骤S61。如果该组合的结果CC与已出现标志FLT的事实不一致,则在步骤S62中使能错误信号ER。注意比较变量CP1-CP4能在步骤S56和S61中被分开测试而不是由逻辑运算提前组合。
在步骤S55和S60中执行的比较变量CP1-CP4的逻辑组合可以包括以下步骤:检查这些变量之间的一致性,例如方式为检查组合CP3AND (~CP4)等于变量CP1和/或CP2。
借助这些布置,如果攻击者中断步骤S1的执行以便强制执行在此步骤中完成的测试分支,则在步骤S56或S60(当标志FLT或FLF被使能时将执行步骤S56或S60)中将检测到此攻击。因此,为使攻击保持未被检测,不仅必须中断步骤S1的执行,而且必须中断比较变量CP1-CP4的计算以便获得这些变量的与步骤S1的被中断执行相干的值,或中断在步骤S56或S61中完成的检验测试。然而,实施攻击(诸如用激光束完成的那些攻击)的精度不足以系统地实现特定目标。因此,以相干的方式中断步骤S1的执行和比较变量CP1-CP4的计算显得非常困难。
根据一个实施例,要比较的数据项D1和D2是具有若干字的被逐字比较的区块。图7表示用于比较两个具有若干字的区块的程序BCP的步骤 S70到S83。依次执行步骤S70到S74。在步骤S70中,计数器CPT接收要比较的两个区块的区块大小值(以字数为单位)。例如从寄存器LNRG 读取加载在计数器CPT中的所述值。在步骤S71中,将计数器CTF、CTT 初始化为0。步骤S72包括使用要比较的两个区块中要读取的字的地址为变量AD1、AD2赋值。使用应用于区块的开始地址和要比较的区块的大小的函数F1,能确定加载在变量AD1和AD2中的所述值。能在寄存器ARG1、 ARG2中读取要比较的两个区块的开始地址。函数F1能够是从函数F1先前提供的地址(始于要比较的区块的开始地址)开始的简单递增函数。函数F1能够基于区块的大小和先前选择的等级,将每个区块中的字的等级 (rank)的随机或伪随机选择函数与用于根据所选择的等级和该区块的开始地址来确定要读取和比较的字的地址的函数相组合。
在步骤S73中,从存储器MEM读取在步骤S72中确定的地址AD1、 AD2处取回的字D1、D2。在步骤S74中,比较在步骤S73中读取的字D1 和D2。取决于字D1和D2是否相等,执行步骤S75或S76。在步骤S75 中,使对所比较的区块中相等的字的数量计数的计数器CTT递增。在步骤S76中,使对所比较的区块中不同的字的数量计数的计数器CTF递增。注意,步骤S76是可选的。在步骤S75和S76之后的步骤S77中,计数器 CPT递减。在步骤S78中,计数器CPT被与0进行比较并且如果其比0 大,则在步骤S72中继续执行程序BCP。当计数器CPT已经达到值0时,在步骤S78之后执行步骤S79和S80。然后应该比较两个区块的所有字。在步骤S79中,调用功能SCP以将计数器CTT与要比较的区块的字的数量LNRG相比较。在步骤S80中,计数器CTT被直接与每个要比较的区块的字的数量LNRG相比较。取决于两个数量CTT和LNRG是相同还是不同,执行步骤S81或S82。它们是相同的意味着要比较的两个区块是相同的。因此,步骤S81包括激活标志FLT和执行用于检查在步骤S79中计算的比较变量与标志FLT的值之间的一致性的功能。步骤S82包括使能标志FLF和执行用于检查在步骤S79中计算的比较变量与标志FLT的值之间的一致性的功能。
在步骤S81和S82之后可能是步骤S83。在步骤S83中调用的功能 CPCK能具体地检查计数器CTT与CTF的和等于要比较的区块的大小 LNRG。也能以与步骤S79到S82中相同的方式检查计数器CTF,从而知道如果计数器CTT等于要比较的数据区块的大小,则CTF应为0。此外,如果要比较的两个区块被认为始终不同,则仅能计算和检查计数器CTF。
如上文那样,通过调用在比较测试前的功能SCP和用于根据比较结果使能标志FLT和FLF的功能,也能检查在步骤S74中完成的要比较的两个区块的每个字的比较测试。
图8示出了可替代图7中的程序BCP的BCP1。程序BCP1包括步骤 S70、S72、S73、S77、S78以及S81到S83、以及步骤S90到S93。在程序BCP1开始处执行步骤S90以例如在步骤S70和S72之间将和S1、S2 初始化为0。在步骤S73与S77之间执行步骤S91。在步骤S91中,在步骤S73中读取的数据被各自加到和S1、S2。计数器CPT的值也能被加到两个和S1、S2中的一者(在图8的示例中加到S1)。在步骤S78之后执行步骤S92、S93。在步骤S92中,调用功能SCP以比较两个和S1、S2。在要比较的区块相同的情况下,和S1、S2相同。另一方面,即使在要比较的区块不同的情况下,和S1、S2也可能相同。因此,和S1、S2的相等性对于判定要比较的区块是否相同不是充分条件。在步骤S93中,直接比较和S1、S2。取决于两个和S1、S2是相同还是不同,执行步骤S81或S82。在步骤S81和S82之后可能是步骤S83。
根据一个实施例,在步骤S91中,计数器CPT的值在每次迭代处也被加到两个和S1、S2中的一者(在图8的示例中加到S1)。因此,在执行步骤S92和S93之前,从相应的和(S1)减去计数器CPT的连续值之和,需要谨记的是计数器CPT的连续值之和等于LNRG x(LNRG+1)/2。因此,如果比较迭代之一未被执行或已被在执行两次,则如此从和S1减去的值不与已被加到此和的计数器CPT的值相对应,并且将认为区块不同。以此方式,在和S1、S2相同的情况下,可以检查已经比较区块的所有字。
程序BCP或BCP1能完全由CCP电路完成,或仅在比较两个数据项时完成,如在步骤S74、S80或S93中那样。
根据一个实施例,同时或相继地执行程序BCP或BCP1。然后,可以比较由这两个程序提供的比较结果,并且在比较结果不同的情况下,可以使能错误信号ER。
图9示出了根据一个实施例的电路CCP。电路CCP包括能执行上述功能的电路,所述功能如下:安全比较SCP;借助相干检查发出标志FLT 和FLF;可选地,区块比较功能BCP;以及用于检查测试的正确执行的功能CPCK。电路CCP也可包括输入/输出寄存器,例如:
地址寄存器ARG1、ARG2,它们用于要比较的数据或区块;
寄存器LNRG,其用于要比较的区块的大小,在仅比较两个字(区块包括单个字)的情况下,寄存器LNRG被设为1;
寄存器VRG,其可以接收要与由寄存器ARG1指示的地址处的数据相比较的值;
控制寄存器OPRG;以及
状态寄存器STRG。
控制寄存器OPRG可以例如取以下值:
-01,其使能区块比较功能SCP或BCP,功能SCP或BCP应用于位于寄存器ARG1、ARG2中指定的地址处并且其大小在寄存器LNRG中指定的两个数据项或区块,如果包含在寄存器LNRG中的值等于1,则功能 SCP被激活;
-02,其使能功能SCP以将地址ARG1处的数据项与在寄存器VPG 中提供的值相比较;
-03,其使能检查功能CPCK;
-04,其使能标志FLT并检查此状态与由功能SCP或BCP计算的比较值的一致性;以及
-05,其使能标志FLF并检查此状态与由功能SCP或BCP计算的比较值的一致性。
状态寄存器可以例如提供比较变量CP1-CP4的值。
对于本领域的技术人员将显而易见的是,本发明易于具有各种替代和应用。具体地,本发明不必借助专用协处理器实现。实际上,由电路CCP 实现的所描述的功能可以以由处理器PRC调用的编程功能的形式实施。信号ER的激活例如能够通过引起处理器PRC的中断或异常来实现。

Claims (11)

1.一种用于保护处理器对操作的执行的方法,所述方法包括:
由处理器或连接到所述处理器的协处理器执行两个数据项的比较操作,由所述比较操作提供的比较结果确定所述两个数据项是否彼此一致,
由所述处理器在由所述比较操作提供的所述比较结果的基础上,选择第一操作,其中:
当所述比较结果为所述两个数据项彼此一致时,所述第一操作被选择,以及
当所述比较结果为所述两个数据项彼此不一致时,所述第一操作不被选择,
由所述处理器或所述协处理器计算代表所述两个数据项的相等性的比较变量,
由所述处理器或所述协处理器基于检查由所述比较变量代表的所述两个数据项的所述相等性与所述比较结果是否一致,检查所计算的比较变量与由所述处理器选择或不选择所述第一操作是否一致,以及
由所述协处理器在所计算的比较变量彼此不一致或与所述比较结果不一致的情况下,使能错误信号。
2.根据权利要求1所述的方法,其中所述比较操作后面跟着第二操作和第三操作,
在所述比较操作确定所述两个数据项相同的情况下,所述第二操作被选择,
在所述比较操作确定所述两个数据项不同的情况下,所述第三操作被选择,在执行所述比较操作后面跟着基于检查由所述比较变量代表的所述两个数据项的所述相等性与所述比较结果是否一致,检查所计算的比较变量与选择或不选择所述第一操作是否一致。
3.根据权利要求1或2所述的方法,其中所述比较变量包括以下比较变量中的至少两个:
第一二进制比较变量,其值取决于所述两个数据项的相等性,
第二二进制比较变量,其等于通过逻辑或运算对第一二进制字的位的组合,所述第一二进制字源自通过逻辑异或运算对所述两个数据项的逐位组合,
第三二进制比较变量,其等于通过逻辑与运算对第二二进制字的位的组合,所述第二二进制字源自通过逻辑或运算将所述两个数据项中的一个数据项的二进制的补码与所述两个数据项中的另一个数据项逐位组合,以及
第四二进制比较变量,其等于通过逻辑或运算对第三二进制字的位的组合,所述第三二进制字源自通过逻辑与运算将所述两个数据项中的一个数据项的二进制的补码与所述两个数据项中的另一个数据项逐位组合。
4.根据权利要求3所述的方法,其中在每次计算所计算的比较变量时从存储器读取所述两个数据项中的至少一个所述数据项。
5.根据权利要求1或2所述的方法,包括以下至少一者:在所述两个数据项相同的情况下使能第一标志;以及在所述两个数据项不同的情况下使能第二标志。
6.根据权利要求1或2所述的方法,其中所述两个数据项是具有多个字的区块,要比较的所述区块中的一个区块的每个字被与要比较的所述区块中的另一区块的对应字单独地比较,
所述方法包括以下步骤:对要比较的两个区块之间相同的字的数量进行计数,其中所述比较操作将所述要比较的两个区块之间相同的字的数量与要比较的每个区块中的字数进行比较。
7.根据权利要求6所述的方法,所述方法包括以下步骤:对要比较的两个区块之间不同的字的数量进行计数;以及检查所述要比较的两个区块之间相同的字的数量与不同的字的数量之和等于所述要比较的每个区块中的字数。
8.根据权利要求1或2所述的方法,其中所述两个数据项是具有多个字的区块,要比较的所述区块中的一个区块的每个字被与要比较的所述区块中的另一区块的对应字单独地比较,所述方法包括以下步骤:计算要比较的每个区块的字数和;所述比较操作比较所述要比较的每个区块的字数和。
9.根据权利要求8所述的方法,其中要比较的所述区块中的一个区块的字数和中的第一字数和包括对该区块的字计数的字计数器的相继值,所述方法包括以下步骤:根据要比较的每个区块中的字数,计算所述字计数器的所述相继值的和;以及通过从所述第一字数和中减去所计算的所述字计数器的所述相继值的和来修改所述第一字数和。
10.一种用于保护由处理器执行的操作中的测试的执行的电子设备,所述电子设备包括存储指令的存储器、所述处理器、以及连接到所述处理器的协处理器,所述指令在由所述处理器或所述协处理器执行时使得所述处理器或所述协处理器实施根据权利要求1到9中的任一项所述的方法。
11.一种计算机存储介质,其存储指令,当所述指令被执行时,由处理器或协处理器实施根据权利要求1到9中的任一项所述的方法。
CN201680027175.9A 2015-05-13 2016-05-10 一种用于保护处理器对程序的执行的方法、装置和存储介质 Active CN107637009B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1554348 2015-05-13
FR1554348A FR3036203B1 (fr) 2015-05-13 2015-05-13 Procede de securisation d’une comparaison de donnees lors de l’execution d’un programme
PCT/FR2016/051090 WO2016181062A1 (fr) 2015-05-13 2016-05-10 Procede de securisation d'une comparaison de donnees lors de l'execution d'un programme

Publications (2)

Publication Number Publication Date
CN107637009A CN107637009A (zh) 2018-01-26
CN107637009B true CN107637009B (zh) 2021-04-30

Family

ID=54329612

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680027175.9A Active CN107637009B (zh) 2015-05-13 2016-05-10 一种用于保护处理器对程序的执行的方法、装置和存储介质

Country Status (5)

Country Link
US (1) US11989609B2 (zh)
EP (1) EP3295297B1 (zh)
CN (1) CN107637009B (zh)
FR (1) FR3036203B1 (zh)
WO (1) WO2016181062A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055409B2 (en) * 2019-01-06 2021-07-06 Nuvoton Technology Corporation Protected system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5621909A (en) * 1996-03-12 1997-04-15 International Business Machines Corporation Specialized millicode instruction for range checking
CN1397121A (zh) * 2000-02-04 2003-02-12 印芬龙科技股份有限公司 产生正交可变扩展因子的方法及装置
WO2005055021A1 (en) * 2003-12-04 2005-06-16 Axalto Sa Method to secure the execution of a program against attacks by radiation or other
CN102541713A (zh) * 2010-12-14 2012-07-04 施耐德电器工业公司 用于监视装备有微处理器的设备的方法和设备
CN103188075A (zh) * 2013-02-01 2013-07-03 广州大学 一种密钥和真随机数发生器及生成密钥和真随机数的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201642B2 (en) * 2013-03-15 2015-12-01 International Business Machines Corporation Extending platform trust during program updates
WO2014203031A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Device and method for executing a program, and method for storing a program
FR3007552B1 (fr) * 2013-06-24 2016-10-28 Stmicroelectronics Rousset Procede securise de comparaison de deux operandes et dispositif correspondant

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5621909A (en) * 1996-03-12 1997-04-15 International Business Machines Corporation Specialized millicode instruction for range checking
CN1397121A (zh) * 2000-02-04 2003-02-12 印芬龙科技股份有限公司 产生正交可变扩展因子的方法及装置
WO2005055021A1 (en) * 2003-12-04 2005-06-16 Axalto Sa Method to secure the execution of a program against attacks by radiation or other
CN102541713A (zh) * 2010-12-14 2012-07-04 施耐德电器工业公司 用于监视装备有微处理器的设备的方法和设备
CN103188075A (zh) * 2013-02-01 2013-07-03 广州大学 一种密钥和真随机数发生器及生成密钥和真随机数的方法

Also Published As

Publication number Publication date
US11989609B2 (en) 2024-05-21
US20180144228A1 (en) 2018-05-24
FR3036203B1 (fr) 2017-05-19
EP3295297B1 (fr) 2020-10-14
FR3036203A1 (fr) 2016-11-18
CN107637009A (zh) 2018-01-26
WO2016181062A1 (fr) 2016-11-17
EP3295297A1 (fr) 2018-03-21

Similar Documents

Publication Publication Date Title
EP3220306B1 (en) Method of testing the resistance of a circuit to a side channel analysis
Dupuis et al. A novel hardware logic encryption technique for thwarting illegal overproduction and hardware trojans
Trichina et al. Multi fault laser attacks on protected CRT-RSA
EP3503466B1 (en) Countermeasures to frequency alteration attacks on ring oscillator based physical unclonable functions
US8918679B2 (en) Apparatus and method for checking an error detection functionality of a data processor
US9087192B2 (en) Electronic circuit and method for monitoring a data processing
US8688995B2 (en) Method and apparatus for detection of a fault attack
Karousos et al. Weighted logic locking: a new approach for IC piracy protection
Tunstall Smart card security
KR20190020632A (ko) 부 채널 분석에 대한 회로의 저항성을 테스트하는 방법
US20130312110A1 (en) Protection of applets against hidden-channel analyses
US20020169969A1 (en) Information processing unit having tamper - resistant system
CN107637009B (zh) 一种用于保护处理器对程序的执行的方法、装置和存储介质
US11263313B2 (en) Securing execution of a program
US11349635B2 (en) Fault attack resistant cryptographic systems and methods
CN113228012A (zh) 用于鉴别fpga配置的方法和设备
US12008244B2 (en) Secure non-volatile memory
Sakamoto et al. How to code data integrity verification secure against single-spot-laser-induced instruction manipulation attacks
JP4351131B2 (ja) 情報処理装置、および、情報処理装置のエラー検出方法
Pomeranz et al. Reduced Fault Coverage as a Target for Design Scaffolding Security
CN115221564A (zh) 芯片及芯片的检测方法
Mayes et al. Smart Card Security
Bahuguna Review of Smartcard Attacks and Countermeasures

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Fa Guomeileyi

Applicant after: Weimei Anshi Co., Ltd

Address before: Fa Guomeiyueer

Applicant before: Inside Secure

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200325

Address after: California, USA

Applicant after: Rambus Inc.

Address before: Fa Guomeileyi

Applicant before: Weimei Anshi Co., Ltd

GR01 Patent grant
GR01 Patent grant