一种QEMU/KVM与vTPM之间通信过程的防护方法与流程

文档序号:38035836发布日期:2024-05-17 13:21阅读:11来源:国知局
一种QEMU/KVM与vTPM之间通信过程的防护方法与流程

本发明涉及虚拟化和可信计算,具体为一种qemu(quick emulator,虚拟操作系统模拟器)/kvm(kernel-based virtual machine,基于内核的虚拟机)与虚拟可信平台模块(vtpm,virtual trusted platform module)之间通信过程的防护方法。


背景技术:

1、硬件可信平台模块(tpm,trusted platform module)是可信计算组织(tcg,trusted computing group)推出的一种可信计算技术,其具备度量存储、信任链、密码算法等安全特性,这些特性使得tpm具备了保障信息系统完整性的能力。度量存储特性主要通过tpm中设置的平台寄存器(pcr,platform configuration register)来保护度量数据不被篡改,该特性基本能够满足用户需求。

2、在云环境下,可信计算防护对象从物理服务器延伸到了位于云平台上的虚拟机。同时,vtpm作为tpm功能的虚拟化实现方案,它使虚拟机能够在云环境中进行安全操作,保护敏感数据和应用程序。

3、虚拟机在使用vtpm设备时,需要与位于宿主机中的vtpm实例完成连接请求、初始化、参数设置、命令处理、连接关闭等操作。

4、但是在目前虚拟机使用vtpm过程中,主要存在两个问题。其一:在qemu-kvm虚拟化环境中虚拟机与vtpm建立通信连接时,缺乏有效的验证机制以确保是否为攻击者抢占vtpm实例资源;其二:目前虚拟机使用vtpm过程中,通信数据以明文方式传输,这将导致租户的个人数据泄露,攻击者可以通过监听通信通道的方式截获未进行加密处理的请求数据及响应结果。

5、基于qemu的tpm设备驱动以及vtpm软件中的tpm事件监控机制对通信请求处理方式的不同,可以将虚拟机与vtpm之间的通信划分为控制命令通信和功能命令通信。其中,控制命令通信是指qemu对vtpm发起如初始化、关闭等指令产生的通信行为;功能命令通信是指请求vtpm完成如度量、存储、密码运算等功能产生的通信行为。

6、针对虚拟机使用vtpm过程中存在的两个问题,本方法通过分析虚拟机与vtpm的通信过程的特点,分别对于控制命令通信过程以及功能命令通信过程进行防护。首先,该方法通过增加新的控制命令,实现虚拟机和vtpm设备的相互认证,能够有效防止攻击者抢占vtpm资源。其次,通过对虚拟机和vtpm之间的通信数据进行加密传输,能够有效防止攻击者截获通信过程的明文数据。


技术实现思路

1、针对上述问题,本发明的目的在于提供一种qemu/kvm与vtpm之间通信过程的防护方法。通过在qemu和vtpm中增加新的控制命令和通信数据加解密模块,实现虚拟机和vtpm设备的相互认证以及通信数据的加密传输,能够有效降低虚拟机和vtpm通信过程中存在的安全风险。技术方案如下:

2、一种qemu/kvm与vtpm之间通信过程的防护方法,包括以下步骤:

3、步骤1:扩展qemu与vtpm模拟软件的控制功能,向tpm控制命令枚举集合中增加验证虚拟机与vtpm关联关系的选项;

4、vtpm设备初始化成功之后,虚拟机将通过后端驱动向vtpm设备发起关联关系验证请求,并且保持对响应消息地监听;

5、步骤2:扩展qemu虚拟化层控制命令处理功能,向qemu虚拟化层中添加验证虚拟机与vtpm关联关系的函数;

6、qemu作为虚拟机的建立与管理软件,将捕获虚拟机与外界所有的数据交互;在虚拟机通过后端驱动向vtpm设备发起关联关系验证请求时,qemu将捕获到此次关联关系验证请求,然后调用对应的函数进行处理并向vtpm转发;对于接收到的由vtpm设备返回的此次关联关系的判定结果,qemu同样进行处理并向虚拟机返回;

7、步骤3:扩展vtpm设备层的控制命令处理功能,向vtpm设备中添加验证虚拟机与vtpm关联关系的函数;

8、vtpm设备层在接收到当前虚拟机与vtpm实例的关联关系验证请求后,调用对应的函数来判断当前虚拟机是否与当前vtpm实例存在关联关系,并且向qemu虚拟化层返回判定结果;

9、步骤4:修改功能命令通信的数据结构,提供数据加密支持;

10、通过对功能命令通信的数据结构进行修改,使其能够满足对于通信数据加密的需要;

11、步骤5:扩展qemu虚拟化层对于功能通信命令的处理功能,向qemu虚拟化层中添加功能命令通信数据加密与解密模块;

12、在接收到虚拟机向与其关联的vtpm实例进行功能命令请求的消息时,qemu中的加密模块将把该功能命令请求的数据进行加密处理,并且将加密之后的请求数据通过信道传送到关联的vtpm实例中进行处理;在接收到由vtpm实例返回的经过加密的功能命令响应数据时,qemu中的解密模块将把该响应数据进行解密处理,并且将解密之后的响应数据转发至关联的虚拟机中;

13、步骤6:扩展vtpm设备层对于功能通信命令的处理功能,向vtpm设备层中添加功能命令通信数据加密与解密模块;

14、在接收到来自qemu虚拟化层的功能命令请求数据后,vtpm将调用解密模块将该功能命令请求解密并进行处理;处理完成后,vtpm调用加密模块将响应结果进行加密并发送到qemu虚拟化层。

15、进一步的,所述步骤1具体为:

16、步骤1.1:在qemu和vtpm模拟软件中向tpm控制命令枚举集合中增加控制命令cmd_verify,并设置请求与响应数据结构体ptm_verify;

17、步骤1.2:在qemu与tpm设备驱动中,向tpmbackendclass结构体增加成员函数verify_tpm以及功能函数tpm_emulator_verify。

18、更进一步的,所述步骤2具体为:

19、步骤2.1:在qemu虚拟化层,向对vtpm发送请求数据的函数qemu_chr_fe_write_all中添加验证虚拟机与vtpm关联关系的请求功能;

20、步骤2.2:在qemu虚拟化层,向处理vtpm返回数据的函数qemu_chr_fe_read_all中添加验证虚拟机与vtpm关联关系的功能。

21、更进一步的,所述步骤3具体为:

22、步骤3.1:在vtpm设备层,向接收请求数据与处理命令的接口函数ctrlchannel_process_fd中,增加验证虚拟机与vtpm关联关系的功能;

23、步骤3.2:在vtpm设备层,向封装执行结果与返回响应消息的函数ctrlchannel_recv_cmd中,增加返回验证虚拟机与vtpm关联关系结果的功能。

24、更进一步的,所述步骤4具体为:

25、步骤4.1:向功能命令通信的请求和响应数据结构中,添加存储加密数据的字段en(reqdata)和en(rspdata);

26、步骤4.2:向功能命令通信的请求和响应数据结构中,添加存储原始消息长度字段len_data。

27、更进一步的,所述步骤5具体为:

28、步骤5.1:在qemu虚拟化层,扩展请求vtpm设备服务的功能,向vtpm请求数据收发函数tpm_emulator_unix_tx_bufs中新增请求数据加密模块;

29、步骤5.2:在qemu虚拟化层,扩展请求vtpm设备服务的功能,向vtpm请求数据收发函数tpm_emulator_unix_tx_bufs中新增响应数据解密模块。

30、更进一步的,所述步骤6具体为:

31、步骤6.1:在vtpm设备层,扩展处理与响应虚拟机的功能命令请求服务的功能;向接收qemu虚拟化层请求服务的函数swtpm_io_read中新增解密模块;新增的解密模块将在接收到由qemu虚拟化层发送的经过加密操作的功能请求数据后,进行解密操作,将密文消息解密为功能请求的原始数据;

32、步骤6.2:在vtpm设备层,扩展处理与响应虚拟机的功能命令请求服务的功能;向发送qemu虚拟化层响应功能请求服务的函数swtpm_io_write中新增加密模块;新增的加密模块将在vtpm设备完成对于功能请求服务后,对响应结果进行加密操作。

33、本发明的有益效果是:

34、本发明针对虚拟机和vtpm通信过程存在的问题,提出了一种qemu/kvm与vtpm通信过程防护方法,首先,通过在qemu和vtpm中增加验证通信连接相关的控制命令和处理函数,实现了虚拟机实例和vtpm之间的相互认证,可以有效地防止攻击者抢占vtpm资源;其次,通过在qemu和vtpm中增加功能命令的通信数据加解密模块,通信数据以密文方式传输,可以有效防止云租户的数据泄露。最终实现了对qemu/kvm与vtpm通信过程的安全防护,有效降低了虚拟机与vtpm通信过程中存在的安全风险。

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