终端数据防泄密系统.docx
《终端数据防泄密系统.docx》由会员分享,可在线阅读,更多相关《终端数据防泄密系统.docx(27页珍藏版)》请在冰豆网上搜索。

终端数据防泄密系统
毕业设计
院系名称计算机与信息学院
2014年6月10日
终端数据防泄密系统
摘要:
随着计算机与网络的发展日益迅速,数据的安全性显得越来越重要,数据加解密系统研究与应用日益广泛。
长期以来,企业大多通过封USB接口、断网、拆光驱等“堵”的方式来保护企业机密文档不被泄露,但这些方式仍然存在极大的安全隐患,因为文件本身还是以明文的形式存在,员工通过红外蓝牙、外接移动设备、安装转移接口设备、拆硬盘等手段就能轻松将文件带走。
因此如何有效保护机密文件成了企业管理的一大难题。
本文基于Windows内核文件过滤技术和加密算法,设计并实现一种终端数据防泄密系统。
该系统能够捕获、拦截应用程序发给文件系统的各种操作请求。
若是“打开”请求就对文档进行解密,若是“关闭”请求就对文档进行加密,其他请求则直接放过,不做任何处理。
加解密过程动态进行,不会对用户操作文档产生任何影响。
用户只有在特定的计算机设备上才能打开涉密文件。
最后通过U盘拷贝和网络传输测试,在安装服务的PC机上可以正常打开文档,在未安装服务的PC机上不能正常打开文档,达到了系统设计的目的,验证了系统的有效性。
关键词:
安全文档、文件过滤、透明加密
TerminalDataLeakPreventionSystem
Abstract:
Withthedevelopmentofcomputerandnetwork,datasecurityisbecomingincreasinglyimportant,dataencryptionanddecryptionsystemresearchincreasinglywidespread.Foralongtime,mostenterprisesthroughtheclosureUSB"blocking"thewaytheinterface,brokennetwork,suchasdemolitiondrivetoprotectconfidentialbusinessdocumentsnotbedisclosed.Buttherestillexistsmuchhiddensecuritydanger,thisisbecausethefileitselfisstillplaintext.StaffcouldstealfilesthroughBluetooth,externalmobileequipment,installingtransferinterfaceequipment,anduninstallingharddisk.Howtoeffectivelyprotecttheconfidentialdocumentsforenterpriseshasbecomeabigchallengetothecompanymanagement.
Inthispaper,wedesignandimplementaterminaldataleakpreventionsystembasedontheWindowskernelfilesystemfilteringtechnologyandRC4algorithm.Thesystemisbindingwiththewindowsfilesystemtointerceptanddistributeavarietyofoperatingsystemrequests.Decryptfileswhentherequestisopen,andencryptthemwhentherequestisclose.Otherrequestsshalldirectlypasswithoutanytreatment.Dynamicencryptionanddecryptionprocesswillnothaveanyinfluenceontheoperationofuser’sdocuments.
Theusercanonlyopensecretfilesinaspecificcomputerdevice.PCwithinstalledservicescanopenthedocument,butPCwithoutinstalledservicescan’t,achievingourpurposeandverifyingtheeffectivenessofthesystem.
Keywords:
securitydocument,documentfiltering,transparentencryption
关键词:
安全文档、文件过滤、透明加密
1引言
1.1背景
随着信息技术的快速发展,网络技术、通信技术、数字多媒体技术研究取得了重大突破,信息数字化改变了人们的生活方式和生产方式。
电子文档正在逐步取代传统的纸质文档,办公信息化、无纸化成为低碳、环保生活发展的主流趋势。
相比于传统的纸质办公文档,电子文档易于存储、易于管理,极大的提高了人们的工作效率。
然而,电子文档易复制、易传递、易修改的特性使得文档信息时刻受到潜在的泄密风险。
目前,企业机密信息和敏感数据被泄密事件频频成为互联网上的热点。
2011年索尼发生两起数据泄密事件,超过一亿用户的信息被窃取;2013年大约1500万~2500万的支付宝用户信息被泄露被用于网络营销;今年杭州市准备实行机动车限牌,然而在政府还没有发布这一消息之前,已经有一份与新闻发布会一样的通稿在网上疯传,使杭州机动车4S店汽车被疯抢,汽车价格飙升,引起了民众对政府的不满,使杭州市政府的形象受到严重影响。
企业信息泄露,不仅使企业蒙受直接的经济损失,而且还影响公司的品牌价值、社会形象和投资者之间关系。
如果企业的核心技术、知识产权等信息泄露,将会给竞争对手以可乘之机,直接关系企业的生存和发展;个人隐私信息的泄露,将给个人的工作和家庭生活带来困扰。
因此,敏感数据的安全性问题引起了人们的高度重视,敏感数据安全管理、防止敏感信息泄露也成为信息安全领域研究的重点。
1.2研究现状
近几年,信息防泄密已成为信息安全领域研究的热点问题之一,从理论方面的安全模型研究到工程方面的应用都取得了丰厚的研究成果。
1.2.1理论研究现状
一直以来,数据的安全性受到国内外学术界的普遍关注,是信息安全领域的重点研究方向之一。
国际上很多大学和研究机构在数据安全方面做了很多研究,如MassachusettsInstituteofTechnology(麻省理工学院)、微软亚洲研究院、剑桥大学、IBM研究院[1]、NamseoulUniversity(首尔大学)[2],国内的有清华大学[3]、上海交通大学、复旦大学、北京邮电大学[4]、南京大学软件新技术国家重点实验室[5]等,并在文档加密、数据分发、秘钥管理、访问控制方面提出了很多新的理论,为数据的安全管理提供了强大的理论支持。
(1)敏感电子文档安全可信模型
敏感电子文档安全可信模型是一种对被保护的敏感数据对象,通过设置特定的安全策略,在敏感数据文件生成、存储、传输的过程中实现自动化保护,以及通过条件访问控制策略防止敏感数据对象的非法复制、泄露和扩散,使得开放网络环境下敏感数据对象具有自我保护和自我版权侵犯防范能力。
目前,大多数的敏感数据可信模型是通过DRM(DigitalRightsManagement)技术实现的。
(2)敏感电子文档加密
数据加密是保护文档最常用的方法之一。
最原始的数据加密方法是手工设置加密密码,通过传统的加密算法和加密密钥将明文转变成密文。
但是存储在硬盘上的文件还是以明文的形式存在,对于机密文件保护,仍不能从根本上起到作用。
另外这种手动输入的密码,需要人为去记忆、保存,万一密码遗忘或丢失,不仅影响用户使用数据,还有可能造成数据泄露。
传统的数据加密是在用户态实现的,但如果加密密钥保存不当易造成数据泄露,后来提出在内核态实现数据加密。
数据内核态加密是指在对特定进程产生的数据在生成、存储、传输等瞬态执行强制性透明加密,无需用户干预[6]。
这种方式是通过过滤驱动对受保护的敏感数据内容进行相应的参数设置而达到选择性保护的目的,写入时加密,读取时解密,不影响用户使用。
目前虽然对敏感数据加密已经提出了一些理论,但多采用单一透明加解密技术,代理重加密机制、属性加密机制以及全同态加密技术只在理论上得到证明,并未在实际中得到应用。
(3)域密钥管理
开放式网络环境下,越来越多的组织联合起来进行协同工作,资源共享、批量数据传输等应用都需要建立在认证域基础上。
在开放网络环境下,各个用户属于不同的安全认证域,每个认证域拥有不同的域密钥,域中成员通过域密钥进行电子文档的共享,只有授权的域成员才能够得到认证域的域密钥而解密获得数据。
因此如何对域密钥进行管理是敏感电子文档安全管理的核心问题。
保罗·麦卡沃伊、袁拍、奥尔森·肯普[7]提出一种“用于数据内容分发的系统和方法”,该方法重点采用层次密钥管理方法对电子数据进行加密,利用子群的水平控制的关键更新影响到整个团队,但需要对敏感数据的内容解密和加密,在新的成员加入或离开该组的时候。
Wallner[8]提出的逻辑树方案主要通过修改逻辑树结构的方法,使群中每个成员均可获得从该成员所在节点到根节点的所有秘密值(包括群密钥)的信息,因此适应于用户域变化不太大的情况下,可以达到很好的性能。
目前,学者们广泛研究组密钥管理,多组密钥管理方案也已经被提出,但仍然存在一些问题,需要进一步的研究。
主要问题如下:
1)可扩展性。
大多数群密钥管理方案依赖于群中成员的安全信息,而群中成员的加入或撤退将关系方案的可扩展性。
2)安全性。
群密钥由所有的域成员共享,群密钥的安全性将关系到敏感信息的加密、解密以及用户的认证等关键步骤。
因此,群密钥必须满足机密性、完整性和前向保密性、后向保密性以及独立性等安全性。
3)高效性。
由于群组规模的动态变更,将会影响到生成群密钥的计算代价、群中成员存储密钥的空间、更新群密钥时占用的带宽以及网络延时,都需要设计群密钥管理方案时进行考虑。
(4)电子文档访问控制
访问控制敏感数据的访问控制策略的定义,防止非法用户或合法用户敏感数据的XX的操作。
开放网络环境中每个认证域都管理着本地的电子文档和用户,当用户跨域访问电子文档时,需要对访问共享电子文档的用户进行统一的身份认证管理。
另外,在进行电子文档共享时需要对电子文档制定一个公共的访问控制策略,灵活的访问控制和权限管理将关系到数据资源的安全性和共享程度。
1.2.2工程研究现状
在电子信息防泄密技术解决方案上,国外比较著名有美国的MicrosoftRMS,AdobeLifeCycle,AuthenticaARM,韩国的markany,日本的IntelligentWave等。
RMS(RightManagementService)防泄密系统是通过系统与应用程序协作来保护敏感数据内容的,尤其是对Web内容、文档和电子邮件的保护。
像Office2003系列软件就带有含DRM技术的IRM服务。
然而,为各种各样的应用支持,微软IE浏览器和Office系列软件已出版了多个接口,导致许多安全漏洞和不安全因素。
SecureDocumentsforPDF系统是美国的Authentic公司做的,系统基于PDF格式的DRM的电子文档的产品是最有名的。
此系统的核心核心技术为采用RC4加密算法对数据内容进行加密,使用Plug-in技术对PDF文档进行文件控制,由PolicyServer服务器对系统进行授权分配和管理。
韩国的Markany系统对创建的文档能够追溯文档信息以及文档的控制信息,同时,文档被打印时设置水印,具备PC&documenttake-out功能,允许离线使用文档(需要管理员批准),过期后权限自动回收。
国内业界在电子信息防泄密技术上起步比较晚,但也有不少的单位和公司开发出了敏感数据防泄密系统,且使用效果很好。
如亿赛通CDG文档安全管理系统,该系统可在设定文件保护类型,设定之后强制、实时对该类文档进行文件透明加解密,并设置文件权限的分化,以确保指定的文件信息的透明加解密在授权的范围内实现。
天盾文档安全系统把应用程序对文件的操作都列入到加密监控之中,通过保存、另存为、虚拟输出等接口读取出的文件内容都将被强制加密,用户不必担心在某一方面文件信息因为未被加密而导致信息泄露。
2相关知识
2.1Windows操作系统结构
Windows操作系统是基于分层设计思想的[9]。
从整体上看,Windows操作系统由若干个层组成,每层有若干个组件,每个组件有固定的接口。
操作系统运行时由上层接口向下层接口一层一层调用。
离底层越近的组件拥有越高的操作权限。
下图是Windows操作系统层次结构图:
图2.1windows系统结构图
在该图中可以看出操作系统被一条横线分为上下两部分:
上层为用户模式,下层为内核模式。
在用户模式下,该API接口应用程序调用自身子系统。
在Windows操作系统中子系统主要包含Win32子系统、OS/2子系统和POSIX子系统。
当初Windows设计者设计子系统也是为了方便将其他系统的程序移植到Windows系统上来,其中Win32子系统是Windows最主要子系统,包含了大量API函数,只要熟悉这些API便可以实现Windows应用程序。
Win32下一层是NativeAPI,NativeAPI一般都是在Win32API的基础上加上Nt两个字母。
NativeAPI没有相应的文档可以查询,设计之初也是出于版本兼容性的考虑。
NativeAPI通过软件中断的方式从用户模式穿越进入内核模式,调用系统服务函数。
系统服务的组件中的系统服务描述符号表可以查出对应系统服务函数地址。
系统服务会将具体的I/O操作通过I/O管理器将消息传递到驱动程序中,由驱动程序通过硬件抽象层操作具体的硬件。
2.2Windows文件系统和文件过滤驱动
在Windows内核中,文件系统驱动程序中有两种设备对象,一种是控制设备对象,控制设备对象仅仅是文件系统驱动程序,不涉及任何硬件,主要用于文件系统初始化配置、同应用程序通信等,一般来说,一个文件系统驱动只有一个控制设备对象;另一种是卷设备对象,卷可以被看作是一个逻辑磁盘,逻辑磁盘可以被理解为一个物理硬盘,即我们在电脑看到的C盘、D盘的盘符。
文件系统驱动接受应用程序操作文件时发出的打开、创建、读、写和关闭等请求,并根据请求类型对硬盘进行相应的操作。
其原理如下:
图2.2文件系统控制流程图
当应用程序对文件进行操作时会发出一个或多个请求,请求经过win32子系统到达I/O管理器。
由于Windows存在文件缓存机制,当I/O管理器接受到文件请求之后,首先在缓存中搜索应用程序请求的数据,如果在缓存中成功的搜索到需要的数据,则I/O管理器会构造快速I/O请求包,直接从缓存里读取数据。
如果缓存里没有应用程序请求的数据,则I/O管理器构造普通I/O请求包,发给文件系统驱动。
普通I/O请求结束之后,缓存管理器会将请求的数据保存在缓存中。
文件系统过滤驱动是绑定在文件系统驱动上,拦截所有发往磁盘驱动的请求,并且有选择的处理这些请求,以此扩展或修改文件系统驱动的功能[11]。
文件过滤驱动首先构造附加的设备对象,将该设备对象绑定到文件系统两种设备对象上,并为该设备对象指定专门的文件过滤驱动程序。
如图2.2虚线框所示,I/O管理器发送请求到文件系统时,文件过滤驱动会截获请求并对请求进行处理再发送给文件系统,而请求得到的数据也需要先经过过滤驱动处理才能返回给应用程序。
因此可以在过滤驱动中完成数据加解密操作。
2.3驱动开发过程中的重要数据结构
2.3.1驱动对象
使用c语言编写的Windows操作系统,采用的却是面向对象的程序设计方法。
在Windows内核中,每个驱动程序都被看成一个对象,且一个驱动程序只能对应一个对象。
驱动对象的结构定义如下:
Typedefstruct_DRIVER_OBJECT{
//结构的类型和大小
CSHORTType;
CSHORTSize;
//设备对象,每个驱动程序都会有一个或多个设备对象
PDEVICE_OBJECTDeviceObject;
…………
//驱动的名字
UNICODE_STRINGDriverName;
…………
//快速I/O分发函数
PFAST_IO_DISPATCHFastIoDispatch;
…………
//驱动卸载时的回调函数
PDRIVER_UNLOADDriverUnload;
//普通分发函数
PDRIVER_DISPATCHMajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1];
}DRIVER_OBJECT;
2.3.2设备对象
一个驱动程序会创建一个或多个设备对象,每个设备对象都会有一个指针指向下一个设备对象,多个设备对象链接在一起形成设备链。
设备对象(DEVICE_OBJECT)结构定义如下:
TypedefstructDECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT)_DEVICE_OBJECT{
…
//和驱动对象一样
CSHORTType;
CSHORTSize;
//引用计数
ULONGReferenceCount;
//设备所属的驱动对象
struct_DRIVER_OBJECT*DriverObject;
//指向下一个设备对象
struct_DRIVER_OBJECT*NextDevice;
DEVICE_TYPEDeviceType;//设备类型
//IRP栈大小
HARStackSize;
…
}DEVICE_OBJECT;
2.3.3请求
IRP(IORequestPacket)是Windows驱动开发中与输入输出有关的重要数据结构。
IRP是内核中特有的,在应用程序中是看不到的。
在应用程序中,我们只需要调用内核API便能够实现我们所需要的功能,如当我们调用APIReadFile函数时,就可以读取硬盘中的数据。
但是这些操作会发出相应的请求,请求会在内核的I/O管理器中被翻译成IRP数据结构,然后将IRP向下传递,传给对应的设备对象。
大部分请求是以IRP的形式发送的,IRP的数据结构比较复杂,现在简单介绍其中重要的字段。
TypedefstructDECLSPEC_ALIGN_IRP
{
//类型和大小
CSHORTType;
CSHORTSize;
//内存描述符链表指针
PMDLMdlAddress;
//也是表示缓冲区的一种方式
PVOIDSystemBuffer;
//IO状态
IO_STATUS_BLOCKIoStatus;
//栈空间大小
CHARStackCount;
……
}
2.3.4设备扩展
设备扩展(DEVICE_EXTENSION)是与设备对象相关的另一种重要的数据结构,它可以用来存储与一个特定设备相关的信息。
其数据结构如下:
typedefstructDEVICE_EXTENSION{
PDEVICE_OBJECTDeviceObject;
PDEVICE_OBJECTLowerDeviceObject;
PDEVICE_OBJECTPdo;
IO_REMOVE_LOCKRemoveLock;
UNICODE_STRINGDevname;
......
}DEVICE_EXTENSION,*PDEVICE_EXTENSION;
2.3sfilter
Sfilter是微软在内核驱动开发包WDK中提供的传统型文件过滤的例子,这个驱动程序实现了文件过滤驱动的控制设备绑定和卷设备绑定,能够拦截应用操作系统的各种请求,但不对请求做任何处理,我们可以打印出sfilter拦截的所有请求。
内核软件开发者在开发与文件系统相关的软件时,一般都是在sfilter的基础上修改,插入新的代码。
不过这样导致插入的代码与sfilter代码相混杂,不利于代码的维护与移植。
较好的方法是将sfilter编译成一个静态库,可以供任何一个内核模块调用。
该静态库只提供文件系统设备对象绑定、拦截IRP,但没有做任何事情。
以后内核编程者就不用修改sfilter本身的代码,可以直接调用sfilter静态链接库提供的接口,这样驱动开发者就省去了设备绑定、拦截IRP等许多复杂事情,提高了开发效率。
Sfilter系统很稳定,在调试内核驱动程序时,一般不会考虑sfilter程序出现问题。
sfilter中有一些回调函数,当然。
这些回调函数是sfilter自己没有实现的,等待基于sfilter编写软件的开发者自己来实现。
sfilter提供一个回调函数接口:
NTSTATUSOnSfilterDriverEntry(
INPDRIVER_OBJECTDriverObject,
INPUNICODE_STRINGRegistryPath,
OUTPUNICODE_STRINGuserNameString,
OUTPUNICODE_STRINGsyblnkString,
OUTPULONGextensionSize
)
这个函数需要驱动开发者自己来实现,实现是时需填写userNameString,以后会用它作为控制设备的名字,同样还有syblnkString,之后sfilter会用这个字符串作为控制设备的符号链接名。
最后是一个extensionsize,用来作为每个设备的设备扩展的长度。
2.4RC4算法
考虑到文件系统读写请求的频繁性与随机性,算法的复杂度,实现的难度,加解密速度,以及算法的安全性。
本系统采用RC4加密算法。
RC4算法包括两部分:
初始化算法和伪随机子密码生成。
假设S-box长度和密钥长度均为为n。
算法的初始化部分为(用类C伪代码表示):
for(i=0;is[i]=i;
j=0;
for(i=0;ij=(j+s[i]+k[i])%256;
swap(s[i],s[j]);
}
}
在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。
而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的:
i=j=0;
while(明文未结束)
{
++i%=n;
j=(j+s[i])%n;
swap(s[i],s[j]);
sub_k=s((s[i]+s[j])%n);
}
得到的子密码sub_k用以和明文进行异或运算,得到密文,解密过程也完全相同。
RC4加密算法实现简单,加解密速度快,因此用在数据防泄密系统中是一个比较好的选择。
2.5复合二进制文档存储结构
Microsoftof