虚拟磁盘安全存储方法与流程

文档序号:31716003发布日期:2022-10-04 21:51阅读:40来源:国知局
1.本发明涉及信息安全
技术领域
:,具体涉及一种虚拟磁盘安全存储方法。
背景技术
::2.云计算时代离不开对海量数据的处理和存储,海量数据的存储往往需要安全的磁盘镜像存储方法,且磁盘镜像一旦出现问题,将严重影响云计算中心的数据安全。为提高海量虚拟机磁盘镜像的数据安全,往往需要在数据存储时进行加密,使用时候进行解密。3.从原理上来说,安全存储要解决的问题是两个:1、如何保证文件数据完整可靠不泄密。4.2、如何保证只有合法的用户,才能够访问相关的文件。5.解决上述两个问题,需要使用数据加密和认证授权管理技术,这也是安全存储的核心技术。在安全存储中,利用技术手段把文件变为乱码(加密)存储,在使用文件的时候,用相同或不同的手段还原(解密)。这样,存储和使用,文件就在密文和明文状态两种方式切换。既保证了安全,又能够方便的使用。加密包括两个元素:算法和密钥对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。对称加密以数据加密标准(des,dataencryptionstandard)算法为典型代表,非对称加密通常以rsa(rivestshamirad1eman)算法为代表。对称加密的加密密钥和解密密钥相同,而非对称加密的加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密。6.一般来说,非对称密钥主要用于身份认证,或者保护对称密钥。而日常的数据加密,一般都使用对称密钥。7.现代的成熟加密解密算法,都具有可靠的加密强度,除非能够持有正确的密钥,否则很难强行破解。在安全存储产品实际部署的时候,如果需要更高强度的身份认证,还可以使用u-key,这种认证设备,在网上银行应用很普遍。8.采用加密和身份认证技术,存储就有了可靠的保障。9.作为最常用的虚拟机镜像存储的加密方法:在块设备读写函数的地方进行处理。在write的时候对数据进行加密,在read的时候进行解密,密钥可以动态传入,或者存放在密钥卡上,具体加密算法可以根据你使用场景来选用合适自己需要的。10.安全存储本质上还是存储,可以作为文件和数据的远程分布式存放中心。与一般的存储相比,分布式存放更安全更可靠,能够胜任需要保密的领域。如果数据放在一个地方,破解一次就可以得到所有数据,如果数据放在不同地方,这样要同时破解多个地方才能完全恢复完整数据,需要同时破解多个远程的存储中心。所以我们的方案是让磁盘镜像有多个分块组成,数据分散在各个镜像文件,各个镜像文件可以存储在不同的数据中心。这样即使某1个数据中心被破解,也无法还原磁盘镜像内容。因此需要虚拟磁盘文件支持分块存储,把不同的存储块放在不同的存储位置。而我们专利针对的就是让qcow2格式的磁盘镜像文件可以分块存储到不同的文件,运行时候也可以从各个存储块读到之前存入的数据。这样让虚拟机的数据存储到不同位置,达到存储安全的目的。11.中国发明专利“一种创建磁盘镜像文件加密快照、使用的方法及存储介质”(专利号:cn109376119a)。本发明实施例公开了一种创建磁盘镜像文件加密快照、使用的方法及存储介质,属于虚拟化领域。其中创建磁盘镜像文件加密快照的方法包括步骤:解析密钥参数,生成cipher密码信息供加解密文件使用;将cipher密码信息拷贝至源文件操作选项中;根据源文件的操作选项打开源文件;判断源文件是否打开成功,如成功,创建快照,并设置快照的加密信息。本发明实施例操作快照时,可利用快照的密钥解密源文件,改变现有功能中无法同时为源文件和快照传递密钥的问题,实现加密功能与快照功能的同时实现。实现了创建qemuqcow2的磁盘镜像文件加密快照。这个并没有提高加密安全性,主要是加密和快照功能同时实现。12.中国发明专利“基于租户身份信息的可信虚拟机vtpm私密信息保护方法、系统”(专利号:cn111683052a)。本发明公开了一种基于租户身份信息的可信虚拟机vtpm私密信息保护方法、系统,其中,方法包括:建立物理可信平台模块的两个不可迁移密钥rsa_local和rsa_mig,并为rsa_mig密钥生成相应的数字证书certificate_mig;由云租户在本地主机上生成身份认证信息并保存;在创建可信虚拟机时,为每一个虚拟机的vtpm实例分别创建一个vtpm标签;获取identity_info身份认证信息、vtpm标签及tenant_info进行完整性、时效性、合法性和一致性检查;同样,在可信虚拟机运行阶段、迁移可信虚拟机时、在退出、销毁、挂起、快照阶段,进行对应字段的完整性、时效性、合法性和一致性检查。本发明能够对添加到基于kvm虚拟化技术的iaas云平台中的基于libtpms软件模拟的vtpm,进行全生命周期的安全防护,防止其私密信息泄露。该专利是利用tpm模块进行可性验证,在关机情况下磁盘安全没有得到保护。13.中国发明专利“虚拟机数据保护系统和方法”(专利号:cn103902884a)。该专利公开了一种虚拟机数据保护系统和方法,涉及云计算虚拟化数据安全
技术领域
:。通过对访问虚拟机数据的请求在domain0中进行验证、标记和网络控制,结合虚拟机内部的数据行为和流向监控,达到对虚拟机数据安全访问的目的。解决了在多租户虚拟机环境下,由于虚拟机部署的服务有漏洞或者配置错误、虚拟机的应用或内核有bug而导致被云外或其他虚拟机非法访问的问题。该专利主要是针对运行时候的数据安全。14.中国发明专利“一种数据安全存储和快速调用的方法及移动终端”(专利号:cn109829324a)。本发明公开了一种数据安全存储和快速调用的方法及移动终端,包括:对系统需要存储在开放的公共路径下的数据进行加密;将加密后的数据存储在所述开放的公共路径下;对所述开放的公共路径下的数据进行解密,并将解密后的数据存放至虚拟内存中,并根据存放地址形成映射后路径;对访问路径默认为所述开放的公共路径的系统调用接口进行修改,将所述系统调用接口的访问路径修改为所述的映射后路径,进而使系统从所述虚拟内存中调取解密后的数据使用。本发明不仅可以解决系统默认路径下的数据的安全存储问题,而且可以提高数据的调用速度,避免出现系统卡顿、无响应等现象,很好地解决了数据存储安全性问题与数据调用快速性问题之间的矛盾。该专利只是针对存储在开放的公共路径下的数据进行加密。15.中国发明专利“基于虚拟磁盘的移动终端数据安全存储方法”(专利号:cn109325355a)。本发明提供了一种基于虚拟磁盘的移动终端数据安全存储方法,属于信息安全领域。本发明的工作方式是首先在硬盘中创建独立磁盘分区,通过创建一个固定大小的文件模拟磁盘分区,然后将该文件内容格式化为自定义文件系统,便可以将其模拟成一块磁盘,即虚拟磁盘。最后结合实时加密技术,在读写磁盘的过程中加入加解密方法,就可以保证数据的安全性。本发明为独立的磁盘分区定制加密文件系统,构造内存中的明文和磁盘上的密文的加解密管道,避免磁盘留下明文痕迹,提供透明的数据保护。本发明具有较高的安全性和灵活性,为移动终端中的数据提供了强有力的保护,可自定义加密文件系统和身份验证机制,还可提供多种加密算法和工作模式。这个专利实现的加密方式是qemu已经支持磁盘的数据段加密。16.中国发明专利“一种差分虚拟磁盘链接方法”(专利号:cn108228108a)。该专利公开了一种差分虚拟磁盘链接方法,包括以下步骤:1)差分虚拟磁盘文件格式改进,将记录的原始虚拟磁盘路径信息,由当前的本物理机系统内的绝对路径或相对路径,修改为通过网络可以访问的url路径信息;2)虚拟磁盘驱动改进,差分虚拟磁盘的读写,依赖虚拟磁盘驱动,需要虚拟磁盘驱动根据差分虚拟磁盘记录的网络路径信息,通过ip网络访问服务器上的原始虚拟磁盘文件;3)虚拟磁盘访问服务,存放原始虚拟磁盘文件的主机,提供原始虚拟磁盘访问的网络服务,监听来自差分虚拟磁盘主机的访问请求,根据请求完成原始虚拟磁盘的读写操作;具有差分虚拟磁盘和其原始虚拟磁盘分开部署,跨主机访问的特点,便于快速部署,数据安全和访问速率兼顾的优点。该专利在qcow2格式中已经有“backingfile”的特性来实现,已某个镜像为基准盘(一般装了最基本的os文件和数据),其他需要基的磁盘可以指定这个为backingfile,后面差分写入的内容会写道各自的虚拟磁盘中,如果创建多级backingfile,修改之前的数据会导致数据冗余,这样分块的耗费磁盘空间代价很大。技术实现要素:17.为解决已有技术存在的不足,本发明提供了一种虚拟磁盘安全存储方法,包括如下步骤:步骤s1:使用qemu-img工具创建一组分块的虚拟磁盘文件,虚拟磁盘文件的分块信息被写入第一个虚拟磁盘文件的文件头里;步骤s2:启动虚拟机,通过qemu-kvm程序指定虚拟磁盘镜像的第一个虚拟磁盘文件,读到分块信息,找到其它虚拟磁盘文件的镜像;步骤s3:在qemu打开qcow2虚拟磁盘镜像,通过分块信息,建立分块meta信息;步骤s4:根据相应的读写请求的分块的范围,把相应的读写请求分别发送到对应的虚拟磁盘镜像的虚拟磁盘文件来处理。18.其中,所述步骤s1中,通过如下命令行创建一组分块的虚拟磁盘文件:qemu-imgcreateꢀ‑fqcow2ꢀ‑d参数1xxxx.qcow2参数2;其中,参数1为所创建的每块虚拟磁盘文件的大小,参数2为整个虚拟磁盘镜像的大小。19.其中,所述步骤s1中,通过在qcow2_co_create_opt函数的源码中加入镜像定位层,为每个创建的虚拟磁盘文件确定寻址范围;所述步骤s2中,通过在qcow2_open函数的源码中加入镜像定位层,读取第一个虚拟磁盘文件中的分块信息,并找到其它虚拟磁盘文件的镜像;所述步骤s4中,通过在qcow2_co_preadv及qcow2_co_pwritev函数的源码中加入镜像定位层,实现在处理读写请求时确定对应的虚拟磁盘镜像的虚拟磁盘文件。20.其中,所述步骤s4中,在qcow2_co_preadv及qcow2_co_pwritev函数的源码中加入的镜像定位层包括offset参数及bytes参数,其中,offset参数用于确定虚拟磁盘镜像的偏移位置,bytes参数用于确定请求的内容大小。21.其中,所述步骤s1中,通过在第一个虚拟磁盘文件的镜像的文件头里添加字段div_img_size来保存虚拟磁盘文件的分块信息。22.其中,所述步骤s1中,虚拟磁盘文件的分块信息被保存在第一个虚拟磁盘文件的文件头的如下目录中:uint64_tdiv_img_size//。23.本发明提供的虚拟磁盘安全存储方法,通过将数据存储在不同的虚拟磁盘文件中,在其中一部分镜像被窃取的情况下无法恢复完整镜像的内容,确保了虚拟磁盘镜像里面数据的安全性。附图说明24.图1:本发明的基础技术构思逻辑图。25.图2:已有技术的虚拟磁盘镜像io寻址流程图。26.图3:本发明的基于qcow2虚拟磁盘镜像分块后的io寻址流程图。具体实施方式27.为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。28.图1为本发明的基础构思逻辑图:目前,大多数情况使用qcow2虚拟磁盘镜像都是存储在一个文件中,如果使用了backingfile功能,可能还有一个黄金镜像。如果这个虚拟磁盘镜像文件所存放的地方发生了信息泄漏,虚拟机中存储的所有数据就很容易被盗取者获取到。然而如果虚拟磁盘镜像可以由多个文件共同组成,再把每个分块的镜像放到不同的位置,这样就好比“把鸡蛋放在不同的篮子里面了”,如果盗窃者只拿到一部分镜像,根本无法恢复完整镜像里面的内容。这样让虚拟磁盘镜像分块存储到不同位置就提高了虚拟磁盘镜像里面数据的安全性。29.为了实现上述目的,需要解决以下问题:1、如何分块分块的策略,为了不再增加寻址的复杂度,我们可以在制作虚拟磁盘镜像(qemu-imgcreate)的时候就指定每个分块可以寻址的范围,操作范围自动再创建下一个分块镜像,每个分块都是qcow2格式,这样在创建的时候分块所占存储空间也是很小的,随着不断的数据写入镜像慢慢扩大,保留了qcow2最好的特性。30.2、在哪一层截获虚拟机的读写请求实现存储镜像的分块存储通过修改qemu源码中的qcow2.c中qcow2_co_create_opt/qcow2_open/qcow2_co_preadv/qcow2_co_pwritev的源码,在其中加入镜像定位层(把读写请求分配到哪个镜像读写)来实现镜像的分块存储。31.3、分块信息保存在哪里存在第一虚拟磁盘文件的qcow2header里面,通过div_img_size字段记录分块大小。这样也就可以区分谁是第一个镜像了。下次打开的时候读出来也就知道分块信息了。32.针对要解决的技术难题,本发明主要从qcow2格式的原理进行分析,然后在qemu源代码中关于qcow2格式镜像的代码进行优化,通过修改qcow2系列接口方法添加镜像定位层代码,来实现镜像的分块存储,同时不影响原有的使用接口和习惯。33.图2为已有技术的虚拟磁盘镜像io寻址流程图,qcow2通用寻址流程如下:通过读取qcow2_header定位到level1table在虚拟磁盘镜像中的位置,再通过在level1table查到寻址对应的level2table的位置,再查到具体存放数据的cluster对应的offset。34.加入了本发明的qcow2分块设计后,流程图如图3所示,基于此,形成了本发明的虚拟磁盘安全存储方法:1、使用qemu-img工具创建分块虚拟磁盘镜像假设需要将一个80g大小的虚拟磁盘镜像分块为8个虚拟磁盘文件,则使用如下命令行:qemu-imgcreateꢀ‑fqcow2ꢀ‑d10gxxxx.qcow280g,它会根据所指定的虚拟磁盘镜像大小自动创建一组分块的虚拟磁盘文件,创建时,通过在qcow2_co_create_opt函数的源码中加入镜像定位层,为每个创建的虚拟磁盘文件确定寻址范围;分块大小的信息等可以写到第一个虚拟磁盘文件的文件头里。具体的,在qcowheader最后添加个字段(div_img_size)保存“分块大小”信息到第一个虚拟磁盘文件里。35.[0-10g]:xxxx.qcow2[10-20g]:xxxx.qcow2.div1[20-30g]:xxxx.qcow2.div2[30-40g]:xxxx.qcow2.div3[40-50g]:xxxx.qcow2.div4[50-60g]:xxxx.qcow2.div5[60-70g]:xxxx.qcow2.div6[70-80g]:xxxx.qcow2.div7。[0036]如此,分块的虚拟磁盘镜像已经创建起来,接下来需要让虚拟机知道所创建的虚拟磁盘镜像是分块的虚拟磁盘镜像,也就是虚拟机启动的时候需要读取这个分块信息。[0037]2、启动虚拟机,通过qemu-kvm程序指定虚拟磁盘镜像的第一个分块虚拟磁盘文件,读到分块大小,找到其它虚拟磁盘文件的分块镜像,确定好每个虚拟磁盘文件负责存储的范围;具体的,通过在qcow2_open函数的源码中加入镜像定位层,读取第一个虚拟磁盘文件中的分块信息,并找到其它虚拟磁盘文件的镜像。[0038]3、在qemu打开qcow2虚拟磁盘镜像,通过分块信息,建立分块meta信息。具体的,虚拟机读取了第一个虚拟磁盘文件的分块信息后,知道了所有的虚拟磁盘文件的分块镜像,之后让程序通过meta信息对上述分块信息进行一个数据的体现,也即,通过meta信息将虚拟磁盘镜像的分块信息进行数据的描述后,将其加载到内存里面,构成一个数据模型,使得程序能够通过meta信息去寻址,在进行相应的读写操作的时候,不用重复去第一个虚拟磁盘文件的文件头里读取分块信息。[0039]至此,虚拟磁盘镜像的分块操作已完成,之后可以进行针对虚拟磁盘镜像的读写操作。[0040]在向虚拟磁盘镜像进行读写操作的时候,文件系统层会自动管理虚拟磁盘镜像,自动划分新建的文件从哪个位置写起,程序根据文件系统层反馈的信息去寻址并完成读写。[0041]4、读请求操作在qemu的qcow2处理“读”read请求的时候,根据分块范围把请求分别发送到对应虚拟磁盘镜像所分块的虚拟磁盘文件来处理。通过在qcow2_co_preadv函数的源码中加入镜像定位层,确保在处理读请求时寻址到对应的虚拟磁盘镜像的虚拟磁盘文件,具体包括如下步骤:(1)在qcow2_co_preadv函数的参数中有offset(虚拟磁盘偏移位置)和bytes(请求的内容大小),把这个请求根据虚拟磁盘镜像所分块的虚拟磁盘文件负责的范围,对io请求队列进行分割。[0042](2)根据分割后的请求要派发的虚拟磁盘文件,构建环境上下文。[0043](3)把分割后的请求队列,根据虚拟磁盘文件的镜像,派发下去执行。[0044]5、写请求操作在qemu的qcow2处理“写”write请求的时候,根据分块范围把请求分别发送到对应虚拟磁盘镜像所分块的虚拟磁盘文件来处理。通过在qcow2_co_pwritev函数的源码中加入镜像定位层,实现在处理写请求时寻址到对应的虚拟磁盘镜像的虚拟磁盘文件,具体包括如下步骤:(1)在qcow2_co_pwritev函数的参数中有offset(虚拟磁盘偏移位置)和bytes(请求的内容大小),把这个请求根据虚拟磁盘镜像所分块的虚拟磁盘文件负责的范围,对io请求队列进行分割。[0045](2)根据分割后的请求要派发的虚拟磁盘文件,构建环境上下文。[0046](3)把分割后的请求队列,根据虚拟磁盘文件的镜像,派发下去执行。[0047]本发明中,所谓的“虚拟磁盘文件”,是用文件模拟硬盘设备,给虚拟机使用的一种存储方式。从host(宿主机)上看虚拟机的磁盘就是一个文件,从guest(虚拟机)上看和普通硬盘没有区别。[0048]本发明中,所谓的“qcow2格式”,全称qemucopyonwrite格式,qemu虚拟机在“写(write)”操作发生的时候才动态增长虚拟磁盘镜像格式,和原生镜像格式(raw)对应它最大的特点就是当你真的需要存储数据的时候才会去分配空间,因此节省host主机上的磁盘空间。qcow2镜像格式是由多个固定大小的单元组织构成的,这些单元被称为cluster。无论是实际用户数据(guestdata)还是镜像的元数据(metadata),都在一个cluster单元中进行存储。[0049]和现有技术相比,本发明的优势在于:1、本发明通过把之前的一个磁盘镜像文件,打散到不同镜像文件,避免了一个磁盘镜像被盗取,整个虚拟磁盘里面所有数据都可以被破解的问题。[0050]2、在磁盘分块的策略上也可以有更多的安全设计,可以不用固定范围的分块策略,根据使用场景自定义安全加密策略。[0051]3、采用本发明,可以在不改变原有虚拟机使用接口和使用习惯的基础上来实现,对上层libvirt等兼容性很好。[0052]虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1