CN100354787C - 微处理器 - Google Patents
微处理器 Download PDFInfo
- Publication number
- CN100354787C CN100354787C CNB2005100809360A CN200510080936A CN100354787C CN 100354787 C CN100354787 C CN 100354787C CN B2005100809360 A CNB2005100809360 A CN B2005100809360A CN 200510080936 A CN200510080936 A CN 200510080936A CN 100354787 C CN100354787 C CN 100354787C
- Authority
- CN
- China
- Prior art keywords
- information
- protected
- microprocessor
- password
- program
- 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
Abstract
本申请涉及微处理器,其包括:当所获取的信息为加密信息时,对要由处理器内核使用的信息解密以获取明文信息的解密单元;将明文信息存储起来的明文信息存储单元。该微处理器还包括:根据是否执行了解密,对所述明文信息添加表示保护或者不保护的受保护属性的受保护属性添加单元;获取对所述明文信息的访问请求的访问请求获取单元;识别所述访问请求的请求类型的请求类型识别单元;以及根据所述请求类型和所述受保护属性控制对所述明文信息的访问的访问控制单元。
Description
对相关申请的引用
本申请基于下述在先专利申请并要求其优先权:2004年6月24日递交的日本专利申请No.2004186910,2004年8月3日递交的日本专利申请No.2004-226886,以及2005年4月1日递交的日本专利申请No.2001-345678。这些申请的全部内容通过引用全部被结合在本申请中。
技术领域
本发明涉及具有处理器内核的微处理器。
背景技术
根据传统上已知的技术,在微处理器中提供了嵌入式调试器接口并连接到调试器,以允许对处理器的内部状态进行分析,以方便软件开发时的调试。
根据传统技术,用户能够通过内嵌在处理器中的调试器接口从调试器访问处理器内部的资源比如寄存器和存储器。另外,用户能够使处理器分步执行。
但是,内置的调试器接口不仅方便了合法的软件开发人员进行程序验证工作,而且也方便了其它软件开发人员和用户对软件进行分析。
例如,如果被开发出来的软件包含有机密信息,则需要防止软件用户和其它软件开发人员对软件进行分析。
为此,例如日本专利申请公开No.2002-244757提出了一种方法,使用在解密时选择的密码禁用调试功能,当存储在处理器的存储器中的受保护的程序被选择为调试目标时,该方法禁用调试操作。
但是,在某些情况下,受保护程序和不受保护的程序共存在一起。那么,只应针对受保护的程序禁用来自调试器的访问。这样,就存在一种逐渐增长的需求:使微处理器允许进行弹性的程序保护。
发明内容
根据本发明的一个方面,一种微处理器包括:从外部获取要由处理器内核使用的信息的信息获取单元;当所获取的信息为加密信息时,对获取的信息解密以获取明文信息的解密单元;将通过解密获取的明文信息存储起来的明文信息存储单元;根据是否执行了解密,对所述明文信息添加表示保护或者不保护的受保护属性的受保护属性添加单元;获取对所述明文信息的访问请求的访问请求获取单元;识别所述访问请求的请求类型的请求类型识别单元;以及根据所述请求类型和所述受保护属性控制对所述明文信息的访问的访问控制单元。
根据本发明的另一方面,一种微处理器包括:从外部获取要由处理器内核使用的信息的信息获取单元;当所获取的信息为加密信息时,对获取的信息解密以获取明文信息的解密单元;将通过解密获取的明文信息存储起来的明文信息存储单元;存储用于解密的密码的密码存储单元;向所述明文信息添加标识密码的密码标识信息的密码标识信息添加单元;存储所述密码标识信息的密码标识信息存储单元;获取对所述明文信息的访问请求的访问请求获取单元;识别所述访问请求的请求类型的请求类型识别单元;以及根据所述请求类型和所述密码标识信息控制对所述明文信息的访问的访问控制单元。
根据本发明的又一方面,一种微处理器包括:对流水线中的每一个站执行的程序与每一个站相关联地存储受保护属性的受保护属性存储单元;从调试器获取调试请求的调试请求获取单元;以及当在获取所述调试请求时所有的受保护属性都表示不保护时,允许来自调试器的访问的调试中断控制单元。
根据本发明的又一方面,一种微处理器包括:对处理器内核执行的程序存储受保护属性的受保护属性存储单元;以及当所述受保护属性都表示不保护时,允许输出从所述微处理器获取的跟踪信息的跟踪信息输出控制单元。
附图说明
图1是包括本发明第一实施例的微处理器的系统的总体结构的示意图;
图2是密码表的数据结构的示意图;
图3是由受保护属性添加单元用于添加受保护属性的受保护属性确定表的示意图;
图4是由指令存储器访问控制单元使用的访问控制规则的示意图;
图5是将外部存储器中存储的程序通过直接存储器存取(DMA)控制器写入内部存储器中的读取处理的流程图;
图6是根据图5描述的处理读出内部存储器中存储的程序的读取处理的流程图;
图7是在被设定为调试器模式的指令存储器中已经存储了明文程序,并且给出了进一步写入一个明文程序也就是改写指令时的写入处理的流程图;
图8是根据本发明第一实施例的第一变型,受保护属性存储器的数据结构的示意图;
图9是根据本发明第一实施例的第二变型,受保护属性存储器的数据结构的示意图;
图10是根据第一实施例的第三变型的系统的总体结构的示意图;
图11是根据第一实施例的第四变型的写入处理的流程图;
图12是根据第二实施例的系统的总体结构的示意图;
图13是在根据第二实施例的系统中由处理器内核执行程序的处理的流程图;
图14是软件运行分析的过程的流程图;
图15是根据第二实施例的一个变型的读取处理的流程图;
图16是根据第三实施例的系统的总体结构的示意图;
图17是根据第四实施例的系统的总体结构的示意图;
图18是明文程序的状态转换示意图;
图19是对指令存储器访问控制单元中的数据读取的访问控制规则的示意图;
图20是对指令存储器访问控制单元中的数据写入的访问控制规则的示意图;
图21是在用特殊指令初始化时的处理的流程图;
图22是在将外部存储器中存储的程序通过DMA控制器写入内部存储器中时的写入处理的流程图;
图23是在程序保持处理中,内部存储器中的处理的详细流程图;
图24是在读出内部存储器中存储的程序时的读取处理的流程图;
图25是根据第五实施例的系统的总体结构的示意图;
图26是根据第五实施例,由系统的处理器内核执行程序时的处理的流程图;
图27是在对处理器内核执行调试器中断时的调试器中断处理的流程图;
图28是在从处理器内核输出跟踪信息时的跟踪信息数出处理的流程图;
图29是根据第六实施例的系统的总体结构的示意图;
图30是数据存储器访问控制单元的数据读取访问控制规则的示意图;
图31是数据存储器访问控制单元的数据写入访问控制规则的示意图;
图32是将外部存储器中存储的数据通过DMA控制器写入内部存储器中的写入处理的流程图;
图33是在数据存储处理时内部存储器执行的处理的详细流程图;
图34是读出内部存储器中存储的数据时的读取处理的流程图。
具体实施方式
下面结合附图详细描述根据本发明的微处理器的实施例。应当注意,本发明不限于这里所描述的实施例。
图1是具有本发明第一实施例的处理器的系统10的总体结构的示意图。该系统10包括处理器100、外部存储器200、用户接口300和外部总线400。处理器100有处理器内核110、内部存储器120、直接存储器存取(DMA)控制器130、调试器接口140和总线接口单元(BIU)150。
外部存储器200存储要由处理器内核110执行的程序。外部存储器200存储加密程序和明文程序。
DMA控制器130在外部存储器200和内部存储器120之间转移数据。在获取加密程序时,DMA控制器130对其解密,以将其转换为明文程序,并将得到的明文程序存入内部存储器120中。另一方面,在获取明文程序时,DMA控制器130将其原样存储在内部存储器120中。
处理器内核110读取存储在内部存储器120、高速缓存控制器(未图示)和外部存储器200中的程序,以执行该程序。BIU150是用于与外部设备之间的输入输出的接口。BIU150根据来自处理器内核110或者高速缓存控制器(未图示)的请求从外部存储器200读取数据或者向外部存储器200写入数据。
调试器接口140连接到系统10外部的调试器500。调试器接口140在从调试器500接收到请求时将对处理器内核110、内部存储器120、DMA控制器130等的请求分类。另外,在响应于所分类的请求从每一个设备接收到执行结果时,调试器接口140将接收到的执行结果发回调试器500。
DMA控制器130具有密码ID寄存器132、密码表133、加密解密单元134以及受保护属性添加单元135。
在密码ID寄存器132中,设置密码ID以用于标识密码,并在对从外部存储器200读出的程序解密时使用。这里,密码ID的值由用户通过用户界面设置。当从外部存储器200中读出的程序是未被加密的明文程序时,在密码ID寄存器132中设置“0”。或者,可以响应于程序的执行自动设置密码ID的值。
密码表133相关联地存储密码ID和密码。图2是密码表133的数据结构的示意描述。密码表133相关联地存储密码和用于标识所述密码的密码ID。这里,要存储在密码表133中的密码ID是“0”以外的值。
这样,根据密码ID寄存器132中设置的值,也就是根据该设置的值是否是“0”,可以知道是否进行过解密,也就是程序是否是以加密形式获得的。
当密码ID寄存器132中设置的值不是“0”时,从外部存储器200获取的程序是加密程序。然后,加密解密单元134使用密码表133识别对应于密码ID寄存器132中设置的密码ID的密码。加密解密单元134使用所识别的密码对加密程序进行解密,获得明文程序。当密码ID寄存器132中设置的值是“0”时,换句话说,当所获取的程序是明文程序时,加密解密单元134不执行解密操作。
受保护属性添加单元135对从外部存储器200获取的程序添加受保护属性。图3图示了由受保护属性添加单元135用来赋予受保护属性的受保护属性确定表136。
如图3所示,当密码ID寄存器132中设置了“0”时,受保护属性添加单元135将表示不保护的受保护属性“0”添加到相应程序。当密码ID寄存器132中设置的值不是“0”时,受保护属性添加单元135将表示保护的受保护属性“1”添加到对应的明文程序。换句话说,受保护属性添加单元135对从外部以加密形式获取的程序添加表示保护的受保护属性,对从外部以明文形式获取的程序添加表示不保护的受保护属性。
这样,只有以加密形式获取的程序才称为保护对象。
在第一实施例中,用值“0”和“1”表示受保护属性。但是,可以用任何值来表示受保护属性,只要能够区分“保护”和“不保护”即可。例如,在密码ID寄存器132中设置的值可以用作受保护属性,或者也可以使用密码的值。
受保护属性添加单元135使得内部存储器120与对应的明文程序相关联地存储被添加到所述明文程序的受保护属性。
内部存储器120具有存储程序的指令存储单元121和存储数据的数据存储单元125。指令存储单元121还包括受保护属性存储器122、指令存储器123和指令存储器访问控制单元124。
指令存储器123存储从加密解密单元134获取的明文程序。受保护属性存储器122存储添加到指令存储器123中存储的明文程序的受保护属性。指令存储器访问控制单元124控制对指令存储器123的外部访问。
图4是指令存储器访问控制单元124的访问控制规则。如图4所示,当访问请求是处理器内核110取指令,并且被请求的程序具有“保护”的受保护属性时,允许访问。另一方面,如果访问请求不是处理器内核110取指令,并且被请求的程序具有“保护”的受保护属性,则限制访问,也就是提供一个出错信息作为输出。当被请求的程序具有“不保护”的受保护属性,则不管请求类型如何,都允许访问。
这样,通过禁止特定请求类型之外的任何请求类型的访问,可以防止第三方非法读取明文程序。另外,当限制对具有“保护”的受保护属性的程序的访问时,可以防止对特定明文程序的非法读取。
图5是通过DMA控制器130将外部存储器200中存储的程序写入到内部存储器120中的处理的流程图。
首先,用户在外部存储器200中存储要由处理器内核110执行的程序。这里,假设程序存储在外部存储器200中的地址X到Y。另外,在程序执行之前,在DMA控制器130的密码ID寄存器132中设置密码ID(步骤S100、步骤S102)。这里,根据用户通过用户接口300给出的指令设置密码。
处理器内核110将一个DMA转移请求发送给DMA控制器130(步骤S104)。这里,DMA转移请求是请求将外部存储器200中地址X到Y的数据转移到内部存储器中的信息。
DMA控制器130从外部存储器200读出对应于地址X到Y的程序E2[C(X到Y)](步骤S106)。这里,如果密码ID寄存器132中设置的值不是“0”(步骤S108中的“否”),则加密解密单元134使用从密码表133获得的密码对加密程序E2[C(X到Y)]解密,获得明文程序C(X到Y)(步骤S110)。
当密码ID寄存器132中设置的值不是“0”时,有关程序是加密的。进行解密以获得明文程序。
另一方面,如果密码ID寄存器132中设置的值是“0”(步骤S108中的“是”),则处理序列前进到没有解密处理的步骤S112(这在后面描述)。
当密码ID寄存器132中设置了“0”值时,对应的程序是明文程序,不需要解密。
然后,根据密码ID寄存器132中设置的值,受保护属性添加单元135向要存储在内部存储器120中的明文程序添加一个受保护属性(步骤S112)。具体地,当密码ID寄存器132中设置的值为“0”时,也就是当程序以明文形式被获取时,受保护属性添加单元135添加表示“不保护”的受保护属性“0”。
另一方面,当密码ID寄存器132中设置的值不是“0”时,即程序是以加密形式获得的,受保护属性添加单元135添加表示保护的受保护属性“1”。
然后,加密解密单元134将所述明文程序发送到内部存储器120(步骤S114)。另外,受保护属性添加单元135将被添加给所述明文程序的所述受保护属性发送到内部存储器120(步骤S116)。
内部存储器120在指令存储器123中存储从DMA控制器130发来的作为解密结果的明文程序C(X到Y)(步骤S120)。另外,内部存储器120在受保护属性存储器122中存储所述受保护属性(步骤S122)。当完成明文程序从DMA控制器130到内部存储器120的转移时,向处理器内核110通知DMA转移的完成(步骤S124)。
然后,处理器内核110通过取指令请求读出明文程序(步骤S126)。在接收到读出请求时,内部存储器120将被请求的明文程序输出到处理器内核110(步骤S128)。
通过上述处理,程序被存储到内部存储器120中,处理器内核110准备好执行该程序。
图6是读出根据上面参照图5描述的处理存储到内部存储器120中的程序的读出处理的流程图。
内部存储器120的指令存储器访问控制单元124在接收到读出指令存储器123中存储的程序的请求(步骤S200)时,识别所述读请求的类型是不是“处理器内核110取指令”。具体地,例如可以根据物理线路来识别请求类型。当请求类型被识别为“处理器内核110取指令”时(步骤S202中的“是”),则指令存储器访问控制单元124将指令存储器123中存储的明文程序输出到处理器内核110(步骤S212)。
当请求类型被识别为不是“处理器内核110取指令”时(步骤S202中的“否”),则加密解密单元134识别被请求的明文程序的受保护属性(步骤S204)。
当被请求的明文程序具有表示保护的受保护属性时(步骤S206中的“是”),则提供出错消息(步骤S210)。另一方面,当被请求的明文程序具有表示不保护的受保护属性时(步骤S206中的“否”),则提供该明文程序作为输出(步骤S212)。这样,完成了读取处理。
下面更具体地描述处理器内核110向内部存储器120发送读出请求作为指令取出的处理。内部存储器120中的指令存储器访问控制单元124在判断所述请求是处理器内核110的指令取出(“处理器内核110取指令”)时,按照参照图4描述的规则,将从指令存储器123读出的明文程序C(X到Y)发送到处理器内核110(步骤S202中的“是”,步骤S212)。然后,处理器内核110执行所获取的明文程序。
当请求类型不是“处理器内核110取指令”时(步骤S202中的“否”),并且其受保护属性为表示不保护的“0”时(步骤S206中的“否”),则将明文程序提供为输出(步骤S212)。
当请求类型不是“处理器内核110取指令”时(步骤S202中的“否”),并且其受保护属性为表示保护的“1”时(步骤S206中的“是”),则提供出错消息(步骤S210)。
这样,当请求的类型不是处理器内核110取指令时,内部存储器120的指令存储器访问控制单元124限制对明文程序的读出,从而可以防止第三方非法读出明文程序。
这里,以加密形式存储在外部存储器200中的程序更可能是高度机密的程序。因此,只对所存储的加密程序才添加表示保护的受保护属性,以限制对这种加密程序的访问。这样,只有预定的程序才会受到访问限制。
从上面可以看到,当从外部存储器读出多个程序时,可能在存储设备比如内部存储器120中同时存在应当受到访问限制的受保护程序以及不应当受到访问限制的不受保护的程序。但是,使用上述的访问控制方式,可以实现有效的访问控制,使得只有受保护的程序才受到访问限制。
当受保护的程序和不受保护的程序同时存在时,可能存在空间上的混合和时间上的混合。时间上的混合是指,受保护的程序在一个特定时间存储在内部存储器120中,不受保护的程序在另一个时间存储在内部存储器120中。
空间上的混合是指,受保护程序存储在指令存储器123的一个地址1000,同时不受保护的程序被存储在指令存储器123的另一个地址5000。
用户可以通过调试器接口140从调试器500发出读出存储在内部存储器120中的明文程序的请求,来使用调试器500分析程序。
但是,这样的话,请求类型就不是“处理器内核110取指令”。根据上面结合图6描述的读出处理,对于具有“保护”的受保护属性的明文程序,读出受到限制。这样,指令存储器访问控制单元124向调试器接口140提供出错消息。这样,就能防止通过调试器500读出明文程序。
另外,第三方可能试图通过DMA控制器130非法读出明文程序。例如,如果调试器500向DMA控制器130发出从内部存储器120向外部存储器200进行DMA转移的请求,指定密码ID“0”,就可以实现这样的非法读取。这里,DMA转移请求是请求将内部存储器120内的一个区域将内部存储器中存储的程序转移到外部存储器200中的合适区域。
然后,响应于来自调试器500的DMA转移请求,DMA控制器130将程序从内部存储器120转移。具体地,DMA控制器130从内部存储器120的指令存储器123读出程序,将其写入外部存储器200。
但是,在这里,由于请求类型不是“处理器内核110取指令”,根据上面结合图6描述的读出处理,对于具有“保护”的受保护属性的程序,读出受到限制。那么,输出出错消息。调试器500不仅能够通过调试器接口140,而且能够通过DMA控制器130或者BIU150进行访问。但是,在这种访问的情况,也禁止了第三方非法读出程序。
图7是在下述情况下的写入处理的流程图:明文程序已经被存储在指令存储器123中,并且向所存储的明文程序添加了“保护”的受保护属性,并且发出了进一步写明文程序,也就是改写的指令。
在收到写请求时(步骤S300),内部存储器120识别已经在指令存储器123中的明文程序的受保护属性(步骤S302)。如果明文程序具有表示保护的受保护属性“1”时(步骤S304中的“是”),则内部存储器120清除已经存储了程序的指令存储器123的所有内容(步骤S306),在受保护属性存储器中存储表示“不保护”的受保护属性。然后,内部存储器120将写请求所指定的程序写入指令存储器123中(步骤S308)。
另一方面,当所述明文程序具有表示不保护的受保护属性“0”时(步骤S304中的“否”),则处理过程前进到步骤S308。内部存储器不清除指令存储器123的内容,将新的明文程序写入指令存储器123(步骤S308),这样就完成写处理。步骤S308中的写处理类似于结合图5描述的写处理。
当允许对已经存储的程序的部分改写时,对已经存储了另一个程序的其它区域的访问也是可能的。因此,就有可能读出这样的程序。那么,第三方就可以利用这种情况非法地读出明文程序。
但是,如结合图7所描述的,当已经存储的程序具有表示保护的受保护属性时,在对指令存储器123的程序写入开始之前,内部存储器120清除已经在指令存储器123中的所有程序。只是在进行了清空操作之后,才开始新的明文程序的写入。这样,已经存在于指令存储器123中的程序就不可能被非法读出。
尽管上面结合实施例描述了本发明,但是对于该实施例还可以作出各种编号和改进。
第一个改进的例子是在指令存储器123中同时存储多个明文程序,并按程序执行访问限制。图8是根据该第一变型的受保护属性存储器122的数据结构的示意图。如图8所示,受保护属性存储器122与用来识别每一个明文程序的程序ID相关联地存储受保护属性。
根据该第一变型,基于受保护属性存储器122中所定义的关联,对存储明文程序的每一个区域,指令存储器访问控制单元124限制对指令存储器123的访问。
例如,假定对对应于程序ID“0001”的区域有一个读请求。如图8所示,程序ID“0001”所标识的明文程序具有“保护”的受保护属性。因此,指令存储器123限制对程序ID“0001”所标识的明文程序的访问。指令存储器123不限制对程序ID“0002”标识的受保护程序的访问。
具体地,当收到对程序ID“0001”的读请求时,由于程序ID“0001”标识的明文程序具有“保护”的受保护属性,根据图6所示的读出处理确定响应,也就是,确定是输出明文程序还是输出出错消息。
另一方面,当收到对程序ID“0002”的读请求时,由于程序ID“0002”标识的明文程序具有“不保护”的受保护属性,根据图6所示的读出处理输出明文程序。
当收到对程序ID“0001”的写请求时,由于程序ID“0001”标识的明文程序具有表示保护的受保护属性,根据图7所示的写入处理,在对已经存储了明文程序的区域写入新的程序之前,清除已经存储在存储器中的明文程序。
另一方面,当收到对程序ID“0002”的写请求时,由于程序ID“0002”标识的明文程序具有表示不保护的受保护属性,根据图7所示的写入处理,对已经存储了明文程序的区域写入新的程序,不清除已经存储在其中的明文程序。
这样,即使同时存储有受保护属性表示保护的明文程序和受保护属性表示不保护的明文程序,也能只针对具有表示保护的受保护属性的明文程序执行访问限制。这样,禁止第三方非法读出特定的明文程序。
在该第一变型中,受保护属性存储器122相关联地存储程序ID和受保护属性。但是,在第二变型中,受保护属性存储器122可以相关联地存储在指令存储器123中的存储区位置和受保护属性。
图9是根据该第二变型的受保护属性存储器122的数据结构的示意图。如图9所示,受保护属性存储器122相关联地存储指令存储器123中的存储区位置以及存储在各存储区位置的明文程序被添加的受保护属性。在该第二变型中,基于存储区位置和受保护属性之间的关联,指令存储器访问控制单元124针对存储程序的每一个区控制对指令存储器123的访问。
例如,假设表示保护的受保护属性与存储区1(其中存储了程序ID“0001”标识的明文程序)相关,则限制对由程序ID“0001”标识的明文程序的访问。另外,如果表示不保护的受保护属性与存储区2(其中存储了程序ID“0002”标识的明文程序)相关联,则允许对由程序ID“0002”标识的明文程序的访问。
这样,根据该第二变型,即使指令存储器123同时存储多个程序,也能按存储区禁止第三方非法读出明文程序。
在上述第一变型中,控制对程序的访问。在第三变型中,则控制对数据的访问。图10是根据第三变型的系统10的总体结构的示意图。类似于指令存储单元121,数据存储单元125包括受保护属性存储器126、数据存储器127以及数据存储器访问控制单元128。
这里,受保护属性存储器126的结构和处理过程与受保护属性存储器122是相同的。另外,数据存储器127的结构和处理过程与指令存储器123是相同的。再者,数据存储器访问控制单元128的结构与处理过程与指令存储器访问控制单元124是的。
或者,可以对程序和数据均执行访问控制。因此,访问控制的对象不受本实施例的限制。
在控制对数据的访问的该第三变型中,在写处理中,如图7所示,基于数据的受保护属性,判断在进行数据写入之前是否清除已经存储的数据。在第四变型中,除了受保护属性外,还击于请求发送方的身份进行所述判断。
图11是根据第四变型的写入处理的流程图。如图11所示,在根据第四变型的写入处理中,当接收到的写请求的类型是来自处理器内核的写请求时(步骤S320的“是”),则处理过程前进到步骤S308。换句话说,当请求类型是来自处理器内核110的写请求时,不进行清除处理而写入新的明文程序。
当根据请求类型控制访问时,能够对预定的请求类型执行有效的访问控制,而不用限制其它类型的请求的访问。
在上述第一实施例中,当对于具有“保护”的受保护属性的明文程序接收到读请求时,执行访问控制以禁止读。在第五变型中,可以以加密形式向请求发送方提供程序。当以这种方式执行访问控制时,不以明文形式读出程序,因此禁止了第三方非法读出明文程序。
在该第一实施例中,当在已经存储了明文程序的区域中重写程序时,根据程序的受保护属性,在重写之前判断是否清除已经存储的程序。在第六变型中,根据来自用户的指令进行判断。
具体地,在对已经存储的明文程序的访问控制中,在存储了受保护属性为“保护”的程序的区域中禁止重写,仅当用户通过用户接口300给出清除已存储的明文程序的指令时,才清除所述明文程序。否则可以输出出错消息。这样,除非由用户清除程序,否则不允许写入,从而可以保护明文程序。
下面描述第二实施例的系统10。第二实施例的系统10不同于第一实施例的系统10的地方在于,第二实施例的系统10控制对处理器内核110中的寄存器之类的部分的访问。
图12是第二实施例的系统10的总体结构的示意图。第二实施例的系统10的处理器内核110包括执行单元112、当前受保护属性寄存器114以及内核访问控制单元116。
执行单元112执行程序。当前受保护属性寄存器114存储正由执行单元112执行的程序的受保护属性。内核访问控制单元116控制对正由处理器内核110执行的程序的访问。
图13是第二实施例的系统10中的处理器内核110执行程序的处理的流程图。下面结合图13描述用户执行程序的处理。这里,直到将外部存储器200中存储的程序存储到内部存储器120的指令存储器123中的处理都是与前面结合第一实施例的图5描述的处理相同的(步骤S100到S124)。
当执行单元112执行存储在指令存储器123中的程序时,处理器内核110首先发出通过指令取出(取指令)从内部存储器120中读出程序的请求(步骤S400)。
内部存储器120的指令存储器访问控制单元124识别读取请求的类型。如果请求的类型是“处理器内核110取指令”(步骤S402中的“是”),则指令存储器访问控制单元124读出程序(步骤S404)。另外,指令存储器访问控制单元124从受保护属性存储器122读出被添加到所述程序的受保护属性(步骤S406)。
然后,指令存储器访问控制单元124将所述程序和所述受保护属性发送到所述处理器内核110(步骤S408)。随后,处理器内核110将从内部存储器120获取的程序送往执行单元112(步骤S410)。另外,从内部存储器120获取的受保护属性被存储到当前受保护属性寄存器114中(步骤S412)。这里,当在步骤S402中请求类型不是“处理器内核110取指令”时(步骤S402中的“否”),指令存储器123输出出错消息(步骤S414)。
这样,执行单元112准备好执行程序,执行单元112开始执行程序。
对于正由执行单元112执行的程序,根据存储在当前受保护属性寄存器114中的受保护属性,内核访问控制单元116控制通过调试器接口140对寄存器中设置的值的访问。
下面结合图4,具体描述对软件运行分析处理的访问控制。内核访问控制单元116从系统外部接收对正由执行单元112执行的程序被设置在寄存器中的值的读请求(步骤S420)。然后,内核访问控制单元116识别存储在当前受保护属性寄存器114中的受保护属性(步骤S422)。
当当前受保护属性寄存器114存储了表示保护的受保护属性时(步骤S424中的“是”),则内核访问控制单元116向调试器输出出错消息(步骤S432)。另一方面,如果当前受保护属性寄存器114存储了表示不保护的受保护属性(步骤S424中的“否”),则内核访问控制单元116输出涉及正由执行单元112执行的程序的寄存器中设置的值(步骤S430)。这样就完成了访问控制处理。
当如上所述调试器接口140向当前受保护属性寄存器114发出读请求时,内核访问控制单元116根据访问控制的处理向调试器接口140输出出错消息。这样,就保护了程序不会通过调试器接口140被非法读取。
应当注意,第二实施例的系统10的没有在上面特别提到的结构和处理与第一实施例的系统10是相同的。
图15是第二实施例的一个变型的读取处理的流程图。如图15所示,在根据该变型的读取处理中,当所接收到的读请求的类型不是经由调试器接口140的访问时(步骤S440中的“否”),则处理过程前进到步骤S430。换句话说,当请求类型不是经由调试器接口140的访问时,与执行中的程序有关的寄存器的值被输出。通过上述基于请求类型的访问控制,能够对特定请求类型进行有效的控制,而不限制其它类型的请求的访问。
图16是第三实施例的系统10的总体结构的示意图。第三实施例的系统10的处理器内核110包括流水线(流水线单元)600、“或”(OR)电路620和内核访问控制单元116。
第三实施例的处理器内核110对流水线的每一个站有一个执行单元和一个当前受保护属性寄存器。当前受保护属性寄存器611-614分别存储正由对应的执行单元601-604执行的程序的受保护属性。OR电路620对每一个当前受保护属性寄存器611-614存储的多个受保护属性执行“或”操作。
内核访问控制单元116基于每一个当前受保护属性寄存器611-614中存储的受保护属性控制外部访问。具体地,当存储在每一个当前受保护属性寄存器611-614中的多个受保护属性中的至少一个指示“保护”时,所述内核访问控制单元116限制外部访问。
这样,当在流水线中同时执行多个程序,并且至少一个执行中的程序的受保护属性表示“保护”时,内核访问控制单元116限制外部访问,从而禁止第三方非法读出也在流水线处理中的明文程序。
第三实施例的系统10的除了上面具体描述之外的结构和处理与第一实施例的系统10的结构和处理相同。
作为第三实施例的系统10的第一变型,可以按站控制访问。按站的访问控制的执行可以类似于第一实施例的第一或者第二变型。根据这样的访问控制,只可以限制对所存储的程序的受保护属性表示“保护”的站的访问,而不对执行受保护属性表示“不访问”的程序的站进行访问限制。
在第三实施例中,流水线有四个站。但是,站数不限于上面所描述的实施例,在第三实施例的第二变型中,站数可以多于或者少于四个。
下面描述第四实施例的系统10。在第四实施例的系统10中,基于密码ID控制对指令存储器123的访问。在这方面,第四实施例的系统10不同于其它实施例中的系统。
图17是第四实施例的系统10的总体结构的示意图。第四实施例的系统10的DMA控制器130包括密码ID添加单元139,而不是受保护属性添加单元135和受保护属性确定表136。
密码ID添加单元139将密码ID寄存器132中设置的密码ID添加到从外部存储器200获取的程序上。密码ID添加单元139在内部存储器120中与程序相关联地存储所添加的密码ID。这里,密码ID也是指示受保护属性,也就是“保护”还是“不保护”的信息。具体地,密码ID“0”对应于表示不保护的受保护属性。不是“0”的密码ID对应于表示保护的受保护属性。这样,根据密码ID,可以识别受保护属性。
指令存储单元121包括指令存储器123、指令存储器访问控制单元124、指令密码ID存储器160、状态存储器162和指令存储器初始化单元164。
指令密码ID存储器160存储被添加到在指令存储器123中存储的明文程序的密码ID。
状态存储器162存储在指令存储器123中存储的明文程序的状态。图18是明文程序的状态转换示意图。如图18所示,在处理器100启动时,也就是在重置时,程序被置于受保护状态。当有特殊指令给出初始化指令时,程序转换到被初始化的状态。如果对具有密码ID“0”(也就是表示不保护的受保护属性)的程序执行了某些处理而程序处于被初始化的状态,则程序转换到不受保护状态。另一方面,如果对具有非0密码ID(也就是表示保护的受保护属性)的程序执行了处理而程序处于被初始化的状态,则程序转换到受保护状态。
当处理器100被重置而在内部存储器120中存储了受保护程序时,内部存储器120的状态存储器162存储受保护状态。一旦存储了该状态,则不能对具有表示保护的受保护属性的程序进行读写,除非所存储的状态被初始化。这样,就能禁止恶意的第三方非法访问。
不允许从受保护状态直接转换为不受保护状态。因此,也能禁止恶意第三方部分改写受保护程序从而非法执行写入。另外,也不允许从不受保护状态直接转换到受保护状态。这样,也禁止了恶意第三方将受保护程序盖写到一部分不受保护的程序上,从而非法执行该程序。
回到图17,指令存储器初始化单元164响应于来自外部的特殊指令对指令存储器123初始化。另外,指令存储器初始化单元164将指令密码ID存储器160中存储的密码ID设置为“0”。另外,指令存储器初始化单元164将状态存储器162存储的受保护状态改变为被初始化状态。
图19是指令存储器访问控制单元124对数据读取的访问控制规则的示意图。如图19所示,当给定“处理器内核110取指令”并且非0密码ID被添加到被请求的程序时,允许读。这里,程序处于受保护状态。
另一方面,当读访问请求不是“处理器内核110取指令”,并且非零密码ID被添加到被请求的程序时,限制读取,并提供出错消息。这里,程序处于受保护状态。
当密码ID “0”被添加到被请求的程序时,允许读,而不管请求的类型如何。这里,程序的状态是“被初始化状态”和“不受保护状态”之一。否则提供出错消息。
这样,在第四实施例的系统10中,可以基于密码ID控制从指令存储器123读数据。另外,由于可以由密码ID标识受保护属性,类似于第一实施例的系统10,可以限制对具有表示保护的受保护属性的程序的访问。换句话说,可以禁止对特定明文程序的非法读取。
另外,使用对特定类型之外的其它类型的请求的访问限制,可以禁止第三方非法读取明文程序。
图20是指令存储器访问控制单元124中用于数据写入的访问控制规则的示意图。如图20所示,当程序处于“被初始化状态”并且密码ID为“0”时,允许写而不管从访问请求发送方获取的密码ID的值为何。当被请求的程序的密码ID为“0”,并且程序处于不受保护状态时,如果从访问请求发送方获取的密码ID为“0”,则允许写。当被请求的程序的密码ID为“0”,并且程序处于不受保护状态时,如果从访问请求发送方获取的密码ID不为“0”,则限制写,也就是给出出错消息。
当被请求的程序的密码ID不为“0”,并且从访问请求发送方获取的密码ID为“0”时,提供出错消息。当被请求的程序的密码ID不为“0”,并且从访问请求发送方获取的密码ID与程序的密码ID的值相同时,则允许写。当被请求的程序的密码ID不为“0”,并且从访问请求发送方获取的密码ID与程序的密码ID的值不同时,则给出出错消息。在其它情况下,给出出错消息。
这样,当访问请求的目标程序的密码ID和从访问请求发送方获取的密码ID不匹配时,可以限制访问,从而禁止第三方部分地非法改写或者改变明文程序。另外,可以部分转移程序。另外,利用对受保护属性表示保护的程序的访问限制,可以防止对特定明文程序的非法改写和改变。
另外,由于仅当从访问请求发送方获取的密码ID和指令密码存储器160中存储的密码ID相互匹配并且所添加的密码ID不为“0”时才允许写,禁止了第三方非法改写和改变明文程序。
图21是通过特殊指令进行的初始化处理的流程图。当用户发送指令以进行初始化时,处理器内核110向内部存储器120发送初始化指令存储器的请求(步骤S500)。内部存储器120在接收到指令存储器初始化请求时,初始化内部存储器120。具体地,内部存储器120初始化指令存储器123(步骤S502)。另外,内部存储器120将指令密码ID存储器160中存储的密码ID的值改变为“0”(步骤S504)。另外,内部存储器120将状态存储器162中存储的状态改变为“被初始化状态”(步骤S506)。当完成直到步骤S50的处理时,内部存储器120向处理器内核110发送一个完成通知(步骤S508)。这样,就完成了初始化处理。
使用该初始化处理,在受保护状态和不受保护状态之一的内部存储器120可以被转为被初始化状态。在被初始化状态,存储在指令密码ID存储器160中的密码ID的值是“0”。换句话说,在被初始化状态,受保护属性表示“保护”。
图22是将外部存储器200中存储的程序通过DMA控制器130写入内部存储器120中的写入处理的流程图。这里,假设程序存储在外部存储器200中的地址X到Y。图22中从步骤S100到步骤S110的处理与第一实施例的系统10中从步骤S100到S110的处理是相同的。
在第四实施例的系统10中,在解密处理(步骤S110)后,提供程序和密码ID作为输出(步骤S114和步骤S140),后面是存储程序的处理(步骤S150)。在其它方面,图22的写入处理与第一实施例的写入处理相同。
图23是在程序存储处理(步骤S150)中,在内部存储器120中的详细处理的流程图。在步骤S114和S140中获取明文程序和密码ID滞后,指令存储器访问控制单元124识别存储在指令密码ID存储器160中的密码ID(步骤S1502)。另外,指令存储器访问控制单元124识别在状态存储器162中存储的状态(步骤S1504)以及从访问请求发送方获取的密码ID(步骤S1506)。
然后,仅当根据图20的规则允许写时,指令存储器访问控制单元124在指令存储器123中存储程序(步骤S1512)。另外,密码ID被存储在指令密码ID存储器160中(步骤S1514)。
具体地,在以下情况下存储所述程序:当指令密码ID存储器160中的密码ID为“0”且状态为被初始化状态时(步骤S1508中的“是”和步骤S1510中的“是”);当指令密码ID存储器160中的密码ID为“0”且状态为不受保护状态,且从访问请求发送方获取的密码ID为“0”时(步骤S1508中的“是”,步骤S1510中的“否”,步骤S1516中的“是”);或者当指令密码ID存储器160中的密码ID不为“0”,从访问请求发送方获取的密码ID为“0”且所获取的密码ID为与存储在指令密码ID存储器160中的密码ID为相同值时(步骤S1508中的“否”,步骤S1520中的“否”,步骤S1522中的“是”)。
否则,也就是在下述情况下,提供出错消息作为输出:当指令密码ID存储器160中的密码ID为“0”,状态为不受保护状态,且从访问请求发送方获取的密码ID不为“0”时(步骤S1508中的“是”,步骤S1510中的“否”,以及步骤S1516中的“否”);当指令密码ID存储器160中的密码ID不为“0”,且从访问请求发送方获取的密码ID不为“0”时(步骤S1508中的“否”,步骤S1520中的“是);或者当指令密码ID存储器160中的密码ID不为“0”,从访问请求发送方获取的密码ID不为“0”,且所获取的密码ID为与存储在指令密码ID存储器160中的密码ID为不同值时(步骤S1508中的“否”,步骤S1520中的“否”,步骤S1522中的“否”)。
图24是读出存储在内部存储器120中的程序的读出处理的流程图。当接收到对明文程序的读请求时(步骤S200),识别指令密码ID存储器160中的密码ID和程序的状态(步骤S220)。然后,仅当根据参照图19描述的规则允许读时,才读出程序(步骤S226)。进一步,读出密码ID和状态(步骤S228)。
具体地,当被识别的ID也就是指令密码ID存储器160中的密码ID为“0”,且状态为被初始化状态或者不受保护状态时(步骤S222的“是”,步骤S224的“是”),指令存储器访问控制单元124输出指令存储器123中存储的明文程序(步骤S226)。进一步,指令存储器访问控制单元124输出密码ID(步骤S228)。
另外,当指令密码ID存储器160中的密码ID不为“0”,状态为受保护状态,请求类型是“处理器内核110取指令”时(步骤S222的“否”,步骤S240的“是”,步骤S242的“是”),指令存储器访问控制单元124输出明文程序和密码ID。
对于与上面不同的组合,提供出错消息作为输出。例如,在下述情况下提供出错消息作为输出(步骤S230,步骤S244):当指令密码ID存储器160中的密码ID为“0”,且状态为受保护状态时(步骤S222的“是”,步骤S224的“否”);当指令密码ID存储器160中的密码ID不为“0”,状态为不是受保护状态时(步骤S222的“否”,步骤S240的“否”);当指令密码ID存储器160中的密码ID不为“0”,状态不是受保护状态,请求类型不是“处理器内核110取指令”时(步骤S222的“否”,步骤S240的“是”,步骤S242的“否”)。
在第四实施例的系统10中,由于可以基于密码ID识别受保护属性,类似于其它实施例的系统10,可以基于受保护属性和请求类型来限制程序读取。这样,就禁止了第三方进行非法访问。
第四实施例的系统10的没有在上面具体描述的结构和处理与其它实施例的系统10的结构和处理相同。
另外,尽管在第四实施例的系统10中将密码ID作为标识受保护属性的信息,但是对于该目的可以使用任何其它信息,只要该信息能够识别受保护属性和程序。例如,可以使用密码的值。
下面描述第五实施例的系统10。第五实施例的系统10限制对处理器内核110的调试中断,以及从处理器内核110的跟踪信息输出。在这方面,第五实施例的系统不同于其它实施例的系统。
图25是第五实施例的系统10的总体结构的示意图。第五实施例的系统10包括流水线600、调试中断控制单元662以及跟踪信息输出控制单元664。
处理器(CPU)内核110包括分别用于流水线的各站641-645的密码ID寄存器651-655。每一个密码ID寄存器651-655存储在各站651-655中的相对应的站执行的指令使用的密码ID。
调试中断控制单元662基于每一个密码ID寄存器651-655存储的密码ID限制来自外部的调试中断。第五实施例的调试中断控制单元662对应于权利要求中所记载的调试请求获取单元和调制中断控制单元。跟踪信息输出控制单元664基于执行单元643的密码ID寄存器653中存储的密码ID,限制向调试器接口140的跟踪信息输出。第五实施例的执行单元对应于权利要求中记载的执行单元。
调试器接口140连接到系统10外部的调试器500,并对调试器500对处理器内核110、内部存储器120和DMA控制器130等的请求分类。另外,调试器接口140在从各单元收到执行结果以及响应于请求从各单元收到跟踪信息等时,将执行结果发回调试器500。
图26是第五实施例的系统10的处理器内核110执行程序的处理的流程图。下面结合图26描述用户执行程序的处理。当要执行存储在指令存储器123中的程序时,流水线600中的取指令单元641发出对内部存储器120中的程序的读请求,作为指令取出(步骤S600)。
内部存储器120中的指令存储器访问控制单元124在接收到对程序的读请求时,识别读请求的类型。当读请求是“处理器内核110取指令”时(步骤S602中的“是”),指令存储器访问控制单元124读出程序(步骤S604)。进一步,指令存储器访问控制单元124从指令密码ID存储器160读出被添加到所述程序的密码ID(步骤S606)。
随后,指令存储器访问控制单元124将所述程序和密码ID发给流水线600中的取指令单元641(步骤S608)。当请求类型不是“处理器内核110取指令”时(步骤S602中的“否”),提供出错消息作为输出(步骤S610)。
取指令单元641在从内部存储器120收到所述程序和密码ID时,将所获取的密码ID存储到密码ID寄存器651中(步骤S612)。取指令单元641将所获取的程序和密码ID寄存器651中的值发给解码单元642(步骤S614)。
解码单元642在密码ID寄存器652中存储从取指令单元641获取的密码ID(步骤S616)。另外,在解码(步骤S618)之后,解码单元642将解码结果和密码ID寄存器652中的值发给执行单元643(步骤S620)。
执行单元643在密码ID寄存器653中存储从解码单元642获取的密码ID(步骤S622)。执行单元643基于解码结果执行指令(步骤S624),之后将执行结果和密码ID寄存器653中的值发给存储器访问单元644(步骤S626)。
存储器访问单元644在密码ID寄存器654中存储从执行单元643获取的密码ID(步骤S628)。根据该结果,存储器访问单元644访问内部存储器120(步骤S630),之后将结果和存储器访问单元644中的值发给回写单元645(步骤S632)。
回写单元645在密码ID寄存器655中存储从存储器访问单元644获取的密码ID(步骤S634)。回写单元645根据存储器访问的结果执行对寄存器的写操作(步骤S636)。这样就完成了程序的执行。
图27是对处理器内核110进行调试中断的调试器中断处理的流程图。调试中断控制单元662在接收到调试器中断请求(来自调试器500的中断请求)(步骤S700)后,识别流水线600中各站的密码ID寄存器651-655中存储的密码ID(步骤S702)。当各站中的所有密码ID都是“0”时,换句话说,当所有的站都具有不保护的受保护属性时(步骤S704中的“是”),该调试中断请求被接受,系统切换到调试模式(步骤S706)。这样,处理器内核110准备好在调试模式下工作,从而可以用设置的断点按步执行和调试。
另一方面,当在步骤S702识别的各站的密码ID中的至少一个不是“0”时,换句话说,当至少一个站具有“保护”的受保护属性时(步骤S704中的“否”),调试器中断请求被忽略,提供出错消息作为输出(步骤S708)。这样就完成了调试器中断处理。
这样,仅当所有的站都具有不保护的受保护属性时,才允许调试器中断,从而禁止了第三方进行非法访问。
图28是处理器内核110输出跟踪信息的跟踪信息输出处理的流程图。跟踪信息输出控制单元664在从执行单元643获取了跟踪信息(步骤S720)之后,识别密码ID寄存器653中存储的密码ID(步骤S722)。当识别的密码ID为“0”,也就是当识别的密码ID具有“不保护”的受保护属性时(步骤S724中的“是”),则跟踪信息输出控制单元664输出跟踪信息(步骤S726)。
另一方面,当识别的密码ID不为“0”,也就是当识别的密码ID具有“保护”的受保护属性时(步骤S724中的“否”),则跟踪信息的输出被中止,代之以输出假信息(步骤S728)。这样就完成了跟踪信息输出处理。这样,就能够控制跟踪信息的输出。或者,可以提供出错消息作为输出。
这样,当执行单元643的密码ID寄存器中存储的密码ID标识的受保护属性表示“保护”时,可以限制跟踪信息的输出,从而禁止第三方非法访问。
第五实施例的系统10的在上面没有具体描述的结构和处理与其它实施例的系统10的结构和处理相同。
下面描述第六实施例的系统10。第六实施例的系统10限制对数据存储器的访问。在这方面,第六实施例的系统10不同于第四实施例的系统10。
图29是第六实施例的系统10的总体结构的示意图。第六实施例的系统10的数据存储单元125包括数据存储器127、数据密码ID存储器172、状态存储器174、数据存储器访问控制单元128以及对应于数据存储器127的数据存储器初始化单元176。
数据存储器127存储从加密解密单元134获取的明文数据或者例如从处理器内核110或者调试器500发送来的明文数据。数据密码ID存储器172存储被添加到在数据存储器127中存储的明文数据的密码ID。数据存储器访问控制单元128控制对数据存储器127的外部访问。类似于第四实施例的状态存储器162,状态存储器174存储数据的状态。
数据存储器初始化单元176响应于来自外部的特殊指令初始化数据存储器127,并对数据密码ID存储器172中存储的密码ID置0。数据存储器初始化单元176还将状态存储器174存储的受保护状态改变为被初始化状态。
图30是用于在数据存储器访问控制单元128中读数据的访问控制规则的示意图。如图30所示,当被请求的程序的状态为被初始化状态或者不受保护状态,密码ID的值为“0”时,允许读取,而不管添加的密码ID的值。
当被请求的程序的密码ID不是“0”,且该程序的状态为受保护状态,且所添加的密码ID和从访问请求发送方获取的密码ID的值相同时,允许读取。
当被请求的程序的密码ID不是“0”,且所添加的密码ID和从访问请求发送方获取的密码ID的值不同时,输出出错消息。对于除上述以外的其它组合,提供出错消息作为输出。
这样,由于限制了对被添加了表示保护的密码ID的数据的访问,禁止了从特定明文数据进行非法读出。另外,由于限制了对密码ID不匹配的数据的访问,禁止了第三方非法读出明文数据。
图31是数据存储器访问控制单元128中用于数据写入的访问控制规则的示意图。如图31所示,当数据处于被初始化状态且密码ID为“0”时,允许写入而不管所添加的密码ID的值。当被请求的数据的密码ID为“0”且被请求的数据处于不受保护状态时,且从访问请求发送方获取的密码ID为“0”时,允许写入。
当被请求的数据的密码ID不是“0”且被请求的数据在受保护状态时,且所添加的密码ID和从访问请求发送方获取的密码ID的值相同时,允许写入。当被请求的数据的密码ID不是“0”且所添加的密码ID和从访问请求发送方获取的密码ID的值不同时,提供出错消息作为输出。对于与上述不同的其它组合,提供出错消息作为输出。
由于在被添加到被请求的数据的密码ID不与所发送的密码ID匹配时限制访问,禁止了第三方部分改写或者改变明文数据。另外,数据可能被部分转移。另外,由于限制了对密码ID表示保护的数据的访问,可以防止对特定明文数据的非法改写或者改变。
图32是将外部存储器200中存储的数据通过DMA控制器130写入内部存储器120中的写入处理的流程图。这里,数据被存储在外部存储器200中的地址P到Q。
在向DMA控制器130发送了设置密码ID的请求之后,处理器内核110向DMA控制器130发送DMA转移请求(步骤S160)。这里,DMA转移请求是请求将外部存储器200上地址P到Q的数据转移到内部存储器120的信息。
DMA控制器130从外部存储器200读出对应于地址P到Q的数据E3[C(P到Q)](步骤S162)。这里,当在密码ID寄存器132中设置的值不是“0”时(步骤S108中的“否”),加密解密单元134使用从密码表133获取的密码对加密数据E3[C(P到Q)]解密,以获取明文数据C(P到Q)(步骤S110)。
然后,提供所述数据和密码ID作为输出(步骤S164,步骤S166),接下来是数据存储处理(步骤S170)。当处理器内核110通过取指令请求读出明文数据时(步骤S126),内部存储器120将被请求的明文数据输出到处理器内核110(步骤S172)。写入处理的没有在上面具体描述的处理与第一实施例的写入处理相同。
图33是在数据存储处理(步骤S170)中由内部存储器120进行的详细处理的流程图。在步骤S164和步骤S166中获取明文数据和密码ID之后,数据存储器访问控制单元128识别存储在数据密码ID存储器172中的密码ID(步骤S1702)、存储在状态存储器162中的状态(步骤S1704)以及从访问请求发送方获取的密码ID(步骤S1706)。
然后,仅当根据图31的规则允许写入时,才将数据存储到数据存储器128中(步骤S1712)。进一步,将密码ID存储到密码ID存储器172中(步骤S1714)。
具体地,在下述情况下存储数据:当数据密码ID存储器172的密码ID为“0”,且数据处于被初始化状态时(步骤S1708中的“是”,步骤S1710中的“是”);当数据密码ID存储器172的密码ID为“0”,数据处于不受保护状态,且从访问请求发送方获取的密码ID是“0”时(步骤S1708中的“是”,步骤S1710中的“否”,步骤S1716中的是);或者当数据密码ID存储器172的密码ID不为“0”,且从访问请求发送方获取的密码ID与数据密码ID存储器172的密码ID是相同值时(步骤S1708中的“否”,步骤S1720中“是”)。
否则,也就是在下述情况下,提供出错消息作为输出:当数据密码ID存储器172的密码ID为“0”,数据处于不受保护状态,且从访问请求发送方获取的密码ID不是“0”时(步骤S1708中的“是”,步骤S1710中的“否”,步骤S1716中的“否”);或者当数据密码ID存储器172的密码ID不为“0”,且所获取的密码ID与数据密码ID存储器172中的密码ID是不同值时(步骤S1708中的“否”,步骤S1720中“否”)。
这里,可以通过处理器内核110对软件中使用的数据提出改写请求。为此目的,流水线的存储器访问单元向内部存储器120发送对明文数据的写请求。存储器访问单元也发送在密码ID寄存器中存储的密码ID。
在第六实施例的系统10中,可以基于从存储器访问单元获取的密码ID和数据密码ID存储器172的密码ID的值,控制数据访问。换句话说,与具有相同的值的密码ID相关联的程序可以作为数据被存储在数据存储器178中。另一方面,限制与不同值的密码ID相关联的程序的访问。换句话说,当用户试图在数据存储器127中存储具有不同密码ID的程序时,返回出错消息。
这样,可以禁止试图使用存储指令等访问数据存储器的第三方的非法数据写入。
另外,可以从调试器500通过调试器接口140对存储在内部存储器120中的明文数据提出写请求,以此执行对软件的改变。
但是,在这种情况下,存储在数据密码ID存储器172中的密码ID不是表示不保护的“0”,不与从调试器500发来的密码ID匹配。因此,根据所述数据存储处理,也就是结合图33描述的数据写入处理,限制了对受保护属性表示保护的数据存储器127的写入。这样,数据存储器访问控制单元128能够防止通过调试器接口140对明文数据的改写。
再者,第三方可能通过DMA控制器130非法写入明文数据。例如,调试器500可以通过指定密码ID“0”向DMA控制器130发出从外部存储器200到内部存储器120的DMA转移请求。这样的DMA转移请求是请求将存储在外部存储器200中适当区域中的数据转移到内部存储器120中的某个区域。
这里,DMA控制器130响应于来自调试器500的DMA转移请求将数据转移到内部存储器120中。具体地,DMA控制器130从外部存储器200读出数据,将其写入内部存储器120中的数据存储器127。
但是,在这种情况下,存储在数据密码ID存储器172中的密码ID不是表示“不保护”的“0”,不与从DMA控制器130通过调试器500发出的密码ID“0”匹配。因此,根据结合图33描述的写入处理,限制了对密码ID表示保护的数据的改写。
这样,调试器500不仅能够通过调试器接口而且能够通过DMA控制器130或者BIU150进行访问。在这些情况下,一样,也可以禁止第三方的非法改写。
图34是读出存储在内部存储器120中的数据的读出处理的流程图。内部存储器120的数据存储器访问控制单元128在获取用于读出数据存储器中存储的数据的读请求时(步骤S250),识别数据密码ID存储器172中存储的作为对应于被请求的密码ID的密码ID,并识别状态存储器174中存储的作为对应状态的状态(步骤S252)。
当所识别的ID,也就是数据密码ID存储器172中的密码ID是“0”,并且所述状态是被初始化状态或者不受保护状态时(步骤S254的“是”,步骤S256的“是”),则数据存储器访问控制单元128输出所述密码ID和存储在数据存储器127中的明文数据(步骤S258,步骤S260)。
当数据密码ID存储器172中的密码ID不是“0”,所述状态是受保护状态,且数据密码ID存储器172的密码ID与从访问请求发送方获取的密码ID匹配时(步骤S254的“否”,步骤S270的“是”,步骤S272的“是”),则数据存储器访问控制单元128输出所述明文数据和存储在所述数据存储器127中的密码ID(步骤S258,步骤S260)。
对于不同于上面所述的组合,提供出错消息作为输出。例如,在下述情况下提供出错消息作为输出(步骤S262,步骤S274):当指令密码ID存储器160中的密码ID是“0”,并且所述状态是受保护状态时(步骤S254的“是”,步骤S256的“否”);当指令密码ID存储器160中的密码ID不是“0”,并且所述状态不是受保护状态时(步骤S254的“否”,步骤S270的“否”);当指令密码ID存储器160中的密码ID不是“0”,并且所述状态不是受保护状态,并且所述请求不是“处理器内核110取指令”时(步骤S254的“否”,步骤S270的“是”,步骤S272中的“否”)时。
在第六实施例的系统10中,可以根据密码ID识别受保护属性。这样,类似于其它实施例的系统10,可以基于受保护属性和请求类型限制数据读取,从而可以防止第三方的非法访问。
第六实施例的系统10的未在上面具体描述的结构和处理与第四实施例的系统10的结构和处理相同。
本领域的普通技术人员容易发现本发明的其它优点和进一步的改进。因此,本发明的保护范围应当较宽而不限于这里所图示和描述的具体细节和代表性实施例。因此,在所附权利要求及其等效方案所限定的一般发明构思的实质范围内,可以作出各种修改。
Claims (39)
1.一种微处理器,包括:
从外部获取要由处理器内核使用的信息的信息获取单元;
当所获取的信息为加密信息时,对获取的信息解密以获取明文信息的解密单元;
将通过解密获取的明文信息存储起来的明文信息存储单元;
根据是否执行了解密,对所述明文信息添加表示保护或者不保护的受保护属性的受保护属性添加单元;
获取对所述明文信息的访问请求的访问请求获取单元;
识别所述访问请求的请求类型的请求类型识别单元;以及
根据所述请求类型和所述受保护属性控制对所述明文信息的访问的访问控制单元。
2.如权利要求1所述的微处理器,其中:
所述受保护属性添加单元向通过解密获取的明文信息添加表示保护的受保护属性;并且,
所述访问控制单元限制对被添加了表示保护的受保护属性的明文信息的访问。
3.如权利要求1所述的微处理器,其中:
当所述信息是未被加密的明文信息时,所述明文信息存储单元存储该明文信息;
所述受保护属性添加单元向所述未被加密的明文信息添加表示不保护的受保护属性;并且,
所述访问控制单元允许对被添加了表示不保护的受保护属性的明文信息的访问。
4.如权利要求1所述的微处理器,其中:
当所述请求类型不同于已登记的请求类型时,所述访问控制单元限制对所述明文信息的访问。
5.如权利要求1所述的微处理器,其中:
当所述请求类型是已登记的请求类型时,所述访问控制单元允许对所述明文信息的访问。
6.如权利要求5所述的微处理器,其中:
当所述请求类型不同于已登记的请求类型时,并且当所述明文信息被添加了表示保护的受保护属性时,所述访问控制单元限制对所述明文信息的访问。
7.如权利要求1所述的微处理器,其中:
所述访问控制单元根据所述请求类型和受保护属性禁止对所述明文信息的访问。
8.如权利要求1所述的微处理器,其中:
所述访问控制单元根据所述请求类型和受保护属性判断是输出所述明文信息还是输出通过对所述明文信息进行加密而产生的加密信息。
9.如权利要求1所述的微处理器,其中:
所述访问控制单元根据所述请求类型和受保护属性限制对所述明文信息的改写。
10.如权利要求9所述的微处理器,还包括:
获取改写指令的改写指令获取单元,所述改写指令指示是否允许对明文信息进行改写,其中:
所述访问控制单元在接收到指示允许改写的改写指令后允许对所述明文信息的改写。
11.如权利要求1所述的微处理器,其中:
根据所述请求类型和受保护属性,在改写所述明文信息之前,所述访问控制单元判断是否删除已经存储在所述明文信息存储单元中的明文信息。
12.如权利要求1所述的微处理器,还包括:
存储用于进行解密的多个密码的密码存储单元;以及
相互关联地存储所述密码的标识信息和所述受保护属性的受保护属性表,其中:
所述受保护属性添加单元添加所述受保护属性表中与所述密码相关的受保护属性,作为所述明文信息的受保护属性。
13.如权利要求12所述的微处理器,还包括:
从用户接受对要用于解密的密码的指定的密码指定单元,以及
使用用户指定的密码对加密信息进行解密的解密单元。
14.如权利要求1所述的微处理器,其中:
所述明文信息存储单元相互关联地存储多条明文信息以及明文信息的受保护属性,并且,
所述访问控制单元基于请求类型和与明文信息相关联的受保护属性控制对每一条明文信息的访问。
15.如权利要求4所述的微处理器,其中:
所述明文信息存储单元被设置在内部存储器中,
所述处理器内核取指令被登记为登记的请求类型,并且,
当所述请求类型不是所述处理器内核取出的指令时,所述访问控制单元限制访问。
16.如权利要求1所述的微处理器,其中:
所述访问控制单元根据所述请求类型和受保护属性限制对处理器内核要用于执行一个程序的明文信息的访问。
17.如权利要求16所述的微处理器,其中:
所述处理器内核通过流水线处理来执行所述明文信息,并且,
所述访问控制单元根据所述请求类型和被添加到要由处理器内核的各单元执行的相应明文信息的每一个受保护属性,来限制对处理器内核执行的明文信息的访问。
18.如权利要求17所述的微处理器,还包括:
存储在流水线处理的每一站被执行的明文信息的受保护属性的多个受保护属性存储单元,一个受保护属性存储单元用于一个站;并且
根据所述多个受保护属性存储单元所存储的每一个受保护属性,所述访问控制单元限制对所述处理器内核用来执行所述程序的明文信息的访问。
19.如权利要求17所述的微处理器,其中:
当所述多个站中的至少一个站在所述处理器内核中执行的所述明文信息被添加有表示保护的受保护属性时,所述访问控制单元限制对所述处理器内核用来执行所述程序的明文信息的访问。
20.如权利要求1所述的微处理器,还包括:
对流水线中的每一个站执行的程序与每一个站相关联地存储受保护属性的受保护属性存储单元;
从调试器获取调试请求的调试请求获取单元;以及
当在获取所述调试请求时所有的受保护属性都表示不保护时,允许来自调试器的访问的调试中断控制单元。
21.如权利要求20所述的微处理器,其中:
当在获取所述调试请求时至少一个受保护属性表示保护时,所述调试中断控制单元限制来自所述调试器的访问。
22.如权利要求1所述的微处理器,还包括:
对处理器内核执行的程序存储受保护属性的受保护属性存储单元;以及
当所述受保护属性都表示不保护时,允许输出从所述微处理器获取的跟踪信息的跟踪信息输出控制单元。
23.如权利要求22所述的微处理器,其中:
当所述受保护属性表示保护时,所述跟踪信息输出控制单元限制所述跟踪信息的输出。
24.一种微处理器,包括:
从外部获取要由处理器内核使用的信息的信息获取单元;
当所获取的信息为加密信息时,对获取的信息解密以获取明文信息的解密单元;
将通过解密获取的明文信息存储起来的明文信息存储单元;
存储用于解密的密码的密码存储单元;
向所述明文信息添加标识所述密码的密码标识信息的密码标识信息添加单元;
存储所述密码标识信息的密码标识信息存储单元;
获取对所述明文信息的访问请求的访问请求获取单元;
识别所述访问请求的请求类型的请求类型识别单元;以及
根据所述请求类型和所述密码标识信息控制对所述明文信息的访问的访问控制单元。
25.如权利要求24所述的微处理器,其中:
所述密码标识信息是进一步指明对应的明文信息的受保护属性是保护还是不保护的信息,并且:
当所述密码标识信息所指示的受保护属性是保护时,所述访问控制单元限制对所述明文信息的访问。
26.如权利要求24所述的微处理器,其中:
所述密码标识信息是进一步指明对应的明文信息的受保护属性是保护还是不保护的信息,并且:
当所述密码标识信息所指示的受保护属性是不保护时,所述访问控制单元允许对所述明文信息的访问。
27.如权利要求24所述的微处理器,其中:
当所述请求类型不同于已登记的请求类型时,所述访问控制单元限制对所述明文信息的访问。
28.如权利要求24所述的微处理器,其中:
当所述请求类型是已登记的请求类型时,所述访问控制单元允许对所述明文信息的访问。
29.如权利要求28所述的微处理器,其中:
当所述请求类型不同于已登记的请求类型时,并且当所述密码标识信息所指示的受保护属性是保护时,所述访问控制单元限制对所述明文信息的访问。
30.如权利要求24所述的微处理器,其中:
所述访问控制单元根据所述请求类型和受保护属性禁止对所述明文信息的访问。
31.如权利要求26所述的微处理器,还包括:
获取初始化指令的初始化指令获取单元,所述初始化指令指示所述明文信息存储单元的初始化;以及
当获取了所述初始化指令时,初始化所述明文信息存储单元并在所述密码标识信息存储单元中设置密码标识信息的初始化单元,所述密码标识信息指明所述受保护属性是不保护。
32.如权利要求31所述的微处理器,还包括:
存储状态信息的状态存储单元,所述状态信息指出所述密码标识信息存储单元是否处于被初始化状态,其中:
当存储了指明被初始化状态的所述状态信息时,所述访问控制单元允许对所述明文信息的访问。
33.如权利要求24所述的微处理器,其中:
所述访问请求包括密码标识信息,并且
根据所述访问请求中进一步包括的密码标识信息以及所述密码标识信息存储单元中存储的密码标识信息,所述访问控制单元控制对所述明文信息的访问。
34.如权利要求33所述的微处理器,其中:
当所述访问请求中包括的密码标识信息与所述密码标识信息存储单元中存储的密码标识信息匹配时,所述访问控制单元允许对所述明文信息的访问。
35.如权利要求24所述的微处理器,其中:
所述访问控制单元根据所述请求类型和所述密码标识信息,判断是输出所述明文信息还是输出通过对所述明文信息进行加密而产生的加密信息。
36.如权利要求24所述的微处理器,其中:
所述访问控制单元根据所述请求类型和密码标识信息限制对处理器内核要用于执行一个程序的明文信息的访问。
37.如权利要求36所述的微处理器,其中:
所述处理器内核通过流水线处理来执行所述明文信息,并且,
所述访问控制单元根据所述请求类型和被添加到要由处理器内核的各单元执行的相应明文信息的每一个密码标识信息,来限制对处理器内核用来执行所述程序的明文信息的访问。
38.如权利要求37所述的微处理器,其中:
所述密码标识信息存储单元包括存储在流水线处理的每一站被执行的明文信息的密码标识信息的多个密码标识信息存储单元,一个密码标识信息存储单元用于一个站;并且
根据所述多个密码标识信息存储单元所存储的每一个密码标识信息,所述访问控制单元限制对所述处理器内核用来执行所述程序的明文信息的访问。
39.如权利要求37所述的微处理器,其中:
所述密码标识信息是进一步指明对应的明文信息的受保护属性是保护还是不保护的信息,并且:
当处理器内核的多个站中的至少一个站执行的所述明文信息的密码标识信息的受保护属性表示保护时,所述访问控制单元限制对所述处理器内核执行的明文信息的访问。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004186910 | 2004-06-24 | ||
JP2004186910 | 2004-06-24 | ||
JP2004226886 | 2004-08-03 | ||
JP2005124116 | 2005-04-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1713104A CN1713104A (zh) | 2005-12-28 |
CN100354787C true CN100354787C (zh) | 2007-12-12 |
Family
ID=35718747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100809360A Expired - Fee Related CN100354787C (zh) | 2004-06-24 | 2005-06-24 | 微处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100354787C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090001830A (ko) * | 2007-05-25 | 2009-01-09 | 삼성전자주식회사 | 컨텐츠 디바이스의 출력 제어 방법 및 장치 |
CN108090366B (zh) * | 2017-12-05 | 2020-02-04 | 深圳云天励飞技术有限公司 | 数据保护方法及装置、计算机装置及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1309351A (zh) * | 2000-02-14 | 2001-08-22 | 株式会社东芝 | 抗干预微处理器 |
WO2003023577A1 (en) * | 2001-11-12 | 2003-03-20 | Network Research Lab Limited | Method and device for protecting information against unauthorised use |
WO2003042799A2 (en) * | 2001-11-14 | 2003-05-22 | International Business Machines Corporation | Device and method with reduced information leakage |
-
2005
- 2005-06-24 CN CNB2005100809360A patent/CN100354787C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1309351A (zh) * | 2000-02-14 | 2001-08-22 | 株式会社东芝 | 抗干预微处理器 |
WO2003023577A1 (en) * | 2001-11-12 | 2003-03-20 | Network Research Lab Limited | Method and device for protecting information against unauthorised use |
WO2003042799A2 (en) * | 2001-11-14 | 2003-05-22 | International Business Machines Corporation | Device and method with reduced information leakage |
Also Published As
Publication number | Publication date |
---|---|
CN1713104A (zh) | 2005-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4612461B2 (ja) | マイクロプロセッサ | |
US8191155B2 (en) | Microprocessor | |
US6158004A (en) | Information storage medium and security method thereof | |
US7107459B2 (en) | Secure CPU and memory management unit with cryptographic extensions | |
CN101281506B (zh) | 数据处理系统内基于存储器域的安全控制 | |
US7444668B2 (en) | Method and apparatus for determining access permission | |
US7874009B2 (en) | Data processing device | |
KR100861104B1 (ko) | 유에스비 키보드의 보안장치 및 그 방법 | |
US4590552A (en) | Security bit for designating the security status of information stored in a nonvolatile memory | |
US7673152B2 (en) | Microprocessor with program and data protection function under multi-task environment | |
JP5153887B2 (ja) | プロセッサから周辺機器へのセキュア動作モードアクセス特権の譲渡のための方法及び装置 | |
US7523279B2 (en) | Information processing apparatus for accessing memory spaces including a user memory space and a secure memory space | |
US7277972B2 (en) | Data processing system with peripheral access protection and method therefor | |
EP1520219B1 (en) | Security processor with bus configuration | |
JP2008257735A (ja) | 保護された関数呼び出し | |
EA012921B1 (ru) | Способ и устройство защиты программного обеспечения от несанкционированного использования | |
US20040255199A1 (en) | Debug system, microprocessor, and debugger | |
US10142303B2 (en) | Separation of software modules by controlled encryption key management | |
JP4591163B2 (ja) | バスアクセス制御装置 | |
CN100354787C (zh) | 微处理器 | |
JP2723231B2 (ja) | ソフトウェア権利管理制御方法 | |
US7512761B2 (en) | Programmable processor and methods thereof having memory access locking | |
CN107085900B (zh) | 数据处理方法、装置、系统及pos终端 | |
CN100353276C (zh) | 微处理器 | |
CN102637152B (zh) | 具有处理单元和信息存储装置的设备 |
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: 20071212 Termination date: 20170624 |
|
CF01 | Termination of patent right due to non-payment of annual fee |