一种虚拟机镜像文件的完整性度量优化方法与流程

文档序号:11864273阅读:1175来源:国知局
一种虚拟机镜像文件的完整性度量优化方法与流程

本发明提出了一种虚拟机镜像文件的完整性度量优化方法,具体涉及一种使用改进后的SHA1算法对虚拟机镜像文件完整度量的方法,并提供了一种新的度量策略。属于计算机科学的安全领域。



背景技术:

虚拟机镜像文件是用来存储虚拟机操作系统以及个人软件和个人数据的文件,虚拟机的启动和运行都需要其镜像文件的支持。如果虚拟机镜像文件被篡改,比如植入恶意代码等,就会导致个人数据的泄露或丢失,这对于虚拟机的正常运行和用户隐私的保护是极大的隐患,所以保证虚拟机镜像文件的完整性具有重要意义。

如今的镜像保护方案大多集中在镜像加密方面,通过对镜像文件进行加密,保证即使镜像文件被获取也无法读取其中的内容,但是这种方案却无法解决镜像文件被破坏或者被篡改的问题。完整性度量技术是一种保证文件完整性的方案,但是完整性度量一般应用在小文件度量场景,因为完整性度量需要读取整个文件并对文件计算一个消息摘要,而虚拟机镜像文件一般都在10GB以上,这样从磁盘中读取文件的速度也就是磁盘的带宽将影响整个度量算法的性能。

SHA1(Secure Hash Algorithm 1,安全哈希算法1)是一种计算文件消息摘要的算法,它的计算瓶颈也是从磁盘读取数据的速度,并且普通的多线程技术并不能提高计算速度,相反会因为磁头的切换导致磁盘读取速度的下降。因此本发明设计一种使用改进后的SHA1算法对虚拟机镜像文件完整度量的方法,并提供了一种新的度量策略。



技术实现要素:

本方法适用于64位的Linux操作系统。本方法首先对镜像文件分为基础镜像和增量镜像存储;然后根据应用场景对物理平台使用SSD(Solid State Drives,固态硬盘)设置大容量的swap(交换空间),同时针对SHA1算法的在镜像文件完整性度量应用场景下的运行瓶颈对SHA1算法通过内存映射机制、多线程技术进行了优化;最后提出新的度量策略,对基础镜像文件和增量镜像文件使用不同的策略进行完整性度量。

具体来说,根据本发明的一种虚拟机镜像文件的完整性度量优化方法包括:

步骤1,使用基础镜像加增量镜像存储的方式存储虚拟机镜像文件;

步骤2,利用swap、内存映射机制以及多线程的SHA1算法对镜像文件完整性度量算法进行优化;

步骤3,将基础镜像和增量镜像分不同的策略进行度量,即基础镜像进行周期性度量,增量镜像在虚拟机开关机时进行度量,从而减小完整性度量开销。

在一个实施例中,步骤1包括:

步骤11,创建基础镜像文件,基础镜像安装操作系统和一些基础软件,基础镜像始终保持不变,可以多个虚拟机共用;

步骤12,创建虚拟机时选择一个基础镜像,并为虚拟机创建增量镜像文件,增量镜像存储私有软件和个人数据,每个增量镜像对应一个虚拟机,虚拟机对镜像中所有的改变都记录在增量镜像里面。

在一个实施例中,步骤2包括:

步骤21,使用SSD为系统创建swap分区,当物理内存不足时会利用swap,使用SSD是为了提高性能;

步骤22,使用内存映射技术将要度量的镜像文件映射到进程的地址空间,可以解决频繁读取磁盘的问题;

步骤23,修改SHA1算法,将地址空间中的镜像文件分成N块,创建N个线程依次读取一块文件进行完整性度量,并分别生成一个160bit(位)摘要值MD1,MD2...MDn

步骤24,将生成的N个摘要值再次进行N-1次SHA1计算,生成最终的160bit的消息摘要MD=sha1(sha1(MD1,MD2),...MDn)。

在一个实施例中,步骤3包括:

步骤31,创建基础镜像bi时,使用步骤2中优化过的算法进行一次度量,保存为标准摘要值之后每过一个周期T,对基础镜像文件使用步骤2中优化过的算法进行完整性度量,得到最新的摘要值并与进行比较,即可发现基础镜像是否被篡改;

步骤32,虚拟机开机后增量镜像会改变,所以每次虚拟机关机后,对其增量镜像fj使用步骤2中优化的算法进行完整性度量,并更新为标准的摘要值每次虚拟机启动前,再次对其增量镜像fj使用步骤2中优化的算法进行一次度量,得到最新的摘要值并与进行比较,即可发现基础镜像是否被篡改。

附图说明

图1是虚拟机镜像文件完整性度量整体流程图。

图2是虚拟机镜像文件内存映射分块完整性度量图。

图3是基础镜像文件完整性度量流程图。

图4是增量镜像文件完整性度量流程图。

具体实施方式

为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。

本发明的主要思想是利用内存映射技术、多线程技术以及将镜像文件分为基础镜像和增量镜像分别度量的策略,对虚拟机镜像文件提供完整性保护,利用优化过的算法,能够显著提高完整性度量的效率,增强虚拟机的安全性。

下面以一实例进行说明:

步骤1,使用基础镜像加增量镜像存储的方式存储虚拟机镜像文件,实例中虚拟机VM1有一个基础镜像b1,增量镜像f1

步骤2,利用swap、内存映射机制以及多线程的SHA1算法对镜像文件完整性度量算法进行优化,如图2。

步骤3,将基础镜像和增量镜像分不同的策略进行度量,即基础镜像进行周期性度量,增量镜像在虚拟机开关机时进行度量,从而减小完整性度量开销。

其中,步骤2包括:

步骤21,使用SSD为系统创建swap分区,当物理内存不足时可以将数据存储在swap中;

步骤22,内存映射函数mmap64是将要度量的镜像文件映射到进程的地址空间,64位系统中每个进程的虚拟内存空间中用户空间有128TB,足够映射镜像文件,映射函数如下:

ptr=mmap64(0,len,PROT_READ,MAP_SHARED,fd,0);

其中第一个参数0代表令操作系统自动映射,len是文件的大小,PROT_READ代表映射后的内存页可以被读取,MAP_SHARED代表与其他使用这个文件的进程共享映射空间,fd是打开的镜像文件的文件描述符,最后一个参数0代表从镜像文件的头部开始映射;返回值ptr是被映射区的指针;

步骤23,修改SHA1算法,实例中主机有12个逻辑CPU,将地址空间中的镜像文件分成12块,每块文件大小为len/12,创建12个线程依次读取一块文件进行度量,并分别生成一个160bit摘要值MD1,MD2...MD12

步骤24,将生成的12个摘要值再进行11次SHA1计算,生成最终的160bit的消息摘要MD=sha1(sha1(sha1(MD1,MD2),MD3)...MD12)。

其中,步骤3包括:

步骤31,如图3,创建基础镜像b1时,使用步骤2中优化过的算法进行一次度量,并保存为标准摘要值实例中设定度量周期T=24小时,每过24小时,对基础镜像文件使用步骤2中优化过的算法进行一个完整性度量,得到最新的摘要值并与最初创建镜像文件时的度量值进行比较。如果则表示镜像没有被改动过,否则,表示基础镜像bi已经被篡改,继续使用则可能带来安全隐患;

步骤32,如图4,每次虚拟机关机后,对其增量镜像f1使用步骤2中优化的算法进行一次度量,并更新为标准的摘要值每次虚拟机启动前,再次对其增量镜像fj使用步骤1中优化的算法进行一次度量,得到最新的摘要值并与之前的标准摘要值进行比较。如果则表示镜像没有被改动过;否则,表示增量镜像fj已经被篡改,虚拟机处于不安全状态。

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