一种物理内存访问控制与隔离方法与流程

文档序号:13421501阅读:996来源:国知局
本发明涉及物理内存访问控制与隔离方法,尤其是涉及一种添加物理页面属性实现虚拟机内任务级别的物理内存访问控制与隔离方法。
背景技术
::amd公司的sev技术可以实现对虚拟机所使用的物理内存进行加密。加密的密钥只有安全处理器能够访问,不同的虚拟机所用的密钥不同,虚拟机和管理程序所用的密钥也不相同,因此可以保证虚拟机的内存不能被其他的虚拟机或者管理程序访问。这种基于加密来实现的内存保护存在3个主要的安全隐患:1)如果攻击者破解了加密算法那么保护就会完全失效或算法实现存在某些漏洞导致保护强度的降低;2)数据缺乏完整性保护,攻击者可以修改加密的数据而cpu无法实时动态检测出数据发生的变化;3)虚拟机内部的任务之间使用相同的密钥,因此加密的数据对于虚拟机内部的任务是透明的,攻击者仍然可以利用虚拟机的漏洞访问应该被保护的数据。技术实现要素:本发明主要一种物理内存访问控制与隔离方法,通过为每个物理页面增加物理页面属性表来实现对虚拟机内存访问的控制与隔离,通过这种方法来增加安全性。页面属性中包含当前页面所属的虚拟机id,因此只有页面的拥有者虚拟机能够访问此物理页面;同时页面属性中还包含了使用当前页面的任务信息,因此同一虚拟机内的其他任务无法访问此物理页面。为实现上述目的,本发明提供一种物理内存访问控制与隔离方法,方法包括:根据虚拟机中的任务发出的内存访问请求,得到该虚拟机的第一拥有者信息(vmid)、所述任务的第一任务信息(tid)。根据请求产生的虚拟地址查找系统页表,找到虚拟地址对应的物理地址。查找物理页面属性表,并获取与物理地址对应的第二拥有者信息(vmid)和第二任务信息(tid)。至少根据第一拥有者信息(vmid)、第一任务信息(tid)、第二拥有者信息(vmid)和第二任务信息(tid),确定是否允许内存访问。优选地,确定是否允许内存访问的步骤包括:判断第一拥有者信息(vmid)和第二拥有者信息(vmid)是否相等。如果判断为否,拒绝访问;如果判断为是,继续判断第一任务信息(tid)和第二任务信息(tid)是否相等。如果判断为否,拒绝访问。优选地,上述方法还包括:根据内存访问请求,获取第一页面线性地址信息(laddr)。第一页面线性地址信息(laddr)是根据请求的虚拟地址所产生的。通过查找物理页面属性表,获取第二页面线性地址信息(laddr),第二页面线性地址信息是由安全处理器写入到物理页面属性表中。在第一拥有者信息(vmid)和第二拥有者信息(vmid)相等,且第一任务信息(tid)和第二任务信息(tid)相等的情况下,判断第一页面线性地址信息(laddr)和第二页面线性地址信息(laddr)是否相等。判断为是,则允许访问;判断为否,则拒绝访问。优选地,物理页面属性表中包含多个条目,每个条目记录一个物理页面对应的拥有者信息(vmid)、任务信息(tid)和页面线性地址信息(laddr)。优选地,拥有者信息(vmid)、任务信息(tid)和页面线性地址信息(laddr)只有安全处理器能够设置,防止虚拟机管理程序篡改页面的安全属性进而非法访问虚拟机的数据。发明为物理页面添加物理页面属性表,属性中包含页面的拥有者信息(vmid)、任务信息(tid)和页面线性地址信息(laddr),其他的虚拟机由于具有不同的vmid因此对此页面的访问会被拒绝;当前虚拟机内的其他任务由于具有不同的tid对此页面的访问会被拒绝;恶意程序如果通过篡改地址的映射关系来访问此物理页面,由于具有不同的laddr对此页面的访问也会被拒绝。因此本发明可以很好地解决虚拟化平台中虚拟机管理程序、虚拟机内部其他任务以及当前任务的非法代码对当前任务数据的非法访问。附图说明图1一种物理内存访问控制与隔离方法流程图。具体实施方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。在内存管理领域,cpu以页面(page)为单位管理内存,页面的大小比如可以为4k或者2mbytes,在cpu内运行的任务/虚拟机使用的是虚拟地址,虚拟地址经过页表(pagetable)映射到物理地址之后才能被cpu访问。页表属性用来描述当前页面的信息,比如r/w属性表示页面是否可读写或者只读,nx属性表示页面是否可以执行。为了实现虚拟机内存访问的控制与隔离,在本发明的实施例中,我们为每个物理页面增加物理页面属性表(pageframeattributetable)。在运行时,虚拟机如果需要访问内存,首先根据虚拟机的虚拟地址查询系统原有的页表得到真实的物理地址,再通过物理地址查询新增的物理页面属性表,表项里含有页面的拥有者信息vmid(virtualmachineid),如果是拥有者虚拟机想要访问当前页面,vmid匹配则允许访问;而其他的虚拟机或者管理程序想要访问此页面,由于vmid不匹配cpu拒绝此次访问。为了防止同一个虚拟机内部的其他任务非法访问当前任务的数据,我们在页面属性中增加任务信息tid(taskid)。进一步优选地,为了防止恶意程序通过篡改虚拟地址和物理地址的映射关系进行攻击,我们在页面属性中增加页面线性地址信息laddr(linearaddress)。安全处理器为任务分配tid,并且将tid和页面线性地址laddr写入页面的页面属性。如果是当前任务想要访问此页面,tid匹配并且页面的映射关系没有被篡改则允许访问,否则拒绝访问;而当前虚拟机内的其他任务想要访问此页面,由于tid不匹配cpu拒绝此次访问。基于以上思路,本发明的实施例提供一种物理内存访问控制与隔离方法,下面结合附图描述该方法的执行过程。如图1所示,在一个实施例中,本发明的内存控制与隔离方法包括以下步骤:首先在步骤101,根据虚拟机中的任务发出的内存访问请求,得到该虚拟机的第一拥有者信息(vmid)和所述任务的第一任务信息(tid)。然后在步骤102:根据所述请求产生的虚拟地址查找系统页表。如前所述,页表记录了虚拟地址到物理地址的映射,因此,在步骤103,可以找到虚拟地址对应的物理地址。然后在步骤104,查找我们增加的物理页面属性表,并获取与物理地址对应的第二拥有者信息(vmid)和第二任务信息(tid)。基于以上获取的第一拥有者信息(vmid)、第一任务信息(tid)、第二拥有者信息(vmid)和第二任务信息(tid),确定是否允许内存访问。具体而言,在一个实施例中,步骤105进一步包括:步骤106:判断第一拥有者信息(vmid)和第二拥有者信息(vmid)是否相等;如果步骤106中判断为否,拒绝访问;如果判断为是,执行步骤107;步骤107:判断第一任务信息(tid)和第二任务信息(tid)是否相等;如果步骤107中判断为否,拒绝访问。为了进一步增加安全性,防止地址被篡改的可能,在一个实施例中,本发明的方法还包括:在步骤101中,根据内存访问请求,还获取第一页面线性地址信息(laddr);所述第一页面线性地址信息(laddr)是根据请求的虚拟地址所产生的;在步骤104,通过查找物理页面属性表,还获取第二页面线性地址信息(laddr),所述第二页面线性地址信息是由安全处理器写入到物理页面属性表中。在步骤106和步骤107中的判断均为是的情况下,执行步骤108:判断第一页面线性地址信息(laddr)和第二页面线性地址信息(laddr)是否相等;如果步骤108中的判断为是,则允许访问;如果该判断为否,则拒绝访问。所应理解的是,增加页面线性地址信息laddr(linearaddress)是为了保证数据访问的更加安全,可以保证防止恶意程序篡改虚拟地址和物理地址的映射关系进行攻击。只有安全处理器(假设这是cpu内部一个特殊管理单元,比如amd的psp和intel的me)能够设置扩展的页表属性vmid,tid和laddr,这样可以防止虚拟机管理程序篡改页面的安全属性进而非法访问虚拟机的数据。任务在访问某个物理页面时,内存控制器会依次检查当前虚拟机的信息vmid,任务的信息tid以及页面的线性地址laddr,只有3条信息与被访问的物理页面的信息都匹配时访问才被允许,否则会被拒绝,以此来保证数据不能被非法访问。本发明为物理页面添加物理页面属性表,属性中包含页面的拥有者虚拟机和任务信息vmid,tid和laddr,其他的虚拟机由于具有不同的vmid因此对此页面的访问会被拒绝;当前虚拟机内的其他任务由于具有不同的tid对此页面的访问会被拒绝;恶意程序如果通过篡改地址的映射关系来访问此物理页面,由于具有不同的laddr对此页面的访问也会被拒绝。因此本发明可以很好地解决虚拟化平台中虚拟机管理程序,虚拟机内部其他任务以及当前任务的非法代码对当前任务数据的非法访问。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1