CN101978377B - 用于控制受保护操作模式期间的***访问的方法和装置 - Google Patents
用于控制受保护操作模式期间的***访问的方法和装置 Download PDFInfo
- Publication number
- CN101978377B CN101978377B CN200980109601.3A CN200980109601A CN101978377B CN 101978377 B CN101978377 B CN 101978377B CN 200980109601 A CN200980109601 A CN 200980109601A CN 101978377 B CN101978377 B CN 101978377B
- Authority
- CN
- China
- Prior art keywords
- safe mode
- register
- processor
- 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.)
- Expired - Fee Related
Links
Classifications
-
- 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/52—Monitoring 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/53—Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- 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/74—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 operating in dual or compartmented mode, i.e. at least one secure mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Microcomputers (AREA)
Abstract
一种在为机密和/或敏感信息提供安全性的同时,提供软件开发调试能力的微处理器。该处理器可以在开放、安全进入和安全模式之一中操作。在开放模式中,安全措施可以防止对某些寄存器位的访问和对私有存储器区域的访问。在接收到运行安全代码和/或访问私有存储器区域的请求之后,可以进入安全进入模式。可以在安全进入模式中验证安全代码。可以使用数字签名来执行验证。如果验证成功,则可以进入安全模式。可以在安全模式环境中执行验证代码。可以在安全模式中访问私有存储器区域。
Description
背景技术
随着集成电路和计算机的极其高速的生产和使用,并且在其它类型的数字模块操作中,设计者日益认识到测试和诊断集成芯片的内部结构和操作的方法具有有用且重要的功能。IEEE委员会已经提出并且发展了建立用于将逻辑电路嵌入集成芯片内的标准的愿望,IEEE委员会已提出被命名为IEEE 1149.1的边界扫描构架。制订了IEEE1149.1或“JTAG”,以便定义用于电子电路测试的标准。首字母缩写JTAG最初源自定义IEEE标准的被命名为联合测试访问组(JTAG)的委员组。JTAG被用于各种测试功能,包括测试“内部芯片”功能,并且被用于测试印刷电路板上的芯片互连。
数字签名验证提供了一种用于确定电子消息的真实性并且识别消息发送方的手段。当使用这种形式的验证时,消息和与该消息相关联的数字签名一起被发送。使用公钥密码(即,不对称密码)技术创建和核实数字签名。不对称密码采用这样的算法:该算法使用两个不同但在数学上相关的密钥:公钥和私钥。私钥用于创建数字签名或将数据变换为表面上难以理解的形式;公钥核实数字签名或将消息返回其原始形式。
发明内容
可以依赖于微处理器来存储敏感和/或机密信息。描述了一种处理器,该处理器提供软件开发调试能力,同时为存储在该处理器上的机密和/或敏感信息提供安全性。
在一些实施例中,该处理器可以在开放模式、安全进入模式和安全模式之一中操作。在开放模式中,除了防止访问某些寄存器位,并且防止访问私有存储器区域之外(例如,可能存储有敏感信息的位置),不设置任何安全措施。当收到并且验证了在处理器上运行安全代码的请求时,可以进入安全进入模式。在一些实施例中,使用数字签名来执行验证。一旦经验证,就可以在可访问私有存储器区域的安全模式中运行安全代码。所述安全代码可以访问私有存储器区域,并且可以更多地访问和控制寄存器。然而,如果验证失败,则状态返回开放模式。
在一些方面,本发明涉及一种被配置为在多个模式中操作的处理器,所述模式包括:提供对处理器的资源的安全访问的安全模式。所述处理器包括:存储器、第一寄存器位、第二寄存器位和逻辑单元。所述存储器被配置为存储消息和固件代码。所述第一寄存器位被配置为指示多个状态中的状态,所述多个状态包括第一状态和第二状态,第一寄存器位被配置为当将要执行私有仿真指令时指示第一状态,并且被配置为当将要忽略私有仿真指令时指示第二状态。所述第二寄存器位指示在随后进入安全模式后,第一寄存器位指示第一状态还是第二状态。所述逻辑单元被配置为执行固件代码,以便在安全模式以外验证消息,并且在消息的成功验证之后,根据第二寄存器位来设置第一寄存器位,并且进入安全模式。
在另一个方面,本发明涉及一种操作微处理器的方法,所述微处理器可在多个模式中操作,所述多个模式包括安全模式。所述方法包括下述动作:在安全模式以外,验证消息;在成功完成验证消息的动作之后,进入安全模式,从第一寄存器读取第一状态,并且基于第一状态,向第二寄存器写入第二状态,所述第一寄存器仅能在安全模式中被写为第一状态,并且所述第二状态指示将要执行仿真指令;以及在安全模式中,基于对第二寄存器的读取,确定将要执行仿真指令。
在另一个方面,本发明涉及一种可在多个模式中操作的处理器,所述多个模式包括安全模式。所述处理器包括第一存储器、第二存储器和逻辑单元。第一存储器被配置为当将要执行私有仿真指令时存储第一值,并且当将要忽略私有仿真指令时存储第二值。第二存储器被配置为指示当处理器进入安全模式时第一存储器存储第一值还是第二值。逻辑单元被配置为当处理器进入安全模式时,根据第二存储器设置第一存储器。
在另一个方面,本发明涉及一种在安全操作模式中调试处理器上的目标代码的方法,所述处理器包括:指示执行还是忽略私有仿真指令的第一存储器、指示在随后的安全模式会话中执行还是忽略私有仿真指令的第二存储器,所述处理器能够在包括安全模式的多个模式中操作。该方法包括下述动作:验证设置代码并且进入安全模式;在安全模式中执行设置代码,所述设置代码被配置为设置第二存储器,以指示在随后的安全模式会话中将要执行私有仿真指令;退出安全模式;验证目标代码;基于第二存储器来设置第一存储器,并进入安全模式;以及经由私有仿真指令控制安全模式中目标代码的执行。
附图说明
当结合附图阅读下面的详细描述时,将会更好地理解本发明和其实施例。在附图中,部件不必须是按比例绘制的。一般地,出现在多个图中的类似部件由类似附图标记识别。在附图中:
图1A是根据一些实施例的微处理器的方框图;
图1B是根据一些实施例的嵌入式***的方框图;
图1C是根据一些实施例的连接到微处理器的主机的方框图;
图1D是根据一些实施例的连接到嵌入式***的主机的方框图;
图2是根据一些实施例的安全状态机的状态图;
图3A是示出了示例的数字签名创建处理的流程图;
图3B是示出了示例的数字签名核实处理的流程图;
图4是执行数字签名验证的方法;
图5是根据一些实施例的微处理器的方框图;
图6A-6C是示例了根据一些实施例的微处理器上的寄存器字段的方框图;
图7是根据一些实施例的微处理器的方框图;和
图8是根据一些实施例,用于在安全模式中执行经验证的代码的方法。
具体实施方式
在当今许多应用中,可编程处理器具有广泛的使用,在可编程处理器领域中,这些处理器的提供商的客户通常开发软件,以便将处理器用于特定应用。在软件不按预期执行的情况下,希望这些软件开发者能够调试他们的软件。诸如JTAG的硬件调试工具便利了应用代码的开发和测试。
除了希望能够进行软件调试之外,还存在重大的安全性关注。客户或处理器的用户的通常敏感、机密和/或私有的信息可在任何时间被存储在处理器的寄存器上和/或存储器内。通常,在使用软件调试工具期间,工具的用户可以访问这些存储器和寄存器的内容,这带来了盗用的风险。因此,为了确保安全性,许多可编程处理器提供商试图通过例如不连接处理器芯片的启用调试能力的引脚来禁止调试能力。
提供了一种在某些操作模式期间平衡软件调试能力和安全性的微处理器。这种平衡确保敏感、机密和/或私有信息是安全的。
微处理器100
图1A示出了微处理器100的实施例。微处理器100可以包括:中央处理单元(CPU)110、寄存器120、输入/输出(I/O)端口130和存储器140。
CPU 110是微处理器100上用于执行指令的逻辑单元。可由CPU110执行的指令可以源自,例如,由可执行指令串组成的软件(即,程序、代码)。
存储器140可用于存储可执行代码、公钥信息和/或任何类型的数字数据。每个存储单元可与一个存储地址相关联。存储器140可以具有一次可编程(OTP)存储器、静态随机存取存储器(SRAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)或任何其它存储器技术或存储器技术的组合。
在一些实施例中,存储器140包括私有存储器150区域和公共存储器160区域。私有存储器150可以仅在某些操作状态下是可访问的。
公共存储器160可以存储固件170。固件170可以包括用于执行用户和/或代码验证的验证软件。在一些实施例中,固件170被存储在ROM中以防止验证软件指令的改变。
寄存器120可以存储多个位的信息。这些位可指示微处理器100的操作状态。寄存器120可被划分为任何数量的独立寄存器,每个寄存器包括一个或多个位。在一些实施例中,寄存器120包括程序计数器(PC)122寄存器,其包含CPU 110将要执行的下一条指令的存储地址。
微处理器的I/O端口130提供用于信息(例如,消息和数字签名)传送的输入和输出功能。每个端口可被具体化为引脚、插座、有线或无线接收机、或任何其它接口技术。I/O端口130可以包括调试端口134(例如,电路内仿真(ICE)端口)、重置端口132和一个或多个附加I/O端口(未示出)。调试端口134可用于调试由微处理器100执行的软件。例如,可以通过设置断点、单步执行和其它调试过程,在调试端口134上观察微处理器100的操作。
在一些实施例中,调试端口134支持到微处理器100的JTAG连接。JTAG定义了一种边界扫描构架,以允许控制和观察设备的输入/输出(I/O)。除了边界扫描之外,JTAG仿真能力还可以帮助进行软件开发,以控制设计在设备中的高度复杂的功能。仿真能力包括实现RUN(运行)、STOP(停止)、SINGLE-STEP(单步)和EXAMINE/MODIFY(检查/修改)内部寄存器和实时断点的处理器的控制。除了IEEE标准支持的“公共”JTAG指令(例如,边界扫描和旁路模式)之外,还可以支持“私有”JTAG指令。例如,可由特定微处理器的制造商定义私有指令。通过调试端口134,用户可以向微处理器100发送公共和/或私有JTAG指令。可以支持JTAG仿真。
可以使用重置端口132来提供用于重置微处理器100的外部触发。
在一些实施例中,微处理器100可以支持直接存储器访问(DMA),以便消除通过CPU 110调用存储器的需要。在一些实施例中,可以为存储器140的部分选择性地禁止DMA。可由例如寄存器120中的一个寄存器来控制存储器140的哪部分要被启用/禁止DMA。
微处理器100可以是图1B所示的嵌入式***180的一部分。一个嵌入式***可以由附加硬件组成,所述附加硬件可操作地连接到微处理器,以便从微处理器接收输出和/或向微处理器提供输入。嵌入式***180被示出为具有示例组件,诸如调试连接器181、闪存182、电源稳压器183和晶体振荡器184的方框图。这些组件仅是示例的,并且可以出现或不出现在实施例中。微处理器100可与任何适合组件组合使用,以形成嵌入式***180。
如图1C所示,可以为微处理器100建立连接191,以便通过一个或多个I/O端口130(例如,调试端口134)与主机190通信。任何适合的设备可以用作主机190。例如,主机190可以是个人计算机、膝上型计算机、PDA或闪存设备。
如图ID所示,可以通过任何适合的接口193在包括微处理器100的嵌入式***180和主机190之间建立连接192。
可以使用任何适合的技术,包括有线和无线技术,来实现连接191和192。
安全状态机200
微处理器100可以实现安全状态机200以便管理操作。图2示出了根据一些实施例的安全状态机200的状态图。安全状态机200可以包括操作模式和操作模式之间的转变路径。每个操作模式可以具有与之相关联的不同访问权限和安全特征,而每个转变可以定义不同模式之间的关系。
安全状态机200可以通过寄存器120、存储器140或以任何其它适合方式在微处理器100内实现。在图2所示的示例实施例中,安全状态机200可以在开放模式210、安全进入模式220和安全模式230中操作。
开放模式210是处理器的默认操作状态,其中,除了对私有存储器150的受限访问之外没有任何限制。在一些实施例中,还可以防止对寄存器120内的某些寄存器位进行读取和/或写入访问。开放模式210是微处理器100加电时和重置之后(路径201)的默认状态。在一些实施例中,在开放模式210中启用调试能力(例如,JTAG仿真)。
在图2所示的示例实施例中,在开放模式210中操作的安全状态机200仅能够(经由转变202)转变到安全进入模式220中。没有从开放模式210到安全模式230的直接路径。
当处理器执行被定向到固件170中的验证软件时,可以触发从开放模式210到安全进入模式220的转变。在一些实施例中,可以通过使程序计数器122指向验证软件的首地址,来将处理器执行定向到固件170。一些实施例还要求不可屏蔽中断(NMI)是有效的。可以通过例如所执行的代码、用户输入或任何其它适合手段,来触发到安全进入模式220的转变。
在安全进入模式220中,可由CPU 110执行固件170内的验证软件。验证软件可以确定安全状态机是跟随转变204到安全模式230,还是跟随转变203回到开放模式。在一些实施例中,验证软件可以包括安全进入服务例程(SESR)以便进行该确定。
SESR可以验证用户(例如,核实允许用户进入安全模式)、验证用户代码(例如,核实将在安全模式中执行的代码是由被允许进入安全模式的用户提供的),和/或执行任何其它安全处理或安全处理的组合。在一些实施例中,对消息和数字签名执行数字签名验证处理,诸如处理350(图3B)。随后参考图4给出用于验证已签名的消息的方法400。
在安全进入模式220中,私有存储器150可以是不可访问的。在一些实施例中,可通过硬件来监视程序计数器122,以便确保它保持在分配给固件170的地址范围内。在一些实施例中,对于处理器存储器140的某些区域,不允许DMA访问,并且JTAG仿真被禁止。
如果验证失败,则可以发生从安全进入模式220到开放模式210的转变203。例如,如果用户不能被验证,用户代码不能被验证,消息和数字签名对与本地公钥不符,在固件中观察到错误,或者如果必须处理中断,则验证可能失败。通过硬件监视捕捉到的任何错误也可以导致验证失败。示例错误可以包括:非法存储器边界状态(例如,程序计数器122指向验证代码的地址范围之外),或跳到固件范围之外(例如,为中断提供服务)。
在成功验证之后,安全状态机200仅能够从安全进入模式220转变到安全模式230。如果验证成功,则SESR可以在经由转变204进入安全模式230之前执行附加步骤。在一些实施例中,中断被禁止。可以通过借助SESR变元从NMI降低中断级来重新启用中断,或等待直到验证成功,并且在进入安全模式230之后在经验证的代码中重新启用它们。
安全模式230是微处理器100的安全操作状态。在进入安全模式之后,可以默认禁止JTAG仿真。在一些实施例中,允许经验证的代码对包括私有存储器150、公共存储器160和寄存器120的处理器资源进行不受限的访问。在一些实施例中,安全模式230允许访问(读取和写入)其中可能存储有诸如秘密密钥的安全数据的私有存储器150。私有存储器150可以用来存储仅被授权的、经验证的用户和/或代码可以访问的机密的秘密信息。
安全模式230可以用于,例如,安全地运行其中使用秘密密钥的任何加密密码的实现(例如,私钥可以存储在私有存储器150内)。
随后参考图8给出用于调试最终代码的方法800(例如,使用JTAG仿真)。
安全状态机200可以从安全模式230转变205回到开放模式210。在一些实施例中,可以不存在从安全模式230到安全进入模式220的直接路径。
验证
在安全进入模式220中时,可以在转变到安全模式230之前执行验证处理。在一些实施例中,使用数字签名验证来确定电子消息的真实性,并且核实消息的签名人。例如,消息和数字签名可通过I/O端口被发送到微处理器100,并且被存储在存储器(例如,存储器140)内。当使用这种形式的验证时,该消息可与由签名人创建的数字签名相关联。该数字签名特定于该消息和签名人,从而这两者可被验证。
可以使用公钥密码(即,不对称密码)技术来创建和核实数字签名。不对称密码采用这样的算法,所述算法使用两个不同但在数学上相关的密钥:公钥和私钥。私钥用于创建数字签名,或将数据变换为表面上难以理解的形式;公钥核实数字签名或将消息返回其原始形式。
私钥可以仅为签名人所知,而公钥可被核实该数字签名的所有人(例如,微处理器100)获得或被分发给他们。虽然这对密钥在数学上是相关的,但如果不对称密码***被安全地设计和实现,则在计算上不可能根据公钥的知识得出私钥。因此,虽然许多人可能知道给定签名人的公钥,并且使用它来核实签名人的签名,但他们不能发现签名人的私钥,并且使用它来伪造数字签名。
使用数字签名一般涉及两个处理,一个处理由签名人执行,另一个处理由数字签名的接收人执行。在一些实施例中,根据图3A所示的处理300创建数字签名。一旦限定了将被签名的消息301的界限,散列函数310计算对于输入消息301来说是唯一的散列值303。散列值303是消息301的“数字指纹”。通常,散列值303具有标准长度,该长度通常比消息短得多,但对于该消息来说仍然具有充分的唯一性。散列函数310可以是例如单向散列函数,诸如SHA-1(安全散列算法)。在有时被称为“单向散列函数”的安全散列函数的情况下,在计算上不可能从其散列值的知识得出原始消息301。因此,散列函数可以启用创建数字签名的软件,以便对更小且可预测的数据量进行运算,同时仍然提供与原始消息内容的稳健有根据的相关性,从而由于该消息被数字签名而有效地提供其未被修改的保证。
SHA-1是由国家***(NSA)设计的5个密码散列函数之一,并且被国家标准和技术研究所(NIST)公布为美国联邦信息处理标准。
接着,创建签名软件320使用私钥302将散列值303变换为数字签名305。可以使用,例如,椭圆曲线密码(ECC)来生成私钥302和相应的公钥304(图3B)。数字签名305对于消息301和用于创建它的私钥302来说都是唯一的。如果使用ECC来生成私钥和公钥,则可以使用椭圆曲线密码从私钥302和散列值303创建数字签名305。
数字签名305(消息的数字签名散列结果)可被附加到消息301,并且与消息301一起被存储或传输。然而,只要数字签名305保持与消息301的可靠关联,其还可被作为单独的数据元素被发送或存储。
图3B示出了数字签名核实处理350。例如,可以在微处理器100上执行处理350。在一些实施例中,用于执行处理350的软件被存储在固件170或任何适合的存储器内。例如,该软件可以是SESR的一部分。处理350通过参考数字签名305和给定的公钥304来检查接收到的消息306,从而确定数字签名305是否是使用与所参考的公钥304对应的私钥302为接收到的消息306创建的。
通过借助散列函数330计算接收到的消息306的新散列值308来完成对数字签名的核实,其中,散列函数330是与用于创建数字签名的散列函数相同的散列函数。核实软件340使用公钥304和新散列值308,来检查数字签名305是否是使用与公钥304相关联的私钥302创建的,以及新计算的散列值308是否与在数字签名创建处理330期间被变换为数字签名305的原始散列值303相匹配。数字签名305可使用公钥304被解密为原始散列值303。
核实软件340输出真实性307。当原始散列值303和计算出的散列值308相匹配时,真实性307可以确认接收到的消息306是签名人的原始消息301,并且公钥的相应的私钥302的所有者是该消息的真正来源。成功的验证可以允许随后转变到安全模式230。
如果接收到的消息306与原始消息301不同,则该不同必定影响散列值308,从而当使用相同的散列函数时产生不同的结果。该消息和数字签名将与公钥不相符,并且核实将会失败。这可以导致随后转变到开放模式210。
安全方法400
已经提供了安全状态机200、数字签名创建处理300和数字签名核实处理350的概述,参考图4示出了用于执行安全处理的方法400。可以执行方法400以用于数字签名验证。例如,当被授权用户希望在安全模式230中在微处理器100上执行代码时,可以执行方法400。
方法400包括可选地可以在微处理器100之外(“芯片外”)执行的步骤402和404。步骤408、410和412对应于可在“芯片上”执行以用于数字签名验证的步骤。
在步骤402,使用任何适合的散列函数来产生将被验证的消息(例如,代码)的单向散列。例如,散列函数可以是单向散列函数,例如SHA-1(安全散列算法)。可选地,可以由主机190(图1C和1D)执行步骤402。将被验证的消息可以是可执行代码。适合的散列函数可以输出散列值。
在步骤404,可以使用私钥来加密该散列值,从而对该文件签名并且完成数字签名的生成。该散列值可以以任何适合方式被加密。例如,可以使用椭圆曲线密码(ECC)算法。
在步骤406,消息和数字签名被传送到微处理器100可访问的存储器。例如,消息和数字签名可被存储在处理器存储器140内。在一些实施例中,在被传送到微处理器100之前,消息和数字签名可被存储在外部主机190(图1C和1D)或板上存储器设备(例如,图1B的闪存182)上,以便利传送。在一些实施例中,步骤406的完成可以使微处理器100从开放模式210转换到安全进入模式220。
在步骤408,可以使用任何适合的散列函数来计算在步骤406传送的消息的散列。该散列函数可以驻留在处理器存储器140内。在一些实施例中,该散列函数是固件170的一部分。在一些实施例中,该散列函数驻留在只读存储器内。该散列函数在功能上可以与步骤402中所使用的散列函数相同。
在步骤410,可以使用公钥和解密算法来解密该数字签名。解密的数字签名可以是在步骤402中生成的散列值。公钥可以被存储在公共存储器150内。可以使用任何适合的解密算法。该解密算法可以基于与步骤404中所使用的加密算法相同的算法。例如,可以使用椭圆曲线密码。
在步骤412,可以比较在步骤408产生的散列值和在步骤410通过解密数字签名确定的散列值。如果解密的散列与计算的散列相匹配,则签名可能是有效的,并且消息可能未经触动。
在步骤414,一旦成功核实了签名,安全状态机200就可以进入安全模式230。在进入安全模式230之后,可以选择性地启用对私有存储器140的访问。在一些实施例中,关于是否可获得在安全模式230中对私有存储器140的访问的确定可以基于一个寄存器字段,或任何其它适合的指示器。在进入安全模式230之后,还可以选择性地禁止仿真命令(例如,私有JTAG命令)的执行。在一些实施例中,关于是否在安全模式230中执行仿真命令的确定可以基于一个寄存器字段,或任何其它适合的指示器。在一些实施例中,经验证的消息可以是可由CPU 110执行的代码。在一些实施例中,经验证的代码可在安全模式230中执行。
数字签名可以在芯片外生成(例如,在主机计算机上)。私钥可以在微处理器100之外生成数字签名(“芯片外”),并且相应的公钥在微处理器100上核实该签名(“芯片上”)。私钥可以仅为其所有者所知,并且可以不存储在微处理器100上。公钥可被任何人获得,并且被存储在微处理器100上以便验证来自私钥所有者的消息。
微处理器500
图5是微处理器500的实施例的方框图。微处理器500是微处理器100(图1A)的示例实施例。与微处理器100中的组件共享相同操作描述的组件共享共用的附图标记。
微处理器500具有中央处理单元(CPU)110、寄存器120、I/O端口130和处理器存储器140。
微处理器500的寄存器120包括PC寄存器122、***转换寄存器124、控制寄存器126和状态寄存器128。每个寄存器可以具有与其相关联的一组位。每个位或位的一个子集可以表示寄存器字段的一个状态。处理器存储器140可以包括一次可编程(OTP)存储器510、一级(L1)缓存520和二级(L2)缓存560。
OTP存储器510可以是仅可被编程一次的非易失性可写保护存储器的阵列。在一些实施例中,该阵列的一半是公共存储器(公共OTP 512,其可以在任何模式中可被访问),并且另一半是私有存储器(私有OTP 511,其可以仅在安全模式230中可被访问)。微处理器500的私有OTP存储器511可以例如是私有存储器(图1A)的实施例。
L1缓存520可以包括L1只读存储器(ROM)530、L1数据库A 540和L1数据库B 550。
固件170可被存储在L1 ROM 530内。固件170可以包括安全进入服务例程(SESR)应用编程接口(API)171,用于在安全进入模式220中进行验证。固件170可进一步包括诸如SHA-1(安全散列算法)172的散列函数,和诸如椭圆曲线密码173代码的不对称密码代码。将固件170存储在只读存储器内可以防止对固件代码的恶意修改。
在其中执行数字签名验证的实施例中,数字签名和消息可被存储在任何适合的存储单元。在一些实施例中,数字签名和消息可被分别存储在L1数据库A 540内的存储空间541和542内。消息和签名可以还存储在L2 560或任何其它适合的位置,或者作为替代方案存储在L2 560或任何其它适合的位置。
分别参考图6A、图6B和图6C给出***转换寄存器124、控制寄存器126和状态寄存器128。寄存器124、126和128中的每个字段可以取二进制值。在一些实施例中,逻辑“0”表示“清除”状态,而逻辑“1”表示“设置”状态。当然,可以使用任何适合的逻辑表示,以及用于存储该状态的任何适合的物理实施例。
安全寄存器
图6A是示出了***转换寄存器124“SECURE_SYSSWT”的一些实施例中的某些寄存器字段的方框图。***转换寄存器124可以分别包括字段641-645:“EMUDABL”、“EMUOVR”、“RSTDABL”、“DMAOVR”和“OTPSEN”。
字段621,EMUDABL(“仿真禁止”),指示是否禁止仿真。如果被清除(例如,“0”),则EMUDABL指示在执行时识别仿真指令(例如,私有JTAG仿真指令)。如果被设置(例如,“1”),则EMUDABL被断言并且仿真指令被忽略。在进入开放模式210之后,EMUDABL被清除。在进入安全模式230之后,基于EMUOVR确定EMUDABL。
字段642,EMUOVR(“仿真覆盖”),指示进入安全模式之后将启用还是禁止仿真。如果被清除,则在进入安全模式之后设置EMUDABL。如果被设置,则在进入安全模式之后清除EMUDABL。仅可以在安全模式中设置EMUOVR。
字段643,RSTDABL(“重置禁止”),确定如何进行外部重置。如果被清除,则正常地进行重置。如果被设置,则重置被重定向到存储NMI事件的NMI引脚。在进入安全模式之后设置RSTDABL,并且在进入开放模式之后清除RSTDABL。
字段644,DMAOVR(“直接存储器访问覆盖”),指示启用(例如,当DMAOVR被设置时)还是禁止(例如,当DMAOVR被清除时)DMA。***转换寄存器124中的另一个字段(未示出)可以指出受限存储器区域。在一些实施例中,在进入开放模式之后DMA可被禁止(例如,DMAOVR被清除)。
字段645,OTPSEN(“秘密启用”),确定私有存储器150是可读并且可编程的(例如,当OTPSEN被设置时)还是不可访问的(例如,当OTPSEN被清除时)。OTPSEN仅在安全模式中是可写的。
图6B是示出了控制寄存器126,“SECURE_CONTROL”,的一些实施例中的某些寄存器字段的方框图。控制寄存器126可以分别包括字段661-664:“SECURE0”、“SECURE1”、“SECURE2”和“SECURE3”。
字段661,SECURE0,是只写位。SECURE0仅可以在安全进入模式中被设置。当SECURE0被清除时,字段661-664(即,控制寄存器126中的所有SECURE位)被清除,并且进入开放模式。最初,当SECURE0被设置时,SECURE1被设置。对SECURE0的后续设置导致SECURE2被设置。随后再对SECURE0设置导致SECURE3被设置。
字段662-664,SECURE1、SECURE2和SECURE3分别为只读位。在设置SECURE3之后,进入安全模式230。
图6C是示出了状态寄存器128,“SECURE_STATUS”,的一些实施例中的某些寄存器字段的方框图。状态寄存器128可以包括字段681-684,分别为“SECMODE”、“NMI”、“AFVALID”和“AFEXIT”。
字段681,SECMODE(“安全模式控制状态”)是指示安全状态机200的当前状态的两位只读字段。在一些实施例中,“00”指示安全状态机处于开放模式,而“01”和“10”分别指示安全进入模式和安全模式(“11”为保留状态)。
字段682,NMI,是反映对不可屏蔽中断的检测的只读位。
字段683,AFVALID(“验证固件有效”)是反映验证状态的只读位。如果被清除,则验证未正确开始或被中断。如果被设置,则验证有效并且正在正确进行而未被中断。
如果进行了从验证固件的不正确退出,则字段684,AFEXIT,(“验证固件退出”)被设置。例如,在检测到AFEXIT被设置之后,安全状态机200可以从安全进入模式退回到开放模式。
微处理器700
图7是微处理器700的方框图。微处理器700是微处理器100(图1A)的示例实施例。微处理器700包括可被具体化为硬件、软件或这两者的任何适合组合的组件。与微处理器100中的组件共享相同操作描述的组件可以共享共用的附图标记。在一些实施例中,可以使用微处理器200和/或微处理器500中的组件的任何适合组合来实现微处理器700的组件。
微处理器700可以具有CPU 110、I/O端口130、操作模块705、执行模块710、消息存储器715、签名存储器720、访问模块725、散列模块730、解密模块735、私有存储器745和仿真控制模块750。在一些实施例中,访问模块725、散列模块730和解密模块735是固件740的一部分。
操作模块705强制执行当前操作模式的访问特权和安全特征。在一些实施例中,操作模式包括开放模式210、安全进入模式220和安全模式230。在一些实施例中,操作模块根据安全状态机200(图2)在操作模式之间转变。在一些实施例中,可以使用存储器(例如,存储器140)和/或寄存器(例如,寄存器120)来实现操作模块。例如,可以使用控制寄存器126指示进入安全模式230,而状态寄存器128内的SECMODE字段681可用于指示当前操作模式。
执行模块710可以指出将由CPU 110执行的程序。例如,执行模块可以指出将由CPU 110执行的下一指令的存储地址。在一些实施例中,除非被指示指向特定存储地址,执行模块710随着每次连续执行而递增。在一些实施例中,执行模块710被实现为程序计数器寄存器122。
消息存储器715和签名存储器720可以分别存储将被验证的消息和该消息的数字签名。可以通过存储器140来实现消息存储器和签名存储器。在一些实施例中,消息存储器和签名存储器是L1520和/或L2560(图5)的一部分。
安全访问模块725可以执行安全进入服务例程(SESR)。安全访问模块可以评估消息和数字签名对的真实性。
安全访问模块725可以调用散列模块730和/或解密模块735。可以通过用将被执行的模块的地址更新执行模块710来进行调用。
散列模块730可以对消息进行散列运算并且输出散列值。散列模块730可以执行SHA-1算法或任何适合的散列算法。
解密模块735可以使用被授权的消息发送方的公钥,用该消息的散列值来核实数字签名。在一些实施例中,解密模块735可以使用椭圆曲线密码用公钥来证实消息/数字签名对。
如果执行模块710指定安全访问模块725作为将被CPU 110执行的程序,则操作模块705可以转换到安全进入模式220。在一些实施例中,在转换到安全进入模式220之前,操作模块705在开放模式210中操作。
如果安全访问模块725核实了消息/数字签名对的真实性,则操作模块705可以进入安全模式230。
在安全模式中,私有存储器区域745可以是可读访问和/或可写访问的。例如,可由安全模式230中的OTPSEN字段645来确定私有存储器区域745的可访问性。在一些实施例中,在开放模式210和安全进入模式220中可以中止/拒绝对私有存储器区域745的读取和写入命令。在一些实施例中,私有存储器区域745可以是一次可编程(OTP)存储器阵列510(图5)的至少一部分。
在一些实施例中,仿真控制模块750确定是否执行例如由调试端口134接收到的仿真命令。可以通过***转换寄存器124内的EMUDABL字段641和EMUOVR字段642来实现仿真控制模块750。在一些实施例中,仿真命令可以是JTAG仿真命令。
如果安全访问模块确定消息和数字签名对是不真实的,或出于任何原因(例如,为中断提供服务)中止验证处理,则操作模块705可以从安全进入模式220转换到开放模式210。在一些实施例中,当验证处理失败时,安全访问模块725清除状态寄存器128的AFVALID字段683。被清除的AFVALID可以指示操作模块705返回开放模式210。
安全访问模块725、散列模块730和加密模块735可以是固件740的一部分。在一些实施例中,固件740是只读存储器(ROM),以防止对这些模块的篡改。
方法800:用于调试最终代码的示例操作
用户可能希望在安全模式中测试最终版本的代码。测试可能要求启用仿真,从而用户可以密切观察该执行。例如,可以执行图8所示的方法800,以便在安全模式中测试代码的最终版本。
最初在步骤802,假设微处理器100处于开放模式210。在一些实施例中,在进入安全模式之后可以默认禁止仿真(例如,JTAG仿真)。为了确保仿真在安全模式中是可用的,可以设置***转换寄存器124内的EMUOVR字段642。
为了设置EMUOVR,在步骤804,用户可以上传并验证具有相应数字签名的代码。该代码(例如,“JTAG启用代码”)包括设置EMUOVR的指令。
一旦该代码被验证,在步骤806,执行设置EMUOVR的代码。
执行了设置EMUOVR之后,微处理器100在步骤808返回开放模式。用户可以与相应数字签名一起上传将被调试的最终代码。
在步骤810,微处理器进入安全进入模式,并且验证最终代码和相应数字签名。
在步骤812,微处理器进入安全模式。由于先前设置了EMUOVR,所以EMUDABL字段641被清除。现在可以在安全模式中执行经验证的最终代码。用户可以使用仿真(例如,JTAG仿真)来观察和控制最终形式的代码的执行。
注意,虽然最终代码被附加给清除EMUDABL的指令,从而消除了额外的安全模式进入(步骤804、806和808),实际上,这将损害最终代码。方法800使用户能够在安全模式中调试实际的最终代码。
其它实施例
已经描述了本发明的至少一个示例实施例,本领域的技术人员容易想到各种替换、修改和改进。
在一些实施例中,消息(例如,图3A的消息301)本身可使用任何适合的加密算法被加密。在一些实施例中,对消息的加密和对数字签名的使用可以确保隐私和真实性两者。可以使用对称密钥算法进行加密。可用于加密的示例加密标准包括高级加密标准(AES)、数据加密标准(DES)。在一些实施例中,如果进入安全模式230(图2)并且访问私有存储器150(图1A),则首先验证被加密的消息。私有存储器可以存储解密所需的共享密钥。
在一些实施例中,多个公钥可被存储在微处理器100上(如果,例如,允许多个用户在安全模式中运行经验证的代码)。微处理器100可以使用每个公钥执行验证处理,直到消息被验证或直到每个公钥都被不成功地尝试。在一些实施例中,消息/签名对可以指示使用哪个公钥。
微处理器100可以被具体化为片上***、片上计算机、微控制器等。在一些实施例中,微处理器100是Analog Devices Blackfin处理器
微处理器100可以与任何硬件和/或软件调试工具兼容。可以经由调试端口134接收调试和/或仿真命令。微处理器100可以与IEEE1149.1JTAG标准兼容。在一些实施例中,通过调试端口134接收JTAG命令。
在一些实施例中,私有存储器区域的大小和/或位置可以是可选择的。
SECURE_SYSSWT寄存器可以是具有存储器映射地址0xFFC04320的32位寄存器。表1提供了根据一些实施例的寄存器内的每个位的功能的概要。
表1
SECURE_CONTROL寄存器可以是具有存储器映射地址0xFFC04324的16位寄存器。表2提供了根据一些实施例,该寄存器内的每个位的功能的概述。
表2
SECURE_STATUS寄存器可以是具有存储器映射地址0xFFC04328的16位寄存器。表3提供了根据一些实施例,该寄存器内的每个位的功能的概述。
表3
本领域的技术人员容易想到的替换、修改和改进旨在落在本发明的范围内。因此,前面的描述仅是示例,并且不旨在作为限制。本发明仅被限制为下面的权利要求和其等同物中的限定。
Claims (21)
1.一种被配置为在多个模式中操作的处理器,所述多个模式包括提供对处理器的资源的安全访问的安全模式,该处理器包括:
存储器,被配置为存储消息和固件代码;
第一寄存器位,被配置为指示多个状态中的状态,所述多个状态包括第一状态和第二状态,所述第一寄存器位被配置为当将要执行私有仿真指令时指示第一状态,并且被配置为当将要忽略私有仿真指令时指示第二状态;
第二寄存器位,所述第二寄存器位指示在随后进入安全模式之后第一寄存器位指示第一状态还是第二状态;以及
逻辑单元,被配置为执行固件代码,以便在安全模式之外验证所述消息,并且在对所述消息的成功验证之后,根据第二寄存器位设置第一寄存器位,并且进入安全模式。
2.如权利要求1所述的处理器,其中:
所述第二寄存器位仅在安全模式中可写,以便指示在随后进入安全模式之后第一寄存器位指示第一状态。
3.如权利要求2所述的处理器,其中,所述消息是软件代码,并且所述逻辑单元被进一步配置为在进入安全模式之后执行所述软件代码。
4.如权利要求3所述的处理器,其中,当所述软件代码在安全模式中被执行时,设置第二寄存器位,以便指示在随后进入安全模式之后第一寄存器位指示第一状态。
5.如权利要求1所述的处理器,进一步包括调试端口,所述调试端口可操作地被配置为接收私有仿真指令,并且将所述私有仿真指令提供给所述逻辑单元,其中,所述逻辑单元被配置为根据第一寄存器位执行所述私有仿真指令。
6.如权利要求5所述的处理器,其中,所述调试端口和私有仿真指令符合JTAG标准。
7.如权利要求1所述的处理器,其中:
所述存储器被进一步配置为存储数字签名;
所述固件代码包括计算机可执行指令,当被所述逻辑单元执行时,所述计算机可执行指令通过执行一种方法来验证所述消息,该方法包括:
从所述消息确定散列值;
使用公钥解密所述数字签名;以及
将解密的数字签名和所述散列值进行比较。
8.如权利要求1所述的处理器,进一步包括仅能在安全模式中被访问的私有存储器区域。
9.如权利要求1所述的处理器,进一步包括程序计数器,以便存储可由所述逻辑单元执行的指令的存储地址,其中,在执行所述固件代码时,所述逻辑单元被配置成:如果所述程序计数器中存储的存储地址不与所述固件代码的存储地址相对应,则中止所述固件代码的执行。
10.一种操作微处理器的方法,所述微处理器可在多个模式中操作,所述多个模式包括安全模式,该方法包括下述动作:
(a)在安全模式之外验证消息;
(b)在成功完成动作(a)之后,进入安全模式,从第一寄存器读取第一状态,并且基于第一状态,向第二寄存器写入第二状态,第一寄存器仅能在安全模式中被写为第一状态,并且第二状态指示将要执行仿真指令;以及
(c)在安全模式中,基于对第二寄存器的读取,确定将要执行仿真指令。
11.如权利要求10所述的方法,进一步包括下述动作:
(d)在动作(a)之前,在安全模式中执行设置代码,所述设置代码被配置为向第一寄存器写入第一状态,所述第一状态指示在随后的安全模式会话中将执行仿真指令;以及
(e)在动作(d)之后且在动作(a)之前,退出安全模式。
12.如权利要求10所述的方法,其中,所述消息包括可由所述处理器执行的目标代码,所述方法进一步包括:
(d)在安全模式中,执行所述目标代码;以及
(e)在动作(c)之后,执行所述仿真指令,当被执行时,所述仿真指令被配置为控制所述目标代码的执行。
13.如权利要求10所述的方法,其中,所述动作(a)包括:
确定所述消息的散列值;
使用公钥来解密数字签名;以及
将解密的签名和所述散列值进行比较。
14.如权利要求13所述的方法,其中,使用SHA-1散列算法来确定所述散列值,并且使用椭圆曲线密码解密所述数字签名。
15.如权利要求10所述的方法,其中,所述动作(b)进一步包括:基于存储在第三寄存器内的值,选择性地启用对私有存储器的访问。
16.一种可在多个模式中操作的处理器,所述多个模式包括安全模式,所述处理器包括:
第一存储器,被配置为当将要执行私有仿真指令时存储第一值,并且当将要忽略私有仿真指令时存储第二值;
第二存储器,被配置为指示当处理器进入安全模式时,第一存储器存储第一值还是第二值;以及
逻辑单元,当处理器进入安全模式时,基于所述第二存储器设置所述第一存储器。
17.如权利要求16所述的处理器,其中,仅当所述处理器在安全模式中操作时,所述第一存储器可被写为第一值。
18.如权利要求16所述的处理器,进一步包括只读存储器以存储固件代码,所述逻辑单元被配置为执行所述固件代码,以便对进入安全模式进行验证。
19.如权利要求18所述的处理器,其中,当被所述逻辑单元执行时,所述固件代码确定消息的真实性,并且当所述消息未被授权时,拒绝进入安全模式。
20.一种在操作的安全模式中调试处理器上的目标代码的方法,所述处理器包括:指示执行还是忽略私有仿真指令的第一存储器,以及指示在随后的安全模式会话中执行还是忽略私有仿真指令的第二存储器,所述处理器可在包括安全模式的多个模式中操作,所述方法包括下述动作:
(a)验证设置代码并且进入安全模式;
(b)在安全模式中执行设置代码,所述设置代码被配置为设置第二存储器,以便指示在随后的安全模式会话中执行私有仿真指令;
(c)退出安全模式;
(d)验证目标代码;
(e)在动作(d)之后,基于第二存储器设置第一存储器,并且进入安全模式;以及
(f)在动作(e)之后,经由私有仿真指令控制安全模式中所述目标代码的执行。
21.如权利要求20所述的方法,其中,所述私有仿真指令是私有JTAG仿真指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US6392508P | 2008-02-07 | 2008-02-07 | |
US61/063,925 | 2008-02-07 | ||
PCT/US2009/000768 WO2009099647A1 (en) | 2008-02-07 | 2009-02-06 | Method and apparatus for controlling system access during protected modes of operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101978377A CN101978377A (zh) | 2011-02-16 |
CN101978377B true CN101978377B (zh) | 2014-07-23 |
Family
ID=40527544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980109601.3A Expired - Fee Related CN101978377B (zh) | 2008-02-07 | 2009-02-06 | 用于控制受保护操作模式期间的***访问的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20090204823A1 (zh) |
EP (1) | EP2248063B1 (zh) |
JP (1) | JP5607546B2 (zh) |
CN (1) | CN101978377B (zh) |
WO (1) | WO2009099647A1 (zh) |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5059532B2 (ja) * | 2007-09-26 | 2012-10-24 | ルネサスエレクトロニクス株式会社 | 半導体集積回路 |
US8621137B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
US8484486B2 (en) * | 2008-08-06 | 2013-07-09 | Silver Spring Networks, Inc. | Integrated cryptographic security module for a network node |
US8732806B2 (en) * | 2009-09-14 | 2014-05-20 | Broadcom Corporation | Method and system for hardware enforced virtualization in an integrated circuit |
KR101636517B1 (ko) * | 2009-11-13 | 2016-07-06 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 디버그 정보 처리 방법 |
US9202015B2 (en) * | 2009-12-31 | 2015-12-01 | Intel Corporation | Entering a secured computing environment using multiple authenticated code modules |
CN104025041B (zh) * | 2011-12-29 | 2018-05-25 | 英特尔公司 | 管理员模式执行保护 |
TWI502947B (zh) * | 2012-04-12 | 2015-10-01 | Jintai Ding | New cryptographic system and method based on mismatching |
US20130305222A1 (en) * | 2012-05-11 | 2013-11-14 | Microsoft Corporation | Development System |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
KR20140073384A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법 |
US9881161B2 (en) | 2012-12-06 | 2018-01-30 | S-Printing Solution Co., Ltd. | System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
KR102102179B1 (ko) | 2013-03-14 | 2020-04-21 | 삼성전자 주식회사 | 임베디드 시스템, 이를 포함하는 인증 시스템, 및 인증 방법 |
US9395805B2 (en) * | 2013-03-15 | 2016-07-19 | Seagate Technology Llc | Device sleep partitioning and keys |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US20150052616A1 (en) | 2013-08-14 | 2015-02-19 | L-3 Communications Corporation | Protected mode for securing computing devices |
US9407638B2 (en) | 2013-08-26 | 2016-08-02 | The Boeing Company | System and method for trusted mobile communications |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
EP2843429B1 (en) * | 2013-09-03 | 2016-11-23 | Telefonaktiebolaget LM Ericsson (publ) | Enabling secured debug of an integrated circuit |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9344439B2 (en) * | 2014-01-20 | 2016-05-17 | The Boeing Company | Executing unprotected mode services in a protected mode environment |
KR102228454B1 (ko) | 2014-02-24 | 2021-03-16 | 삼성전자주식회사 | 보안 디버깅 회로를 갖는 디바이스 및 그것에 대한 디버깅 방법 |
US9703636B2 (en) * | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US20150331043A1 (en) * | 2014-05-15 | 2015-11-19 | Manoj R. Sastry | System-on-chip secure debug |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
CN105335672B (zh) * | 2014-06-16 | 2020-12-04 | 华为技术有限公司 | 一种安全模式提示方法及装置 |
US9734313B2 (en) | 2014-06-16 | 2017-08-15 | Huawei Technologies Co., Ltd. | Security mode prompt method and apparatus |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9870475B2 (en) * | 2014-06-25 | 2018-01-16 | Intel Corporation | Hardware configuration reporting systems |
US9785801B2 (en) * | 2014-06-27 | 2017-10-10 | Intel Corporation | Management of authenticated variables |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
KR102251812B1 (ko) | 2015-01-26 | 2021-05-13 | 삼성전자주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
GB2539199B (en) * | 2015-06-08 | 2018-05-23 | Arm Ip Ltd | Apparatus and methods for transitioning between a secure area and a less-secure area |
US9989592B2 (en) * | 2015-12-18 | 2018-06-05 | Intel IP Corporation | Interfaces for wireless debugging |
US10776524B2 (en) * | 2016-01-14 | 2020-09-15 | Intel Corporation | Secure communication channel for system management mode |
CN105843112B (zh) * | 2016-03-15 | 2018-07-13 | 珠海格力电器股份有限公司 | 一种mcu、终端和控制方法 |
CN106295259B (zh) * | 2016-08-03 | 2019-02-12 | 杭州晟元数据安全技术股份有限公司 | 一种利用不可屏蔽中断提高物联网产品安全性的方法 |
US10346345B2 (en) | 2017-05-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Core mapping |
US10353815B2 (en) * | 2017-05-26 | 2019-07-16 | Microsoft Technology Licensing, Llc | Data security for multiple banks of memory |
US10587575B2 (en) | 2017-05-26 | 2020-03-10 | Microsoft Technology Licensing, Llc | Subsystem firewalls |
US20190007212A1 (en) | 2017-06-30 | 2019-01-03 | Intel Corporation | Secure unlock systems for locked devices |
KR102401088B1 (ko) * | 2017-08-02 | 2022-05-24 | 삼성전자주식회사 | 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법 |
US10783240B2 (en) | 2017-09-29 | 2020-09-22 | Stmicroelectronics, Inc. | Secure environment in a non-secure microcontroller |
US20190108009A1 (en) * | 2017-10-05 | 2019-04-11 | Harman International Industries, Incorporated | Generating checksums on trusted storage devices for accelerated authentication |
KR102030074B1 (ko) * | 2017-11-10 | 2019-10-08 | 현대오트론 주식회사 | 레지스터 쓰기 오류 방지 장치 및 방법 |
CN110489351B (zh) * | 2018-05-14 | 2021-03-09 | 英韧科技(上海)有限公司 | 芯片指纹管理装置及安全芯片 |
US11144631B2 (en) * | 2018-09-11 | 2021-10-12 | Apple Inc. | Dynamic switching between pointer authentication regimes |
GB2579034B (en) * | 2018-11-15 | 2021-05-05 | Trustonic Ltd | Software installation method |
US11113385B2 (en) * | 2018-12-21 | 2021-09-07 | Paypal, Inc. | Communicating trace information between security zones |
US11263308B2 (en) * | 2019-03-25 | 2022-03-01 | Micron Technology, Inc. | Run-time code execution validation |
US11288404B2 (en) | 2019-06-14 | 2022-03-29 | Infineon Technologies Ag | Resource protection |
US11797713B2 (en) * | 2020-12-16 | 2023-10-24 | International Business Machines Corporation | Systems and methods for dynamic control of a secure mode of operation in a processor |
US11921655B2 (en) | 2021-05-04 | 2024-03-05 | Stmicroelectronics, Inc. | Dynamic memory protection device system and method |
CN113297091B (zh) * | 2021-06-18 | 2022-04-29 | 海光信息技术股份有限公司 | SoC芯片的调试方法、装置及SoC芯片 |
KR102650003B1 (ko) * | 2021-12-30 | 2024-03-21 | 주식회사 더스팟 | 복호화 데이터 범위에 따른 유저 데이터 수집 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1331539A2 (en) * | 2002-01-16 | 2003-07-30 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
CN1711524A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 在安全模式和非安全模式间切换的处理器 |
CN101065758A (zh) * | 2004-11-30 | 2007-10-31 | 模拟设备股份有限公司 | 支持安全模式的可编程处理器 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2504191B2 (ja) * | 1989-06-05 | 1996-06-05 | 三菱電機株式会社 | マイクロプロセッサ |
US6205560B1 (en) * | 1996-02-27 | 2001-03-20 | Via-Cyrix, Inc. | Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG |
US6138236A (en) * | 1996-07-01 | 2000-10-24 | Sun Microsystems, Inc. | Method and apparatus for firmware authentication |
US7171021B2 (en) * | 1998-11-20 | 2007-01-30 | Canon Kabushiki Kaisha | Data processing apparatus and method, and storage medium therefor |
JP4260984B2 (ja) * | 1999-06-04 | 2009-04-30 | 株式会社東芝 | 情報処理装置および情報処理方法 |
JP2001034504A (ja) * | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | ソースレベルデバッガ |
JP2001083874A (ja) * | 1999-09-14 | 2001-03-30 | Sony Corp | 情報提供システム、情報規制装置、情報受信装置及び情報提供方法 |
US6925570B2 (en) * | 2001-05-15 | 2005-08-02 | International Business Machines Corporation | Method and system for setting a secure computer environment |
JP2003186693A (ja) * | 2001-12-18 | 2003-07-04 | Mitsubishi Electric Corp | エミュレート機能を有するマイクロコントローラ |
US20040003321A1 (en) * | 2002-06-27 | 2004-01-01 | Glew Andrew F. | Initialization of protected system |
GB2402785B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Processor switching between secure and non-secure modes |
US7248069B2 (en) * | 2003-08-11 | 2007-07-24 | Freescale Semiconductor, Inc. | Method and apparatus for providing security for debug circuitry |
US8112618B2 (en) * | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
GB2416282B (en) * | 2004-07-15 | 2007-05-16 | Hewlett Packard Development Co | Identifier-based signcryption with two trusted authorities |
US7600166B1 (en) * | 2005-06-28 | 2009-10-06 | David Dunn | Method and system for providing trusted access to a JTAG scan interface in a microprocessor |
-
2009
- 2009-02-04 US US12/365,281 patent/US20090204823A1/en not_active Abandoned
- 2009-02-06 EP EP09707709.3A patent/EP2248063B1/en not_active Not-in-force
- 2009-02-06 WO PCT/US2009/000768 patent/WO2009099647A1/en active Application Filing
- 2009-02-06 JP JP2010545881A patent/JP5607546B2/ja not_active Expired - Fee Related
- 2009-02-06 CN CN200980109601.3A patent/CN101978377B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1331539A2 (en) * | 2002-01-16 | 2003-07-30 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
CN1711524A (zh) * | 2002-11-18 | 2005-12-21 | Arm有限公司 | 在安全模式和非安全模式间切换的处理器 |
CN101065758A (zh) * | 2004-11-30 | 2007-10-31 | 模拟设备股份有限公司 | 支持安全模式的可编程处理器 |
Also Published As
Publication number | Publication date |
---|---|
EP2248063B1 (en) | 2014-04-02 |
EP2248063A1 (en) | 2010-11-10 |
JP5607546B2 (ja) | 2014-10-15 |
CN101978377A (zh) | 2011-02-16 |
US20090204823A1 (en) | 2009-08-13 |
JP2011511383A (ja) | 2011-04-07 |
WO2009099647A1 (en) | 2009-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101978377B (zh) | 用于控制受保护操作模式期间的***访问的方法和装置 | |
King et al. | Implicit flows: Can’t live with ‘em, can’t live without ‘em | |
US7810002B2 (en) | Providing trusted access to a JTAG scan interface in a microprocessor | |
CN103038745B (zh) | 扩展完整性测量 | |
EP3543881B1 (en) | Chip access method, security control module, chip and debugging device | |
US20060282734A1 (en) | Test access control for secure integrated circuits | |
US20060080537A1 (en) | Illegal analysis / falsification preventing system | |
CN108347361B (zh) | 应用程序测试方法、装置、计算机设备和存储介质 | |
JP2004213216A (ja) | 情報セキュリティマイクロコンピュータ、そのプログラム開発装置およびそれらを含んだプログラム開発システム | |
JP2012524479A (ja) | ネットワークとの通信のためのデバイスの正当化および/または認証 | |
CN109960903A (zh) | 一种应用加固的方法、装置、电子设备及存储介质 | |
US20150242606A1 (en) | Device having secure jtag and debugging method for the same | |
Bai et al. | Trustfound: Towards a formal foundation for model checking trusted computing platforms | |
US20170243011A1 (en) | Component for processing a protectable date and method for implementing a security function for protecting a protective date in such a component | |
JP2007310688A (ja) | マイクロコンピュータおよびそのソフトウェア改竄防止方法 | |
Jacob et al. | faulTPM: Exposing AMD fTPMs’ Deepest Secrets | |
Lee et al. | A brief review on jtag security | |
CN114816549B (zh) | 一种保护bootloader及其环境变量的方法及*** | |
Msgna et al. | Secure application execution in mobile devices | |
CN116964575A (zh) | 代码部署 | |
Chen et al. | SoC security and debug | |
Yoshida et al. | Towards trusted iot sensing systems: Implementing puf as secure key generator for root of trust and message authentication code | |
Ashkenazi | Security Features in the i. MX31 and i. MX31L Multimedia Applications Processors | |
Zhang et al. | PA-Boot: A Formally Verified Authentication Protocol for Multiprocessor Secure Boot | |
Dave et al. | FVCARE: Formal Verification of Security Primitives in Resilient Embedded SoCs |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140723 Termination date: 20220206 |
|
CF01 | Termination of patent right due to non-payment of annual fee |