一种基于交换数据流的文件标密方法

文档序号:8339924阅读:380来源:国知局
一种基于交换数据流的文件标密方法
【技术领域】
[0001] 本发明涉及计算机文件标密方法,尤其涉及一种基于交换数据流(ADS)的文件标 密方法。
【背景技术】
[0002] 随着互联网的发展,人们的生活已经离不开网络通信,同时,通讯信息的安全性、 保密性问题也引起了人们的重视。现有技术CN201110320966. X公开一种文件标密系统和 文件标密方法,该方法实现电子文件在传输、复制过程中标密信息与数字签名不丢失,可实 现电子文件密级信息标定。这种文件标密方法需要在计算机硬盘的每个盘符下创建数据库 文件来存储文件标密的时间、被标密文件的文件名、被标密文件的文件全路径以及文件的 密级。
[0003] 基于 Windows 的 NTFS 文件系统(New Technology File System)是一种具有较好 容错性和安全性的文件系统。NTFS以簇作为磁盘空间分配和回收的基本单位,在NTFS上 要定位一个簇需要用到逻辑簇号(Logical Cluster Number,LCN)和虚拟簇号(Virtual Cluster Number,VCN)。LCN是对整个卷的簇从头到尾以0号起始的编号;VCN则是对属于 特定文件的簇从头到尾以〇号起始的编号。
[0004] 主控文件表$MFT (Master File Table)是NTFS卷中最重要的系统文件,包含了卷 中所有文件的记录信息,每个记录的大小都是固定的,为1KB。
[0005] NTFS将文件或目录作为属性和属性值(属性的内容)的集合来处理,一个文件可 以有若干不同的属性,也可以同时拥有若干个相同的属性,包括数据流属性$DATA。$Data 属性的简要数据结构及说明如下:
[0006] typedef struct NTFSFileDataAttri {//下面的偏移量都是相对于该结构开头的 偏移
[0007] 0x00 DWORD AttriType ;// 属性类型,0x00000080 表示数据流属性
[0008] 0x04 DWORD AttriLength ;//属性长度,常驻属性的大小
[0009] 0x09 BYTE NameLength ;//属性名称的长度(以字为单位)
[0010] OxOA WORD NameOffset ;//属性名称相对于属性开头的偏移
[0011] 0x20 WORD RunListOffset ;//运行列表相对于属性开头的偏移
[0012] 0x30 QWORD RealSize ;//属性值的实际大小
[0013] 0x40 BYTE Name [M] ;//用于存储属性名(Unicode),M 值为大于 2 X NameLength 的整数,且是8的倍数,空位用0x00占位
[0014] 0x40+M BYTE RunList [N] ;//用于存储运行列表,N值为8的倍数,空位由随机内 容占位
[0015] } CNTFSFileData ;
[0016] 数据流属性$DATA可以有两种:未命名的数据流属性和命名的数据流属性。未 命名数据流通常容纳用户存储的数据,它的大小就是文件的大小,又被称为默认流(Main Stream);而命名数据流一般都是操作系统为特定目的设置的,其大小和内容往往对用户是 不可见的,这种命名数据流又称作NTFS交换数据流(ADS,Alternative Data Streams)或 者备用流(Alternate Stream),如图1所示。ADS是一种命名的$0&七&属性。
[0017] 在Windows的NTFS文件系统上,每一个文件在创建的时候会被分配一个默认流, 用于存储数据内容。NTFS的交换数据流(Alternate Data Streams,简称ADS)是NTFS磁 盘格式的一个特性。在NTFS文件系统下,每个文件都可以存在多个数据流,即除了主文件 流之外还可以有许多非主文件流寄宿在主文件流中,就是其它文件可以"寄宿"在某个文件 身上,而在资源管理其中只看到的是"宿主文件",而找不到"寄宿文件"。这些利用NTFS数 据流"寄宿"并"隐藏"在系统中的非主文件流被称之为ADS流,即交换数据流。

【发明内容】

[0018] 本发明的目的是提供一种基于ADS的新型的文件标密方法,具体是一种针对 Windows操作系统的NTFS文件系统下的普通文件进行添加或编辑密级标识的方法,不需要 建立本地数据库存储密级标识,同时也不会影响文件的原有内容,方法实现便捷、方便、可 靠,使文件标密更加容易操作。
[0019] 本发明的原理是:基于Windows的NTFS磁盘上的文件存储方式,以及NTFS文件系 统的交换数据流(Alternate Data Streams,ADS)特性,根据建立ADS时所使用的名称(为 唯一标识Unicode),将密级标识(包括标密人、密级和标密时间)添加到交换数据流(ADS) 中。也就是,通过添加目录文件备用流(Alternate Stream),实现添加文件扩展数据。本发 明是在创建了文件之后,通过为指定的文件创建ADS数据流的方法来实现标密的。因此,本 方法的核心是利用ADS存储文件的标密信息,在宿主文件或目录的记录中可以寻找标密文 件所在的ADS头结构及其运行列表,从而实现文件标密。这种方法实现简单,可以运用到需 要标密的系统中。
[0020] 本发明提供的技术方案如下:
[0021] -种基于ADS的文件标密方法,将要标密的文件数据通过ADS写到NTFS卷上实现 文件标密,具体包括如下步骤:
[0022] 1)选定需要标密的文件,为该文件创建扩展ADS数据流,设置标密;
[0023] 2)调用文件1/0,读取步骤1)中为该文件创建的扩展数据流(ADS);
[0024] 3)判断ADS数据流中是否已经存在标密标识,如果已经存在标密标识,则进入步 骤4);如果不存在标密标识,则进入步骤5);
[0025] 4)提示输入验证口令,验证通过后显示加密标识信息,也可重新设置密级标识信 息,包括标密人和密级,并自动获取标密时间,再转入步骤7);如果验证不通过则继续步骤 4);
[0026] 5)设置文件密级标识信息,包括标密人和密级,并自动获取标密时间;
[0027] 6)提示输入标密标识口令,作为验证口令;
[0028] 7)调用文件1/0,将设置的文件密级标识信息写入文件扩展数据流(ADS),完成标 tM I_Lj 〇
[0029] 上述基于ADS的文件标密方法中,步骤3)中,若已经存在标密标识,说明该文件已 被标密;此时可输入验证口令,验证通过后显示加密标识信息;还可以重新输入密级和标 密人,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1