一种基于数据拆分对存储设备中保密文件的写读方法、系统、
主机及存储介质
技术领域
本发明涉及存储设备中的文件加密技术领域,尤其是涉及一种基于数据拆分对存储设备中保密文件的写读方法、系统、主机及存储介质。
背景技术
文件安全性保护的方式有多种,常见的有文件加密和云端保护两种方式。
现有的文件加密方法:其可以有不同加密等级,等级越高,对应的破解难度越大。其不足是:A、加密等级越高,通常加解密算法的复杂度都相应越高,会导致解密的时间长。B、对于存储设备,如果想支持一些高等级的加密算法,如AES256等,除非存储控制芯片支持,或者外挂一个加密芯片,否则单纯由固件支持,代码占用的空间以及运算效率都难以商用。
而现有的云端保护方法:其文件存储在云端,如果要非法获取文件,需要攻破服务器防火墙。因此其具有安全等级较高,且不存在本地运算效率慢,或者需要芯片单独支持加解密模块的需求。但是云端存放存在数据上传下载耗时的问题。
因此综上现有技术中的文件加密方法难以达到保持安全性和数据读取效率之间难以平衡。
发明内容
本申请提供一种基于数据拆分对存储设备中保密文件的写读方法、系统、主机及存储介质,具有兼顾较好的安全性和数据读取效率的特点。
本发明的上述发明目的一是通过以下技术方案得以实现的:
一种主机基于数据拆分对存储设备中保密文件的写读方法,其特征在于,包括以下过程:
写入步骤,将完整文件拆分为主体数据和关键数据,并生成用于匹配主体数据和关键数据的分拆表;将主体数据和分拆表存储入存储设备上,将关键数据上传至云端服务器;其中主体数据和关键数据均完整文件不完整的部分数据,且主体数据和关键数据合并能构成完整文件;
读取步骤,与云端服务器进行认证并在认证通过后建立通信,向云端服务器请求对应存储设备中主体数据的关键数据,在获取下载的关键数据后,基于分拆表的地址匹配信息将获取的关键数据和存储设备的主体数据在预设存储空间中合并成完整文件。
通过采用上述技术方案,在写入文件时,将完整文件中主要数据量作为主体文件保存在本地的存储设备中,仅有一小数据量的关键数据存储上传到云端服务其中。
因此虽然本地存储设备中存储有完整文件的主体数据,但是由于部分关键数据的缺失导致完整文件无法被读出运行,因此起到了较好的安全性。
而读出完整文件必须要通过将存储设备连接主机,通过主机和云端服务器通讯从云端服务器中下载关键数据,由于关键数据仅在完整文件中占小部分的数据量,完整文件的大部分数据量的主体数据从本地获取,小部分数据量的关键数据从云端服务器获取。从云端下载关键数据需要的下载耗时缩短。从而兼顾较好的安全性和数据读取效率。
优选的,将完整文件拆分为主体数据和关键数据包括:
获取完整文件的文件类型;
基于完整文件的文件类型获取预设的拆分策略;
根据预设的拆分策略将完整文件拆分为主体数据和关键数据。
通过采用上述技术方案,不同的文件类型根据预设拆分策略,选择不同的拆分方法,能够起到对各种文件类型起到合适的拆分效果。
优选的,当获取的所述完整文件类型为音频文件时;
预设的所述拆分策略为获取音频文件中的部分或全部帧头作为关键数据,音频文件除关键数据外的其他数据作为主体数据。
通过采用上述技术方案,音频文件的数据会包括帧数据和帧头文件,而帧头数据虽然数据量小,但是失去帧头数据音频文件将无法被播放,因此具有较好的文件拆分效果。
优选的,当获取的所述完整文件类型为PE文件时;
预设的所述拆分策略包括将PE文件头数据划分为所述关键数据,PE文件除关键数据外的其他数据作为主体数据。
通过采用上述技术方案,PE文件至少包括;DOS文件头数据、PE文件头数据、块表数据和块数据,而PE文件头数据虽然数据量小,但是失去PE文件头数据PE文件将无法被打开,因此具有较好的文件拆分效果。
所述分拆表还包括关键数据的索引信息;
向云端服务器请求获取对应存储设备中主体数据的关键数据包括:
从存储设备中获取分拆表;
向云端服务器发送获取关键数据的请求;
向云端服务器发送分拆表,使得云端服务器从分拆表中获取对应请求关键数据的索引信息。
通过采用上述技术方案,根据分拆表中的索引文件,能够主机能够从云端获取到对应关键数据。
优选的,所述分拆表还包括校验信息,所述校验信息基于完整文件通过预设的校验算法计算获得;
主机基于数据拆分对存储设备中保密文件的写读方法还包括:
校验步骤,将读取步骤中合并的完整文件通过预设的校验算法获得待校验值,将待校验值和校验信息作比对,基于比对结果判断读取步骤中合并的完整文件是否完整。
通过采用上述技术方案,实现对合并完整文件完整性的识别,有助于在文件不完整时,能够重新读取关键信息。
优选的,所述预设存储空间为主机的缓存空间或存储设备的存储空间;
主机基于从存储设备中获取的权限信息,选择缓存空间或存储设备作为合并完整文件的存储空间。
通过采用上述技术方案,主机基于从存储设备中获取的权限信息,选择缓存空间或存储设备作为合并完整文件的存储空间,从而能够通过权限设置实现对不同机密度完整文件的保护。
当面对要求保密度较高的文件时,数据被存储在主机的缓存空间中,由于主机的缓存空间的数据处于主机上,因此后续读取完整数据还需要存储设备连接主机来获取;而当面对要求保密度较低的文件时,数据被存储在存储设备的存储空间中,因此后续可以直接从存储设备上读取数据无需再次将存储设备连接主机。
本发明目的二是提供一种基于数据拆分对存储设备中保密文件的写读的系统,具有兼顾较好的安全性和数据读取效率的特点。
本发明的上述发明目的二是通过以下技术方案得以实现的:
一种基于数据拆分对存储设备中保密文件的写读的系统,包括,
拆分模块,其用于在写入数据时,将存储设备中的完整文件拆分为主体数据和关键数据,并生成用于匹配主体数据和关键数据的分拆表,使得主体数据和关键数据均完整文件不完整的部分数据,且主体数据和关键数据合并能构成完整文件;
本地烧录模块,其用于将主体数据和分拆表存储入存储设备上;
云端上传模块,其用于将关键数据上传至云端服务器;
认证模块,其用于在读出数据时,与云端服务器进行认证并在认证通过后建立通信;
数据请求模块,向云端服务器请求获取对应存储设备中主体数据的关键数据;
合并模块,其用于在获取下载的关键数据后,基于分拆表的地址匹配信息将获取的关键数据和存储设备的主体数据在缓存空间中或存储设备合并成完整文件。
本发明目的三是提供一种主机,具有能够针对存储设备进行文件部分云端加密和解密的特点。
本发明的上述发明目的三是通过以下技术方案得以实现的:
一种主机,包括存储器和处理器,所属存储器上存储有能够被处理器加载并执行上述任一种基于数据拆分对存储设备中保密文件的写读方法的计算机程序。
本发明目的四是提供一种计算机存储介质,能够存储相应的程序,具有便于实现针对存储设备进行文件部分云端加密和解密的特点。
本发明的上述发明目的四是通过以下技术方案得以实现的:
一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种基于数据拆分对存储设备中保密文件的写读方法的计算机程序。
综上所述,本发明包括有益技术效果:通过将完整文件拆分成大数据量的主体文件和小数据量的关键数据,并分别存储在本地存储设备和云端服务器上,使得大数据量的主体数据从本地获取,小数据量的关键数据从云端服务器获取。存储设备无法直接读取数据,云端下载关键数据需要的下载耗时缩短。从而兼顾较好的安全性和数据读取效率。
附图说明
图1是主机基于数据拆分对存储设备中保密文件的写读方法中的主机的应用的系统结构框图。
图2是主机基于数据拆分对存储设备中保密文件的写读方法中的写入步骤流程示意图。
图3是主机基于数据拆分对存储设备中保密文件的写读方法中完整文件拆分为主体数据和关键数据流程示意图。
图4是本主机基于数据拆分对存储设备中保密文件的写读方法中的读取步骤的流程示意图。
图5是本主机基于数据拆分对存储设备中保密文件的写读方法中的向云端服务器请求获取关键数据流程示意图。
图6是基于数据拆分对存储设备中保密文件的写读的系统中的系统结构框图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。
文件安全性保护的方式有多种,常见的有文件加密和云端保护两种方式。其中文件加密的方式虽然可以有不同加密等级,且等级越高对应的破解难度越大。但是文件加密方式存在以下不足:第一、加密等级越高,通常加解密算法的复杂度都相应越高,会导致解密的时间长。第二、对于存储设备,如果想支持一些高等级的加密算法,如AES256等,除非存储控制芯片支持,或者外挂一个加密芯片,否则单纯由固件支持,代码占用的空间以及运算效率都难以商用。
云端保护的方式即文件存储在云端,如果要非法获取文件,除非能够攻破服务器防火墙。其安全等级较高,且不存在本地运算效率慢,或者需要芯片单独支持加解密模块的需求。但是云端存放存在数据上传下载耗时的问题。
因此总的来看,现有的文件加密和云端保护的方式较难兼顾安全性和数据读取效率。
同时,目前需要保护的文件除了一些机密合同,或者一些核心数据,可能要求整个文件全保护,也存在文件的“完整性”缺失,即可认为该文件无效的。比如常见的音视频文件,如果缺少其中一部分,歌曲的播放就会出现调整,杂音甚至播放中断等异常。又如常见的可执行程序exe、dll等,如果缺少一部分数据,可能导致无法正常运行或加载,或者运行过程异常中断和退出等。
本发明提供一种主机基于数据拆分对存储设备中保密文件的写读方法,主要针对“完整性”缺失即可认为无效的文件作为保护对象。兼顾保密文件的安全性和数据读取效率。
具体的,一种主机基于数据拆分对存储设备中保密文件的写读方法,包括写入步骤和读取步骤。如图1所示,写入步骤和读取步骤下主机分别和存储设备以及云端服务器之间通信。
如图2所示,写入步骤包括:
S101、将完整文件拆分为主体数据和关键数据;
完整文件为待加密的文件,而在写入步骤中首先会通过数据分拆工具将完整文件拆分成主体数据和关键数据。其中主体数据和关键数据均完整文件不完整的部分数据,且主体数据和关键数据合并能构成完整文件。而为了便于后续上传云端服务器的数据量不会过大,一般分拆大数据量的数据为主体数据,小数据量的数据为关键数据;且关键数据的数据量一般不超过完整文件数据量的20%。
而为了使得将完整文件拆分成主体数据和关键数据,既减小关键数据的数据量,又能保持主体数据的完整性缺失。因此本方法中根据不同文件类型预设了不同的拆分策略。
具体的,如图3所示,步骤S101包括:
S1011、获取完整文件的文件类型;
文件类型包括音频文件、视频文件、可执行文件、支持文件、文档文件、图像文件、压缩文件和未知文件,其中未知文件为未录入文件类型的文件。主机通过读取文件的类型标识信息,来获取文件类型。
S1012、基于完整文件的文件类型获取预设的拆分策略;
S1013、根据预设的拆分策略将完整文件拆分为主体数据和关键数据。
举个例子,当获取的完整文件类型为音频文件时;而音频文件的格式众多,以MP3格式的音频格式为例。MP3文件大体分为三部分TAG_V2,音频数据和TAG_V1。其中,TAG_V2在音频文件开始的位置,包含了作者、作曲、专辑等信息,长度不固定。音频数据在音频文件的中间位置,音频数据中包括一系列的帧(frame),帧(frame)的个数由音频文件大小和帧长决定。而每个帧之间相互独立,且每个帧包括帧头和帧数据两部分,帧头中记录了MP3的位率、采集率、版本等信息。TAG_V1在文件的结尾位置,包含了了作者、作曲、专辑等信息,长度为128B。
结合音频文件的音频数据由若干帧组成,而帧中无论是缺乏帧头或是帧数据都是无法运行的。因此针对上述特性针对音频文件的拆分策略可以根据实际情况调整。
具体的,在一种实施例下,将音频文件中每一帧(frame)的帧头提取出来作为分拆数据A,音频文件除分拆数据A的剩余数据保存成分拆数据B。而分拆数据A作为关键数据,分拆数据B作为主体数据。本实施例作为本方案中处理音频文件的优选方案。
在一种实施例下,将音频文件中每一帧(frame)的帧数据提取出来作为分拆数据A,音频文件除分拆数据A的剩余数据保存成分拆数据B。而分拆数据A作为关键数据,分拆数据B作为主体数据。
在一种实施例下,随机选取音频文件中的若干帧(frame),将这些被随机选取的帧头提取出来作为分拆数据A,音频文件除分拆数据A的剩余数据保存成分拆数据B。而分拆数据A作为关键数据,分拆数据B作为主体数据。其中可以根据对关键数据的文件大小限制,限定随机选取的帧头数量,使被提取的分拆数据A的文件大小不会大于关键数据大小。通过关键数据的提取,能够使得主体数据不完整,无法完整播放。
再举个例子,以Windows的PE文件为例,PE文件大体结构包括DOS文件头(DOS MZHeader)、PE文件头(PE Header)、块表(Section Table)、块(Section)和调试信息。其中在PE文件头(PE Header)中包含了许多的PE装载器用到的重要字段,该字段包括程序入口点(OEP,Original Entry Point)、文件偏移地址(File Offset)、虚拟地址(VA,VisualAddress)、基地址(ImageBase)和相对虚拟地址(RVA,Relative Virual Address)。
当完整文件为以Windows的PE文件时,将PE文件中的PE文件头提取出作为分拆数据A,PE文件中除分拆数据A的剩余数据保存陈分拆数据B。而分拆数据A作为关键数据,分拆数据B作为主体数据。
当获取的完整文件类型为未知文件时;预设的拆分策略为根据文件中数据的逻辑地址顺序将每隔10%的数据量中抽取1%的数据作为关键数据,完整剩余的90%的数据作为主体数据。即获取完整文件中逻辑地址位置处于9%至10%的数据、逻辑地址位置处于19%至20%的数据、逻辑地址位置处于29%至30%的数据、逻辑地址位置处于39%至40%的数据、逻辑地址位置处于49%至50%的数据、逻辑地址位置处于59%至60%的数据、逻辑地址位置处于69%至70%的数据、逻辑地址位置处于79%至80%的数据、逻辑地址位置处于89%至90%的数据和逻辑地址位置处于99%至100%的数据的作为关键数据。
因此在实施例中,将完整文件拆分为主体数据和关键数据,适用于所有类型的文件。但是对于有关键信息记录的文件,如音视频文件、图片、PE文件(如windows下的exe,linux下的elf)等更加适用。在针对具有关键信息记录的文件时,可以根据关键信息有针对性的分拆,这样既保证了文件在合并分拆信息时高效,也提升了安全性。
S102、生成用于匹配主体数据和关键数据的分拆表;
具体的,分拆表中包括关键数据的索引信息、地址匹配信息和文件校验信息。
索引信息记录了关键数据整体数据包中的特征信息,用于从云端服务器中检索到对应的关键数据;索引信息可以由关键数据中的部分数据构成。
在一种实施例中,关键数据的索引信息为文件ID信息,文件ID信息通过对完整文件所在文件盘中的相对路径加文件名通过hash计算得到。比如在根目录下有a和b两个文件夹,分别存放c.mp3和d.mp3两个文件,则两个文件的相对路径分别为:“a\c.mp3”、“b\d.mp3”根据以上两个字符串,分别生成这两个文件的ID,作为在分拆表中的文件索引。
地址匹配信息包括若干匹配的逻辑地址信息和数据长度信息,逻辑地址信息和数据长度信息成对匹配。地址匹配信息用于在主体数据和关键数据合并时,将关键数据按照原本的顺序写入至主体数据中。具体的,地址匹配信息只作为关键数据中分拆部分的索引,该文件被抽取多少部分出来,就生成个逻辑地址信息和数据长度信息。
文件校验信息是由一个完整文件经过校验计算生成,比如简单一点的算法,将该文件按二进制读取的方式,每次读取4个byte,并将每次读取的4个byte进行异或,直到读取完整个文件(若最后数据不足4个byte,则补0),得到文件校验信息。并写入分拆表中。根据不同的数据严谨度要求,可以选择不同的校验算法。
作为一个实施例,分拆表结构如下:
——————————————————————————
[文件A ID]
index_0=0x456, 0x80
index_1=0x2089, 0x80
….
Checksum = 0x45692873
[文件B ID]
index_0=0x678, 0x80
index_1=0x1901, 0x80
….
Checksum = 0x72649329
[文件C ID]
…
———————————————————————————
以上述实施例中的第一部分为例,[文件B ID]为索引信息,通过对完整文件所在文件盘中的相对路径加文件名通过hash计算得到。index_0=0x678, 0x80为地址匹配信息,每个index_x包括两个部分,前面为该部分数据在文件中的相对逻辑扇区偏移,后部分为该部分数据的长度。比如index_0=0x678, 0x80,表示从该文件的相对逻辑扇区偏移0x678开始,有长度为0x80的数据段被抽取出来放服务器中。Checksum = 0x72649329为文件校验信息,由一个完整文件经过校验计算生成。
S103、将主体数据和分拆表存储入存储设备上,将关键数据上传至云端服务器;
主体数据和分拆表通过本地传输的方式烧录到存储设备上,关键数据在主机和云端服务器通信后上传到云端服务器上。
如图4所示,读取步骤包括:
S201、与云端服务器进行认证并在认证通过后建立通信;
主机与云端服务器之间的认证方式一般采用TOKEN Auth认证方式。当主机通过云端服务器的认证后,主机和云端服务器建立通信,能够从云端服务器上下载拆分信息。
S202、向云端服务器请求获取对应存储设备中主体数据的关键数据;
由于存储设备和主机之间处于本地连接的状态,因此主机能够快速读取到存储设备上的主体数据,而由于关键数据处于云端服务器中,主机无法通过本地连接的方式获取,需向云端服务器请求,下载至主机的缓冲空间中。
而为了从云端服务器请求获取对应存储设备中主体数据的关键数据,如图5所示,步骤S202包括:
S2021、从存储设备中获取分拆表;
S2022、向云端服务器发送获取关键数据的请求;
S2023、向云端服务器发送分拆表。
而云端服务器获取分拆表后,通过分拆表中的索引信息,从云端服务器中检索对应索引信息的关键数据。并在检索到对应的关键数据后,将关键数据发送至主机中。
S203、基于分拆表的地址匹配信息将获取的关键数据和存储设备的主体数据在预设存储空间中合并成完整文件。
关键数据和存储设备的主体数据合并成完整文件时,主机根据逻辑地址信息获取关键数据的起始地址偏移,根据逻辑地址对应的数据长度信息读取相应关键数据的数据长度。将主体数据和关键数据合并在一起。
具体的,预设存储空间为主机的缓存空间或存储设备的存储空间;主机从存储设备中获取的权限信息,权限信息包括高权限信息和低权限信息。存储设备中的权限信息需要在先录入,针对没有录入权限信息的存储设备默认为低权限。主机基于从存储设备中获取的权限信息选择缓存空间或存储设备作为合并完整文件的存储空间。其中针对低权限的存储设备,主机将会在主机的缓冲空间中合并完整文件。针对高权限的存储设备,主机将会在存储设备的存储空间中合并完整文件。
因此当面对要求保密度较高的文件时,完整文件被存储在主机的缓存空间中,由于主机的缓存空间的数据处于主机上,后续读取完整数据还需要存储设备连接主机来获取;而当面对要求保密度较低的文件时,数据被存储在存储设备的存储空间中,后续可以直接从存储设备上读取数据无需再次将存储设备连接主机。从而能够通过权限设置实现对不同机密度完整文件的保护。
进一步的,主机关闭时,清除缓存空间内的缓存数据。避免主机中的缓存数据被读出,提升保密性。
进一步的,为了保证关键数据和主体数据中合并成完整文件的完整性,在一个实施例中还包括用于校验完整文件完整性的校验步骤。
校验步骤包括:
S301、将读取步骤中合并的完整文件通过预设的校验算法获得待校验值;
S302、将待校验值和校验信息作比对,并基于比对结果判断读取步骤中合并的完整文件是否完整,若否则执行步骤S303,若是则结束流程;
S303、重新读取完整文件。
因此当从云端服务器获取对应存储设备中主体数据的关键数据,合并成完整文件后,用和获取校验信息相同的校验算法获取待校验值。得到的待校验值与分拆表中的checksum对比,相等则认为文件是完整的,否则则不完整。
当检测的完整文件不完整时,重新读取完整文件,一般采用根据拆分表中的地址匹配信息将从云端服务器的关键数据删除。之后再次进行读取步骤,请求从云端服务器获取关键数据。而当检测的完整文件完整时,则结束流程。
综上,本方法通过将完整文件拆分成大数据量的主体文件和小数据量的关键数据,并分别存储在本地存储设备和云端服务器上,使得大数据量的主体数据从本地获取,小数据量的关键数据从云端服务器获取。存储设备无法直接读取数据,云端下载关键数据需要的下载耗时缩短。从而兼顾较好的安全性和数据读取效率。
本发明提供一种基于数据拆分对存储设备中保密文件的写读的系统,如图6所示,包括:
拆分模块,其用于在写入数据时,将存储设备中的完整文件拆分为主体数据和关键数据,并生成用于匹配主体数据和关键数据的分拆表,使得主体数据和关键数据均完整文件不完整的部分数据,且主体数据和关键数据合并能构成完整文件;
本地烧录模块,其用于将主体数据和分拆表存储入存储设备上;
云端上传模块,其用于将关键数据上传至云端服务器;
认证模块,其用于在读出数据时,与云端服务器进行认证并在认证通过后建立通信;
数据请求模块,向云端服务器请求获取对应存储设备中主体数据的关键数据;
合并模块,其用于在获取下载的关键数据后,基于分拆表的地址匹配信息将获取的关键数据和存储设备的主体数据在缓存空间中或存储设备合并成完整文件。
本发明提供一种主机,包括存储器和处理器,所属存储器上存储有能够被处理器加载并执行实施例一所述基于数据拆分对存储设备中保密文件的写读方法的计算机程序。主机可以为PC、手机、平板等各种存储和处理能力的终端设备。
本发明提供一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种基于数据拆分对存储设备中保密文件的写读方法的计算机程序。所述计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的示范性实施方式,而非用于限制本发明的保护范围,本发明的保护范围由所附的权利要求确定。