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

虚拟磁盘文件加密方法、装置及设备与流程

2022-07-14 01:39:39 来源:中国专利 TAG:


1.本发明涉及通信及存储技术领域,尤其涉及一种虚拟磁盘文件加密方法、装置及设备。


背景技术:

2.虚拟化领域中,虚拟磁盘文件数据安全一直是人们很关注的问题,实际生成环境中常用的都是软件实现的加密,比如:aes、3des、cast5、twofish等,但这些加密算法、算法实现都是公开的,并不是绝对的安全。当前主流的实现方法都是在创建虚拟加密磁盘时设置一个密钥,将密钥存放在云计算平台中,后续对虚拟磁盘的读写操作,都是通过该密钥进行加解密的,如果不法分子拿到虚拟磁盘文件,即使没有密钥,还是有很大概率能暴力破解密钥,导致数据泄露;另外也有一些厂商开发了加密数据的硬件设备,这种方法虽然从物理层面做到隔离,解决了加密算法在软件实现过程中可能存在的漏洞,但并未与云计算基础模块(比如:快速仿真器qemu)做到融合,不能很好的支持云计算场景下要求的基本操作(例如虚拟机磁盘的快照、迁移等)。
3.目前,有一种方案是在快速仿真器qemu(quick emulator)的块block设备驱动层,增加linux统一秘钥设置(linux unified key setup,luks)驱动框架,专门用于支持qcow2(qemu copy on write 2)格式虚拟磁盘的加密。目前luks磁盘加密规范框架可支持aes、des-rfd、3des、cast5、serpent、twofish六种加密算法。luks对qcow2磁盘的加密实现过程分3个部分:
4.第一,创建虚拟磁盘时,传递密钥、密钥配置(加密算法、算法参数)到luks driver层,根据传入的参数生成luks元数据,然后存储在创建的qcow2虚拟磁盘的头部,最后将虚拟磁盘的磁盘文件写到物理存储上,完成虚拟磁盘创建。虚拟化技术将物理存储上的虚拟磁盘文件虚拟化为虚拟磁盘提供给虚拟机使用,因此,每一个虚拟磁盘都会对应一个虚拟磁盘文件。
5.第二,从虚拟磁盘读数据,对虚拟磁盘的读操作(例如虚拟机内部读磁盘、读快照数据等)必须传入加密磁盘的密钥,将传入的密钥与元数据中存储的密钥对比,如果密钥正确则打开磁盘,后续可以使用密钥解密从磁盘文件中读出的加密数据,如果密钥错误则打开磁盘报错,退出磁盘的操作。
6.第三,向虚拟磁盘写数据,写数据是读数据的逆过程,同样也是先校验密钥,然后将待写入的明文数据加密后写到虚拟磁盘对应的虚拟磁盘文件中。
7.上述方案虽然可以对虚拟磁盘数据进行加解密,但在操作流程中,密钥的传递都是明文的,存在密钥泄露的风险,而且这些算法的原理和实现都是公开的,如果将虚拟磁盘文件通过网络方式拷贝到其他位置后,借助算力很强的计算机,理论上一定可以暴力破解密钥的,从而导致数据泄露。
8.另外,有些硬件加密卡厂商,实现了在云平台上密钥统一管理的方案。具体做法是:在云平台环境部署集中式的加密秘钥管理服务(key management service,kms),统一
管理数据加解密使用的密钥,并且配合加密卡和加解密管理程序,对需要保护的数据进行加解密,该实现方案称为硬件加解密系统。该方案一般适用于以下两种场景,第一种是硬件加解密系统与虚拟机中的业务系统配合,当业务层从云平台底层存储读写数据时,数据流经过硬件加解密系统,完成对数据加解密处理,从而实现对需要保护的数据加解密;第二种是硬件加解密系统与云平台后端存储服务器系统配合,数据从虚拟机中下发到宿主机虚拟化层,最终传输到存储服务器侧,再向物理存储真正读写数据前,数据流先经过硬件加解密系统完成加解密处理,最终实现对数据的保护。该方案在qcow2格式虚拟磁盘文件上层或下层处理加解密操作,虽然也能实现数据的保护,但系统部署复杂,而且与之配合的系统需要调用加解密系统的api进行二次开发来进行适配,不同的云平台中部署的业务系统、使用的后端存储服务器系统种类也是不一样的,因此需要重复进行开发适配工作,通用性比较差。


技术实现要素:

9.有鉴于此,本发明提供一种虚拟磁盘文件加密方法、装置及设备,用于解决云平台中虚拟磁盘文件硬件加密的技术问题。
10.基于本发明实施例的一方面,本发明提供一种虚拟磁盘文件加密装置,该装置位于快速仿真器qemu中,该装置包括:
11.虚拟磁盘文件驱动模块,用于接收虚拟机发送的针对加密虚拟磁盘文件的读或写请求,从加密虚拟磁盘文件读取或向加密虚拟磁盘文件写入所请求读取或写入的数据;在读取或写入数据的过程中调用luks驱动模块对请求读取或写入的数据进行解密或加密处理,并将处理结果反馈给请求方;
12.luks驱动模块,用于根据加密虚拟磁盘文件的加密参数判断是软件加密还是硬件加密,并根据判断结果实际执行相应的解密或加密处理流程;
13.加密卡驱动接口模块,由luks驱动模块调用,用于通过加密卡驱动接口对所请求读取或写入的数据进行硬件解密或加密。
14.进一步地,所述luks驱动模块包括一个或多个luks子驱动模块,不同的luks子驱动模块对应不同的硬件加密算法和加密模式;所述luks驱动模块根据加密虚拟磁盘文件的加密参数中的加密算法参数和加密模式调用对应的luks子驱动模块,再由luks子驱动模块调用加密卡驱动接口模块进行硬件解密或加密。
15.进一步地,所述加密卡驱动接口模块通过调用硬件加密卡驱动的应用编程接口api及api静态库执行所请求读取或写入的数据的硬件解密或加密,所述硬件加密卡驱动对接安装于所述qemu所在宿主机上的硬件加密卡。
16.进一步地,所述虚拟磁盘文件驱动模块还用于接收虚拟磁盘文件创建请求,判断是否支持创建请求中携带的加密参数;所述加密参数包括:加密算法名称、加密算法长度、加密模式、密钥索引、是否硬件加密;
17.所述luks驱动模块还用于根据创建请求携带的加密参数判断是否是硬件加密;当判定是硬件加密时,基于加密参数创建虚拟磁盘文件的加密元数据对象并执行加密卡驱动接口模块的初始化;
18.luks驱动模块还用于创建虚拟磁盘文件,并将加密元数据对象内容存储到所创建的虚拟磁盘文件头部。
19.进一步地,所述虚拟磁盘文件驱动模块还用于接收到虚拟磁盘文件打开请求,判断打开请求中携带的密钥索引和虚拟磁盘文件头部存储的密钥索引是否相同,若相同则打开虚拟磁盘文件成功。
20.基于本发明实施例的另一方面,本发明还提供一种虚拟磁盘文件加密方法,该方法应用于虚拟机所在的宿主机中快速仿真器qemu,该方法包括:
21.接收虚拟机发送的针对加密虚拟磁盘文件的读或写请求,从加密虚拟磁盘文件读取或向加密虚拟磁盘文件写入所请求读取或写入的数据;在读取或写入数据的过程中调用luks驱动对请求读取或写入的数据进行解密或加密处理,并将处理结果反馈给请求方;
22.在进行所述解密或加密处理时,luks驱动根据加密虚拟磁盘文件的加密参数判断是软件加密还是硬件加密,并根据判断结果实际执行相应的解密或加密处理流程;
23.所述luks驱动通过调用加密卡驱动接口对所请求读取或写入的数据进行硬件解密或加密。
24.进一步地,所述luks驱动通过调用加密卡驱动接口对所请求读取或写入的数据进行硬件解密或加密包括:
25.所述luks驱动包括一个或多个luks子驱动,不同的luks子驱动对应不同的硬件加密算法和加密模式;
26.所述luks驱动根据加密虚拟磁盘文件的加密参数中的加密算法参数和加密模式调用对应的luks子驱动,再由luks子驱动调用加密卡驱动接口对所请求读取或写入的数据进行硬件解密或加密;
27.所述luks子驱动调用硬件加密卡驱动的应用编程接口api及api静态库执行所请求读取或写入的数据的硬件解密或加密。
28.进一步地,所述方法还包括:
29.虚拟磁盘文件驱动接收虚拟磁盘文件创建请求,调用luks驱动判断是否支持创建请求中携带的加密参数;所述加密参数包括:加密算法名称、加密算法长度、加密模式、密钥索引、是否硬件加密;
30.luks驱动根据创建请求携带的加密参数判断是否是硬件加密;当判定是硬件加密时,基于加密参数创建虚拟磁盘文件的加密元数据对象并执行加密卡驱动接口模块的初始化;
31.luks驱动创建虚拟磁盘文件,并将加密元数据对象内容存储到所创建的虚拟磁盘文件头部。
32.进一步地,所述方法还包括:
33.虚拟磁盘文件驱动接收虚拟磁盘文件打开请求,调用luks驱动判断打开请求中携带的密钥索引和虚拟磁盘文件头部存储的密钥索引是否相同,若相同则打开虚拟磁盘文件成功。
34.本发明通过qemu中的虚拟磁盘文件驱动调用扩展的luks子驱动,由luks子驱动调用硬件加密卡驱动的api接口来实现加密虚拟磁盘文件的数据的加解密。qemu中的虚拟磁盘文件驱动调用luks驱动模块,将读写的数据导流到硬件加密卡中,由硬件加密卡对虚拟磁盘的数据进行硬件加解密,再通过虚拟磁盘文件驱动将加密后的数据写入虚拟磁盘文件或将解密后数据反馈上层应用。硬件加密卡提供内核加密卡驱动,luks驱动模块通过调用
内核加密卡驱动的api编程接口来实现虚拟磁盘数据的硬件加解密。本发明提供的硬件加密方案能够实现与宿主机的虚拟化系统无缝对接,兼容性好,能够对数据进行物理隔离,提高了数据安全性。
附图说明
35.为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
36.图1为采用本发明提供的虚拟磁盘文件加密方法的设备的软硬件层次结构示意图;
37.图2为本发明一实施例提供的云平台中虚拟磁盘文件加密框架结构示意图;
38.图3为本发明一实施例提供的虚拟磁盘文件加密方法中创建加密虚拟磁盘文件的步骤流程示意图;
39.图4为本发明一实施例提供的虚拟磁盘文件加密方法中读写加密虚拟磁盘文件数据的步骤流程示意图;
40.图5为本发明一实施例提供的用于实现虚拟磁盘文件加密方法的电子设备结构示意图。
具体实施方式
41.在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
42.应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
43.本发明提供一种虚拟磁盘文件加密方法及设备,本发明技术方案的基本思想:在快速仿真器qemu中,通过虚拟磁盘文件驱动模块、luks驱动模块和硬件加密卡相互配合来实现虚拟磁盘的硬件加解密。由qemu中的虚拟磁盘文件驱动模块(例如qcow2模块)调用luks驱动模块,将读写的数据导流到硬件加密卡中,由硬件加密卡对虚拟磁盘的数据进行硬件加解密后,再通过虚拟磁盘文件驱动模块将已加密的写入数据存入虚拟磁盘或将已解密的读取数据反馈上层应用。硬件加密卡提供内核加密卡驱动,luks驱动模块通过调用内核加密卡驱动的编程接口来实现虚拟磁盘数据的硬件加解密。本发明提供的硬件加密方案能够实现与宿主机的虚拟化系统无缝对接,兼容性好,能够对数据进行物理隔离,提高数据安全性。
44.图1为采用本发明提供的虚拟磁盘文件加密方法的设备的软硬件层次结构示意
图,在硬件层中安装有硬件加密卡,用于对磁盘文件进行硬件加解密,硬件加密卡厂商提供硬件加密卡的内核加密卡驱动,位于应用层的加密卡驱动接口模块对接内核中的加密卡驱动。粗实线和粗虚线是从虚拟磁盘文件中读取硬件加密过的数据的处理路径,细实线和细虚线是向虚拟磁盘文件写入需硬件加密的数据的处理路径。虚拟机从物理存储读取数据时,读取的数据先从物理存储返回到宿主机内核文件系统层,再到虚拟磁盘文件驱动模块(例如qcow2格式的虚拟磁盘文件驱动模块),但此时数据是加密的,加密的文件数据沿粗虚线的路径被传送到硬件加密卡进行解密,解密后的数据按原路返回到虚拟磁盘文件驱动模块,再由虚拟磁盘文件驱动模块将解密后的数据返回给虚拟机。虚拟机向物理存储写入数据时,写入的数据先到达qemu中的虚拟磁盘文件驱动模块,虚拟磁盘文件驱动模块将写入数据沿细虚线的路径送到硬件加密卡进行加密,加密后的数据按原路返回给虚拟磁盘文件驱动模块,再由虚拟磁盘文件驱动模块将加密后的数据写入物理存储。
45.本发明中的硬件加密卡作用是对虚拟磁盘数据进行加解密,硬件加密卡内所使用的加密算法并不特指哪一种,可根据应用场景的需要来选择集成。本发明实施例中提及的硬件加密卡不是特指某个厂商生产的加密设备,凡能实现本发明实施例中要求的硬件加密功能即可。
46.本发明实施例所使用的硬件加密卡需配套提供内核驱动程序,确保能在云平台宿主机上加载加密卡,以及加密卡驱动接口模块能够通过api调用内核中的加密卡驱动实现数据的硬件加解密操作。加密卡驱动需向加密卡驱动接口模块提供高级编程语言实现的应用层api接口以及api的静态库,以实现加密卡的初始化、数据加密及解密等功能。其中,高级编程语言可以是c语言、c 、java等,应用层api一般以头文件的形式存放。api的静态库是应用层api的具体实现,经编译生成静态库,以二进制形式存在。硬件加密卡的api提供虚拟磁盘创建、加密、解密功能,具体逻辑由加密卡厂商实现。加密卡提供的应用层api实际执行加解密的位置是在加密卡中进行硬件加解密。
47.为了提高硬件加密卡的秘钥安全性,本发明使用的硬件加密卡采用特殊的秘钥管理方式,对外不暴露秘钥,对外仅提供秘钥索引。硬件加密卡在初始化时,会生成指定规格范围内的密钥数量(比如一张加密卡支持1000个不同的密钥),并且对每个密钥进行编号,即每个密钥都有一个唯一的密钥索引,真正用来对数据进行加密的密钥在硬件加密卡以外无法获取到,上层调用者需提供密钥索引给硬件加密卡,硬件加密卡根据密钥索引找到对应的密钥,再对传递过来的数据进行加解密。本发明不具体限定硬件加密卡的管理方式,例如也可以由云平台集中管理,只要在调用api接口时传入加密参数及密钥,能进行正确的加解密操作即可。
48.此外,为了提高硬件加密卡的并发处理性能,硬件加密卡可采用pci总线,这样易于扩展,多个硬件加密卡并发处理可提升加解密性能。
49.图2为本发明一实施例提供的云平台中虚拟磁盘文件加密框架结构示意图。
50.其中,虚拟磁盘文件加密装置包括图1中虚拟磁盘文件驱动模块、luks驱动模块、加密卡驱动接口模块。云平台管理软件即云计算管理平台(简称云平台),用于管理虚拟机、存储、网络等虚拟化资源,安装在宿主机中。云平台管理软件安装后,内核层的加密卡内核驱动(例如ko)、应用层加密卡驱动的api静态库也需安装到宿主机上,然后在虚拟机(guest)磁盘需要加密的宿主机上安装加密卡,宿主机操作系统在启动时会识别加密卡并
且加载加密卡驱动,以确保可以访问加密卡硬件。
51.在安装完硬件加密卡并启动宿主机后,运维人员即可使用由加密生产厂商提供的加密卡密钥管理软件对加密卡进行初始化,为加密卡配置加密参数。本发明中,加密过程对上层应用和下层存储服务端都是透明的,支持本地存储、共享存储。如果加密磁盘的虚拟机有迁移需求,必须在迁移的目的宿主机上安装相同型号的加密卡,且该加密卡与源宿主机上的初始化参数一致,这样虚拟机迁移过来就可以正常加解密,保证虚拟磁盘数据的正确性。至此,硬件加密卡与虚拟磁盘文件驱动模块对接的工作就完成了。
52.图2的示例中,宿主机1、宿主机2均安装了硬件加密卡,且安装了加密卡的内核驱动、api静态库。宿主机1、2都配置本地存储池、共享存储池,其中共享存储池宿主机1、2均可访问,当虚拟机guest2的加密虚拟磁盘volume2存放在共享存储池,guest2在宿主机1上可以读写数据,也可以在宿主机2上读写数据,因此虚拟机guest2在宿主机1、2之间迁移后还可以继续访问加密磁盘volume2。其中,带箭头的实线表示虚拟机读写数据的流程,而虚拟机guest2虚线框和带箭头的虚线表示虚拟机guest2从宿主机1上迁移到宿主机2上依然可以访问位于共享存储中的加密磁盘。
53.本发明技术方案的核心是虚拟磁盘文件加密装置部分的实现,该装置完成虚拟磁盘/虚拟磁盘文件的创建、读写、快照、迁移等云计算业务的基本操作,对上提供透明的虚拟磁盘的加解密功能,对下调用硬件加密卡api对虚拟磁盘的数据进行加解密。该装置中的虚拟磁盘文件驱动模块通过luks技术支持aes等加密算法的软件实现,且支持软件加密磁盘的快照、迁移功能,因此在luks driver中兼容硬件加密的实现,即可支持硬件加密的快照、迁移功能。然而硬件加密算法的实现与aes等软件加密算法的实现加解密的流程不一样,差异很大,且还需要调用底层硬件加密卡。因此,为了使本发明提供的虚拟磁盘文件加密装置兼容支持硬件加密卡的硬件加解密,本发明实施例对luks driver进行了扩展,通过扩展luks driver,使得luks driver可以调用硬件加密卡提供的加密卡驱动api接口从而实现虚拟磁盘数据的硬件加解密。为实现该目的,本发明一实施例中,将硬件加密算法的实现封装成luks driver的子driver,多种硬件加密算法对应不同的子driver,这样可以方便地进行硬件加密算法的扩展,比如:当前需要有一款硬件加密卡支持aes算法,可以在子driver中增加aes硬加密算法的实现;后续如果还需要新增支持其它硬件加密算法,可再新增相应的子driver来支持对应的硬件加密算法即可。
54.在扩展的luks子driver中至少需要实现如下的接口功能:
55.create,创建硬加密虚拟磁盘文件;
56.open,打开硬加密虚拟磁盘文件;
57.encrypt,加密虚拟磁盘文件数据;
58.decrypt,解密虚拟磁盘文件数据;
59.getinfo,查询虚拟磁盘文件加密元数据对象内容。
60.图3为本发明一实施例提供的虚拟磁盘文件加密方法中创建加密虚拟磁盘文件的步骤流程示意图。创建加密虚拟磁盘文件/加密虚拟磁盘的步骤包括:
61.步骤301.虚拟磁盘文件驱动模块接收到虚拟磁盘文件创建请求后,判断是否支持创建请求中携带的加密参数,若支持执行步骤302;
62.在创建虚拟磁盘文件时,需要用户选择并输入加密参数。虚拟机向虚拟磁盘文件
加密装置中的虚拟磁盘文件驱动模块发起虚拟磁盘文件的创建请求时,需要在请求中携带加密参数。加密算法不同,所必需的加密参数可能是不同的,通常加密参数包括:加密算法名称、加密算法长度、加密模式、密钥索引、是否硬件加密。
63.其中,可选地加密模式可以高级加密标准aes的5种加密模式的一种或其它加密算法的加密模式中的一种,本发明不做限定。aes的5种加密模式为:电码本模式(electronic codebook book,ecb)、密码分组链接模式(cipher block chaining,cbc)、计算器模式(counter,ctr)、密码反馈模式(cipher feedback、cfb)、输出反馈模式(output feedback,ofb)。
64.其中,密钥索引是指在硬件加密卡中的秘钥的索引。为了保证密钥的安全,密钥实际是保存在硬件加密卡中的,不对外暴露秘钥,每个密钥都有自己的标识,即密钥索引,应用层在调用加密卡内核驱动时都使用秘钥索引而非真正的密钥。
65.其中,是否硬件加密是指是否采用本发明提供的通过luks驱动和硬件加密卡实现的硬件加密方式。本发明可兼容软件加密方式,因此允许用户选择加密方式。
66.当虚拟磁盘文件驱动模块,例如qcow2格式的虚线磁盘文件驱动模块,根据所支持的加密参数判定不支持请求中携带的加密参数时,可直接向请求端反馈创建失败信息,退出创建流程。
67.当判定不支持创建请求中携带的加密参数时,向请求端反馈创建失败信息,结束流程,由于该步骤非本发明实施例关注的步骤,因此在图中以虚线省略表述。后续步骤中的虚线部分同理。
68.步骤302.虚拟磁盘文件驱动模块调用luks驱动模块;
69.步骤303.luks驱动模块根据加密参数判断是否是硬件加密,若是硬件加密则执行步骤304,否则走软件加密的分支创建加密虚拟磁盘文件;
70.虚拟磁盘文件驱动模块调用luks驱动模块中的luks驱动,并根据创建请求携带加密参数判断选择的是硬件加密方式还是软件加密方式。如果是硬件加密方式则根据加密参数选择对应的luks子驱动,由luks子driver执行加密卡驱动接口模块的初始化等操作。
71.步骤304.luks驱动模块基于加密参数创建虚拟磁盘文件的加密元数据对象并执行加密卡驱动接口模块的初始化;
72.luks驱动模块中与加密算法匹配的子驱动模块基于创建请求携带的加密参数创建待创建的虚拟磁盘文件的加密元数据对象qcryptocipher,加密元数据对象用于存放加密参数等配置信息。
73.优选地,为了提高安全性,可对加密参数中的密钥索引进行加密,加密元数据对象中存储加密后的密钥索引。例如通过pbkdf2(一种专门为密码存储而设计的算法)方式将密钥索引加密。
74.步骤305.虚拟磁盘文件驱动模块通过调用luks驱动模块创建虚拟磁盘文件,并将加密元数据对象内容存储到所创建的虚拟磁盘文件的头部。
75.luks驱动模块中的子驱动模块通过调用子驱动中创建虚拟磁盘文件的接口函数创建虚拟磁盘文件,并将创建的加密元数据对象中的内容(可包括加密算法名称、加密算法长度、加密模式、加密后的密钥索引、是否硬件加密等信息)一起存储到加密虚拟磁盘文件的头部存储元数据的区域,写入物理存储中,创建加密虚拟磁盘即创建虚拟磁盘文件成功,
流程结束。
76.图4为本发明一实施例提供的虚拟磁盘文件加密方法中读写加密虚拟磁盘文件数据的步骤流程示意图。读写加密虚拟磁盘文件数据的过程中包括了对虚拟磁盘数据的加解密的过程,步骤流程包括:
77.步骤401.虚拟磁盘文件驱动模块接收到虚拟磁盘文件打开请求后,判断打开请求中携带的密钥索引和虚拟磁盘文件头部存储的密钥索引是否相同,若相同则打开虚拟磁盘文件成功;
78.当需要打开通过本发明实施例中创建步骤创建的虚拟加密磁盘时,虚拟机会向qemu中的虚拟磁盘文件加密装置发送虚拟磁盘文件打开请求,虚拟磁盘文件驱动模块接收到打开请求后,会根据虚拟磁盘文件的元数据信息(虚拟磁盘文件名称、存储位置信息等)读取虚拟磁盘文件头部存储的加密元数据对象内容从在内存中创建该虚拟磁盘文件对应的加密元数据对象,然后比对打开请求中携带的密钥索引和加密元数据对象中的密钥索引是否相同,如果相同则打开虚拟磁盘文件成功,否则打开失败。打开成功后,后续即可执行虚拟磁盘的读写操作。打开失败时,向调用者反馈错误信息,结束流程,为简洁起见,失败分支的步骤省略。
79.步骤402.虚拟磁盘文件驱动模块接收到虚拟磁盘文件读/写请求后,调用luks驱动模块;
80.步骤403.luks驱动模块根据加密元数据对象中的加密参数判断是否是硬件加密,若是硬件加密则执行步骤404;
81.若判定不是硬加密,则进入软件加/解密流程处理,为简洁起见,软件加/解密流程分支省略。
82.步骤404.luks驱动模块中与加密算法对应的luks子驱动模调用加密卡驱动接口模块对读/写进行硬件加解密处理,并将处理后的数据返回给调用者。
83.luks驱动模块根据加密元数据对象qcryptocipher中的“是否硬件加密”参数项判断是否是硬件加密,若是硬件加密则根据qcryptocipher对象中的加密算法和加密模式匹配luks子驱动,匹配到子luks子驱动后,调用匹配的luks子驱动进行处理。luks子driver进一步调用加密卡驱动接口模块,加密卡驱动接口模块通过调用加密卡驱动的api接口对写入的数据进行硬件加密或对读取的数据进行硬件解密。在完成读/写数据的界面或加密处理后,将处理后的数据通过虚拟磁盘文件驱动模块反馈给虚拟机。
84.虚拟磁盘文件驱动模块处理数据段的最小长度可通过参数配置,可以是512byte,如果读写的数据段很长则会分多次完成,最终将读写数据的结果返回给上层,完成数据的加解密。此外,密钥索引只在打开虚拟磁盘文件时校验,后续读写数据无需再校验。
85.本发明一实施例还提供加密虚拟磁盘文件的加密信息的查询功能,位于虚拟机中的上层应用可通过查询接口向虚拟磁盘文件驱动模块发送加密信息查询请求,虚拟磁盘文件驱动模块从加密虚拟磁盘文件的头部读取加密元数据对象的内容反馈给查询者,可查询的加密信息包括:加密算法、加密算法长度、加密算法模式等。
86.图5为本发明一实施例提供的用于实现本发明实施例提供的虚拟磁盘文件加密方法的电子设备结构示意图,该设备500包括:诸如中央处理单元(cpu)的处理器510、通信总线520、通信接口540以及存储介质530。其中,处理器510与存储介质530可以通过通信总线
520相互通信。存储介质530内存储有计算机程序,当该计算机程序被处理器510执行时即可实现本发明提供的虚拟磁盘文件加密方法中的一个或多个步骤的功能。
87.其中,存储介质可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
88.应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
89.进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
90.以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

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

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

相关文献