专利名称:安全处理器的制作方法
技术领域:
本发明涉及处理器,更具体而言涉及能够防止未经授权的代码执行的安全处理器。
背景技术:
随着近年来对计算机和个人数字助理的使用的增多,设备中执行的程序的安全性越来越重要。
装备处理器的设备能够通过处理器对程序的执行来实现各种功能,并且,与仅包括硬件的设备相比,它具有更高的操作灵活性并且更容易实现许多种功能。由于这种有利的特性,处理器被实现在多种信息设备中,例如各种计算机(例如个人计算机)、PDA(个人数字助理)、蜂窝电话和其他信息装置。
随着网络的进步,信息设备可以连接到网络,从而增加了利用设备来经由网络发送/接收邮件和数据或者下载程序的机会。因此,设备受计算机病毒的感染或者遭受未经授权的访问的风险越来越大。
为了增强具有处理器的信息设备的安全性,有必要防止处理器操作恶意代码或不合需要的代码。但是,目前,处理器方防止恶意代码操作的措施还不够充分,并且安全的软件实现环境还未被提供。
近来对传统安全处理器的研究揭示了某些安全处理器,这种处理器通过向在处理器外处理的数据应用加密并且通过在处理器内应用访问保护来禁止直接读取数据。例如,数据和指令代码被加密,并被存储在主存储设备或次存储设备中。当处理器执行指令时,在执行指令代码之前,经加密的指令代码被解密并被存储在处理器中的缓存中。
除了其他这样的传统安全处理器以外,存在一种采用虚拟存储系统的安全处理器。采用虚拟存储系统的处理器利用地址映射寄存器(AddressMap Register,简写为AMR)和翻译后援缓冲器(Translation Look-asideBuffer,简写为TLB),作为从逻辑地址(虚拟地址)到物理地址的地址转换方法。AMR是指导从任意地址到具有某个长度的地址的地址转换的寄存器。TLB是指导固定长度(一般是4-16kB(千字节))的地址转换的寄存器堆(register file)。
图1是描述传统安全处理器的处理器核心内的TLB的配置的式样图。
TLB的条目包括项目“有效(valid)”、“许可(permission)”、“虚拟地址(VA)”和“物理地址(PA)”中的每一个。“有效”是指示条目是否有效的信息。“许可”是指示地址转换是否被许可(不可读等)的信息。VA是作为利用条目进行的地址转换的目标的虚拟地址(逻辑地址)。PA是VA的地址转换之后的物理地址。
传统安全处理器具有加密处理速度较慢的问题,这是因为用于对指令代码和数据进行加密的电路位于承载安全处理器的芯片外部,因此加密性能较低。
此外,在加密过程中,用于加密的密钥是在外部芯片上的加密处理电路一方中确定的。因此,它独立于安全处理器一方中执行的指令类型、诸如内核模式、监督模式和用户模式之类的处理器操作模式(访问模式)的区别以及/或者取数据和指令代码的访问地址的区别。此外,安全处理器一方的过程单元不能指定用于加密和解密的密钥。因此,在传统安全处理器中,在选择适当的密钥用于执行中的指令方面存在问题。
此外,日本专利申请公布No.2002-353960公开了一种涉及软件实现环境的安全性的系统。例如,公开了一种代码执行装置,其认证经加密的执行代码,确认该执行代码的有效性,使安全处理器取与经加密的执行代码相对应的指令,并且将该指令作为安全任务来执行。
但是,在以上公开的代码执行装置中,与执行代码相对应的过程与用于其认证的密钥没有任何联系。因此,不能解决当不同于原始密钥的用于认证的密钥被分配给程序时在操作系统(OS)中执行恶意操作以及操作恶意指令代码的问题。
还应当注意,本申请的申请人先前已设计出了一种与本发明具有相同目的的安全处理器,并且向日本专利局递交了该申请。但是,日本专利申请公布No.2006-18528中公布的安全处理器采用了与本发明的配置不同的配置。
发明内容
本发明的第一目的是实现这样一种安全处理器,这种安全处理器基于存储器的以经加密的指令代码不能被重写的形式存储的存储内容,顺次认证存储在二级存储设备中的程序的指令代码,分阶段扩展可靠应用程序的范围,并且被配置为只执行可靠指令代码。
本发明的第二目的是通过在为处理器存储指令代码和数据时利用与指令代码和数据相对应的认证密钥对程序的指令代码和数据进行认证,并且通过让处理器只处理认证成功的指令代码和数据,来提高处理器的处理的安全性。
本发明的第三目的是利用可以较为容易地添加到现有普通处理器的配置来实现第一和第二目的。
本发明设想了一种对经加密的指令代码进行解密并且执行指令代码的安全处理器。
本发明的安全处理器的第一方面包括处理器核心,其执行通过对经加密的指令代码进行解密而获得的指令代码;在由处理器核心执行的程序不能访问的位置中实现的安全总线;以及连接到安全总线的安全硬件,用于执行对利用处理器核心执行的经加密的指令代码的认证,并且执行对经加密的指令代码以及处理器核心从外部输入/输出到外部的数据的加密/解密。
在本发明的安全处理器的第一方面中,安全硬件通过在经由安全总线连接的过程块中保存用于经加密的指令代码和数据的加密/解密的密钥,从而能够将密钥置于处理器核心中执行的程序不能访问的位置,因此能够保证密钥的安全性。
本发明的安全处理器的第二方面是安全处理器的第一方面中的安全硬件包括例如存储内置密钥的存储单元,并且被由内置密钥加密的安全引导程序所启动。安全引导程序被配置为充当由安全处理器执行的指令代码认证的起始点。
在本发明的安全处理器的第二方面中,可以通过使安全引导程序充当处理器核心中执行的指令代码认证的起始点来维持处理器核心中执行的程序的可靠性。此外,在这之后通过继续指令代码认证来维持可靠性。
本发明的安全处理器的第三方面是在安全处理器的第二方面中安全硬件包括连接到安全总线的安全管道。这允许了执行对经加密的指令代码和处理器核心从外部输入/输出到外部的数据的加密/解密。
在第三方面中,可以通过安全管道利用安全性有保证的密钥执行用于经加密的指令代码和处理器核心从外部输入/输出到外部的数据的加密/解密的过程。
本发明的安全处理器的第四方面是在安全处理器的第二方面中,安全硬件包括连接到安全总线的安全辅助装置,用于经由公共接口将命令和信息发送到处理器核心中执行的程序或从处理器核心中执行的程序接收命令和信息,并且用于执行公共密钥系统加密过程和公共密钥系统认证过程。
本发明的安全处理器的第四方面使得程序能够请求安全硬件过程并且仅经由公共接口获得信息。这是通过安全辅助装置经由公共接口将命令或信息发送到处理器核心中执行的程序或从处理器核心中执行的程序接收命令或信息来实现的。
本发明的安全处理器的第五方面是在安全处理器的第二方面中,实现了这样一种配置,该配置包括例如连接到安全总线的具有DMA传送功能的安全DMA,用于执行对由DMA传送功能传送的指令代码或数据的页验证。同时,DMA是直接存储器访问。
在本发明的安全处理器的第五方面中,可以通过安全DMA高速地处理页验证。
本发明的安全处理器的第六方面是在安全处理器的第二方面中,实现了这样一种配置,该配置例如包括安全处理器的第三方面的安全管道,安全处理器的第四方面的安全辅助装置以及安全处理器的第五方面的安全DMA。安全辅助装置具有经由安全总线执行对安全管道和安全DMA的设置/控制的配置。
安全处理器的第六方面实现安全处理器的第三方面的安全管道、安全处理器的第四方面的安全辅助装置以及安全处理器的第五方面的安全DMA中包括的功能,同时保证处理器核心中执行的程序的安全性。
本发明的安全处理器的第七方面是在安全处理器的第六方面中,安全管道例如包括具有条目的加密密钥表,该条目中注册了加密密钥的加密密钥许可证信息和指示加密密钥是否可靠的第一标志,并且该条目与处理器核心的TLB/AMR一一对应。此外,安全管道包括TLB/AMR扩展单元,用于注册在加密密钥表中注册的加密密钥的标识信息,以及第二标志和许可证信息,所述第二标志是在加密密钥表的由加密密钥标识信息指定的条目中注册的第一标志的拷贝。此外,安全管道包括许可证检查单元,用于检验在TLB/AMR扩展单元的条目中注册的许可证信息是否与在加密密钥表的由注册在TLB/AMR扩展单元的条目中的加密密钥标识信息指定的条目中注册的许可证信息相匹配。
在第七方面中,通过检验在TLB/AMR扩展单元的条目中注册的许可证信息是否与在加密密钥表的由注册在TLB/AMR扩展单元的条目中的加密密钥标识信息指定的条目中注册的许可证信息相匹配,对由存储在处理器核心的TLB/AMR的条目中的地址空间信息调控的数据空间的访问可被限制到拥有对数据空间的有效访问权力的程序。
本发明的安全处理器的第八方面是在第七方面中,例如,处理器核心的TLB/AMR的条目包括与TLB/AMR扩展单元的第二标志具有相同功能的第三标志。
在第八方面中,可以通过利用处理器核心的TLB/AMR的条目中的第三标志来加速与以上安全处理器的第七方面的数据空间的安全性相关的过程。
本发明的安全处理器的第九方面是在第六方面中,例如实现这样一种配置,在该配置中,安全辅助装置包括密钥认证单元,用于认证指令代码的经公共密钥加密的密钥。此外,该配置还包括许可证信息生成单元,用于在经公共密钥加密的密钥被密钥认证单元认证时生成经公共密钥加密的密钥的许可证信息。此外,第九方面包括密钥解密单元,用于在经公共密钥加密的密钥被密钥认证单元认证时对经公共密钥加密的密钥进行解密,并且由许可证信息生成单元生成的许可证信息被向认证单元请求认证的处理器核心中执行的程序所存储,并且被密钥解密单元解密的密钥被注册到加密密钥表。
在本发明的安全处理器的第九方面中,对于处理器核心中执行的程序,诸如向加密密钥表的条目注册密钥和从加密密钥表的条目去除密钥之类的密钥操作仅限于拥有许可证信息的程序。
本发明的安全处理器的第十方面是在第六方面中,例如实现这样一种配置,在该配置中,安全硬件包括密钥认证单元,用于认证指令代码的经公共密钥加密的密钥;页验证单元,用于以页为单位验证指令代码;许可证信息生成单元,用于在经公共密钥加密的密钥被密钥认证单元认证并且指令代码的页被页验证单元验证时,生成经公共密钥加密的密钥的许可证信息;以及密钥解密单元,用于在经公共密钥加密的密钥被密钥认证单元认证并且指令代码的页被页验证单元验证时,对公共密钥加密的密钥进行解密,并且由许可证信息生成单元生成的许可证信息被向认证单元请求认证的处理器核心中执行的程序所存储,并且被密钥解密单元解密的密钥被注册到加密密钥表。
在本发明的安全处理器的第十方面中,除了安全处理器的以上第九方面的功能之外,还可以防止具有伪造指令代码的程序对加密密钥表的条目进行未经授权的密钥操作。
根据本发明,可以实现这样一种安全处理器,这种安全处理器基于存储器的以经加密的指令代码不能被重写的形式存储的存储内容,顺次认证存储在二级存储设备中的程序的指令代码,分阶段扩展可靠应用程序的范围,并且能够执行可靠指令代码。根据本发明,还可以通过在向处理器存储指令代码和数据时利用与指令代码和数据相对应的认证密钥对程序的指令代码和数据进行认证,并且通过让处理器只处理认证成功的指令代码和数据,来提高处理器的处理的安全性。
本发明使得能够利用可以较为容易地添加到普通处理器的配置来实现具有上述效果的安全处理器。
图1是描述传统安全处理器的处理器核心中包括的TLB/AMR的配置的式样图。
图2是描述作为本发明的实施例的整个安全处理器系统的配置的图。
图3A示出本实施例的安全处理器的系统引导中的程序的操作流程(引导序列)。
图3B示出程序在存储器上的映射状态。
图3C是示出与上述操作流程相对应的处理器核心的TLB/AMR和安全管道60的TLB/AMR扩展单元的设置状态的式样图。
图4A是示出认证模式1中的代码认证的方法的图。
图4B是示出认证模式2中的代码认证的方法的图。
图4C是示出认证模式1的代码认证中所需的信息的图。
图4D是示出认证模式2中的代码认证过程的流程的图。
图4E是说明认证模式2中密钥递送和认证过程的图。
图5A是说明本实施例的安全处理器中利用S比特属性进行的程序访问限制控制的图。
图5B是示出利用S比特进行的访问控制的关系的图。
图5C是示出本实施例的安全处理器中利用S比特进行的访问限制的图。
图6是示出本实施例的安全处理器中的S=1父程序执行的子程序认证工序的概况的图。
图7是示出安全管道中提供的加密密钥表的配置示例的图。
图8是描述安全管道中提供的TLB/AMR扩展单元的配置的图。
图9A是处理器核心中包括的TLB/AMR的配置图。
图9B是示出处理器核心的TLB/AMR和安全管道的TLB/AMR扩展单元之间的关系的图。
图10A是示出密钥认证过程中的安全硬件的操作概况的式样图。
图10B是示出认证模式1中的认证过程的工序的流程图。
图10C是示出认证模式2中的认证过程的工序的流程图。
图11A是示出密钥生成过程中的安全硬件的操作概况的式样图。
图11B是指示由本实施例的安全处理器执行的密钥生成过程的详细工序的流程图。
图12A是示出用于执行本实施例的安全处理器的密钥存储过程的硬件机构的框图。
图12B是示出利用本实施例的安全处理器进行的密钥存储过程的工序的流程图。
图13A是示出本实施例的安全处理器的密钥去除过程中的安全硬件的操作概况的式样图。
图13B是示出利用本实施例的安全处理器进行的密钥去除过程的工序的流程图。
图14A是示出通过链接处理器核心的软件过程和利用安全辅助装置中的安全控制器进行的硬件过程而执行的TLB/AMR条目注册操作的过程工序的流程图。
图14B是示出TLB/AMR注册操作的过程中的安全硬件的操作的式样图。
图15A是示出通过链接处理器核心的软件过程和利用安全辅助装置中的安全控制器进行的硬件过程而执行的TLB/AMR条目去除操作的过程工序的流程图。
图15B是示出TLB/AMR去除操作的过程中的安全硬件的操作的式样图。
图16是示出利用本实施例的安全处理器进行的TLB/AMR条目无效操作的式样图。
图17是示出当处理器核心中执行的程序发出数据写命令时安全管道的操作的图。
图18是示出当处理器核心中执行的程序发出数据/指令读命令时安全管道的操作的图。
图19是示出利用本实施例的安全处理器进行的程序执行控制的图。
具体实施例方式
在下面的描述中,参考附图阐述本发明的实施例的细节。
图2是描述作为本发明的实施例的整个安全处理器系统的配置的图。
图2所示的本实施例的安全处理器包括处理器核心(中央操作电路)10、二级缓存20、本地总线30和SDRAMC(同步动态RAM控制器)40。存储器50连接到SDRAMC40。存储器50是在安全处理器的外部或内部实现的。
处理器核心10和二级缓存20构成CPU核心。除了现有处理器的上述组件外,本实施例的安全处理器还包括安全管道60、安全DMA70和安全辅助装置80这三个块。在本实施例中,所有这三个块都被称为安全块。
三个块经由安全总线(第一安全总线)90彼此相连。在处理器核心10中操作的软件不能识别安全总线90。存储器50是与处理器核心10在同一个芯片上实现的,或者是在芯片外部实现的。应当注意,处理器核心10的数目不限于1,相反,可以实现多个处理器核心。还可以实现不止一个CPU核心。
安全管道60处于二级缓存20和本地总线30之间。它包括命令缓冲器61、加密过程管道62、TLB/AMR扩展单元63、密钥表64、许可证检查单元65和安全总线IF(安全总线接口)66。
在二级缓存20和本地总线30之间提供的加密过程管道62在处理未经加密的明文的处理器核心10和处理经加密的数据的外部设备之间执行加密和解密。加密过程管道62通过采用例如由DES和AES代表的通用密钥密码系统来执行加密和解密。
命令缓冲器61包括用于吸收由安全管道中的加密过程管道中的加密过程导致的数据延迟的功能。处理器核心10中执行的软件(程序)经由命令缓冲器61向安全DMA70和安全辅助装置80发送命令和多种信息。处理器核心10中执行的软件经由命令缓冲器61读取在安全辅助装置80的公共IF中实现的每个寄存器的内容。命令缓冲器61是用于从处理器核心10发出的命令的通道。在本实施例中,命令是通过对安全辅助装置80执行的寄存器读/写访问而发出的,因此,命令缓冲器本身不具有安全性功能。在本实施例中,对安全辅助装置80的寄存器读/写访问是通过以安全辅助装置80的地址为目标的数据读/写来实现的,而无需提供专用于安全辅助装置80的命令。换言之,对安全辅助装置80的命令发出是通过与公知的“存储器映射I/O”方法等同的方法来实现的。
在本实施例中,安全硬件是集成安全块和安全总线90的部分。但是,在本发明中,只有安全块可以被称为安全硬件。安全硬件是本实施例的安全处理器中的组件,并且是本发明独有的。在本实施例的安全处理器中,在处理器核心10的过程中可以维护数据的安全性,这是因为数据在经过安全管道60之后被加密过程管道62加密。
在安全处理器中,一个重要的问题是维护用于加密的密钥的安全性。本实施例的安全处理器通过对密钥加密并用硬件对经加密的密钥进行解密而不是通过处理未经改变的密钥来解决此问题。
经加密的密钥表(密钥表)64用于每个程序和数据空间的密钥管理。实现了与处理器核心10中的TLB/AMR相同数目的TLB/AMR扩展单元63。TLB/AMR扩展单元63包括用于将存储在经加密的密钥表64中的密钥与存储器50的物理页从逻辑上关联起来的功能。处理器核心10中的TLB/AMR例如是在MMU(存储器管理单元)中提供的。
许可证检查单元65使对安全管道60的访问生效,并且限制任何未经授权的访问。安全总线IF 66是用于经由设置安全管道60的过程的安全总线90接收来自安全辅助装置80的指令的总线接口。
安全DMA 70包括DMAC(DMA控制器)71和公共IF(公共接口)72,并且还包括通用密钥密码系统过程/散列(hash)过程单元73、安全IF(安全接口)74和安全总线IF(安全总线接口)76。
通用密钥密码系统过程/散列过程单元73包括DES/AES过程块、散列过程块、用户加密过程块、明文缓冲器和加密缓冲器。通用密钥密码系统过程/散列过程单元73执行诸如AES或DES之类的通用密钥密码系统过程,以及与安全DMA70的传送区域相关的散列操作。
安全IF74包括诸如DMA命令和DMA状态之类的与DMA相关的命令和状态被设置到的寄存器,以及存储DES加密密钥、AES加密密钥、明文散列值和经加密的散列值的寄存器。
安全总线IF76是用于接收来自安全总线IF66的与密钥相关的信息的接口。
安全DMA70被配置为除了能够启动具有通用DMA功能的DMA外,还能够经由公共IF72启动具有加密过程功能的DMA。这是因为安全DMA70充当加密过程加速器。安全DMA70能够在没有通过DMAC71和公共IF72进行的加密过程的情况下执行常规DMA过程,并且具有考虑到了维持与现有软件的兼容性的配置。
安全辅助装置80包括公共IF(寄存器IF)81、安全控制器82、RSA计算单元83、椭圆曲线密码系统计算单元84、散列操作单元85、随机数生成器86、认证列表87、安全总线IF 88和安全总线89。它执行公共密钥系统的计算过程和认证过程,也经由安全总线90执行对安全管道60和安全DMA70的设置/控制。安全控制器82通过状态机过程实现用于安全管道60或安全DMA70的指令,例如组合操作和各种实际设置。
在安全辅助装置80中,在处理器核心10中操作的软件中,只有公共IF 81可被使用,并且除公共IF 81之外的其他块不能被访问。
RSA计算单元83通过硬件RSA密钥执行RSA过程。椭圆曲线密码系统计算单元84利用硬件椭圆曲线加密密钥执行椭圆密码系统过程。散列操作单元85为签名认证等执行散列操作。随机数生成器86生成用于密钥生成和许可证信息生成的随机数。认证列表87存储内置的密钥和正式注册的密钥,稍后将对其进行说明。安全总线IF 88是用于将安全管道60和安全DMA 70的设置/功能性控制发送到安全总线90的接口。
S比特信号线91连接安全管道60中的TLB/AMR扩展单元63和二级缓存20。S比特信号线91用于将S比特从安全管道60输出到处理器核心10,并且S比特经由连接二级缓存20和处理器核心10的信号线92输出到处理器核心10。S比特信号线还连接二级缓存20和安全DMA70,以及二级缓存20和安全控制器82,虽然在图中没有示出它们。后面将说明S比特的细节。
本实施例的安全处理器利用向现有处理器添加安全管道60、安全DMA70和安全辅助装置80的配置实现了命令和数据的加密,以及对用于加密的密钥的保护。
图3A-3C是说明本实施例的安全处理器中用于维护密钥安全性的引导序列的图。
在本实施例的安全处理器中,地址映射寄存器(AMR)和翻译后援缓冲器(TLB)被用作地址转换方法,以将虚拟存储系统中的逻辑地址(虚拟地址)转换成物理地址。AMR是指导从任意地址到某个长度的地址的地址转换的寄存器。TLB是指导固定长度(一般4-16kB(千字节))的地址转换的寄存器堆。
在本实施例中,TLB/AMR扩展单元63被添加到处理器核心10的MMU(存储器管理单元)中提供的AMR和TLB,并且TLB/AMR扩展单元63被提供到安全管道60。特征之一是加密密钥被分配给由TLB/AMR扩展单元63管理的空间,并且安全管道60对输入到该空间/从该空间输出的数据进行加密。
图3A示出本实施例的安全处理器的系统引导中的程序的操作流程(引导序列)。图3B示出程序的存储器上的映射状态,图3C是示出与上述操作流程相对应的处理器核心10的TLB/AMR和安全管道60的TLB/AMR扩展单元63的设置状态的式样图。
如图3A所示,引导序列大体上被划分成(1)利用正常设置程序的过程、(2)利用安全程序的过程以及(3)利用OS(操作系统)和应用的过程。这些过程是按(1)-(3)的顺序执行的。
TLB和AMR不是在安全处理器启动之后立即被确认生效的。因此,加密功能也是无效的。在这种状态下,正常设置程序像传统处理器那样执行正常初始化过程(S1)。
接下来,正常设置程序将被称为安全引导程序的经加密的程序拷贝到存储器50(S2),所述经加密的程序被存储在二级存储设备等中。嵌入在安全处理器中作为硬件的内置密钥对安全引导程序进行加密。内置密钥是从安全处理器的制造商提供的。在本实施例中,如图3C所示,内置密钥与对应于处理器核心10的AMR-0的TLB/AMR扩展单元63相关联。内置密钥被配置为一旦设置AMR-0的地址转换信息就变得有效。如上所述,本实施例使内置密钥与AMR-0相关联;但是,其中内置密钥与TLB相关联的另一种配置也是可能的。
在步骤S2之后,地址转换信息被设置到AMR-0,从而导致安全引导处理器可用(S3)。此时,内置密钥被确认生效。
安全引导程序的设置在上述步骤S1-S3中的过程之后终止。换言之,在拷贝安全引导程序和使内置密钥生效之后,设置终止。
安全引导程序可以从安全处理器外部提供,或者可以被嵌入在硬件中作为微代码。可以采用任一种方法,而不会有任何问题。
然后,安全引导程序成为代码认证的起始点,并且安全处理器中执行的软件可靠性和系统可靠性由继续下去的认证来维持。
(B)图3B所示的安全引导程序的激活是通过在终止(A)安全引导程序的设置之后进行划分来执行的。安全引导程序是在引导安全处理器之后的第一认证程序(程序S=1),并且允许了本实施例的安全硬件(安全管道60、安全DMA 70和安全辅助装置80)的初始化。因此,安全引导程序认证用户应用的核心程序(假定在下面的描述中该程序被称为“内核”)。认证的细节在下面描述。
如图3B所示,安全引导程序执行内核认证过程,并且控制被移动到内核。内核空间被设置到AMR-1,如图3C所示。当内核被认证时,内核密钥被分配给内核。内核密钥与对应于AMR-1的TLB/AMR扩展单元63相关联。内核密钥被维持,直到内核被停止为止。
参考图3A阐述安全引导程序激活之后的过程。安全引导程序初始化安全硬件(S4),并且认证内核密钥信息(S5)。然后,基于AMR-1的地址转换信息,经认证的内核被拷贝到存储器50,并且控制被移动到内核(S6)。
如上所述,安全引导程序执行内核认证过程。当控制被移动到内核时,被安全引导程序占用的空间被释放,从而终止该过程。
被安全引导程序认证的内核还认证其子程序(安全应用),并且向子程序分配逻辑空间。然后,子程序被启动。
参考图3A说明上述过程的细节。
由安全引导程序启动的内核在初始化之后生成自己的数据空间(S7)。内核认证其子程序(安全应用)并且启动经认证的安全应用(S8)。此时,内核向安全硬件指示安全应用的加密密钥。然后在存储器50中安全引导程序的空间被释放,如图3B所示。内置密钥被无效,如图3C所示,并且被删除。在内置密钥被删除之后,与AMR-0相对应的TLB/AMR扩展单元63变为未设置。
利用安全硬件,加密密钥(应用密钥)被分配给被内核认证的子程序(安全应用)。应用密钥与对应于处理器核心10的TLB条目(安全应用的地址转换信息被设置到的条目)的TLB/AMR扩展单元63相关联。
在本实施例的安全处理器中,没有认证信息的子程序(非安全应用)也能够被执行,但有某些限制。加密密钥不会被分配给非安全应用(NS应用),因此,TLB/AMR扩展单元63中用于TLB条目(NS应用的地址转换信息被设置到的条目)的区域变为未设置(见图3C)。
在本实施例中,程序在经认证的空间中执行的状态被称为“S比特被设置”。在这里,与UNIX的监督模式不同,S比特不具有继承属性;但是,S比特指示当前被执行的代码是否可靠(经授权)。
参考图4A、4B、4C、4D和4E阐述本实施例中的代码认证方法。
代码认证是在安全引导程序和被安全引导程序等认证的内核(用户应用的核心程序)中执行的,如图3的引导序列所示。
在本实施例中,认证模式1和认证模式2被用作代码认证模式。在将程序假定为单个认证单元的情况下,认证模式1执行通用密钥加密。
参考图4A说明认证模式1。
认证模式1通过以下(1)-(4)的功能执行代码认证。
(1)保护目标代码的加密(2)代码加密密钥上的签名(3)加密密钥上的签名的验证(4)安全性差错状况(S比特+无效指令)如图4A所示,在认证模式1中,加密过程所必需的加密密钥Ks1是以它被公共密钥Kpx1加密的方式提供的。密钥签名102被提供给经公共密钥加密的加密密钥Ks1(经加密的密钥Ks1)。经加密的密钥Ks1的签名验证过程是利用密钥签名102、单独提供的签名验证密钥103以及对签名验证密钥的签名104(签名验证密钥签名)来执行的。
在图4A中,执行利用RSA公共密钥进行的验证;但是,利用诸如HMAC密钥之类的其他方法进行的验证也不会造成问题,也能被采用。
认证模式1是这样一种方法,在这种方法中,加密密钥的验证被视为代码验证。由于无效代码不能被正常解密,从而防止了特定的无效执行,因此安全性能够被实现。
参考图4C和4D阐述上述代码认证过程的细节。
图4C示出认证模式1中的代码认证中所需的信息,图4D示出代码认证过程的流程。
图4C示出了安全处理器的硬件或软件中保存的密钥与用于指令代码生成的密钥(例如在生成对象时使用的密钥)的组合。如图4C所示,通用密钥Kc、第一公共密钥对301(公共密钥Kp1和私密密钥Ks1)、第二公共密钥对302(签名验证密钥(公共密钥Kp2)和签名私密密钥Ks2)以及第三公共密钥对303(签名私密密钥Ks3和签名验证密钥(公共密钥Kp3))被用于代码认证。
公共密钥Kp1和私密密钥Ks1形成一对,并且安全处理器在软件不能读出密钥的位置(安全硬件)中维护私密密钥Ks1。另一方面,公共密钥Kp1可以经由寄存器被安全处理器中执行的软件读取,并且作为处理器信息被发布。从而,代码生成方也能使用密钥。
代码生成方存储签名验证所需的第二公共密钥对302(公共密钥Kp2和私密密钥Ks2),并且将代码专有签名验证密钥Kp2以及经加密的代码提供给安全处理器。第三公共密钥对303(签名私密密钥Ks3和签名验证密钥Kp3)中的签名私密密钥Ks3是代码生成方的经官方证明的密钥,它被存储在证明机构中,因此,该密钥在安全处理器一方不被使用。签名验证密钥Kp3经由官方证明机构发布,并且经由网络(例如通过传输)或作为硬件固定值从安全处理器外部存储在安全辅助装置80中的认证列表87中。
参考图4D说明用于在代码生成方、证明机构和安全处理器之间递送上述密钥的方法,以及利用密钥进行的指令代码认证过程工序。
现在说明在图4D的左上部分示出的代码创建器所执行的代码生成过程。代码生成过程不要求使用专用硬件,而是可以在生成对象(程序)时利用诸如软件这样的方法来实现。
(1)首先,准备要加密和认证的指令代码311和通用密钥Kc。利用通用密钥Kc对指令代码311进行加密,并且生成经通用密钥加密的指令代码312(通用密钥加密过程)。
(2)同时,利用从安全处理器发布的公共密钥Kp1对通用密钥Kc进行加密,并且生成经公共密钥加密的通用密钥Kc(公共密钥加密过程1)。
如上所述,要对指令代码进行加密,需要两种类型的信息,通用密钥Kc和公共密钥Kp1。只要实现这两个密钥就能对指令进行加密。
此外,执行生成用于认证上述加密被正确执行的信息的过程。
(3)对被上述公共密钥Kp1加密的通用密钥Kc执行散列操作,并且生成密钥签名的原始数据(散列过程1)。
(4)利用签名私密密钥Ks2对原始数据进行加密,并且通过加密获得的值充当密钥签名S1(公共密钥加密过程2)。
(5)上述公共密钥Kp2对中的公共密钥Kp2充当签名验证密钥,并且准备电子证书,其中包括用于认证数据314的有效性的签名验证密钥签名S2,其中数据314包括签名验证密钥(公共密钥Kp2)和其他信息。签名验证密钥签名S2是从证明机构接收到的。
四种类型的信息,经通用密钥加密的指令代码312、经公共密钥加密的通用密钥Kc、密钥签名S1和电子证书313经由诸如ROM这样的存储介质或诸如网络这样的传输装置320被提供给安全处理器。
{安全处理器中的过程}参考图4D右侧的“处理器中的过程”阐述安全处理器对经加密的指令代码进行解密和执行的过程。
(1)安全处理器利用私密密钥Ks1对从代码创建器接收到的经公共密钥加密的通用密钥Kc进行解密(公共密钥解密过程1)。
(2)向上述经公共密钥加密的通用密钥Kc应用与代码创建器方应用的散列操作相同的散列操作。
(3)利用电子证书313中的签名验证密钥(公共密钥Kp2)对从代码创建器接收到的密钥签名S1进行解密(公共密钥解密过程2)。
(4)将散列过程1中获得的结果与公共密钥解密过程2中获得的结果相比较,并且确定结果是否匹配,换言之,确定经加密的密钥(通用密钥Kc)是否是伪造的。如果结果匹配,则经加密的密钥不是伪造的(密钥认证)。
(5)向电子证书313中的数据314(签名验证密钥(公共密钥Kp2)和其他信息)应用散列操作(散列过程2)。
(6)利用签名验证密钥(公共密钥Kp3)对电子证书313中的签名验证密钥签名S2进行解密(公共密钥解密过程3)。
(7)将上述散列过程2中获得的结果与上述公共密钥解密过程3中获得的结果相比较,并且确定结果是否匹配。换言之,确定电子证书313是否是由合法权利拥有者创建的(电子证书的验证)。
(8)将(4)中的比较结果(比较结果输出1)与(7)中的比较结果(比较结果输出2)相比较,如果两个比较结果都表明“匹配”,则利用(1)中获得的通用密钥Kc对经通用密钥加密的指令代码312进行解密(通用密钥解密过程)。
如上所述,在本实施例中,通过密钥认证和电子证书的验证来验证指令代码是否被正确加密以及是否是伪造的。只有被正确加密且不是伪造的指令代码被解密。因此,确保了安全处理器执行的是经确认生效的指令代码。
{证明机构过程}参考图4D左下部分的“证明机构过程”说明证明机构为代码创建器所创建的经加密的指令代码的电子证书313生成签名验证密钥签名S2的过程。
向包括签名验证密钥(公共密钥Kp2)和其他信息的数据314应用散列操作(散列过程2)。利用签名私密密钥Ks3向操作结果执行公共密钥加密过程,并且生成签名验证密钥签名S2(公共密钥加密过程3)。
通过利用存储介质或网络,上述签名验证密钥签名S2被提供给代码创建器。
代码创建器通过利用从证明机构接收到的签名验证密钥签名S2生成电子证书313。
证明机构过程只需要在使用公共密钥对(公共密钥Kp2和私密密钥Ks2)之前被实现一次。散列操作是通过例如HMAC执行的,公共密钥操作是通过诸如RSA这样的方法执行的。本发明没有特别指定用于散列操作或公共密钥操作的方法。
在下面的描述中,参考图4B阐述认证模式2。
认证模式2包括下面的功能(1)-(4)。
(1)保护目标代码的加密(2)经代码加密的密钥(经加密的密钥)和页散列上的签名(3)经加密的密钥和页签名的签名验证(4)安全性差错状况(S比特请求+无效指令)认证模式2以页为单位验证指令代码。以页为单位的验证是以下面的方式执行的安全辅助装置80经由安全总线90启动安全DMA 70,安全DMA 70执行散列操作,并且操作结果被验证。通过上述方式,在认证模式2中页验证被执行,并且验证的失败被确定为认证差错,从而使得能够检测代码伪造。因此,可以实现一种认证模式,这种认证模式比起认证模式1来是更进一步加强的保护系统。
在本实施例的认证模式2中,如果程序较大并且程序被划分成多页,则使所有的页密钥(经加密的密钥)都相同,并且以页为单位执行页签名验证。可以有其中每页具有不同密钥的配置。
如图4B所示,在认证模式2中,除了经公共密钥加密的公共密钥Kp2、密钥签名102、签名验证密钥103和签名验证密钥签名104之外,还利用了页签名105来执行签名验证密钥过程。页签名105是经公共密钥Kp2加密的页的签名。在图4B中,为页1-3中的每一页生成页签名105。
图4E是说明认证模式2中的密钥递送和认证过程的图。
在图4E中,由虚线矩形框350围绕的部分是向图4D的认证模式1中的过程添加的过程。在认证模式2中,除了认证模式1中的密钥认证之外,执行了针对每个认证单元的页签名和验证。当更详细地说明时,在认证模式2中,对被通用密钥Kc加密的每一页执行散列操作(散列过程A)。利用签名私密密钥Ks2对操作结果进行加密(公共密钥加密过程A),并且生成页签名S1A。对于多个页签名,生成的密钥签名的数目与页数目相同。例如,对于3页签名验证,除了页签名S1A外,还生成了页签名S1B和页签名S1C。在认证模式2中,经加密的密钥的认证和页认证是同时执行的。因此,可以通过在执行伪造页之前停止过程来实现安全性。
安全处理器一方的密钥签名S1A的验证是用与图4D所示的密钥签名S1的验证相同的机制来执行的。换言之,向经通用密钥加密的指令代码362应用散列操作(散列过程A),并且利用签名验证密钥(公共密钥Kp2)对接收到的密钥签名S1A进行解密(公共密钥解密过程A)。将散列过程A中获得的结果与公共密钥解密过程A中获得的结果相比较,并且输出比较结果(比较结果输出A)。在认证模式2中,除了比较结果输出1的验证结果和签名验证密钥签名S2的认证结果之外,还检验上述比较结果输出A的验证结果。仅当所有以上验证结果和认证结果都正确时才利用通用密钥Kc对经通用密钥加密的指令代码362进行解密(通用密钥解密过程)。
下面说明图4D的认证模式1和图4E的认证模式2的详细操作流程。
S比特指示正在执行的程序的加密密钥是否被任何方法认证,所述方法例如是图4D和图4E中所示的方法。S比特只依赖于与执行程序的空间相关的TLB/AMR的信息,而与启动程序者无关。另外,S比特不是作为状态包括在监督模式中的那种。
S比特是指示“已认证(authenticated)”属性的比特。S比特被添加到经认证或生成的密钥,并且被以下方式被拷贝到TLB当程序被注册在TLB中时使密钥与程序相关联。利用S比特进行的数据保护(当程序要被正常执行时关于程序不是伪造的证明)可以利用正在执行的程序的S比特属性和数据空间的S比特属性的组合来实现。
通过读取上述安全引导程序生成和注册初始信息S=1。其中注册了S=1信息的程序可以通过经认证的密钥的注册来生成S=1空间。
利用S比特进行的访问控制的示例在图5A、5B和5C中示出。
在安全处理器的基本操作中,经认证的程序所在的空间和由经认证的程序生成的数据空间是仅有的S=1空间。
图5A说明了本实施例的安全处理器中利用S比特属性进行的程序访问限制控制。
当从S=1经认证程序(经加密的程序)访问S=1数据空间时(经认证的和经加密的数据页),经由安全管道60的访问是可能实现的(安全过程)。从S=1程序到S=0数据空间的访问在不经过安全管道60的情况下可能实现;但是,就S=0数据空间来说不能确保安全性(非安全过程)。
从S=0程序(未认证的程序)到S=1数据空间的访问是禁止的。从S=0程序到S=0数据空间的访问是可能实现的(正常过程)。由S比特进行的访问控制的关系在图5B中示出。
图5C示出本实施例的安全处理器中利用S比特进行的硬件访问限制。
由安全处理器执行的程序被分类成S=1程序和S=0程序,并且还被分类成在特权模式(P-1)和非特权模式(P=0)中执行的程序。
被分类为S=1且P=1的程序能够访问安全处理器的所有块,虽然其中包括了经由安全控制器82的间接访问。但是,禁止用于取得存储在密钥表64中的密钥的访问。
被分类为S=1且P=0的程序可以访问安全管道60、安全DMA 70和安全辅助装置80中除灰色块之外的所有块。换言之,可以使用公共密钥系统计算单元(RSA计算单元83、椭圆曲线密码系统计算单元84和散列操作单元85)以及随机数生成器86。也可以使用命令缓冲器61和加密过程管道62。
被分类为S=0程序只能使用安全DMA70的DMAC71和公共IF72。不能使用该块的其余部分。
图6是示出本实施例的安全处理器中的S=1父程序执行的子程序认证工序的概况的图。在图6中,使用硬件的过程由实线指示,使用软件的过程由虚线指示。
S=1父程序是一个经认证的程序,例如图3的安全引导程序。在下文中为了简便,将经认证的程序,例如安全引导程序,称为父程序。要被父程序认证的子程序是与被通用密钥加密系统加密的代码以及用于代码加密并且被公共密钥加密的加密密钥、密钥签名、签名验证密钥和签名验证密钥签名(见图4A(a))一起提供的。
如图6所示,通过子程序密钥对子程序代码进行通用密钥加密。在图6中,在被父程序用于认证子程序的多种认证信息中,只描述了经公共密钥加密的子程序密钥411(见虚线矩形框410)。
与用于上述公共密钥加密的公共密钥构成一对的私密密钥(硬件私密密钥)被存储在安全处理器的安全辅助装置80的认证列表87中,并且不能被从在安全处理器中执行的软件中读取。
接下来,说明由父程序执行的子程序认证过程工序。
(1)父程序把要执行的子程序的认证信息设置到安全辅助装置80。在该工序中,通过经由公共IF81将子程序的经公共密钥加密的子程序密钥411(通用密钥)和图中未示出的认证信息设置到公共密钥操作单元(RSA计算单元83或椭圆曲线密码系统计算单元84)来利用安全硬件认证子程序密钥。由于软件本身不能干扰认证过程,因此可以确保认证过程的可信性。
至于要被设置到安全辅助装置80的信息,有“密钥属性(加密系统、密钥长度、块长度指定)”、以及“密钥签名”、“签名验证密钥”、“签名验证密钥签名”和“用于公共密钥加密的加密密钥”的认证信息。此外,密钥表(加密密钥表)64中存储了经认证的密钥信息的条目号码也是要被设置到安全辅助装置80的信息,这些被存储在安全辅助装置80的公共IF81中的寄存器接口中实现的寄存器中。
在父程序将上述信息设置在安全辅助装置80的公共IF81处之后,安全硬件通过将“密钥认证命令”设置到安全辅助装置80的公共IF81中的命令寄存器来开始硬件密钥认证过程。在硬件密钥认证过程被执行的同时,父程序处于过程终止等待状态。当硬件认证过程认证子程序时,加密密钥表64被更新,并且“密钥ID”、“许可证信息”和“子程序密钥”被设置到加密密钥表64的相关条目。在本实施例中,软件管理加密密钥表64的空条目。
当上述硬件密钥认证过程终止时,安全辅助装置80通过中断将密钥认证的终止通知给父程序。
(2)父程序从安全辅助装置80的公共IF81读取密钥认证的状态信息,并且确定子程序密钥是否被认证。当确定子程序被认证时,父程序经由安全辅助装置80的公共IF81获得存储在加密密钥表64中的子程序密钥的许可证信息,并且将该信息存储在规定的存储区域中(软件保存)。
在本实施例中,为了确保可靠性,软件不能访问存储在加密密钥表64中的密钥;但是,软件可以使用许可证信息作为用于对密钥的替换访问许可的替换密钥信息。软件可以利用许可证信息执行各种过程。
在本实施例中,将密钥注册到加密密钥表64涉及密钥认证过程。因此,虽然注册是准确的,但却要求较长的处理时间。此外,由于频繁执行将条目注册到TLB/AMR扩展单元63/从TLB/AMR扩展单元63去除条目,因此要求高速处理。为了降低处理时间。本实施例引入了许可证信息的概念,它向密钥持有者(程序)提供注册到TLB/AMR扩展单元63的权利。许可证信息只被发给其密钥(加密密钥)被注册在加密密钥表64中的程序(经认证的程序)。由于经认证的程序的数据空间可以被加密,因此即使许可证信息位于存储器50中,其他程序也不能访问经认证的程序的数据空间。
许可证信息在密钥存活的部分中有效,或者换言之,在从程序密钥被认证并被注册在加密密钥表64中时到密钥被从加密密钥表64去除时之间的时间段期间有效。上述密钥存活部分通常与程序的执行部分相同。
由于许可证信息只被发给S=1程序(其方式是通过将该信息存储在能被S=1程序使用的加密空间中),因此它不会被其他访问暴露。
当如上所述密钥认证完成并且父程序获取许可证信息时,可以执行用于将子程序分配到实际存储器空间的过程。
(3)父程序在启动上述经认证的子程序之前利用软件过程搜索TLB/AMR条目,该TLB/AMR条目管理子程序实际被分配的存储器空间。在加密密钥表64的存储要被子程序使用的密钥(子程序密钥)的条目中设置的密钥ID和(2)中存储的许可证信息被设置到安全辅助装置80的公共IF81中的寄存器。然后,“TLB/AMR扩展单元注册命令”也被设置到公共IF81中的命令寄存器。当上述注册命令被设置到安全辅助装置80时,许可证检查单元65检验上述许可证信息的准确性。许可证信息的检验是通过确定存储在父程序中的许可证信息是否与存储在加密密钥表64的相关条目中的许可证信息相匹配来执行的。当两个许可证信息匹配时,许可证信息是正确的。如果确定许可证信息正确,则密钥ID被设置在TLB/AMR扩展单元63的相关条目中。这样,存储子程序密钥的加密密钥表64被链接到TLB/AMR扩展单元63的相关条目。此链接允许了在使用安全处理器的与TLB/AMR扩展单元63的相关条目相对应的TLB/AMR时使用加密密钥表64中由密钥ID指定的子程序密钥。
(4)为了让父程序启动子程序,如果安全处理器中TLB的相关条目被访问,则通过TLB/AMR扩展单元63的利用密钥ID的上述条目和加密密钥表64的条目之间的链接,子程序的子程序密钥被从加密密钥表64读出,并且子程序密钥被提供给加密过程管道62。
(5)从存储器50读取的经通用密钥加密的子程序被加密过程管道62利用子程序密钥解密为明文子程序,并且明文子程序被提供给处理器核心10。如上所述,处理器核心10能够正常执行子程序。
图7是示出安全管道60中提供的加密密钥表64的配置示例的图。
加密密钥表64是对对象(程序)中使用的密钥(加密密钥)进行注册的表。S=1父程序在加密密钥被认证时将子程序中使用的经公共密钥加密的加密密钥与密钥属性一起注册到加密密钥表64。加密密钥仅在其被认证时才被注册到加密密钥表64。当它被注册时,父程序接收来自安全硬件的许可证信息。当加密密钥被注册在加密密钥表64中时,为了指示加密密钥可靠,S比特被设置为“1”。
在本实施例中,为一个对象(程序)、库和数据空间准备一个密钥。加密密钥表64的条目包括四个项目“密钥属性”(在图7的示例中为16比特)、“S比特(安全比特)”(在图7的示例中为1比特)、“密钥(加密密钥)”(在图7的示例中为256比特)以及“许可证信息(第一许可证信息)”(在图7的示例中为32比特)。在这些项目中,密钥属性和S比特可以由软件访问;但是,加密密钥和许可证信息不能被软件访问。
密钥属性是存储在一个条目中的加密密钥的属性(加密系统、密钥长度、块长度等)。S比特指示存储在一个条目中的加密密钥已被认证,并且如果密钥已被认证,S比特就被设置为“1”。加密密钥是用于程序加密的密钥。加密密钥不能被软件访问。许可证信息是在扩展/删除加密密钥空间时使用的持有者(父程序)确认号码。
这里说明加密密钥空间的扩展/删除。
加密密钥空间的扩展指示加密密钥空间的生成。在本实施例中,它指示用于加密密钥空间生成的密钥认证或密钥生成(在将加密密钥注册到加密密钥表64之后将条目注册到TLB/AMR扩展单元63)。加密密钥空间的消除指示加密密钥空间的临时或永久删除。在本实施例中,加密密钥空间的消除指示用于加密密钥空间删除的密钥保存或密钥删除(在从加密密钥表64删除加密密钥之后删除TLB/AMR扩展单元63的相关条目,或者通过删除之后的加密密钥访问造成的加密密钥表64和TLB/AMR扩展单元63之间的许可证信息失配,而使得TLB/AMR扩展单元63的与加密密钥表64的相关条目的清除到“0”的S比特相关联的相关条目无效)。
仅许可监督者和S=1程序访问新条目到加密密钥表64的注册。当许可证信息匹配时(程序中存储的许可证信息与加密密钥表64中注册的许可证信息匹配),仅许可监督者和S=1程序访问加密密钥空间的扩展/删除。
加密密钥表64的空条目是利用在处理器核心10中执行的程序来管理的。在本实施例中,条目的号码(条目号码)被用作分配给在加密密钥表64的条目中注册的加密密钥的号码(密钥ID)。
图8是描述安全管道60中提供的TLB/AMR扩展单元63的配置的图。
TLB/AMR扩展单元63包括用于将安全功能增强属性添加到处理器核心10的TLB/AMR的功能,并且被配置为与处理器核心10的TLB/AMR具有一一对应关系。因此,TLB/AMR扩展单元63的条目数目与处理器核心10的TLB/AMR的条目数目相同。具有许可证信息的父程序具有将TLB/AMR扩展单元63注册到条目的权利。
TLB/AMR扩展单元的条目包括三个项目“S比特”(在图8的示例中为1比特)、“密钥ID”(在图8的示例中为8比特)以及“许可证信息(第二许可证信息)”(在图8的示例中为16比特)。在这些项目中,S比特和密钥ID可以被软件访问;但是,许可证信息不能被软件访问。
密钥ID等于加密密钥表64的条目号码。S比特是在加密密钥表64的密钥ID的条目中注册的S比特的拷贝。在认证模式1中,S比特表示相关密钥(在加密密钥表的密钥ID的条目中注册的加密密钥)已被认证并且加密被请求。在认证模式2中,S比特表示相关密钥和相关页已被认证并且加密被请求。
“加密被请求”指示如果在处理器核心10发出加载/存储命令时访问地址涉及其中TLB/AMR扩展单元63的相应条目的S比特为“1”的TLB/AMR条目,则TLB/AMR的S比特也是“1”(因为TLB/AMR的S比特是TLB/AMR扩展单元63的相应条目的S比特的拷贝)。因此,当加载/存储命令从处理器核心10发出时,信号“S比特=1”同时也被发送到命令缓冲器61。如上所述,根据关于信号“S比特=1”同时被发送到命令缓冲器的命令,安全管道60被激活并启动加密过程。
本实施例包括这样一个配置,在这个配置中,当命令的访问地址指示存储器50中的地址时,如果S比特指示“1”的命令输入到命令缓冲器61,则加密过程被用安全硬件执行。如果S比特为“0”,则加密过程不被执行。本实施例还包括这样一个配置,在这个配置中,当命令的访问地址是安全硬件时,如果输入到命令缓冲器61的S比特指示“1”的命令指示“1”,则访问被许可,如果它是“0”,则访问不被许可(或者无意义的响应被返回)。
存储在处理器核心10中的许可证信息由与加密密钥表64的许可证信息相对应的32比特构成。对于对TLB/AMR扩展单元的访问,较低的16比特被使用。这例如用于减少数据和对TLB/AM扩展单元的高速访问。但是,它并不防止对整个许可证信息的使用。
图9A是处理器核心中包括的TLB/AMR的配置图。
处理器核心10的TLB/AMR 501的条目包括项目“有效”、“许可”、“虚拟地址(VA”)、“S比特”和“物理地址(PA)”。“有效”是指示条目是否有效的信息。“许可”是指示地址转换是否被许可(可读与否等)的信息。VA是作为利用条目进行的地址转换的目标的虚拟地址(逻辑地址)。PA是在VA的地址转换之后的物理地址。S比特是与图5A中说明的具有相同功能的比特,并且当地址转换被许可时,它与PA一起被输出到地址接口(图中未示出)。当访问属性中没有违规时,地址转换被许可。
从图9A和图1之间的比较明显可见,本实施例的处理器核心10的TLB/AMR501的特征是条目中的S比特。
图9B是示出处理器核心10的TLB/AMR501和安全管道60的TLB/AMR扩展单元63之间的关系的图。注意,图9左侧的CPU核心指示包括处理器核心10和二级缓存20的硬件。
本实施例的处理器核心10中包括的TLB/AMR501的S比特是在S比特被注册在安全管道60的TLB/AMR扩展单元63的相应条目中时拷贝的。拷贝是由安全硬件(安全块)生成的,不能由软件生成。当在处理器核心10的TLB/AMR中S比特被清除时(当S比特被设置为“0”)时,TLB/AMR扩展单元63中与该S比特相对应的S比特也被清除。这样,TLB/AMR扩展单元63的其中S比特被清除的条目变得无效。如果注册在加密密钥表64中的加密密钥被重写,则其中注册了加密密钥表64的加密密钥的许可证信息与TLB/AMR扩展单元63的加密密钥的密钥ID被设置到的条目的许可证信息失配(本实施例中是较低的16比特的失配)。从而,TLB/AMR扩展单元63的上述S比特被清除。
下面说明以上所述的许可证信息失配。当利用加密密钥进行的程序执行终止时,加密密钥被从加密密钥表64中去除,并且加密密钥的许可证信息也被从加密密钥表64中去除。因此,当在参考处理器核心10一方中的TLB/AMR的情况下访问存储器时,在许可证检查中,存储在TLB/AMR扩展单元63中的许可证信息与加密密钥表64中的相应许可证信息(存储在加密密钥表64的由TLB/AMR扩展单元63的相应密钥ID指定的条目中的许可证信息)失配。
存储许可证信息的父程序具有注册到TLB/AMR扩展单元63的条目的权利。如上所述,注册在TLB/AMR扩展单元63的条目中的密钥ID是加密密钥表64的条目号码。具有密钥ID的加密密钥(ENCKEY)是利用注册到TLB/AMR扩展单元63的条目的密钥ID从加密密钥表64提供到加密过程管道62的。
在本实施例的安全处理器中,加密密钥表64的管理是通过四个过程执行的,这四个过程是“密钥认证”、“密钥生成”、“密钥存储”和“密钥去除”。
图10A是示出密钥认证过程中的安全硬件的操作概况的式样图。
图10A所示的在安全硬件中执行的密钥认证过程的概况如下。
现说明密钥认证的控制工序。
(1)从加密密钥表64选择空条目。在本实施例的安全处理器中,处理器核心10中执行的程序管理加密密钥表64。例如可以通过在安全处理器的存储区域中实现加密密钥表64的管理表且并通过利用该程序管理该管理表,来实现管理。
(2)父程序将子程序的代码或数据的“密钥认证信息”(密钥签名(S1)、签名验证密钥(Kp2)以及签名验证密钥签名(S2))、“空条目号码”(加密密钥表64的空条目的条目号码)、“密钥属性”和“被公共密钥Kp1进行公共密钥加密的加密密钥Ks1”设置到在安全辅助装置的公共IF 81中提供的寄存器。换言之,如图10A所示,密钥签名、签名验证密钥和签名验证密钥签名分别被设置到公共IF 81中的寄存器811、812和813。空条目号码和密钥属性分别被设置到公共IF 81中的寄存器814和815。此外,“被公共密钥Kp1加密的加密密钥(私密密钥)Kc”被设置到寄存器817。
(3)父程序将“认证启动命令”设置到公共IF81中的命令寄存器816。这样,启动了安全辅助装置80,并且利用安全硬件执行密钥认证过程(硬件密钥认证过程)。硬件密钥认证过程是由安全辅助装置80中的安全控制器82(认证状态机)执行的。在认证状态机执行硬件密钥认证过程的同时,父程序处于密钥认证过程的终止等待状态中。
(4)认证状态机分别从公共IF81的寄存器811-813读取密钥签名、签名验证密钥和签名验证密钥签名,并且利用上述信息和在其自己的块中的认证列表87中排序的路径密钥来执行密钥认证。路径密钥是处于认证的最高级别的密钥,在图4D的示例中,公共密钥Kp3是路径密钥。认证是在路径密钥被正确递送的情况下执行的,因此,路径密钥是像硬件一样设计的,以便不会被改变。
(5)当密钥认证过程终止时,认证状态机输出向公共密钥操作单元83(84)指示过程结果的信号。当上述密钥认证正确终止时,认证状态机分别从公共IF81的寄存器814和815读取空条目号码和密钥ID,将加密密钥表64的由空条目号码指定的条目的S比特设置为“1”,并且将上述密钥属性设置到该条目。认证状态机还将指示密钥认证结果的认证状态设置到公共IF81的认证状态寄存器818。
(6)公共密钥操作单元83(84),如果从认证状态机输入的密钥认证结果指示一个指示认证状态机的密钥认证正确终止的信号,则经公共密钥加密的加密密钥Kc被私密密钥Ks1解密(图中未示出),被存储在路径密钥821中,并且经解密的加密密钥Kc被设置到加密密钥表64的条目。公共密钥操作单元83(84)还启动随机数生成器86。
(7)随机数生成器86将生成的许可证信息(32比特)设置到加密密钥表64的条目,并将许可证信息设置到公共IF81的许可证寄存器819。
(8)当加密密钥表64按上述方式被更新时,安全辅助装置80将“密钥认证过程终止”中断通知给父程序。
(9)父程序从公共IF81的认证状态寄存器818读取认证状态。如果密钥认证被确认,并且密钥认证正确,则许可证信息被从公共IF81的许可证寄存器819获得,并且被存储。
{认证模式1的密钥认证过程}图10B是示出认证模式1中的认证过程的工序的流程图。
在图10B的右侧示出的软件过程指示由处理器核心10执行的程序的过程工序。在图10B的左侧示出的硬件过程指示由安全辅助装置80的安全控制器82执行的过程工序。
程序搜索加密密钥表64的空条目(S11),并将空条目的条目号码(空条目号码)、密钥认证信息(密钥签名、签名验证密钥、签名验证密钥签名)和密钥属性设置到安全辅助装置80的公共IF81的寄存器(S12)。
接下来,程序将认证启动命令设置到公共IF81的命令寄存器816(S13),并进入等待状态,等待来自安全辅助装置80的中断(S14)。
在步骤S13中,利用被设置到命令寄存器816的认证启动命令,安全辅助装置80中的安全控制器82启动认证状态机(S15)。认证状态机并行运行以下四个过程利用路径密钥(签名验证密钥)对签名验证密钥签名进行解密的过程(S16),用于向签名验证密钥应用散列操作的过程(S17),利用签名验证密钥对密钥签名进行公共密钥解密的过程(S18)以及用于向密钥(经公共密钥加密的密钥)应用散列操作的过程(S19)。
认证状态机将步骤S16的过程结果与步骤S17的相比较(S20),并且还将步骤S18的过程结果和步骤S19的相比较(S21)。然后,确定步骤S20的比较结果是成功还是失败(S22),以及比较步骤S21的比较结果是成功还是失败(S23)。如果步骤S22或S23中的任何一个失败,则“差错状态”被设置到公共IF81的认证状态寄存器818(S24)。另一方面,如果步骤S22和S23都成功,则同时启动两个过程用于利用硬件私密密钥对经公共密钥加密的密钥进行解密的过程(公共密钥解密)(S26)和用于启动随机数生成器86的过程。
当步骤S26中的过程终止时,认证状态机将过程中获得的密钥、设置到公共IF81的寄存器815的密钥属性以及为“1”的S比特设置到加密密钥表64中由设置到公共IF81的寄存器814的空条目号码指定的条目(指定条目)(S28)。在步骤S29中,由随机数生成器86生成的许可证信息被设置到加密密钥表64的指定条目和公共IF81的许可证寄存器819(S29)。
当步骤S28和步骤S29的两个过程都终止时,认证状态机将“成功状态”设置到公共IF81的认证状态寄存器818(S30)。
当步骤S24或步骤S30的过程终止时,认证状态机向处理器核心10生成中断(S31)。
利用上述中断生成,在处理器核心10中执行的父程序中发生中断(S32)。父程序一旦接收到中断,就从安全辅助装置80的公共IF81的认证状态寄存器818获得状态信息,并且确定认证模式1中的密钥认证是成功还是失败(S33)。当确定认证成功时,许可证信息被从安全辅助装置80的公共IF81的许可证寄存器819中读出,并且被存储在预定存储区域中(S34)。然后密钥认证终止(S35)。
{认证模式2的密钥认证过程}图10C是示出认证模式2中的认证过程的工序的流程图。
在认证模式2中,除了代码加密密钥的认证之外,还执行页验证。页验证是利用安全DMA70的散列操作功能执行的。
在图10C中,执行与图10B中的步骤相同的过程的步骤具有相同的步骤号码。在下面对图10C的流程图的说明中,只阐述与图10B的流程图的过程工序不同的过程工序,或者换言之,认证模式1中不包括的、认证模式2独有的过程工序。
当父程序执行步骤S11-S13的过程时,并且认证启动命令被设置到安全辅助装置80的公共IF81的命令寄存器816时,认证模式2的认证状态机(以下称为认证状态机)被安全辅助装置80中的安全控制器82启动(S45)。
认证状态机除了图10B的步骤S16-S19的四个过程之外,还并行地启动用于利用签名验证密钥对页签名进行公共密钥解密的过程(S46),并且启动安全DMA70的过程(S47)。
安全DMA70向页的指令代码或数据应用散列操作,其中步骤S47的页签名被执行,安全DMA70并且将操作结果输出到安全控制器82(认证状态机)(S48)。
认证状态机将步骤S46中获得的结果与步骤S48中获得的结果相比较,并且确定两个结果是匹配(页验证成功)还是失配(页验证失败)(S50)。然后,确定步骤S22和S23的所有页验证结果和认证结果是否都成功。如果所有结果都成功,则步骤S26和步骤S28的过程被并行启动。随后执行图10B中说明的步骤S28-S31的过程,并且向处理器核心10通知中断。
如上所述,除了认证模式1认证之外,在认证模式2中还执行页验证,并且检验页是否是伪造的。
{密钥生成过程}在本实施例的密钥生成过程中,用于加密的密钥被生成,并且密钥被注册在加密密钥表64中。通过密钥生成,拥有生成的密钥的程序的数据空间被生成,并受到保护。
图11A是示出密钥生成过程中的安全硬件的操作概况的式样图。下面描述图11A所示的安全硬件中执行的密钥生成过程的概况。
(1)处理器核心10中执行的程序(软件)被加密密钥表64的空条目所选择。
(2)程序将“空条目号码”和“密钥属性”分别设置到安全辅助装置80的公共IF81的寄存器814和815。
(3)程序将“密钥生成命令”设置到公共IF81的命令寄存器816。这样,安全控制器82的密钥生成状态机(密钥生成STM)被启动,并且密钥生成状态机执行密钥生成过程。
(4)密钥生成状态机启动随机数生成器86,并且使随机数生成器86生成“密钥”和“许可证信息”。
(5)随机数生成器86将生成的许可证信息设置到公共IF81的许可证寄存器819,并且将该信息注册到加密密钥表64的具有该空条目号码的条目。随机数生成器86将生成的密钥输出到密钥生成状态机。
(6)当密钥从随机数生成器86输入时,密钥生成状态机将该密钥注册到加密密钥表64的条目,并且条目的S比特被设置为“1”。密钥生成状态机还从公共IF81的寄存器815读取密钥属性,并且将密钥属性注册到加密密钥表64的条目。
(7)密钥生成状态机以上述方式终止密钥生成过程,并且将指示密钥生成过程是否成功的状态信息设置到生成状态寄存器820,并且利用中断将密钥生成过程的终止通知给程序。
图11B是指示由本实施例的安全处理器执行的密钥生成过程的详细工序的流程图。利用处理器核心10中执行的程序的软件过程在图11B右侧的虚线框中示出,利用安全辅助装置80中的安全控制器82的硬件过程在图11B的左侧示出。
由处理器核心10执行的程序搜索加密密钥表64的空条目(S61),并将通过搜索获得的空条目的条目号码(空条目号码)和密钥属性设置到安全控制器82的公共IF81的寄存器814和815(S62)。接下来,程序将密钥生成命令设置到命令缓冲器61的公共IF81的命令寄存器816(S63),并且变成等待来自安全辅助装置80的中断的等待状态(S64)。
在步骤S63中,利用设置到命令寄存器816的密钥生成命令,在安全控制器82中启动生成状态机(S65)。
生成状态机并行启动密钥生成和许可证信息生成的两个过程(S66),启动随机数生成器86(S67),并且启动随机数生成器86(S68)。随机数生成器86执行上述两个并行过程。在这种情况下,可以改变配置,从而提供两个随机数生成器86,并且步骤S67中的密钥生成的过程和步骤S68中的许可证信息生成的过程由两个随机数生成器86共享。
当步骤S67的过程结束时,生成状态机将在步骤S67中获得的“密钥”、设置到公共IF81的寄存器815的“密钥属性”以及设置为“1”的S比特注册在加密密钥表64的由空条目号码指定的条目(指定条目)中(S69)。当步骤S68的过程结束时,在步骤S68中生成的许可证信息(32比特)被注册在加密密钥表64的指定条目中。此外,从随机数生成器86输出的许可证信息被设置到公共IF81的许可证寄存器819(S70)。
当步骤S69和步骤S70的过程都结束时,生成状态机将“成功状态信息”设置到生成状态寄存器820(S71)。然后,生成状态机向在处理器核心10中执行的程序生成和输出中断(S72)。
当中断被输入时(S73),处理器核心10中的处于等待中断状态的程序读取设置到安全辅助装置80的公共IF81的生成状态寄存器820的状态信息并且确定利用生成状态机进行的密钥生成是否成功(S74)。当确定密钥已生成成功时,程序从安全辅助装置80的公共IF81的许可证寄存器819读取许可证信息(32比特),将该信息存储在规定的区域中(S75),并且正常终止密钥生成过程(S76)。
另一方面,在步骤S74中,当确定利用生成状态机进行的密钥生成已失败时,程序以差错终止的方式终止密钥生成过程(S77)。
如上所述,在通过链接处理器核心10中执行的程序和安全硬件而执行的密钥生成过程中,密钥及其许可证信息被生成,并且这两者可以与被设置为“1”的S比特一起被注册在加密密钥表64的空条目中。程序可以维护注册在加密密钥表64中的密钥的许可证信息。
{密钥存储过程}图12A是示出用于执行本实施例的安全处理器的密钥存储过程的硬件机构的框图。
现说明图12A所述的硬件机构进行的密钥存储过程的工序的概况。在密钥存储过程中,处理器核心10中执行的程序存储在加密密钥表64中注册的密钥。此时,除了密钥以外,密钥的认证信息(密钥签名、签名验证密钥和签名验证密钥签名)也被存储。密钥是在公共密钥加密之后被存储的。
(1)由安全处理器执行的程序把要存储的加密密钥的号码(存储的密钥ID)和密钥的许可证信息分别设置到安全辅助装置80的公共IF81中的寄存器814和许可证寄存器819。
(2)程序将密钥存储命令设置到公共IF81中的命令寄存器816。
(3)存储状态机(安全控制器82)通过将设置到公共IF81的许可证寄存器819的许可证信息与设置到加密密钥表64的由存储的密钥ID指定的条目(指定条目)的许可证信息相比较,来启动和执行许可证检查。
(4)如果在许可证检查中许可证信息一致,则存储状态机启动公共密钥操作单元83(84)。公共密钥操作单元83(84)利用从存储状态机输入的路径密钥821(公共密钥Kp1)对注册在加密密钥表64的指定条目中的密钥Kc(加密密钥)进行加密,并且将被公共密钥Kp1加密的密钥Kc(经公共密钥加密的密钥)设置到寄存器817。成功状态被设置到存储状态寄存器822。
(5)存储状态机通过中断将密钥存储过程的终止通知给程序。
图12B是示出利用本实施例的安全处理器进行的密钥存储过程的工序的流程图。由利用处理器核心10执行的程序进行的软件过程在图12B右侧的虚线框中示出,由安全辅助装置80的安全控制器82进行的硬件过程在图12B左侧的虚线框中示出。
程序把要存储的密钥ID(存储的密钥ID)和密钥的许可证信息分别设置到安全控制器82的公共IF81中的寄存器814和许可证寄存器819(S81)。程序将存储命令设置到公共IF81中的命令寄存器816(S82),并且进入等待来自存储状态机的中断的状态(S83)。
通过设置存储命令,在安全控制器82中存储状态机被启动(S84)。启动的存储状态机通过将设置到公共IF81中的许可证寄存器819的许可证信息与注册在加密密钥表64的由存储密钥ID指定的条目(指定条目)中的许可证信息相比较,来执行许可证检查(S85)。
存储状态机确定许可证检查的结果(S86),如果许可证检查成功(两个许可证信息匹配)则读取注册到加密密钥表64的指定条目的密钥,并将密钥输出到公共密钥操作单元83(84)。存储状态机把与路径密钥821中的私密密钥Ks1(图中未示出)形成一对的公共密钥Kp1输出到公共密钥操作单元83(84)。公共密钥操作单元83(84)利用公共密钥Kp1对输入的密钥(加密密钥)Kc进行加密,并且被公共密钥Kp1加密的密钥Kc(经公共密钥加密的密钥)被设置到公共IF 81中的寄存器817(S87)。
存储状态机将由公共密钥操作单元83(84)生成的经公共密钥加密的认证信息(密钥签名、签名验证密钥和签名验证密钥签名)设置到寄存器811-813(S88)。存储状态机从加密密钥表64去除指定条目,并且将成功状态设置到公共IF81中的存储状态寄存器822(S90)。
同时,如果确定在步骤S86中许可证检查的结果失败,则存储状态机将差错状态设置到存储状态寄存器822(S91)。
当步骤S90或步骤S91终止时,存储状态机将中断通知给处理器核心10中执行的程序(S92)。
当来自存储状态机的中断发生时(S93),程序从公共IF81中的存储状态寄存器822读取状态信息,并且基于该状态信息,确定利用存储状态机进行的密钥存储过程是否成功(S94)。如果成功,则程序从公共IF81中的寄存器817读取被经公共密钥加密的密钥(公共密钥Kp1)加密的密钥Kc9,从寄存器811-813读取认证信息(密钥签名、签名验证密钥和签名验证密钥签名),将它们存储在规定的存储区域中(S95),然后密钥存储终止(S96)。另一方面,如果失败,则过程以差错终止的方式终止(S97)。
如上所述,处理器核心10中执行的程序通过利用密钥存储命令与安全硬件链接来获得和存储在安全管道60的加密密钥表64中注册的密钥(只采取经公共密钥加密的形式)以及认证信息。
{密钥去除过程}图13A是示出本实施例的安全处理器的密钥去除过程中的安全硬件的操作概况的式样图。
密钥去除过程的概况按以下工序执行。
(1)安全处理器中执行的程序把要去除的密钥的密钥ID(去除密钥ID)设置到安全辅助装置80的公共IF81的寄存器814,并且密钥的许可证信息被设置到许可证寄存器819。
(2)程序将密钥去除命令设置到命令寄存器816。
(3)通过设置密钥去除命令来启动安全辅助装置80的安全控制器82(去除状态机)。去除状态机82激活许可证检查单元65。许可证检查单元65将设置在公共IF81的许可证寄存器819中的许可证信息与注册在加密密钥表64的由去除密钥ID指定的条目中的许可证信息相比较,并且确定信息是否匹配(许可证检查)。
(4)在许可证检查确定许可证信息匹配之后,许可证检查单元65去除加密密钥表64的由去除密钥ID指定的条目(指定密钥的条目)。
(5)许可证检查单元65利用中断将密钥去除过程的终止通知给程序。
图13B是示出利用本实施例的安全处理器进行的密钥去除过程的工序的流程图。利用处理器核心10中执行的程序的软件过程在图13B右侧的虚线框中示出。在图13B左侧的虚线框内示出了由安全辅助装置80中的安全控制器82(去除状态机)的控制执行的硬件过程工序。
程序把要去除的密钥的ID(去除密钥ID)和密钥的许可证信息(16比特)分别设置到安全控制器82的公共IF81中的寄存器814和许可证寄存器819(S101)。程序将去除命令设置到公共IF81中的命令寄存器816(S102),并且进入等待状态,等待来自去除状态机的中断(S103)。
通过设置去除命令,在安全控制器82中去除状态机被启动(S104)。启动的去除状态机通过将设置到公共IF81中的许可证寄存器819的许可证信息与注册在加密密钥表64的由去除密钥ID指定的条目(去除指定条目)中的许可证信息相比较,来执行许可证检查(S105)。
去除状态机确定许可证检查的结果(S106)。如果许可证检查成功(两个许可证信息匹配),则加密密钥表64的去除指定条目被去除(S107),然后成功状态被设置到公共IF81中的去除状态寄存器824(S108)。
同时,如果确定在步骤S106中许可证检查的结果失败,则去除状态机将差错状态设置到去除状态寄存器824(S109)。
当步骤S108或步骤S109终止时,去除状态机将中断通知给处理器核心10中执行的程序(S110)。
当来自去除状态机的中断发生时,程序从公共IF81中的去除状态寄存器824读取状态信息,并且基于该状态信息确定利用去除状态机进行的密钥去除过程是否成功(S121)。如果成功,则密钥去除终止(S113)。如果去除状态机失败,则过程以差错终止的方式终止(S114)。
如上所述,在处理器核心10中操作的程序通过将去除命令设置到安全控制器82的公共IF81来联系安全硬件去除在加密密钥表64中注册的密钥。
存在TLB/AMR扩展单元63的三个基本操作。
TLB/AMR条目注册这是具有在加密密钥表64中注册的密钥的许可证的程序(经认证的程序)使该密钥链接到自己的空间的TLB/AMR扩展单元63的操作。该操作包括更新TLB/AMR扩展单元63的已注册的条目信息。
TLB/AMR条目去除这是单独去除TLB/AMR扩展单元63的链接到在加密密钥表64中注册的密钥的条目的操作。该操作也可以通过覆写TLB/AMR扩展单元63的条目,或者通过从加密密钥表64去除条目来执行。当加密密钥表64的密钥被去除时,TLB/AMR扩展单元63的链接到该密钥的条目在对TLB/AMR扩展单元63的下次访问时被删除。
TLB/AMR条目无效这是在注册在TLB/AMR扩展单元63的条目中的密钥的许可证信息与注册在加密密钥表64的链接到该条目的条目中的密钥的许可证信息不匹配,或者处理器核心10的TLB/AMR的S比特、TLB/AMR扩展单元63的S比特和加密密钥表64的S比特不匹配时使TLB/AMR扩展单元63的可应用条目(TLB/AMR的安全扩展功能)无效的操作。
{TLB/AMR条目注册}参考图14A和图14B说明TLB/AMR条目注册操作的过程。图14A是示出通过链接处理器核心10的软件过程和利用安全辅助装置80中的安全控制器82进行的硬件过程而执行的TLB/AMR条目注册操作的过程工序的流程图。软件过程在图14A左侧的虚线框中示出,硬件过程在图14A右侧的虚线框中示出。图14B是示出TLB/AMR注册操作的过程中的安全硬件的操作的式样图。
当TLB/AMR差错发生时(S120),处理器核心10中使用的程序(经认证的程序)执行现有TLB/AMR差错过程(S121)。现有TLB/AMR差错过程的细节是公知的知识,因此本说明书中省略对其的说明。
程序从程序管理信息获得密钥ID和许可证信息(存储的32比特中较低的16比特)(S122),并将发生TLB/AMR差错的TLB/AMR的条目号码(TLB/AMR注册条目号码)、密钥ID、许可证信息和注册命令(TLB/AMR扩展单元的条目注册命令)设置到安全辅助装置80的公共IF81中的相关寄存器(S123)。然后,程序进入等待安全控制器82的注册状态机的更新的状态(S124)。
通过步骤S123的过程,如图14B所示,在公共IF81中,TLB/AMR注册号码(TLB/AMR注册条目号码)被设置到寄存器825、注册的密钥ID被设置到寄存器814、许可证信息被设置到许可证寄存器819,并且注册命令被设置到命令寄存器816。
当在步骤S123中注册命令被设置到命令寄存器816时,注册状态机被安全辅助装置80中的安全控制器82启动。
注册状态机将设置到公共IF81的寄存器819的许可证信息的较低的16比特与注册在由TLB/AMR条目号码指定的条目中的许可证信息的较低的16比特相比较(S126),并且确定两者是否匹配(S127)。
许可证信息的比较由安全管道60的许可证检查单元65执行,如图14B所示。
注册状态机,如果步骤S127中的许可证检查成功(两个许可证信息匹配),密钥ID以及由TLB/AMR扩展单元的TLB/AMR条目号码指定的许可证信息被更新。由加密密钥表64的密钥ID指定的条目(已注册的密钥条目)的S比特被拷贝到条目的S比特(S128)。
参考图14B说明步骤S128的过程中的安全硬件的操作。许可证检查单元65比较许可证信息(许可证检查)并将比较结果(许可证检查结果)输出到与门单元830。当许可证信息匹配时,许可证检查单元65输出信号“1”(成功)。当两个许可证信息不匹配时,它向与门单元830输出信号“0”(失败)。加密密钥表64的已注册的密钥条目的S比特(信号)也被输出到与门单元830。与门单元830将两个信号的比较结果输出到由设置到TLB/AMR扩展单元63的寄存器825的TLB/AMR条目号码指定的条目(注册指定条目)和处理器核心10。这样,如果许可证检查成功,则注册在加密密钥表64中由密钥ID指示的条目中的S比特在不经修改的情况下被输出到TLB/AMR扩展单元63的注册指定条目和处理器核心10。S比特被拷贝到TLB/AMR扩展单元63的注册指定条目的S比特存储区域(TLB/AMR扩展单元63中的S比特更新)。注册在加密密钥表64中的S比特还经由S比特信号线91被输出到处理器核心10。处理器核心10把从S比特信号线91输入的S比特拷贝到TLB/AMR的相关条目(与经S比特更新的TLB/AMR扩展单元63的注册指定条目相对应的条目)的S比特存储区域中,并且更新TLB/AMR的相关条目的S比特。
当步骤S128的过程结束时,注册状态机将成功状态设置到公共IF81中的注册状态寄存器827(S129)。当确定步骤S127中的许可证信息比较结果失败时,差错状态被设置到注册状态寄存器827(S130)。
当处理器核心10中执行的程序确定安全辅助装置80的公共IF81中实现的注册状态寄存器827的更新完成时,它检查设置到注册状态寄存器827的状态。当确定TLB/AMR注册成功时,TLB/AMR注册终止(S132)。当确定TLB/AMR注册失败时,操作以差错终止的方式终止(S133)。
如上所述,设置在加密密钥表64中的密钥的密钥ID、许可证信息和S比特被设置到TLB/AMR扩展单元63的与密钥的经加密空间相对应的条目。密钥ID链接加密密钥表64和TLB/AMR扩展单元63的相应条目。设置到TLB/AMR扩展单元63的条目的S比特被拷贝到处理器核心10的TLB/AMR的相应条目。结果,处理器核心10的TLB/AMR的条目(设置到加密密钥表64的密钥的经加密空间的地址转换信息被设置到的条目)的S比特与在安全处理器的安全管道60中实现的TLB/AMR扩展单元63的相应条目的S比特被设置为相同的值。
{TLB/AMR条目去除}参考图15A和图15B说明TLB/AMR条目去除操作的过程。
图15A是示出通过链接处理器核心10的软件过程和利用安全辅助装置80中的安全控制器82的硬件过程而执行的TLB/AMR条目去除操作的过程工序的流程图。软件过程在图15A左侧的虚线框中示出,硬件过程在图15A右侧的虚线框中示出。图15B是示出TLB/AMR去除操作的过程中的安全硬件的操作的式样图。
在TLB/AMR去除过程被启动时(S140),处理器核心10中执行的程序(经认证的程序)执行现有的TLB/AMR去除过程(S141)。现有TLB/AMR去除过程的细节是公知的知识,因此本说明书中省略对其的说明。
程序从程序管理信息获得许可证信息(存储的32比特中较低的16比特)(S142),并把要去除的TLB/AMR的条目号码(TLB/AMR去除条目号码)、许可证信息和去除命令(TLB/AMR扩展单元的条目去除命令)设置到安全辅助装置80的公共IF81中的相关寄存器(S143)。然后,程序进入等待安全控制器82的去除状态机的更新的状态(S144)。
在公共IF81中,利用步骤S143中的过程,TLB/AMR条目号码(TLB/AMR去除条目号码)被设置到寄存器826、许可证信息被设置到许可证寄存器819,并且去除命令被设置到命令寄存器816,如图15B所示。
当在步骤S143中去除命令被设置到命令寄存器816时,安全控制器82启动去除状态机(S145)。
去除状态机将设置到公共IF81的寄存器819的许可证信息的较低16比特与注册在TLB/AMR扩展单元63的由TLB/AMR去除条目号码指定的条目中的许可证信息的较低16比特相比较(S146),并且确定信息是否匹配(S147)。
许可证信息比较由安全管道60的许可证检查单元65执行,如图15B所示。
如果在步骤S147中许可证检查成功(许可证信息匹配),则去除状态机去除TLB/AMR扩展单元的由TLB/AMR去除条目号码指定的条目(S148)。
参考图15B说明步骤S148的过程中的安全硬件操作。许可证检查单元65比较两个许可证信息(许可证检查),并且如果两者匹配,则去除TLB/AMR扩展单元63的由设置到寄存器825的TLB/AMR条目号码指定的条目。
当步骤S148的过程结束时,去除状态机将成功状态设置到公共IF81中的去除状态寄存器828(S149)。当确定步骤S147中的许可证信息比较结果失败时,去除状态机将差错状态设置到去除状态寄存器828(S150)。
当处理器核心10中执行的程序确定安全辅助装置80的公共IF81中实现的去除状态寄存器828的更新完成时,程序检查设置到去除状态寄存器828的状态。当确定TLB/AMR去除过程成功时,TLB/AMR去除终止(S152)。当确定TLB/AMR去除失败时,程序以差错终止的方式终止该过程(S153)。
如上所述,处理器核心10中执行的经认证的程序能够通过利用去除命令和许可证信息单独地去除TLB/AMR扩展单元63的与注册在加密密钥表64中的密钥相链接的条目。
{TLB/AMR条目无效}图16是示出利用本实施例的安全处理器进行的TLB/AMR条目无效操作的式样图。
处理器核心10和TLB/AMR扩展单元63的TLB/AMR条目是通过将S比特清除到“0”来无效的。为了使条目生效,需要对条目进行重新注册。
安全处理器在以下(1)或(2)的情况下执行条目无效操作。
(1)如果处理器核心10的TLB/AMR的条目的S比特、对应于上述TLB/AMR条目的TLB/AMR扩展单元63的条目的S比特以及链接到TLB/AMR扩展单元63的条目的加密密钥表64的条目的S比特不匹配。
这发生在以下条件下-当密钥被从加密密钥表64的条目去除时-当处理器核心10的TLB/AMR的条目的S比特被清除到“0”时-当处理器核心10的TLB/AMR的条目被去除时(2)如果TLB/AMR扩展单元63的条目的许可证信息与链接到TLB/AMR扩展单元63的条目的加密密钥表64的条目的许可证信息不匹配。
这发生在以下条件下-当密钥被从加密密钥表64的条目去除时-当与加密密钥表64的条目指定的密钥不同的密钥被注册时本实施例的安全处理器利用提供到安全硬件的许可证检查单元65、S比特匹配检查单元831以及执行下述操作的或门单元832来实现TLB/AMR条目的无效操作。
当处理器核心10中执行的程序执行总线访问时,与被访问的存储器空间相对应的TLB/AMR的条目号码(TLB/AMR条目号码)和该条目的S比特被输出到安全硬件。
安全硬件的许可证检查单元65把在TLB/AMR扩展单元63的与从处理器核心10输入的TLB/AMR条目号码相对应的条目中注册的许可证信息的较低16比特与在加密密钥表64的由注册在TLB/AMR扩展单元63的上述条目中的密钥ID指定的条目中注册的许可证信息的较低16比特相比较。如果两者不匹配,则失配检测信号(第一失配检测信号)被输出到或门单元832。
安全硬件的S比特匹配检查单元831把从处理器核心10输入的S比特,在TLB/AMR扩展单元63的与从处理器核心10输入的TLB/AMR条目号码相对应的条目中注册的S比特以及在加密密钥表64的由注册在TLB/AMR扩展单元63的上述条目中的密钥ID指定的条目中注册的S比特彼此相比较。如果这些S比特失配,则失配检测信号(第二失配检测信号)被输出到或门单元832。
或门单元832对从许可证检查单元65和S比特匹配检查单元831输入的两个失配检测信号执行或操作。当第一或第二失配检测信号被输入时,它将TLB/AMR扩展单元63的相关条目(TLB/AMR扩展单元63的与从处理器核心10输入的TLB/AMR条目号码相对应的条目)的S比特清除到“0”,并且指导处理器核心10将输出到安全硬件的S比特清除到“0”。
图17是示出当处理器核心10中执行的程序发出数据写命令时安全管道60的操作的图。图17左侧的带虚线的矩形框示出当数据写命令被发出时从CPU核心15输出的数据和信息。
当处理器核心10中执行的程序发出数据写命令时,要被写的输出数据151(明文数据)被输出到加密过程管道62,并且输出数据的写地址152和命令属性153(在该情况下属性表明该命令是数据写命令)被输出到命令缓冲器61。处理器核心10中输出数据151的写地址所属的存储器空间的地址转换信息被设置到的TLB/AMR条目号码以及它的S比特被输出到安全管道60。
在安全管道60中,利用与图16中说明的相同的操作,分别在许可证检查单元65和S比特匹配检查单元831中执行许可证信息和S比特失配检查。许可证检查单元65和S比特匹配检查单元831中的每一个向或门单元841输出一个失配检测信号。或门单元841对两个失配检测信号执行或操作,像图16的或门单元832中那样向TLB/AMR扩展单元63输出TLB/AMR扩展单元63的条目无效信号,该信号是0活动的,同时或门单元841还向密钥提供控制单元842输出密钥提供许可信号,该信号是1活动的。当两个失配检测信号非活动时(当许可证检查单元65的许可证检查中许可证信息匹配,并且S比特匹配检查单元831的S比特匹配检查中所有S比特都一致为“1”时),密钥提供许可信号变得活动。
在输入来自或门单元841的活动的密钥提供许可信号之后,密钥提供控制单元842从加密密钥表64的相关条目读出密钥(加密密钥),并将该密钥输出到加密过程管道62。此时,密钥属性被从加密密钥表64的相关条目读出,并被提供到加密过程管道62和命令缓冲器61。加密过程管道62基于密钥属性和从密钥提供控制单元842提供来的加密密钥对输出数据151进行加密,并且将经加密的数据输出到本地总线30。命令缓冲器61临时存储从CPU核心15输入的地址152和命令属性153。它们是在考虑到从加密过程管道62输出的经加密数据的延时的适当时刻(timing)基于从加密密钥表64输入的密钥属性被输出到本地总线30的。输入到本地总线30的经加密的数据,地址152和命令属性153被从本地总线30输出到SDRAMC 40。
图18是示出当处理器核心10中执行的程序发出数据/指令读命令时安全管道60的操作的图。图18左侧的带虚线的矩形框示出了当数据/指令读命令被发出时从CPU核心15输出的数据和信息。
当数据/指令读命令被发出时安全管道60的操作与数据写指令被发出时基本相同。不同之处在于加密过程管道62基于从密钥提供控制单元842提供来的密钥(加密密钥)和从加密密钥表64输入的密钥属性来对由SDRAMC40读取的数据或指令代码(经加密的)进行解密。另一个不同之外是通过解密获得的明文数据或指令代码被输出到CPU核心15,作为输入数据156。
从CPU核心15输出的地址157是数据或指令读地址。命令属性158是数据/指令读命令的属性信息。它们被从CPU核心15输出到命令缓冲器61,并且被从命令缓冲器61输出到本地总线30。
图19是示出利用本实施例的安全处理器进行的程序执行控制的图。图19顶部的带虚线的矩形框代表指令(代码)空间,底部的矩形框代表数据空间。
图19示出在OS引导后三个程序被启动的示例。
在引导时,如上所述,OS利用被结合在安全处理器中的内置密钥认证的安全引导程序来执行OS内核(指令代码)的密钥认证。当OS引导时,OS内核执行密钥生成过程,保护数据空间,并且生成供其自己使用的数据空间(图19(1))。接下来,OS内核利用来自程序1的认证信息执行密钥认证,以启动程序1(图19(A))。被密钥认证所认证的程序1的指令代码密钥被存储在加密密钥表64中,直到程序1终止为止。在程序1终止时,OS内核执行程序1的指令代码的密钥去除(图19(E))。
由于程序1在其操作部分中要求其自己的数据空间,因此它通过密钥生成来生成数据空间,并且在使用数据空间之后、程序终止之前执行密钥去除(图19(2)和(6))。
与数据空间生成和去除相关联的密钥注册和密钥去除可以由诸如程序1这样的在经认证的空间中操作的程序(它是子程序)来处理,或者,可以向OS内核请求与数据空间生成和去除相关联的密钥注册和密钥去除以进行替换过程。
程序3执行与程序1相同的过程(图19(C)、(4)、(8)和(G))。程序2是程序由于某种原因临时停止时的示例。程序2的启动和结束与程序1和3的相同。但是,在利用OS内核的指令的临时停止过程部分中(图19(D)和(F)),指令代码的密钥被存储在加密密钥表64中,而不被去除。在临时停止过程部分中,数据密钥由密钥生成过程生成,并且由密钥存储过程存储(图19(5))。当执行继续开始时,利用密钥信息执行密钥认证过程(图19(7)),并且重新使用在数据密钥生成时(图19(3))生成的数据空间。
上述实施例具有这样一种配置,在该配置中,通过向处理器核心10的TLB/AMR条目提供S比特,并且通过在处理器发出指令代码时将指令代码所属的空间的S比特输出到安全硬件,确定指令代码是否被安全硬件所认证。但是,不一定要向处理器核心10的TLB/AMR条目提供S比特,并且可以有例如这样一种配置,在该配置中,当执行处理器核心10中的指令代码时,安全管道60接收来自处理器核心10的其中存在指令代码的地址,并且确定指令代码是否被认证。
权利要求
1.一种安全处理器,其对经加密的指令代码进行解密,并且执行所述指令代码,该安全处理器包括处理器核心,用于执行通过对所述经加密的指令代码进行解密而获得的所述指令代码;在由所述处理器核心执行的程序不能访问的位置中实现的安全总线;以及连接到所述安全总线的安全硬件,用于执行对利用所述处理器核心执行的所述经加密的指令代码的认证,并且执行对所述经加密的指令代码以及所述处理器核心从外部输入/输出到外部的数据的加密/解密。
2.根据权利要求1所述的安全处理器,其中所述安全硬件包括用于存储内置密钥的存储装置,所述安全硬件被由所述内置密钥加密的安全引导程序所启动;并且所述安全引导程序充当由所述安全处理器执行的指令代码认证的起始点。
3.根据权利要求2所述的安全处理器,其中所述安全硬件包括连接到所述安全总线的安全管道,用于执行对所述经加密的指令代码和所述处理器核心从外部输入/输出到外部的数据的加密/解密。
4.根据权利要求3所述的安全处理器,其中所述安全管道仅对所述处理器核心中执行的经认证的程序许可对经认证的数据空间的访问。
5.根据权利要求2所述的安全处理器,其中所述安全硬件包括连接到所述安全总线的安全辅助装置,用于经由公共接口将命令和信息发送到所述处理器核心中执行的程序或从所述处理器核心中执行的程序接收命令和信息,并且还用于执行公共密钥系统加密过程和公共密钥系统认证过程。
6.根据权利要求2所述的安全处理器,包括连接到所述安全总线的安全直接存储器访问,包括直接存储器访问传送功能,用于执行对由所述直接存储器访问传送功能传送的指令代码或数据的页验证。
7.根据权利要求6所述的安全处理器,其中所述安全直接存储器访问包括加密过程装置,用于执行通用密钥密码系统加密过程;以及散列过程装置,用于向所述直接存储器访问传送区域中的数据应用散列过程。
8.根据权利要求2所述的安全处理器,其中所述安全硬件包括连接到所述安全总线的安全管道,用于对所述经加密的指令代码和所述处理器核心从外部输入/输出到外部的数据执行加密/解密;连接到所述安全总线的安全辅助装置,用于经由公共接口将命令和信息发送到所述处理器核心中执行的程序或从所述处理器核心中执行的程序接收命令和信息,并且用于执行公共密钥系统加密过程和公共密钥系统认证过程;以及包括直接存储器访问传送功能并连接到所述安全总线的安全直接存储器访问,用于执行对由所述直接存储器访问传送功能传送的指令代码或数据的页验证,并且所述安全辅助装置经由所述安全总线执行对所述安全管道和所述安全直接存储器访问的设置/控制。
9.根据权利要求8所述的安全处理器,其中所述安全管道包括加密密钥表,其具有加密密钥、所述加密密钥的许可证信息以及用于注册第一标志的条目,所述第一标志指示所述加密密钥是否可靠;翻译后援缓冲器/地址映射寄存器扩展装置,其具有与所述处理器核心的翻译后援缓冲器/地址映射寄存器一一对应的条目,用于在所述条目中注册在所述加密密钥表中注册的加密密钥的标识信息、第二标志以及许可证信息,所述第二标志是在所述加密密钥表的由所述加密密钥标识信息指定的条目中注册的第一标志的拷贝;许可证检查装置,用于检验在所述翻译后援缓冲器/地址映射寄存器扩展装置的条目中注册的许可证信息是否与在所述加密密钥表的由注册在所述翻译后援缓冲器/地址映射寄存器扩展装置的条目中的加密密钥标识信息指定的条目中注册的许可证信息相匹配。
10.根据权利要求9所述的安全处理器,其中所述处理器核心的翻译后援缓冲器/地址映射寄存器的条目包括与所述翻译后援缓冲器/地址映射寄存器扩展装置的第二标志具有相同功能的第三标志。
11.根据权利要求10所述的安全处理器,其中当所述许可证检查装置确定所述许可证信息彼此匹配时,将所述第三标志的值更新为所述第二标志的值。
12.根据权利要求9所述的安全处理器,其中所述加密密钥表的空条目由所述处理器核心中执行的程序管理。
13.根据权利要求9所述的安全处理器,其中所述安全辅助装置包括第一寄存器,其中命令可被所述处理器核心中执行的程序设置到所述第一寄存器;以及第二寄存器,其中许可证信息可被所述程序设置到所述第二寄存器。
14.根据权利要求13所述的安全处理器,其中所述安全辅助装置包括用于生成加密密钥的加密密钥生成装置,用于在密钥生成命令被设置到所述第一寄存器时生成要被注册在所述加密密钥表的空条目中的密钥;许可证信息生成装置,用于生成由所述加密密钥生成装置生成的加密密钥的许可证信息;以及第三寄存器,其可被所述程序访问,用于存储由所述许可证信息生成装置生成的许可证信息。
15.根据权利要求13所述的安全处理器,其中所述安全辅助装置包括公共密钥操作装置,用于在密钥存储命令被设置到所述第一寄存器时对在所述加密密钥表中注册的与设置到所述第二寄存器的许可证信息相对应的加密密钥进行公共密钥加密;以及第三寄存器,其可被所述程序访问,用于存储被所述公共密钥操作装置进行公共密钥加密的加密密钥。
16.根据权利要求8所述的安全处理器,其中所述安全硬件包括密钥认证装置,用于认证指令代码的经公共密钥加密的密钥;许可证信息生成装置,用于在所述经公共密钥加密的密钥被所述密钥认证装置认证时生成所述经公共密钥加密的密钥的许可证信息;密钥解密装置,用于在所述经公共密钥加密的密钥被所述密钥认证装置认证时对所述经公共密钥加密的密钥进行解密,并且由所述许可证信息生成装置生成的许可证信息被向所述认证装置请求认证的所述处理器核心中执行的程序所存储,并且被所述密钥解密装置解密的密钥被注册到所述加密密钥表。
17.根据权利要求16所述的安全处理器,其中所述密钥认证装置基于所述经公共密钥加密的密钥的属性、所述经公共密钥加密的密钥的密钥签名、所述密钥签名的签名验证密钥以及所述签名验证密钥的签名验证密钥签名,来执行对所述公共密钥加密密钥的认证。
18.根据权利要求8所述的安全处理器,其中所述安全硬件包括密钥认证装置,用于认证指令代码的经公共密钥加密的密钥;页验证装置,用于以页为单位验证所述指令代码;许可证信息生成装置,用于在所述经公共密钥加密的密钥被所述密钥认证装置认证并且所述指令代码的页被所述页验证装置验证时,生成所述经公共密钥加密的密钥的许可证信息;以及密钥解密装置,用于在所述经公共密钥加密的密钥被所述密钥认证装置认证并且所述指令代码的页被所述页验证装置验证时,对所述经公共密钥加密的密钥进行解密,并且由所述许可证信息生成装置生成的许可证信息被向所述认证装置请求认证的所述处理器核心中执行的程序所存储,并且被所述密钥解密装置解密的密钥被注册到所述加密密钥表。
19.根据权利要求18所述的安全处理器,其中所述密钥认证装置基于所述经公共密钥加密的密钥的属性、所述经公共密钥加密的密钥的密钥签名、所述密钥签名的签名验证密钥、以及所述签名验证密钥的签名验证密钥签名,来执行对所述公共密钥加密密钥的认证,并且所述页验证装置基于所述指令代码的页签名来执行页验证。
20.根据权利要求19所述的安全处理器,其中所述处理器核心只执行被所述页验证装置验证的指令代码。
全文摘要
一种安全硬件包括安全管道、安全DMA、安全辅助装置和连接在这些块之间的安全总线。安全管道在加密密钥表中存储通用加密密钥以便不能从软件访问。安全DMA包括数据通用密钥系统过程功能和散列过程功能。安全辅助装置包括通用密钥系统过程功能和认证过程功能,经由公共IF接收从由处理器核心执行的程序发出的命令,并且经由安全总线执行对安全管道和安全DMA的设置/控制。
文档编号G06F1/00GK101026455SQ200610103979
公开日2007年8月29日 申请日期2006年7月28日 优先权日2006年2月22日
发明者后藤诚司 申请人:富士通株式会社