安全保护方法和处理器的制造方法

文档序号:6550781阅读:181来源:国知局
安全保护方法和处理器的制造方法
【专利摘要】本发明提供一种安全保护方法和处理器。所述安全保护方法包含以下步骤:根据指令的指令安全属性和操作事件的安全属性在执行指令之前或之后执行安全检查;当所述安全检查失败时,忽略所述操作事件、推迟所述操作事件、或提出安全异常;所述操作事件是作为所述处理器提取或执行指令时的副作用而产生、或作为对指令的监视结果而产生、或响应于所述处理器的外部输入而产生。
【专利说明】安全保护方法和处理器

【技术领域】
[0001]本发明是有关于一种安全保护方法和一种处理器,且特别是有关于一种安全保护方法和一种实施计算安全的处理器。

【背景技术】
[0002]在计算安全(computing security)的领域中,程序的执行和存取通常是通过一组硬性规则被限制到个别执行环境。所述规则确保了处理器所执行的每一个程序的每一个指令都是有效且安全的,以便保护执行环境免遭无意或未经授权的存取。


【发明内容】

[0003]本发明提供一种安全保护方法和处理器,所述处理器在程序可见的地址空间处实施计算安全从而为软件执行提供坚固的安全边界。
[0004]本发明的由处理器执行的安全保护方法包含以下步骤:根据指令的指令安全属性(instruct1n security attribute,简称 ISA)和操作事件(operat1nal event,简称 0E)的安全属性(security attribute,简称SA)在执行指令之前或之后执行安全检查;当安全检查失败时,忽略0E、推迟0E、或提出安全异常;所述OE是作为处理器提取(fetch)或执行指令时的副作用而产生、或作为对指令的监视结果而产生、或响应于处理器的外部输入而产生。
[0005]本发明的处理器包含指令提取单元、指令操作单元、OE产生器以及安全检查单元。所述指令操作单元耦接到指令提取单元。所述OE产生器耦接到指令提取单元和指令操作单元。所述安全检查单元耦接到指令提取单元、指令操作单元以及OE产生器。所述指令提取单元从指令提取地址空间提取指令。所述指令操作单元执行所述指令。所述OE产生器产生0E,所述OE是作为指令提取单元提取指令时或指令操作单元执行指令时的副作用而产生、或作为对指令的监视结果而产生、或回应于处理器的外部输入而产生。所述安全检查单元根据指令的ISA和OE的SA在指令操作单元执行指令之前或之后执行安全检查。当安全检查失败时,所述OE产生器忽略0E、推迟OE、或提出安全异常。
[0006]本发明的另一种安全保护方法由处理器执行且包含以下步骤:在第一指令为安全服务指令时基于第一指令的SA和代码SA来执行第一安全检查;当第一安全检查失败时,提出安全异常。
[0007]本发明的另一种处理器包含指令提取单元、指令操作单元以及安全检查单元。所述指令提取单元从指令提取地址空间(instruct1n fetch address space,简称IFAS)提取第一指令。所述指令操作单元耦接到指令提取单元以执行第一指令。所述安全检查单元耦接到指令提取单元和指令操作单元。在第一指令为安全服务指令时,所述安全检查单元基于第一指令的ISA和代码SA来执行第一安全检查。当第一安全检查失败时,所述安全检查单元提出安全异常。
[0008]本发明的另一种安全保护方法是本发明所提供的前述两种安全保护方法的组合。
[0009]本发明的另一种处理器是本发明所提供的前述两种处理器的组合。
[0010]为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

【专利附图】

【附图说明】
[0011]图1是示出根据本发明实施例的处理器100的一部分的示意图;
[0012]图2是示出根据本发明实施例的四个SLE以及它们在地址空间200中的关联区域的不意图;
[0013]图3是示出根据本发明实施例的由处理器100执行的安全保护方法的流程图;
[0014]图4示出了根据本发明实施例的在步骤310中执行的指令提取安全检查的详细流程;
[0015]图5示出了根据本发明实施例的在步骤330中执行的OE安全检查的详细流程;
[0016]图6示出了根据本发明实施例的在步骤350中执行的资源存取安全检查的详细流程;
[0017]图7示出了根据本发明实施例的在步骤350中执行的SSI安全检查的详细流程;
[0018]图8示出了根据本发明实施例的在步骤370中执行的OE安全检查的详细流程;
[0019]图9示出了根据本发明实施例的在提出安全异常时由安全异常单元180执行的安全异常处理的详细流程。
[0020]附图标记说明:
[0021]100:处理器;
[0022]110:指令提取地址产生器;
[0023]120:指令提取单元;
[0024]130:操作资源地址产生器;
[0025]140:指令操作单元;
[0026]150:操作事件产生器;
[0027]160:安全检查单元;
[0028]170:SLE 单元;
[0029]180:安全异常单元;
[0030]200:地址空间;
[0031]310 ?950:步骤;
[0032]AO ?A7:地址;
[0033]ISA:指令安全属性;
[0034]SA:安全属性;
[0035]SLEO?SLE3:安全查找项目。

【具体实施方式】
[0036]图1是示出根据本发明实施例的处理器100的一部分的示意图。处理器100包含指令提取地址产生器110、指令提取单元120、操作资源地址产生器130、指令操作单元140、操作事件(OE)产生器150、安全检查单元160、安全查找项目(security lookup entry,简称SLE)单元170,以及安全异常单元180。指令提取单元120耦接到指令提取地址产生器110。操作资源地址产生器130耦接到指令提取单元120。指令操作单元140耦接到操作资源地址产生器130。OE产生器150耦接到指令提取单元120和指令操作单元140。安全检查单元160耦接到指令提取单元120、指令操作单元140以及OE产生器150。SLE单元170耦接到指令提取地址产生器110、指令提取单元120、操作资源地址产生器130、OE产生器150,以及安全检查单元160。安全异常单元180耦接到指令提取地址产生器110和安全检查单元160。在本发明的一些其它实施例中,安全异常单元180可进一步耦接到处理器100的一些其它元件,例如指令提取单元120、操作资源地址产生器130、指令操作单元140或OE产生器150,以控制它们在异常处理期间的操作。
[0037]处理器100通过执行安全检查来实施计算安全,而安全检查的核心则是将指令的安全属性(SA)、指令所存取的操作资源的SA以及OE的SA相比较。OE可以作为指令提取单元120提取指令时或指令操作单元140执行指令时的副作用(例如异常(except1n))、或作为对指令的监视结果(例如,硬件除错事件,即,指令中断点(breakpoint)、数据观察点(watchpoint)、单步执行、或指令追踪(trace))、或回应于处理器的外部输入(例如中断(interrupt)),由OE产生器150产生。SA可以从SLE单元170提供的多个SLE获得。
[0038]SLE是存储在SLE单元170的查阅数据表中的项目,用于决定指令、操作资源和OE的SA。SLE单元170可以从处理器100的外部输入获取一些或所有的SLE。一个SLE可以包含一个或多个安全因数。在安全因数是SLE的一部分时或者在安全因数已经被标记到指令、操作资源或OE时,安全因数可被称作SA。在SLE的全部或部分的安全因数用以形成用于标记到指令、操作资源或OE上的SA时,所述SA分别被称作指令SA(instruct1n securityattribute,简称 ISA)或数据 SA (data security attribute,简称 DSA)。
[0039]另外,供来自指令提取地址空间(instruct1n fetch address space,简称IFAS)的指令或来自载入/存储地址空间(load/store address space,简称LSAS)的数据查找的SLE可包含标签,所述标签指定了在IFAS中、或在LSAS中、或在这两者中的地址空间区域。一些SLE可能不具有标签,而是与索引相关联。实际上,这些SLE是为了得到寄存器、SLE或OE的SA而要查找的SLE,其中这些寄存器和SLE是一些特殊指令的操作资源。
[0040]如上所述,SLE可以记录指定地址空间区域的标签以及与所述区域相关联的SA。所述区域可以是处理器100从中提取指令的IFAS的一部分,或者是映射到处理器100的外部接口的LSAS的一部分。LOAD指令可从所述LSAS读取数据。STORE指令可将数据写入所述LSAS。处理器100可以存取一个或多个IFAS,也可以存取一个或多个LSAS。每个IFAS和LSAS可以包含一个或多个区域。所述区域可以与相同的SA或不同的SA相关联。前述标签指定其区域的方式可以是记录所述区域的基底地址和大小或记录所述区域的起始地址和结束地址。
[0041]一个SA可以包含可用以控制安全性的一个或多个安全因数。例如,所述安全因数之一可以是安全特权等级(security privilege level,简称SPL)。SPL用数字来订定特权等级以作为安全检查之用。安全检查是将两个SA相比较以决定哪个SA更安全。所述比较是基于两个SA的安全因数。例如,在每个SA都包含SPL安全因数时,可以将两个SPL相比较。SPL数值较小的SA更安全。在本发明的一些其它实施例中,SPL数值较大的SA更安全。
[0042]图2是示出根据本发明实施例的四个SLE以及它们在地址空间200中的关联区域的示意图。由SLE单元170提供的四个SLE被标记为SLEO到SLE3,它们分别与区域O到3相关联。地址空间200可以是IFAS或LSAS。区域O开始于地址A2并且结束于地址A4。区域I开始于地址A5并且结束于地址A6。区域2开始于地址A3并且结束于地址A7。区域3开始于地址AO并且结束于地址Al。区域2与区域O和I重叠。
[0043]每一个指令都是提取自它的提取地址。指令可以为了自身的执行而存取操作资源。指令所存取的操作资源可以是在LSAS中寻址的数据、处理器100的寄存器、或由SLE单元170提供的SLE。所述数据的地址是在LSAS中映射到处理器100的内部存储器或外部接口的地址,并且指令从所述地址读取数据或将数据写入所述地址。
[0044]当SLE单元170接收到指令的提取地址或指令所存取的操作资源的数据地址时,SLE单元170可以根据所接收的地址来查找SLE中的区域。当只有一个SLE的区域覆盖了所接收的地址并且所接收的地址是指令的提取地址时,SLE单元170可以将所述SLE的SA的全部或部分的安全因数标记到所述指令。被标记的安全因数变成了所述指令的SA。指令的SA也被称作指令SA(ISA)。
[0045]当只有一个SLE的区域覆盖了所接收的地址并且所接收的地址是指令所存取的操作资源的数据地址时,SLE单元170可以将所述SLE的SA的全部或部分的安全因数标记到所述操作资源。被标记的安全因数变成了所述操作资源的SA。操作资源的SA也被称作数据 SA (DSA)。
[0046]当有一个以上SLE的区域覆盖了所接收的地址时,SLE单元170可以根据任何优先顺序方案来选择所述SLE中的一个并且将所选SLE的SA的全部或部分的安全因数标记到所述指令或操作资源。例如,SLE单元170可以选择SA最安全的SLE。
[0047]以图2所示的区域举例。当SLE单元170接收到指令的提取地址并且所述提取地址落入区域3时,SLE单元170可以用SLE3的SA对指令做标记。类似地,当SLE单元170接收到指令所存取的操作资源的数据地址并且所述数据地址落入区域3时,SLE单元170可以用SLE3的SA对操作资源做标记。当SLE单元170接收到指令的提取地址并且所述提取地址落入区域I时,SLE单元170可以选择SLEl或SLE2并且用所选SLE的SA对指令做标记,这是因为区域I与区域2重叠,使得SLEl和SLE2均与提取地址相匹配。类似地,当SLE单元170接收到指令所存取的操作资源的数据地址并且所述数据地址落入区域I时,SLE单元170可以选择SLEl或SLE2并且用所选SLE的SA对操作资源做标记。
[0048]如上所述,SLE可以与索引相关联。一些指令可以直接存取寄存器,而一些指令可以直接存取SLE。在指令所存取的操作资源是处理器100的寄存器或者是SLE时,寄存器或SLE都具有对应的索引。一些OE也具有对应的内部索引。当SLE单元170接收到此类索引时,SLE单元170可以将索引与所接收的索引相匹配的SLE的SA的全部或部分的安全因数标记到寄存器、SLE或0E。被标记的安全因数变成了寄存器、SLE或OE的SA。或者,在本发明的一些其它实施例中,部分或全部的寄存器、SLE和OE可以与硬编码SA而非记录在SLE单元170中的SA相关联。
[0049]有一种特殊的指令被称作安全服务指令(security service instruct1n,简称SSI)。SSI可以用来请求位于更安全的区域中的指令或者位于不能通过正规指令被请求提供服务的区域中的指令所提供的服务。例如,假定较小的SPL数值比较大的SPL数值更安全。通常,具有SPL3的函数呼叫指令请求具有SPL2的子程序所提供的服务会触发安全检查违规。然而,通过使用针对SPL3界定的SSI,具有SPL3的指令流可以请求具有SPL2的另一指令流所提供的服务而不会触发安全检查违规。可以针对不同的ISA界定不同的SSI,以向每个ISA请求服务。例如,可以针对SPL3界定一个SSI以向SPL2请求服务,可以针对SPL3界定一个SSI以向SPLl请求服务,并且可以针对SPL2界定另一 SSI以向SPLl请求服务,等等。SSI的不合法使用会引起安全检查违规。例如,具有SPL3的指令流执行针对SPL2界定的SSI是不合法的。
[0050]一个SSI与两个SA相关联。这两个SA中的一者是与SSI的提取地址相关联的ISA。这两个SA中的另一者是与SSI的指令代码和/或操作数(operand)相关联的代码SA。SSI的代码SA可以根据SSI的索引获得,而所述索引可以从SSI的指令代码和/或操作数得到。在本发明的一些实施例中,与SSI的ISA相关联的群组标识(即群组ID,下文进行详细描述)也可以用于产生SSI的索引。当SLE单元170接收到SSI的索引时,SLE单元170可以将索引与所接收的索引相匹配的SLE的SA的全部或部分的安全因数标记到所述SSI。被标记的安全因数变成了 SSI的代码SA。
[0051]在本发明的一些实施例中,记录在SLE中的每个SA都可以与群组ID相关联。群组ID可以存储在SLE中或存储在别处。在本发明的一些实施例中,群组ID检查可以包含在当前指令对下一个指令的安全检查中或者包括在当前指令对当前指令所存取的操作资源的安全检查中。
[0052]对于当前指令对下一个指令的安全检查,当下一个指令的ISA比当前指令的ISA更安全时,便出现安全违规。对于当前指令对其操作资源的安全检查,当操作资源的DSA比当前指令的ISA更安全时,便出现安全违规。然而,在前述SA安全检查没有出现安全违规时,本发明的一些实施例可以要求用群组ID进行进一步的检查。
[0053]当在前述SA检查中没有出现安全违规的情况下要求进行群组ID检查时,如果关联到当前指令的ISA的群组ID与关联到操作资源的DSA (或下一个指令的ISA)的群组ID相同,那么安全检查通过,而如果两个群组ID不同,那么安全检查失败。此类群组ID检查的两个实例示出于图4和图6中。在不要求群组ID检查时,当两个SA同等安全时,安全检查便被视为通过。
[0054]另外,每个SLE可以进一步与一个或多个ID检查属性位相关联,以便决定是在被检查的两个SA相同时还是在两个SA不同时执行群组ID检查(在SA安全检查中没有出现安全违规时)。ID检查属性位可以存储在其关联SLE中或存储在别处。
[0055]在本发明的一些实施例中,实施主机除错模式。当在主机除错模式下提出除错事件(OE)时,处理器100可以将其指令流重新引导到特殊端口或特殊地址空间,其中用于除错处理的其它指令从外部主机通过处理器100的实体除错接口(通常称作电路内除错端口,in-circuit debugging port)被馈送到所述端口或地址空间。由于外部指令可能会引起安全问题,因此此类指令实际上可以被虚拟化地视作来自另一单独的区域。换句话说,SLE单元170可以提供只专用于主机除错模式的特殊SLE。只要指令提取地址产生器110是在主机除错模式下查找外部指令的ISA,不管外部指令的提取地址是什么,SLE单元170都总是会将从此特殊SLE获得的SA和群组ID标记到外部指令。所述特殊SLE不用于任何其它目的。
[0056]图3是示出根据本发明实施例的由处理器100执行的安全保护方法的流程图。在步骤310中,指令提取地址产生器110产生指令的提取地址,指令提取单元120根据提取地址从IFAS提取指令,并且安全检查单元160执行指令提取安全检查,其细节示出于图4中。对于此安全检查,指令提取地址产生器110将提取地址提供到SLE单元170。SLE单元170根据提取地址在SLE中查找SA并且将所述SA提供到指令提取单元120以便标记到将在步骤320中从提取地址提取的新指令。因此,指令提取单元120从区域覆盖了指令的提取地址的一个所述SLE获得指令的ISA。指令的ISA用在指令提取安全检查中。
[0057]在步骤330中,安全检查单元160在指令执行之前执行OE安全检查,其细节示出于图5中。此安全检查所涉及的OE与指令自身并不相关。例如,OE可以是中断或硬件除错事件(例如指令中断点)。对于此安全检查,OE产生器将OE的索引提供到SLE单元170。SLE单元170根据所述索引在SLE中查找SA并且用所述SA对OE做标记。因此,安全检查单元160从索引与OE的索引相匹配的一个所述SLE获得OE的SA。OE的SA用在OE安全检查中。
[0058]在步骤340中,操作资源地址产生器130对指令解码以决定指令将要存取的操作资源,并且产生与指令将要存取的操作资源相关联的数据地址或索引。在步骤350中,安全检查单元160执行SSI安全检查或资源存取安全检查,其细节分别示出于图7和图6中。
[0059]当指令为SSI时,操作资源地址产生器130基于SSI的指令代码和/或操作数来产生SSI的索引并且将所述索引提供到SLE单元170。例如,操作资源地址产生器130可以将SSI的指令代码直接用作SSI的索引或将SSI的指令代码和某一操作数值编码成SSI的索引。在某一实施例中,操作资源地址产生器130可以另外基于与SSI的提取地址相关联的群组ID来产生索引。SLE单元170根据索引在SLE中查找SA并且用所述SA对SSI做标记。因此,安全检查单元160从索引与SSI的索引相匹配的一个所述SLE获得SSI的代码SA。SSI的代码SA用在SSI安全检查中。
[0060]对于资源存取安全检查,操作资源地址产生器130将与操作资源相关联的数据地址或索引提供到SLE单元170。SLE单元170根据所述数据地址或索引在SLE中查找SA并且用所述SA对操作资源做标记。因此,安全检查单元160从区域覆盖了所述数据地址的SLE或索引与操作资源的索引相匹配的SLE获得操作资源的SA。操作资源的SA用在资源存取安全检查中。
[0061 ] 在步骤360中,指令操作单元140照常执行指令。在步骤370中,安全检查单元160在指令执行之后执行另一 OE安全检查,其细节示出于图8中。此安全检查所涉及的OE与指令自身相关。例如,OE可以是在指令执行期间提出的异常。对于此安全检查,OE产生器将OE的索引提供到SLE单元170。SLE单元170根据所述索引在SLE中查找SA并且用所述SA对OE做标记。因此,安全检查单元160从索引与OE的索引相匹配的一个所述SLE获得OE的SA。OE的SA用在OE安全检查中。在步骤380中,指令操作单元140提交(commit)指令并且写回被指令修改过的数据。
[0062]当指令提取安全检查失败时,安全检查单元160会提出安全异常。当OE安全检查、SSI安全检查或资源存取安全检查中的任一者失败时,安全检查单元160也会提出安全异常。安全异常由安全异常单元180处理。安全异常处理的细节示出于图9中。
[0063]图4示出了根据本发明实施例的在步骤310中执行的指令提取安全检查的详细流程。首先,需要解释一下术语当前指令(current instruct1n,简称Cl)和下一个指令(next instruct1n,简称NI)。当前指令和下一个指令是按处理器100的提取次序来说的两个指令。指令提取单元120对下一个指令的提取紧跟在指令提取单元120对当前指令的提取之后。就在步骤410开始之前,当前指令已经被提取出并且处在处理器100的执行管线的某一阶段中(例如处在对应于步骤330、340、350、360、370或380的阶段中),而下一个指令将要被提取。在本发明的某一其它实施例中,在当前指令和下一个指令都已经通过它们的对应指令提取安全检查之后,这两个指令可以同时被提取。
[0064]在步骤410中,指令提取地址产生器110产生下一个指令的提取地址。在步骤420中,指令提取地址产生器110将提取地址提供到SLE单元170,以便对SLE进行查找来获得下一个指令的ISA,从而用ISA对下一个指令做标记。在步骤430中,安全检查单元160检查查找是否失败。
[0065]查找失败意味着SLE单元170未能发现任何SLE的区域覆盖了所提供的地址或任何SLE的索引与所提供的索引相匹配。当查找失败时,这表示安全违规,因此安全检查单元160在步骤490中提出安全异常。当查找通过时,在步骤440中,安全检查单元160检查下一个指令是否是为了执行OE处理程序或SSI处理程序而要提取的第一个指令。当下一个指令是为了执行OE处理程序或SSI处理程序而要提取的第一个指令时,没必要执行更多安全检查并且流程前进到步骤470。
[0066]或者,当下一个指令不是为了执行OE处理程序或SSI处理程序而要提取的第一个指令时,安全检查单元160在步骤450中检查下一个指令的ISA(NISA)是否比当前指令的ISA(CISA)更安全。步骤450之中的符号〃>"表示安全程度的「大于」。
[0067]当在步骤450中下一个指令的ISA比当前指令的ISA更安全时,这表示安全违规,安全检查单元160在步骤490中提出安全异常。
[0068]当在步骤450中下一个指令的ISA没有比当前指令的ISA更安全时,在步骤470中,安全检查单元160检查是否需要群组ID检查并且与当前指令的ISA相关联的群组ID是否不同于与下一个指令的ISA相关联的群组ID。是否需要群组ID检查是处理器100的一个设计选择。如果在步骤470中检查的条件为真,那表示出现安全违规,因此安全检查单元160在步骤490中提出安全异常。否则,安全检查通过,并且下一个指令变成之后的当前指令。接下来,在步骤480中,指令提取单元120从先前由指令提取地址产生器110产生的提取地址提取当前指令。
[0069]关于图4所示的指令提取安全检查的一些实例,请参看图2和图4。假定图2中的四个SLE的经排序的安全次序是SLEO、SLEl、SLE2和SLE3,其中SLEO的SA是四个SLE当中最安全的,并且假定不需要群组ID检查。当处理器100的执行流程从区域3跳到区域O时,这个转变就是个安全违规,必须提出安全异常。当处理器100的执行流从区域O跳到任何其它区域时,这样的转变是被允许的,因为区域O是最安全的。图4所示的指令提取安全检查不仅是为分支指令(branch instruct1ns)、跳跃指令(jump instruct1ns)和调用指令(call instruct1ns)执行,而且还为循序执行而执行。例如,当处理器100的执行流从前一个地址(区域2)进入地址A5(区域I)时,提出安全违规。
[0070]图5示出了根据本发明实施例的在步骤330中执行的OE安全检查的详细流程。在步骤510中,OE产生器150检查是否存在等待中的有效0E。当此类OE存在时,在步骤520中,OE产生器150将OE的索引提供到SLE单元170来对SLE进行查找以便获得OE的SA。在步骤530中,安全检查单元160检查查找是否失败。当查找失败时,则意味着OE没有相关联的SA并且不需要安全检查。因此,流程前进到步骤560以处理0E。
[0071]当查找通过时,在步骤540中,安全检查单元160基于当前指令的ISA以及OE的SA执行OE安全检查。在当前指令的ISA比OE的SA更安全时,OE安全检查失败。当步骤540中的安全检查失败时,OE产生器150可以在步骤550中推迟或忽略0E。被推迟的OE在步骤330的下一次反复中会被再次处理,而被忽略的OE将被删除并且不会再见到。例如,当OE为中断时,其中断处理可被推迟到执行流进入相关联的安全检查通过的IFAS区域之后。另一实例是对于未能通过OE安全检查的指令,将忽略对应于该OE的追踪数据输出。
[0072]当步骤540中的安全检查通过时,在步骤560中,OE产生器150检查是否有必要发出陷阱通知(trap)使处理器100来处理OE。当有必要发出陷阱通知时,在步骤570中,OE产生器150便发出陷阱通知使处理器100来处理0E。例如,当OE为中断或异常时,有必要发出陷阱通知使处理器100来将执行流重新引导到预定的处理程序。另外,OE产生器150可以向外部输出适当的信息,以便某一外部主机对OE作出回应。OE产生器150也可以不向外部输出所述的适当信息。当没有必要发出陷阱通知时,在步骤580中,OE产生器150向外部输出适当信息。例如,在OE是指令追踪时,OE产生器150可以仅仅通过一输出端口输出对应的除错信息。
[0073]图6示出了根据本发明实施例的在步骤350中执行的资源存取安全检查的详细流程。在步骤605中,操作资源地址产生器130检查当前指令是否为SSI。在当前指令是SSI时,流程前进到步骤610以执行SSI安全检查。SSI安全检查的细节示出于图7中。
[0074]在当前指令不是SSI时,在步骤615中,操作资源地址产生器130将操作资源的地址或索引提供到SLE单元170来对SLE进行查找,以便获得当前指令所需的操作资源的SA。在步骤620中,安全检查单元160检查查找是否失败。当查找失败时,这表示有安全违规,因此安全检查单元160在步骤625中提出安全异常。
[0075]当查找通过时,在步骤630中,安全检查单元160检查操作资源的SA(DSA)是否比当前指令的ISA更安全。当在步骤630中检查的前述条件为真时,这表示安全违规,因此安全检查单元160在步骤625中提出安全异常。
[0076]当在步骤630中检查的条件为假时,在步骤640中,安全检查单元160检查是否需要群组ID检查并且与当前指令的ISA相关联的群组ID是否不同于与操作资源的SA相关联的群组ID。如果在步骤640中检查的前述条件为真,这表示安全违规,因此安全检查单元160在步骤645中提出安全异常。否则,安全检查通过,并且在步骤650中,指令操作单元140可以存取用于指令操作的操作资源。
[0077]图7示出了根据本发明实施例的在步骤350中执行的SSI安全检查的详细流程。在步骤710中,操作资源地址产生器130将SSI的索引提供到SLE单元170来对SLE进行查找,以便获得SSI的代码SA。在步骤720中,安全检查单元160检查查找是否失败。当查找失败时,这表示安全违规,安全检查单元160在步骤750中提出安全异常。
[0078]当查找通过时,安全检查单元160在步骤730中执行SSI安全检查。当SSI指令的ISA不及SSI指令的代码SA安全时,SSI安全检查失败。当SSI安全检查失败时,安全检查单元160在步骤750中提出安全异常。当SSI安全检查通过时,安全检查单元160在步骤740中发出陷阱通知使处理器100来处理SSI。
[0079]图8示出了根据本发明实施例的在步骤370中执行的OE安全检查的详细流程。在步骤805中,OE产生器150检查当前指令的执行是否触发了 OE。在此类OE存在时,在步骤810中,OE产生器150将OE的索引提供到SLE单元170来对SLE进行查找以便获得OE的SA。在步骤815中,安全检查单元160检查查找是否失败。当查找失败时,则意味着OE没有关联的SA并且不需要安全检查。因此,流程前进到步骤840以处理0E。
[0080]当查找通过时,安全检查单元160在步骤820中执行OE安全检查。在当前指令的ISA比OE的SA更安全时,OE安全检查失败。当步骤820中的安全检查失败时,安全检查单元160在步骤825检查OE是否为致命异常(fatal except1n)。致命异常是在当前指令没有恰当完成时被触发并且会危及处理器100的状态或一致性。当OE是致命异常时,安全检查单元160在步骤830中提出安全异常。否则,OE产生器150可以在步骤835中忽略0E。
[0081]当步骤820中的安全检查通过时,在步骤840中,OE产生器150检查是否有必要发出陷阱通知使处理器100来处理0E。当有必要发出陷阱通知时,在步骤845中,OE产生器150发出陷阱通知使处理器100来处理0E。另外,OE产生器150可以向外部输出适当的信息,以便某一外部主机对OE作出回应。当没有必要发出陷阱通知时,则返回到图3所示的主流程。另外,在步骤850中,OE产生器150可以向外部输出适当信息。
[0082]图9示出了根据本发明实施例的在提出安全异常时由安全异常单元180执行的安全异常处理的详细流程。在步骤910中,安全异常单元180检查是否需要输出指示信号。是否输出指示信号来回应安全异常是可以预先设定的。当需要输出时,安全异常单元180在步骤920中设立(assert)指示信号,使得安全异常可以由外部装置处理。否则,流程前进到步骤930。
[0083]在步骤930中,安全异常单元180检查是否有必要停止处理器100的执行。当没有必要停止执行时,安全异常单元180在步骤940中发出陷阱通知使处理器来处理安全异常(security except1n,简称SE)。安全异常的处理程序可以驻存在最安全的区域中,对于此区域,在进入安全异常的处理程序时,IFAS和LSAS分别的原始视图(original view)始终分别保持一致。或者,安全异常的处理程序可以驻存在某些IFAS/LSAS中,而且只有在处理器100收到安全异常的陷阱通知时,处理器100才能看到这些IFAS/LSAS。当有必要停止执行时,在步骤950中,安全异常单元180可以通过设立重置信号来重置并停止处理器100,或者通过停止时脉信号输入到处理器100或清空(flush)处理器100的管线(pipeline)并停止处理器100的指令提取来完全停止处理器100。
[0084]总而言之,本发明是针对一种安全保护方法和一种处理器,所述处理器通过对指令、操作资源以及OE执行安全检查来实施计算安全,从而为软件执行提供坚固的安全边界。
[0085]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种由处理器执行的安全保护方法,其特征在于,包括: 根据第一指令的指令安全属性和操作事件的安全属性在执行所述第一指令之前或之后执行第一安全检查,其中所述操作事件是作为所述处理器提取或执行所述第一指令时的副作用而产生、或作为对所述第一指令的监视结果而产生、或响应于所述处理器的外部输入而产生;以及 当所述第一安全检查失败时,忽略所述操作事件、推迟所述操作事件、或提出安全异堂巾ο
2.根据权利要求1所述的安全保护方法,其特征在于,还包括: 执行第二安全检查、第三安全检查以及第四安全检查中的至少一者,其中 所述第二安全检查是基于所述第一指令的所述指令安全属性以及所述第一指令所存取的操作资源的安全属性, 所述第三安全检查是在所述第一指令为安全服务指令时执行,并且所述第三安全检查是基于所述第一指令的所述指令安全属性和代码安全属性, 所述第四安全检查是基于所述第一指令的所述指令安全属性和第二指令的指令安全属性,其中所述处理器对所述第二指令的提取紧跟在所述处理器对所述第一指令的提取之后;以及 当所述第二安全检查、所述第三安全检查以及所述第四安全检查中的任一者失败时,提出所述安全异常。
3.根据权利要求2所述的安全保护方法,其特征在于, 当所述第一指令的所述指令安全属性比所述操作事件的所述安全属性更安全时,所述第一安全检查失败, 当所述第一指令的所述指令安全属性不及所述操作资源的所述安全属性安全时或当所述第一指令的所述指令安全属性至少和所述操作资源的所述安全属性同等安全且与所述第一指令的所述指令安全属性相关联的群组标识不同于与所述操作资源的所述安全属性相关联的群组标识时,所述第二安全检查失败, 当所述第一指令的所述指令安全属性不及所述第一指令的所述代码安全属性安全时,所述第三安全检查失败, 当所述第一指令的所述指令安全属性不及所述第二指令的所述指令安全属性安全时或当所述第一指令的所述指令安全属性至少和所述第二指令的所述指令安全属性同等安全且与所述第一指令的所述指令安全属性相关联的所述群组标识不同于与所述第二指令的所述指令安全属性相关联的群组标识时,所述第四安全检查失败。
4.根据权利要求2所述的安全保护方法,其特征在于,所述操作资源是在载入/存储地址空间中寻址的数据、所述处理器的寄存器、或由所述处理器存储或存取的安全查找项目,所述载入/存储地址空间被映射到所述处理器的内部存储器或外部接口且所述第一指令从所述载入/存储地址空间读取数据或将数据写入所述载入/存储地址空间,其中每个所述安全查找项目记录了所述载入/存储地址空间或指令提取地址空间中的区域,所述处理器从所述指令提取地址空间提取所述第一指令和所述第二指令,且每个所述安全查找项目进一步记录了与所述区域相关联的安全属性。
5.根据权利要求4所述的安全保护方法,其特征在于,还包括: 从区域覆盖了所述第一指令的提取地址的所述安全查找项目获得所述第一指令的所述指令安全属性; 从区域覆盖了所述第二指令的提取地址的所述安全查找项目获得所述第二指令的所述指令安全属性;以及 从区域覆盖了在所述载入/存储地址空间中寻址的所述数据的地址的所述安全查找项目获得所述数据的安全属性。
6.根据权利要求4所述的安全保护方法,其特征在于,所述处理器在主机除错模式下提取的指令是用所述安全查找项目中的特殊安全查找项目的安全属性来标记,且所述特殊安全查找项目只专用于所述主机除错模式。
7.根据权利要求2所述的安全保护方法,其特征在于,所述处理器存储或存取多个安全查找项目,每个所述安全查找项目包括安全属性且每个所述安全查找项目与索引相关联,并且所述安全保护方法还包括: 从索引与所述操作事件的索引相匹配的所述安全查找项目获得所述操作事件的所述安全属性; 从索引与所述操作资源的索引相匹配的所述安全查找项目获得所述操作资源的所述安全属性;以及 从索引与所述第一指令的索引相匹配的所述安全查找项目获得所述第一指令的所述代码安全属性,其中所述第一指令的所述索引是从所述第一指令的指令代码、所述第一指令的操作数以及与所述第一指令的所述指令安全属性相关联的群组标识中的至少一者得到。
8.根据权利要求1所述的安全保护方法,其特征在于,还包括: 回应于所述安全异常而重置所述处理器、停止所述处理器、或发出陷阱通知使所述处理器处理所述安全异常。
9.一种处理器,其特征在于,包括: 指令提取单元,从指令提取地址空间提取第一指令; 指令操作单元,耦接到所述指令提取单元,用于执行所述第一指令; 操作事件产生器,耦接到所述指令提取单元和所述指令操作单元,用于产生操作事件,所述操作事件作为所述指令提取单元提取所述第一指令时或所述指令操作单元执行所述第一指令时的副作用而产生、或作为对所述第一指令的监视结果而产生、或响应于所述处理器的外部输入而产生;以及 安全检查单元,耦接到所述指令提取单元、所述指令操作单元和所述操作事件产生器,用于根据所述第一指令的指令安全属性和所述操作事件的安全属性在所述指令操作单元执行所述第一指令之前或之后执行第一安全检查,其中当所述第一安全检查失败时,所述操作事件产生器忽略所述操作事件、推迟所述操作事件、或提出安全异常。
10.根据权利要求9所述的处理器,其特征在于,还包括: 指令提取地址产生器,耦接到所述指令提取单元,用于产生所述第一指令和第二指令的提取地址,其中所述指令提取单元对所述第二指令的提取紧跟在所述指令提取单元对所述第一指令的提取之后;以及 操作资源地址产生器,耦接到所述指令提取单元和所述指令操作单元,用于产生与所述第一指令所存取的操作资源相关联的数据地址或索引,其中所述安全检查单元进一步执行第二安全检查、第三安全检查和/或第四安全检查,其中 所述第二安全检查是基于所述第一指令的所述指令安全属性和所述操作资源的安全属性,其中所述操作资源的所述安全属性是根据所述数据地址或所述索引而获得, 所述第三安全检查是在所述第一指令为安全服务指令时执行,并且所述第三安全检查是基于所述第一指令的所述指令安全属性和代码安全属性, 所述第四安全检查是基于所述第一指令的所述指令安全属性和所述第二指令的指令安全属性, 当所述第二安全检查、所述第三安全检查或所述第四安全检查中的任一者失败时,所述安全检查单元提出所述安全异常。
11.根据权利要求10所述的处理器,其特征在于, 当所述第一指令的所述指令安全属性比所述操作事件的所述安全属性更安全时,所述第一安全检查失败, 当所述第一指令的所述指令安全属性不及所述操作资源的所述安全属性安全时或当所述第一指令的所述指令安全属性至少和所述操作资源的所述安全属性同等安全且与所述第一指令的所述指令安全属性相关联的群组标识不同于与所述操作资源的所述安全属性相关联的群组标识时,所述第二安全检查失败, 当所述第一指令的所述指令安全属性不及所述第一指令的所述代码安全属性安全时,所述第三安全检查失败, 当所述第一指令的所述指令安全属性不及所述第二指令的所述指令安全属性安全时或当所述第一指令的所述指令安全属性至少和所述第二指令的所述指令安全属性同等安全且与所述第一指令的所述指令安全属性相关联的所述群组标识不同于与所述第二指令的所述指令安全属性相关联的群组标识时,所述第四安全检查失败。
12.根据权利要求10所述的处理器,其特征在于,所述操作资源是在载入/存储地址空间中寻址的数据、所述处理器的寄存器、或安全查找项目,所述载入/存储地址空间被映射到所述处理器的内部存储器或外部接口且所述第一指令从所述载入/存储地址空间读取数据或将数据写入所述载入/存储地址空间,并且所述处理器还包括: 安全查找项目单元,耦接到所述指令提取地址产生器、所述指令提取单元、所述操作资源地址产生器、所述操作事件产生器以及所述安全检查单元,用于提供所述多个安全查找项目,其中每个所述安全查找项目记录了所述载入/存储地址空间或所述指令提取地址空间中的区域,所述处理器从所述指令提取地址空间提取所述第一指令和所述第二指令,且每个所述安全查找项目进一步记录了与所述区域相关联的安全属性。
13.根据权利要求12所述的处理器,其特征在于,所述指令提取单元从区域覆盖了所述第一指令的所述提取地址的所述安全查找项目获得所述第一指令的所述指令安全属性,所述指令提取单元从区域覆盖了所述第二指令的所述提取地址的所述安全查找项目获得所述第二指令的所述指令安全属性,并且所述安全检查单元从区域覆盖了在所述载入/存储地址空间中寻址的所述数据的地址的所述安全查找项目获得所述数据的安全属性。
14.根据权利要求12所述的处理器,其特征在于,所述指令提取单元在主机除错模式下提取的指令是用所述安全查找项目中的特殊安全查找项目的安全属性来标记,且所述特殊安全查找项目只专用于所述主机除错模式。
15.根据权利要求10所述的处理器,其特征在于,还包括: 安全查找项目单元,耦接到所述指令提取地址产生器、所述指令提取单元、所述操作资源地址产生器、所述操作事件产生器以及所述安全检查单元,用于提供多个安全查找项目,其中每个所述安全查找项目包括安全属性且每个所述安全查找项目与索引相关联,其中所述安全检查单元从索引与所述操作事件的索引相匹配的所述安全查找项目获得所述操作事件的所述安全属性、从索引与所述操作资源的索引相匹配的所述安全查找项目获得所述操作资源的所述安全属性、且从索引与所述第一指令的索引相匹配的所述安全查找项目获得所述第一指令的所述代码安全属性,其中所述第一指令的所述索引是从所述第一指令的指令代码、所述第一指令的操作数以及与所述第一指令的所述指令安全属性相关联的群组标识中的至少一者得到。
16.根据权利要求9所述的处理器,其特征在于,还包括: 安全异常单元,耦接到所述安全检查单元,用于响应于所述安全异常而重置所述处理器、停止所述处理器、或发出陷阱通知使所述处理器处理所述安全异常。
17.一种由处理器执行的安全保护方法,其特征在于,包括: 在第一指令为安全服务指令时基于所述第一指令的指令安全属性和代码安全属性来执行第一安全检查;以及 当所述第一安全检查失败时,提出安全异常。
18.根据权利要求17所述的安全保护方法,其特征在于,还包括: 执行第二安全检查和第三安全检查中的至少一者,其中 所述第二安全检查是基于所述第一指令的所述指令安全属性以及所述第一指令所存取的操作资源的安全属性, 所述第三安全检查是基于所述第一指令的所述指令安全属性以及第二指令的指令安全属性,其中所述处理器对所述第二指令的提取紧跟在所述处理器对所述第一指令的提取之后;以及 当所述第二安全检查和所述第三安全检查中的任一者失败时,提出所述安全异常。
19.根据权利要求18所述的安全保护方法,其特征在于, 当所述第一指令的所述指令安全属性不及所述第一指令的所述代码安全属性安全时,所述第一安全检查失败, 当所述第一指令的所述指令安全属性不及所述操作资源的所述安全属性安全时或当所述第一指令的所述指令安全属性至少和所述操作资源的所述安全属性同等安全且与所述第一指令的所述指令安全属性相关联的群组标识不同于与所述操作资源的所述安全属性相关联的群组标识时,所述第二安全检查失败, 当所述第一指令的所述指令安全属性不及所述第二指令的所述指令安全属性安全时或当所述第一指令的所述指令安全属性至少和所述第二指令的所述指令安全属性同等安全且与所述第一指令的所述指令安全属性相关联的所述群组标识不同于与所述第二指令的所述指令安全属性相关联的群组标识时,所述第三安全检查失败。
20.根据权利要求18所述的安全保护方法,其特征在于,所述操作资源是在载入/存储地址空间中寻址的数据、所述处理器的寄存器、或由所述处理器存储或存取的安全查找项目,所述载入/存储地址空间被映射到所述处理器的内部存储器或外部接口,且所述第一指令从所述载入/存储地址空间读取数据或将数据写入所述载入/存储地址空间,其中每个所述安全查找项目记录了所述载入/存储地址空间或指令提取地址空间中的区域,所述处理器从所述指令提取地址空间提取所述第一指令和所述第二指令,且每个所述安全查找项目进一步记录了与所述区域相关联的安全属性。
21.根据权利要求20所述的安全保护方法,其特征在于,还包括: 从区域覆盖了所述第一指令的提取地址的所述安全查找项目获得所述第一指令的所述指令安全属性; 从区域覆盖了所述第二指令的提取地址的所述安全查找项目获得所述第二指令的所述指令安全属性;以及 从区域覆盖了在所述载入/存储地址空间中寻址的所述数据的地址的所述安全查找项目获得所述数据的安全属性。
22.根据权利要求18所述的安全保护方法,其特征在于,所述处理器存储或存取多个安全查找项目,每个所述安全查找项目包括安全属性且每个所述安全查找项目与索引相关联,并且所述安全保护方法还包括: 从索引与所述操作资源的索引相匹配的所述安全查找项目获得所述操作资源的所述安全属性;以及 从索引与所述第一指令的索引相匹配的所述安全查找项目获得所述第一指令的所述代码安全属性,其中所述第一指令的所述索引是从所述第一指令的指令代码、所述第一指令的操作数以及与所述第一指令的所述指令安全属性相关联的群组标识中的至少一者得到。
23.一种处理器,其特征在于,包括: 指令提取单元,从指令提取地址空间提取第一指令; 指令操作单元,耦接到所述指令提取单元,用于执行所述第一指令; 安全检查单元,耦接到所述指令提取单元和所述指令操作单元,用于在所述第一指令为安全服务指令时基于所述第一指令的指令安全属性和代码安全属性来执行第一安全检查,当所述第一安全检查失败时提出安全异常。
24.根据权利要求23所述的处理器,其特征在于,还包括: 指令提取地址产生器,耦接到所述指令提取单元,用于产生所述第一指令和第二指令的提取地址,其中所述指令提取单元对所述第二指令的提取紧跟在所述指令提取单元对所述第一指令的提取之后;以及 操作资源地址产生器,耦接到所述指令提取单元和所述指令操作单元,用于产生与所述第一指令所存取的操作资源相关联的数据地址或索引,其中所述安全检查单元进一步执行第二安全检查和/或第三安全检查,其中 所述第二安全检查是基于所述第一指令的所述指令安全属性和所述操作资源的安全属性,其中所述操作资源的所述安全属性是根据所述数据地址或所述索引而获得, 所述第三安全检查是基于所述第一指令的所述指令安全属性和所述第二指令的指令安全属性, 当所述第二安全检查或所述第三安全检查失败时,所述安全检查单元提出所述安全异堂巾Ο
25.根据权利要求24所述的处理器,其特征在于, 当所述第一指令的所述指令安全属性不及所述第一指令的所述代码安全属性安全时,所述第一安全检查失败, 当所述第一指令的所述指令安全属性不及所述操作资源的所述安全属性安全时或当所述第一指令的所述指令安全属性至少和所述操作资源的所述安全属性同等安全且与所述第一指令的所述指令安全属性相关联的群组标识不同于与所述操作资源的所述安全属性相关联的群组标识时,所述第二安全检查失败, 当所述第一指令的所述指令安全属性不及所述第二指令的所述指令安全属性安全时或当所述第一指令的所述指令安全属性至少和所述第二指令的所述指令安全属性同等安全且与所述第一指令的所述指令安全属性相关联的所述群组标识不同于与所述第二指令的所述指令安全属性相关联的群组标识时,所述第三安全检查失败。
26.根据权利要求24所述的处理器,其特征在于,所述操作资源是在载入/存储地址空间中寻址的数据、所述处理器的寄存器、或安全查找项目,所述载入/存储地址空间被映射到所述处理器的内部存储器或外部接口,且所述第一指令从所述载入/存储地址空间读取数据或将数据写入所述载入/存储地址空间,并且所述处理器还包括: 安全查找项目单元,耦接到所述指令提取地址产生器、所述指令提取单元、所述操作资源地址产生器以及所述安全检查单元,用于提供所述多个安全查找项目,其中每个所述安全查找项目记录了所述载入/存储地址空间或所述指令提取地址空间中的区域,所述处理器从所述指令提取地址空间提取所述第一指令和所述第二指令,且每个所述安全查找项目进一步记录了与所述区域相关联的安全属性。
27.根据权利要求26所述的处理器,其特征在于,所述指令提取单元从区域覆盖了所述第一指令的所述提取地址的所述安全查找项目获得所述第一指令的所述指令安全属性,所述指令提取单元从区域覆盖了所述第二指令的所述提取地址的所述安全查找项目获得所述第二指令的所述指令安全属性,并且所述安全检查单元从区域覆盖了在所述载入/存储地址空间中寻址的所述数据的地址的所述安全查找项目获得所述数据的安全属性。
28.根据权利要求24所述的处理器,其特征在于,还包括: 安全查找项目单元,耦接到所述指令提取地址产生器、所述指令提取单元、所述操作资源地址产生器以及所述安全检查单元,用于提供多个安全查找项目,其中每个所述安全查找项目包括安全属性且每个所述安全查找项目与索引相关联,其中所述安全检查单元从索引与所述操作资源的索引相匹配的所述安全查找项目获得所述操作资源的所述安全属性、且从索引与所述第一指令的索引相匹配的所述安全查找项目获得所述第一指令的所述代码安全属性,其中所述第一指令的所述索引是从所述第一指令的指令代码、所述第一指令的操作数以及与所述第一指令的所述指令安全属性相关联的群组标识中的至少一者得到。
29.一种由处理器执行的安全保护方法,其特征在于,包括: 根据第一指令的指令安全属性和操作事件的安全属性在执行所述第一指令之前或之后执行第一安全检查,其中所述操作事件是作为所述处理器提取或执行所述第一指令时的副作用而产生、或作为对所述第一指令的监视结果而产生、或响应于所述处理器的外部输入而产生; 当所述第一安全检查失败时,忽略所述操作事件、推迟所述操作事件、或提出安全异常; 在所述第一指令为安全服务指令时基于所述第一指令的所述指令安全属性和代码安全属性来执行第二安全检查;以及 当所述第二安全检查失败时,提出所述安全异常。
30.一种处理器,其特征在于,包括: 指令提取单元,从指令提取地址空间提取第一指令; 指令操作单元,耦接到所述指令提取单元,用于执行所述第一指令; 操作事件产生器,耦接到所述指令提取单元和所述指令操作单元,用于产生操作事件,所述操作事件是作为所述指令提取单元提取所述第一指令时或所述指令操作单元执行所述第一指令时的副作用而产生、或作为对所述第一指令的监视结果而产生、或响应于所述处理器的外部输入而产生;以及 安全检查单元,耦接到所述指令提取单元、所述指令操作单元以及所述操作事件产生器,用于根据所述第一指令的指令安全属性和所述操作事件的安全属性在所述指令操作单元执行所述第一指令之前或之后执行第一安全检查,以及在所述第一指令为安全服务指令时基于所述第一指令的所述指令安全属性和代码安全属性来执行第二安全检查,其中当所述第一安全检查失败时,所述操作事件产生器忽略所述操作事件、推迟所述操作事件、或提出安全异常,其中当所述第二安全检查失败时,所述安全检查单元提出所述安全异常。
【文档编号】G06F21/52GK104281805SQ201410288951
【公开日】2015年1月14日 申请日期:2014年6月25日 优先权日:2013年7月9日
【发明者】赖吉昌, 张传华 申请人:晶心科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1