一种数据加密方法及计算设备
文献发布时间:2023-06-19 11:45:49
技术领域
本发明涉及加密技术领域,特别涉及一种数据加密方法、计算设备及储存介质。
背景技术
随着信息化技术的不断发展,个人和企业的数据安全性已越来越重要,如何保障数据的安全性已成为当下的热点。
现有主流的操作系统,例如windows、linux操作系统,由于在操作系统的文件管理器中没有提供加密功能,因此要想实现数据加密只有安装第三方加密工具,例如具有加密功能的winrar、7zip等压缩工具或者例如encfs、gocryptfs、veracrypt等加密工具,实现过程繁琐。此外,第三方工具的加密方式、加密参数、加密操作等各不相同,对普通用户来说学习成本较高,并且通过第三方加密工具进行数据加密的安全性低。
为此,本发明提供了一种可降低学习成本、简化加密过程和提高数据加密安全性地数据加密方法。
发明内容
为此,本发明提供一种数据存储方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种数据加密方法,适于在操作系统的文件管理器中执行,操作系统的文件管理器中嵌入加密文件系统,加密文件系统为操作系统的文件系统,加密文件系统单独占用一个非常驻进程,加密文件系统中存储预定树形结构,方法包括步骤:
获取待加密数据;
通过加密文件系统将待加密数据以预定树形结构存储,其中,预定树形结构中每一节点的最大存储容量相同,除最右叶子节点外所有叶子节点存储最大容量的数据;
通过加密文件系统对预定树形结构中每一节点进行加密,从而基于文件管理器实现数据的加密。
可选地,通过如下方式在文件管理器中嵌入加密文件系统:
创建挂载目录,其中,挂载目录为用户可以直接访问的目录,当前挂载目录为空;
将加密文件系统挂载至所述挂载目录。
可选地,加密文件系统通过如下方式将待加密数据以预定树形结构存储:
将待加密数据拆分为多个数据块;
将已拆分的多个数据块以预定树形结构存储,得到基础目录;
其中,加密文件系统通过如下方式对预定树形结构中每一节点进行加密的步骤包括:
基于数据加密算法对预定树形结构中每一节点进行加密,得到加密基础目录。
可选地,还包括步骤:
解密加密基础目录,得到基础目录
挂载基础目录至挂载目录中;
响应用户访问挂载目录中基础目录的数据块,当访问时间超过第一预设时间时,对当前访问的数据块对应的节点进行加密。
可选地,在挂载基础目录至挂载目录中之后,还包括步骤:
将挂载目录中基础目录的路径替换为预设虚拟路径。
可选地,加密文件系统将待加密数据拆分为多个数据块的步骤包括:
确定待加密数据对象的数据指针当前偏移量;
以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块;
更新数据指针当前偏移量为已确定的数据指针当前偏移量与第一预设数值之和。
可选地,加密文件系统以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块的步骤包括:
判断当前读取待加密数据次数与第一预设数值之积是否小于待加密数据大小,若是,以已确定的数据指针当前偏移量为起始位置读取所述第一预设数值的数据,若否,则根据如下公式确定读取待加密数据的数量,作为第二数值,以已确定的数据指针当前偏移量为起始位置读取第二数值的数据:
L=m-(a-1)*b
其中,L为读取待加密数据的数量,m为待加密数据所占存储空间大小,a为当前读取待加密数据的次数,b为第一预设数值;
以已读取的数据作为一个数据块。
可选地,加密文件系统将已拆分的多个数据块以预定树形结构存储的步骤包括:
判断当前节点是否存在子节点,若是,在当前节点中保存其子节点ID,若否,在当前节点中保存当前节点ID和数据块。
可选地,加密文件系统将已拆分的多个数据块以预定树形结构存储的步骤还包括:
为每一数据块分配唯一数据块ID和为每一数据块设置版本信息,其中,通过数据块ID区分数据块,通过数据块版本信息区分数据块的版本;
其中,判断当前节点是否存在子节点的步骤包括:
判断当前节点是否存在子节点,若是,在当前节点中保存其子节点ID,若否,在当前节点中保当前节点ID、数据块版本信息、数据块和数据块ID。
可选地,加密文件系统在当前节点中保当前节点ID、数据块版本信息、数据块和数据块ID的步骤包括:
判断预定树形结构中是否存在未填满的节点,若否,在当前节点中保当前节点ID、数据块版本信息、数据块和数据块ID,若是,判断已读取的第二数值数据对应的数据块大小与未填满数据的节点中数据块大小之和是否超过节点最大存储容量;
若超过节点最大存储容量,则在当前节点中保当前节点ID、数据块版本信息、数据块和数据块ID;
若未超过节点最大存储容量,将已读取的第二数值数据对应的数据块、该数据块的版本信息和数据块ID合并至已找到的、未填满数据的节点中。
可选地,加密文件系统将已拆分的多个数据块以预定树形结构存储的步骤还包括:
响应于通过目标数据块替换预定树形结构的一个叶子节点中数据块的操作,判断目标数据块的数据块ID与当前节点中的数据块ID是否相同,若否,则不进行替换,若是,则判断目标数据块的数据块版本信息与当前节点中的数据块版本信息是否相同;
若目标数据块的数据块版本信息与当前节点中数据块版本信息相同,则将当前节点中数据块替换为所述目标数据块,若不相同,则不进行替换。
可选地,加密文件系统对预定树形结构中每一节点进行加密,得到加密基础目录的步骤包括:
通过数据加密算法单次对预定树形结构中的多个节点并行加密;
将各节点的加密密钥保存至该节点的父节点中,得到加密基础目录;
其中,判断当前节点是否存在子节点的步骤包括:
判断当前节点是否存在子节点,若是,在当前节点中保存其子节点ID和子节点加密密钥,若否,在当前节点中保当前节点ID、数据块版本信息、数据块和数据块ID。
可选地,响应用户访问挂载目录中基础目录的数据块,当访问时间超过第一预设时间时,对当前访问的数据块对应的节点进行加密的步骤包括:
通过数据加密算法加密已获取的待加密数据,得到第一密钥;
通过第一密钥解密待加密数据;
通过子节点加密密钥对与待加密数据所对应的预定树形结构的节点进行解密;
响应用户访问挂载目录中基础目录的数据块,从用户访问该数据块开始计时,当访问时间超过预设第一阈值时,通过数据加密算法对当前访问的数据块对应的节点进行加密。
可选地,还包括步骤:
通过数据加密算法对第一密钥进行加密,得到恢复密钥,其中,在忘记第一密钥时,通过恢复密钥得到第一密钥。
可选地,还包括步骤:
响应锁屏操作,对当前访问的数据块通过数据加密算法加密。
可选地,还包括步骤:
屏蔽已加密数据的特殊功能,其中,特殊功能包括数据共享功能、添加书签功能和标记功能中的一种或多种。
可选地,预定树形结构中每一节点的最大存储容量与第一预设数值相等,第一预设数值为512KB。
可选地,加密文件系统为fuse文件系统。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,提供了一种数据加密方法,在文件管理器中嵌入数据加密模块,使得文件管理器通过数据加密模块实现数据加密,从而无需再安装第三方加密软件,用户也不需要学习第三方加密软件的使用方法,降低学习成本、增强数据加密的便利性。该数据加密模块单独占用一个进程(非常驻进程),与文件管理器不在一个进程,当操作系统关机时,加密文件系统的进程会自动退出,此时挂载的待加密数据目录会自动卸载,从而实现关机自动加密,提高数据加密的安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的数据加密方法200的流程图;
图3示出了根据本发明一个实施例的通过加密文件系统将已拆分的多个数据块以预定树形结构存储的方法流程图;
图4示出了根据本发明一个实施例的预定存储结构的示意图;以及
图5示出了根据本发明一个实施例的预定存储结构对应映射表的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
文件管理器,是操作系统的组成部分,是文件管理工具,可以对文件或文件夹进行管理,包括文件的复制、剪切、移动、删除、新建、搜索等操作。但是目前操作系统中的文件管理器不包括数据加密功能。
而随着信息化技术的不断发展,个人和企业的数据安全性已越来越重要,如何保障数据的安全性已成为当下的热点。现有主流的操作系统,例如linux操作系统,由于在操作系统的文件管理器中没有提供加密功能,因此要想实现数据加密只有安装第三方加密工具,例如具有加密功能的winrar、7zip等压缩工具或者例如encfs、gocryptfs、veracrypt等加密工具,过程比较繁琐。
在通过第三方加密工具加密或解密文件时只需输入密码即可,可以很好的保护用户的私密数据,但是不同加密工具需要不同的操作和加密设置,用户的学习成本较高。并且使用加密工具时,当加密数据解密后,且用户锁屏离开电脑至用户回到电脑前的时间段内,知晓电脑密码的人员解锁后可以直接访问未上锁的私密数据,容易造成数据泄露。
压缩工具会提供加密功能,但是当加密数据解压后,加密文件是以普通文件夹的形式存在,此时不论操作系统状态如何文件夹都不会自动重新上锁,当用户离开电脑时,容易造成数据泄露。
为此,本发明定义了一种树形结构,该树形结构的定义如下:树形结构中每一节点的最大存储容量相同,树形结构中除最右叶子节点外所有叶子节点存储最大容量的数据,并且树形结构中每一节点存储当前节点ID、子节点ID、子节点加密密钥,或者存储当前节点ID、数据块版本信息(区分数据块的不同版本)、数据块和数据块ID(区分数据块)。
在定义了树形结构的基础之上,本发明提供了一种数据加密方法,在操作系统的文件管理器中嵌入数据加密模块,使得文件管理器通过数据加密模块实现数据加密,从而无需再安装第三方加密软件,用户也不需要学习第三方加密软件的使用方法,降低学习成本、增强数据加密的便利性。
该数据加密模块为加密文件系统(文件系统),也即在文件管理器中嵌入加密文件系统,加密文件系统单独占用一个进程(非常驻进程),即与文件管理器(在常驻进程)不在一个进程,当操作系统关机时,加密文件系统的进程会自动退出,此时挂载的待加密数据目录会自动卸载,从而实现关机自动加密,提高数据加密的安全性。
另外,通过预定树形结构存储数据,并对树形结构中的每一节点进行加密,实现了对元数据(文件元数据为描述数据的数据,主要是描述数据属性信息,例如文件的大小、个数、目录结构等)的加密,提高数据加密的安全性。
文件管理器还会响应锁屏操作,对当前访问的数据块加密,以及当访问数据超过预设时间时会自动加密,从而在用户访问解密数据的过程中,若计算设备锁屏或者访问数据块的时间超过预设时间,可自动为当前访问的数据加密,进一步提高数据加密的安全性。
由于树形结构中除最右叶子节点外所有叶子节点均存储最大容量的数据(相比于每个叶子节点仅存储部分数据,而未存储最大容量的数据),节点数量会减少,从而减少存储空间浪费。由于叶子节点存储数据的最大容量相同,因此在确定已加密的数据大小时,无需获取每个节点存储数据的大小,只需访问最右叶子节点的数据大小即可计算已加密的数据大小,可快速确定已加密的数据大小,减少耗时。并且节点中还存储加密数据块版本信息,使得攻击者无法通过同一个数据块的不同版本对该数据块进行替换,保证数据的完整性,从而还可提高数据加密的安全性。还需说明的是,节点中存储其子节点的加密密钥,使得只有获取上级节点的加密密钥并解密后,才可对其子节点解密,更进一步提高数据加密的安全性。
本发明的数据加密方法在操作系统的文件管理器中执行,而操作系统配置于计算设备中。在一个实施例中,图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的操作系统120的文件管理器中执行,本发明的数据加密方法应用于linux操作系统的文件管理器中。如图2所示,数据存储方法200始于步骤S210。
在执行步骤S210之前,需要在文件管理器中嵌入数据加密模块,通过数据加密模块对数据进行存储、加密和解密,该数据加密模块为加密文件系统(即文件系统),也即在文件管理器中嵌入加密文件系统,加密文件系统中存储预定树形结构,加密文件系统单独占用一个非常驻进程,即,与文件管理器不在一个进程。其中,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储、并对存入的文件进行保护和检索的系统。
在一个实施方式中,在文件管理器中嵌入加密文件系统的方式如下:创建挂载目录,其中,挂载目录为用户可以直接访问的目录,当前挂载目录为空,将加密文件系统挂载至挂载目录,此时挂载目录的内容为待加密数据,从而实现将加密文件系统嵌入文件管理器中。挂载目录中的待加密数据可以直接被访问、修改,在挂载目录中对文件的任何修改都会通过文件系统同步到待加密数据对应内容中。其中,文件系统例如fuse文件系统,本发明对文件系统不做限制,所有的文件系统均在本发明的保护范围之内。
需要说明的是,由于加密文件系统单独占用一个非常驻进程,与文件管理器不在一个进程,当操作系统关机时,加密文件系统的非常驻进程会自动退出,此时挂载至挂载目录的待加密数据会自动卸载,从而实现关机自动加密,提高数据加密的安全性。
在文件管理器中嵌入加密文件系统后,在步骤S210中,获取待加密数据,并通过加密文件系统挂载已获取的待加密数据至挂载目录,具体地:获取待加密数据,查找挂载目录的挂载点,将待加密数据挂载至挂载点处。
获取待加密数据后,通过数据加密算法对已获取的待加密数据进行第一层加密,得到第一密钥。其中,第一密钥为用户设置的密码,第一密钥为对待加密数据的第一层加密密钥,后续还会对待加密数据进行二次加密,其中,加密算法包括但不限于SAR、AES-256-GCM、TWOFISH-256-GCM,本发明对此不做限制,所有的加密算法均在本发明的保护范围之内。
为了防止用户忘记第一密钥而无法对待加密数据进行第一层解密,在一个实施方式中,对第一密钥通过数据加密算法(例如SAR数据加密算法)进行加密,得到恢复密钥,包括以下步骤:
通过数据加密算法生成公钥和私钥,将公钥与第一密钥结合得到恢复密钥。进一步地,为了方便用户保存恢复密钥,将恢复密钥通过二维码技术得到与其对应的二维码,从而用户通过扫描二维码即可在移动设备中保存恢复密钥。当用户忘记第一密钥时,将私钥和恢复密钥同时输入数据加密算法中,通过数据加密算法解密即可得到第一密钥。
接着在步骤S220中,通过加密文件系统将待加密数据以预定树形结构存储。在一个实施方式中,通过加密文件系统,将待加密数据拆分为多个数据块,将已拆分的多个数据块以预定树形结构存储,得到基础目录。其中,预定树形结构中每一节点的最大存储容量相同,除最右叶子节点外所有叶子节点存储最大容量的数据,预定树形结构中的每一节点对应分配一个唯一节点ID,节点ID可以是随机数、随机字符、数字与字符的随机组合等,本发明对此不做限定,例如节点ID为rootID(根据点ID)、ID_A、ID_A_1等。
一个实施方式中,加密文件系统将待加密数据拆分为多个数据块的步骤包括:确定待加密数据对象的数据指针当前偏移量,以已确定的数据指针当前偏移量为起始位置,从待加密数据中读取第一预设数值的数据,作为一个数据块,更新数据指针当前偏移量为已确定的数据指针当前偏移量与第一预设数值之和。
接下来以加密文件系统拆分一个数据块为例,过程如下:确定待加密数据的数据指针当前偏移量,判断当前读取待加密数据次数与第一预设数值之积是否小于待加密数据大小,若是,以已确定的数据指针当前偏移量为起始位置读取第一预设数值的数据,若否,则根据如下公式确定读取待加密数据的数量,作为第二数值,以已确定的数据指针当前偏移量为起始位置读取第二数值的数据:
L=m-(a-1)*b
其中,L为读取待加密数据的数量,m为待加密数据所占内存大小,a为当前读取待加密数据的次数,b为第一预设数值,第一数值与预定树形结构中各节点的最大存储容量相同,也就是说,树形结构中待加密数据对应的叶子节点存储数据的最大容量相同。
由于树形结构中待加密数据对应的叶子节点存储数据的最大容量相同,而叶子节点中存储数据块,因此在利用上述树形结构存储待加密数据后,获取已加密的数据大小时,无需获取每个节点存储数据的大小再求和,而是将节点数量减1后与节点最大容量相乘,再加上最右叶子节点数据大小即可确定待加密数据大小,相当于只访问最右叶子节点的数据大小即可计算已加密数据大小,可快速获取数据大小,减少耗时。
在一个实施方式中,以大小为2GB的待加密数据、加密算法为AES-256-GCM进行测试,记录不同大小的数据块对应的拷贝用时和删除用时,如表1所示:
表1
由表1可知,数据块大小在512MB时拷贝数据块用时为21s、删除数据块用时4s,相比于数据块大小在256MB时拷贝数据块用时为22s、删除数据块用时6s,数据块大小在512MB时拷贝数据块用时减少1s、删除数据块用时减少2s。数据块大小在1024KB时拷贝数据块用时为20s、删除数据块用时3s,与数据块大小在512MB时相比,数据块大小在1024MB时拷贝数据块用时减少1s、删除数据块用时减少1s,可见在数据块大小为1024MB时性能增益已经很小,并且随着数据块大小的增长,还会使得加密耗时严重的问题,所以本发明将第一数值设置为512KB,预定树形结构中各节点的最大存储容量同样为512KB。
随后以已读取的数据作为一个数据块,并更新数据指针当前偏移量为已确定的数据指针当前偏移量与第一预设数值之和。并重复上述过程,即可将待加密数据划分为多个数据块。
在将待加密数据拆分为多个数据块的过程中,除了最右叶子节点外其他叶子节点均存储最大容量的数据,由于其他叶子节点均存储最大容量的数据,在存储相同大小的数据时节点数量会减少,从而在数据加密过程中减少存储空间的占用,提高文件管理器的运行效率,进而提高数据加密效率。
通过加密文件系统将待加密数据拆分为多个数据块后,在一个实施方式中,如图3所示,图3为本发明中通过加密文件系统将已拆分的多个数据块以预定树形结构存储的方法流程图,图3包括步骤S310至步骤S370。
在步骤S310中,为每一数据块分配唯一数据块ID和为每一数据块设置版本信息,其中,通过数据块ID区分数据块,数据块ID可以为随机数、随机字符、数字与字符的随机组合等,本发明对此不做限定,例如,数据块ID为file A1。数据块版本信息可以区分数据块的版本,版本信息可以随机数、随机字符、数字与字符的随机组合等,本发明对此不做限定,只要设置的版本信息唯一即可,例如版本(version)为1。
接着在步骤S320中,判断当前节点是否存在子节点,若是(说明该节点不是叶子节点),执行步骤S330,在当前节点中保存当前节点ID和子节点ID,若否(说明该节点是叶子节点),执行步骤S340,判断预定树形结构中是否存在未填满的节点,若否,执行步骤S350,在当前节点中保当前节点ID、数据块版本信息、数据块和数据块ID。若预定树形结构中存在未填满的节点,执行步骤S360,判断已读取的第二数值数据对应的数据块大小与未填满数据的节点中数据块大小之和是否超过节点最大存储容量,若是,执行步骤S350,若否,执行步骤S370,将已读取的第二数值数据对应的数据块合并至已找到的、未填满数据的节点中。由于树形结构中不同子树中未填满节点待存储的数据块可以进行合并,因此在数据加密过程中进一步减少存储空间占用的情况下,从而减少存储空间的浪费,提高存储空间的利用率。
在一个实施方式中,加密文件系统响应于通过目标数据块替换预定树形结构的一个叶子节点中存储的数据块的操作,判断目标数据块的数据块ID与当前节点中的数据块ID是否相同,若否,则不进行替换,若是,则判断目标数据块的数据块版本信息与当前节点中的数据块版本信息是否相同。若目标数据块的数据块版本信息与当前节点中数据块版本信息相同,则将当前节点中数据块替换为目标数据块,若不相同,则不进行替换。
通过在节点中保存数据的数据块ID和版本信息,相当于对存储数据的节点格式进行规范,可避免攻击者使用不同ID的数据块替换或删除当前ID的数据块,也可避免攻击者利用之前版本的数据块替换或删除当前版本数据块,从而提高数据加密的安全性。
之后在步骤S230中,通过加密文件系统对预定树形结构中每一节点进行加密,具体地,通过数据加密算法单次对预定树形结构中的多个节点并行加密,也就是说,可以一次对多个数据块同时加密,从而提高数据加密效率,并将各节点的加密密钥保存至该节点的父节点中,得到加密基础目录。
在一个实施方式在中,通过加密文件系统将各节点的加密密钥保存至该节点的父节点中,其中,加密密钥为加密数据块、解密预定树形结构中各节点的密码。因此,在该实施方式中,上述步骤S330为:在当前节点中保存当前节点ID、子节点ID和子节点加密密钥。由于将每一节点的加密密钥保存至该节点的父节点中,若想解密一个数据块,需要由上至下迭代解密,即需要上述的第一密钥对待加密数据进行第一层解密,再根据预定树形结构由上至下逐级解密各节点(相当于第二层解密),才能获取该节点的加密密钥,解密难度增大,进一步提高了数据加密的安全性。
以一个待加密文件(待加密数据)拆分为4个数据块为例,图4为一个实施例的预定存储结构的示意图。图4中的存储结构包括节点rootID、ID_A、ID_B、ID_C、ID_A_1、ID_B_1和ID_B_2,节点rootID为该存储结构的根节点,节点ID_A、ID_B、ID_C为节点rootID的子节点,节点ID_A_1为节点ID_A的子节点,节点ID_B_1和ID_B_2分别为节点ID_B的子节点。在图4示出的存储结构中,节点ID_C、ID_A_1、ID_B_1和ID_B_2为叶子节点,这四个节点中存储数据块,由于ID_B_2为最右叶子节点,因此节点ID_C、ID_A_1、ID_B_1均可存储最大容量的数据,而节点ID_B_2可以不存储最大容量数据,在该节点可存在部分空余存储空间。
在该实施方式中,节点rootID为根节点,该节点中存储当前节点ID、子节点ID和子节点加密密钥。由于节点ID_A、ID_B存在子节点,因此节点ID_A、ID_B存储当前节点ID、子节点ID和子节点加密密钥。由于节点ID_C无子节点,因此节点ID_C存储当前节点ID、数据块版本信息、数据块和数据块ID。节点ID_A_1为节点ID_A的子节点,且该节点无子节点,因此节点ID_A_1存储当前节点ID、数据块版本信息、数据块和数据块ID。节点ID_B_1和ID_B_2为节点ID_B的子节点,且无子节点,因此节点ID_B_1和ID_B_2分别存储当前节点ID、数据块版本信息、数据块和数据块ID。
根据存储结构可映射为一个映射表,那么待存储数据以预定存储结构存储后同样会映射为一个映射表,以图4中所示的存储结构为例,其对应的映射表如图5所示,图5为一个待加密文件对应存储结构的映射表的示意图,以将待加密文件拆分为四个数据块(数据块名称分别为file A1、file B1、file B2和file C)为例。
图5中的节点rootID为该存储结构的根节点,该节点保存当前节点ID(rootID)、子节点ID(ID_A、ID_B和ID_C)和子节点加密密钥(ID_A_pw、ID_B_pw和ID_C_pw)。节点ID_A、ID_B为节点rootID的子节点,且这两个节点存在子节点,因此节点ID_A、ID_B中分别保存当前节点ID、子节点ID和子节点加密密钥,具体地,节点ID_A、ID_B分别存储当前节点ID(ID_A、ID_B)、子节点ID(ID_A_1、ID_B_1、ID_B_2)和子节点加密密钥(ID_A_1_pw、ID_B_1_pw、ID_B_2_pw)。节点ID_C为节点rootID的子节点,且该节点无子节点,因此节点ID_C存储当前节点ID、数据块版本信息、数据块和数据块ID,具体地,当前节点ID(ID_C)、数据块版本信息(version)、数据块(conrent)和数据块ID(file C)。节点ID_A_1为节点ID_A的子节点,且该节点无子节点,因此节点ID_A_1存储当前节点ID、数据块版本信息、数据块和数据块ID,具体为,当前节点ID(ID_A_1)、数据块版本信息(version)、数据块(conrent)和数据块ID(file A)。节点ID_B_1和ID_B_2分别为节点ID_B的子节点,且两个节点无子节点,因此节点ID_B_1和ID_B_2分别存储当前节点ID(分别为ID_B_1、ID_B_2)、数据块版本信息(version、version)、数据块(conrent、conrent)和数据块ID(file B1、file B2)。
通过上述内容,实现了在文件管理器中嵌入加密文件系统,使得文件管理器基于该加密文件系统实现数据加密,从而无需再安装第三方加密软件,用户也不需要学习第三方加密软件的使用方法,降低学习成本、增强数据加密的便利性。由于该加密文件系统单独占用一个进程(非常驻进程),与文件管理器(文件管理器所在进程为常驻进程)不在一个进程,当操作系统关机时,加密文件系统的进程会自动退出,此时挂载的待加密数据目录会自动卸载,从而实现关机自动加密,提高数据加密的安全性。并且加密文件系统在数据加密过程中将子节点的加密密钥保存至其父节点中,从而增大解密难度增大,提高数据加密的安全性。
为了防止用户根据待加密数据的真实路径对数据进行修改等操作,在一个实施方式中,先将已加密数据通过第一密钥和加密密钥进行解密,得到解密后的数据,通过加密文件系统查找文件对应的、已解密的数据,并接收通过加密文件系统发送的、解密后的数据,并将解密后的数据的根路径通过虚拟路径(例如dfmvault)进行替换。例如,正常情况下会显示如下数据路径:/local/share/applications/vault_unlocked/文件夹A/test/,但经过虚拟路径替换后,路径前面部分被虚拟路径替换,例如为:dfmvault:///文件夹A/test/。通过上述方法,使得用户无法看到待加密数据的真实路径,从而防止用户对待加密数据进行删除、修改等操作,提高数据加密的安全性。
当对已加密的数据进行解密后,且用户锁屏离开电脑至用户回到电脑前的时间段内,知晓电脑密码的人员解锁后可以直接访问未上锁的私密数据,容易造成数据泄露。为了解决该问题,本发明中文件管理器响应锁屏操作,对当前访问的数据块通过数据加密算法加密。通过上述方法,当对已加密的数据进行解密后,且用户锁屏离开电脑至用户回到电脑前的时间段内,由于已对该数据自动加密,因此知晓电脑密码的人员解锁后也看不到该数据,防止数据泄露,实现了锁屏自动加密,进一步提高数据加密的安全性。
在一个实施方式中,预设了访问时间,当访问数据时间超过预设时间,即将该数据自动加密。具体地,响应用户访问挂载目录中的数据块,当访问时间超过第一预设时间时,通过加密文件系统对当前访问的数据块对应的节点进行加密。其中,第一预设时间可以根据实际应用场景自行设置,本发明对此不做限制,例如,第一预设时间为5分钟、10分钟或者20分钟。其中,加密文件系统通过数据加密算法对当前访问的数据块对应的节点进行加密,进一步提高数据加密的安全性。
已有的文件管理器出于便利性考虑,会增加文件共享、书签、标记等功能,而对于加密文件内的数据,隐私性较高,所以本发明中会屏蔽特殊功能。在一个实施方式中,通过以下方式屏蔽特殊功能:响应用户选中挂载目录中的数据,获取该数据的路径,判断已获取路径的路径头是否为虚拟路径,若是,不显示特殊性能的菜单项,若否,显示特殊性能的菜单项。其中,特殊性能包括但不限于数据共享功能、添加书签功能和标记功能。
根据上述内容,在文件管理器中嵌入数据加密模块,使得文件管理器通过数据加密模块实现数据加密,从而无需再安装第三方加密软件,用户也不需要学习第三方加密软件的使用方法,降低学习成本、增强数据加密的便利性。该数据加密模块为加密文件系统,加密文件系统单独占用一个进程(非常驻进程),即与文件管理器不在一个进程,当操作系统关机时,加密文件系统的进程会自动退出,此时挂载的待加密数据目录会自动卸载,从而实现关机自动加密,提高数据加密的安全性。文件管理器还会响应锁屏操作,对当前访问的数据块加密,以及当访问数据超过预设时间时会自动加密,从而在用户访问解密数据的过程中,若计算设备锁屏或者访问数据块的时间超过预设时间,可自动为当前访问的数据加密,进一步提高数据加密的安全性。
A9如A8所述的方法,所述加密文件系统将已拆分的多个数据块以预定树形结构存储的步骤还包括:
为每一数据块分配唯一数据块ID和为每一数据块设置版本信息,其中,通过数据块ID区分数据块,通过数据块版本信息区分数据块的版本;
其中,所述判断当前节点是否存在子节点的步骤包括:
判断当前节点是否存在子节点,若是,在当前节点中保存其子节点ID,若否,在当前节点中保当前节点ID、数据块版本信息、数据块和所述数据块ID。
A10如A9所述的方法,其中,所述加密文件系统在当前节点中保当前节点ID、数据块版本信息、数据块和所述数据块ID的步骤包括:
判断所述预定树形结构中是否存在未填满的节点,若否,在当前节点中保当前节点ID、数据块版本信息、数据块和所述数据块ID,若是,判断已读取的第二数值数据对应的数据块大小与未填满数据的节点中数据块大小之和是否超过节点最大存储容量;
若超过节点最大存储容量,则在当前节点中保当前节点ID、数据块版本信息、数据块和所述数据块ID;
若未超过节点最大存储容量,将已读取的第二数值数据对应的数据块、该数据块的版本信息和数据块ID合并至已找到的、未填满数据的节点中。
A11如A9或A10所述的方法,所述加密文件系统将已拆分的多个数据块以预定树形结构存储的步骤还包括:
响应于通过目标数据块替换所述预定树形结构的一个叶子节点中数据块的操作,判断所述目标数据块的数据块ID与当前节点中的数据块ID是否相同,若否,则不进行替换,若是,则判断所述目标数据块的数据块版本信息与当前节点中的数据块版本信息是否相同;
若所述目标数据块的数据块版本信息与当前节点中数据块版本信息相同,则将当前节点中数据块替换为所述目标数据块,若不相同,则不进行替换。
A12如A9至A11中任一项所述的方法,其中,所述加密文件系统对所述预定树形结构中每一节点进行加密,得到加密基础目录的步骤包括:
通过所述数据加密算法单次对所述预定树形结构中的多个节点并行加密;
将各节点的加密密钥保存至该节点的父节点中,得到所述加密基础目录;
其中,所述判断当前节点是否存在子节点的步骤包括:
判断当前节点是否存在子节点,若是,在当前节点中保存其子节点ID和子节点加密密钥,若否,在当前节点中保当前节点ID、数据块版本信息、数据块和所述数据块ID。
A13如A12所述的方法,其中,所述响应用户访问所述挂载目录中基础目录的数据块,当访问时间超过第一预设时间时,对当前访问的数据块对应的节点进行加密的步骤包括:
通过所述数据加密算法加密已获取的所述待加密数据,得到第一密钥;
通过所述第一密钥解密所述待加密数据;
通过所述子节点加密密钥对与待加密数据所对应的预定树形结构的节点进行解密;
响应用户访问所述挂载目录中基础目录的数据块,从用户访问该数据块开始计时,当访问时间超过预设第一阈值时,通过所述数据加密算法对当前访问的数据块对应的节点进行加密。
A14如A13所述的方法,还包括步骤:
通过所述数据加密算法对所述第一密钥进行加密,得到恢复密钥,其中,在忘记所述第一密钥时,通过所述恢复密钥得到所述第一密钥。
A15如A1至A14中任一项所述的方法,还包括步骤:
响应锁屏操作,对当前访问的数据块通过数据加密算法加密。
A16如A1至A15中任一项所述的方法,还包括步骤:
屏蔽已加密数据的特殊功能,其中,所述特殊功能包括数据共享功能、添加书签功能和标记功能中的一种或多种。
A17如A6至A16中任一项所述的方法,其中,所述预定树形结构中每一节点的最大存储容量与所述第一预设数值相等,所述第一预设数值为512KB。
A18如A1至A17中任一项所述的方法,其中,所述加密文件系统为fuse文件系统。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据加密方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
- 一种数据加密方法及计算设备
- 一种软件包加密方法、计算设备及储存介质