NTFS文件系统中文件的安全擦除7页word

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NTFS文件系统中文件的安全擦除
NTFS(New Technology File System)是微软开发的具有较好容错性和安全性的文件系统。

NTFS将磁盘卷中的所有数据都以文件的方式,而数据类型,大小等信息都作为文件的属性,记录在主文件表(Main File Table, MFT)记录中,每条MFT记录都分配同样大小的空间描述文件(夹)。

当文件放入回收站并被清空删除时,操作系统将文件MFT记录相应字段置为删除标志(在MFT中0x16偏移处),同时文件MF记录号在$MFT的Bitmap属性
中对应位置0标志该MFT记录号可供重新分配,将文件占用的数据簇在$Bitmap中的对应位置0标志空闲可供再分配。

虽然删除文件,在操作系
统用户视图中无法获取,但通过数据恢复手段,该文件仍然可以再现。

本文对NTFS的主文件表记录及位图文件进行分析,研究了NTFS文件系统下文件的安全擦除。

1 NTFS 卷文件管理
1.1 簇管理
NTFS以簇为基本单位分配回收存储空间[1],与FAT结构不同,NTFS
卷(volume)从0扇区开始划分簇,每簇为1,2,4或8个扇区,根据分区的大小不同,最大值不超过8扇区,格式化时可以以格式化参数的形式设定。

而在FAT中,由于卷管理空间的限制,只能通过增加簇大小来管理大容量硬盘,较NTFS文件系统,容易造成存储空间的浪费。

NTFS簇大小,
即每簇扇区数保存在BOOT扇区(0扇区)。

同时,NTFS通过Bitmap文件记录所有簇的使用情况,1个bit对应一个簇,值为1表示已经分配,为0
表示未分配。

FAT文件系统中的FAT表不仅记录了数据簇的使用情况,还
标明了数据簇的链接关系。

NTFS使用逻辑簇号(logical cluster number, LCN)和虚拟簇号(virtual cluster number, VCN)来对簇进行定位。

LCN是对卷中所有簇头到尾进行简单编号,VCN则是对属于特定文件的簇从头到尾进行编号,以便访问文件中的数据,LCN是无符号整数,而VCN则是带符号整数,VCN 可以映射成LCN,由Data Runs数组完成这个映射。

NTFS数据区管理不是采用链接存储,而是采用索引存储[2],文件通过自己的Data Runs数据建立索引表,一个Run就是一个连续存储块,Data Runs数组由若干Run 组成,以0x00结束。

每个Run包括3部分,即头部,占用簇数,起始簇号。

簇号用VCN,第一个VCN是相对于0簇。

头部占用1个字节,存放占用簇数和起始簇号的字节数根据头部确定。

如对于以下十六进制数据表示的如下Data Runs数组。

0x12 D4 38 04 00
其中,根据头部0x12取其高4位可知1字节(值为随后D4)表示占用簇数,取低4位可知2字节(值为3804),即表示0x0438簇开始的0xD4个簇。

而随后的0x00表示Data Runs数组已到数组尾部。

假设一个文件的存储分布的Data Runs数组如下:
0x12 D4 38 04 31 28 D0 49 01 21 CB FF 00
则分解成4个Run:
12 D4 38 04,31 28 D0 49 01,21 23 CB FF,00
即文件存储在3个连续块:
1)Run 1: 0x0438簇开始的0xD4个簇。

2)Run 2: 0x0149D0+0x0438=0x014E08簇开始的0x28个簇。

3)Run 3: 这里VCN为0xFFCB=-0x35,则与前面Run的起始簇号累计为0x014E08-0x35=0x014DD3开始的0x23个簇,这里将VCN 0xFFCB换算成LCN,它相对于前一起始地址0x014E08。

4)Run 4: 0x00,Data Runs数组到达尾部。

由上可知,文件的存储地址并不是完全依次连续增加的,而是依据数据簇的分配算法得出的。

1.2 主文件表和位图属性
NTFS卷上的任何事物都是文件[2],文件在卷上的位置都是通过主文件表(master file table, MFT)记录来确定的,其组织结构图如图1所示。

MFT是一个对应的数据库,由一系列的文件记录组成,以下称其为MFT记录。

卷中每一个文件都有一个MFT记录(对于大型文件还可能有多个MFT
记录与之对应),同时,MFT自身也有一个文件,也有其文件记录。

MFT的每个MFT记录都有一个ID号,这个ID号从0开始,以递增的方式顺序编号。

MFT自身是NTFS系统的第一个文件$MFT,其开始簇号在BOOT扇区中保存,与其他23个系统文件,他们组成系统的元文件(Metafiles),其中根目录占用ID号为5的文件记录。

用户的文件MFT记录ID号从24开始分配,用户每添加一个文件ID号加1。

当某个文件被删除时,其所对应的MFT记录由系统回收,该ID号记录为空闲。

在$MFT(系统元文件)的Bitmap属性中,维护各个MFT号的占用情况,可以视其为位数组。

$MFT的Bitmap位数组中,每1bit代表一个文件MFT号的使用情况。

如果文件MFT号对应在该数组中的标志bit为1,
则表示正在使用,如果其标志bit为0,则表示该MFT号空闲并可以被系统再分配,也是文件MFT号是否使用的依据。

当某个文件被删除时,其所对应的MFT记录由系统回收,该ID号记录为空闲。

在$MFT(系统元文件)的Bitmap属性中,维护各个MFT号的占用情况,可以视其为位数组。

$MFT的Bitmap位数组中,每1bit代表一个文件MFT号的使用情况。

如果文件MFT号对应在该数组中的标志bit为1,则表示正在使用,如果其标志bit为0,则表示该MFT号空闲并可以被系统再分配,也是文件MFT号是否使用的依据。

当需要给新文件分配MFT记录时,系统则优先给该文件分配ID号小的MFT记录,即查找$MFT:Bitmap数组中第一个不为0xFF的元素,找到第一个为0的bit到$MFT:Bitmap头的bit偏移(该空闲bit相对于$MFT:Bitmap头的bit偏移即为空闲的MFT记录号)。

1.3 位图元文件
在元文件中,除了$MFT文件还有一个位图文件十分重要。

文件$Bitmap 标识的是该卷中簇的占用情况。

与$MFT:Bitmap类似,$Bitmap位数组中每bit代表卷中特定位置一簇。

为0代表此簇空闲,为1代表此簇已使用。

这样可以更合理的分配磁盘空间。

当文件被删除,它所占用的簇对应的为会被清空(置0)。

NTFS通过这个文件管理卷的使用情况,这也是文件安全擦除的重要依据。

如前所述根据解析元文件$Bitmap中的0x80属性的Data Runs数组,可以得到该文件的数据。

2 文件安全擦除
2.1 删除文件的残留信息
当NTFS卷中文件被删除(清空回收站操作),系统回收其文件MFT记录,其对应MFT记录被置为删除标记,该标记录位于偏移0x16两个字节(相对于MFT记录头),0x0001表示正常文件,删除后被置为0x0000标记为删除。

另外,在$MFT:Bitmap中对应位置0,标记该文件MFT记录号为空闲。

如果该文件数据较少,可以在文件MFT记录中常驻,则数据不占用额外簇;如果该文件数据大于文件MFT记录长度,则以非常驻方式占用额外簇来存储数据,此时,文件被删除时,系统在回收该文件MFT号同时会将该文件所占用数据簇在元文件$Bitmap的对应位置0标记为空闲。

同时,删除文件后,系统会清除该文件所属的文件夹下该文件的目录项。

在NTFS文件系统中系统在删除文件在文件夹下的目录项时,和FAT文件系统的处理有很大区别。

在FAT文件系统中,当删除文件夹下的文件时,系统将该文件目录项(一般为32字节)首字节置删除标记0xE5;而在NTFS文件系统中系统是将该目录下的目录项记录前移覆盖该删除文件目录项。

由上可知,在清空回收站如果无新增文件操作后,虽然系统回收其文件MFT号、数据簇及目录项;但其包含文件名、文件大小、创建时间等重要信息仍完整保留在文件MFT记录中。

尤其是包含关键信息的数据的索引也完整的保存在文件的MFT记录中,可以通过数据恢复的手段完整或部分取回该文件。

而对于涉密文件的安全造成了极大的威胁,因此要完全清除具有高保密级的文件时,就必须粉碎以上残存在磁盘卷中的所有关键信息。

2.2 基于位图文件的数据擦除
在NTFT文件系统中,文件的数据以0x80属性(Data attribute)存在于文件的MFT记录中,当数据较小能容纳于文件的MFT记录(一般大小为2KB)中时,清除该文件的MFT记录即清除了该文件数据。

而对于用户文件数据信息,大多数都大于文件的MFT记录本身大小。

对于不能以常驻方式(即直接存放于MFT记录的0x080属性中)的文件数据,则文件的MFT 记录的0x80记录中存放的是索引到外部簇的索引,通常以Data Run的形式索引到外部数据簇。

综上所述,可将文件数据擦除分为以下步骤。

1)如果文件的MFT记录不存在,则读取$Bitmap位数组将磁盘卷中所有空闲簇的卷偏移并记录其卷偏移至擦除队列,执行步骤3。

否则,如果文件的MFT记录存在,定位至文件的MFT记录,执行下一步。

2)读取该文件MFT记录的数据0x80属性,如果该属性为常驻标志,则执行步骤4。

否则,该文件MFT记录的0x80属性为非常驻标志,定位其Data Runs数组,如前面所述进行解析,将数据簇的卷偏移记录至擦除队列,执行下一步。

3)如果队列空则数据擦除结束,否则跳至队列下一条记录得到簇偏移位置,定位至卷中该簇,并读取元文件$Bitmap位数组中对应位,如果为1则表明该簇已被占用执行步骤3,否则以填充标志(通常写全0)填充该簇,执行步骤(3)。

2.3 文件的安全擦除
删除文件经过以上安全擦除步骤后,没有破坏卷中原有文件分布,且消除了高保密文件的信息安全隐患。

3 结束语
NTFS以其优越的安全性和稳定性,已经成为主流的文件系统,同时,随着越来越多涉密单位对涉密文件管理的制度化,需要相关文件管理工具的支持。

本文研究了基于NTFS文件系统的安全文件擦除方法,为涉密文件安全管理提供了有力的支持。

希望以上资料对你有所帮助,附励志名言3条:
1、有志者自有千计万计,无志者只感千难万难。

2、实现自己既定的目标,必须能耐得住寂寞单干。

3、世界会向那些有目标和远见的人让路。

相关文档
最新文档