一种虚拟可信平台模块vTPM的可信执行方法和装置的制造方法_3

文档序号:9631741阅读:来源:国知局
出enclave时恢复enclave线程的特殊信息。
[0049]可选的,如图9所示,上述实施例中的方法还可以包括:
[0050]S901,在所述第一 enclave中运行的第二 νΤΡΜ模拟器,接收所述SGX模块转发的创建νΤΡΜ实例的命令,所述创建νΤΡΜ实例的命令由所述虚拟机管理器在创建第一虚拟机VM时触发、并使用所述第一通信秘钥加密、再向所述SGX模块发送。
[0051 ] S902,第二 νΤΡΜ模拟器使用所述第一通信秘钥对所述创建νΤΡΜ实例的命令解密,根据所述创建νΤΡΜ实例的命令向所述SGX模块发送第二创建请求,所述第二创建请求指定的νΤΡΜ实例与所述创建νΤΡΜ实例的命令指定的第一 VM对应,使得所述SGX模块创建与所述第二创建请求指定νΤΡΜ实例对应的第二 enclave,以便在所述第二 enclave执行所述νΤΡΜ实例的程序代码来实现与所述第一 VM所对应的νΤΡΜ实例。
[0052]如图10所示,虚拟机管理器在创建第一虚拟机VM时触发创建νΤΡΜ实例的命令,然后使用第一通信秘钥对创建νΤΡΜ实例的命令进行加密,并将加密后的创建νΤΡΜ实例的命令发送给SGX模块,SGX模块接收到加密后的创建νΤΡΜ实例的命令之后,将其转发给在所述νΤΡΜ模拟器的第一 enclave中运行的第二 νΤΡΜ模拟器,第二 νΤΡΜ模拟器接收到创建ντΡΜ实例的命令之后,第二 νΤΡΜ模拟器使用所述第一通信秘钥对所述创建νΤΡΜ实例的命令解密,并且向载入操作系统中的SGX模块发送第二创建请求,SGX模块收到第二创建请求之后,建立所述νΤΡΜ实例的内存保护区域enclave,并将νΤΡΜ实例的程序代码载入所述νΤΡΜ实例的内存保护区域enclave,CPU可以将载入内存保护区域enclave的程序代码与预先提供的程序代码进行比较以确定载入的νΤΡΜ实例的程序代码的完整性,最后在内存保护区域enclave执行所述νΤΡΜ实例的程序代码。另外,第一 VM与在第二 enclave运行的vTPM实例之间通信的数据均经过SGX模块中间转发,SGX模块生成第二通信秘钥,第一VM与在第二 enclave运行的νΤΡΜ实例之间通信的数据均使用生成的第二通信秘钥进行加密或者解密。从而利用SGX模块以及内存保护区域enclave的硬件保护功能实现了 νΤΡΜ实例与不可信操作系统的安全隔离,保证了 νΤΡΜ实例的计算安全性。
[0053]需要说明的是,νΤΡΜ实例与对应的虚拟机VM绑定,并与对应虚拟机VM的生命周期保持一致,νΤΡΜ实例与虚拟机VM之间的信息传递通过SGX模块进行加密通信,并利用enclave指令实现。
[0054]继续参考图11,图11是本发明又一实施例提出的一种虚拟可信平台模块νΤΡΜ的可信执行方法的流程示意图。本发明实施例方法包括:
[0055]S1101,第一虚拟机VM接收用户触发的通信命令,使用第二通信秘钥对所述通信命令进行加密,并将经过加密的所述通信指令发送给SGX模块,以便所述SGX模块将经过加密的所述通信指令转发给νΤΡΜ实例。
[0056]S1102,νΤΡΜ实例接收SGX模块转发的已加密的所述通信指令。
[0057]S1103,vTPM实例使用所述第二通信秘钥对经过加密的所述通信指令进行解密,执行所述通信命令,并使用所述第二通信秘钥对执行结果加密、向所述SGX模块发送经过加密的所述执行结果。
[0058]S1104,所述第一 VM使用所述第二通信秘钥对经过加密的所述执行结果进行解密,并得到所述执行结果。
[0059]具体实现中,如图12所示,首先第一虚拟机VM接收用户触发的通信命令,并使用第二通信秘钥对通信命令进行加密,然后将经过加密的通信指令发送给SGX模块,SGX模块接收到经过加密的通信指令之后,将经过加密的通信指令转发给νΤΡΜ实例,在νΤΡΜ实例接收到SGX模块转发的经过加密的通信指令之后,νΤΡΜ实例使用第二通信秘钥对经过加密的通信指令进行解密,并且执行通信命令,在执行通信命令确定执行结果之后,使用第二通信秘钥对执行结果进行加密,最后向SGX模块发送经过加密的执行结果;SGX模块接收经过加密的执行结果,并将其转发给第一 VM,最后第一 VM接收到经过加密的执行结果之后,使用第二通信秘钥对经过加密的执行结果进行解密,并得到执行结果。从而利用构建νΤΡΜ实例的内存保护区域enclave时生成的秘钥加密通信数据,通过SGX模块构建的安全信道传递加密信息,实现了虚拟机VM与对应νΤΡΜ实例进行通信数据时与不可信操作系统的安全隔离,保证了 VM与νΤΡΜ实例通信的安全性。
[0060]特别地,如图13所示,图13是一种虚拟可信平台模块νΤΡΜ的可信执行方法的示意图,该方法是创建与虚拟机VM对应的νΤΡΜ线程并建立所述νΤΡΜ线程的内存保护区域enclave,由于与νΤΡΜ实例的创建以及νΤΡΜ线程的内存保护区域enclave相类似,本步骤不再赘述。
[0061]请参考图14,图14是本发明实施例提供的一种虚拟可信平台模块νΤΡΜ的可信执行装置的结构示意图,如图所示,操作系统加载SGX模块,所述操作系统运行有第一 νΤΡΜ模拟器,所述装置包括:
[0062]所述操作系统运行的第一 νΤΡΜ模拟器,用于向所述SGX模块发送第一创建请求,使得所述SGX模块根据所述第一创建请求建立第一内存保护区域enclave,生成第一通信秘钥,以便在所述第一 enclave中执行所述第一 νΤΡΜ模拟器的程序代码来实现第二 νΤΡΜ模拟器;
[0063]所述第二 νΤΡΜ模拟器,用于使用所述第一通信秘钥对所述SGX模块后续转发的数据解密。
[0064]如图6所示,CPU支持Intel SGX架构,在装置系统初始化时,首先操作系统可以将CPU中的SGX模块载入操作系统中,启动运行第一 νΤΡΜ模拟器。此时虚拟机管理器(具有虚拟机最高管理权限)可以为第一 νΤΡΜ模拟器创建模拟器证书,该模拟器证书为根据第一 νΤΡΜ模拟器的Hash值以及服务器硬件公钥生成得到的第一 νΤΡΜ模拟器的身份标志。然后第一 νΤΡΜ模拟器向SGX模块申请创建第一内存保护区域enclave,SGX模块收到创建命令之后执行创建命令,为第一 νΤΡΜ模拟器分配第一内存保护区域enclave,并将第一νΤΡΜ模拟器的程序代码载入第一内存保护区域enclave,CPU可以将载入第一内存保护区域enclave的程序代码与预先提供的程序代码进行比较以确定载入的第一 νΤΡΜ模拟器的程序代码的完整性,最后在第一内存保护区域enclave执行第一 νΤΡΜ模拟器的程序代码来实现第二 νΤΡΜ模拟器。另外,SGX模块根据所述第一创建请求建立所述第一内存保护区域enclave之后,可以创建第一通信秘钥,第二 νΤΡΜ模拟器可以使用第一通信秘钥对所述SGX模块后续转发的数据解密。其中,第一 νΤΡΜ模拟器和第二 νΤΡΜ模拟器可以单独运行,也可以协同运行执行相关的通信命令。
[0065]需要说明的是,SGX模块是对CPU架构的一种扩展,为应用程序的安全执行提供硬件保护。这种扩展允许用户模式的应用程序在应用程序的虚拟地址空间内创建一块内存保护区域enclave,其中,结合加密技术和内存的硬件隔离技术,硬件为enclave提供机密性和完整性保护,使之既能对抗恶意特权软件,如能对抗被入侵的主机操作系统或恶意虚拟机监视器的攻击,又能抵抗对内存的物理攻击,如内存探测等。SGX模块对Intel架构指令集和内存访问方式做出一些修改,以允许进程创建一块受保护的内存区域enclave,enclave可保护运行于其中的程序代码不受恶意特权代码和硬件攻击的侵害。如图7所示,图7是一种SGX模块与应用程序的交互示意图。其中,enclave具有如下特征:(1)具有自己的代码和数据;(2)提供机密性保护;(3)提供完整性保护;(4)具有可控的入口点;(5)支持多线程;(6)对应用程序内存具有最高访问权限。如图8所示,图8是一种内存保护区域enclave的结构示意图。其中,TCS (Thread Control Structure)保存着进入或退出enclave时恢复enclave线程的特殊信息。
[0066]可选的,如图14所示,本发明实施例中的装置还可以包括第二 νΤΡΜ模拟器,第二νΤΡΜ模拟器用于:
[0067]接收所述SGX模块转发的创建νΤΡΜ实例的命令,所述创建νΤΡΜ实例的命令由所述虚拟机管理器在创建第一虚拟机VM时触发、并使用所述第一通信秘钥加密、再向所述SGX模块发送。
[0068]使用所述第一通信秘钥对所述创建νΤΡΜ实例的命令解密,根据所述创建νΤΡΜ实例的命令向所述SGX模块发送第二创建请求,所述第二创建请求指定的νΤΡΜ实例与所述创建νΤΡΜ实例的命令指定的第一 VM对应,使得所
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1