弹性文件系统的数据粉碎方法和装置制造方法

文档序号:6624586阅读:177来源:国知局
弹性文件系统的数据粉碎方法和装置制造方法
【专利摘要】本发明提供了一种弹性文件系统的数据粉碎方法和装置,所述方法包括:根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;擦除上述待粉碎目标的元数据信息。本发明通过上述手段,可自动定位待粉碎文件的元数据及其文件内容在存储装置上的位置并做擦除,从而彻底消除数据恢复的隐患,为涉密文件的安全管理提供了有力的支持。
【专利说明】弹性文件系统的数据粉碎方法和装置

【技术领域】
[0001]本发明涉及数据存储【技术领域】,特别地,涉及一种弹性文件系统的数据粉碎方法和装置。

【背景技术】
[0002]普通的文件删除方法很容易被恢复软件给恢复出来,无法满足高保密文件安全性的要求。针对windows操作系统下的NTFS、FAT等成熟的文件系统,目前国内外已有相关的技术和软件可以对文件进行粉碎。但针对微软最新的弹性文件系统(REFS,Resilient FileSystem),目如尚未有相关的数据粉碎技术和软件。
[0003]针对REFS这种新型的文件系统在技术文档缺乏的情况下,只能对REFS的文件夹及其文件做普通的删除。普通的删除方法有两个弊端:一是无法清除文件所对应的文件记录信息,存在着被恢复软件恢复的可能性;二是无法对文件的残留区域做处理,而文件残留区可能存在着需要粉粹的数据,因此也有被恢复的可能性,不能满足高保密文件安全性要求。


【发明内容】

[0004]本发明提供一种弹性文件系统的数据粉碎方法,用于解决现有技术不能清除REFS系统中被删除文件对应的文件记录信息以及文件残留区数据,存在着被数据恢复工具恢复的可能性,不能满足高保密文件安全性要求的问题。
[0005]本发明还提供了一种弹性文件系统的数据粉碎装置,以保证上述方法在实际中的应用。
[0006]为了解决上述问题,本发明公开了一种弹性文件系统的数据粉碎方法,包括:根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;擦除上述待粉碎目标的元数据信息。
[0007]优选的,所述待粉碎目标为文件;所述元数据信息包括:文件内容对应的链块地址;所述擦除上述待粉碎目标的元数据信息步骤之前还包括:擦除上述链块地址对应的数据块中的待粉碎文件内容。
[0008]优选的,所述待粉碎目标为文件夹;所述元数据信息包括:文件夹标识符;
[0009]所述擦除上述待粉碎目标的元数据信息步骤之前还包括:在B+树中查找包括有上述文件夹标识符的文件夹数据块号;根据上述文件夹数据块中包括的子文件夹和子文件信息,判断所述文件夹是否包括有子文件夹或子文件;若是,循环将该文件夹下的所有子文件或子文件夹作为新的待粉碎目标,重复上述数据粉碎流程;否则,擦除上述文件夹数据块中的文件夹属性、子文件和/或文件夹信息。
[0010]优选的,所述擦除上述待粉碎目标的元数据信息步骤之前还包括:调用视窗应用程序接口中的相关命令删除待粉碎的文件或文件夹;所述擦除上述待粉碎目标的元数据信息步骤之后还包括:重新在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;擦除上述文件或文件夹的删除过程中被标记为空闲块的叶节点块。
[0011]优选的,所述元数据信息还包括:叶节点块号LeafBlockNumbers,元数据的字节数EntrySize及其在叶节点块内的偏移地址EntryOffset ;上述擦除上述待粉碎目标的元数据信息的方法具体为:在块号为LeafBlockNumbers的叶节点块中,从块内偏移地址为EntryOffset的位置开始,写入EntrySize字节的0x00。
[0012]优选的,根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置,具体为:读取分区偏移元数据块信息,获得主偏移元数据块号及其信息;根据主偏移元数据块信息,获得B+树的根节点;从B+树的根节点开始遍历B+树,直至找到包括有待粉碎目标名称的叶节点块;从所述叶节点块中读取待粉碎目标的元数据信息及其在该叶节点块中的位置。
[0013]依据本发明的另一优选实施例,还公开了一种弹性文件系统的数据粉碎装置,包括:元数据位置查找单元,用于根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;元数据擦除单元,用于擦除上述待粉碎目标的元数据信息。
[0014]优选的,所述元数据信息包括:文件内容对应的链块地址;所述装置还包括:文件内容擦除单元,用于当所述待粉碎目标为文件时,根据元数据信息包括的文件内容对应的链块地址,擦除上述链块地址对应的数据块中的待粉碎文件内容。
[0015]优选的,所述元数据信息包括:文件夹标识符;所述装置还包括:文件夹信息擦除单元,用于在B+树中查找包括有上述文件夹标识符的文件夹数据块号;根据上述文件夹数据块中包括的子文件夹和子文件信息,判断所述文件夹是否包括有子文件夹或子文件;若是,循环将该文件夹下的所有子文件或子文件夹作为新的待粉碎目标,调用所述装置重复执行数据粉碎过程;否则,擦除上述文件夹数据块中的文件夹属性、子文件和/或文件夹信肩、O
[0016]优选的,所述装置还包括:待粉碎目标删除单元,用于调用视窗应用程序接口中的相关命令删除待粉碎的文件或文件夹;空闲块擦除单元,用于重新在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置,以及擦除上述文件或文件夹的删除过程中被标记为空闲块的叶节点块。
[0017]与现有技术相比,本发明具有以下优点:
[0018]本发明优选实施例根据弹性文件系统(REFS)的特定结构,自动定位待粉碎文件的元数据及其文件内容在存储装置(如磁盘)上的位置并做擦除,从而彻底消除数据恢复的隐患,为涉密文件的安全管理提供了有力的支持。
[0019]在进一步的优选实施例中,还可以对文件夹做整体擦除,使用户不仅能够对单个的文件执行粉碎操作,还可以对整个文件夹中的所有子文件夹和文件进行粉碎操作。

【专利附图】

【附图说明】
[0020]图1为弹性文件系统的组成结构示意图;
[0021]图2为本发明弹性文件系统的数据粉碎方法第一实施例的流程图;
[0022]图3为图2所示的方法实施例中待粉碎目标的具体定位流程;
[0023]图4为本发明弹性文件系统的数据粉碎方法第二实施例的流程图;
[0024]图5为本发明弹性文件系统的数据粉碎装置一实施例的结构示意图;
[0025]图6-1为采用常规删除方法删除文件后用R-Stud1工具的恢复效果示意图;
[0026]图6-2为采用图1所示的数据粉碎方法删除文件后用R-Stud1工具的恢复效果示意图。

【具体实施方式】
[0027]在结合附图和【具体实施方式】对本发明作进一步详细的说明之前,首先说明弹性文件系统的结构。
[0028]弹性文件系统(REFS)由卷头、POMB(分区偏移元数据块)、MOMB(主偏移元数据块)和B+树(B+树用于描述文件信息、文件夹结构和位置信息)组成。REFS分配存储空间的基础单位为块,每个块都有编号,从O开始且大小为32个扇区,Μ0ΜΒ、Β+树的每个节点都是一个块。各部分之间的关系如图1所示。其中:
[0029]卷头在第O块,用于存储扇区大小、卷大小等相关的信息;
[0030]POMB固定存储在第30个块中,用于存储MOMB所在的块号以及备份的MOMB块号等信息;
[0031 ] MOMB块用于存储指向B+树的指针信息。
[0032]在REFS文件系统中,每个文件夹都有一个64位的文件夹标识符(DirID),该标识符值作为B+树中的键值(key)使用,其中根文件夹的DirID (即根文件夹键值RootKey)固定为0x00000600。每个文件包含有两部分信息,一部分信息用于描述文件夹属性(如:文件夹名称、时间等信息),另一部分信息用于描述该文件夹下所有的子文件和子文件夹信息,其相应的块号为SublnfoBlock(当子文件/子文件夹数量较多时,需要占用多个数据块描述子文件/子文件夹信息)。
[0033]当REFS卷中的文件采用常规方式(如调用DeleteFile函数)删除后,该被删除文件的父文件夹中用于描述该被删除文件信息的文件记录的一些标志位发生了变化(但是关键信息还在,如:文件名、时间、数据索引),使该文件记录变成了没有任何指针指向的空闲记录,而文件内容部分则没有发生任何的变化,只是将相应的数据块被标记为空闲块。除此之外,REFS有个很重要的特性,在删除/新增文件时,父文件夹对应的用于描述子文件/子文件夹信息的SublnfoBlock可能会发生变化,因此残留信息可能会分布在两个不同的地方。由此可见,在删除文件后如果没有新增文件的操作,那么包含该被删除文件的关键索引信息还存在,父文件夹用于描述子文件/子文件夹信息的记录中包含有完整的文件内容,存在通过数据恢复手段完整或部分恢复该被删除的文件的可能性,对涉密文件的安全造成了极大的威胁。
[0034]参照图2,示出了本发明弹性文件系统的数据粉碎方法第一实施例的流程,包括以下步骤:
[0035]步骤SlOl:根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;
[0036]步骤S102:擦除上述待粉碎目标的元数据信息。
[0037]本发明通过上述手段,可以有效清除待删除文件的大小、时间、位置等属性信息,阻断了数据恢复工具通过上述属性信息建立文件属性与文件内容关联关系的手段,因此可以较好的消除部分或全部恢复被删除文件的隐患。
[0038]在REFS系统中,数据是以文件的形式存储的,文件基于树形结构的文件夹组织管理,作为待粉碎目标的文件和文件夹,其包括的元数据信息是不同的。在本方法实施例进一步的优选实施例中,上述步骤SlOl可采用如下方式实现:
[0039]步骤S101-1:读取POMB块信息(块号为30);
[0040]步骤S101-2:从POMB块中获取MOMB块号并读取MOMB块信息;
[0041]步骤S101-3:从MOMB块中获取维护文件夹结构的B+树根节点;
[0042]步骤S101-4:将CurrentKey设置为RootKey并将TargetName设置为根文件夹下第一层文件夹/文件的名称(例如要粉粹的文件为D:\test\my.doc,则此时的TargetName为“test”);
[0043]步骤S11-5:在文件夹结构的B+树中查找CurrentKey对应的叶子节点块LeafBlock,并根据TargetName获取相应的文件/文件夹信息。这些信息包括:如果是文件信息,则需获取文件内容对应的块链、LeafBlock的块号LeafBlockNumbers以及文件元信息在LeafBlock中的偏移EntryOffset和大小EntrySize并记录CurrentKey的值;如果是文件夹信息,贝1J获取相关的DirID信息、LeafBlock的块号LeafBlockNumbers以及文件夹元信息在LeafBlock中的偏移EntryOffset和大小EntrySize。具体的查找方法如下:
[0044]I)、设 CurrentNode 为 B+ 树的根节点;
[0045]2)、判断CurrentNode节点的类型,如果为根节点转步骤4);如果为中间节点转步骤5);如果为叶子几点继续步骤3);
[0046]3)、以TargetName作为关键字在叶子节点中查找,从而获取相应的文件/文件夹信息转步骤S101-6结束查找过程;
[0047]4)、以CurrentKey作为关键字在根节点中进行查找,从而获取相应的孩子节点SubNode,并将 CurrentNode 设置为 SubNode,转步骤 2);
[0048]5)、以TargetName作为关键字在索引节点中查找,获取关键字小于TargetName的最大关键字所在的表项,并将CurrentNode设置为查找到的表项指向的孩子节点SubNode,转步骤2)。
[0049]步骤S101-6:判断当前获取的信息是否为要粉碎的目标文件/文件夹信息,如果是,则结束定位流程,否则转步骤S101-7 ;
[0050]步骤S101-7:将CurrentKey赋值为DirID, TargetName赋值为下层的文件夹/文件名称;转步骤S101-5。
[0051]参照图4,示出了本发明弹性文件系统的数据粉碎方法第二实施例的流程,本优选实施例针对不同的待粉碎目标(文件和文件夹)的元数据信息,采用不同的粉碎措施,不仅擦除文件或文件夹的相关元数据信息,还针对不同的待粉碎目标分别擦除了文件内容和文件夹的描述信息。本优选实施例具体包括:
[0052]步骤S201:根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;
[0053]本优选实施例具体实施时,可参照图3所示的定位流程。
[0054]步骤S202:判断待粉碎目标是否是文件?如果是转步骤S203,否则转步骤S208 ;
[0055]步骤S203:根据获取的文件内容块链信息往对应的块内写入0x00 ;
[0056]步骤S204:调用DeleteFile函数删除目标文件;
[0057]步骤S205:清除文件的大小、时间等属性信息;
[0058]本实施例清除文件属性信息的方法具体为:在块号为LeafBlockNumbers,块内偏移为 EntryOffset 处写入 EntrySize 字节的 0x00。
[0059]步骤S206:重新获取文件夹结构的B+树信息(具体见流程一),根据记录CurrentKey的值查找对应的目标块;
[0060]在REFS系统中,调用DeleteFile或DeleteFolder函数后,块的索引信息有时会发生变化,为进一步确保元数据信息被彻底擦除,文件夹结构的B+树要重新获取,并进一步擦除调用DeleteFile或DeleteFolder后被设置为空闲表项的数据块。
[0061]步骤S207:查找到的目标块块内偏移EntryOffset处若为空闲表项,则往目标块块内偏移EntryOffset处写入EntrySize字节的0x00。转步骤S213 ;
[0062]步骤S208:根据DirID到文件夹结构的B+树中查找相应的目标块,假设块号为DirBlockNumbers ;
[0063]步骤S209:判断文件夹是否包含子文件/文件夹,如果不包含转步骤S211 ;
[0064]步骤S210:粉碎文件底下的所有子文件/文件夹;
[0065]步骤S211:调用DeleteFolder删除目标文件夹;
[0066]步骤S212:往块号为DirBlockNumbers的块内写入0x00,转步骤S205 ;
[0067]步骤S213:结束。
[0068]对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其他顺序或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0069]参照图5,示出了本发明弹性文件系统的数据粉碎装置一实施例的结构示意图,包括:
[0070]元数据位置查找单元51,用于根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;
[0071]其中,上述元数据信息还包括:叶节点块号LeafBlockNumbers,元数据的字节数EntrySize及其在叶节点块内的偏移地址EntryOffset ;当待粉碎目标位文件时,元数据信息还包括:文件内容对应的链块地址;当待粉碎目标位文件夹时,元数据信息还包括:文件夹标识符。
[0072]在本优选实施例中,元数据位置查找单元51可采用如下方式在B+树中查找元数据的位置:首先,读取分区偏移元数据块信息,获得主偏移元数据块号及其信息;根据主偏移元数据块信息,获得B+树的根节点;然后,从B+树的根节点开始遍历B+树,直至找到包括有待粉碎目标名称的叶节点块;最后,从所述叶节点块中读取待粉碎目标的元数据信息及其在该叶节点块中的位置。
[0073]元数据擦除单元52,用于擦除上述待粉碎目标的元数据信息。
[0074]在本优选实施例中,元数据擦除单元52可采用如下方式擦除上述待粉碎目标的元数据信息:在块号为LeafBlockNumbers的叶节点块中,从块内偏移地址为EntryOffset的位置开始,写入EntrySize字节的0x00。
[0075]文件内容擦除单元53,用于当所述待粉碎目标为文件时,根据元数据信息包括的文件内容对应的链块地址,擦除上述链块地址对应的数据块中的待粉碎文件内容。
[0076]文件夹信息擦除单元54,用于在B+树中查找包括有上述文件夹标识符的文件夹数据块号;根据上述文件夹数据块中包括的子文件夹和子文件信息,判断所述文件夹是否包括有子文件夹或子文件;若是,循环将该文件夹下的所有子文件或子文件夹作为新的待粉碎目标,调用所述装置重复执行数据粉碎过程;否则,擦除上述文件夹数据块中的文件夹属性、子文件和/或文件夹信息。
[0077]待粉碎目标删除单元55,用于在文件内容擦除单元53擦除待粉碎文件内容或文件夹信息擦除单元54擦除文件夹属性及其子文件夹、子文件信息后,调用视窗应用程序接口中的相关命令删除待粉碎的文件或文件夹;
[0078]空闲块擦除单元56,用于重新在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置,以及擦除上述文件或文件夹的删除过程中被标记为空闲块的叶节点块。
[0079]为了验证本发明弹性文件系统的数据粉碎装置的效果,做了如下对比试验:
[0080]首先,在Windows Server 2012操作系统下,创建一个REFS分区;在该分区下新建了一个名称为“test”的文件夹,并在test文件夹中创建两个文件Document, txt和ReadMine.txt。
[0081]其次,采用shift+delete方式对Document, txt进行删除操作,再采用数据恢复工具(如R-Stud1)进行恢复,其效果如图6-1所示;从图6-1可以看出,文件Document, txt被恢复成功。
[0082]最后,采用本发明弹性文件系统的数据粉碎装置对Document, txt进行删除操作,再采用数据恢复工具(如R-Stud1)进行恢复,其效果如图6-2所示;从图6-2可以看出,文件Document, txt没有被恢复成功。
[0083]需要说明的是,上述装置或系统实施例属于优选实施例,所涉及的单元和模块并不一定是本发明所必须的。
[0084]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本发明的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0085]以上对本发明所提供的一种弹性文件系统的数据粉碎方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种弹性文件系统的数据粉碎方法,其特征在于,包括: 根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置; 擦除上述待粉碎目标的元数据信息。
2.如权利要求1所述的方法,其特征在于, 所述待粉碎目标为文件; 所述元数据信息包括:文件内容对应的链块地址; 所述擦除上述待粉碎目标的元数据信息步骤之前还包括:擦除上述链块地址对应的数据块中的待粉碎文件内容。
3.如权利要求1所述的方法,其特征在于, 所述待粉碎目标为文件夹; 所述元数据信息包括:文件夹标识符; 所述擦除上述待粉碎目标的元数据信息步骤之前还包括: 在B+树中查找包括有上述文件夹标识符的文件夹数据块号; 根据上述文件夹数据块中包括的子文件夹和子文件信息,判断所述文件夹是否包括有子文件夹或子文件; 若是,循环将该文件夹下的所有子文件或子文件夹作为新的待粉碎目标,重复上述数据粉碎流程; 否则,擦除上述文件夹数据块中的文件夹属性、子文件和/或文件夹信息。
4.如权利要求2或3所述的方法,其特征在于, 所述擦除上述待粉碎目标的元数据信息步骤之前还包括:调用视窗应用程序接口中的相关命令删除待粉碎的文件或文件夹; 所述擦除上述待粉碎目标的元数据信息步骤之后还包括:重新在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置;擦除上述文件或文件夹的删除过程中被标记为空闲块的叶节点块。
5.如权利要求2或3所述的方法,其特征在于, 所述元数据信息还包括:叶节点块号LeafBlockNumbers,元数据的字节数EntrySize及其在叶节点块内的偏移地址EntryOffset ; 上述擦除上述待粉碎目标的元数据信息的方法具体为:在块号为LeafBlockNumbers的叶节点块中,从块内偏移地址为EntryOffset的位置开始,写入EntrySize字节的0x00。
6.如权利要求1所述的方法,其特征在于,根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置,具体为: 读取分区偏移元数据块信息,获得主偏移元数据块号及其信息; 根据主偏移元数据块信息,获得B+树的根节点; 从B+树的根节点开始遍历B+树,直至找到包括有待粉碎目标名称的叶节点块; 从所述叶节点块中读取待粉碎目标的元数据信息及其在该叶节点块中的位置。
7.一种弹性文件系统的数据粉碎装置,其特征在于,包括: 元数据位置查找单元,用于根据弹性文件系统的组成结构,在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置; 元数据擦除单元,用于擦除上述待粉碎目标的元数据信息。
8.如权利要求7所述的装置,其特征在于, 所述元数据信息包括:文件内容对应的链块地址; 所述装置还包括:文件内容擦除单元,用于当所述待粉碎目标为文件时,根据元数据信息包括的文件内容对应的链块地址,擦除上述链块地址对应的数据块中的待粉碎文件内容。
9.如权利要求7所述的装置,其特征在于, 所述元数据信息包括:文件夹标识符; 所述装置还包括:文件夹信息擦除单元,用于在B+树中查找包括有上述文件夹标识符的文件夹数据块号;根据上述文件夹数据块中包括的子文件夹和子文件信息,判断所述文件夹是否包括有子文件夹或子文件;若是,循环将该文件夹下的所有子文件或子文件夹作为新的待粉碎目标,调用所述装置重复执行数据粉碎过程;否则,擦除上述文件夹数据块中的文件夹属性、子文件和/或文件夹信息。
10.如权利要求7所述的装置,其特征在于,所述装置还包括: 待粉碎目标删除单元,用于调用视窗应用程序接口中的相关命令删除待粉碎的文件或文件夹; 空闲块擦除单元,用于重新在B+树中查找待粉碎目标的元数据信息及其在对应的叶节点块中的位置,以及擦除上述文件或文件夹的删除过程中被标记为空闲块的叶节点块。
【文档编号】G06F17/30GK104166723SQ201410421920
【公开日】2014年11月26日 申请日期:2014年8月25日 优先权日:2014年8月25日
【发明者】沈长达, 林艺滨, 钱镜洁 申请人:厦门市美亚柏科信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1