本发明涉及云计算技术,尤指一种云环境下虚拟可信根的校验方法和系统。
背景技术:
信息安全已成为制约云计算应用与发展的关键因素,其中云数据中心基础设施的安全性、云数据中心虚拟机租户数据及信息的完整性、云服务提供商与云服务租户之间的信任是提升云安全的关键基础,这些问题的解决需要从计算机底层硬件出发、从体系结构入手解决。可信计算作为一种从硬件平台出发、从体系结构入手,解决计算平台信息安全的安全技术,已成为提升云数据中心基础设施安全及租户信任问题的关键技术手段。当前,基于虚拟化功能的虚拟可信根技术已经实现,这使得虚拟机用户可以在虚拟机中使用信任链、远程证明等可信计算的核心技术。
虚拟可信根由特定的颁发者发布,作为一种安全组件可以为虚拟机提供密码学算法功能、安全存储等功能。虚拟可信根中存放了虚拟机用户的密钥等敏感信息,一旦虚拟可信根被恶意攻击者替换,虚拟机用户使用被替换的虚拟可信根加解密隐私数据时,可能会导致隐私数据被破坏。
目前,云管理平台中尚未集成虚拟可信根验证功能,虚拟机只使用虚拟可信根,云管理平台无法知悉虚拟可信根是否由已知颁发者颁发,一旦虚拟可信根被恶意攻击者替换,虚拟可信根会正常运行,而云管理平台无法及时知悉,用户数据面临被破坏的危险。
技术实现要素:
为了解决上述技术问题,本发明实施例提供了一种云环境下虚拟可信根的校验方法和系统,可以通过在云管理平台中集成虚拟可信根验证功能,防止后续程序使用虚拟可信根而导致隐私数据被破坏。
为了达到本发明目的,一方面,本发明实施例提供了一种云环境下虚拟可信根的校验方法,包括:
每次虚拟机加载运行可信根时,先由云管理平台验证所述虚拟可信根身份;
所述虚拟机根据所述云管理平台验证结果,选择是否继续加载运行所述虚拟可信根。
进一步地,所述方法包括:
虚拟机在虚拟可信根初始化完成后提取身份证书,生成身份验证请求信息;
将所述身份证书传递至云管理平台中验证身份;
虚拟机根据验证结果来判断是否执行内存映射操作。
进一步地,所述虚拟机在虚拟可信根初始化完成后提取身份证书之前还包括:
在生成所述虚拟可信根时,为每一个虚拟可信根颁发唯一的数字证书来表征身份,所述数字证书存放在虚拟可信根中;
将签发所述数字证书所用私钥对应的公钥公开出去,供虚拟可信根的使用者使用。
进一步地,所述将所述身份证书传递至云管理平台中验证身份之前还包括:
所述虚拟机在虚拟可信根初始化完成后,使虚拟可信根处于可用状态,然后再建立虚拟可信根与虚拟内存之间的映射关系,使得完成内存映射后其他程序访问使用所述虚拟可信根。
进一步地,所述方法还包括:
当虚拟机可信根被篡改后,通知虚拟机模拟器禁止虚拟可信根运行;
记录所述虚拟机的状态,以使所述云管理平台根据所述状态进行处理。
进一步地,所述方法还包括:
所述云管理平台集成有密钥管理模块和身份验证模块;其中所述密钥管理模块为身份验证模块提供密钥以及管理构建加密通道时使用的密钥;所述身份验证模块用于验证虚拟机上传身份证书的有效性;
所述云管理平台和所述虚拟机双方同时集成有加密通道管理模块,用于交互数据时构建加密通道;
所述虚拟机集成有虚拟可信根管理模块,用于读取身份证书以及构建加密通道时及进行加解密。
另一方面,本发明实施例还提供了一种云环境下虚拟可信根的校验系统,包括:
验证模块,用于每次虚拟机加载运行可信根时,先由云管理平台验证所述虚拟可信根身份;
选择加载模块,用于所述虚拟机根据所述云管理平台验证结果,选择是否继续加载运行所述虚拟可信根。
进一步地,所述系统用于:
虚拟机在虚拟可信根初始化完成后提取身份证书,生成身份验证请求信息;
将所述身份证书传递至云管理平台中验证身份;
虚拟机根据验证结果来判断是否执行内存映射操作。
进一步地,所述系统还用于:
在生成所述虚拟可信根时,为每一个虚拟可信根颁发唯一的数字证书来表征身份,所述数字证书存放在虚拟可信根中;
将签发所述数字证书所用私钥对应的公钥公开出去,供虚拟可信根的使用者使用。
进一步地,所述系统还用于:
所述虚拟机在虚拟可信根初始化完成后,使虚拟可信根处于可用状态,然后再建立虚拟可信根与虚拟内存之间的映射关系,使得完成内存映射后其他程序访问使用所述虚拟可信根。
本发明实施例通过每次虚拟机加载运行可信根时,先由云管理平台验证所述虚拟可信根身份;所述虚拟机根据所述云管理平台验证结果,选择是否继续加载运行所述虚拟可信根。本发明实施例可以通过在云管理平台中集成虚拟可信根验证功能,防止后续程序使用虚拟可信根而导致隐私数据被破坏。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例云环境下虚拟可信根的校验方法的流程图;
图2为本发明实施例云环境下虚拟可信根的校验系统的原理构架图;
图3为本发明实施例云环境下虚拟可信根的校验方法中的身份验证时序图;
图4为本发明实施例云环境下虚拟可信根的校验系统的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为本发明实施例云环境下虚拟可信根的校验方法的流程图,如图1所示,本发明实施例的方法包括以下步骤:
步骤101:每次虚拟机加载运行可信根时,先由云管理平台验证所述虚拟可信根身份;
其中,可信根为根据相关规范提供可信服务的安全设备,当前发布的可信根规范的有国外的可信平台模块(trustedplatformmodule,tpm)、国内的可信密码模块(trustedcryptographymodule,tcm);
虚拟可信根为在虚拟化层面为虚拟机提供可信根服务的模块;
云管理平台为云环境下管理各种计算、网路、存储等资源的平台,比较有代表性的有openstack、ovirt等;
步骤102:所述虚拟机根据所述云管理平台验证结果,选择是否继续加载运行所述虚拟可信根。
具体地,本发明实施例提出了一种云环境下虚拟可信根的校验方法,使得云管理平台可以验证每一虚拟机所部署的虚拟可信根的身份,当虚拟机可信根被篡改后可以通知虚拟机模拟器禁止虚拟可信根运行,防止后续程序使用虚拟可信根而导致隐私数据被破坏,同时记录该虚拟机的状态,方便云管理平台管理者处理问题。
本发明实施例技术方案围绕当前云管理平台尚未实现验证虚拟可信根身份的问题,提出了每次虚拟机加载运行可信根时先由云管理平台验证该虚拟可信根身份,虚拟机根据云管理平台验证结果选择是否继续加载运行虚拟可信根。
进一步地,所述方法包括:
虚拟机在虚拟可信根初始化完成后提取身份证书,生成身份验证请求信息;
将所述身份证书传递至云管理平台中验证身份;
虚拟机根据验证结果来判断是否执行内存映射操作。
具体地,虚拟机在初始化阶段会完成虚拟可信根的初始化,使虚拟可信根处于可用状态,然后再建立虚拟可信根与虚拟内存之间的映射关系,完成内存映射后其他程序才可以访问使用该虚拟可信根,因此虚拟机可以在虚拟可信根初始化完成后提取身份证书,将证书传递至云管理平台中验证身份,最后虚拟机根据验证结果来判断是否执行内存映射操作。
进一步地,所述虚拟机在虚拟可信根初始化完成后提取身份证书之前还包括:
在生成所述虚拟可信根时,为每一个虚拟可信根颁发唯一的数字证书来表征身份,所述数字证书存放在虚拟可信根中;
将签发所述数字证书所用私钥对应的公钥公开出去,供虚拟可信根的使用者使用。
具体地,虚拟可信根的颁发者在生成虚拟可信根时会为每一个虚拟可信根颁发唯一的数字证书来表征身份,该证书通常存放在虚拟可信根中,而虚拟可信根的发布者通常将签发该数字证书所用私钥对应的公钥公开出去,供虚拟可信根的使用者使用。
进一步地,所述将所述身份证书传递至云管理平台中验证身份之前还包括:
所述虚拟机在虚拟可信根初始化完成后,使虚拟可信根处于可用状态,然后再建立虚拟可信根与虚拟内存之间的映射关系,使得完成内存映射后其他程序访问使用所述虚拟可信根。
进一步地,所述方法还包括:
当虚拟机可信根被篡改后,通知虚拟机模拟器禁止虚拟可信根运行;
其中,虚拟机模拟器为可以模拟计算机硬件环境的软件,为其上运行的操作系统和软件提供模拟的硬件,比较有代表性的有qemu;
虚拟机管理工具提供统一的接口管理不同的虚拟机模拟器,比较有代表性的有libvirt。
记录所述虚拟机的状态,以使所述云管理平台根据所述状态进行处理。
进一步地,所述方法还包括:
所述云管理平台集成有密钥管理模块和身份验证模块;其中所述密钥管理模块为身份验证模块提供密钥以及管理构建加密通道时使用的密钥;所述身份验证模块用于验证虚拟机上传身份证书的有效性;
所述云管理平台和所述虚拟机双方同时集成有加密通道管理模块,用于交互数据时构建加密通道;
所述虚拟机集成有虚拟可信根管理模块,用于读取身份证书以及构建加密通道时及进行加解密。
图2为本发明实施例云环境下虚拟可信根的校验系统的原理构架图,如图2所示:
本发明实施例介绍的一种云环境下虚拟可信根的校验方法涉及的模块包括:密钥管理模块、身份验证模块、加密通道管理模块、虚拟可信根管理模块。其中,
密钥管理模块:云管理平台中集成的模块,主要功能是管理虚拟可信根颁发者的公钥,能实现密钥的增加、删除、查询等操作,为身份验证模块提供密钥。同时该模块还可以管理构建加密通道时使用的密钥。
身份验证模块:云管理平台中集成的模块,主要功能是验证虚拟机上传身份证书的有效性,云管理平台向虚拟机返回验证结果,并记录验证结果方便平台使用者查询定位问题;
加密通道管理模块:由云管理平台和虚拟机双方同时集成,每次虚拟机和云管理平台交互数据时通过该模块构建加密通道,防止交互信息被外界窃取并篡改;
虚拟可信根管理模块:虚拟机集成的模块,可以通过虚拟可信根的指令操作已初始化的虚拟可信根,主要负责读取身份证书、加解密,如构建加密通道时使用等操作。
图3为本发明实施例云环境下虚拟可信根的校验方法中的身份验证时序图,如图3所示:
本发明实施例介绍的一种云环境下虚拟可信根的校验方法可以包括以下步骤:
s301、虚拟机完成虚拟可信根初始化操作后,调用虚拟可信根创建非对称密钥a,以密钥a的公钥作为参数向云管理平台发起验证请求,密钥a的创建遵循如下公式(1)
na=pa*qa
φ(na)=(pa-1)*(qa–1)
ea=0x00010001
ea*damodφ(na)=1(1)
其中,下标a表示这是密钥a的参数,以区分后续的密钥;
pa和qa是两个互质的随机大数;
φ(na)表示na的欧拉数;
(na,ea)构成a的公钥,(da,na)构成a的私钥。
s302、云管理接收验证请求后提取并保存虚拟机上传信息中的a的公钥,生成随机数nonce1,同是提取云管理平台自身密钥b的公钥,使用a的公钥加密nonce1和b的公钥,将加密信息反馈至虚拟机中,同时记录nonce1,加密过程遵循公式(2);
mea=c(modna)(2)
其中,m表示明文,此处表示nonce1和(nb,eb),c表示加密后的密文。
s303、虚拟机获取加密信息,使用a的私钥解密加密信息获取nonce1和b的公钥,解密遵循公式(3);
cda=m(modna)(3)
s304、虚拟机读取虚拟可信根根中的身份证书,同时生成随机数nonce2,使用b的公钥加密身份证书、nonce1和nonce2,将密文返回至云管理平台中,同时记录nonce2;
s305、云管理平台获取虚拟机返回的密文后使用b的私钥解密密文,提取nonce1,判断nonce1是否还有效。然后获取虚拟可信根颁发者的公钥验证身份证书是否合法,生成并保存验证结果r,证书验证过程遵循公式(4);
d=digest(cer)
d’=sigecmodnc(4)
其中:cer代表证书的主体部分,sig代表证书的签名部分;
digest表示执行哈希计算;
(ec,nc)指代虚拟可信根颁发者的公钥;
如果d和d’相同,则说明身份证书验证通过,否则就算验证失败。
s306、云管理平台使用a的公钥加密nonce2和r,将密文反馈至虚拟机中,同时删除nonce1和a的公钥记录;
s307、虚拟机接收密文后使用b的公钥解密密文,提取nonce2,判断nonce2是否还有效,提取r,根据r判断是否执行虚拟可信根的内存映射操作。
本发明实施例技术实现具体过程如下:
为了使本发明实施例的目的、技术方案和优点更加清楚,本发明实施例以openstack为云管理平台、qemu为虚拟机模拟器、libvirt为虚拟机管理器、虚拟tpm2.0为虚拟可信根为例,并结合附图对发明做进一步详细描述。
身份验证请求:
当qemu完成虚拟tpm2.0初始化的操作后,就生成身份验证请求信息,发起验证流程。
s311、生成通信密钥a:qemu通过虚拟可信根管理模块向虚拟tpm2.0下发tpm2_create指令创建密钥,并执行tpm2_load指令加载该密钥,该密钥作为通信密钥a。qemu向虚拟可信根下发tpm2_readpublic获取a的公钥。
s312、上传验证请求信息:qemu通过libvirt将包含a的公钥的请求信息上传至openstack管理端。
身份验证:
s321、openstack生成通信校验信息:云管理平台获取由qemu上传的验证请求后,提取并存储其中a的公钥,然后生成一随机数nonce1作为通信校验信息,从密钥管理模块中获取自身的通信密钥b的公钥,使用a的公钥加密nonce1和密钥b的公钥,最终将密文下发给qemu;
s322、qemu获取通信密钥:qemu获取密文后,通过执行tpm2_rsadecrypt使用密钥a的私钥解密密文,获得nonce1和b的公钥,并存储nonce1和b的公钥;
s323、上传身份证书:qemu使用tpm2_nvread读取虚拟可信根中存放的身份证书,向虚拟可信根下发tpm2_getrandom指令生成随机数nonce2,然后通过向虚拟可信根下发tpm2_loadexternal加载b的公钥,最终通过执行tpm2_rsaencrypt命令使用b的公钥加密nonce1、nonce2及身份证书并上传密文;
s324、验证通信信息有效性:openstack获取qemu上传的密文后,使用密钥b解密得到nonce1,然后索引openstack存储的nonce值,如果能索引到,则说明nonce1未失效,可继续验证身份证书,并删除存放的nonce1;
需要说明的是:该过程主要是为了防止虚拟机上传的密文被恶意者监听后重放,正常情况下,nonce1由openstack下发给qemu,qemu再将其上传,验证通过后则openstack马上删除存放的nonce1,如果qemu上传的信息被恶意者监听后重新上传给openstack平台,由于openstack已经验证并删除了nonce1,第二条信息中nonce1已经失效,无法再进行后续操作;
s325、验证身份证书:openstack提出信息中的身份证书,根据证书中发布者的信息索引密钥管理模块获取对应的虚拟可信根颁发者的公钥,通过验签的方式验证证书是否由颁发者颁发,根据验签结果生成验证结果r,并存储r;
s326、下发验证结果:openstack使用a的公钥加密nonce2和验证结果r,将密文下发给qemu虚拟机,同时删除已经存储的a的公钥;
其中:每次进行身份验证时,qemu都要生成新的通信密钥,该过程一旦结束,则该密钥不再使用,因此openstack无需再管理密钥a。
s327、验证通信信息有效性:qemu获取密文后使用tpm2_rsadecrypt指令使用a解密密文,提取nonce2,判断nonce2是否有效,原理同步骤s324。解密完成后,立即向虚拟可信根下发tpm2_flushcontext指令擦除密钥a和密钥b的公钥,下次验证时再重新生成;
s328、获取验证结果:qemu获取信息中的验证结果r,如果r表征身份验证成功,则继续执行虚拟可信根的内存映射操作,使得后续的程序可以使用该虚拟可信根;如果r表征身份验证失败,则关闭已初始化的虚拟可信根,防止后续程序使用该虚拟可信根。
图4为本发明实施例云环境下虚拟可信根的校验系统的结构图,如图4所示,本发明实施例另一方面提供的一种云环境下虚拟可信根的校验系统,包括:
验证模块401,用于每次虚拟机加载运行可信根时,先由云管理平台验证所述虚拟可信根身份;
选择加载模块402,用于所述虚拟机根据所述云管理平台验证结果,选择是否继续加载运行所述虚拟可信根。
进一步地,所述系统用于:
虚拟机在虚拟可信根初始化完成后提取身份证书,生成身份验证请求信息;
将所述身份证书传递至云管理平台中验证身份;
虚拟机根据验证结果来判断是否执行内存映射操作。
进一步地,所述系统还用于:
在生成所述虚拟可信根时,为每一个虚拟可信根颁发唯一的数字证书来表征身份,所述数字证书存放在虚拟可信根中;
将签发所述数字证书所用私钥对应的公钥公开出去,供虚拟可信根的使用者使用。
进一步地,所述系统还用于:
所述虚拟机在虚拟可信根初始化完成后,使虚拟可信根处于可用状态,然后再建立虚拟可信根与虚拟内存之间的映射关系,使得完成内存映射后其他程序访问使用所述虚拟可信根。
综上所述,本发明实施例通过每次虚拟机加载运行可信根时,先由云管理平台验证所述虚拟可信根身份;所述虚拟机根据所述云管理平台验证结果,选择是否继续加载运行所述虚拟可信根。本发明实施例可以通过在云管理平台中集成虚拟可信根验证功能,防止后续程序使用虚拟可信根而导致隐私数据被破坏。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。