Ntfs文件系统下轻量级文件加密及其解密恢复方法

文档序号:6482675阅读:202来源:国知局

专利名称::Ntfs文件系统下轻量级文件加密及其解密恢复方法
技术领域
:本发明涉及的是一种信息安全
技术领域
的加密及其解密恢复方法,具体是一种NTFS文件系统下轻量级文件加密及其解密恢复方法。
背景技术
:当今,大容量存储设备已伴随着信息和网络化社会的发展广泛地应用于社会的各个领域中。政府机关、学校学术机构、商业公司、个人用户等都不同程度的依赖于可靠的存储设备;尤其是前三类计算机用户,存储介质中保存的重要数据信息的安全性、可信性和保密性是最为关心的问题。数据保护的主要目标是防止非法攻击对数据的篡改以及对数据的盗取。各类病毒及其他攻击手段通过改写数据内容,使得数据不可信,从而实现自身非法的目的。同时,存储有重要数据的设备也可能丢失或被盗。如何保护数据的非法篡改,当存有重要数据的存储设备丢失、被盗窃时能有效地阻止试图读取遗失设备存储的数据资料的非法操作以及尽量减少合法用户实际使用中的额外负担是现代存储技术所关注的课题之一。不同的存储系统上运行有不同的文件系统,而NTFS文件系统作为当今主流操作系统(如美国微软公司的视窗操作系统)所推荐选用的文件系统,已经被绝大部分个人电脑用户所采用。因此,发明一种基于现今主流文件系统的简单高效、安全可靠的文件数据保护方法可以最大程度地满足不同用户对数据可信性和保密性的要求。经对现有技术的文献检索发现,专利申请号200510083571.7,授权公告号CN1722052C记载了一种"数字数据文件加密装置和方法",该方法通过数字服务器提供加密数字数据文件,从而允许个人电脑对下载的加密数据进行解密和重放。该方法需要根据数据存储介质的ID产生密钥,从而对加密数据进行重放。其缺点是存储介质ID的不可信性以及对全部数据加、解密的开销过大。又经检索发现,专利申请号03152584.9,授权公告号CN1480829C记载了一种"数据加密、解密方法、设备和程序",该技术利用基于加密比率并相对于加密目标单元进行加密,及维持加密处理前后的数据长度相同的特性,对一个完整7数据进行划分并按不同加密比率来加密数据,从而达到一定数据加密保护效果和减少加密过程负荷的目的。但该专利所采用的方法仅仅提出一个通用的分段加密数据的概念,没有结合文件系统的特性进一步优化文件加密保护的效果。
发明内容本发明针对现有技术存在的上述不足,提供一种NTFS文件系统下轻量级文件加密及其解密恢复方法,根据用户选择的加密选项,按合法的文件路径指代的文件的属性,选择合适的数据块置换方法对数据进行改写,并保存产生数据块随机置换序列的种子。然后按产生数据块随机置换序列的种子产生逆向置换序列,对合法的文件路径指代的文件进行数据改写,从而还原成原始数据。本发明利用NTFS文件系统的结构特性,通过最优化选择随机置换文件数据块从而达到轻量级加密文件,防止文件被重构和入侵。本发明是通过以下技术方案实现的-本发明涉及NTFS文件系统下轻量级文件加密方法,包括以下步骤第一步、提示用户选择自适应模式或者自定义模式,当用户选择自适应模式,则执行第七步,否则提示用户选择待置换数据块的大小、置换的比率、置换算法复杂度和数据块置换密码。第二步、提示用户输入待置换数据块的路径,然后对文件路径分解为逻辑分区标识符、各级文件夹名、需置换数据块文件的文件名及其扩展名。第三步、根据分解后的文件路径,读取该文件路径对应的逻辑分区的引导扇区所在0号扇区的数据,然后计算该逻辑分区下NTFS文件结构系统关键元数据存放的磁盘物理偏移地址,最后解析待置换数据块的主文件记录、文件系统根索引入口信息。所述的解析待置换数据块是指按照NTFS文件系统定义对需进行数据块置换的文件进行解析。第四步,根据文件系统根索引入口信息,分析待置换数据块的索引实际存放的物理磁盘地址,然后根据第二步中获得的路径名,从文件系统根索引入口开始,按每一级文件夹的名字查找,直至査找到待置换数据块的索引入口。所述的査找待置换数据块的索引入口,是指首先从索引入口找到待置换数据块的豸INDEX一ROOT属性,然后读取类型为0x90的豸INDEX—ROOT属性数据记录,再从SINDEX—ROOT属性数据记录中逐个读取其中SINDEX—ENTRY记录当所读取的SINDEX—ENTRY指代的信息即为所要査找的文件,则停止査找并返回$INDEX—ENTRY,否则查找下一个$INDEX—ENTRY;当已遍历到最后一个SINDEX—ENTRY,则停止査找并返回豸INDEX一ENTRY;当已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件名,则停止查找并返回SINDEX一ENTRY;当查找停止后未能获得所要查找的待置换数据块对应的SINDEX一ENTRY,则返回最后一个读取到的《INDEX—ENTRY并执行偏移量査找处理。所述的偏移量査找处理是指读取类型为0xA0的SINDEX一ALL0CATI0N属性数据记录,然后解析记录在SINDEX一ALLOCATION属性中包含的datarun数据,根据NTFS文件系统定义进行映射,从而将SlNDEX一ALLOCATION实际数据存放位置的虚拟簇编号VCN映射到磁盘实际逻辑簇地址LCN;然后以磁盘实际逻辑簇地址LCN为文件系统根入口地址,逐个读取$INDEX—ENTRY记录当所读取的SINDEX—ENTRY指代的信息即为待置换数据块的文件夹或文件,则停止查找,否则査找下一个SINDEX一ENTRY;当已读取到最后一个SINDEX一ENTRY,则停止査找;当已读取的SINDEX一ENTRY中指代的文件名按二进制比较小于待置换数据块的文件夹名或文件名,则停止查找。当査找停止后未能获得所要査找的待置换数据块对应的SINDEX—ENTRY,则返回最后一个求INDEX—ENTRY内容,并以该$INDEX—ALLOCATION中第一个$INDEX_ENTRY偏移的信息作为入口地址,重复查找豸INDEX一ENTRY。第五步,根据第四步中査找文件索引得到的SINDEX—ENTRY,得到其中待置换数据块的主文件表编号,然后根据第三步中得到的NTFS文件结构系统关键元数据,査找对应主文件表编号的MFT记录。第六步,根据主文件表文件中类型为$80的豸DATA属性,当豸DATA属性标志为驻留,则结束第六步;当SDATA属性标志为非驻留,则读取SDATA属性中描述的虚拟簇编号VCN到磁盘实际逻辑簇地址LCN的映射关系。第七步,根据用户选择的不同模式以及对应的主文件表文件中类型为$80的豕DATA属性采取不同的策略,具体如下当用户选择自适应模式且所指定的文件SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将所有数据进行随机置换;当用户选择自适应模式且所指定的文件SDATA属性标志为非驻留,则以簇为最小粒度,选取占总簇数前百分之五十的簇,以数据块置换密码产生置换序列,将所有数据进行随机置换。并且将文件的第一个簇,按照字节为粒度,对数据进行随机置换;当用户选择自定义模式且所指定的文件SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换;当用户选择自定义模式且所指定的文件SMTA属性标志为非驻留,则以簇为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换;并且将文件的第一个簇,按照字节为粒度,将用户指定的数据总量进行随机置换。第八步,根据第七步中选择的数据块置换策略,调用文件系统接口函数,对指定文件的数据块进行置换。第九步,当上述步骤全部执行成功,则返回执行操作成功,否则返回该失败环节对应的错误编号。本发明涉及NTFS文件系统下轻量级文件加密方法的解密恢复方法,包括以下步骤第1步,提示用户输入需恢复文件的数据块置换策略和数据块恢复密码。第2步,获取用户所要加密文件的路径作为输入,检査该路径名的合法性,并解析该路径名,将对文件路径分解为逻辑分区标识符、各级文件夹名、需置换数据块文件的文件名及其扩展名第3步,根据已解析的文件路径,首先读取该文件路径对应的逻辑分区的引导扇区所在0号扇区的数据,然后计算该逻辑分区下NTFS文件结构系统关键元数据存放的磁盘物理偏移地址,最后解析待还原数据块的主文件记录、文件系统根索引入口信息。所述的解析待还原换数据块是指按照NTFS文件系统定义对需还原的文件进行解析。第4步,根据文件系统根索引入口信息,分析待置换数据块的索引实际存放的物理磁盘地址,然后根据第二步中获得的路径名,从文件系统根索引入口开始,按每一级文件夹的名字査找,直至査找到待置换数据块的索引入口。所述的査找待置换数据块的索引入口,是指首先从索引入口找到待置换数据块的SINDEX一R00T属性,然后读取类型为0x90的豸INDEX—ROOT属性数据记录,再从SINDEX—ROOT属性数据记录中逐个读取其中SINDEX—ENTRY记录当所读取的SINDEX一ENTRY指代的信息即为所要查找的文件,则停止査找并返回$INDEX_ENTRY,否则査找下一个$INDEX—ENTRY;当已遍历到最后一个SINDEX—ENTRY,则停止査找并返回SINDEX—ENTRY;当已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件名,则停止査找并返回SINDEX一ENTRY;当査找停止后未能获得所要查找的待置换数据块对应的SINDEX—ENTRY,则返回最后一个读取到的SINDEX—ENTRY并执行偏移量查找处理。所述的偏移量査找处理是指读取类型为0xA0的豸INDEX一ALLOCATION属性数据记录,然后解析记录在SINDEX—ALLOCATION属性中包含的datarun数据,根据NTFS文件系统定义进行映射,从而将SINDEX—ALLOCATION实际数据存放位置的虚拟簇编号VCN映射到磁盘实际逻辑簇地址LCN;然后以磁盘实际逻辑簇地址LCN为文件系统根入口地址,逐个读取$INDEX—ENTRY记录当所读取的SINDEX—ENTRY指代的信息即为待置换数据块的文件夹或文件,则停止査找,否则査找下一个SINDEX—ENTRY;当已读取到最后一个SINDEX—ENTRY,则停止査找;当已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件夹名或文件名,则停止査找。当査找停止后未能获得所要査找的待置换数据块对应的SINDEX—ENTRY,则返回最后一个SINDEX—ENTRY内容,并以该$INDEX—ALLOCATION中第一个$INDEX_ENTRY偏移的信息作为入口地址,重复査找$INDEX—ENTRY。第5步,根据第四步中查找文件索引得到的SINDEX—ENTRY,得到其中待置换数据块的主文件表编号,然后根据第三步中得到的NTFS文件结构系统关键元数据,查找对应主文件表编号的MFT记录。第6步,分析文件属性。根据主文件表中对应项的SDATA属性,当SDATA属性标志为驻留,则结束第六步;当SDATA属性标志为非驻留,则读取豸DATA属性11中描述的虚拟簇编号VCN到磁盘实际逻辑簇地址LCN的映射关系。第7步,根据用户输入的数据块置换策略和密码恢复文件数据采取不同的策略,具体如下当用户指示需恢复的文件的数据块采用自适应模式加密并且数据的SDATA属性标志为驻留,则根据密码产生逆向置换序列,并根据该序列恢复数据;当用户指示需恢复文件的数据块采用自适应模式加密并且数据的SDATA属性标志为非驻留,则根据密码产生逆向置换序列,并根据该序列选取前占总簇数的百分之五十的簇进行数据恢复。并且将恢复后的簇序列中第一个簇的数据,以字节为粒度,再进行一次数据恢复;当用户指示需恢复的文件的数据块采用自定义模式加密并且数据的SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换;当用户指示需恢复的文件的数据块采用自定义模式加密并且数据的SDATA属性标志为非驻留,则先以簇为最小粒度,以数据块置换密码产生逆向置换序列,将用户指定的数据总量进行数据恢复。并且将恢复后的簇序列中第一个簇的数据,按照字节为粒度,再进行一次数据恢复。第8步,返回执行结果。本发明利用的NTFS文件系统的特性,针对不同大小的文件做出不同的加密策略。该方法具有以下优点(1)在文件系统级别对数据进行加密,无需依赖高层次的文件属性和文件结构。(2)利用了NTFS文件系统自身的特性,对不同的文件采取不同的保护策略,效率高。(3)加密策略的运算开销小的同时能够有效防止数据的重构和入侵。(4)系统友好,用户可以采用不同的保护策略在时间开销和安全性上做出折中;相对于传统的对全部数据加密的策略灵活性大。(5)数据块置换策略只对数据本身做处理而不会产生文件系统元数据的不一致性。本发明提供了轻量级的文件保护方法,在提供一定有效的防止文件被非法数据重构和入侵的能力前提下,在安全性和运算开销之间采取了较优的折中处理,从而较传统的文件加密算法灵活度高且安全可靠,高效地保护了用户数据的完整性和可信度。图1是本发明实现数据加密和恢复的示意图;图2是本发明的数据加密方法的流程图3是本发明的数据恢复方法的流程图4是大文件数据块置换策略示意图5是小文件数据块置换策略示意图6是的NTFS文件系统索引目录数据结构示意图。具体实施例方式下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。如图1和图2所示,本实施例中NTFS文件系统下轻量级文件加密方法,具体包括以下步骤Sl:获取用户选择的加密模式以及密码;S2:获取加密文件路径,检査合法性,解析、分解路径名;S3:分析引导扇区,读取NTFS文件系统的系统关键元数据;S4:找到特定记录文件索引的入口表并遍历文件索引,获取隐藏文件的索引记录入口;S5:根据文件索引记录入口,解析实际文件数据所处的硬盘物理地址信息;S6:分析文件属性;S7:选取数据块置换算法;S8:进行数据块置换;S9:返回执行结果;以下具体介绍每一步骤。一、步骤S1获取用户选择的加密模式以及密码。本实施例中执行加密操作只需依据用户选择的加密模式和密码来执行操作。其中加密模式包括自适应模式和自定义模式两种方式。自适应模式由系统根据实际文件的大小,采取(1)对小文件以字节为粒度全部执行随机数据块置换(2)对大文件以簇为粒度对前50%的簇执行随机数据块置换以及对首簇以字节为粒度全部执行随机数据块置换的策略。其中用户给出的密钥被用来产生随机置换序列。二、步骤S2获取加密文件路径,检査合法性,解析、分解路径名。本实施例中执行加密操作需要指定需加密的文件的全路径。作为执行加密操作的必要输入信息之一,该信息的正确与否直接决定了加密操作执行结果的成功与否。如果输入不合法的路径名,将无法执行正确的隐藏操作。所谓检查文件路径的合法性是这样的系统首先须确保输入的路径名是否包含NTFS文件系统所不允许的字符。同时检査输入路径指定的逻辑分区、各级文件夹、文件是否存在。例如:输入"c:\Al\Bl\C.DOC",首先检査该串字符串中是否包含NTFS文件系统定义的非法字符,然后依次检査是否存在命名为"C:"的逻辑分区,是否存在A1,B1两级文件夹,是否存在C.DOC文件。如果上述步骤中有任意检査出错,则停止执行整个加密操作,通知异常处理机制处理相关错误及返回错误代码。所谓分析、分解文件路径是这样的将输入的文件路径字符串根据NTFS文件路径的定义,分区划分成逻辑分区命名,各级文件夹以及文件名。例如:输入"c:\Al\Bl\C.DOC",则最终分解成逻辑分区命名"c:",两级文件夹"A1"和"B1",以及文件名"C.DOC"。该步分解结果将直接作为S3步骤的输入数据。三、步骤S3分析引导扇区,读取NTFS文件系统的系统关键元数据。所谓分析引导扇区是这样的NTFS的引导扇区作用是由MBR引导至活动分区的DBR,再由DBR引导操作系统。而在NTFS巻上BPB(BIOSParameterBlock)以及扩展BPB中定义了装载操作系统的必要数据,这些数据也是本实施例执行加密操作所必须的数据。这些必须BPB参数信息如下表1所示表1字节偏移长度常用值0x0B字0x0002每扇区字节数0x0D字节0x08每簇扇区数0x308字节0x0400000000000000$MFT的起始逻辑簇号0x388字节0x54FF070000000000$MFTMirr的起始逻辑簇号0x40双字0xF6000000每MFT记录簇数0x44双字0x01000000每索引簇数(5x488字节0xl4A51B74C91B741C巻标通过读取上述这些数据就可以获取NTFS文件系统的入口文件SMFT,这也是本实施例执行加密文件操作的着手点。14所谓读取NTFS文件系统的系统关键元数据是这样的NTFS文件系统关键元数据定义是这样的在NTFS文件系统中每种不同类型的数据都是一个文件,同时前24个MFT记录都是系统关键元文件。本实施例执行加密操作中涉及的NTFS元文件定义如下表2所示表2<table>tableseeoriginaldocumentpage15</column></row><table>通过分析引导扇区中得到的SMFT起始磁盘逻辑簇号,就可以依次读取上述元文件。其中SMFT指定其本身以及其他所有MFT文件的索引编号和物理地址。$Root是文件系统的根目录"/",在所在逻辑分区下所有文件均可通过根目录索引得到。四、步骤S4找到特定记录文件索引的入口表并遍历文件索引,获取隐藏文件的索引记录入口。NTFS文件系统中规定,每种类型的数据均以文件的形式存在。B卩系统元数据,文件夹,用户文件均以文件的形式存在于NTFS文件系统中。每个一个文件都有一个特定编号的MFT记录对应。所不同的是,系统元数据定义了NTFS文件系统相关的必须信息。根目录以及每个文件夹表现为一个索引的入口,索引包含了当前文件夹下所有子文件和子文件夹。而用户文件的MFT指定了用户数据存放的数据。上述所有MFT记录的编号均能从根目录开始的索引遍历到。因此,本实施例一个关键步骤即为从正确的根目录索引入口开始,找到需隐藏文件在索引中的位置。如图6所示。査找隐藏文件的索引记录入口具体实现子步骤是这样的(D定位并读取文件系统根索引入口的头文件,分析该记录中记录的所有索引实际存放的磁盘物理位置。②根据解析的路径名,从根索引入口开始,按每一级文件夹的名字查找,最终获得所要隐藏文件的父文件夹索引入口。具体步骤包括③从索引入口根据索引文件定义,找到SINDEX一R00T属性。④分析SINDEX—R00T属性的属性头,读取SINDEX—ROOT属性数据记录。⑤以SINDEX-R00T属性数据记录为起始,逐个读取$INDEX—ENTRY记录,如果所读取的《INDEX—ENTRY指代的信息即为所要査找的文件夹或文件,则停止步骤⑤。否则査找下一个SINDEX—ENTRY。如果已读取到最后一个豸INDEX—ENTRY,则停止步骤⑤。如果已读取的豸INDEX一ENTRY中指代的文件名按二进制比较小于要查找的文件夹名或文件名,则停止步骤⑤⑥如果步骤⑤已经获得所要査找的文件夹或文件对应的SINDEX-ENTRY,则结束本次査找。否则记录下步骤⑤中读取的最后一个SINDEX—ENTRY内容,分析其中指代在SINDEX—ALLOCATION中第一个求INDEX—ENTRY偏移的信息。⑦分析SINDEX—R00T属性的属性头,读取SINDEX—ALLOCATION属性数据记录。⑤解析记录在SINDEX—ALLOCATION属性头包含的datarun数据,根据定义进行映射,从而将SINDEX—ALL0CATI0N实际数据属性Dataattribute存放位置虚拟簇编号VCN映射到磁盘实际逻辑簇地址LCN。⑨以⑧中获得的LCN为入口地址,逐个读取SINDEX—ENTRY记录。如果所读取的SINDEX—ENTRY指代的信息即为所要査找的文件夹或文件,则停止步骤⑨。否则査找下一个SINDEX—ENTRY。如果已读取到最后一个求INDEX—ENTRY,则停止步骤⑨。如果己读取的SINDEX—ENTRY中指代的文件名按二进制比较小于要查找的文件夹名或文件名,则停止步骤⑨。⑩如果步骤⑤已经获得所要查找的文件夹或文件对应的SINDEX-ENTRY,则结束本次査找。否则记录下步骤⑩中读取的最后一个SINDEX一ENTRY内容,分析其中指代在SINDEX—ALLOCATION中第一个$INDEX—ENTRY偏移的信息,以此为入口地址,重复步骤(D五、步骤S5根据文件索引记录入口,获取实际文件数据所处的硬盘物理地址信息。在NTFS文件系统的索引结构中,每个文件都有一个对应的文件索引记录入口$INDEX—ENTRY。$INDEX_ENTRY这样一个数据结构中,一个最为重要的数据即描述了其对应的文件的MFT编号。本步骤具体执行为将査找的到的$INDEX—ENTRY,按照定义读取其指代的MFT编号。然后根据步骤S3中获取的SMFT表项的起始地址读取需加密文件的MFT文件记录。六、步骤S6分析文件属性。根据步骤S5得到的MFT文件记录,解析其中类型为$80的$DATA属性,其中包括SDATA属性是否为驻留属性以及属性长度。如果SDATA属性标志为驻留,则读取SDATA中的全部数据,结束步骤S6。如果SDATA属性标志为非驻留,则读取SDATA属性中描述的虚拟簇编号VCN到磁盘实际逻辑簇地址LCN的映射关系。这种映射关系由一种叫做Dataruns的数据格式表示。七、步骤S7选取数据块置换算法。①根据用户选择的不同数据块置换模式采取不同的策略,如图4和图5所示。具体如下-②如果用户选择自适应模式且所指定的文件SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将所有数据进行随机置换。③如果用户选择自适应模式且所指定的文件SDATA属性标志为非驻留,则以簇为最小粒度,选取占总簇数的前百分之五十的簇,以数据块置换密码产生置换序列,将所有数据进行随机置换。并且将文件的第一个簇,按照字节为粒度,对数据进行随机置换。④如果用户选择自定义模式且所指定的文件SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换。⑤如果用户选择自定义模式且所指定的文件SDATA属性标志为非驻留,则以簇为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换。并且将文件的第一个簇,按照字节为粒度,将用户指定的数据范围进行随机置换。八、步骤S8进行数据块置换。本步骤的定义如下按照步骤S7中决策的数据块置换算法,调用相应系统磁盘输入输出函数进行磁盘数据读写。九、步骤S9返回执行结果。本步骤的定义如下如果上述步骤全部执行成功,则返回执行操作成功,允许执行其他用户或系统调用操作。如果上述步骤中某一环节执行失败,则根据本实施例中的异常处理机制,返回失败环节对应的错误编号,允许后续错误执行的分析以及处理。从而保证加密操作执行的安全可靠性。如图1和图3所示,为本实施例如上所述的NTFS文件系统下轻量级文件加密方法的解密恢复方法,具体包括以下步骤-Sl:获取用户选择的加密模式以及密码;S2:获取加密文件路径,检查合法性,解析、分解路径名;S3:分析引导扇区,读取NTFS文件系统的系统关键元数据;S4:找到特定记录文件索引的入口表并遍历文件索引,获取需数据恢复文件的索引记录入口;S5:根据文件索引记录入口,解析实际文件数据所处的硬盘物理地址信息;S6:分析文件属性;S7:根据用户输入的数据块置换策略和密码恢复文件数据;S8:返回执行结果;以下具体介绍每一步骤。一、步骤S1获取用户选择的加密模式以及密码。具体步骤定义如下本实施例中执行数据恢复操作需要指定执行数据加密操作时的加密策略一自适应模式或者自定义模式。作为执行数据恢复操作的必要输入信息之一,该信息的正确与否直接决定了数据恢复操作执行结果的成功与否。同时,还需获取用户执行加密操作时使用的密钥,该密钥用于产生逆向数据块置换序列以用来还原数据块初始顺序。二、步骤S2获取加密文件路径,检査合法性,解析、分解路径名。具体步骤定义如下(1)确保输入的路径名是否包含NTFS文件系统所不允许的字符。(2)将输入的文件路径字符串根据NTFS文件路径的定义,分区划分成逻辑分区命名,各级文件夹以及文件名。如果上述验证过程中出错,则返回用户对应错误信息,并且停止整个数据恢复执行过程。三、步骤S3分析引导扇区,读取NTFS文件系统的系统关键元数据。本实施例执行数据恢复操作所涉及的引导扇区数据的数据同执行数据加密所需的数据一致,如表3所示<table>tableseeoriginaldocumentpage18</column></row><table><table>tableseeoriginaldocumentpage19</column></row><table>通过读取上述这些数据就可以获取NTFS文件系统的入口文件SMFT,这也是本实施例执行数据恢复操作的入口文件。本步骤具体定义如下①根据文件路径,获得读取该文件路径对应的逻辑分区的系统I/O资源。②读取步骤①中打开的逻辑分区的引导扇区所在0号簇的数据。该0号簇记录了当前逻辑分区下,文件系统的相关重要信息。四、步骤S4找到特定记录文件索引的入口表并遍历文件索引,获取隐藏文件的索引记录入口。NTFS文件系统中规定,每种类型的数据均以文件的形式存在。即系统元数据,文件夹,用户文件均以文件的形式存在于NTFS文件系统中。每个一个文件都有一个特定编号的MFT记录对应。所不同的是,系统元数据定义了NTFS文件系统相关的必须信息。根目录以及每个文件夹表现为一个索引的入口,索引包含了当前文件夹下所有子文件和子文件夹。而用户文件的MFT指定了用户数据存放的数据。上述所有MFT记录的编号均能从根目录开始的索引遍历到。因此,本实施例一个关键步骤即为从正确的根目录索引入口开始,找到需隐藏文件在索引中的位置。査找隐藏文件的索引记录入口具体实现子步骤是这样的①定位并读取文件系统根索引入口的头文件,分析该记录中记录的所有索引实际存放的磁盘物理位置。②根据解析的路径名,从根索引入口开始,按每一级文件夹的名字査找,最终获得所要隐藏文件的父文件夹索引入口。具体步骤包括③从索引入口根据索引文件定义,找到SINDEX—ROOT属性。④分析SINDEX—R00T属性的属性头,读取SINDEX—ROOT属性数据记录。⑤以SINDEX—ROOT属性数据记录为起始,逐个读取$INDEX—ENTRY记录,如果所读取的SINDEX一ENTRY指代的信息即为所要査找的文件夹或文件,则停止步骤。否则查找下一个SINDEX一ENTRY。如果已读取到最后一个SINDEX一ENTRY,则停止步骤⑤。如果已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于要查找的文件夹名或文件名,则停止步骤⑤⑥如果步骤⑤已经获得所要査找的文件夹或文件对应的SINDEX—ENTRY,则结束本次査找。否则记录下步骤⑤中读取的最后一个《INDEX一ENTRY内容,分析其中指代在SINDEX—ALLOCATION中第一个$INDEX—ENTRY偏移的信息。⑦分析SINDEX—ROOT属性的属性头,读取豸INDEX—ALLOCATION属性数据记录。⑧解析记录在3INDEX—ALLOCATION属性头包含的datarun数据,根据定义进行映射,从而将豸INDEX一ALL0CATI0N实际数据属性Dataattribute存放位置虚拟簇编号VCN映射到磁盘实际逻辑簇地址LCN。⑨以⑧中获得的LCN为入口地址,逐个读取SINDEX—ENTRY记录。如果所读取的SINDEX—ENTRY指代的信息即为所要查找的文件夹或文件,则停止步骤(D。否则査找下一个SINDEX—ENTRY。如果己读取到最后一个豸INDEX一ENTRY,则停止步骤⑨。如果已读取的SINDEX一ENTRY中指代的文件名按二进制比较小于要査找的文件夹名或文件名,则停止步骤⑨。⑩如果步骤⑤己经获得所要査找的文件夹或文件对应的SINDEX一ENTRY,则结束本次査找。否则记录下步骤⑩中读取的最后一个SINDEX—ENTRY内容,分析其中指代在豕INDEX—ALLOCATION中第一个$INDEX—ENTRY偏移的信息,以此为入口地址,重复步骤⑨五、步骤S5根据文件索引记录入口,解析实际文件数据所处的硬盘物理地址信息。本步骤具体执行为将査找的到的SINDEX—ENTRY,按照定义读取其指代的MFT编号。然后根据步骤S3中获取的SMFT表项的起始地址读取需加密文件的MFT文件记录。六、步骤S6分析文件属性。本步骤具体执行为根据步骤S5得到的MFT文件记录,解析其中类型为$80的SDATA属性,其中包括SDATA属性是否为驻留属性以及属性长度。七、步骤S7根据用户输入的数据块置换策略和密码恢复文件数据。本步骤具体定义如下①如果用户指示需恢复的文件的数据块采用自适应模式加密并且数据的$DATA属性标志为驻留,则根据密码产生逆向置换序列,并根据该序列恢复数据。②如果用户指示需恢复的文件的数据块采用自适应模式加密并且数据的求DATA属性标志为非驻留,则根据密码产生逆向置换序列,并根据该序列选取前占总簇数的百分之五十的簇进行数据恢复。并对恢复后的簇序列中第一个簇的数据,以字节为粒度,再进行一次数据块逆序恢复。③如果用户指示需恢复的文件的数据块采用自定义模式加密并且数据的求DATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换。④如果用户指示需恢复的文件的数据块采用自定义模式加密并且数据的求DATA属性标志为非驻留,则先以簇为最小粒度,以数据块置换密码产生逆向置换序列,将用户指定的数据总量进行数据恢复。并且将恢复后的簇序列中第一个簇的数据,按照字节为粒度,再进行一次数据块逆序恢复。八、步骤S8返回执行结果。本步骤的定义如下如果上述步骤全部执行成功,则返回执行操作成功,允许执行其他用户或系统调用操作。如果上述步骤中某一环节执行失败,则根据本实施例中的异常处理机制,返回失败环节对应的错误编号,允许后续错误执行的分析以及处理。从而保证加密操作执行的安全可靠性。权利要求1、一种NTFS文件系统下轻量级文件加密方法,其特征在于,包括以下步骤第一步、提示用户选择自适应模式或者自定义模式,当用户选择自适应模式,则执行第七步,否则提示用户选择待置换数据块的大小、置换的比率、置换算法复杂度和数据块置换密码;第二步、提示用户输入待置换数据块的路径,然后对文件路径分解为逻辑分区标识符、各级文件夹名、需置换数据块文件的文件名及其扩展名;第三步、根据分解后的文件路径,读取该文件路径对应的逻辑分区的引导扇区所在0号扇区的数据,然后计算该逻辑分区下NTFS文件结构系统关键元数据存放的磁盘物理偏移地址,最后解析待置换数据块的主文件记录、文件系统根索引入口信息;第四步,根据文件系统根索引入口信息,分析待置换数据块的索引实际存放的物理磁盘地址,然后根据第二步中获得的路径名,从文件系统根索引入口开始,按每一级文件夹的名字查找待置换数据块的父文件夹索引入口;第五步,根据第四步中查找文件索引得到的$INDEX_ENTRY,得到其中待置换数据块的主文件表编号,然后根据第三步中得到的NTFS文件结构系统关键元数据,查找对应主文件表编号的主文件表文件;第六步,根据主文件表文件中类型为$80的$DATA属性,当$DATA属性标志为驻留,则结束第六步;当$DATA属性标志为非驻留,则读取$DATA属性中描述的虚拟簇编号VCN到磁盘实际逻辑簇地址LCN的映射关系;第七步,根据用户选择的不同模式以及对应的主文件表文件中类型为$80的$DATA属性采取不同的策略;第八步,根据第七步中选择的数据块置换策略,调用文件系统接口函数,对指定文件的数据块进行置换;第九步,当上述步骤全部执行成功,则返回执行操作成功,否则返回该失败环节对应的错误编号。2、根据权利要求1所述的NTFS文件系统下轻量级文件加密方法,其特征是,第三步中所述的解析待置换数据块是指按照NTFS文件系统定义对需加密的文件进行解析。3、根据权利要求1所述的NTFS文件系统下轻量级文件加密方法,其特征是,第四步中所述的待置换数据块的父文件夹索引入口,是指首先从索引入口找到待置换数据块的SINDEX—ROOT属性,然后读取类型为0x90的SINDEX—R00T属性数据记录,再从SINDEX一R00T属性数据记录中逐个读取其中SINDEX—ENTRY记录当所读取的豸INDEX一ENTRY指代的信息即为所要査找的文件,则停止査找并返回SINDEX—ENTRY,否则查找下一个SINDEX—ENTRY;当已遍历到最后一个SINDEX一ENTRY,则停止查找并返回SINDEX一ENTRY;当已读取的3INDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件名,则停止查找并返回SINDEX一ENTRY;当査找停止后当未能获得所要査找的待置换数据块对应的SINDEX—ENTRY,则返回最后一个读取到的SINDEX—ENTRY并执行偏移量査找处理。4、根据权利要求3所述的NTFS文件系统下轻量级文件加密方法,其特征是,所述的偏移量査找处理是指读取类型为0xA0的求INDEX一ALLOCATION属性数据记录,然后解析记录在$INDEX—ALLOCATION属性中包含的datarun数据,根据NTFS文件系统定义进行映射,从而将豸INDEX一ALLOCATION实际数据存放位置的虚拟簇编号VCN映射到磁盘实际逻辑簇地址LCN;然后以磁盘实际逻辑簇地址LCN为文件系统根入口地址,逐个读取$INDEX—ENTRY记录当所读取的SINDEX—ENTRY指代的信息即为待置换数据块的文件夹或文件,则停止査找,否则查找下一个$INDEX—ENTRY;当已读取到最后一个SINDEX—ENTRY,则停止查找;当已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件夹名或文件名,则停止査找;当査找停止后当未能获得所要查找的待置换数据块对应的SINDEX—ENTRY,则返回最后一个IINDEX—ENTRY内容,并以该SlNDEX一ALLOCATION中第一个$INDEX—ENTRY偏移的信息作为文件系统根索引入口地址,重复该偏移量査找处理。5、根据权利要求1所述的NTFS文件系统下轻量级文件加密方法,其特征是,第七步中所述的策略是指当用户选择自适应模式且所指定的文件SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将所有数据进行随机置换;当用户选择自适应模式且所指定的文件SDATA属性标志为非驻留,则以簇为最小粒度,选取占总簇数前百分之五十的簇,以数据块置换密码产生置换序列,将所有数据进行随机置换,并且将文件的第一个簇,按照字节为粒度,对数据进行随机置换;当用户选择自定义模式且所指定的文件SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换;当用户选择自定义模式且所指定的文件SDATA属性标志为非驻留,则以簇为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换;并且将文件的第一个簇,按照字节为粒度,将用户指定的数据总量进行随机置换。6、一种根据权利要求1所述的NTFS文件系统下轻量级文件加密方法的解密恢复方法,其特征在于,包括以下步骤第1步,提示用户输入需恢复文件的数据块置换策略和数据块恢复密码;第2步,获取用户所要加密文件的路径作为输入,检查该路径名的合法性,并解析该路径名,将对文件路径分解为逻辑分区标识符、各级文件夹名、需置换数据块文件的文件名及其扩展名第3步,根据已解析的文件路径,首先读取该文件路径对应的逻辑分区的引导扇区所在0号扇区的数据,然后计算该逻辑分区下NTFS文件结构系统关键元数据存放的磁盘物理偏移地址,最后解析待还原数据块的主文件记录、文件系统根索引入口信息;第4步,根据文件系统根索引入口信息,分析待置换数据块的索引实际存放的物理磁盘地址,然后根据第二步中获得的路径名,从文件系统根索引入口开始,按每一级文件夹的名字查找,直至查找到待置换数据块的索引入口;第5步,根据第四步中查找文件索引得到的SINDEX—ENTRY,得到其中待置换数据块的主文件表编号,然后根据第三步中得到的NTFS文件结构系统关键元数据,查找对应主文件表编号的MFT记录;第6步,分析文件属性根据主文件表中对应项的SDATA属性,当《DATA属性标志为驻留,则结束第六步;当SDATA属性标志为非驻留,则读取SDATA属性中描述的虚拟簇编号VCN到磁盘实际逻辑簇地址LCN的映射关系;第7步,根据用户输入的数据块置换策略和密码恢复文件数据采取不同的策略;第8步,返回执行结果。7、根据权利要求6所述的NTFS文件系统下轻量级文件加密方法的解密恢复方法,其特征是,第3步中所述的解析待还原换数据块是指按照NTFS文件系统定义对需还原的文件进行解析。8、根据权利要求6所述的NTFS文件系统下轻量级文件加密方法的解密恢复方法,其特征是,第4步中所述的查找待置换数据块的索引入口,是指首先从索引入口找到待置换数据块的SINDEX—ROOT属性,然后读取类型为0x90的$INDEX_R00T属性数据记录,再从SINDEX—R00T属性数据记录中逐个读取其中$INDEX_ENTRY记录当所读取的SINDEX一ENTRY指代的信息即为所要查找的文件,则停止査找并返回求INDEX—ENTRY,否则査找下一个$INDEX—ENTRY;当已遍历到最后一个SINDEX—ENTRY,则停止査找并返回豸INDEX—ENTRY;当已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件名,则停止査找并返回SINDEX一ENTRY;当査找停止后未能获得所要查找的待置换数据块对应的SINDEX—ENTRY,则返回最后一个读取到的SINDEX—ENTRY并执行偏移量査找处理。9、根据权利要求6所述的NTFS文件系统下轻量级文件加密方法的解密恢复方法,其特征是,第4步中所述的偏移量查找处理是指读取类型为0xA0的$INDEX_ALLOCATION属性数据记录,然后解析记录在豸INDEX—ALLOCATION属性中包含的datarun数据,根据NTFS文件系统定义进行映射,从而将$INDEX—ALLOCATION实际数据存放位置的虚拟簇编号VCN映射到磁盘实际逻辑簇地址LCN;然后以磁盘实际逻辑簇地址LCN为文件系统根入口地址,逐个读取$INDEX_ENTRY记录当所读取的SINDEX—ENTRY指代的信息即为待置换数据块的文件夹或文件,则停止查找,否则査找下一个SINDEX一ENTRY;当已读取到最后一个SINDEX—ENTRY,则停止査找;当已读取的SINDEX—ENTRY中指代的文件名按二进制比较小于待置换数据块的文件夹名或文件名,则停止查找;当査找停止后未能获得所要查找的待置换数据块对应的《INDEX一ENTRY,则返回最后一个SINDEX—ENTRY内容,并以该$INDEX—ALLOCATION中第一个$INDEX—ENTRY偏移的信息作为入口地址,重复査找SINDEX—ENTRY。10、根据权利要求6所述的NTFS文件系统下轻量级文件加密方法的解密恢复方法,其特征是,第7步中所述的策略具体是指当用户指示需恢复的文件的数据块采用自适应模式加密并且数据的SDATA属性标志为驻留,则根据密码产生逆向置换序列,并根据该序列恢复数据;当用户指示需恢复文件的数据块采用自适应模式加密并且数据的SDATA属性标志为非驻留,则根据密码产生逆向置换序列,并根据该序列选取前占总簇数的百分之五十的簇进行数据恢复,并且将恢复后的簇序列中第一个簇的数据,以字节为粒度,再进行一次数据恢复;当用户指示需恢复的文件的数据块采用自定义模式加密并且数据的SDATA属性标志为驻留,则以字节为最小粒度,以数据块置换密码产生置换序列,将用户指定的数据总量进行随机置换;当用户指示需恢复的文件的数据块采用自定义模式加密并且数据的SDATA属性标志为非驻留,则先以簇为最小粒度,以数据块置换密码产生逆向置换序列,将用户指定的数据总量进行数据恢复,并且将恢复后的簇序列中第一个簇的数据,按照字节为粒度,再进行一次数据恢复。全文摘要一种信息安全
技术领域
的NTFS文件系统下轻量级文件加密及其解密恢复方法,根据用户选择的加密选项,按合法的文件路径指代的文件的属性,选择合适的数据块置换方法对数据进行改写,并保存产生数据块随机置换序列的种子。然后按产生数据块随机置换序列的种子产生逆向置换序列,对合法的文件路径指代的文件进行数据改写,从而还原成原始数据。本发明利用NTFS文件系统的结构特性,通过最优化选择随机置换文件数据块从而达到轻量级加密文件,防止文件被重构和数据入侵的目的。文档编号G06F17/30GK101634992SQ200910052890公开日2010年1月27日申请日期2009年6月11日优先权日2009年6月11日发明者丁小芩,漳张,邹恒明,顾夏申申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1