一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用户无感知的虚拟机批量远程证明方法与流程

2022-02-22 04:45:24 来源:中国专利 TAG:


1.本发明涉及可信计算、虚拟化安全技术领域,具体为一种用户无感知的虚拟机批量远程证明方法。


背景技术:

2.可信计算(trusted computing,tc)是一项由可信计算组织(tcg,trusted computing group)推动发展的技术,基于硬件可信平台模块(tpm,trusted platform module)保障系统整体的安全性。远程证明技术(ra,remote attestation)是可信计算整体解决方案中的关键技术之一,用来判断计算机系统的完整性状态,在保障计算机系统安全方面发挥着重要作用。在虚拟机远程证明领域,tcg提出了基于虚拟可信根(vtpm,virtual trusted platform module)的远程证明规范。
3.现有公开的虚拟机远程证明方案大多采用在虚拟机内部部署代理的方式进行远程证明,存在一定的局限性:1)在虚拟机内部部署信息采集代理,可被用户感知,同时违反了云服务提供商签署的隐私保护服务协议;2)代理部署在虚拟机内部,存在攻击者通过中间人攻击的方式误导验证端的可能性;3)若需要同时对多个虚拟机进行远程证明,需要在多个虚拟机内部部署验证端,部署成本较高。
4.vmi(virtual machine introspection虚拟机自省)技术,一种从虚拟机外部获取客户虚拟机操作系统内部状态信息的技术,目前主要通过libvmi虚拟机自省库实现,可以在虚拟机监视器层(vmm,virtual machine monitor)实现同时采集多台虚拟机的远程证明证据信息。keylime是现有主流的虚拟机远程证明工具之一,支持tpm2.0,可以实现虚拟机完整性状态的持续监控,支持对多个计算节点进行远程证明,但是该工具仍然在虚拟机内部进行信息采集,存在上述局限性。


技术实现要素:

5.针对上述问题,本发明的目的在于提供一种用户无感知的虚拟机批量远程证明方法,能够避免在虚拟机内部部署代理的缺陷,同时结合完整性证明工具keylime,基于tpm2.0进行批量虚拟机完整性状态持续监测,为宿主机及虚拟机的运行安全提供保障。技术方案如下:一种用户无感知的虚拟机批量远程证明方法,包括以下步骤:步骤1:通过数据采集模块批量采集证据信息使用libvmi生成虚拟机内部的文件基准值库,获取证据信息,包括当前vpcr值和vsml;同时将libvmi采集的虚拟机证据信息转化为keylime兼容格式,并进行存储;步骤2:被验证端传输证据信息数据keylime验证端与被验证端建立ssl安全传输通道,同时核验平台身份认证密钥;被验证端使用aik私钥对证据信息进行签名,并发往keylime验证端;步骤3:批量完整性验证
收到证据信息后,keylime验证端使用aik公钥进行解密,得到宿主机及虚拟机的证据数据;然后逐个对于宿主机或虚拟机的节点进行完整性验证;首先使用度量日志重新计算pcr值,与原pcr值比较是否相等,不相等则远程验证失败;然后对基准值库文件和度量日志文件进行对比,出现文件内容值不匹配的情况则远程验证失败;如果验证均通过,则完成该节点的远程证明,认为该节点完整性未遭到破坏;所有节点均通过远程证明,则说明被验证端完整性未遭到破坏;否则,表示存在节点完整性状态遭到破坏,需对被破坏的节点及时管控。
6.进一步的,所述步骤1具体包括:步骤1.1:使用vmi技术采集虚拟机证据信息当虚拟机执行pcr值扩展操作时,在该命令陷入vmm时进行拦截,数据采集模块利用libvmi分析pcr值扩展操作命令的二进制执行代码,得到vpcr索引号和命令扩展值信息,利用其与虚拟机内部相同的扩展操作,在vmm层得到虚拟机内部的vpcr值;数据采集模块利用libvmi访问虚拟机的内核符号文件system.map,获取虚拟机的vsml的内存地址,并据此采集虚拟机的vsml文件;步骤1.2:采集宿主机证据信息数据采集模块根据特定路径采集宿主机的度量日志文件;使用tpm_tools工具采集宿主机的pcr值;步骤1.3:将证据信息合并转化为keylime兼容的格式数据采集模块根据宿主机以及虚拟机的远程证明证据信息内容构建一个数据结构,包括宿主机或虚拟机的节点id、度量日志和pcr值;然后将宿主机以及虚拟机的远程证明证据信息写入数据结构中,形成证据信息数据文件。
7.更进一步的,所述步骤2具体包括:步骤2.1:keylime验证端与被验证端建立连接keylime验证端与被验证端建立ssl安全传输通道,验证端根据背书密钥生成平台身份认证密钥;被验证端将节点id、平台身份认证密钥公钥、背书密钥公钥发往keylime验证端;keylime验证端通过背书密钥公钥加密平台身份认证密钥公钥的哈希值和随机密钥,并发给keylime被验证端;被验证端收到后,使用背书密钥私钥进行解密并验证,使用随机密钥生成被验证端id的消息认证码,发往keylime验证端;验证端收到后,使用随机密钥解密,得到被验证端的id,完成认证;步骤2.2:进行证据信息数据传输使用平台身份认证密钥私钥对存储在vmm层的所有节点证明信息以及随机数进行签名,并发往验证端;步骤2.3:keylime验证端收到证明信息后,使用平台身份认证密钥公钥进行解密,解密成功表示被验证端身份核验。
8.本发明的有益效果是:1、本发明通过使用虚拟机自省技术在虚拟机监视层获取虚拟机内部的度量日志信息和pcr值,实现了用户无感知情况下的远程证明,避免了云服务提供商违反隐私保护服务协议;2、本发明从虚拟机外部获取远程证明信息的方式,中断了敌手进行中间人攻击的
路径,提高了远程证明的安全性;3、本发明在虚拟机监视器层部署代理,减少了远程证明代理数量,降低了远程证明部署成本;4、本发明结合keylime远程证明工具,实现了虚拟机完整性状态的批量持续监测,提高了系统运行的安全性。
附图说明
9.图1是基于libvmi和keylime的远程证明总体架构图。
10.图2是宿主机及虚拟机的远程证明证据信息结构图。
11.图3是本发明用户无感知的虚拟机批量远程证明流程图。
具体实施方式
12.下面结合附图和具体实施例对本发明做进一步详细说明。
13.本发明提出了一种用户无感知的虚拟机批量远程证明方法,使用虚拟机自省库libvmi在虚拟机监视器层进行批量信息采集,同时结合完整性证明工具keylime,基于tpm2.0进行批量虚拟机完整性状态持续监测,为宿主机及虚拟机的运行安全提供保障。具体步骤如下:步骤1:数据采集模块批量采集证据信息。
14.为了实现虚拟机证据信息批量收集的目标,使用libvmi生成虚拟机内部的文件基准值库,获取虚拟平台配置寄存器(vpcr,virtual platform configuration register)当前值和虚拟度量日志(vsml,virtual stored measurement log)等证据信息。同时将libvmi采集的虚拟机证据信息转化为keylime兼容格式,并进行存储。
15.附图1给出了本发明中基于libvmi和keylime的远程证明总体架构图。如图1所示,该系统可用于在虚拟机监视层实现虚拟机及宿主机的远程证明,从而保证虚拟机及宿主机在运行状态的完整性,主要包括libvmi数据采集模块、keylime远程证明验证模块。
16.批量采集证据信息的详细过程为:步骤1.1:使用vmi技术采集虚拟机证据信息。当虚拟机执行pcr值扩展操作(pcr-extend)时,在该命令陷入vmm时进行拦截,数据采集模块利用libvmi分析pre-extend命令的二进制执行代码,得到vpcr索引号、命令扩展值等信息,利用索引号、扩展值等信息进行与虚拟机内部相同的扩展操作,在vmm层得到虚拟机内部的vpcr值;数据采集模块利用libvmi访问虚拟机的内核符号文件system.map,获取虚拟机的vsml的内存地址,根据vsml的内存地址,采集虚拟机的vsml文件。
17.步骤1.2:采集宿主机证据信息。数据采集模块根据特定路径采集宿主机的度量日志文件;使用tpm_tools工具采集宿主机的pcr值。
18.步骤1.3:进行证据信息格式转换。数据采集模块根据宿主机以及虚拟机的远程证明证据信息内容构建一个数据结构,其中包括节点id(宿主机或虚拟机)、度量日志、pcr值;其中节点id用于区分不同节点,pcr_list存储节点的pcr值列表,sml存储节点的度量日志。证明信息数据采集完成后,数据采集模块将宿主机以及虚拟机的远程证明证据信息写入该数据结构,形成证据信息数据文件。
19.附图2给出了宿主机及虚拟机的远程证明证据信息格式。本系统通过虚拟机自省技术实现虚拟机远程证明数据的批量采集,同时在虚拟机监视层将宿主机以及所有虚拟机的证据信息合并转化为keylime验证端兼容格式,以便最终发往keylime验证端用于批量验证。对于节点(宿主机或虚拟机)的证据数据,使用data数据结构存储,其中id用于区分不同节点,pcr_list存储节点的pcr值列表,sml存储节点的度量日志。证明信息数据采集完成后,数据采集模块将宿主机以及虚拟机的远程证明证据信息写入该数据结构,形成证明信息数据文件。
20.步骤2:被验证端传输证据信息数据。
21.为了防止攻击者进行数据窃听,keylime验证端与被验证端建立ssl安全传输通道,同时核验平台身份认证密钥(aik,attestation identity key)。被验证端使用aik私钥对证据信息进行签名,并发往keylime验证端。
22.详细过程为:步骤2.1:keylime验证端与被验证端建立连接。keylime验证端与被验证端使用openssl建立ssl安全传输通道。被验证端根据背书密钥(ek,endorsement key),生成平台身份认证密钥(aik);被验证端将节点id、平台身份认证密钥(aik)公钥、背书密钥(ek)公钥发往keylime验证端;keylime验证端通过背书密钥公钥加密平台身份认证密钥(aik)公钥的哈希值和随机密钥,并发给keylime被验证端;被验证端收到后,使用背书密钥(ek)私钥进行解密并验证,使用随机密钥生成被验证端id的消息认证码,发往keylime验证端;验证端收到后,使用随机密钥解密,得到被验证端的id,完成认证;步骤2.2:进行证据信息数据传输。使用平台身份认证密钥(aik)私钥对所有节点证明信息以及随机数(用于防止重放攻击)进行签名,并发往验证端;步骤2.3:keylime验证端收到证明信息后,使用平台身份认证密钥(aik)公钥进行解密,解密成功表示被验证端身份核验通过,否则表示被验证端身份核验失败,丢弃该证明信息数据文件。keylime验证端第一次解密成功得到证据信息时,将该证据信息存储作为基准值库。
23.步骤3:keylime验证端进行完整性证明,并给出证明结果。
24.收到证据信息后,keylime验证端使用aik公钥进行解密,得到宿主机及虚拟机的证据数据,逐节点进行验证。对于节点(宿主机或虚拟机)的完整性验证,首先使用度量日志重新计算pcr值,与原pcr值比较是否相等,不相等则远程验证失败;然后对基准值库文件和度量日志文件进行对比,出现文件内容值不匹配的情况则远程验证失败。如果验证均通过,则完成该节点的远程证明,认为该节点完整性未遭到破坏。所有节点均通过远程证明,则说明被验证端完整性未遭到破坏;否则,表示存在节点完整性状态遭到破坏,对被破坏的节点及时管控,减少用户损失。
25.附图3给出虚拟机远程证明工作的时序图,其工作流程是:(1)keylime验证端与被验证端建立连接;(2)keylime验证端向被验证端发起远程证明请求;(3)被验证端vmm层的数据采集模块利用tpm_tools、libvmi完成对节点(宿主机以及虚拟机)的pcr值和度量日志采集;(4)被验证端合并节点远程证明数据,并将证据文件发送到验证端中;(5)keylime验证端收到数据后,对远程证明数据进行验证,并得到远程证明结果。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献