《终端数据防泄密系统本科学位论文.doc》由会员分享,可在线阅读,更多相关《终端数据防泄密系统本科学位论文.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、毕业设计设计题目 终端数据防泄密系统 学生姓名 汪良柱 学 号 20103065 专业班级 信息安全10-2 指导教师 侯整风 院系名称 计算机与信息学院 2014 年 6 月 10 日目 录摘要IIIABSTRACT:IV1 引 言11.1 背景11.2 研究现状11.2.1理论研究现状11.2.2 工程研究现状32 相关知识52.1 Windows操作系统结构52.2 Windows文件系统和文件过滤驱动62.3 驱动开发过程中的重要数据结构72.3.1 驱动对象72.3.2 设备对象82.3.3 请求82.3.4 设备扩展92.3 sfilter102.4 RC4算法112.5 复合二进
2、制文档存储结构113 系统设计133.1 系统设计目标133.2 系统设计133.3 系统实现143.3.1 进程识别143.3.2 文件加密标识153.3.4 文件打开处理163.3.5 文件读操作处理173.3.6 文件写操作处理174 系统测试194.1 测试环境194.2 系统安装194.3 系统测试204.4 结果分析22终端数据防泄密系统摘要: 随着计算机与网络的发展日益迅速,数据的安全性显得越来越重要,数据加解密系统研究与应用日益广泛。长期以来,企业大多通过封USB接口、断网、拆光驱等“堵”的方式来保护企业机密文档不被泄露,但这些方式仍然存在极大的安全隐患,因为文件本身还是以明文
3、的形式存在,员工通过红外蓝牙、外接移动设备、安装转移接口设备、拆硬盘等手段就能轻松将文件带走。因此如何有效保护机密文件成了企业管理的一大难题。本文基于Windows内核文件过滤技术和加密算法,设计并实现一种终端数据防泄密系统。该系统能够捕获、拦截应用程序发给文件系统的各种操作请求。若是“打开”请求就对文档进行解密,若是“关闭”请求就对文档进行加密,其他请求则直接放过,不做任何处理。加解密过程动态进行,不会对用户操作文档产生任何影响。用户只有在特定的计算机设备上才能打开涉密文件。最后通过U盘拷贝和网络传输测试,在安装服务的PC机上可以正常打开文档,在未安装服务的PC机上不能正常打开文档,达到了系
4、统设计的目的,验证了系统的有效性。关键词:安全文档、文件过滤、透明加密Terminal Data Leak Prevention SystemAbstract: With the development of computer and network, data security is becoming increasingly important, data encryption and decryption system research increasingly widespread. For a long time, most enterprises through the closu
5、re USB blocking the way the interface, broken network , such as demolition drive to protect confidential business documents not be disclosed. But there still exists much hidden security danger, this is because the file itself is still plaintext. Staff could steal files through Bluetooth, external mo
6、bile equipment, installing transfer interface equipment, and uninstalling hard disk. How to effectively protect the confidential documents for enterprises has become a big challenge to the company management.In this paper, we design and implement a terminal data leak prevention system based on the W
7、indows kernel file system filtering technology and RC4 algorithm. The system is binding with the windows file system to intercept and distribute a variety of operating system requests. Decrypt files when the request is open, and encrypt them when the request is close. Other requests shall directly p
8、ass without any treatment. Dynamic encryption and decryption process will not have any influence on the operation of users documents.The user can only open secret files in a specific computer device. PC with installed services can open the document, but PC without installed services cant, achieving
9、our purpose and verifying the effectiveness of the system. Keywords: security document, document filtering, transparent encryption关键词:安全文档、文件过滤、透明加密第25页1 引 言1.1 背景随着信息技术的快速发展,网络技术、通信技术、数字多媒体技术研究取得了重大突破,信息数字化改变了人们的生活方式和生产方式。电子文档正在逐步取代传统的纸质文档,办公信息化、无纸化成为低碳、环保生活发展的主流趋势。相比于传统的纸质办公文档,电子文档易于存储、易于管理,极大的提高了
10、人们的工作效率。然而,电子文档易复制、易传递、易修改的特性使得文档信息时刻受到潜在的泄密风险。目前,企业机密信息和敏感数据被泄密事件频频成为互联网上的热点。2011年索尼发生两起数据泄密事件,超过一亿用户的信息被窃取;2013年大约1500万2500万的支付宝用户信息被泄露被用于网络营销;今年杭州市准备实行机动车限牌,然而在政府还没有发布这一消息之前,已经有一份与新闻发布会一样的通稿在网上疯传,使杭州机动车4S店汽车被疯抢,汽车价格飙升,引起了民众对政府的不满,使杭州市政府的形象受到严重影响。企业信息泄露,不仅使企业蒙受直接的经济损失,而且还影响公司的品牌价值、社会形象和投资者之间关系。如果企
11、业的核心技术、知识产权等信息泄露,将会给竞争对手以可乘之机,直接关系企业的生存和发展;个人隐私信息的泄露,将给个人的工作和家庭生活带来困扰。因此,敏感数据的安全性问题引起了人们的高度重视,敏感数据安全管理、防止敏感信息泄露也成为信息安全领域研究的重点。1.2 研究现状近几年,信息防泄密已成为信息安全领域研究的热点问题之一,从理论方面的安全模型研究到工程方面的应用都取得了丰厚的研究成果。1.2.1理论研究现状一直以来,数据的安全性受到国内外学术界的普遍关注,是信息安全领域的重点研究方向之一。国际上很多大学和研究机构在数据安全方面做了很多研究,如Massachusetts Institute of
12、 Technology(麻省理工学院)、微软亚洲研究院、剑桥大学、IBM研究院1、Namseoul University(首尔大学) 2,国内的有清华大学3、上海交通大学、复旦大学、北京邮电大学4、南京大学软件新技术国家重点实验室5等,并在文档加密、数据分发、秘钥管理、访问控制方面提出了很多新的理论,为数据的安全管理提供了强大的理论支持。(1)敏感电子文档安全可信模型敏感电子文档安全可信模型是一种对被保护的敏感数据对象,通过设置特定的安全策略,在敏感数据文件生成、存储、传输的过程中实现自动化保护,以及通过条件访问控制策略防止敏感数据对象的非法复制、泄露和扩散,使得开放网络环境下敏感数据对象具有
13、自我保护和自我版权侵犯防范能力。目前,大多数的敏感数据可信模型是通过DRM (Digital Rights Management)技术实现的。(2)敏感电子文档加密数据加密是保护文档最常用的方法之一。最原始的数据加密方法是手工设置加密密码,通过传统的加密算法和加密密钥将明文转变成密文。但是存储在硬盘上的文件还是以明文的形式存在,对于机密文件保护,仍不能从根本上起到作用。另外这种手动输入的密码,需要人为去记忆、保存,万一密码遗忘或丢失,不仅影响用户使用数据,还有可能造成数据泄露。 传统的数据加密是在用户态实现的,但如果加密密钥保存不当易造成数据泄露,后来提出在内核态实现数据加密。数据内核态加密是
14、指在对特定进程产生的数据在生成、存储、传输等瞬态执行强制性透明加密,无需用户干预6。这种方式是通过过滤驱动对受保护的敏感数据内容进行相应的参数设置而达到选择性保护的目的,写入时加密,读取时解密,不影响用户使用。目前虽然对敏感数据加密已经提出了一些理论,但多采用单一透明加解密技术,代理重加密机制、属性加密机制以及全同态加密技术只在理论上得到证明,并未在实际中得到应用。(3)域密钥管理开放式网络环境下,越来越多的组织联合起来进行协同工作,资源共享、批量数据传输等应用都需要建立在认证域基础上。在开放网络环境下,各个用户属于不同的安全认证域,每个认证域拥有不同的域密钥,域中成员通过域密钥进行电子文档的
15、共享,只有授权的域成员才能够得到认证域的域密钥而解密获得数据。因此如何对域密钥进行管理是敏感电子文档安全管理的核心问题。 保罗麦卡沃伊、袁拍、奥尔森肯普7提出一种“用于数据内容分发的系统和方法”,该方法重点采用层次密钥管理方法对电子数据进行加密,利用子群的水平控制的关键更新影响到整个团队,但需要对敏感数据的内容解密和加密,在新的成员加入或离开该组的时候。Wallner8提出的逻辑树方案主要通过修改逻辑树结构的方法,使群中每个成员均可获得从该成员所在节点到根节点的所有秘密值(包括群密钥)的信息,因此适应于用户域变化不太大的情况下,可以达到很好的性能。目前,学者们广泛研究组密钥管理,多组密钥管理方
16、案也已经被提出,但仍然存在一些问题,需要进一步的研究。主要问题如下:1)可扩展性。大多数群密钥管理方案依赖于群中成员的安全信息,而群中成员的加入或撤退将关系方案的可扩展性。2)安全性。群密钥由所有的域成员共享,群密钥的安全性将关系到敏感信息的加密、解密以及用户的认证等关键步骤。因此,群密钥必须满足机密性、完整性和前向保密性、后向保密性以及独立性等安全性。3)高效性。由于群组规模的动态变更,将会影响到生成群密钥的计算代价、群中成员存储密钥的空间、更新群密钥时占用的带宽以及网络延时,都需要设计群密钥管理方案时进行考虑。(4)电子文档访问控制 访问控制敏感数据的访问控制策略的定义,防止非法用户或合法
17、用户敏感数据的未经授权的操作。开放网络环境中每个认证域都管理着本地的电子文档和用户,当用户跨域访问电子文档时,需要对访问共享电子文档的用户进行统一的身份认证管理。另外,在进行电子文档共享时需要对电子文档制定一个公共的访问控制策略,灵活的访问控制和权限管理将关系到数据资源的安全性和共享程度。1.2.2 工程研究现状在电子信息防泄密技术解决方案上,国外比较著名有美国的Microsoft RMS, Adobe LifeCycle, Authentica ARM,韩国的markany,日本的Intelligent Wave等。 RMS (Right Management Service)防泄密系统是通
18、过系统与应用程序协作来保护敏感数据内容的,尤其是对Web内容、文档和电子邮件的保护。像Office2003 系列软件就带有含DRM技术的IRM服务。然而,为各种各样的应用支持,微软IE浏览器和Office系列软件已出版了多个接口,导致许多安全漏洞和不安全因素。 Secure Documents for PDF系统是美国的Authentic公司做的,系统基于PDF格式的DRM的电子文档的产品是最有名的。此系统的核心核心技术为采用RC4加密算法对数据内容进行加密,使用Plug-in技术对PDF文档进行文件控制,由Policy Server服务器对系统进行授权分配和管理。 韩国的Markany系统对
19、创建的文档能够追溯文档信息以及文档的控制信息,同时,文档被打印时设置水印,具备PC & document take-out功能,允许离线使用文档(需要管理员批准),过期后权限自动回收。 国内业界在电子信息防泄密技术上起步比较晚,但也有不少的单位和公司开发出了敏感数据防泄密系统,且使用效果很好。如亿赛通CDG文档安全管理系统,该系统可在设定文件保护类型,设定之后强制、实时对该类文档进行文件透明加解密,并设置文件权限的分化,以确保指定的文件信息的透明加解密在授权的范围内实现。天盾文档安全系统把应用程序对文件的操作都列入到加密监控之中,通过保存、另存为、虚拟输出等接口读取出的文件内容都将被强制加密,
20、用户不必担心在某一方面文件信息因为未被加密而导致信息泄露。2 相关知识2.1 Windows操作系统结构Windows操作系统是基于分层设计思想的9。从整体上看,Windows操作系统由若干个层组成,每层有若干个组件,每个组件有固定的接口。操作系统运行时由上层接口向下层接口一层一层调用。离底层越近的组件拥有越高的操作权限。下图是Windows操作系统层次结构图: 图2.1 windows系统结构图在该图中可以看出操作系统被一条横线分为上下两部分:上层为用户模式,下层为内核模式。在用户模式下,该API接口应用程序调用自身子系统。在Windows操作系统中子系统主要包含Win32子系统、OS/2子
21、系统和POSIX子系统。当初Windows设计者设计子系统也是为了方便将其他系统的程序移植到Windows系统上来,其中Win32子系统是Windows最主要子系统,包含了大量API函数,只要熟悉这些API便可以实现Windows应用程序。Win32下一层是Native API,Native API一般都是在Win32 API的基础上加上Nt两个字母。Native API没有相应的文档可以查询,设计之初也是出于版本兼容性的考虑。Native API通过软件中断的方式从用户模式穿越进入内核模式,调用系统服务函数。系统服务的组件中的系统服务描述符号表可以查出对应系统服务函数地址。系统服务会将具体的
22、I/O操作通过I/O管理器将消息传递到驱动程序中,由驱动程序通过硬件抽象层操作具体的硬件。2.2 Windows文件系统和文件过滤驱动在Windows内核中,文件系统驱动程序中有两种设备对象,一种是控制设备对象,控制设备对象仅仅是文件系统驱动程序,不涉及任何硬件,主要用于文件系统初始化配置、同应用程序通信等,一般来说,一个文件系统驱动只有一个控制设备对象;另一种是卷设备对象,卷可以被看作是一个逻辑磁盘,逻辑磁盘可以被理解为一个物理硬盘,即我们在电脑看到的C盘、D盘的盘符。文件系统驱动接受应用程序操作文件时发出的打开、创建、读、写和关闭等请求,并根据请求类型对硬盘进行相应的操作。其原理如下:图
23、2.2文件系统控制流程图当应用程序对文件进行操作时会发出一个或多个请求,请求经过win32子系统到达I/O管理器。由于Windows存在文件缓存机制,当I/O管理器接受到文件请求之后,首先在缓存中搜索应用程序请求的数据,如果在缓存中成功的搜索到需要的数据,则I/O管理器会构造快速I/O请求包,直接从缓存里读取数据。如果缓存里没有应用程序请求的数据,则I/O管理器构造普通I/O请求包,发给文件系统驱动。普通I/O请求结束之后,缓存管理器会将请求的数据保存在缓存中。文件系统过滤驱动是绑定在文件系统驱动上,拦截所有发往磁盘驱动的请求,并且有选择的处理这些请求,以此扩展或修改文件系统驱动的功能11。文
24、件过滤驱动首先构造附加的设备对象,将该设备对象绑定到文件系统两种设备对象上,并为该设备对象指定专门的文件过滤驱动程序。如图2.2虚线框所示,I/O管理器发送请求到文件系统时,文件过滤驱动会截获请求并对请求进行处理再发送给文件系统,而请求得到的数据也需要先经过过滤驱动处理才能返回给应用程序。因此可以在过滤驱动中完成数据加解密操作。2.3 驱动开发过程中的重要数据结构2.3.1 驱动对象使用c语言编写的Windows操作系统,采用的却是面向对象的程序设计方法。在Windows内核中,每个驱动程序都被看成一个对象,且一个驱动程序只能对应一个对象。驱动对象的结构定义如下:Typedef struct
25、_DRIVER_OBJECT /结构的类型和大小CSHORT Type;CSHORT Size;/设备对象,每个驱动程序都会有一个或多个设备对象PDEVICE_OBJECT DeviceObject; /驱动的名字UNICODE_STRING DriverName; /快速I/O分发函数PFAST_IO_DISPATCH FastIoDispatch;/驱动卸载时的回调函数PDRIVER_UNLOAD DriverUnload;/普通分发函数PDRIVER_DISPATCH MajorFunctionIRP_MJ_MAXIMUM_FUNCTION + 1; DRIVER_OBJECT;2.3.
26、2 设备对象一个驱动程序会创建一个或多个设备对象,每个设备对象都会有一个指针指向下一个设备对象,多个设备对象链接在一起形成设备链。设备对象(DEVICE_OBJECT)结构定义如下:Typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT)_DEVICE_OBJECT /和驱动对象一样 CSHORT Type; CSHORT Size; /引用计数 ULONG ReferenceCount;/设备所属的驱动对象 struct _DRIVER_OBJECT *DriverObject; /指向下一个设备对象 struct _DRIVER_
27、OBJECT *NextDevice; DEVICE_TYPE DeviceType;/设备类型 /IRP栈大小 HAR StackSize; DEVICE_OBJECT;2.3.3 请求IRP(IO Request Packet)是Windows驱动开发中与输入输出有关的重要数据结构。IRP是内核中特有的,在应用程序中是看不到的。在应用程序中,我们只需要调用内核API便能够实现我们所需要的功能,如当我们调用API ReadFile函数时,就可以读取硬盘中的数据。但是这些操作会发出相应的请求,请求会在内核的I/O管理器中被翻译成IRP数据结构,然后将IRP向下传递,传给对应的设备对象。大部分请
28、求是以IRP的形式发送的,IRP的数据结构比较复杂,现在简单介绍其中重要的字段。Typedef struct DECLSPEC_ALIGN _IRP/类型和大小CSHORT Type;CSHORT Size;/内存描述符链表指针PMDL MdlAddress;/也是表示缓冲区的一种方式PVOID SystemBuffer;/IO状态IO_STATUS_BLOCK IoStatus;/栈空间大小CHAR StackCount;2.3.4 设备扩展设备扩展(DEVICE_EXTENSION)是与设备对象相关的另一种重要的数据结构,它可以用来存储与一个特定设备相关的信息。其数据结构如下: typed
29、ef struct DEVICE_EXTENSION PDEVICE_OBJECT DeviceObject;PDEVICE_OBJECT LowerDeviceObject;PDEVICE_OBJECT Pdo; IO_REMOVE_LOCK RemoveLock;UNICODE_STRING Devname;. . . . . . DEVICE_EXTENSION, *PDEVICE_EXTENSION; 2.3 sfilterSfilter是微软在内核驱动开发包WDK中提供的传统型文件过滤的例子,这个驱动程序实现了文件过滤驱动的控制设备绑定和卷设备绑定,能够拦截应用操作系统的各种请求,但
30、不对请求做任何处理,我们可以打印出sfilter拦截的所有请求。内核软件开发者在开发与文件系统相关的软件时,一般都是在sfilter的基础上修改,插入新的代码。不过这样导致插入的代码与sfilter代码相混杂,不利于代码的维护与移植。较好的方法是将sfilter编译成一个静态库,可以供任何一个内核模块调用。该静态库只提供文件系统设备对象绑定、拦截IRP,但没有做任何事情。以后内核编程者就不用修改sfilter本身的代码,可以直接调用sfilter静态链接库提供的接口,这样驱动开发者就省去了设备绑定、拦截IRP等许多复杂事情,提高了开发效率。Sfilter系统很稳定,在调试内核驱动程序时,一般不
31、会考虑sfilter程序出现问题。 sfilter中有一些回调函数,当然。这些回调函数是sfilter自己没有实现的,等待基于sfilter编写软件的开发者自己来实现。sfilter提供一个回调函数接口:NTSTATUS OnSfilterDriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath,OUT PUNICODE_STRING userNameString,OUT PUNICODE_STRING syblnkString,OUT PULONG extensionSize)这个函数需要驱动开发者自
32、己来实现,实现是时需填写userNameString,以后会用它作为控制设备的名字,同样还有syblnkString,之后sfilter会用这个字符串作为控制设备的符号链接名。最后是一个extensionsize,用来作为每个设备的设备扩展的长度。2.4 RC4算法考虑到文件系统读写请求的频繁性与随机性,算法的复杂度,实现的难度,加解密速度,以及算法的安全性。本系统采用RC4加密算法。RC4算法包括两部分:初始化算法和伪随机子密码生成。假设S-box长度和密钥长度均为为n。算法的初始化部分为(用类C伪代码表示):for (i = 0; i n; i+)si = i;j = 0;for (i =
33、 0; i n; i+)j = (j + si + ki) % 256;swap(si, sj);在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的:i = j =0;while (明文未结束)+i %= n;j = (j + si) % n;swap(si, sj);sub_k= s(si+sj)%n);得到的子密码sub_k用以和明文进行异或运算,得到密文,解密过程也完全相同。RC4加密算法实现简单,加解密速度快,因此用在
34、数据防泄密系统中是一个比较好的选择。2.5 复合二进制文档存储结构Microsoft office系列软件创建的文档属于复合文档,复合文档包含一个文件头,一般大小为512字节,用来记录文档的相关信息。本系统将把加密标识放在文档的头部,所有有必要了解一下复合文档的头部结构:表2.2 word文档二进制头部 OffsetSizeContents08复合文档文件标识,只要它是一个复合文档内容都是一样的816此文件的唯一标识(不重要, 可全部为0)242文件格式修订号 (一般为003EH)262文件格式版本号(一般为0003H)282字节顺序规则:FEH FFH为小端规则, FFH FEH为大端规则
35、302复合文档中扇区的大小(ssz)322短扇区大小(sssz)342Reserved364Reserved404用于存放目录总数444用于存放扇区配置表(SAT)的扇区总数484用于存放目录流的第一个扇区的SID524Reserved564标准流大小,一般为4kB,小于此值的流即为短流604存放短扇区配置表(SSAT)的第一个扇区的SID644存放短扇区配置表的(SSAT)的扇区总数684存放主扇区配置表(MSAT)的第一个扇区的SID724存放主扇区配置表的(MSAT)的扇区总数76436存放主扇区配置表(MSAT)的第一部分,3 系统设计3.1 系统设计目标本次毕业设计是基于Window
36、s内核文件过滤技术和RC4加密算法,设计与实现一种终端数据防泄密系统,该系统在不改变用户操作习惯的基础上实现文件的存储安全。本系统以Microsoft Office Word为例,实现对word文档的防泄密保护。本系统的主要功能如下:(1)所有的Word文档都是以密文的形式存放在硬盘中;(2)打开word文档时系统自动为其解密,保存word文档时自动对其进行加密,加解密过程对用户是透明的,无需用户干预;(3)只有在安装本系统的终端上才能正常打开文档,移动存储设备或通过即时通讯软件传递文档到其它设备上,该文档将不能正常打开。3.2 系统设计终端数据防泄密系统利用Windows内核文件过滤技术,在
37、微软提供的sfilter基础上添加了数据加密的功能实现。本系统主要考虑四种对文件处理情况:1)当一个普通进程打开一个普通的文档时,不需要对请求做任何处理,文件可以正常打开,看到的是明文。2)当一个普通进程打开一个机密文档时,不过滤请求,文档不能正常打开,看到的是密文。3)当一个机密进程打开一个机密文档时,过滤文件请求,对于读请求对文件进行解密,对于写请求对文件进行加密,文档可以正常打开,看到的是明文。4)当机密进程打开普通文档时,文件可以正常打开,看到的是明文。系统整体结构如图3.1所示:图3.1 系统设计图 3.3 系统实现3.3.1 进程识别操作系统经过加密保护后,所有进程被分为两类,一类
38、是机密进程,另一类是普通进程 12。所谓机密进程是指用户在机密的操作系统中创建工作文档的进程。这些文档在一定的范围内是机密的,不允许外泄。区分机密进程和非机密进程最常用的方法是根据进程的名字来判断。在Windows内部对每个进程维护了一个EPROCESS结构,在EPROCESS结构保存有进程的名字。但微软并没有对外公开这个结构,而且在不同版本的Windows系统中这个结构还不尽相同。针对此问题,本系统采用如下解决办法。每一个驱动程序都有一个入口函数DriverEntry,DriverEntry只能在“System”进程中被执行,System进程在开机时就已经启动。可以确定,在驱动入口函数中当前
39、进程名为”System”。我们虽然不知道EPROCESS结构的具体内容,但可以在EPROCESS中搜索”System”字符串,若搜到则记下偏移位置。以后从这个位置取就可以了。PEPROCESS CurrentProcess = PsGetCurrentProcess();/获取当前进程for(i = 0;i 3*4*1024;i+) if(!strncmp(“System”,(PCHAR)CurrentProcess+I,strlen(“System”) offset = i; break; 3.3.2 文件加密标识当安全进程打开一个文档时,如何识别该文档是已经加密的文档还是未加密的文档呢?显
40、然必须对已加密的文档设置一个加密标识,以区别加密文档和普通文档。在对文档进行操作时,先读取文档的加密标识,如果加密标识存在,就要对文档进行相应的加密或解密处理,如果加密标识不存在,则不需要对文档进行加解密操作。一种设置加密标识的方法是每当系统完成对一个文件加密后,便在该文件所在的路径下创建一个与该文件具有相同名字的带特定扩展名的文件,称为加密标识文件。以后操作系统对文件进行操作时,首先在文件所在的路径下搜索该文件的加密标识文件。如果搜索到了,表明该文件是密文文件,需要对文件进行相应的处理,如果没有搜索到,则是明文文件,不需要做任何处理。该方法的缺点是要对加密文件和加密标识文件做同步处理,如生成
41、一个密文文件,对密文文件进行移动、删除操作,就要创建一个加密标识文件,对加密标识文件也要做移动、删除操作。一旦同步操作出现问题,就会造成明文、密文识别错误,技术上实现比较难。另一种设置文件加密标识的方法是在计算机硬盘上划出一片区域,在该区域中创建的文件均为机密文件,需要做加密处理,不在该区域创建的文件不做任何处理。例如我们指定计算机D盘为安全区域,则存储在D盘下的文件全部为密文文件,在D盘以外的文件全部为明文文件。当操作系统对文件进行操作时,先判断文件是否在指定的安全区域内,如果是则对文件进行相应的处理。这种方法实现简单,但无法满足对更高水平的密文文件系统管理要求。还有一种方法是将加密标识保存
42、到加密文件的内部,通常在加密文件内部有三个地方可以添加加密标识:文件头(我们在应用程序最先看到文件内容的地方)、文件尾、二进制文件头部(复合文档有一个文件头用来记录文件的信息)。放在文件头部比较稳定,因为加密标识的位置是固定的,但是对文件进行操作时,对给文件添加一个位置偏移量,同时向应用程序隐藏这个位置偏移,技术实现比较难;放在文件尾部存在很大的风险,因为文件的大小是不固定的,每次文件的大小改变时,文件标识的位置也需要同时改变,很容易造成文件标识的丢失,例如当文件标识正在改变位置时,突然发生计算机事故(如断电),该文件的加密标识很有可能会丢失,因此系统的稳定性和安全性都不高。本系统采用将文档加
43、密标示存储在二进制文档的头部,利用文档头的保留位来保存加密标示,这样做既不增加文档的大小,又不影响文档的操作,稳定可靠。在2.6节介绍了word复合文档的二进制存储结构,发现word文档头部偏移量为34的十个字节作为保留位,Word没有使用,因而可以将偏移量为34和35的两个字节作为文档加密标示的存储位置。 3.3.4 文件打开处理图 3.2 IRP打开请求处理流程 当防泄密系统的过滤驱动检测到机密进程正在试图打开一个文件时(无论是新建文件还是旧文件),需要对文件的大小进行判断。若文件大小为零,即这个文件是空文件,则表明这是一个新建的文件,新建的文件必须为加密文件,要为该文件添加加密标识。这也
44、是唯一需要添加文件加密标识的地方。3.3.5 文件读操作处理图 3.3 IRP读请求处理流程 对于读请求的处理比较简单,当系统过滤到机密进程的读文件IRP请求,先放过本次请求,将读IRP请求向下传递。待下层驱动完成该请求并将该请求返回时,对读缓冲区进行RC4解密,将解密后的请求返回给上层驱动。3.3.6 文件写操作处理图3.4 IRP写请求处理流程 写请求的处理相对来说比较复杂。当我们用Word编辑文档(例如:mydocument.doc)点击保存时,Word进程Winword.exe并不是将数据直接写入到磁盘上的mydocument.doc文件中,而是先新建一个名为“WRDxxxx.tmp”
45、的临时文件,并将用户要保存的数据写到刚才新建的那个文件中,数据写入完成后,将文件“mydocument.doc”重命名为“WLRxxxx.tmp”,再将“WRDxxxx.tmp”重命名为“mydocument.doc”。因而在获得文件写IRP请求时,是要过滤对文件“WRDxxxx.tmp”的写操作,而不是对“mydocument.doc”的写操作。在收到对WRDxxxx.tmp文件的写IRP请求时,首先判断本次写请求是文件缓冲写请求还是分页写请求(写磁盘操作),如果是文件缓冲写请求,对偏移量为0,写长度为512字节的写请求,设置加密标示;如果是分页写请求,首先将本次写请求的缓冲区保存,然后对写请求的缓冲区进行加密。4 系统测试4.1 测试环境(1) 物理环境:PC机两台,其中PC机A安装有终端数据防泄密系统,PC及B未安装终端数据防泄密系统。(2) 软件环境:Windows XP sp3,Microsoft Office 2003。4.2 系统安装 程序编译后会生成.sys文件,将sys文件安装为服务,这里借助第三方工具Instdrv.exe来实现,安装步骤如下: 运行Instdrv.exe,界面如图4.1所示;图 4.1Instdrv.exe工具 在驱动路径上输入sys文件的路径(支持拖拽获取文件路径); 点击“安装”,如图4.2,若显示“驱动服务安装成功”则表示操作成功;
限制150内