一种内存数据加解密的方法与流程

文档序号:13422398阅读:3625来源:国知局
一种内存数据加解密的方法与流程

本发明涉及数据加密技术领域,具体涉及一种内存数据加解密的方法。



背景技术:

随着现代计算机系统的复杂性越来越高,以及最近几年出现的云计算和大数据等新兴技术对计算环境安全性要求的提高,业界普遍意识到需要从计算机系统的底层硬件上完全支持数据的加密功能。其中,美国的cpu设计和制造厂商超威半导体公司提出了安全内存加密(sme)技术(具体参见[1]amdmemoryencryptionwhitepaper;[2]处理系统中信息的密码保护(专利:cn106062768a))。这种技术在现有cpu硬件的基础上加入了内存加密模块,从而使得数据被加密后再写到内存中;当cpu需要读取数据时,加密模块自动将加密的数据进行解密,整个过程对上层的软件来说是完全透明的。这种方法可以有效地抵御针对存储器的物理攻击、因软件缺陷导致的隔离失效等引起的数据泄露问题。但是,这种方法由于加密的安全密钥在系统上运行后一直保持不变,所以容易导致恶意攻击者针对加密方法的弱点实施密码攻击与破解。作为sev([1]amdmemoryencryptionwhitepaper)方案的基础,sme存在的上述安全风险在sev的使用场景中显得尤其明显。

图1给出了传统sme方案的结构图,通过在内存模块存取路径中采用硬件加密模块2将安全信息隔离。其中加密模块2位于内存控制模块3中,并且向处理器模块1提供针对每个存取是否是安全存取的指示。图中的加密密钥是在系统上电时自动生成的,并且在整个系统运行过程中保持不变,这就容易导致恶意攻击者针对加密方法的弱点实施密码攻击与破解。



技术实现要素:

本发明提供了一种内存数据加解密的方法,解决了加密密钥保持不变而导致的恶意攻击的问题。

本发明提供一种内存数据加解密的方法,所述方法包括:

s1、处理器模块发送密钥更新请求至加密模块,所述加密模块收到请求后产生新的密钥;

s2、对内存中的每一个被加密的内存页,加密模块用旧密钥对与之对应的内存页数据解密,并使用所述新密钥分别对每一个解密后的页面数据重新加密。

其中,步骤s1之前还包括:操作系统检查处理器模块当前状态,如果所述处理器模块忙则直接退出;

如果处理器模块处于空闲状态,则将操作系统挂起,不接受任何其他进程的输入输出操作,并执行上述步骤s1和s2。

此外,上述步骤成功执行后,操作系统返回“成功”;如果上述步骤有错误出现,操作系统返回“错误”并结束更新过程。

其中,步骤s1还包括加密模块将新密钥保存至内存控制器模块中的寄存器或其内部eeprom中。

其中,步骤s1中处理器模块通过密钥更新接口实现发送密钥更新请求至加密模块。

优选地,步骤s1中处理器模块通过新的机器指令,或者控制器固件(fw)提供新的应用程序编程接口实现发送密钥更新请求至加密模块。

通过使用本发明提供的一种内存数据加解密的方法,不仅可以有效地降低针对sme技术加密密钥保持不变带来的恶意攻击,从而显著提高内存加密的安全性;而且提供了安全方案的灵活性,用户和系统可以根据需要动态更新加解密的密钥。

附图说明

图1为传统sme方案的结构示意图;

图2为一种通过动态更新加密密钥从而增加内存加密安全性的系统结构示意图;

图3为本发明实施例提供的一种内存数据加解密的方法流程图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

如图2及3所示,本发明提供一种内存数据加解密的方法,所述方法包括:

s1、处理器模块1发送密钥更新请求至加密模块2,所述加密模块收到请求后产生新的密钥;

s2、对内存中的每一个被加密的内存页,加密模块2用旧密钥对与之对应的内存页数据解密,并使用所述新密钥分别对每一个解密后的页面数据重新加密。

通过使用本发明提供的一种内存数据加解密的方法,不仅可以有效地降低针对sme技术加密密钥保持不变带来的恶意攻击,从而显著提高内存加密的安全性;而且提供了安全方案的灵活性,用户和系统可以根据需要动态更新加解密的密钥。

由于加密密钥的更新会导致内存中当前加密数据的失效,所以密钥更新成功后需要将内存中的加密数据解密,然后再用新的密钥重新做加密存储。当系统处于满负荷运行的状态下时,系统会有大量的数据存放在内存中。如果此时去更新密钥,将会消耗很长的时间去解密/加密内存中的数据,这会导致系统在很长一段时间不可用。

因此,在本发明一个优选实施例中,步骤s1之前还包括:操作系统检查处理器模块1当前状态,如果所述处理器模块1忙则直接退出;

如果处理器模块1处于空闲状态,则将操作系统挂起,不接受任何其他进程的输入输出操作,并执行上述步骤s1和s2。

通过使用本发明提供的一种内存数据加解密的方法,不仅可以有效地降低针对sme技术加密密钥保持不变带来的恶意攻击,从而显著提高内存加密的安全性;而且提供了安全方案的灵活性,用户和系统可以根据需要动态更新加解密的密钥。

此外,上述步骤成功执行后,操作系统返回“成功”;如果上述步骤有错误出现,操作系统返回“错误”并结束更新过程。

步骤s1还包括加密模块将新密钥保存至内存控制器模块中的寄存器或其内部eeprom中。

图2中给出了一种通过动态更新加密密钥从而增加内存加密安全性的系统。该系统通过在处理器模块1和加密模块2之间通过密钥更新接口(如图3中虚线所示接口,实现形式包括硬件指令update_mem_key、加密模块fw提供新的api等),从而支持加密密钥的动态更新功能。加入该功能后,操作系统就可以在合适的时刻向加密模块2发送密钥更新请求从而生成新的加密密钥。此外,步骤s1中处理器模块1通过新的机器指令,或者控制器固件(fw)提供新的应用程序编程接口(api)实现发送密钥更新请求至加密模块2。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上该的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有2条留言
  • 访客 来自[中国] 2020年08月21日 17:43
    这论文写得不合理也没有证据,还能这样写论文的
    0
  • 访客 来自[中国] 2020年08月21日 17:42
    0
1