CN1239973C - 不可预测的集成电路 - Google Patents
不可预测的集成电路 Download PDFInfo
- Publication number
- CN1239973C CN1239973C CNB988010259A CN98801025A CN1239973C CN 1239973 C CN1239973 C CN 1239973C CN B988010259 A CNB988010259 A CN B988010259A CN 98801025 A CN98801025 A CN 98801025A CN 1239973 C CN1239973 C CN 1239973C
- Authority
- CN
- China
- Prior art keywords
- program
- integrated circuit
- master routine
- unpredictable
- working storage
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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
- G06F21/755—Protecting 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 with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Microcomputers (AREA)
Abstract
本发明涉及一种不可预测的微处理器或微型计算机,它包括一个处理器(1),一个第一工作存储器(51),一个包括操作系统,一个主程序(P1)和一个第二程序(P2)的主存储器(6),其特征在于它还包括一个第二工作存储器(52);切换装置,它在程序运行期间切换使用两个工作存储器(51,52)中的一个作为工作存储器,同时保存其中的内容;这些切换装置包括至少一个寄存器组(54),用于存储在主存储器中的程序的运行的上下文,和一个用于工作存储器有效性的切换电路(53),以及与每个存储器(51,52,6)相关并由所述切换电器(53)所控制的访问寄存器(A1-A3)(D1-D3)。
Description
本发明涉及一种不可预测的微处理器或微型计算机。
已知,微处理器或微型计算机在一个或几个时序信号下顺序按步执行记录在存储器中的一个程序的大量指令,时序信号以供给微处理器或微型计算机的内部或外部的时钟信号为基准。
因为对于程序所预定的进程,其指令的执行是顺序的,通常与规则地定时处理器的时钟信号同步,所以掌握这种作为一个时间函数的程序执行方法的各个方面被证实是可能的。实际上,每个程序产生一系列指令,这些指令必须按预先已知的顺序执行并且每个指令的开始和结束的时刻由于指令是在一段时间内按一个预定进程被执行而是精确已知的。因此,原则上,由于运行的程序包括一个预定的指令序列,所以可以知道在该处理器的处理单元中在给定的时刻下哪条指令被执行。
例如,确定作为程序或处理单元启动部分的被执行指令数量,或确定从一个事件,一个外部或内部参考信号或再一次从处理器复位开始所经过的时间是可能的。
当一个微处理器或微型计算机使用在高安全性应用时,在微处理器或微型计算机中一个程序运行过程能被浏览的可能性成为了一个主要缺点。一个恶意的人因而能够找出该处理器的顺序状态并且利用这个信息获得与内部处理过程有关的许多机密结果。
例如,可以设想一个给定的操作可发生在不同时刻,它由一个确定的安全性操作结果而定,如测试内部保密信息或一个消息的解密或再一次对一些信息的完整性测试。根据上述的时刻例如在处理器上操作或通过实际研究获得某些寄存器的值并由此获得关于结果或信息的机密内容,甚至在加密计算情况下获得有关所使用的加密密钥是有可能的。
一些装置借助于装配能产生随机时钟脉冲的电路对微型计算机安全性提供最初的改进。在这种方式下,由于同步很快变成不能实现,事件的观察使得进行研究特别困难。
可是,这种解决方案具有许多缺点。
首先,因为没有一种能模拟象微型计算机这样复杂的电路随机操作的方法,使得这样的电路设计变得特别错综复杂和非常讲究的。其不规则的行为甚至使得在生产末期测试电路更加困难。为电路的确定而模拟一个随机时钟脉冲序列的确是非常困难的,但在控制所有处理器逻辑电路的所有行为,特别是在内部总线上和寄存器中信号切换期间更加困难。
这就是为什么一个最初的改进,即1996年3月7日申请的法国专利第9602903号,题为“改进的集成电路,用于该集成电路的处理(improved integrated circuit,process for use of such integratedcircuit)”的申请中允许在确定的和测试期,在通常周期时钟下处理器正常操作;处理器本身具有在保护方式或正常方式之间的自我切换能力。为确保安全性,很容易联想到上述模式仅能在一个口令或一个特定加密信息输入下才可被处理器激活。
除这些困难外,还有在一个随机时钟即安全无序形式控制下的时序期间,诊断错误的困难。实际上,在如此的无序条件下,一个问题怎样才能归结于一个错误部分呢,并且怎样才能确定错误出现的确切条件呢?
可以看出,尽管一个随机时钟的使用提供了一种理论上有趣的改进,但它不是一个令人满意的解决方案,并且最为重要的是实际上它是不容易实现的。
本发明的目的之一是为处理器配备用来禁止前述类型的探查的装置,并且更一般地说,是用完全控制的标准电路来完成一个简单设计并且用传统方法进行错误诊断,以阻止对处理器内部的行为进行非法观察。
本发明的目的事实上通过不可预测的微处理器或微型计算机实现的,它包括一个处理器、一个初始工作存储器、一个包含一个操作系统,一个主程序和一个第二程序的主存储器,其特征在于它还包括:
一个第二工作存储器;
切换装置,它使得在该程序执行期间,能够在保持其内容的情况下切换使用两个工作存储器的一个作为工作存储器;
这些切换装置包括至少一个记忆程序在主存储器中运行的上下文的寄存器组和一个确认工作存储器的切换电路和由所述切换电路控制的与每个存储器相关联的访问寄存器组。
根据另一个特例,它具有记忆第二程序运行上下文的一个第二寄存器组。
根据另一个特例,它具有使程序的运行过程与一个等时时钟相关的装置。
本发明的另一个目的是保证所述的装置的实现是由处理器本身保证的,以便任何由上述装置产生的附加安全性仅仅依赖于位于微型计算机内的操作系统的一个判定而且因此对恶意行为来说是不可预测的。
这个目的事实上是由主程序通过加载工作存储器确认电路和与每个工作存储器有关的记忆寄存器组来使能或禁止切换机制来完成的。
根据另一个特征,第二工作存储器和它的访问寄存器当由一个主程序使用时替换第一存储器和它的访问寄存器组。
本发明的第三个目的是在不必使用时钟和随机时序信号情况下使得执行时间与该程序本身无关。
这个目的是这样实现的,解相关装置包括一个随机发生器,它借助于一个中断电路触发一个中断,以通过随机连接到第二程序来解同步在处理器中程序的执行。
根据另一特征,该解相关装置包括一个与处理器1无关的计时系统,在时间计数到时,触发一个中断,以从第二程序返回到主程序。
根据另一个特征,切换工作存储器的装置或者由处理器和其程序控制,或者由一个随机中断系统或一个时间计数器控制,或由上述三种中的至少两种的任意组合方式控制。
本发明的第四个目的是避免寄存器切换被解释为一个直接或间接地访问机密信息的装置。
这个目的是这样实现的:工作存储器切换装置是由来自于执行一个主程序序列的处理器的一个改变确认的。
根据另一个特例,该第二程序使用一个与主存储器中的主程序相同的工作空间。
根据另一个特例,第二程序使用一个比主程序小的工作空间。
根据另一个特例,所述切换装置在一条微处理器指令执行周期内替换工作存储器和相关的上下文。
根据另一个特例,第二程序不修改主程序的全部的操作上下文,以便允许在不需任何重建该上下文的情况下返回到该主程序。
根据另一个特征,主程序的上下文在控制返回到主程序之前或者由第二程序自动重建,或者由切换装置自动重建。
根据另一个特例,它包括为主程序存储器替换第二程序存储器的装置。
根据另一个特征,主程序能交替或同时使用第一工作存储器和/或第二工作存储器。
根据另一个特征,加载切换电路能够屏蔽或中止屏蔽解相关中断。
根据另一个特征,返回到主程序是由一个中断完成的,该中断在切换寄存器被正确加载后,通过执行一个从主程序或第二程序的非屏蔽中断指令,由第二程序触发的。
根据另一个特例,它包括一块单片集成电路。
本发明的其它特例和优点参考附图阅读下面的说明将会更清楚明了,其中
图1是根据本发明一个实施例的该集成电路的电子图;
图2是在中断出现和一个非屏蔽中断确认时指令执行的时序图;
图3表示其中一个集成电路的存储寄存器的另一种加载电路的设计;
图4表示能返回到电路正常操作的程序部分P2的逻辑框图。
图1表示本发明的一个实施例。本发明所涉及的微处理器或微型计算机称为SUMIC(自身不可预测的微型计算机),它包括具有一个处理单元1的一个单片集成电路,一个带有要被执行的程序的非易失存储器6,一个带有其地址寄存器A2和它的数据寄存器D2的RAM51,以及提供例如在常规和不可预测时刻的脉冲的一个随机或伪随机信号发生器R1,一个中断电路4,一个寄存器电路R2,一个定时器R3,一个序列发生器电路8,一个非易失存储器7NVM,一个带有其地址寄存器A3和数据寄存器D3的易失类型的伪存储器(DumRAM)52,两个记忆返回正常操作参数的寄存器组54,55和一个切换电路53,它包括例如具有足够数量单元以校验地址寄存器A1和A3及数据寄存器D1和D3及存储寄存器的第一组54和第二组55的操作的一个寄存器。该切换电路53由处理单元1通过总线3加载。该切换电路53的状态尤其被用于确认该RAM和/或DumRAM是否在处理器的工作存储器空间内,或在该空间外。
在这个单片集成电路中,处理单元由一根总线3连接到不同存储器上,每个连接朝向一个具有相应地址的寄存器A1,A2,A3和一个相应数据的寄存器D1,D2,D3,每个地址和数据寄存器可通过分别从切换电路53引出的控制线531A,532A,536A和531D,532D,536D锁住。这个切换电路还包括三个其它的控制线,其中一个533接到带有两个输入的与门11上,与门的第二输入接收从中断电路中引出的一条总线线路31。该与门的输出被直接连到一个中断使能寄存器IER比特位,且仅当切换电路未被激活,即相应地线533非活动时用来屏蔽由中断电路4触发的中断。
其它的两条线534,535每个锁定两个锁定或堆栈或存储寄存器54,55中的一个。每个所述寄存器组具有多个存储寄存器54和55,分别用以存储将在下面描述的信息。这些寄存器54,55被连接到与各存储器共用的总线3上。这根总线3被用来加载根据所期望的工作模式使控制线531A,532A,532D,536A,536D,533,534,535激活或非激活时所需的值给切换电路53。非易失存储器6包括电路操作系统和一个随后称为主程序的初始应用程序P1和一个随后称为第二程序的第二个程序P2,序列发生器8,寄存器R2,定时器R3和随机发生器R1也连接到总线3,上述寄存器R2、定时器R3和随机发生器R1构成一个用于从一个等时时钟解相关上述各程序的运行的解相关装置并且连接到一个中断发生器电路4,该中断发生器电路4再连到使用该处理器的中断使能寄存器IER的处理器1的中断输入上,其中一个比特位常被保留并对特定于某些用户的应用有效。
在一个最初的实施例中,在非易失存储器6中包含的主程序P1在需要时通过总线3和一个在执行中没有任何困难的进程来修改切换电路状态。一瞬间,主程序P1通过作用于CE芯片使能输入使得为返回到正常操作第一组54所需的所有寄存器和一个存储组件有效,来切断主工作RAM51或这个存储器的一部分。这些存储器和寄存器最好是静态类型的,以便节省维护它们所需的能量。因此切换电路53用伪存储器52来替换主工作存储器51,以便使用专用的伪存储器而不是主工作存储器运行程序。所述伪存储器52可以与它所替换的存储器处在同一地址下,但也可处在不同地址下工作。一个有益的和经济的解决方案是为这个伪存储器使用一个非常小的RAM。实际上,这个伪存储器不对该主程序有功能作用,并且该可寻址空间通过简单地减小寻址寄存器A3的长度加以限制。它也可以通过在几个地址寄存器组之间建立的一个异或电路而在其自身“回迭(foldback)”地址。因而,如果主工作存储器可寻址空间是512字节,那么在没有困难的情况下可将伪存储器限定为32字节,因而引出一个非常经济的解决方案。该32字节能够例如对应于该主工作存储器矩阵简单地增加一条RAM存储线。在这种情况下,该线路将具有一个它自己的地址寄存器A3和失效数据寄存器D3。当切换电路53激活伪存储器时,它还可禁止任何对NVM的写入操作以便不扰乱它的内容。
为完成切换,有时交替使用两个寄存器组是有利的,第一组54和一个第二组55,每个包含执行程序所需的全部上下文并且尤其是与第一组54相应的程序计数器PC1和第二组55的PC2,第一组的数据寄存器D1和第二组55的数据寄存器D2,以及其它由符号T11,T12和T21,T22表示的寄存器。后面的寄存器T11,T12,T21,T22保存相同的操作参数,例如所使用的机器周期数。所有这些寄存器由切换电路53自动切换。地址的改变如同多数微型计算器的情况那样,在没有任何约束情况下通过使用一条特定指令把程序计数器的内容存到一个寄存器堆栈中直接完成。因而,在两个方向切换都是非常快的(通常比一个时钟周期更短),相当大地提高了设备的安全水平。同样的机制能用在如T11到T22的保存处理器操作上下文的其它寄存器上。
应当理解当程序P1通过加载切换寄存器而激活在伪模式下的集成电路的操作时,切换电路53将禁止第一寄存器组54,该寄存器组保存在伪电路操作之前的参数以便程序P1从被中断点重新开始。另一方面,第二寄存器组55将被用来使能具有相同伪存储器的电路正常操作以便执行程序P2。很显然,在这种情况下,对应于在伪模式下操作的中断屏蔽IER,寄存器的比特位将被中止屏蔽,以便在由随机发生器产生的、或由预先被随机发生器加载一个随机数并在时间的结束时由该随机数表示的定时器R3产生的,或由加载特定信息的寄存器R2产生的一个中断产生期间,触发该中断31,导致在程序P1控制下的正常操作转换为在程序P2控制下的伪模式操作。
图2示出了在中断方式下的操作。图中示出了由中断电路在线路31上向处理单元1传送的第一中断脉冲IT,因为其通过寄存器和使用加载数据到屏蔽寄存器的“传送立即数据到寄存器IER”指令的中断屏蔽方法被屏蔽掉了,所以未被考虑。假定当前指令不屏蔽转向中断(但它可以在不同时间由任何其它的指令完成)。在这种情况下,第二个脉冲被处理单元1响应引起切换电路53切换并且相应地,第二寄存器组55和伪RAM52代替第一组54和RAM伪存储器51变成激活态。值得注意的是中断确认仅在从一个状态到另一个状态的转换过程,例如在S2和S3之间才是可能的,以便记录一个稳定的和一致的机器状态并且,尤其是当中断程序返回时精确恢复相同的状态。如果该中断通常在一条指令结束的情况被确认,因为它通常在下一条指令时发生,所以当被中断的程序恢复时没有特别的问题。相反地,如果中断在一条指令执行期间发生,例如在状态S2,对于序列电路来说,显然有必要对它进行相同的重建,以便在被中断程序恢复时正确触发状态S3。这可以由例如在恢复时刻通过总线3在寄存器T11和序列发生器8之间的一个直接链接实现。该链接也可以是具体的而不通过总线3。更有利地可在序列发生器自身包括状态存储寄存器以避免在该阶段发生总线的流动。
这样,借助一个中断,主程序P1能如下所述启动和/或切换到一个第二程序P2。当第二程序不再是活动的时,切换电路53的状态改变且RAM工作存储器在没有任何改变下重新获得它的原始配置以便主程序能在其断点上精确恢复其过程。它还能够以这种方法实现,当主程序P1需要被保护时,通过一个第二程序P2的自身转换,在它选定的时刻即或者在开始时或者在过程期间,断开并产生一个随机长度,以便置乱的不同的序列。进程的操作然后能被第二程序P2控制,该第二程序例如能触发一个依赖于一个由随机发生器R1引出的随机数的时间长度而定的等待循环。第二程序可以使用未被主程序使用的部分存储器被执行,以便主程序能在下一条指令上第二程序移交新控制给它时,或又在下一次中断时,或再使用如前的定时器时,或使用一个二者的组合时,重新恢复主程序的正常进程。第二程序只要在控制转回到主程序之前重新建立主程序的上下文也可以使用共享资源。
有人可能会说这些机制类似于主程序转向第二程序的主程序分支程序的执行,后者在执行的末尾随后返回,但本发明尤其不同在于:
第二程序不执行任何与主程序强制性相关的功能,
伪存储器52的容量能比一个程序正常运行完毕所需容量更小,
伪存储器52的内容由于它完全隐藏了轨迹(covers the tracks)因而是不重要的。
在这种快速机制下,能够交叉第二程序和主程序的指令。
没有必要保存第二程序的上下文,因为后者只用于隐藏轨迹。
在一个第二实施例中,当处理器切换电路53的同时,它激活一个由随机发生器R1或从非易失存储器NVM7的内容起始(initialize)的定时器R3。例如E2PROM类型或一个铁电单元的所述NVM,的确能包含一个每次当NVM被使用时都改变的单一数值。当定时器R3在一段不可预测的时段后到时时,它触发返回到主程序并且切换该切换电路53从而使主存储器返回到工作空间。这种机制可以通过一个传统的中断或通过定时器R3直接作用于切换电路53以及作用于寄存器PC1和PC2,即通过处理单元1检查出如PC1和PC2的程序执行而被执行。
在一个可选的实施例中,主程序P1的任何部分,它最初指向一个随机选择的地址而后颠倒从该地址获得的字节和/或颠倒例如通过颠倒电缆或通过一个用于一个地址的内容的左移电路获得的例如寄存器ID2的内容,它可能作为第二程序P2使用。在这种方式下,我们也能够确信程序将执行一些非常奇异的指令。
另一个用于奇异指令执行的可选实施例如图3所示:其中一个译码临时指令的寄存器IDT一方面通过总线33的一部分被连接到总线3上,另一方面,通过总线34的一部分连接到使能存储电路状态的第二寄存器组55上。总线34的部分通过硬件连接到组55的寄存器ID2上,采用特定电缆连接寄存器IDT的比特位B7到寄存器ID2的比特位B4,寄存器IDT的比特位B6连接到寄存器ID2的比特位B1,寄存器IDT的比特位B5连接到寄存器ID2的比特位B3等等。
最后,一个最终的可选方案允许执行完全奇异的(指令)并且包括一个如图3所示的实施例。其中:总线3通过总线35的一部分连到IDT临时指令译码的寄存器上。总线的另一部分37连接这个IDT寄存器到一个带有几个输入的异或门39上。这个或门的其它输入通过总线38被连接到一个由使其与总线3相关的该总线的一部分36所加载的寄存器R′2上。这个寄存器R′2能由例如“传送寄存器R1(举例)到寄存器R′2”的指令被加载,如从一个随机发生器R1或一个定时器或一个非易失存储器NVM7中获得任何信息。这类移位指令对于微处理器领域的技术人员来说是很好理解的并不涉及任何实现上的困难。在来自寄存器R′2的信息和加载进IDT寄存器的值之间的异或是一个完全改变程序指令P2的途径并且因此执行一些非常奇异的指令。
在程序P2中有可能使用在一种随机方式下被调用的多序列,且每个序列将实现一系列在每个分支中需求不同的处理时间和不同处理器行为的不同指令。所述序列可随机被调用,例如在主程序执行跳转指令到第二程序后,后者从存储器7加载一个随机值V到两个寄存器,如微处理器1的T21和T22。第二程序增加该值V然后程序命令存储在非易失存储器7中递增的该值。在非易失存储器7中存储的该值被设计用于以后使用。第二程序然后采样几个在T21中的MSB或LSB以便获得一个值r,使得它能够从多个第二程序序列中确定被执行的程序序列。
在一个第三实施例中,随机发生器R1能被处理器1通过总线3借助于一个读指令以便查找出其状态,或借助于直接读一个确定的脉冲或借助于它们的几个的组合或借助于考虑从随机发生器R1加载的寄存器R2的内容而被查询。当主程序需要保护时,它以如前的机制的方式移交控制给第二程序。
显然地,通过一方面具有一个随机时钟和另一方面具有由自身或由一个授权或非授权的随机中断系统中断主程序的运行的可能性组合上述实施例的效果是可能的。
另外显然地,主程序按照根据随机发生器或者根据程序或定时器或第二程序,或一次同时依据二、三或四种要素而定的绝对不可预测序列被完成。当主程序执行从安全角度来讲敏感的功能时,它也具有正常操作的手段,例如,提供结果给外界或屏蔽定时器R3或随机发生器R1解相关中断并由此优化处理时间。一旦一个安全功能被实现,基本程序P1通过使解相关中断有效使能在随机模式下的操作以便“置乱”操作。
一个也在图1中示出的第四实施例允许同时使用RAM51和52。实际上,如果假定能检测存储器和相关寄存器的切换,那么通过使用伪存储器52消除该序列进行分析将是可能的。为避免这种不测事件,这个实施例意味着存储器51和52在一个初始阶段可以被并行有效。显然地,可以推测在本情况下的存储器52具有一个至少与存储器51中的程序P1当其工作时使用的区域相等的大小。在这种情况下,分别在存储器51和52中被程序P1使用的两个内存区域的内容被初始化且在这个第一阶段以相同的方式被该程序使用。另一种选择在于在读周期为了防止冲突用所需配置加载切换电路,以使两个寄存器D2或D3中的一个有效。但这对本发明而言未做任何基本的改变。因此,在这个阶段我们不能区分到底哪个存储器被真正使用。相应地,在一个第二阶段期间,当继续执行相同程序P1的时候,通过对切换电路53的修改选择性地和随机性地切换存储器是可能的。由此,一个或另一个程序的执行不再可能与所使用的RAM或寄存器相关。在一个第三阶段,我们可在一个不可预测的时刻通过前进的程序P2切换到伪存储器52,而返回到主工作存储器51也将在一个不可预测的时刻发生并且作为一个保护的测量在主程序T1控制下该过程将被随意地重新产生。
最后,由本发明提出的最后程序是能够从程序P2的伪模式中退出且返回到程序P1的正常操作模式。就在转移控制给程序P2前,程序P1将使能来自随机发生器或来自定时器的中断,同时初始化后者。在无序的程序P2运行时,一个中断通过电路4产生,其转移到中断程序PIT。这个程序,传统上使用中断向量进行访问,分析例如当前程序的执行上下文。如果P2是激活的,PIT转移控制到程序P1。这种机制能按下述完成:当PIT程序的第一个指令被执行时,例如它能被按图4中所示的方式,通过对切换电路53的内容的读出41来构成,然后测试42确定是否包含在电路53中的信息对应于伪模式操作。为肯定的时,该PIT程序执行一个由步骤43表示的程序返回指令P1。这个返回根据在于改变线534和531的值的步骤44,切换寄存器53的写入来启动的。这个随后的写44入切换寄存器53使得返回到线值534和线值531的正常的修改的模式成为可能,以便再一次授权对主工作存储器51和组54的使用。这个用于返回到程序P1的指令能在伪测试42之后或在一系列其它未被表示的和使其可能产生一个随机时间的指令执行后被直接执行。如果测试42是否定的,程序通过写入切换寄存器53改变到伪模式继续步骤45以便改变线535和532的值,从而使能寄存器组55和伪存储器的使用,同时在531和534控制下锁定电路。
值得注意的是,在所有上述的实施例中,不需使用一个随机时钟。相反地,时钟分布能完全保持传统的和等时的从而提供电路和仿真及其测试的简单设计。事实上,安全性不再归因于处理器被随机定时而是由于在一个等时时钟下这些程序按步或不按步执行;其执行本身被置乱了。
处理器所执行的程序的管理能按如下的方式完成,处理器的操作由一个实时的安全操作系统所控制,该控制系统根据机器所执行的程序类型确定实现的阻塞的类型。在这种情况下,该操作系统,就象所期望的那样,管理来自随机发生器的不同信号,中断及主和第二程序的启动。显然地,第二程序能被用于执行除一个简单等待循环以外的其它功能,特别是对于主程序有效的进程以便利用专用于第二程序的时间。这个进程能包括,例如由主程序其后使用的预先计算。自然地,当处理器在一个多应用模式下操作,而应用程序可以被作为一个简单的主程序考虑时,很容易利用本发明的机制。
上述提及的随机发生器和定时器当独立地用于与本发明无关的应用中时,在生产时不会造成任何特殊问题且对于熟练的技术人员是已知的。
对于随机发生器,例如可以使用具有不同周期的循环计数器。这些计数器由存储在非易失存储器7中的初始信息初始化。当处理器启动时,计数器取出所存的值作为初始值。在计算或结尾期间,z,用一个新值作为初始信息在下一次初始化时初始化计数器更新该非易失性存储器。上面提及的中断脉冲的产生能在所产生的数目具有例如与一些程序数据相同的特征时便发生。使用一个或几个计数器的一个或几个比特位的值也是可能的。使用一个加密算法或一个由上面提及的初始信息初始化的截断函数产生一个非常好的随机发生器也是可能的。在这种情况下,发生器能够是一个实现该算法的程序。显然这个随机数发生器也能够用来产生若干个上面提及的随机数。另一种制造这类发生器的方法是放大跨接“噪声二极管”两端产生的电压并且在低通滤波后整形信号以便确保过快的噪声脉冲不干扰微处理器的工作。
Claims (23)
1.一种不可预测的集成电路,包括一个用于执行来自至少一个工作存储器的指令的处理器(1)、一个第一工作存储器(51),该处理器和第一工作存储器经由总线(3)连接到
一个包含一个操作系统、一个主程序(P1)和一个第二程序(P2)的主存储器(6);
一个第二工作存储器(52);
切换装置,当程序运行时用于从两个工作存储器(51,52)中的一个切换到另一个工作存储器,而同时保存该两个工作存储器的内容,与每个存储器(6,51,52)相关的地址和数据寄存器(A1,A2,A3,D1,D2,D3)存储要被访问的存储器(6,51,52)的地址和将要读取和写入存储器(6,51,52)中的数据;
所述切换装置包括至少一个用于存储在主存储器的至少一个程序的操作上下文的第一寄存器组(54),和一个用于使能其中至少一个工作存储器的切换电路(53),和与每个存储器(51,52,6)相关并被所述切换电路(53)所控制的要访问的寄存器(A1,A2,A3,D1,D2,D3)。
2.根据权利要求1所述的不可预测集成电路,包括一个用于存储第二程序操作上下文的第二寄存器组(55)。
3.根据权利要求1或2所述的不可预测集成电路,其中操作上下文是由程序计数器、数据寄存器(D1,D2)和其它寄存器(T11,T12)(T21,T22)组成,其中程序计数器(PC1)用于第一寄存器组(54)而程序计数器(PC2)用于第二寄存器组(55),其它寄存器用于存储操作参数。
4.根据权利要求1或2所述的不可预测集成电路,还包括连接到总线(3)上的用于从一个等时时钟解相关上述各程序的运行的解相关装置(R1,R2,R3)。
5.根据权利要求2所述的集成电路,其特征在于主程序(P1)通过加载该切换电路(53)使能或禁止切换机制或各机制,用于切换和使能工作存储器(51,52)和与各工作存储器(51,52)分别相关的存储寄存器组(54,55),并分别在存储器中存储主程序(P1)的操作上下文和第二程序(P2)的操作上下文。
6.根据权利要求1、2或5中任一项所述的不可预测集成电路,其中切换电路(53)在第一阶段加载使能够利用两个工作存储器的数据,在第二阶段加载使能够利用两个工作存储器中任一个的数据。
7.根据前述任一项权利要求所述的不可预测集成电路,其特征在于在使用中第一工作存储器(51)和它的要访问的寄存器(A2,D2)通过一个主程序可替换为第二工作存储器(52)和它的要访问的寄存器(A3,D3)。
8.根据权利要求3所述的不可预测集成电路,其特征在于该解相关装置包括一个随机发生器(R1),它使得有可能通过中断电路(4)触发一个随机中断,用于通过随机跳转到第二程序(P2)解同步在处理器中程序的运行。
9.根据权利要求4所述的不可预测集成电路,其特征在于该解相关装置包括一个独立于处理器(1)的定时器(R3),它使得在计时后触发一个用于从第二程序返回到主程序的中断成为可能。
10.根据权利要求4,6或7所述的不可预测集成电路,其特征在于用于切换工作存储器的切换装置是由该处理器和它的程序、由随机中断系统(R1,4),由一个定时器(R3)或由三者中至少两个的任意组合所控制。
11.根据前述任一项权利要求所述的不可预测集成电路,其特征在于用于切换工作存储器的切换装置通过被一个运行主程序序列的处理器(1)加载而被使能。
12.根据前述任一项权利要求所述的不可预测集成电路,其特征在于第二程序(P2)使用一个与在主存储器(6)中的主程序(P1)相同的工作空间。
13.根据权利要求1至9任一项所述的不可预测集成电路,其特征在于第二程序(P2)使用一个比主程序所用的工作空间更小的工作空间。
14.根据权利要求2或5所述的不可预测集成电路,其特征在于在来自微处理器的一条指令的执行周期内,该切换装置进行所述存储器(51,52,54,55,A2,A3,D2,D3)和相关上下文的替换。
15.根据权利要求1、2或5所述的不可预测集成电路,其特征在于第二程序(P2)不利用存储主程序(P1)的全部操作上下文的主存储器(6)部分,以便使得主程序返回其全部操作上下文而无需重建上述上下文。
16.根据权利要求13所述的不可预测集成电路,其特征在于在返回到控制主程序(P1)之前主程序(P1)的上下文或者由第二程序(P2)自动重建或者由切换电路(53)自动重建。
17.根据权利要求15或16所述的不可预测集成电路,其中第二程序是主程序的一部分,通过随机确定所述主程序(P1)的所述部分的起始地址构造第二程序(P2)。
18.根据权利要求1、2或5所述的不可预测集成电路,其特征在于它还包括用第二工作存储器中的第二程序(P2)使用的存储区替代第一工作存储器中的主程序(P1)使用的另一存储区的装置。
19.根据权利要求1、2或5所述的不可预测集成电路,其特征在于主程序(P1)使用第一工作存储器(51)或第二工作存储器(52)或第一和第二存储器(51,52)。
20.根据权利要求1、2或5所述的不可预测集成电路,其特征在于主程序(P1)同时使用第一工作存储器(51)和/或第二工作存储器(52)。
21.根据权利要求1、2或5所述的不可预测集成电路,其特征在于切换电路(53)的加载使得屏蔽或中止屏蔽解相关中断成为可能。
22.根据权利要求1、2或5所述的不可预测集成电路,其特征在于为了中止屏蔽中断,由第二程序(P2)触发的一个中断在切换电路(53)被正确加载后通过执行一条主程序(P1)或第二程序(P2)的指令,使返回主程序(P1)。
23.根据权利要求1、2或5所述的不可预测集成电路,其特征在于它是由一个单片集成电路实现的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9707995A FR2765361B1 (fr) | 1997-06-26 | 1997-06-26 | Microprocesseur ou microcalculateur imprevisible |
FR97/07995 | 1997-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1234883A CN1234883A (zh) | 1999-11-10 |
CN1239973C true CN1239973C (zh) | 2006-02-01 |
Family
ID=9508464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB988010259A Expired - Fee Related CN1239973C (zh) | 1997-06-26 | 1998-06-25 | 不可预测的集成电路 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7036002B1 (zh) |
EP (1) | EP0920660B1 (zh) |
JP (2) | JP2000501541A (zh) |
KR (1) | KR100578459B1 (zh) |
CN (1) | CN1239973C (zh) |
DE (1) | DE69839958D1 (zh) |
FR (1) | FR2765361B1 (zh) |
HK (1) | HK1022756A1 (zh) |
TW (1) | TW457453B (zh) |
WO (1) | WO1999000718A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2787900B1 (fr) * | 1998-12-28 | 2001-02-09 | Bull Cp8 | Circuit integre intelligent |
JP2001094550A (ja) * | 1999-09-17 | 2001-04-06 | Toshiba Corp | 信号処理装置 |
GB2406943B (en) * | 2002-12-12 | 2005-10-05 | Advanced Risc Mach Ltd | Processing activity masking in a data processing system |
US20040162993A1 (en) * | 2003-02-13 | 2004-08-19 | Yannick Teglia | Antifraud method of an algorithm executed by an integrated circuit |
US7373463B2 (en) * | 2003-02-13 | 2008-05-13 | Stmicroelectronics S.A. | Antifraud method and circuit for an integrated circuit register containing data obtained from secret quantities |
JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
EP2624166B1 (en) * | 2007-05-11 | 2014-12-17 | Nagrastar L.L.C. | Method for controlling execution by a processor in a secure environment |
EP2000936A1 (en) * | 2007-05-29 | 2008-12-10 | Gemplus | Electronic token comprising several microprocessors and method of managing command execution on several microprocessors |
IT1404162B1 (it) * | 2010-12-30 | 2013-11-15 | Incard Sa | Metodo per de-correlare segnali elettrici emessi da una carta a circuito integrato |
CN103164384B (zh) * | 2011-12-15 | 2016-05-18 | 中国银联股份有限公司 | 多机系统共享内存的同步实现方法及其系统 |
US9703951B2 (en) | 2014-09-30 | 2017-07-11 | Amazon Technologies, Inc. | Allocation of shared system resources |
US9754103B1 (en) | 2014-10-08 | 2017-09-05 | Amazon Technologies, Inc. | Micro-architecturally delayed timer |
US9378363B1 (en) * | 2014-10-08 | 2016-06-28 | Amazon Technologies, Inc. | Noise injected virtual timer |
US9864636B1 (en) | 2014-12-10 | 2018-01-09 | Amazon Technologies, Inc. | Allocating processor resources based on a service-level agreement |
US9491112B1 (en) | 2014-12-10 | 2016-11-08 | Amazon Technologies, Inc. | Allocating processor resources based on a task identifier |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694603A (en) * | 1982-09-28 | 1997-12-02 | Reiffin; Martin G. | Computer memory product with preemptive multithreading software |
US4575817A (en) * | 1983-06-27 | 1986-03-11 | International Business Machines Corporation | Switching of programming routine supporting storage stacks |
US4591982A (en) * | 1983-08-29 | 1986-05-27 | International Business Machines Corporation | Storage selection override apparatus for a multimicroprocessor implemented data processing system |
JPS6491228A (en) * | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
US5012409A (en) * | 1988-03-10 | 1991-04-30 | Fletcher Mitchell S | Operating system for a multi-tasking operating environment |
JPH02163834A (ja) * | 1988-12-16 | 1990-06-25 | Mitsubishi Electric Corp | マルチ・タスク処理方式 |
JPH02224140A (ja) * | 1989-02-27 | 1990-09-06 | Nippon Motoroola Kk | 割込試験装置 |
US5127098A (en) * | 1989-04-12 | 1992-06-30 | Sun Microsystems, Inc. | Method and apparatus for the context switching of devices |
GB2234613B (en) * | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
CA2025518A1 (en) * | 1989-09-15 | 1991-03-16 | Wei-Ming Hu | System and method for reducing timing channels in digital data processing system |
US5249294A (en) * | 1990-03-20 | 1993-09-28 | General Instrument Corporation | Determination of time of execution of predetermined data processing routing in relation to occurrence of prior externally observable event |
CA2037857C (en) * | 1990-03-20 | 2001-01-16 | Roy Allen Griffin, Iii | Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event |
JP2697254B2 (ja) * | 1990-06-06 | 1998-01-14 | 松下電器産業株式会社 | リアルタイム処理装置 |
JPH0454652A (ja) * | 1990-06-25 | 1992-02-21 | Nec Corp | マイクロコンピュータ |
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
US5404402A (en) * | 1993-12-21 | 1995-04-04 | Gi Corporation | Clock frequency modulation for secure microprocessors |
US5613114A (en) * | 1994-04-15 | 1997-03-18 | Apple Computer, Inc | System and method for custom context switching |
-
1997
- 1997-06-26 FR FR9707995A patent/FR2765361B1/fr not_active Expired - Fee Related
-
1998
- 1998-06-19 TW TW087109859A patent/TW457453B/zh not_active IP Right Cessation
- 1998-06-25 JP JP11505328A patent/JP2000501541A/ja active Pending
- 1998-06-25 WO PCT/FR1998/001343 patent/WO1999000718A1/fr active IP Right Grant
- 1998-06-25 CN CNB988010259A patent/CN1239973C/zh not_active Expired - Fee Related
- 1998-06-25 EP EP98933715A patent/EP0920660B1/fr not_active Expired - Lifetime
- 1998-06-25 KR KR1019997001613A patent/KR100578459B1/ko not_active IP Right Cessation
- 1998-06-25 DE DE69839958T patent/DE69839958D1/de not_active Expired - Lifetime
- 1998-06-25 US US09/242,974 patent/US7036002B1/en not_active Expired - Fee Related
-
2000
- 2000-03-22 HK HK00101745A patent/HK1022756A1/xx unknown
-
2001
- 2001-06-22 JP JP2001190336A patent/JP2002055883A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
TW457453B (en) | 2001-10-01 |
CN1234883A (zh) | 1999-11-10 |
HK1022756A1 (en) | 2000-08-18 |
KR100578459B1 (ko) | 2006-05-10 |
WO1999000718A1 (fr) | 1999-01-07 |
KR20000068373A (ko) | 2000-11-25 |
JP2002055883A (ja) | 2002-02-20 |
FR2765361A1 (fr) | 1998-12-31 |
US7036002B1 (en) | 2006-04-25 |
FR2765361B1 (fr) | 2001-09-21 |
EP0920660A1 (fr) | 1999-06-09 |
DE69839958D1 (de) | 2008-10-16 |
JP2000501541A (ja) | 2000-02-08 |
EP0920660B1 (fr) | 2008-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1239973C (zh) | 不可预测的集成电路 | |
CN1124533C (zh) | 智能集成电路 | |
CN102197382B (zh) | 多层内容保护微控制器 | |
US7584386B2 (en) | Microprocessor comprising error detection means protected against an attack by error injection | |
US6195752B1 (en) | Electronic data processing circuit | |
CN1181823A (zh) | 改进的集成电路及这种集成电路的使用方法 | |
CN1632744A (zh) | 直接从内存执行自身指令的微处理器的装置和方法 | |
EP0694828A2 (en) | Data processor with secure communication | |
EP3780489A1 (en) | Memory device providing data security | |
CN101853357A (zh) | 软件保护方法 | |
CN101299184A (zh) | 修补装置及方法 | |
JP2010225154A (ja) | 難読化 | |
WO2002093365A1 (en) | Sequence numbering mechanism to ensure execution order integrity of inter-dependent smart card applications | |
EP0929040A2 (en) | Microprocessor with data randomizing | |
DE10340861A1 (de) | Prozessorschaltung und Verfahren zum Zuordnen eines Logikchips zu einem Speicherchip | |
CN107239415A (zh) | 一种执行临界区操作的方法及装置 | |
US5644781A (en) | Microcomputer having a security function for stored data | |
JP2005522954A (ja) | 撮像装置並びにタイミング発生器 | |
US20060149942A1 (en) | Microcontroller and assigned method for processing the programming of the micro-con- troller | |
JP2009524879A (ja) | プロテクトされたアプリケーションプログラムとシェルコードとの結合 | |
JP2008299930A (ja) | 半導体記憶装置 | |
CN114254400B (zh) | 基于动态影子栈的栈缓冲区溢出攻击防御方法及系统 | |
RU2099777C1 (ru) | Устройство для поиска перемежающихся отказов в микропроцессорных системах | |
CN103294603A (zh) | 用于控制存储器分配的方法和设备 | |
US3763475A (en) | Stored program computer with plural shift register storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: CP8 TECHNOLOGY CO.,LTD. Free format text: FORMER OWNER: BULL CP8 Effective date: 20050715 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20050715 Address after: French Rowan F Nass Applicant after: CP & Technologies Address before: French Rowan F Nass Applicant before: Bull CP8 |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060201 Termination date: 20140625 |
|
EXPY | Termination of patent right or utility model |