背景技术
通用计算机、专用计算机与通信装置可以作为机密或专用数据的数字通信平台,计算机行业持续发展新的安全技术,以保证这些装置的安全使用。在许多微处理器应用中,保护信息安全是重要的特征。
考虑当前主流计算机架构(例如,X86)所提供的两个主要安全特性:分页虚拟存储器(paged virtual memory)以及执行特权分级(privileged execution)。
在启用分页虚拟存储器的情况下,基本的操作***对每一个存储器页面分别定义一个虚拟地址空间以及存取权限(例如只执行、只读取)给每一个被执行的应用程序,以此阻止另一恶意的应用程序在所定义的区域内执行,且阻止其修改数据。但是,由于与虚拟地址相关(即页表)的数据存在于***存储器(Main Memory)处,且其出现于主机微处理器外的***总线上,因此数据可轻易地被查看且被改变。
在启用执行特权分级的情况下,所述架构提供数种级别的执行特权(例如,X86架构中的CPL0至CPL3)。因此,某些***资源与指令,只可由正在较高特权级别上执行的程序来存取。通常操作***组件运行在最高特权级别 (例如,CPL0),用户应用运行在最低特权级别(例如,CPL3)。但是,熟知此技术领域的人士都知道,这些架构特征主要是发展来阻止软件错误所导致的***错误,且在防止有意或经指导的侵入(directed hacks)方面而言不是非常有效。
因此已发展出多种方法与装置,其更仔细地集中防止对平台的有意侵入与接管。在中国专利公开号106062768中,大卫·A·卡普兰示出一种存储器数据加密技术,其通过在存储器存取请求过程中使用存储器地址的标记作为密码指示,在数据存储至存储器时对数据执行加密,在数据取出时对数据执行解密。在此实施例中,应用密码技术中使用的密钥对于用户是不可存取的,从而保证数据的安全。
任何密码技术都存在被攻击的风险。通常业界会在短时间内(例如,1 小时)变更密钥以提高密码技术的抗攻击能力。在卡普兰示出的技术方案中,应用密码技术的密钥在机器启动后至关机(或复位)前是唯一的,且在较长的一段时间(例如,3个月)内是不变的。由于现代密码技术的算法是公开的,即使不公开实施方案,通过攻击手段也可以获得应用细节,如果一个密钥被长时间使用,就会存在信息泄露,而使用时间越长泄露的信息就会越多,并且风险就会越大。当恶意攻击者收集到足够的信息后,即使没有攻破现代密码技术中使用的密钥,卡普兰示出的技术也将形同虚设,任何存储在所述存储器中的加密数据(通常包含需要保护的敏感信息)都将存在泄露的风险。
发明内容
本发明提供了一种存储器控制器、处理器模块及密钥更新方法,降低密钥长时间不变带来的风险。
第一方面,本发明提供一种存储器控制器,所述存储器控制器包括加密模块和地址转换模块,
所述地址转换模块用于根据密钥更新请求中的虚拟地址转换成存储器页面对应的物理地址,所述加密模块通过第一密钥对所述物理地址对应的存储器页面进行解密并通过第二密钥对所述存储器页面进行加密。
优选地,所述加密模块还设置有引用计数器,所述引用计数器用于记录与第一密钥对应解密的存储器页面和/或第二密钥对应加密的存储器页面。
优选地,所述地址转换模块根据地址维护页表将所述虚拟地址转换成对应的物理地址。
优选地,所述存储器控制器工作模式包括保护模式开启、保护模式激活或保护模式关闭。
优选地,所述物理地址中设置有存储器页面相对应的密钥标记位,所述密钥标记位用于标记所述存储器页面是否加密。
优选地,所述物理地址中设置有存储器页面对应的密钥选择位,所述密钥选择位用于加密所述存储器页面。
优选地,所述加密模块用于所述存储器页面加密或解密后更新地址维护页表中的密钥选择位、密钥标记位、虚拟地址以及与虚拟地址对应的物理地址。
优选地,所述加密模块还用于将加密后的存储器页面发送至存储器。
第二方面,本发明还提供一种密钥更新方法,所述方法包括:
加密模块发送密钥更新请求;以及
地址转换模块用于根据密钥更新请求中的虚拟地址转换成存储器页面对应的物理地址,所述加密模块通过第一密钥对所述物理地址对应的存储器页面进行解密并通过第二密钥对所述存储器页面进行加密。
第三方面,本发明还提供一种处理器模块,所述处理器模块包括;
如上所述的存储器控制器;以及
处理器。
通过使用本发明提供的存储器控制器,降低密钥长时间不变带来的风险。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,本发明实施例提供的一种存储器控制器21,所述存储器控制器包括加密模块23和地址转换模块22。
所述地址转换模块22用于根据密钥更新请求中的虚拟地址转换成存储器页面对应的物理地址,所述加密模块23通过第一密钥对所述物理地址对应的存储器页面进行解密并通过第二密钥对所述存储器页面进行加密。
在本发明实施例中,所述地址转换模块根据地址维护页表将所述虚拟地址转换成对应的物理地址。如图2所示,所述物理地址中设置有存储器页面相对应的密钥标记位,所述密钥标记位用于标记所述存储器页面是否加密。所述物理地址中设置有存储器页面对应的密钥选择位,所述密钥选择位用于加密所述存储器页面。
在本发明实施例中,如图2所示,地址维护页表中具有物理地址与虚拟地址的映射,并且页表可能是多级页表,可以通过检查页表页面来识别物理地址,其中首先访问最低级页表页面以便识别下一级别处的待访问的页表页面,依此类推,直到识别出包括物理地址的最高级页表并且从那个最高级页表中检索到物理地址。最高级页表还存储指示对应于所述物理地址的数据是否将以密码方式受到保护的密钥标记位,以及所述物理地址的数据所选择进行加密和解密的密钥选择位。
在本发明实施例中存储器页面密钥更新涉及用户使用的被密码保护的所有存储器页面,针对每个存储器页面,更新密钥流程启动后,操作***首先对使用所述密钥的存储器页面进行锁定,使得所述***中的其它组件不能访问所述存储器页面。将检查所述存储器页面是否被所述***中的其它组件使用,如果没有被其它组件使用,则可以认为所述页面上不包含任何有效数据,更新所述***维护的页表中所述存储器页面的密钥选择位,解锁所述存储器页面;当所述存储器页面被所述***中的其它组件使用时,需要将所述存储器页面中的数据使用第一密钥执行解密得到明文数据,再将所述明文数据使用更新后的第二密钥执行加密得到新的密文数据,再将所述新的密文数据写入所述存储器页面。更新所述***维护的页表中所述存储器页面的密钥选择位,然后解锁所述存储器页面。优选地,所述加密模块23还用于将加密后的存储器页面发送至存储器。
在一些实施例中,密钥更新的触发条件被设置为***空闲时(例如,处理器使用率小于5%),选择在***低负载时执行密钥更新流程可以降低对***整体的数据吞吐性能的影响。在又一实施例中,密钥更新的触发条件被设置为在一个时间区间内随机选择时间点执行密钥更新流程,这样可以提高***的不可预测性,以提高攻击者的攻击成本,从而提高***对抗攻击的能力。密钥更新的过程可以拆分为若干独立的子过程,加密模块23维护存储器页面的密钥使用与更新记录。
优选地,所述加密模块还设置有引用计数器,所述引用计数器用于记录与第一密钥对应解密的存储器页面和/或第二密钥对应加密的存储器页面。对于所有需要更新的被密码保护的存储器页面,每个子过程更新其中的一部分并维护更新记录使其保持一致,当所有的子过程执行完毕后,所有需要更新的存储器都被更新完毕。子过程不限数量,因而密钥更新的过程是可以随意分割的。在密钥更新过程中,有可能被其他事件打断,当从其他事件返回继续执行的过程中,需要记录所有需要更新的页面,这个记录是由引用计数器维护的。最小单位为一个存储器页面。
本发明实施例提供的存储器控制器缩短了应用密码技术中的密钥的生命周期,降低了相关安全信息泄露造成的风险。在***中,密钥更新的触发条件是暴露给用户的,由用户根据其自身的安全策略的需要而设置,密钥的控制权交到了用户手中,为用户的信息安全管控提供了额外的保障方法,使得信息的安全性得到进一步的增强。
所述存储器控制器21工作模式包括保护模式开启、保护模式激活或保护模式关闭。配合相应的操作***以及相关软件操作,保护模式即可激活。当保护模式开启后,加密模块23才能对数据进行加密或解密处理。当保护模式关闭后,加密模块23停止工作,加密模块23不能对数据进行相应的加密或解密处理。
本发明实施例还提供一种密钥更新方法,所述方法包括:
地址转换模块22根据密钥更新请求中的虚拟地址转换成存储器页面对应的物理地址,所述加密模块23通过第一密钥对所述物理地址对应的存储器页面进行解密并通过第二密钥对所述存储器页面进行加密。
图3-4示出用于能够识别存储器存取请求的安全类型,例如,安全或非安全。需要说明的是安全存取指的是使用密钥保护的存储器页面,非安全指的是未使用密钥保护的存储器页面。
如图3-4所示,在处理器模块(包括核11以及12)与存储器31或32 存取路径中,采用硬件加密模块23以密码方式将非安全信息隔离,来保护处理器模块处的安全。图3-4示出在一些实施例中,加密模块23位于处理器模块的存储器控制器21处,并且向存储器控制器21提供的每个存储器31或32 存取指示所述存取是否安全存储器存取,从而指示与所述存储器存取相关联的信息是被指定用于密码保护的安全存储器存取,或是非安全存储器存取。对于安全存储器存取,所述加密模块23对与所述存储器存取相关联的所述数据执行加密(针对写入存取)或解密(针对读取存取)。因为加密是在处理器模块的存储器存取路径中的硬件完成的,所以在没有正确的加密/解密密钥的情况下并不能对存储在存储器处的数据进行有意义的存取。
图3-4示出采用多个密钥以提供保护处理器模块的安全信息的增强型技术。在本发明实施例中,当处理器模块产生的存储器存取请求被存储器控制器21响应时,加密模块23向存储器控制器21提供的每个存储器存取指示所述存取是安全存储器存取,或是非安全存储器存取。所述存储器控制器21根据所述加密模块23的指示选择不同的密钥(例如,图4示出的第一密钥以及第二密钥),对存储在存储器31或32中的数据执行密码保护。所以在没有正确的加密/解密密钥的情况下,并不能对存储在存储器处的数据进行有意义的存取。
如图3及4所示,当处理器模块执行数据存取时,处理器模块将生成一个存储器存取请求。地址转换模块22根据请求中的虚拟地址识别其对应的物理地址。地址转换模块22是一般被配置来从处理器模块核心中的一个或两个接收针对对应存储器存取请求的虚拟地址的模块。地址转换模块22将每个所接收的虚拟地址转换为对应的物理地址,所述物理地址标识作为处理器模块存取请求的目标的存储器的位置。
处理器模块对地址识别的结果查询高速缓存中是否包括目标物理地址的条目,如果已经包括目标物理地址的条目,则在高速缓存处存取所需要的存储器数据;如果不包括目标物理地址的条目,则将指示高速缓存缺失,并将存储器存取请求提供给存储器控制器21。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器模块执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程 ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上该的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。