模拟物理TCM芯片的方法、系统、装置及可读存储介质与流程

文档序号:14056967阅读:301来源:国知局
模拟物理TCM芯片的方法、系统、装置及可读存储介质与流程

本发明涉及虚拟化安全领域,特别是涉及一种模拟物理tcm芯片的方法、系统、装置及可读存储介质。



背景技术:

物理tcm(trustedcomputingplatform,可信计算平台)芯片是一款通过国密局认证的密码学芯片,支持国密sm2、sm3以及sm4密码学逻辑,可以基于国密算法体系提供加解密、完整性验证等操作。qemu是一款开源的模拟器,可以利用xen、kvm(kernel-basedvirtualmachine,基于内核的虚拟机)等vmm(virtualmachinemonitor,虚拟机监控器)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。

随着云计算和大数据的兴起,多数搭建在物理平台上的业务系统已经迁移至了虚拟系统环境中。但现阶段vmware、xen、kvm等主流的vmm都不支持物理tcm芯片的功能,所以一些基于物理tcm芯片的应用不能迁移至虚拟化环境中。

因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种模拟物理tcm芯片的方法、系统、装置及可读存储介质,模拟了物理tcm芯片的功能,使得基于物理tcm芯片的应用可以迁移至虚拟环境中,并且可以无差别的使用物理tcm芯片的功能。

为解决上述技术问题,本发明提供了一种模拟物理tcm芯片的方法,应用于qemu构建的虚拟环境,包括:

预先选取一块模拟磁盘设备作为模拟的nv磁盘;

将所述物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库,其中,所述tcm逻辑功能库实现读写所述nv磁盘的操作;

在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间,并通过所述虚拟内存空间的访问接口将所述tcm功能指令发送给所述tcm逻辑功能库;

所述tcm逻辑功能库解析并执行所述tcm功能指令,并将执行结果返回给所述虚拟机。

优选的,所述模拟磁盘设备为qemu中的drive参数所指定的文件。

优选的,所述预先选取一块模拟磁盘设备作为模拟的nv磁盘之后,将物理tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库之前,该方法还包括:

在所述qemu的blockbackend机制中添加互斥锁机制,以便所述tcm逻辑功能库实现并发读写所述nv磁盘的操作。

优选的,所述将所述物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库之后,在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间之前,该方法还包括:

创建一个tcm后端对象;

则通过所述虚拟内存空间的访问接口将所述tcm功能指令发送给所述tcm逻辑功能库的过程具体为:

通过所述虚拟内存空间的访问接口将所述tcm功能指令发送给所述tcm后端对象,然后所述tcm后端对象调用所述tcm逻辑功能库;

则所述tcm逻辑功能库实现读写所述nv磁盘的操作的过程具体为:

所述tcm逻辑功能库通过所述tcm后端对象实现读写所述nv磁盘的操作。

为解决上述技术问题,本发明还提供了一种模拟物理tcm芯片的系统,应用于qemu构建的虚拟环境,包括:

选取模块,用于预先选取一块模拟磁盘设备作为模拟的nv磁盘;

封装模块,用于将所述物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库,其中,所述tcm逻辑功能库用于实现读写所述nv磁盘的操作;

虚拟映射模块,用于在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间,并通过所述虚拟内存空间的访问接口将所述tcm功能指令发送给所述tcm逻辑功能库;

则所述tcm逻辑功能库还用于解析并执行所述tcm功能指令,并将执行结果返回给所述虚拟机。

优选的,所述模拟磁盘设备为qemu中的drive参数所指定的文件。

优选的,该系统还包括:

添加模块,用于在所述qemu的blockbackend机制中添加互斥锁机制,以便所述tcm逻辑功能库实现并发读写所述nv磁盘的操作。

优选的,该系统还包括:

创建模块,用于创建一个tcm后端对象;

则所述虚拟映射模块具体用于:

通过所述虚拟内存空间的访问接口将所述tcm功能指令发送给所述tcm后端对象,然后所述tcm后端对象调用所述tcm逻辑功能库;

则所述tcm逻辑功能库具体用于:

通过所述tcm后端对象实现读写所述nv磁盘的操作。

为解决上述技术问题,本发明还提供了一种模拟物理tcm芯片的装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述任意一项所述模拟物理tcm芯片方法的步骤。

为解决上述技术问题,本发明还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述模拟物理tcm芯片方法的步骤。

本发明提供了一种模拟物理tcm芯片的方法,应用于qemu构建的虚拟环境,包括:预先选取一块模拟磁盘设备作为模拟的nv磁盘;将物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库,其中,tcm逻辑功能库实现读写nv磁盘的操作;在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间,并通过虚拟内存空间的访问接口将tcm功能指令发送给tcm逻辑功能库;tcm逻辑功能库解析并执行tcm功能指令,并将执行结果返回给虚拟机。

可见,在实际应用中,采用本发明的方案,在qemu构建的虚拟环境中模拟物理tcm芯片的功能,使得虚拟机中的应用不再需要依赖物理tcm芯片,因此基于物理tcm芯片的应用可以迁移至虚拟环境中,并且可以无差别的使用物理tcm芯片的功能。

本发明还提供了一种模拟物理tcm芯片的系统、装置及可读存储介质,具有和上述模拟物理tcm芯片的方法相同的有益效果。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的一种模拟物理tcm芯片方法的流程图;

图2为本发明所提供的一种模拟物理tcm芯片方法的一种实施例的结构示意图;

图3为本发明所提供的一种模拟物理tcm芯片系统的另一种结构示意图。

具体实施方式

本发明的核心是提供一种模拟物理tcm芯片的方法、系统、装置及可读存储介质,模拟了物理tcm芯片的功能,使得基于物理tcm芯片的应用可以迁移至虚拟环境中,并且可以无差别的使用物理tcm芯片的功能。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参照图1,图1为本发明所提供的一种模拟物理tcm芯片方法的流程图,应用于qemu构建的虚拟环境,包括:

步骤1:预先选取一块模拟磁盘设备作为模拟的nv磁盘;

具体的,在实际应用中,物理tcm芯片的nv空间是用来存放物理tcm芯片的内部数据并同时向上层应用提供简单的数据存储功能的。而在qemu构建的虚拟环境中并不存在像物理tcm芯片的nv空间那样独立的物理空间,因此需要qemu的磁盘设备维护机制选取一块模拟磁盘设备作为模拟的nv磁盘。可以理解的是,模拟出的nv磁盘也会保存虚拟机中的与模拟物理tcm芯片相关的数据,还可以对相关数据进行可信计算。

其中,模拟磁盘设备一般不小于16k,且qemu可支持的任意类型的模拟磁盘设备均可作为本发明中模拟的nv磁盘。

步骤2:将物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库,其中,tcm逻辑功能库实现读写nv磁盘的操作;

具体的,物理tcm芯片的逻辑功能被固化到了物理tcm芯片中,每个tcm功能指令都在物理tcm芯片内部完成处理,然后将处理后的结果返回,基于此本方案将固化至物理tcm芯片的密码学逻辑封装成代码逻辑,即将物理tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库。可以理解的是,tcm逻辑功能库的主要功能为模拟物理tcm芯片逻辑固件的功能,即解析并执行tcm功能指令。

相应的,tcm逻辑功能库还可以对nv磁盘进行读写操作,若tcm逻辑功能库未能读到nv磁盘上的数据时,会自动生成与该操作相关的初始化值并写入到nv磁盘中。

步骤3:在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间,并通过虚拟内存空间的访问接口将tcm功能指令发送给tcm逻辑功能库;

步骤4:tcm逻辑功能库解析并执行tcm功能指令,并将执行结果返回给虚拟机。

具体的,物理tcm芯片的各个寄存器都有固定的内存地址,由bios(basicinputoutputsystem,基本输入输出系统)完成内存映射,物理设备中的应用程序通过向这段地址发送tcm功能指令来完成对物理tcm芯片的应用。因此本发明在qemu模拟的虚拟环境中划分出一段类似的虚拟内存空间,具体的,qemu提供了memory_region_add_subregion函数,通过该函数可以在qemu的进程中创建一段虚拟内存空间,使虚拟机可以直接访问该虚拟内存空间。

根据物理tcm芯片的规范,定义了物理tcm芯片的内存基址为0xfed40000,物理tcm芯片中个寄存器对应的地址在该基址的基础上增加。其中,这段虚拟内存空间的地址和物理tcm芯片所对应的内存空间的地址是一致的,从而使得虚拟机中的应用程序可以直接向该虚拟内存空间发送tcm功能指令。相应的,虚拟机中任何对该虚拟内存空间的操作所产生的数据都会发送至tcm逻辑功能库。

具体的,qemu创建虚拟机后会进行虚拟内存维护,因此只需在初始化阶段划分出该段虚拟内存空间并实现该虚拟内存空间的访问接口即可。相应的,通过qemu提供的memory_region_init_io函数可以初始化该段虚拟内存空间,初始化过程中最主要的操作为重定向该虚拟内存空间的访问接口,虚拟机对该虚拟内存空间的读写操作都由qemu映射至对应的具体实现中,通过实现具体的访问接口,即可完成对虚拟机发送的tcm功能指令的获取及执行结果的返回。

进一步的,当虚拟机中的某一应用程序访问该虚拟内存空间时,该虚拟内存空间的访问接口会将接收到的tcm功能指令发送给tcm逻辑功能库,由tcm逻辑功能库完成tcm功能指令的解析及执行,并将解析结果通过该访问接口返回给操作该虚拟内存空间的应用程序,保证了虚拟机中的应用程序不再需要依赖物理tcm芯片,在qemu创建的虚拟环境中也可以无差别的使用物理tcm芯片的功能。

本发明提供了一种模拟物理tcm芯片的方法,应用于qemu构建的虚拟环境,包括:预先选取一块模拟磁盘设备作为模拟的nv磁盘;将物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库,其中,tcm逻辑功能库实现读写nv磁盘的操作;在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间,并通过虚拟内存空间的访问接口将tcm功能指令发送给tcm逻辑功能库;tcm逻辑功能库解析并执行tcm功能指令,并将执行结果返回给虚拟机。

可见,在实际应用中,采用本发明的方案,在qemu构建的虚拟环境中模拟物理tcm芯片的功能,使得虚拟机中的应用不再需要依赖物理tcm芯片,因此基于物理tcm芯片的应用可以迁移至虚拟环境中,并且可以无差别的使用物理tcm芯片的功能。

在上述实施例的基础上:

作为一种优选的实施例,模拟磁盘设备为qemu中的drive参数所指定的文件。

具体的,本方案需要一块模拟磁盘设备来模拟物理tcm芯片的nv空间,当qemu启动时,可以使用drive参数指定一文件作为模拟的nv磁盘即nv空间。可以理解的是,虚拟机中的文件实际上有很多,为了将我们选中的文件和其他文件区分开来,本发明还为选定的文件分配了一个id,保证了后续对其进行操作时不会出现错误。相应的,由于文件存储具有便捷性、高效性、且安全可靠等优点,将文件作为本发明所模拟的nv磁盘,可以提高访问和响应的速度。

当然,模拟磁盘设备除了可以为文件还可以为其他设备,本发明在此不做限定。

作为一种优选的实施例,预先选取一块模拟磁盘设备作为模拟的nv磁盘之后,将物理tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库之前,该方法还包括:

在qemu的blockbackend机制中添加互斥锁机制,以便tcm逻辑功能库实现并发读写nv磁盘的操作。

具体的,qemu运行时会创建一个blockbackend结构体blk来指向该nv磁盘,后续通过blk即可在qemu中操作该nv磁盘。但是blk对该nv磁盘的读写操作并不支持并发操作,因此要基于blk的读写功能,添加互斥锁机制,实现tcm逻辑功能库并发读写nv磁盘的操作,进一步保证了虚拟机中的应用程序可以与使用物理tcm芯片一样无差别的使用和物理tcm芯片相关的逻辑功能。

具体的,首先通过qemu_mutex_init函数(该函数为qemu中的具体实现)初始化nv磁盘读写互斥锁,每个对该nv磁盘的读写操作首先要获取虚拟nv读写互斥锁,操作完成后释放该互斥锁。

作为一种优选的实施例,将物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库之后,在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间之前,该方法还包括:

创建一个tcm后端对象;

则通过虚拟内存空间的访问接口将tcm功能指令发送给tcm逻辑功能库的过程具体为:

通过虚拟内存空间的访问接口将tcm功能指令发送给tcm后端对象,然后tcm后端对象调用tcm逻辑功能库;

则tcm逻辑功能库实现读写nv磁盘的操作的过程具体为:

tcm逻辑功能库通过tcm后端对象实现读写nv磁盘的操作。

具体的,从软件的角度分析,虚拟内存空间的访问接口直接使用tcm逻辑功能库,耦合性较强,同时为屏蔽nv磁盘的差异性,tcm逻辑功能库也不建议直接操作该nv磁盘,基于此本发明还构建了一个tcm后端对象,参照图2所示,由该tcm后端对象完成对tcm逻辑功能库的调用,同时当nv磁盘中的数据发生变化时,也由该tcm后端对象完成读写nv磁盘的操作,从而减小tcm逻辑功能库、nv磁盘以及虚拟内存空间之间的耦合性。

请参照图3,图3为本发明所提供的一种模拟物理tcm芯片系统的结构示意图,应用于qemu构建的虚拟环境,包括:

选取模块1,用于预先选取一块模拟磁盘设备作为模拟的nv磁盘;

封装模块2,用于将物理可信计算平台tcm芯片的所有tcm功能指令进行封装得到tcm逻辑功能库3,其中,tcm逻辑功能库3用于实现读写nv磁盘的操作;

虚拟映射模块4,用于在qemu的内存中划分出用于接收虚拟机发送的tcm功能指令的虚拟内存空间,并通过虚拟内存空间的访问接口将tcm功能指令发送给tcm逻辑功能库3;

则tcm逻辑功能库3还用于解析并执行tcm功能指令,并将执行结果返回给虚拟机。

作为一种优选的实施例,模拟磁盘设备为qemu中的drive参数所指定的文件。

作为一种优选的实施例,该系统还包括:

添加模块,用于在qemu的blockbackend机制中添加互斥锁机制,以便tcm逻辑功能库3实现并发读写nv磁盘的操作。

作为一种优选的实施例,该系统还包括:

创建模块,用于创建一个tcm后端对象;

则虚拟映射模块4具体用于:

通过虚拟内存空间的访问接口将tcm功能指令发送给tcm后端对象,然后tcm后端对象调用tcm逻辑功能库3;

则tcm逻辑功能库3具体用于:

通过tcm后端对象实现读写nv磁盘的操作。

本发明还提供了一种模拟物理tcm芯片的装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上述任意一项模拟物理tcm芯片方法的步骤。

本发明还提供了一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意一项模拟物理tcm芯片方法的步骤。

对于本发明所提供的一种模拟物理tcm芯片的系统、装置及可读存储介质的介绍请参照上述实施例,本发明在此不做限定。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1