基于虚拟机状态数据的全过程可信启动检验方法与流程

文档序号:17697410发布日期:2019-05-17 21:44阅读:200来源:国知局
基于虚拟机状态数据的全过程可信启动检验方法与流程

本发明涉及信息安全领域,具体涉及基于虚拟机状态数据的全过程可信启动检验方法。



背景技术:

以资源动态分配、按需服务为设计理念的“云计算”技术是当今社会乃至未来几年全球最值得关注的技术革命。云计算以其动态、弹性、负载均衡等优点备受政府、军队、和企事业单位等用户的青睐,而且随着云计算技术的成熟与应用以及当今社会对处理海量数据和进行复杂计算需求的日益增长,越来越多的用户将业务平台由传统的物理硬件平台拓展到虚拟化平台。同时,随着云计算的广泛应用及攻击手段和工具的成熟,云平台中虚拟机所面临的安全形势越来越复杂。尤其是公有云平台中,如果一台虚拟机在启动伊始就被恶意控制或者相关启动数据遭到篡改,那么在不同时段使用该虚拟机服务的云用户的数据将可能会遭到窃取甚至被恶意破坏。因此,保证云平台下虚拟机的可信启动是至关重要的。虚拟机的可信启动将为云环境中用户对计算机的使用提供可信源头,从而完成从物理硬件平台到云环境虚拟机的完整可信链的建立。

对于计算机系统最常见的攻击基本都是利用系统的某个漏洞来完成的,而现有的技术大多关注虚拟机操作系统运行过程中的安全性,而对虚拟机操作系统的可信启动方案的研究不是太全面。专利公开号为cn201610461567.8专利名称为“一种基于tpm构建可信启动控制的方法”的专利申请通过在可信引导模块实现自定义的系统启动方式来对bios(基本输入输出系统)、内核加载、内核启动过程中的关键信息进行度量从而获取度量值,管理人员通过将度量值与基准值进行对比来判断虚拟机状态是否符合预期,并采取相应的措施。但是这种度量方式只是采集启动过程中的关键信息(此处的关键信息即为bios的软体函数、整个内核文件以及启动加载过程中诸如init进程和网络服务管理程序xinetd等的关键性函数),不能很好的保证虚拟机操作系统从启动到运行这个过程是安全的。黄涛、沈昌祥在论文“一种基于可信服务器的可信引导方案”中关注的重点则集中在基本输入输出系统bios通电自检到内核加载这部分过程,而对操作系统引导成功直至用户登录的过程鲜有涉及。方艳湘等在论文“linux可信启动的设计与实现”中主要关注了操作系统内核引导直到用户登录这一过程的完整性问题,通过对内核加载以及相关初始化进程的度量来保证可信启动,但是对于待度量的相关进程函数考虑不够全面,因此可信启动的安全性并不高。

以往的发明专利或是论文都是对虚拟机启动过程中一些重要的函数进行检验,这样容易造成某些微小的虚拟机系统函数被修改但是没有被虚拟机可信启动检验系统发现从而造成启动起来的虚拟机不可信,而本发明专利直接从虚拟机磁盘镜像数据的数据簇cluster入手,检验数据较为全面,避免了上述发明专利的致命缺点;其次,直接用哈希算法对系统状态数据进行运算省去了对使用mkimage工具得到的影像值运算这一步,提高了效率。

因此设计一种保证虚拟机全过程可信启动检验的方案是对于云平台下虚拟机运行获得可信源头是至关重要的。所以如何有效的保证云平台下虚拟机的可信启动是本领域技术人员目前需要解决的技术问题。



技术实现要素:

有鉴于此,为解决云环境下虚拟机的可信启动从而为上层应用建立其信任“源头”的问题,本发明的目的在于提供一种基于虚拟机状态数据的全过程可信启动检验方法来有效的保障虚拟机的可信。

本发明的特征在于,依次含有以下步骤:

步骤(1),系统的构建,所述系统包括:

控制节点:设有第一无线收发模块、第一cpu、系统状态数据库、虚拟可信根vtpcm基准值库,简称系统基准值库,其中:

系统状态数据库存有下述三类系统状态数据--哈希算法映射表:开源的基本输入输出系统seabios状态数据--sha-1哈希算法映射表,所述seabios数据包括:作为执行起点的重置矢量reset_vector、自检函数handle_post()和初始化函数maininit();主引导记录mbr的状态数据--sha-256哈希算法映射表;虚拟机磁盘镜像文件的数据簇cluster,简称cluster数据--md5算法映射表;

系统基准值库,包括:seabios数据基准值,数据格式为字符串类型的数据名称标识seabio_name,字符串类型的基准值数据seabio_data;主引导记录mbr数据基准值,数据格式为字符串类型的数据名称mbr以及字符串类型的基准值数据mbr_data;数据簇cluster数据基准值,数据格式为长整型的数据簇cluster编号cluster_inode以及字符串类型的具体某一个编号的数据簇cluster的基准值cluster_data;

第一cpu分别与第一无线收发模块、系统基准值库及系统状态数据库互连;

计算节点,设有:第二无线收发模块、本地节点状态数据库、本地虚拟可信根基准库以及虚拟可信根vtpcm生成模块tpcm,其中虚拟可信根vtpcm生成模块tpcm包括:第二cpu、可信密码模块以及虚拟可信根vtpcm计算模块;其中可信密码模块至少存有:哈希算法、对称加密算法、非对称加密算法;

步骤(2),系统控制节点初始化;

步骤(2.1),管理员依次把代码化后的步骤(1)所述的三类映射表按照顺序存入指定的系统状态数据库中及系统基准值库中,备存立案;

步骤(2.2),步骤(2.1)所述数据按以下两种数据组形式存入,以便存取:

<备案日期、计算节点的ip、功能标识dp、节点编号、映射表名称>存入系统状态数据库备案;

<备案日期、计算节点的功能标识dp、节点编号、虚拟可信根基准值的结构体>存入系统基准值库备案;

步骤(3),依次按以下步骤实现基于虚拟机状态数据的全过程可信启动检验;

步骤(3.1),第二cpu向所述第一cpu发出调用系统状态数据的请求,数据组格式为:<调用日期、调用节点的ip、功能标识dp、节点编号、三类系统状态数据的名称>;

步骤(3.2),请求节点通过控制节点的身份认证后,控制节点依次向请求节点发出步骤(1)中所述的三类系统状态数据;

步骤(3.3),所述第二cpu把接收到的三类系统状态数据依次发往本地节点状态数据库,形成三种所述的数据--哈希算法映射表;

步骤(3.4),设初始可信检验的时刻为t0,执行以下步骤:

步骤(3.4.1),第二cpu从本地节点状态数据库取出本地节点seabios状态数据--sha-1哈希算法映射表送往虚拟可信根vtpcm计算模块;

步骤(3.4.2),第二cpu从可信密码模块中调用sha-1哈希算法送往虚拟可信根vtpcm计算模块;

步骤(3.4.3),在第二cpu控制下,虚拟可信根vtpcm计算模块使用sha-1哈希算法依次对重置矢量reset_vector、自检函数handle_post()和初始化函数maininit()进行哈希运算,依次得到三个相应的基准值组成以下数组:<生成日期、计算节点的ip、功能标识dp、节点编号、seabios标识、重置矢量reset_vector基准值、自检函数handle_post()基准值、初始化函数maininit()基准值、时刻t0>;

步骤(3.5),在可信检验的启动模拟时刻,重复步骤(3.4.1)~步骤(3.4.3)得到t1时刻的数组;

步骤(3.6),第二cpu把步骤(3.4)~步骤(3.5)得到的值提取到第二cpu的比较模块中,比较两个所述数组是否相等,若相等则执行步骤(3.6.1),若有一项基准值不相等,则执行步骤(3.6.2);

步骤(3.6.1),发出seabios可信检验成功信号,第二cpu执行主引导记录mbr启动程序执行步骤(3.7);

步骤(3.6.2),发出系统故障信号,程序停止;

步骤(3.7),第二cpu以下面所述格式生成本地节点seabios状态数据的基准值数组,再存入本地节点的虚拟可信根基准值库同时送至控制节点备案,所述基准值数据格式为:<可信启动检验日期、时刻t1、计算节点的ip、功能标识dp、节点编号、seabios标识、重置矢量reset_vector基准值、自检函数handle_post()基准值、初始化函数maininit()基准值>;

步骤(3.8),用步骤(3.4)~步骤(3.7)中所述方法检验主引导记录mbr是否可信启动;

步骤(3.9),用步骤(3.4)~步骤(3.7)中所述方法检验虚拟机镜像数据簇是否可信启动。

本发明的优点在于,用对开源的基本输入输出系统seabios、主引导记录mbr、操作系统磁盘镜像数据的执行函数的程序块式数据簇cluster的信息去代替传统技术中的对虚拟机启动关键函数取度量值,信息更为全面、数据更加可靠;其中,直接用哈希算法对系统状态数据进行运算省去了对使用mkimage工具得到的影像值运算这一步,提高了效率。

附图说明

图1为本发明实施实例的系统结构图;

图2为本发明实施实例的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明的技术方案进行清晰、详细的描述;为了使本领域技术人员更好地理解本发明方案,下面结合具体实施方式对本发明作进一步的详细解释说明。

下面是对本发明的详细流程进行说明:

步骤(1),系统的构建,所述系统包括:

控制节点:设有第一无线收发模块、第一cpu、系统状态数据库、虚拟可信根vtpcm基准值库,简称系统基准值库,其中:

系统状态数据库存有下述三类系统状态数据--哈希算法映射表:开源的基本输入输出系统seabios状态数据--sha-1哈希算法映射表,所述seabios数据包括:作为执行起点的重置矢量reset_vector、自检函数handle_post()和初始化函数maininit();主引导记录mbr的状态数据--sha-256哈希算法映射表;虚拟机磁盘镜像文件的数据簇cluster,简称cluster数据--md5算法映射表;

系统基准值库,包括:seabios数据基准值,数据格式为字符串类型的数据名称标识seabio_name,字符串类型的基准值数据seabio_data;主引导记录mbr数据基准值,数据格式为字符串类型的数据名称mbr以及字符串类型的基准值数据mbr_data;数据簇cluster数据基准值,数据格式为长整型的数据簇cluster编号cluster_inode以及字符串类型的具体某一个编号的数据簇cluster的基准值cluster_data;

第一cpu分别与第一无线收发模块、系统基准值库及系统状态数据库互连;

计算节点,设有:第二无线收发模块、本地节点状态数据库、本地虚拟可信根基准库以及虚拟可信根vtpcm生成模块tpcm,其中虚拟可信根vtpcm生成模块tpcm包括:第二cpu、可信密码模块以及虚拟可信根vtpcm计算模块;其中可信密码模块至少存有:哈希算法、对称加密算法、非对称加密算法;

步骤(2),系统控制节点初始化;

1.由于开源的系统虚拟化模块kvm虚拟机默认使用开源的基本输入输出系统seabios,且默认seabios(开源的基本输入输出系统)+mbr(主引导记录)模式来加载系统。因此,在确保虚拟机启动环境安全的情况下,第一次启动的时候首先需要获取开源的基本输入输出系统seabios相关执行函数的数据并按照定义的格式存储至系统状态数据库。由于开源的基本输入输出系统seabios是一个开源的16bitx86bios(基本输入输出系统)程序,能像正常的基本输入输出系统bios一样,在虚拟机上电的时候,被加载到地址空间0xfffffff0处(该处是一条跳转指令),虚拟机的虚拟中央处理器vcpu会去执行开源的基本输入输出系统seabios的代码,完成硬件的初始化。虚拟机的虚拟中央处理器vcpu上电之后开始执行的起点为reset_vector,经历一系列跳转之后将会开始执行函数handle_post()来开启通电自检post阶段,自检阶段完成之后会跳转到函数maininit()对各种系统资源进行初始化。

由上述分析易知对开源的基本输入输出系统seabios的数据采集主要分为三个部分,分别为开源的基本输入输出系统seabios的执行起点重置矢量reset_vector、自检函数handle_post()和初始化函数maininit();保证上述三部分代码的完整性可以保证自检和初始化阶段的安全性。所以,将所述三部分数据及相应的哈希算法按照设定的格式建立数据--算法的映射表。

2.将虚拟机操作系统磁盘镜像进行挂载,获取挂载的虚拟机操作系统磁盘镜像数据的主引导记录mbr的分区表数据并按照设定的格式建立数据--算法的映射表;

3.虚拟机镜像文件其实就是一个安装有操作系统的磁盘分区,客户操作系统需要经过一个驱动层才能访问到它。qcow2(一种磁盘镜像存储格式)镜像格式存储文件的基本单元为数据簇cluster,即块设备的数据保存在数据簇cluster中,每个数据簇cluster由多个数据扇区组成,每个数据扇区有512个字节,扇区中存放的就是数据。因此,将挂载的磁盘镜像数据的数据簇cluster数据按照设定的格式建立数据--算法映射表;

系统状态数据库中映射表以下表设定的形式来存放:

步骤(2.1),管理员依次把上述步骤所述的三类映射表按照顺序存入指定的系统状态数据库中及系统基准值库中,备存立案;

步骤(2.2),步骤(2.1)所述数据按以下两种数据组形式存入,以便存取:

<备案日期、计算节点的ip、功能标识dp、节点编号、映射表名称>存入系统状态数据库备案;

<备案日期、计算节点的功能标识dp、节点编号、虚拟可信根基准值的结构体>存入系统基准值库备案;

步骤(3),依次按以下步骤实现基于虚拟机状态数据的全过程可信启动检验;

步骤(3.1),第二cpu向所述第一cpu发出调用系统状态数据的请求,数据组格式为:<调用日期、调用节点的ip、功能标识dp、节点编号、三类系统状态数据的名称>;

步骤(3.2),请求节点通过控制节点的身份认证后,控制节点依次向请求节点发出步骤(1)中所述的三类系统状态数据;

步骤(3.3),所述第二cpu把接收到的三类系统状态数据依次发往本地节点状态数据库,形成三种所述的数据--哈希算法映射表;

步骤(3.4),设初始可信检验的时刻为t0,执行以下步骤:

步骤(3.4.1),第二cpu从本地节点状态数据库取出本地节点seabios状态数据--sha-1哈希算法映射表送往虚拟可信根vtpcm计算模块;

步骤(3.4.2),第二cpu从可信密码模块中调用sha-1哈希算法送往虚拟可信根vtpcm计算模块;

步骤(3.4.3),在第二cpu控制下,虚拟可信根vtpcm计算模块使用sha-1哈希算法依次对重置矢量reset_vector、自检函数handle_post()和初始化函数maininit()进行哈希运算,依次得到三个相应的基准值组成以下数组<生成日期、计算节点的ip、功能标识dp、节点编号、seabios标识、重置矢量reset_vector基准值、自检函数handle_post()基准值、初始化函数maininit()基准值、时刻t0>;其中,开源的基本输入输出系统seabios数据使用哈希算法中的sha-1算法对所述数据进行运算,存储开源的基本输入输出系统seabios相关数据基准值的格式设定如下:

步骤(3.5),在可信检验的启动模拟时刻,重复步骤(3.4.1)~步骤(3.4.3)得到t1时刻的数组;

步骤(3.6),第二cpu把步骤(3.4)~步骤(3.5)得到的值提取到第二cpu的比较模块中,比较两个所述数组是否相等,若相等则执行步骤(3.6.1),若有一项基准值不相等,则执行步骤(3.6.2);

步骤(3.6.1),发出seabios可信检验成功信号,第二cpu执行主引导记录mbr启动程序,执行步骤(3.7);

步骤(3.6.2),发出系统故障信号,程序停止;

步骤(3.7),第二cpu以下面所述格式生成本地节点seabios状态数据的基准值数组,再存入本地节点的虚拟可信根基准值库同时送至控制节点备案,所述基准值数据格式为:<可信启动检验日期、时刻t1、计算节点的ip、功能标识dp、节点编号、seabios标识、重置矢量reset_vector基准值、自检函数handle_post()基准值、初始化函数maininit()基准值>;

步骤(3.8),用步骤(3.4)~步骤(3.7)中所述方法检验主引导记录mbr是否可信启动;主引导记录mbr数据基准值的格式设定如下:

步骤(3.9),用步骤(3.4)~步骤(3.7)中所述方法检验虚拟机镜像数据簇是否可信启动;

从所述系统状态数据库中调出虚拟机镜像数据簇cluster数据,对每一个数据簇cluster均使用哈希算法中的md5算法进行运算,存储镜像数据簇cluster数据基准值格式设定如下:

应当理解,虽然本说明书根据实施方式加以描述,但是并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为了清楚起见,本领域的技术人员应当将说明书作为一个整体,各个实施方式中的技术方案也可以适当组合,按照本领域技术人员的理解来实施。

上文所列出的一系列详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡是未脱离发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

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