虚拟机内存完整性保护方法、装置、电子设备及存储介质制造方法及图纸

技术编号:33644583 阅读:21 留言:0更新日期:2022-06-02 20:20
本发明专利技术的实施例公开了一种虚拟机内存完整性保护方法、装置、电子设备及存储介质,涉及内存访问技术领域,用于对内存隔离型虚拟机的内存提供内存完整性保护,避免虚拟机内的内存数据被非法篡改。所述虚拟机内存完整性保护方法包括:当向DRAM内写入数据时,将数据进行加密,得到密文;确认待写入的数据对应的地址为隔离内存时,计算密文的MAC值,将密文和MAC值保存至DRAM内;当读取数据时,将待读取的数据进行解密,得到明文;将明文发送给CPU;确认待读取的数据对应的地址为隔离内存时,从DRAM获取待读取的数据对应的已存储的原始MAC值,并计算待读取的数据的新MAC值,比较原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号。产生异常信号。产生异常信号。

【技术实现步骤摘要】
虚拟机内存完整性保护方法、装置、电子设备及存储介质


[0001]本专利技术涉及内存访问
,尤其涉及一种虚拟机内存完整性保护方法、装置、电子设备及存储介质。

技术介绍

[0002]近年来,一些新的硬件漏洞被发现,比如DRAM rowhammer(行锤)。该漏洞使得隔离虚拟机(Virtual Machine,VM)的内存可以在一定条件下被篡改,影响系统业务。由于DRAM(Dynamic Random Access Memory,动态随机存取存储器)半导体本身的工艺缺陷,相邻的存储单元之间存在寄生电容,电子迁移或者热载流子注入等,会导致相邻的存储单元的电荷发生变化,导致存储的数据错误。如图1,A0、A1为相邻的两个存储单元,但A0属于普通内存,A1属于隔离内存。若A0地址刷新频繁,将会导致A1的数据发生变化,故攻击者可以利用A0普通内存,篡改隔离的保护内存。故内存隔离型虚拟机需要内存完整性保护功能。
[0003]目前,基于安全处理器的内存隔离型虚拟机(如图1),缺少内存完整性保护功能,虚拟机内的内存数据存在被非法篡改的可能性。

技术实现思路

[0004]有鉴于此,本专利技术实施例提供一种能够避免虚拟机内的内存数据被非法篡改的虚拟机内存完整性保护方法、装置、电子设备及存储介质。
[0005]第一方面,本专利技术实施例提供一种虚拟机内存完整性保护方法,应用于电子设备的内存控制器,所述电子设备包括CPU、所述内存控制器、DRAM以及安全处理器,所述电子设备内设有至少一个内存隔离型虚拟机,所述方法包括:
[0006]当所述CPU经过所述内存控制器为所述内存隔离型虚拟机向所述DRAM内写入数据时,将待写入的数据进行加密,得到密文;
[0007]确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内;
[0008]当所述CPU经过所述内存控制器为所述内存隔离型虚拟机从所述DRAM读取数据时,将待读取的数据进行解密,得到明文;
[0009]将所述明文发送给所述CPU;
[0010]确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号。
[0011]结合第一方面,在第一方面的一种实施方式中,所述MAC值采用哈希运算消息认证码算法计算得到;
[0012]和/或,所述MAC密钥是在所述内存隔离型虚拟机启动时由所述安全处理器为所述内存隔离型虚拟机随机生成得到。
[0013]结合第一方面,在第一方面的另一种实施方式中,所述电子设备内设置有用于控制内存完整性保护功能是否使能的标识位;
[0014]所述确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内,进一步为:
[0015]根据所述标识位判断内存完整性保护功能是否使能;
[0016]若内存完整性保护功能使能且确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,则利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内;
[0017]所述确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号,进一步为:
[0018]根据所述标识位判断内存完整性保护功能是否使能;
[0019]若内存完整性保护功能使能且确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,则从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号。
[0020]结合第一方面,在第一方面的再一种实施方式中,所述当所述CPU经过所述内存控制器为所述内存隔离型虚拟机向所述DRAM内写入数据时,将待写入的数据进行加密,得到密文之前包括:
[0021]当所述内存隔离型虚拟机访问内存虚拟机物理地址GPA发生嵌套缺页时,接收主机发送的嵌套缺页异常通知,所述嵌套缺页异常通知中包含待访问的GPA,由所述安全处理器确认所述待访问的GPA属于隔离内存时,所述安全处理器为所述内存隔离型虚拟机分配隔离内存对应的主机物理地址HPA,发送初始化所述HPA的内存页面的初始化请求,并更新虚拟机嵌套页表;
[0022]收到所述安全处理器的初始化请求后,利用预先存储的MAC密钥计算初始化数据的MAC值,将该初始化数据和MAC值保存至所述DRAM内。
[0023]第二方面,本专利技术实施例提供一种虚拟机内存完整性保护装置,应用于电子设备的内存控制器,所述电子设备包括CPU、所述内存控制器、DRAM以及安全处理器,所述电子设备内设有至少一个内存隔离型虚拟机,所述装置包括:
[0024]加密模块,用于当所述CPU经过所述内存控制器为所述内存隔离型虚拟机向所述DRAM内写入数据时,将待写入的数据进行加密,得到密文;
[0025]保存模块,用于确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内;
[0026]解密模块,用于当所述CPU经过所述内存控制器为所述内存隔离型虚拟机从所述DRAM读取数据时,将待读取的数据进行解密,得到明文;
[0027]发送模块,用于将所述明文发送给所述CPU;
[0028]比较模块,用于确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号。
[0029]结合第二方面,在第二方面的一种实施方式中,所述MAC值采用哈希运算消息认证码算法计算得到;
[0030]和/或,所述MAC密钥是在所述内存隔离型虚拟机启动时由所述安全处理器为所述内存隔离型虚拟机随机生成得到。
[0031]结合第二方面,在第二方面的另一种实施方式中,所述电子设备内设置有用于控制内存完整性保护功能是否使能的标识位;
[0032]所述保存模块,进一步包括:
[0033]第一判断子单元,用于根据所述标识本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种虚拟机内存完整性保护方法,应用于电子设备的内存控制器,所述电子设备包括CPU、所述内存控制器、DRAM以及安全处理器,所述电子设备内设有至少一个内存隔离型虚拟机,其特征在于,所述方法包括:当所述CPU经过所述内存控制器为所述内存隔离型虚拟机向所述DRAM内写入数据时,将待写入的数据进行加密,得到密文;确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内;当所述CPU经过所述内存控制器为所述内存隔离型虚拟机从所述DRAM读取数据时,将待读取的数据进行解密,得到明文;将所述明文发送给所述CPU;确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号。2.根据权利要求1所述的方法,其特征在于,所述MAC值采用哈希运算消息认证码算法计算得到;和/或,所述MAC密钥是在所述内存隔离型虚拟机启动时由所述安全处理器为所述内存隔离型虚拟机随机生成得到。3.根据权利要求1所述的方法,其特征在于,所述电子设备内设置有用于控制内存完整性保护功能是否使能的标识位;所述确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内,进一步为:根据所述标识位判断内存完整性保护功能是否使能;若内存完整性保护功能使能且确认所述待写入的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,则利用预先存储的MAC密钥计算所述密文的MAC值,将所述密文和MAC值保存至所述DRAM内;所述确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号,进一步为:根据所述标识位判断内存完整性保护功能是否使能;若内存完整性保护功能使能且确认所述待读取的数据对应的地址为所述内存隔离型虚拟机的隔离内存时,则从所述DRAM获取所述待读取的数据对应的已存储的原始MAC值,并利用所述MAC密钥计算所述待读取的数据的新MAC值,比较所述原始MAC值和新MAC值,若相等,则说明数据完整,若不相等,则说明数据被篡改,产生异常信号。4.根据权利要求1

3中任一所述的方法,其特征在于,所述当所述CPU经过所述内存控制器为所述内存隔离型虚拟机向所述DRAM内写入数据时,将待写入的数据进行加密,得到密文之前包括:
当所述内存隔离型虚拟机访问内存虚拟机物理地址GPA发生嵌套缺页时,接收主机发送的嵌套缺页异常通知,所述嵌套缺页异常通知中包含待访问的GPA,由所述安全处理器确认所述待访问的GPA属于隔离内存时,所述安全处理器为所述内存隔离型虚拟机分配隔离内存对应的主机物理地址HPA,发送初始化所述HPA的内存页面的初始化请求,并更新虚拟机嵌套页表;收到所述安全处理器的初始化请求后,利用预先存储的MAC密钥计算初始化数据的MAC值,将该初始化数据和MAC值保存至所述DRAM内。5.一种虚拟机内存完整性保护装置,应用于电子设备的内存控制器,所述电子设备包括CPU、所述内存控制器、DRAM以及安全处...

【专利技术属性】
技术研发人员:姜新应志伟刘子行
申请(专利权)人:海光信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1