本发明涉及计算机技术领域,尤其涉及一种文件管理方法及装置、存储设备。
背景技术:
随着计算机技术和网络技术的发展,人们可以随时随地通过终端设备生成大量的数据,包括用户拍摄的图片或视频数据、支付数据、办公数据、备忘数据等,还有一些需要作为证据使用的证据数据等。这些数据在一般情况下,用户可以存储到终端本地,也可以存储到存储服务商提供的网络服务器中,例如存储到百度等公司设置的云存储服务器。
在数据存储过程中,如何保证数据的安全成为研究的热点。当前无论是终端本地存储还是网络存储,安全处理一般都是在应用层面,用户可以通过相关应用APP等,对文件进行加密,例如压缩时加密,存储到网络时设置文件提取密码,只有输入正确的文件提取密码才能提取文件,只有输入正确的压缩密码,才能正确解压缩文件。
现有的方式都需要用户来完成文件的安全处理,而如何在文件系统层面来自动执行文件的安全处理成为研究的热点。
技术实现要素:
本发明实施例提供一种文件管理方法及装置、存储设备,可基于安全文件系统来完成文件的安全管理。
一方面,本发明实施例提供了一种文件管理方法,其特征在于,包括:
在接收到待存储数据时,调用已加载的第一文件系统对所述待存储数据进行安全处理得到安全文件;并调用已加载的第二文件系统存储所述安全文件,以完成对所述待存储数据的存储处理;
在接收到针对所述安全文件的读操作时,调用所述第二文件系统将存储的所述安全文件复制到缓存区中,并调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,将解密后的数据作为所述读操作的响应数据以响应所述读操作;
其中,所述第一文件系统为在虚拟文件系统调用接口中注册的用于对文件进行安全处理的系统,所述第二文件系统为在所述虚拟文件系统调用接口中注册的用于执行文件存储的系统。
其中可选地,所述调用第一文件系统对所述待存储数据进行安全处理,包括:
调用第一文件系统为所述待存储文件生成会话密钥和第一加密值;
调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理;
其中,所述会话密钥是调用系统随机数产生器产生的随机数,所述第一加密值是对所述会话密钥进行哈希计算后得到的值,所述会话密钥和所述第一加密值用于对所述待存储文件进行加密。
其中可选地,所述调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理,包括:
调用所述第一文件系统为所述待存储数据确定出多个存储区块;
调用第一文件系统生成第二加密值,并调用所述第一文件系统根据所述会话密钥和第二加密值对所述待存储文件进行加密;
所述第二加密值是通过对所述第一加密值和划分得到的所述存储区块的区块编号进行哈希计算后得到的;
所述调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,包括:
调用第一文件系统根据为所述安全文件存储的会话密钥计算得到第二加密值,并调用所述第一文件系统基于所述第二加密值和为所述安全文件存储的会话密钥对所述缓存区中存储的安全文件进行解密。
其中可选地,所述调用第一文件系统对所述待存储数据进行安全处理,还包括:
调用所述第一文件系统根据所述会话密钥对所述待存储数据的元数据进行加密,并将加密后的元数据确定为所述划分的多个存储区块中在第一存储区块中存储的数据;
调用所述第二文件系统存储加密后的元数据;
调用所述第二文件系统对所述会话密钥进行加密后存储,并将存储的加密后的会话密钥与所述待存储数据的元数据关联。
其中可选地,所述方法还包括:
调用所述第一文件系统对所述划分的每一个存储区块中存储的数据进行哈希计算,并生成哈希树;具体包括:
调用所述第一文件系统对所述划分的每一个存储区块中存储的数据计算哈希值,得到多个二级哈希值;
调用所述第一文件系统对计算得到的二级哈希值进行进一步哈希计算,得到多个一级哈希值;
调用所述第一文件系统对计算得到的一级哈希值进行进一步哈希计算,得到根哈希;
其中,所述根哈希作为所述待存储文件的元数据之一,所述根哈希用于在所述待存储数据被作为安全文件存储后,进行安全文件的完整性校验。
其中可选地,所述方法还包括:
在设备的系统启动时,在设备内核层启动所述第一文件系统和第二文件系统;
调用第一文件系统进行网络通信初始化,其中,进行网络通信初始化包括:创建套接字、地址绑定和向目标服务器进行连接;
调用所述第一文件系统启动两个内核线程分别用于处理文件请求处理和文件响应处理。
另一方面,本发明实施例还提供了一种文件管理装置,包括:
存储处理模块,用于在接收到待存储数据时,调用已加载的第一文件系统对所述待存储数据进行安全处理得到安全文件;并调用已加载的第二文件系统存储所述安全文件,以完成对所述待存储数据的存储处理;
读取处理模块,用于在接收到针对所述安全文件的读操作时,调用所述第二文件系统将存储的所述安全文件复制到缓存区中,并调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,将解密后的数据作为所述读操作的响应数据以响应所述读操作;
其中,所述第一文件系统为在虚拟文件系统调用接口中注册的用于对文件进行安全处理的系统,所述第二文件系统为在所述虚拟文件系统调用接口中注册的用于执行文件存储的系统。
其中可选地,所述存储处理模块,在用于调用第一文件系统对所述待存储数据进行安全处理时,具体用于调用第一文件系统为所述待存储文件生成会话密钥和第一加密值;调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理;其中,所述会话密钥是调用系统随机数产生器产生的随机数,所述第一加密值是对所述会话密钥进行哈希计算后得到的值,所述会话密钥和所述第一加密值用于对所述待存储文件进行加密。
其中可选地,所述存储处理模块,在用于调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理时,具体用于调用所述第一文件系统为所述待存储数据确定出多个存储区块;调用第一文件系统生成第二加密值,并调用所述第一文件系统根据所述会话密钥和第二加密值对所述待存储文件进行加密;所述第二加密值是通过对所述第一加密值和划分得到的所述存储区块的区块编号进行哈希计算后得到的;
所述读取处理模块,在用于调用所述第一文件系统对所述缓存区中存储的安全文件进行解密时,具体用于调用第一文件系统根据为所述安全文件存储的会话密钥计算得到第二加密值,并调用所述第一文件系统基于所述第二加密值和为所述安全文件存储的会话密钥对所述缓存区中存储的安全文件进行解密。
其中可选地,所述存储处理模块,在用于调用第一文件系统对所述待存储数据进行安全处理时,具体还用于调用所述第一文件系统根据所述会话密钥对所述待存储数据的元数据进行加密,并将加密后的元数据确定为所述划分的多个存储区块中在第一存储区块中存储的数据;调用所述第二文件系统存储加密后的元数据;调用所述第二文件系统对所述会话密钥进行加密后存储,并将存储的加密后的会话密钥与所述待存储数据的元数据关联。
其中可选地,所述存储处理模块,还用于调用所述第一文件系统对所述划分的每一个存储区块中存储的数据进行哈希计算,并生成哈希树。
其中可选地,所述装置还包括:
初始化模块,用于在设备的系统启动时,在设备内核层启动所述第一文件系统和第二文件系统;调用第一文件系统进行网络通信初始化,其中,进行网络通信初始化包括:创建套接字、地址绑定和向目标服务器进行连接;调用所述第一文件系统启动两个内核线程分别用于处理文件请求处理和文件响应处理。
再一方面,本发明实施例还提供了一种存储设备,包括:
处理器,用于在接收到待存储数据时,调用已加载的第一文件系统对所述待存储数据进行安全处理得到安全文件;并调用已加载的第二文件系统存储所述安全文件,以完成对所述待存储数据的存储处理;在接收到针对所述安全文件的读操作时,调用所述第二文件系统将存储的所述安全文件复制到缓存区中,并调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,将解密后的数据作为所述读操作的响应数据以响应所述读操作;其中,所述第一文件系统为在虚拟文件系统调用接口中注册的用于对文件进行安全处理的系统,所述第二文件系统为在所述虚拟文件系统调用接口中注册的用于执行文件存储的系统。
本发明实施例中通过在内核注册两个文件系统,分别执行文件安全处理操作和文件存储处理操作,实现了在文件系统层面来自动执行文件的安全处理,不仅较好地保证了用户存储数据的安全,并且对于用户来讲,安全存储过程是透明的,用户操作少,相关数据的存储更为快捷。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的VFS与各种文件系统的关系的示意图;
图2是本发明实施例的对区块数据进行加密操作的示意图;
图3是本发明实施例的在区块中的数据存放方式的示意图;
图4是本发明实施例的关于各个区块的哈希树的示意图;
图5是本发明实施例的哈希子树的示意图;
图6是本发明实施例的一种元数据格式的示意图;
图7是本发明实施例的另一种元数据格式的示意图;
图8是本发明实施例的一种文件管理方法的流程示意图;
图9是本发明实施例的另一种文件管理方法的流程示意图;
图10是本发明实施例的为待存储数据确定哈希树的方法流程示意图;
图11是本发明实施例的一种文件管理装置的结构示意图;
图12是本发明实施例的一种存储设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,针对各种类型的数据存储,至少包括两个文件系统进行存储以及管理。在这两个文件系统中,包括专用于进行文件数据安全性处理的第一文件系统,以及专用于进行文件存储的第二文件系统。其中,所述第二文件系统可以为现有的各种用于进行文件存储以及管理的文件系统,区别在于,本发明实施例的所述第二文件系统仅针对由所述第一文件系统进行安全性处理后得到的安全文件进行存储以及管理。所述第一文件系统和第二文件系统均处于终端或者服务器的内核层,对于用户来讲,其可以按照现有的方式提交待存储数据,针对这些待存储数据的安全性处理、存储以及管理均由对应的终端或者服务器的内核层完成,整个文件的处理过程对于用户是透明的。
在本发明实施例中,所述第一文件系统是一个通用性很强的安全文件系统,能够与现有的磁盘文件系统、分布式文件系统等进行对接,完成透明的安全处理。并且,在安全处理过程中,可以与远程服务器集群实时进行网络通信和数据交换,系统性的完成安全功能。所述第一文件系统可以适用于个人用户的嵌入式存储、企业用户的NAS(Network Attached Storage,网络附属存储)存储或块存储,也可以是适应大数据环境的分布式集群NAS。
所述第一文件系统可以是基于linux(一种操作系统)内核实现的文件系统。在具体实现时,linux内核中有一个VFS(virtual File System,虚拟文件系统)机制。如图1所示,为VFS与各种文件系统的关系的示意图。Linux内核通过VFS机制把各个文件系统的操作抽象出来,以一个统一的接口向应用层(或者说系统调用)提供文件操作接口。各文件系统在使用时,会通过mount(安装)操作,向VFS进行注册,把VFS抽象的文件操作函数实例化。当应用层的文件操作请求到来时,通过VFS系统调用VFS syscall,使得文件操作所访问的设备名能够映射到具体注册的文件系统,从而转到相应的文件系统进行具体处理。如图1所示,文件操作具体可以包括:文件打开open操作,文件读read操作,文件写write操作以及文件创建create操作等。
所述第一文件系统则是在VFS和第二文件系统中的一个中间层次。所述第一文件系统与所述第二文件系统在mount时类似,也要向VFS进行注册。VFS在处理具体的文件操作时,会先映射为所述第一文件系统的操作,由所述第一文件系统进行安全处理后,再把处理后的数据传递给所述第二文件系统进行处理。所述第二文件系统执行的处理过程与传统的磁盘文件系统并无差异。
所述第一文件系统实现了与安全相关的一些文件操作,如创建操作、打开操作和读写操作等。所述第一文件系统对VFS的两种文件操作集进行了定义,包括元数据操作集和文件操作集。具体的,文件操作集可以分为针对常规文件、目录文件、链接文件的操作集。
下面对终端或者服务器调用所述第一文件系统所执行的文件操作进行详细描述。
关于文件创建操作(File Create)。在接收到待存储的数据时,针对这些待存储数据的文件创建操作可以通过调用所述第二文件系统操作函数来执行。安全文件系统首先使用VFS机制完成对基本数据结构(每个文件系统均有的数据结构,如:索引节点、超级块、目录项等)的初始化工作,其次去初始化自身独特的数据结构(即安全等方面的数据结构),并将元数据组织成特定格式、写入文件的头部区域,最后将数据结构之间的关联起来,完成该安全文件系统基本的数据结构初始化。将所述第二文件系统完成创建的相关操作后所获得的数据直接复制到所述第一文件系统中的内存数据结构中。针对内存数据结构中的数据,由第一文件系统为这些数据创建会话密钥和第一加密值,所述第一加密值可以为根初始化向量Root IV值。所述会话密钥可以为调用系统随机数产生器产生的随机数。所述Root IV是对会话密钥进行哈希计算后得到的初始化向量IV。所述会话密钥在内存中是以明文方式存在,因此可以对明文方式的会话密钥进行哈希处理得到Root IV。当需要将会话密钥写入到磁盘时,才会用特定的加密算法对该会话密钥进行加密后存放到存储介质上,其中,所述会话密钥可以作为所述待存储数据的元数据的一部分存储到存储介质中。所述第一文件系统基于所述会话密钥和第一加密值、并根据预设的加密算法对待存储数据进行加密。所述VFS将加密后的数据传递给所述第二文件系统。所述第二文件系统根据之前为该待存储数据执行的文件创建操作,进一步地将该加密后的数据作为安全文件存储到存储介质中。
关于文件打开操作(File Open)。在接收到将上述待存储数据以安全文件存储后发出的文件打开操作时,所述第一文件系统主要是把文件的第一个数据块的数据,也就是该打开操作所要打开的安全文件的元数据读入内存中。并对元数据进行解析。解析过程包括:把元数据中加密的会话密钥进行解密存放在所述第一文件系统的内存数据结构中;再通过与文件创建时生成Root IV相同的方式对会话密钥进行哈希计算得到Root IV。以便于后续基于会话密钥和Root IV对安全文件中的数据进行解密。所述第一文件系统同时支持对称和非对称密码体制,但在加解密的处理上,对称和非对称有所不同。对称密码的加解密操作,全部在内核完成,可直接调用linux内核的加密模块算法,基于会话密钥和Root IV进行对称密码的加解密。而非对称加密中,需要把加密的会话密钥通过内核与应用层的通信机制传到应用层进行加解密,再由应用层把针对会话密钥的解密结果传回内核,存放在安全文件系统的内存数据结构中,以便于基于会话密钥得到Root IV,并进一步地基于会话密钥和Root IV对需要打开的安全文件的数据进行解密。
关于读文件操作(page read)。所述第一文件系统的数据块处理单位与所述第二文件系统的数据块处理单位可以相同,也可以不同。具体的,本发明实施例中,所述第一文件系统的数据块处理单元可以定义为extent区块。其中,所述extent区块是可以设置的,默认值可以为4096字节,是用于表示安全文件系统在使用过程中的最小执行数据单位,比如加密需要以extent区块为最小单位逐一操作;而数据块是磁盘中存储的数据单位,只是表示磁盘上的数据单位。而且,安全文件系统写入到磁盘时,是以extent区块为基本单位去写入,而具体写入到哪里,是由偏移量决定的。一个extent区块可以包含2n个数据块,每一个extent有一个单独编号即区块号,例如1、2、3、……、n。所述第一文件系统以区块为处理单位,对每一个单位单独进行加解密。通过调用所述第二文件系统读操作把加密的文件数据块读入内存,然后利用第二加密值、调用内核的密码算法对数据进行解密。所述第二加密值可以是一个初始化向量IV值,具体可以通过对Root IV和区块号相联进行哈希计算得出的IV。进行解密时,所述第一文件系统会通过VFS调用通用的读文件操作,新申请一块内存用来暂时保存解密后的数据,解密后之后再复制到该安全文件的缓冲区中。
关于写文件操作(page write)。所述第一文件系统以extent区块为处理单位,单独进行加解密。加密时候是以extent为单位。对具体区块进行加密时,使用第二加密值(IV)作为加密密钥。同样,IV是通过对Root IV和区块号相联进行哈希计算得出的。进行加密时,所述第一文件系统会在内存中申请一块内存用来暂时保存加密后的数据,之后再回调VFS通用的写文件操作,转入具体的文件系统写处理。
具体的,针对待存储数据划分extent后,执行的加密操作的示意图可参考图2所示,ciphertxt为加密后的数据,plaintxt为原始数据,offset可以认为是相应的extent数据块的存储地址,encryt为加密操作。
进一步地,在所述第一文件系统中,无论是读数据还是写数据块,都可以同时对数据进行加解密和哈希处理。其中,会针对每一个extent的数据计算哈希值,进而生成哈希树。整个安全文件的哈希数据块组成一棵梅克尔Merkle树,根哈希值存放在元数据中。一级和二级哈希数据块以一定规律存放在磁盘上,,存放规律可以为每一个一级哈希数据块位置后最多有N个二级哈希数据块,每个二级哈希数据块后最多有N个extent区块(三级哈希数据块),如:一个一级哈希数据块+一个二级哈希数据块+N个extent区块+下一个二级哈希数据块+N个extent区块。具体如图3所示。根据数据块(又称哈希数据块)大小extent_size和哈希值大小hash_bytes可以计算得出:一个哈希数据块能够保存extent_size/hash_bytes个哈希值,后文简称该计算的结果为hash_per_extent块。每一个extent计算得到一个二级哈希值,每hash_per_extent个extent计算得到一个二级哈希数据块。同理,每一个二级哈希数据块计算得到一个一级哈希值,每hash_per_extent个二级哈希数据块计算得到一个一级哈希数据块。最后,磁盘上的hash_per_extent个一级哈希数据块计算得到根哈希值,保存在元数据中。如图4所示,表示根哈希值、一级哈希数据块、二级哈希数据块和extent在磁盘上的存放方式。如图4所示,以抽象的方式表示简化后的Merkle树的结构。
在读操作或者打开操作需要验证文件的完整性时,首先需要对文件解密,而解密过程是以extent为基本单位,因此,验证数据完整性也是以extent为基本单位。所述第一文件系统处理打开操作时,先对extent解密后计算其哈希值,继而找到与其对应的二级哈希数据块,并将计算结果与数据块中存放的二级哈希值对比,验证数据的哈希值是否一致,如果一致则表明该extent中的数据完整,否则,该extent中的数据可能存在丢失、篡改等问题。
当写入文件操作时,先对extent的数据进行加密,在对明文extent的数据进行计算相应的二级哈希、一级哈希和根哈希,并写入根哈希到该文件的元数据中,最后通过第二文件系统将元数据和密文extent的内容写入到磁盘中。可以在文件关闭时候将其它的哈希写入到对应编号的extent的磁盘中。
进一步地,针对由所述第一文件系统和第二文件系统完成安全处理后存储的大量文件,可以针对这些文件分别生成哈希值,再进一步得到关于这些文件的Merkle树。将Merkle树中的根哈希存入到预置的完整性校验的中心服务器中,而其余的哈希值则以对应子树的形式与相应的文件进行关联存储,子树包括如图5所示的子树,虚线框框选出的部分为节点1的子树。当需要对存储的某个文件进行完整性校验时,计算该文件的哈希值,并将哈希值与该文件关联的子树进行计算,如果最终得到的根哈希与所述中心服务器中某个根节点相同,则表明该文件是完整的,如果不相同,则可以进一步根据上述提到的针对该文件的extent的数据计算得到的Merkle树中的哈希值,确定出该文件中出现丢失、篡改等问题的具体extent的内容。
进一步地在本发明实施例中,安全文件的元数据根据密码算法的不同分为两种类型,一种代表对称密码,另一种代表非对称密码,具体的内容如图6和图7所示。在本发明实施例中,所述第一文件系统的元数据并不在存储介质上单独定义存储区域,而是把对应文件的第一extent块或者开始的多extent块数据区域用来存安全文件的元数据。而所述第一文件系统的元数据在内容上也与现有文件系统所对应的元数据有所不同,具体包括定义了一些与安全相关的元数据,并且作为数据存放在具体文件系统的开始数据区域,具体的,第一文件系统(安全文件系统)元数据由以下几部分组成:文件基本信息(文件大小、访问时间等),文件特有信息(区块大小、版本编号等),文件特有加密(算法类型、密钥长度或盐值长度等)等。
另外,在本发明实施例中,所述第一文件系统可以在终端或服务器的操作系统启动时,进行文件系统初始化的同时进行网络通信的初始化。网络通信初始化的主要工作是创建套接字,地址绑定和向远程服务器进行连接。然后后台启动两个内核线程分别处理请求和响应,套接字类型可选择使用TCP和UDP。网络通信初始化完成后,所述第一文件系统可以直接与外部服务器进行通信,交互数据。在所述第一文件系统卸载时释放网络连接和关闭内核线程。
具体请参见图8,是本发明实施例的一种文件管理方法的流程示意图,本发明实施例的所述方法可以应用在当个用户终端设备中,也可以应用在分布式文件管理系统中,例如一些云计算、云服务的数据存储系统中。具体的,本发明实施例的所述方法包括如下步骤。
S801:在接收到待存储数据时,调用已加载的第一文件系统对所述待存储数据进行安全处理得到安全文件。对所述待存储数据进行安全处理包括生成会话密钥、第一加密值(Root IV),为待存储数据划分区块extent,以区块extent为单位对待存储数据进行加密,以及生成哈希值、Merkle树等处理,最终得到包括所述待存储数据的安全文件。
S802:调用已加载的第二文件系统存储所述安全文件,以完成对所述待存储数据的存储处理。所述第二文件系统为现有的各种类型的文件存储以及管理系统,对于所述第二文件系统来说,经过所述第一文件系统进行处理后得到的安全文件的数据,与其他数据没有区别。因此,在存储的时候,所述第二文件系统按照现有的存储方式存储所述安全文件的数据即可。其中,安全处理过程的会话密钥会以该安全文件的元数据的形式存储。
所述第一文件系统为在虚拟文件系统调用接口中注册的用于对文件进行安全处理的系统,所述第二文件系统为在所述虚拟文件系统调用接口中注册的用于执行文件存储的系统。
S803:在接收到对针对所述安全文件的读操作时,调用所述第二文件系统将存储的所述安全文件复制到缓存区中。需要读取已经存储的安全文件的时候,先由所述第二文件系统将该安全文件对应的数据复制到一个缓存区中,并不直接响应度操作返回安全文件的数据。也就是说,相对于现有技术,本发明实施例先将数据复制到一个缓存区,等待第一文件系统对其进行解密,然后再返回给发起读操作的设备。
S804:调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,将解密后的数据作为所述读操作的响应数据以响应所述读操作。解密过程可以包括:第一文件系统获取到元数据中的会话密钥,根据会话密钥生成第一加密值(Root IV),同样以区块extent为单位,对每一个extent的数据进行解密,并可根据需要基于Merkle树、哈希值等对每一个extent的数据进行完整性校验。得到解密后的数据,即可响应所述读操作,将数据返回给发起该读操作的设备。
本发明实施例中通过在内核注册两个文件系统,分别执行文件安全处理操作和文件存储处理操作,实现了在文件系统层面来自动执行文件的安全处理,不仅较好地保证了用户存储数据的安全,并且对于用户来讲,安全存储过程是透明的,用户操作少,相关数据的存储更为快捷。
再请参见图9,是本发明实施例的另一种文件管理方法的流程示意图,本发明实施例的所述方法可以应用在当个用户终端设备中,也可以应用在分布式文件管理系统中,例如一些云计算、云服务的数据存储系统中。具体的,本发明实施例的所述方法包括如下步骤。
S901:接收待存储数据;
S902:调用第一文件系统为所述待存储文件生成会话密钥和第一加密值;
S903:调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理;
其中,所述会话密钥是调用系统随机数产生器产生的随机数,所述第一加密值是对所述会话密钥进行哈希计算后得到的值,所述会话密钥和所述第一加密值用于对所述待存储文件进行加密。
其中,所述S903具体包括:调用所述第一文件系统为所述待存储数据确定出多个存储区块;调用第一文件系统生成第二加密值,并调用所述第一文件系统根据所述会话密钥和第二加密值对所述待存储文件进行加密;所述第二加密值是通过对所述第一加密值和划分得到的所述存储区块的区块编号进行哈希计算后得到的。
进一步地,针对所述待存储数据的元数据,所述S903具体还可以包括:调用所述第一文件系统根据所述会话密钥对所述待存储数据的元数据进行加密,并将加密后的元数据确定为所述划分的多个存储区块中在第一存储区块中存储的数据;调用所述第二文件系统存储加密后的元数据;调用所述第二文件系统对所述会话密钥进行加密后存储,并将存储的加密后的会话密钥与所述待存储数据的元数据关联。
S904:接收针对所述安全文件的读操作;
S905:调用所述第二文件系统将存储的所述安全文件复制到缓存区中;
其中,所述S905具体包括:调用第一文件系统根据为所述安全文件存储的会话密钥计算得到第二加密值,并调用所述第一文件系统基于所述第二加密值和为所述安全文件存储的会话密钥对所述缓存区中存储的安全文件进行解密。
另外,在所述S901之前,本发明实施例的所述方法还可以包括:在设备系统启动时,在设备内核层启动所述第一文件系统和第二文件系统;调用第一文件系统进行网络通信初始化,其中,进行网络通信初始化包括:创建套接字、地址绑定和向目标服务器进行连接;调用所述第一文件系统启动两个内核线程分别用于处理文件请求处理和文件响应处理。
本发明实施例中通过在内核注册两个文件系统,分别执行文件安全处理操作和文件存储处理操作,实现了在文件系统层面来自动执行文件的安全处理,不仅较好地保证了用户存储数据的安全,并且对于用户来讲,安全存储过程是透明的,用户操作少,相关数据的存储更为快捷。
具体请参见图10,是本发明实施例的为待存储数据确定哈希树的方法流程示意图,本发明实施例的方法可以包括在上述提及的文件管理方法中,所确定的哈希树能够为后续对所述待存储数据的完整性进行校验。本发明实施例中,可以调用所述第一文件系统对所述划分的每一个存储区块中存储的数据进行哈希计算,以生成哈希树。具体的,所述方法包括如下步骤。
S1001:调用所述第一文件系统对所述划分的每一个存储区块中存储的数据计算哈希值,得到多个二级哈希值。
S1002:调用所述第一文件系统对计算得到的二级哈希值进行进一步哈希计算,得到多个一级哈希值。
S1003:调用所述第一文件系统对计算得到的一级哈希值进行进一步哈希计算,得到根哈希。
其中,所述根哈希作为所述待存储文件的元数据之一,所述根哈希用于在所述待存储数据被作为安全文件存储后,进行安全文件的完整性校验。
所生成的哈希树请参考图4所示。根据生成的哈希树,能够对各个部分的数据的内容进行完整性校验,并可快捷地定位到数据发生改变的数据区块。
下面对本发明实施例的文件管理装置及文件管理设备进行详细描述。
请参见图11,是本发明实施例的一种文件管理装置的结构示意图,本发明实施例的所述装置可以为带存储功能的用户终端,例如个人电脑PC、智能手机、平板电脑等,还可以为分布式系统中,进行数据存储的服务器。具体的,本发明实施例的所述装置包括以下结构模块。
存储处理模块1101,用于在接收到待存储数据时,调用已加载的第一文件系统对所述待存储数据进行安全处理得到安全文件;并调用已加载的第二文件系统存储所述安全文件,以完成对所述待存储数据的存储处理;
读取处理模块1102,用于在接收到针对所述安全文件的读操作时,调用所述第二文件系统将存储的所述安全文件复制到缓存区中,并调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,将解密后的数据作为所述读操作的响应数据以响应所述读操作;
其中,所述第一文件系统为在虚拟文件系统调用接口中注册的用于对文件进行安全处理的系统,所述第二文件系统为在所述虚拟文件系统调用接口中注册的用于执行文件存储的系统。
进一步可选地,在用于调用第一文件系统对所述待存储数据进行安全处理时,所述存储处理模块1101,具体用于调用第一文件系统为所述待存储文件生成会话密钥和第一加密值;调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理;其中,所述会话密钥是调用系统随机数产生器产生的随机数,所述第一加密值是对所述会话密钥进行哈希计算后得到的值,所述会话密钥和所述第一加密值用于对所述待存储文件进行加密。
进一步可选地,在用于调用所述第一文件系统根据生成的会话密钥和第一加密值对所述待存储文件进行安全处理时,所述存储处理模块1101,具体用于调用所述第一文件系统为所述待存储数据确定出多个存储区块;调用第一文件系统生成第二加密值,并调用所述第一文件系统根据所述会话密钥和第二加密值对所述待存储文件进行加密;所述第二加密值是通过对所述第一加密值和划分得到的所述存储区块的区块编号进行哈希计算后得到的;
在用于调用所述第一文件系统对所述缓存区中存储的安全文件进行解密时,所述读取处理模块1102,具体用于调用第一文件系统根据为所述安全文件存储的会话密钥计算得到第二加密值,并调用所述第一文件系统基于所述第二加密值和为所述安全文件存储的会话密钥对所述缓存区中存储的安全文件进行解密。
进一步可选地,在用于调用第一文件系统对所述待存储数据进行安全处理时,所述存储处理模块1101,具体还用于调用所述第一文件系统根据所述会话密钥对所述待存储数据的元数据进行加密,并将加密后的元数据确定为所述划分的多个存储区块中在第一存储区块中存储的数据;调用所述第二文件系统存储加密后的元数据;调用所述第二文件系统对所述会话密钥进行加密后存储,并将存储的加密后的会话密钥与所述待存储数据的元数据关联。
进一步可选地,所述存储处理模块1101,还用于调用所述第一文件系统对所述划分的每一个存储区块中存储的数据进行哈希计算,并生成哈希树。
进一步可选地,本发明实施例的所述装置还可以包括:
初始化模块1103,用于在设备的系统启动时,在设备内核层启动所述第一文件系统和第二文件系统;调用第一文件系统进行网络通信初始化,其中,进行网络通信初始化包括:创建套接字、地址绑定和向目标服务器进行连接;调用所述第一文件系统启动两个内核线程分别用于处理文件请求处理和文件响应处理。
本发明实施例中所述装置的各个模块的具体实现可参考上述实施例中,相关步骤的具体描述,在此不赘述。
本发明实施例中通过在内核注册两个文件系统,分别执行文件安全处理操作和文件存储处理操作,实现了在文件系统层面来自动执行文件的安全处理,不仅较好地保证了用户存储数据的安全,并且对于用户来讲,安全存储过程是透明的,用户操作少,相关数据的存储更为快捷。
再请参见图12,是本发明实施例的一种存储设备的结构示意图,本发明实施例的所述存储设备可以为带数据存储功能的用户终端,例如个人电脑PC,平板电脑,智能手机等,还可以为各种可以进行数据存储的服务器。具体的,所述存储设备包括:电源、用户接口、网络接口等,进一步地,所述存储设备还包括:处理器1201、存储器1202,所述处理器1201和所述存储器1202之间可以通过总线等相连。
其中,通过所述用户接口或者网络接口,可以接收到用户的待存储的数据。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器1202可以包括易失性存储器(volatile memory),例如RAM(random-access memory,随机存取存储器);存储器1202也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器1202还可以包括上述种类的存储器的组合。所述处理器1201可以是中央处理器(central processing unit,CPU)。
所述处理器1201还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,AL)或其任意组合。
可选地,所述存储器1202还用于存储操作系统,第一文件系统和第二文件系统的相关程序指令。所述处理器1201可以调用所述程序指令,实现如本申请图8,9和10实施例中所示的文件管理方法。
具体的,所述处理器1201,调用所述存储器1202中存储的指令,用于在接收到待存储数据时,调用已加载的第一文件系统对所述待存储数据进行安全处理得到安全文件;并调用已加载的第二文件系统存储所述安全文件,以完成对所述待存储数据的存储处理;在接收到针对所述安全文件的读操作时,调用所述第二文件系统将存储的所述安全文件复制到缓存区中,并调用所述第一文件系统对所述缓存区中存储的安全文件进行解密,将解密后的数据作为所述读操作的响应数据以响应所述读操作;其中,所述第一文件系统为在虚拟文件系统调用接口中注册的用于对文件进行安全处理的系统,所述第二文件系统为在所述虚拟文件系统调用接口中注册的用于执行文件存储的系统。
本发明实施例的所述处理器的具体实现可参考上述实施例中相关步骤的描述,在此不赘述。
本发明实施例中通过在内核注册两个文件系统,分别执行文件安全处理操作和文件存储处理操作,实现了在文件系统层面来自动执行文件的安全处理,不仅较好地保证了用户存储数据的安全,并且对于用户来讲,安全存储过程是透明的,用户操作少,相关数据的存储更为快捷。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以调用计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。