CN113139195B - 一种数据加密方法及计算设备 - Google Patents
一种数据加密方法及计算设备 Download PDFInfo
- Publication number
- CN113139195B CN113139195B CN202110429144.9A CN202110429144A CN113139195B CN 113139195 B CN113139195 B CN 113139195B CN 202110429144 A CN202110429144 A CN 202110429144A CN 113139195 B CN113139195 B CN 113139195B
- Authority
- CN
- China
- Prior art keywords
- data
- encrypted
- node
- data block
- tree structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012217 deletion Methods 0.000 claims description 7
- 230000037430 deletion Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013506 data mapping Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据加密方法及计算设备,方法包括步骤:获取待加密数据;将待加密数据以树形结构存储,其中,树形结构中每一节点的最大存储容量相同,树形结构中除最右叶子节点外所有叶子节点存储最大容量的数据;通过加密算法对树形结构中与待加密数据对应的每一节点进行加密;将各节点的加密密钥保存至该节点的父节点中。通过上述方法,将待加密数据拆分为多个数据块,并将数据块以树形结构存储,树形结构中每一节点存储数据块或者数据块指针,通过对树形结构中的每一节点进行加密,实现了对元数据和真实数据的保护,提高了数据加密的安全性。并且,将每一节点的加密密钥保存至该节点的父节点中,解密难度大,进一步提高了数据加密的安全性。
Description
技术领域
本发明涉及加密技术领域,特别涉及一种数据加密方法、计算设备及储存介质。
背景技术
随着信息化技术的不断发展,个人和企业的数据安全性已越来越重要,如何保障数据的安全性已成为当下的热点。在加密技术不断更迭的情况下,已经出现许多成熟的加密软件,例如基于堆栈式文件系统实现的加密EncFS、eCryptfs等,但通过这些加密软件对数据加密后,攻击者可以通过文件对比技术对已加密的数据进行解密,使得数据易被破解,因此,目前已有的加密软件安全性低。
为此,本发明提供了一种可提高数据安全性地数据加密方法。
发明内容
为此,本发明提供一种数据加密方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种数据加密方法,在计算设备中执行,方法包括步骤:
获取待加密数据;
将待加密数据以树形结构存储,其中,树形结构中每一节点的最大存储容量相同,树形结构中除最右叶子节点外所有叶子节点存储最大容量的数据;
通过加密算法对树形结构中与待加密数据对应的每一节点进行加密;
将各节点的加密密钥保存至该节点的父节点中。
可选地,将待加密数据以树形结构存储的步骤包括:
拆分待加密数据为多个数据块,保存每一数据块至树形结构中与待加密数据对应的每一节点中。
可选地,拆分所述待加密数据为多个数据块的步骤包括:
确定待加密数据的数据指针当前偏移量;
以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块;
更新数据指针当前偏移量为已确定的数据指针当前偏移量与第一预设数值之和。
可选地,以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块的步骤包括:
判断当前读取待加密数据次数与第一预设数值之积是否小于待加密数据大小,若是,以已确定的数据指针当前偏移量为起始位置读取第一预设数值的数据,若否,则根据如下公式确定读取待加密数据的数量,作为第二数值,以已确定的数据指针当前偏移量为起始位置读取第二数值的数据:
L=m-(a-1)*b
其中,L为读取待加密数据的数量,m为待加密数据所占内存大小,a为当前读取待加密数据的次数,b为第一预设数值;
以已读取的数据作为一个数据块。
可选地,保存每一数据块至树形结构中与待加密数据对应的每一节点中的步骤包括:
为每一数据块分配数据块标识和为每一数据块设置版本信息,其中,每一数据块的数据块标识不重复,通过数据块版本信息区分数据块的版本;
判断当前节点是否存在子节点,若是,在当前节点中保存与其对应的子节点中保存的数据块的数据块标识,若否,将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中。
可选地,将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中的步骤包括:
判断树形结构中其他子树是否存在未填满数据的节点,若否,执行将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中的步骤,若是,判断已读取的第二数值数据对应的数据块大小与未填满数据的节点中数据块大小之和是否超过节点最大存储容量;
若超过节点最大存储容量,则执行将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中的步骤;
若未超过节点最大存储容量,将已读取的第二数值数据对应的数据块合并至已找到的、未填满数据的节点中。
可选地,通过加密算法对树形结构中与待加密数据对应的每一节点进行加密的步骤包括:
通过加密算法单次对树形结构中与待加密数据对应的多个节点并行加密。
可选地,还包括步骤:
响应于删除树形结构中与待加密数据对应的、节点中数据块的操作,将已删除数据块对应的数据块标识保存至删除列表;
响应于新增数据块操作,判断新增数据块的数据块标识是否存在于删除列表中,若是,则不添加所述新增数据块至树形结构中与待加密数据对应的节点中,若否,则添加新增数据块至树形结构中与待加密数据对应的节点中。
可选地,还包括步骤:
获取待加密数据名称;
查找待加密数据的父节点;
为待加密数据创建一个数据块、创建该数据块标识;
通过加密算法对待加密数据对应的一个数据块加密;
在父节点中添加待加密数据的目录项,其中,目录项包括待加密数据名称、待加密数据对应的数据块标识和待加密数据对应数据块的加密密钥。
可选地,节点的最大存储容量与第一预设数值相等,第一预设数值为512KB。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,提供了一种数据加密方法,该方法将待加密数据拆分为多个数据块,并将数据块以树形结构存储,树形结构中每一节点存储数据块或者数据块指针,通过对树形结构中的每一节点进行加密,实现了对元数据和真实数据的保护,提高了数据加密的安全性。并且,将每一节点的加密密钥保存至该节点的父节点中,解密难度大,进一步提高了数据加密的安全性。
本发明还可并行加密多个节点,提高数据加密的效率。并且在节点中保存数据的数据块标识和版本信息,可避免攻击者使用不同数据块标识对应的数据替换或删除当前数据块标识对应的数据,也可避免攻击者利用之前版本的数据替换或删除当前版本数据,从而再次提高数据加密的安全性。
此外,本发明中所应用的树形结构,除了最右叶子节点外其他叶子节点均存储最大容量的数据,由于其他叶子节点均存储最大容量的数据,在存储相同大小的数据时节点数量会减少,从而在数据加密过程中减少存储空间的占用,提高系统运行效率,进而提高数据加密效率。在此基础之上,树形结构中不同子树中未填满节点待存储的数据块可以进行合并,在数据加密过程中减少存储空间占用的情况下,还可减少存储空间的浪费。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的数据加密方法200的流程图;
图3示出了根据本发明一个实施例的树形结构的示意图;
图4示出了根据本发明一个实施例的待加密数据对应树形结构的映射表的示意图;以及
图5示出了根据本发明一个实施例的保存数据块至树形结构中与待加密数据对应的节点的方法流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
随着信息化技术的不断发展,个人和企业的数据安全性已越来越重要,如何保障数据的安全性已成为当下的热点。在加密技术不断更迭的情况下,已经出现许多成熟的加密软件,例如基于堆栈式文件系统实现的加密EncFS、eCryptfs等,但通过这些加密软件对数据加密后,无法对文件元数据进行保护,文件元数据为描述数据的数据,主要是描述数据属性信息,例如文件的大小、个数、目录结构等元数据,因此,目前已有的加密软件安全性低。
要实现元数据加密,最好的方式是将文件拆分为多个小文件进行存储,从而无法通过拆分的小文件推测文件的基本信息。目前,多通过数据映射技术将一个文件拆分为多个小文件,而数据映射技术多基于树形结构实现,已有的树形结构包括二叉搜索树、平衡二叉搜索树。二叉搜索树的结构在插入数据逐渐缩小的情况下会逐渐趋于线性,而查询复杂度与深度值成正比关系,当树的深度较大时,查询复杂度会提高。平衡二叉搜索树在查询数据大小时需要读取每个数据块的大小,进行相加,时间复杂度较高,比较耗时,从而效率低下,并且树形结构并未对树形结构节点的数据存储做出规范,容易造成存储空间的浪费。
为了解决上述问题,本发明定义了一种树形结构,该树形结构的定义如下:树形结构中每一节点的最大存储容量相同,树形结构中除最右叶子节点外所有叶子节点存储最大容量的数据。由于除最右叶子节点外所有叶子节点均存储最大容量的数据(相比于每个叶子节点仅存储部分数据,而未存储最大容量的数据),存储数据的节点数量会减少,从而减少存储空间浪费。并且由于叶子节点存储数据的最大容量相同,因此在确定已加密数据大小时,无需获取每个节点存储数据的大小再求和,而是利用节点数量减1与节点最大容量相乘,再加上最右叶子节点数据大小即可确定待加密数据大小,相当于只访问最右叶子节点的数据大小即可计算已加密的数据大小,可快速确定已加密的数据大小,减少耗时。
在定义了树形结构的基础之上,本发明提出了一种可提高数据安全性地数据加密方法。该方法是将待加密数据以上述定义的树形结构存储,树形结构中每一节点存储数据块或者数据块指针,通过对树形结构中的每一节点进行加密,实现了对元数据和真实数据的保护,从而在减少存储空间占用的前提下,提高了数据加密的安全性。并且,将每一节点的加密密钥保存至该节点的父节点中,若想解密一个数据块,需要由上至下迭代解密,解密难度大,进一步提高了数据加密的安全性。
本发明提供的数据加密方法在计算设备中执行,在一个实施例中,图1示出了根据本发明一个实施例的计算设备100的结构图。计算设备100的框图如图1所示,在基本配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。程序数据124包括指令,在根据本发明的计算设备100中,程序数据124包含用于执行程序调试方法200的指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138,可移除储存器136和不可移除储存器138均与储存接口总线134连接。本发明中,程序执行过程中发生的各事件的相关数据和指示各事件发生的时间信息,可存储于储存设备132中,操作系统120适于管理储存设备132。其中,储存设备132可为磁盘。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100的操作系统120被配置为执行根据本发明的一种数据加密方法200。
图2示出了根据本发明一个实施例的数据加密方法200的流程图。方法200适于在计算设备100(例如前述计算设备100)中执行。如图2所示,数据加密方法200始于步骤S210,在执行步骤S210中,获取待加密数据,并挂载待加密数据,具体地:获取待加密数据,创建与待加密数据相等大小的缓存,从而在数据加密过程中减少内存的占用,并加载待加密数据至缓存,查找待加密数据的父节点,为待加密数据创建一个数据块(存储待加密数据中文件的指针)、为数据块创建数据块标识,以及通过加密算法对待加密数据对应的一个数据块进行加密,以待加密数据的名称、待加密数据的数据块标识和待加密数据的一个数据块对应的加密密钥作为目录项,将待加密数据的目录项加入父节点中。
随后,在步骤S220,将待加密数据以树形结构存储。具体地,拆分待加密数据为多个数据块,保存每一数据块至树形结构中与待加密数据对应的每一节点中。
在一个实施方式中,拆分一个数据块的实现过程如下:确定待加密数据的数据指针当前偏移量,判断当前读取待加密数据次数与第一预设数值之积是否小于待加密数据大小,若是,以已确定的数据指针当前偏移量为起始位置读取第一预设数值的数据,若否,则根据如下公式确定读取待加密数据的数量,作为第二数值,以已确定的数据指针当前偏移量为起始位置读取第二数值的数据:
L=m-(a-1)*b
其中,L为读取待加密数据的数量,m为待加密数据所占内存大小,a为当前读取待加密数据的次数,b为第一预设数值,第一数值与树形结构中各节点的最大存储容量相同,也就是说,树形结构中待加密数据对应的叶子节点存储数据的最大容量相同。
由于树形结构中待加密数据对应的叶子节点存储数据的最大容量相同,而叶子节点中存储数据块,因此在利用上述树形结构存储待加密数据后,获取已加密的数据大小时,无需获取每个节点存储数据的大小再求和,而是将节点数量减1后与节点最大容量相乘,再加上最右叶子节点数据大小即可确定待加密数据大小,相当于只访问最右叶子节点的数据大小即可计算已加密数据大小,可快速获取数据大小,减少耗时。
在一个实施方式中,以大小为2GB的待加密数据、加密算法为AES-256-GCM进行测试,记录不同大小的数据块对应的拷贝用时和删除用时,如表1所示:
表1
数据块大小 | 单个数据块块加密耗时 | 拷贝数据块用时 | 删除数据块用时 |
32KB | 23us | 36s | 17s |
128KB | 72us | 24s | 8s |
256KB | 130us | 22s | 6s |
512KB | 254us | 21s | 4s |
1024MB | 15643us | 20s | 3s |
由表1可知,数据块大小在512MB时拷贝数据块用时为21s、删除数据块用时4s,相比于数据块大小在256MB时拷贝数据块用时为22s、删除数据块用时6s,数据块大小在512MB时拷贝数据块用时减少1s、删除数据块用时减少2s。数据块大小在1024KB时拷贝数据块用时为20s、删除数据块用时3s,与数据块大小在512MB时相比,数据块大小在1024MB时拷贝数据块用时减少1s、删除数据块用时减少1s,可见在数据块大小为1024MB时性能增益已经很小,并且随着数据块大小的增长,还会使得加密耗时严重的问题,所以本发明将第一数值设置为512KB,树形结构中各节点的最大存储容量同样为512KB。
随后以已读取的数据作为一个数据块,并更新数据指针当前偏移量为已确定的数据指针当前偏移量与第一预设数值之和。并重复上述过程,即可将待加密数据划分为多个数据块。
在将待加密数据拆分为多个数据块的过程中,除了最右叶子节点外其他叶子节点均存储最大容量的数据,由于其他叶子节点均存储最大容量的数据,在存储相同大小的数据时节点数量会减少,从而在数据加密过程中减少存储空间的占用,提高系统运行效率,进而提高数据加密效率。
将待加密数据拆分为多个数据块后,在一个实施方式中,如图5所示,图5为本发明保存数据块至树形结构中与待加密数据对应的节点中的方法流程图,图5包括步骤S510至步骤S570。
在步骤S510中,为每一数据块分配数据块标识和为每一数据块设置版本信息,其中,每一数据块标识是唯一的,每一数据块的数据块标识可以是随机数、随机字符、数字与字符的随机组合等,本发明对此不做限定,例如1、2。数据块版本信息可以区分数据块的版本,版本信息可以随机数、随机字符、数字与字符的随机组合等,本发明对此不做限定,只要设置的版本信息唯一即可。通过在节点中保存数据的数据块标识和版本信息,相当于对存储数据的节点格式进行规范,可避免攻击者使用不同数据块标识对应的数据替换或删除当前数据块标识对应的数据,也可避免攻击者利用之前版本的数据替换或删除当前版本数据,从而提高数据加密的安全性。
接着在步骤S520中,判断当前节点是否存在子节点,若是,执行步骤S530,在当前节点中保存与其对应的子节点中保存的数据块的数据块标识,若否,执行步骤S540,判断树形结构中其他子树是否存在未填满数据的节点,若否,执行步骤S550,将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中。
若树形结构中其他子树存在未填满数据的节点,执行步骤S560,判断已读取的第二数值数据对应的数据块大小与未填满数据的节点中数据块大小之和是否超过节点最大存储容量,若是,执行步骤S550,若否,执行步骤S570,将已读取的第二数值数据对应的数据块合并至已找到的、未填满数据的节点中。由于树形结构中不同子树中未填满节点待存储的数据块可以进行合并,因此在数据加密过程中减少存储空间占用的情况下,还可减少存储空间的浪费。
之后在步骤S230中,通过加密算法对树形结构中与待加密数据对应的每一节点进行加密。在一个实施方式中,通过加密算法单次对树形结构中与待加密数据对应的多个节点并行加密,也就是说,可以一次对多个数据块同时加密,从而提高加密效率。其中,加密算法包括但不限于AES-256-GCM、TWOFISH-256-GCM,本发明对此不做限制,所有的加密算法均在本发明的保护范围之内。
以待加密数据包括一个文件、并将该文件拆分为三个数据块,且第三个数据块大小小于节点最大存储容量为例,待加密数据的树形结构如图3中实线框出部分所示,图3为树形结构示意图。图3中实线框内的子树包括节点1至节点5,节点1为该树形结构的父节点,节点2为节点1的子节点,节点3至5为节点2的子节点。应用于本发明中,节点1为存储待加密数据对应的文件指针的节点,节点2存储待加密数据中包括的一个文件被拆分为三个数据块后的数据块指针,节点3至5分别存储已拆分的三个数据块,并且节点5未存储满,存在部分空余存储空间。
已知树形结构会对应一个映射表,那么待加密数据以树形结构存储后同样会对应一个映射表,以图3中实线框出部分所示的树形结构为例,其对应的映射表如图4所示,图4为一个待加密文件对应树形结构的映射表的示意图。图4中的数据块标识为1(即ID:1)的数据块即为待加密数据创建的一个数据块,该数据块存储的是待加密数据中包括的一个文件的文件指针,例如图4中数据块标识为1中的备忘录.txt:2,其中,备忘录.txt为待加密数据包括的一个文件的文件名称,“2”为备忘录.txt文件(待加密数据中包括的一个文件)的文件指针。数据块标识为2(即ID:2)的数据块存储待加密数据中包括的一个文件被拆分为三个数据块的数据块指针,数据块标识为3至5(即ID:3、ID:4和ID:5)的数据块分别存储拆分后的三个数据块,具体地:数据块标识为3的数据块存储第一个数据块,数据块标识为4的数据块存储第二个数据块,数据块标识为5的数据块存储第三个数据块。并且由于第三个数据块大小小于节点最大存储容量,因此数据块标识为5的数据块存在部分空余存储空间(空余存储空间如ID:5的数据块中虚线框出部分)。
最后在步骤S240中,将各节点的加密密钥保存至该节点的父节点中,其中,加密密钥为加密数据块、解密数据块时的密码。
基于上述内容可知,本发明提供的数据加密方法,将待加密数据拆分为多个数据块,并将数据块以树形结构存储,树形结构中每一节点存储数据块或者数据块指针,通过对树形结构中的每一节点进行加密,实现了对元数据和真实数据的保护,提高了数据加密的安全性。并且,将每一节点的加密密钥保存至该节点的父节点中,若想解密一个数据块,需要由上至下迭代解密,解密难度增大,进一步提高了数据加密的安全性。
在将待加密数据进行加密后,本发明中还加入了冲突检查操作,具体包括一下步骤:响应于删除树形结构中与待加密数据对应的节点中的数据块操作,将已删除数据块对应的数据块标识保存至删除列表,响应于新增数据块操作,判断新增数据块的数据块标识是否存在于删除列表中,若是,则不添加新增数据块至树形结构中与待加密数据对应的节点中,若否,则添加新增数据块至树形结构中与待加密数据对应的节点中。基于上述操作,攻击者无法在删除某个数据块后又重新添加该数据块,因此攻击者也就无法通过删除某一数据块后再添加该数据块以解密数据块,从而进一步提高数据加密的安全性。
A9如A1至A8中任一项所述的方法,还包括步骤:
获取待加密数据名称;
查找待加密数据的父节点;
为待加密数据创建一个数据块、创建该数据块标识;
通过加密算法对待加密数据对应的一个数据块加密;
在父节点中添加待加密数据的目录项,其中,所述目录项包括待加密数据名称、待加密数据对应的数据块标识和待加密数据对应数据块的加密密钥。
A10如A3至A9中任一项所述的方法,其中,所述树形结构中每一节点的最大存储容量与所述第一预设数值相等,所述第一预设数值为512KB。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据加密方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (9)
1.一种数据加密方法,在计算设备中执行,所述方法包括步骤:
获取待加密数据;
将所述待加密数据以树形结构存储,其中,所述树形结构中每一节点的最大存储容量相同,所述树形结构中除最右叶子节点外所有叶子节点存储最大容量的数据;
通过加密算法对树形结构中与所述待加密数据对应的每一节点进行加密;
将各节点的加密密钥保存至该节点的父节点中;
其中,所述将所述待加密数据以树形结构存储的步骤包括:
拆分所述待加密数据为多个数据块,保存每一数据块至树形结构中与所述待加密数据对应的每一节点中;
所述拆分所述待加密数据为多个数据块的步骤包括:
确定所述待加密数据的数据指针当前偏移量;
以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块;
更新数据指针当前偏移量为已确定的数据指针当前偏移量与所述第一预设数值之和;
所述以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块的步骤包括:
判断当前读取待加密数据次数与第一预设数值之积是否小于待加密数据大小,若是,以已确定的数据指针当前偏移量为起始位置读取所述第一预设数值的数据,若否,则根据如下公式确定读取待加密数据的数量,作为第二数值,以已确定的数据指针当前偏移量为起始位置读取第二数值的数据:
L=m-(a-1)*b
其中,L为读取待加密数据的数量,m为待加密数据所占内存大小,a为当前读取待加密数据的次数,b为所述第一预设数值;
以已读取的数据作为一个数据块。
2.如权利要求1所述的方法,所述保存每一数据块至树形结构中与所述待加密数据对应的每一节点中的步骤包括:
为每一数据块分配数据块标识和为每一数据块设置版本信息,其中,每一数据块的所述数据块标识不重复,通过数据块版本信息区分数据块的版本;
判断当前节点是否存在子节点,若是,在当前节点中保存与其对应的子节点中保存的数据块的数据块标识,若否,将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中。
3.如权利要求2所述的方法,其中,所述将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中的步骤包括:
判断树形结构中其他子树是否存在未填满数据的节点,若否,执行将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中的步骤,若是,判断已读取的第二数值数据对应的数据块大小与未填满数据的节点中数据块大小之和是否超过节点最大存储容量;
若超过节点最大存储容量,则执行将已分配的数据块标识和已设置版本信息作为数据块的头文件,将当前的数据块、该数据块对应的头文件保存至当前节点中的步骤;
若未超过节点最大存储容量,将已读取的第二数值数据对应的数据块合并至已找到的、未填满数据的节点中。
4.如权利要求1至3中任一项所述的方法,其中,所述通过加密算法对树形结构中与所述待加密数据对应的每一节点进行加密的步骤包括:
通过加密算法单次对树形结构中与所述待加密数据对应的多个节点并行加密。
5.如权利要求1至3中任一项所述的方法,还包括步骤:
响应于删除树形结构中与所述待加密数据对应的、节点中数据块的操作,将已删除数据块对应的数据块标识保存至删除列表;
响应于新增数据块操作,判断新增数据块的数据块标识是否存在于所述删除列表中,若是,则不添加所述新增数据块至树形结构中与所述待加密数据对应的节点中,若否,则添加所述新增数据块至树形结构中与所述待加密数据对应的节点中。
6.如权利要求1至3中任一项所述的方法,还包括步骤:
获取待加密数据名称;
查找待加密数据的父节点;
为待加密数据创建一个数据块、创建该数据块标识;
通过加密算法对待加密数据对应的一个数据块加密;
在父节点中添加待加密数据的目录项,其中,所述目录项包括待加密数据名称、待加密数据对应的数据块标识和待加密数据对应数据块的加密密钥。
7.如权利要求1所述的方法,其中,所述树形结构中每一节点的最大存储容量与所述第一预设数值相等,所述第一预设数值为512KB。
8.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述的方法的指令。
9.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429144.9A CN113139195B (zh) | 2021-04-21 | 2021-04-21 | 一种数据加密方法及计算设备 |
PCT/CN2021/118419 WO2022222350A1 (zh) | 2021-04-21 | 2021-09-15 | 一种数据加密方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429144.9A CN113139195B (zh) | 2021-04-21 | 2021-04-21 | 一种数据加密方法及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113139195A CN113139195A (zh) | 2021-07-20 |
CN113139195B true CN113139195B (zh) | 2023-10-13 |
Family
ID=76813666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110429144.9A Active CN113139195B (zh) | 2021-04-21 | 2021-04-21 | 一种数据加密方法及计算设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113139195B (zh) |
WO (1) | WO2022222350A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113139195B (zh) * | 2021-04-21 | 2023-10-13 | 统信软件技术有限公司 | 一种数据加密方法及计算设备 |
CN115085900B (zh) * | 2022-08-22 | 2022-11-29 | 四川汉唐云分布式存储技术有限公司 | 一种基于分布式存储的同态加密方法 |
CN117633841A (zh) * | 2023-12-12 | 2024-03-01 | 上海合芯数字科技有限公司 | 加密模块控制器、加密模块、加密系统和加密处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959419A (zh) * | 2016-07-15 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 基于一致性树的分布式存储结构的构建方法及系统 |
CN107679182A (zh) * | 2017-09-29 | 2018-02-09 | 华为技术有限公司 | 一种目录配置方法及装置 |
CN111414635A (zh) * | 2020-03-20 | 2020-07-14 | 广州市百果园信息技术有限公司 | 文件加密、解密方法、装置、设备和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615692B (zh) * | 2015-01-23 | 2017-09-19 | 重庆邮电大学 | 一种支持动态更新及多关键字安全排序的可搜索加密方法 |
US9900325B2 (en) * | 2015-10-09 | 2018-02-20 | Microsoft Technology Licensing, Llc | Passive encryption of organization data |
US11068447B2 (en) * | 2017-04-14 | 2021-07-20 | Databricks Inc. | Directory level atomic commit protocol |
CN113139195B (zh) * | 2021-04-21 | 2023-10-13 | 统信软件技术有限公司 | 一种数据加密方法及计算设备 |
CN113094756A (zh) * | 2021-05-13 | 2021-07-09 | 统信软件技术有限公司 | 一种数据加密方法及计算设备 |
-
2021
- 2021-04-21 CN CN202110429144.9A patent/CN113139195B/zh active Active
- 2021-09-15 WO PCT/CN2021/118419 patent/WO2022222350A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959419A (zh) * | 2016-07-15 | 2016-09-21 | 浪潮(北京)电子信息产业有限公司 | 基于一致性树的分布式存储结构的构建方法及系统 |
CN107679182A (zh) * | 2017-09-29 | 2018-02-09 | 华为技术有限公司 | 一种目录配置方法及装置 |
CN111414635A (zh) * | 2020-03-20 | 2020-07-14 | 广州市百果园信息技术有限公司 | 文件加密、解密方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113139195A (zh) | 2021-07-20 |
WO2022222350A1 (zh) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113139195B (zh) | 一种数据加密方法及计算设备 | |
RU2456663C2 (ru) | Прогрессивная начальная загрузка для беспроводного устройства | |
WO2022237046A1 (zh) | 一种数据加密方法及计算设备 | |
US9311229B2 (en) | System and method for managing flash memory | |
US8606830B2 (en) | Contiguous file allocation in an extensible file system | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN102129425A (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
CN113377289A (zh) | 一种缓存管理方法、系统、计算设备及可读存储介质 | |
WO2022252449A1 (zh) | 文件访问控制方法、文件加密方法及计算设备 | |
CN102955778A (zh) | 一种网络社区数据的快速查找方法及系统 | |
EP3343395B1 (en) | Data storage method and apparatus for mobile terminal | |
CN113704182B (zh) | 一种数据检查方法及计算设备 | |
CN113407999B (zh) | 一种文件保护方法、计算设备及存储介质 | |
CN113536361A (zh) | 一种可信基准库的实现方法、装置及计算设备 | |
CN115190136B (zh) | 一种数据存储方法、数据传输方法及计算设备 | |
CN113254965B (zh) | 一种软件包加密方法、计算设备及储存介质 | |
CN113535734B (zh) | 一种数据存储方法、数据查询方法和计算设备 | |
US9323753B2 (en) | Method and device for representing digital documents for search applications | |
CN113419998B (zh) | 一种文件夹处理方法、计算设备及可读存储介质 | |
CN113849246B (zh) | 插件识别方法、插件加载方法、计算设备及存储介质 | |
CN116303609A (zh) | 一种数据查询方法、装置、计算设备及存储介质 | |
CN113792320A (zh) | 文件加密方法、文件加密访问方法及计算设备 | |
CN116827630A (zh) | 卡片业务信息的可搜索加密方法、装置、设备和存储介质 | |
CN114020701A (zh) | 一种快捷方式创建方法、计算设备和存储介质 | |
CN114265533A (zh) | 一种资源访问方法、计算设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |