CN101989188A - 可编微程序设备代码签名 - Google Patents
可编微程序设备代码签名 Download PDFInfo
- Publication number
- CN101989188A CN101989188A CN201010249774XA CN201010249774A CN101989188A CN 101989188 A CN101989188 A CN 101989188A CN 201010249774X A CN201010249774X A CN 201010249774XA CN 201010249774 A CN201010249774 A CN 201010249774A CN 101989188 A CN101989188 A CN 101989188A
- Authority
- CN
- China
- Prior art keywords
- signature
- instruction
- code
- electronic equipment
- code memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Storage Device Security (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开一种可编微程序电子设备,其具有存储包含许多指令的软件和/或固件代码的代码存储器(23)。所述可编微程序电子设备被配置用来计算存储在代码存储器(23)中的代码的签名,并基于所计算出的签名检测存储在代码存储器(23)中的代码的任何损坏。可编微程序电子设备的特征在于,其进一步被配置用来根据指令周期(C1、C2、C3、C4)操作,每个指令周期被分成各自的第一操作阶段(C11;C21;C31;C41)和各自的第二操作阶段(C12;C22;C32;C42);用来在指令周期(C1、C2、C3、C4)的第一操作阶段(C11;C21;C31;C41)从所述代码存储器(23)中读取第一指令(I1;I2;I3;I4);用来在所述指令周期(C1、C2、C3、C4)的第二操作阶段(C12;C22;C32;C42)解码并执行所读取的第一指令(I1;I2;I3;I4);用来在所述指令周期(C1、C2、C3、C4)的第二操作阶段(C12;C22;C32;C42)从所述代码存储器(23)中读取第二指令(W1;W2;W3;W4);以及用来基于所读取的第二指令(W1;W2;W3;W4)计算所述签名。
Description
技术领域
本发明大体涉及一种可编微程序设备,具体涉及一种被配置用来执行代码、同时检查代码未被损坏(corrupt)的可编微程序设备。
背景技术
众所周知,可编微程序设备是一种包括下述元件的电子设备:处理器;存储软件和/或固件代码的代码存储器,当所述可编微程序设备使用时,所述处理器执行该代码;和数据存储器,在执行该代码时所使用的变量的值被存储在数据存储器中。
众所周知,可编微程序设备的代码存储器的内容(即,代码)可因可编微程序设备所暴露的电磁干扰(EMI)而被改变(即,损坏)。
为确定代码的损坏,因而循环计算代码签名并将其与参考签名相比较。
更具体地,签名计算包括涉及所有存储在代码存储器中的要素的数字-逻辑计算,并且该计算是由处理器基于签名计算函数而进行的,该签名计算函数构成存储在代码存储器中的代码的一部分。
另一方面,参考签名在编译可编微程序设备代码时被计算,并且与代码同时被存储在可编微程序设备代码存储器中。
签名计算函数由处理器周期性地执行,并且通常具有最低的优先级,即,当处理器不执行其他代码函数时才执行签名计算函数。
如果处理器计算的签名与存储在代码存储器中的参考签名不符,可编微程序设备即被禁用以防止损害。
但是,申请人已观察到,当代码被损坏时,不可能预测代码执行的进展(development),这意味着,当代码被损坏时,不再能确保签名计算函数的执行。
更具体地,当代码被损坏时,签名可能被错误地计算,更严重的是,可能停止被处理器计算,因而代码的损坏可能永不被检测到。
发明内容
因此,本发明的目的在于提供一种可以削弱(alleviate)上述缺陷的可编微程序设备。
该目的是通过本发明来实现的,其中本发明涉及一种可编微程序电子设备,该设备包括存储包含许多指令的软件和/或固件代码的代码存储器,所述可编微程序电子设备被配置用来:
计算存储在代码存储器中的代码的签名;和
基于所计算出的签名来检测存储在代码存储器中的代码的任何损坏;
所述可编微程序电子设备的特征在于,其被进一步配置用来:
根据指令周期操作,每个指令周期被分成各自的第一操作阶段和各自的第二操作阶段;
在指令周期的第一操作阶段从代码存储器中读取第一指令;
在所述指令周期的第二操作阶段解码并执行所读取的第一指令;
在所述指令周期的第二操作阶段从所述代码存储器中读取第二指令;
基于所读取的第二指令计算所述签名。
附图说明
为更好地理解本发明,现将参考附图(未按比例绘制)来描述优选的实施方式,该实施方式仅是示例性的并且不能被解释为对本发明的限制,其中:
图1显示由本发明的可编微程序电子设备进行的各种操作关于指令周期和该可编微程序电子设备的时钟(clock)的时序图;
图2显示本发明优选实施方式的可编微程序电子设备的操作结构图。
具体实施方式
以下描述用来使本领域技术人员制造和使用本发明。对这些实施方式的各种修改对于本领域技术人员来说将是显而易见的,且不背离要求保护的本发明的范围。
因此,本发明不限于所显示的实施方式,而应给予与本文公开的原理和特征相一致的且在所附权利要求中限定出的最大范围。
根据本发明,其提供一种可编微程序电子设备,该设备包括存储包含多个指令的软件和/或固件代码的代码存储器,所述可编微程序电子设备被配置用来:
计算存储在代码存储器中的代码的签名;和
基于所计算出的签名来检测存储在代码存储器中的代码的任何损坏。
本发明的可编微程序电子设备的特征在于,其进一步被配置用来:
根据指令周期操作,每个指令周期被分成各自的第一操作阶段和各自的第二操作阶段;
在指令周期的第一操作阶段从代码存储器中读取第一指令;
在所述指令周期的第二操作阶段解码并执行所读取的第一指令;
在所述指令周期的第二操作阶段从所述代码存储器中读取第二指令;
基于所读取的第二指令计算所述签名。
根据本发明,代码中的每个指令的执行因而被分成两个操作阶段,如同两级输送管道一样。
也就是说,在指令周期的第一操作阶段,代码存储器被用来读取代码的指令,并且在该指令周期的第二操作阶段,当所读取的指令被解码和执行时,代码存储器被用来读取用于签名计算的指令。
更具体地,本发明的可编微程序电子设备包括签名计算单元,该签名计算单元被配置用来:
在所述指令周期的第二操作阶段从所述代码存储器中读取所述第二指令;
基于所读取的第二指令计算所述签名;和
基于所计算出的签名来检测存储在代码存储器中的代码的任何损坏。
所述签名计算单元优选也被配置用来:
将所述计算出的签名与参考签名比较;和
如果所述计算出的签名与参考签名不同,禁用所述可编微程序电子设备的操作。
所述签名计算单元也被便利地配置用来:
从所述代码存储器中读取所述参考签名。
为更清楚地理解本发明,图1显示了由本发明可编微程序电子设备进行的各种操作的关于指令周期和该可编微程序电子设备的时钟的时序图。
更具体地,图1时序图从上至下显示:
可编微程序电子设备的时钟的时距图;
可编微程序电子设备对应于时钟的时距图的指令周期C1、C2、C3和C4;
从可编微程序电子设备的代码存储器提取第一指令I1、I2、I3和I4的第一提取操作FETCH I1、FETCH I2、FETCH I3和FETCH I4相对于指令周期C1、C2、C3、C4以及可编微程序电子设备的时钟的时间安排,所述第一提取操作FETCH I1、FETCH I2、FETCH I3和FETCH I4是由可编微程序电子设备的提取单元进行的;
从代码存储器提前第二指令W1、W2、W3和W4的第二提取操作FETCH W1、FETCH W2、FETCH W3和FETCH W4相对于指令周期Cl、C2、C3、C4以及可编微程序电子设备的时钟的时间安排,所述第二提取操作FETCH W1、FETCH W2、FETCH W3和FETCH W4是由可编微程序电子设备的签名计算单元进行的;和
所述第一指令I1、I2、I3和I4的解码和执行操作D&E I1、D&E I2、D&E I3和D&E I4相对于指令周期C1、C2、C3、C4以及可编微程序电子设备的时钟的时间安排,所述解码和执行操作D&E I1、D&E I2、D&E I3和D&E I4是由可编微程序电子设备的解码和执行单元进行的。
更具体地,如图1所示,可编微程序电子设备的时钟频率是指令周期C1、C2、C3、C4的频率的两倍,每个指令周期包含第一操作阶段(在图1中分别标示为C11、C21、C31、C41)和第二操作阶段(在图1中分别标示为C12、C22、C32、C42)。
而且,如图1所示,在第一操作阶段C11、C21、C31、C41,可编微程序电子设备的提取单元进行从代码存储器中提取第一指令I1、I2、I3和I4的第一提取操作FETCH I1、FETCH I2、FETCH I3和FETCH I4,即,在代码存储起中搜索和读取第一指令I1、I2、I3和I4。
在第二操作阶段C12、C22、C32、C42,签名计算单元进行从代码存储器中提取第二指令W1、W2、W3和W4的第二提取操作FETCH W1、FETCHW2、FETCH W3和FETCH W4,即,签名计算单元在代码存储起中搜索和读取第二指令W1、W2、W3和W4,同时,解码和执行操作单元进行所述第一指令I1、I2、I3和I4的解码和执行操作D&E I1、D&E I2、D&E I3和D&E I4。
为更加清楚地理解本发明,除图1之外,图2显示了根据本发明的优选实施方式的可编微程序电子设备20的操作结构图。
更具体地,可编微程序电子设备20包括:
提取单元21;
复用器22;
存储包含多个指令的代码的代码存储器23;
锁存器24;
解码和执行单元25;和
签名计算单元26。
更具体地,提取单元21被配置用来从代码存储器23中取回要被执行的指令,从而为复用器22提供程序计数器,即,提供要被执行的指令的指示器(即,地址)。
同样地,数字计算单元26被配置用来从代码存储器23中取回要被用于代码签名计算的指令,从而为复用器22提供要被用于代码签名计算的指令的地址。
复用器22受控制信号控制,因而要被执行的或要被用于代码签名计算的指令在存储器23中被读取,即,要被执行的指令或要被用于代码签名计算的指令被从代码存储器23中取回。
例如,参考图1和图2,复用器22可方便地被可编微程序电子设备的时钟控制,从而在时钟的上升沿(rising edge)将从代码存储器23中读取第一指令I1、I2、I3和I4替代为读取第二指令W1、W2、W3和W4。
更具体地,在第一操作阶段C11、C21、C31、C41,复用器22允许从代码存储器23中读取/取回第一指令I1、I2、I3和I4,并存储在锁存器24中,并且在第二操作阶段C12、C22、C32、C42,复用器22允许签名计算单元26从代码存储器23中读取/取回第二指令W1、W2、W3和W4。
在第二操作阶段C12、C22、C32、C42,解码和执行单元25也读取和解码并执行存储在锁存器24中的第一指令I1、I2、I3和I4。
解码和执行单元25随后更新提取单元21的程序计数器以指向要被执行的另一个指令,该另一个指令在逻辑上遵循刚被执行的那个指令。
最终,在基于存储在代码存储器23中的所有指令计算签名后,签名计算单元26将计算出的签名与存储在代码存储器23中的参考签名比较。
如果所计算出的签名不同于参考签名,签名计算单元26禁用可编微程序电子设备20的操作(即使该设备失效),从而防止其引起任何损害。
签名计算单元26为计算签名并将计算出的签名与参考签名比较而进行的操作可优选地基于循环冗余校验(CRC)法,例如CRC-32(32位)。
可编微程序电子设备20可便利地包括被配置用来执行提取单元21、锁存器24和解码和执行单元25的第一处理器,以及被配置用来执行数字计算单元26的协处理器。在这种情况下,处理器和协处理器通过复用器22共用代码存储器23。
本发明的优点由于以上描述而变得清楚。
特别地,重要的是要注意到,用于计算本发明的签名的时间是如何可预测的,并且该时间等于存储在代码存储器中的指令的数目乘以指令周期的长度(即操作阶段的长度的2倍)。
另一个优点在于,当代码被损坏时,数字的正确计算未受代码存储器的内容或代码存储器的内容的任何损坏的影响。
明显地,可对本发明作出改变,但是不背离如所附权利要求书界定出的本发明的范围。
Claims (9)
1.一种可编微程序电子设备,其包括存储有包含许多指令的软件和/或固件代码的代码存储器(23),所述可编微程序电子设备被配置用来:
计算存储在所述代码存储器(23)中的代码的签名;和
基于所计算出的签名来检测存储在所述代码存储器(23)中的代码的任何损坏;
所述可编微程序电子设备的特征在于,其被进一步配置用来:
根据指令周期(C1、C2、C3、C4)操作,每个指令周期被分成各自的第一操作阶段(C11;C21;C31;C41)和各自的第二操作阶段(C12;C22;C32;C42);
在指令周期(C1、C2、C3、C4)的第一操作阶段(C11;C21;C31;C41)从所述代码存储器(23)中读取第一指令(I1;I2;I3;I4);
在所述指令周期(C1、C2、C3、C4)的第二操作阶段(C12;C22;C32;C42)解码并执行所读取的第一指令(I1;I2;I3;I4);
在所述指令周期(C1、C2、C3、C4)的第二操作阶段(C12;C22;C32;C42)从所述代码存储器(23)中读取第二指令(W1;W2;W3;W4);
基于所读取的第二指令(W1;W2;W3;W4)计算所述签名。
2.如权利要求1所述的可编微程序电子设备,其还包括签名计算单元(26),所述签名计算单元被配置用来:
在所述指令周期(C1、C2、C3、C4)的第二操作阶段(C12;C22;C32;C42)从所述代码存储器(23)中读取所述第二指令(W1;W2;W3;W4);
基于所读取的第二指令(W1;W2;W3;W4)计算所述签名;和
基于所计算出的签名来检测存储在代码存储器(23)中的代码的任何损坏。
3.如权利要求2所述的可编微程序电子设备,其中所述签名计算单元(26)还被配置用来:
还基于存储在所述代码存储器(23)中的参考签名来检测存储在所述代码存储器(23)中的代码的所述任何损坏。
4.如权利要求3所述的可编微程序电子设备,其中所述签名计算单元(26)还被配置用来:
将所述计算出的签名与所述参考签名比较;和
如果所述计算出的签名与所述参考签名不同,检测存储在所述代码存储器(23)中的代码的所述任何损坏。
5.如权利要求3所述的可编微程序电子设备,其中所述签名计算单元(26)还被配置用来:
从所述代码存储器(23)中读取所述参考签名。
6.如权利要求2所述的可编微程序电子设备,其中所述签名计算单元(26)还被配置用来:
如果检测到存储在所述代码存储器(23)中的代码的所述任何损坏,则禁用所述可编微程序电子设备的操作。
7.如权利要求2所述的可编微程序电子设备,其中所述签名计算单元(26)还被配置用来:
基于循环冗余校验(CRC)法计算所述签名。
8.一种用于可编微程序电子设备的电子处理装置,其被配置成权利要求2所述的数字计算单元(26)。
9.一种包含指令的软件和/或固件产品,当所述指令被可编微程序电子设备的可编程处理装置执行时,所述指令使得所述可编程处理装置变得被配置成权利要求2所述的签名计算单元(26)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP09425316.8 | 2009-08-03 | ||
EP09425316.8A EP2284705B1 (en) | 2009-08-03 | 2009-08-03 | Microprogrammable device configured to detect corruption of the code memory based on code signature |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101989188A true CN101989188A (zh) | 2011-03-23 |
CN101989188B CN101989188B (zh) | 2013-04-17 |
Family
ID=41479188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010249774XA Active CN101989188B (zh) | 2009-08-03 | 2010-08-03 | 可编微程序设备代码签名 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8751869B2 (zh) |
EP (1) | EP2284705B1 (zh) |
CN (1) | CN101989188B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102015112143B4 (de) * | 2015-07-24 | 2017-04-06 | Infineon Technologies Ag | Ein Verfahren zum Bestimmen einer Integrität einer Ausführung eines Codefragments und ein Verfahren zum Bereitstellen einer abstrahierten Repräsentation eines Programmcodes |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4493078A (en) * | 1982-09-29 | 1985-01-08 | Siemens Corporation | Method and apparatus for testing a digital computer |
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 |
US6105154A (en) * | 1998-05-29 | 2000-08-15 | Lucent Technologies, Inc. | Multi-bus multi-data transfer protocols controlled by a bus arbiter coupled to a CRC signature compactor |
US6415394B1 (en) * | 1999-05-10 | 2002-07-02 | Delphi Technologies, Inc. | Method and circuit for analysis of the operation of a microcontroller using signature analysis during operation |
US20050251708A1 (en) * | 2004-04-21 | 2005-11-10 | Stmicroelectronics Sa | Microprocessor comprising error detection means protected against an attack by error injection |
US20060236100A1 (en) * | 2005-04-19 | 2006-10-19 | Guruprasad Baskaran | System and method for enhanced layer of security to protect a file system from malicious programs |
US20070074031A1 (en) * | 2005-09-29 | 2007-03-29 | Research In Motion Limited | System and method for providing code signing services |
CN101034991A (zh) * | 2007-04-06 | 2007-09-12 | 中兴通讯股份有限公司 | 安全引导系统及方法、代码签名构造方法及认证方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409546B2 (en) * | 1999-10-20 | 2008-08-05 | Tivo Inc. | Cryptographically signed filesystem |
-
2009
- 2009-08-03 EP EP09425316.8A patent/EP2284705B1/en active Active
-
2010
- 2010-08-02 US US12/848,857 patent/US8751869B2/en active Active
- 2010-08-03 CN CN201010249774XA patent/CN101989188B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4493078A (en) * | 1982-09-29 | 1985-01-08 | Siemens Corporation | Method and apparatus for testing a digital computer |
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 |
US6105154A (en) * | 1998-05-29 | 2000-08-15 | Lucent Technologies, Inc. | Multi-bus multi-data transfer protocols controlled by a bus arbiter coupled to a CRC signature compactor |
US6415394B1 (en) * | 1999-05-10 | 2002-07-02 | Delphi Technologies, Inc. | Method and circuit for analysis of the operation of a microcontroller using signature analysis during operation |
US20050251708A1 (en) * | 2004-04-21 | 2005-11-10 | Stmicroelectronics Sa | Microprocessor comprising error detection means protected against an attack by error injection |
US20060236100A1 (en) * | 2005-04-19 | 2006-10-19 | Guruprasad Baskaran | System and method for enhanced layer of security to protect a file system from malicious programs |
US20070074031A1 (en) * | 2005-09-29 | 2007-03-29 | Research In Motion Limited | System and method for providing code signing services |
CN101034991A (zh) * | 2007-04-06 | 2007-09-12 | 中兴通讯股份有限公司 | 安全引导系统及方法、代码签名构造方法及认证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101989188B (zh) | 2013-04-17 |
US20110191636A1 (en) | 2011-08-04 |
EP2284705A1 (en) | 2011-02-16 |
EP2284705B1 (en) | 2018-04-25 |
US8751869B2 (en) | 2014-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810014B2 (en) | Method and apparatus for guest return address stack emulation supporting speculation | |
Jeong et al. | Generic unpacking using entropy analysis | |
TWI506544B (zh) | 來自多指令集的指令解碼 | |
US10248424B2 (en) | Control flow integrity | |
RU2009109242A (ru) | Способ и устройство для выполнения инструкций процессора на основе динамически изменяемой задержки | |
US9513925B2 (en) | Marking long latency instruction as branch in pending instruction table and handle as mis-predicted branch upon interrupting event to return to checkpointed state | |
RU2602335C2 (ru) | Способ и устройство для предсказания ветвлений | |
CN101911016B (zh) | 计算机系统和操作计算机的方法 | |
WO2017048406A1 (en) | Error-checking compressed streams in hetergeneous compression accelerators | |
US20060168485A1 (en) | Updating instruction fault status register | |
US9176739B2 (en) | System and method for checking run-time consistency for sequentially and non-sequentially fetched instructions | |
GB2526648A (en) | Storing a computer program in program memory | |
US9495138B1 (en) | Scheme for verifying the effects of program optimizations | |
CN101989188B (zh) | 可编微程序设备代码签名 | |
KR100953785B1 (ko) | 프로세서 시스템 및 예외 처리 방법 | |
CN111522584A (zh) | 一种硬件循环加速处理器及其执行的硬件循环加速方法 | |
CN105573814A (zh) | 一种java卡局部变量字节码采用芯片硬件解析执行的方法 | |
CN102360283B (zh) | 一种微处理器子程序调用的处理方法及其装置 | |
US9262168B2 (en) | Computer processor with instruction for execution based on available instruction sets | |
JP7077862B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US11068269B1 (en) | Instruction decoding using hash tables | |
EP1990719A2 (en) | Industrial controller | |
JP2007317083A (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
Bai et al. | Analysing indirect jump based on critical semantic subtree | |
JPH03138727A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |