APP下载

透明加密文件系统中对文件内容的增强保护

2010-03-24周建钦

关键词:粘贴保密进程

陈 平,周建钦

(杭州电子科技大学通信工程学院,浙江杭州310018)

0 引 言

文件透明加密技术是近年来针对企业文件保护需求应运而生的一种文件保护方式,它在不改变用户操作习惯的基础上实现了文件的自动加解密,增强了文件的安全性[1-3]。文献1提出的透明加密方案运用过滤驱动技术,综合采用对称与非对称两种加密方式,提高了数据的存储安全,然而没有对在内存中以明文形式出现的文件内容提供保护措施,无法对数据进行全方位的保护。针对文件内容的保护,由于应用环境的复杂性及泄密方式的多样性,存在着很多不足,文献4提出的基于应用层的剪贴板监控技术与文件过滤驱动技术结合,实现了对用户剪贴板操作的监控,然而防护力度不够,存在泄密的可能。基于此,本文在实现文件透明加解密的基础上增加了一套较为完整的文件内容保护措施,初步实现了对文件内容使用及流向的监控,防止恶意用户通过系统剪贴板、拖放、截图泄密,提升了文件的安全系数。

1 透明加密文件系统

透明加密文件系统与文件系统紧密结合,在文件的访问流程中添加自定义处理,获取文件操作的相关信息,然后匹配已制定的保护规则,筛选并处理针对特定文件的操作请求,从而实现对某类文件的自动加解密。

本文所讲述的透明加密文件系统模型基于文件过滤驱动技术[1],采用两种加密算法对文件进行加密,对文件数据采用流密码加密算法加密,密钥随机生成;生成的密钥用加密强度更高的加密算法加密并保存在特定的密钥文件里,其中该加密密钥由用户提供。系统简要的工作流程如下:(1)系统初始化,完成过滤驱动的加载以及系统参数的设定;(2)过滤驱动截获并处理IRP,在截获的IRP_MJ_CREATE中,获取该请求所针对文件的相关信息并与保护规则进行匹配,判断文件是否涉密,有无加密标识等,然后将相关信息存入专为该文件生成的文件上下文中;在截获的IRP_MJ_DEVICE_CONTROL中,获得由用户通过函数DeviceIoControl()提供的加密密钥;若截获到针对涉密文件的IRP_MJ_READ或IRP_MJ_WRITE请求,则在其例程中对IRP携带的数据进行处理,完成透明加解密。

系统基本的保护规则:保密文件与保密进程是对应关系,即除保密进程以外的其他应用程序无法正常地访问保密文件,其中保密进程是系统为保密文件指定的访问进程。

2 与文件内容操作相关的技术

2.1 W indows环境下的剪贴板机制

Windows剪贴板是一种应用广泛同时也是开销比较小的进程间通讯机制[4,5]。Windows系统支持剪贴板是在系统中预留了一块全局共享内存,用来暂存进程间需要交换的数据。应用程序通过复制、剪切操作设置剪贴板数据,通过粘贴操作检索并获取剪贴板数据。

剪贴板是Windows子系统的一部分,在user32.dll动态库中定义了关于剪贴板的API函数、消息和预定义数据格式等,其对应的内核模式部分位于Win32.sys模块中。

Windows系统调用剪贴板的简化步骤为:(1)提供数据的进程调用GlobalAlloc()函数创建一个全局共享内存块,并将这块内存交给剪贴板处理;(2)通过调用OpenClipboard()函数打开剪贴板;(3)复制或剪切操作时,先清空剪贴板,然后调用SetClipboardData()函数设置剪贴板数据;粘贴操作时,则调用GetClipboardData()函数获取剪贴板数据;(4)最后调用CloseClipboard()函数关闭剪贴板。

2.2 W indows环境下的拖放机制

拖放是一种不同于剪贴板的数据传输方式,可以完成鼠标所选对象在不同窗口或同一窗口的不同位置间移动、复制和粘贴等操作[6]。

拖放有两种类型:文件管理器拖放和OLE拖放。文件管理器拖放主要处理文件名,通过映射目的窗口的WM_DROPFILES消息,使窗口可以获取被拖放的文件名。OLE拖放更加通用,它允许拖放可被保存在剪贴板上的任何数据。在本系统中,对文件内容的保护主要考虑OLE拖放即可。OLE拖放是应用COM组件进行数据传输的,简要流程如下:(1)一个对象被拖拽之后,函数DoDragDrop()被调用,拖放启动;(2)在拖操作的过程中,系统回调对象pDropSource的虚函数QueryContinueDrag()来决定是否继续拖操作;(3)在窗口初始化时,窗口会调用RegisterDragDrop()函数,向系统注册该窗口可接受拖放,以及接管拖放的接口是pDropTarget;(4)当对象拖进窗口hwnd的区域时,系统回调pDropTarget的虚函数DragEnter();当对象在hwnd区域内滑动时,系统回调pDropTarget的虚函数DragOver();当对象拖出hwnd区域时,系统回调pDropTarget的虚函数DragLeave();(5)当放操作发生时,系统回调pDrop-Target的虚函数Drop()。

3 文件内容保护的具体实现

3.1 实现文件内容保护的总体框架

系统的主要模块:规则解析模块,拖放监控模块,剪贴板监控模块,过滤驱动模块。关系如图1所示:

核心企业虽然作为链主存在于整个供应链管理体系中,但因其对于供应链上下游掌控范围有限,存在信息的不对称和不透明问题,甚至存在信息作假和被篡改的风险。这些问题一方面会增加核心企业的供应链管理向上下游延伸的难度,另一方面使得核心企业对供应链上的实物流、信息流和资金流的合理整合难以保证,导致管理能力和需求的不对称。

图1 文件内容保护的主要模块

3.2 规则制定与文件内容保护模式

对文件内容的保护仅仅局限在打开保密文件的进程是不完善的,还需要防止用户通过系统截图的方式(PrintScreen键)将涉密信息泄漏出去。由于系统截图后会把数据把暂时保存在剪贴板中,因此对此操作的控制可以在剪贴板中完成。所以,在本系统中对文件内容的保护扩大到所有进程:当保密进程打开保密文件后,所有剪贴板的粘贴操作只能完成在保密进程中,即此时只有保密文件能得到剪贴板的数据;针对涉密数据的拖操作,其相应的放操作只能发生于保密进程中,即涉密数据只能在保密文件之间拖放,从而实现涉密的文件内容只能在保密文件中传递。本系统定义了3种文件内容保护模式:

(1)(DISABLEALL):禁止系统内的所有剪贴板和拖放操作;

(2)(PROTETECT):对剪贴板和拖放操作进行限制,保护涉密数据;

(3)(NOPROTETECT):对剪贴板和拖放操作不做任何限制。

在本系统中,规则模板为{涉密文件类型|涉密进程|文件内容保护模式}。保护模式在保密进程与保密文件类型对应的前提下能够有效地保护涉密数据。

3.3 文件内容保护的具体实现

鉴于剪贴板和拖放是基于不同的处理机制,所以对这两种操作采用不同的监控处理方式。

(1)对剪贴板的监控

通过剪贴板复制数据可分为两个独立的操作:复制(或剪切)和粘贴,其中复制(或剪切)由SetClipboardData()函数完成,粘贴由GetClipboardData()函数完成。在本系统中,对剪贴板的监控选择对粘贴操作进行监控即可。有两种方法可以完成对剪贴板的监控:第一种方法,在用户模式挂钩GetClipboard-Data()函数;第二种方法,是在内核模式挂钩NtUserGetClipboardData()函数。由于相对于应用层挂钩,基于内核模式的挂钩具有很多优势,所以本系统选择在内核模式挂钩NtUserGetClipboardData(),完成对剪贴板的监控。首先,查找函数NtUserGetClipboardData()的地址,并保存函数地址,然后用拦截函数代替原函数,在拦截函数里查询要求获取剪贴板数据的进程,即调用函数NtUserGetClipboardData()的进程,若该进程是涉密进程则允许该进程获取剪贴板数据,执行粘贴操作。

在本系统中,对剪贴板实施的监控只是为了对涉密文件的内容进行保护,并且对涉密文件的复制粘贴实施的监控在文件过滤驱动中已完成,因此可以不限制剪贴板对文件的复制和粘贴。进程explorer.exe与系统资源管理有关,即与文件的复制、剪切和粘贴操作有关,因此,在剪贴板保护模式下,需要解除对explorer.exe进程的限制,即若获取剪贴板数据的进程是explorer.exe,允许粘贴操作,从而达到允许文件的复制粘贴的目的。

(2)对拖放的监控

拖放操作可分为两个独立操作:拖操作和放操作。在本系统中,对拖放操作的监控选择其中的一个操作即可。根据两个操作的特性(DoDragDrop()函数在拖操作发生时被调用,RegisterDragDrop()函数在窗口初始化的时候被调用),本系统选择对拖操作进行监控。当DoDragDrop()被调用时,进入一个消息循环,用来监视鼠标和一些简单的消息,此时系统回调dropSource的虚函数QueryContinueDrag()来决定是否继续拖操作,该函数的返回值有3种:1)S_OK,拖动操作继续;2)RAGDROP_S_DROP,放操作发生,完成拖操作;3)DRAGDROP_S_CANCEL,还未发生放操作时,拖操作被取消。

在涉密进程中,对函数DoDragDrop()进行挂钩,替代为MyDoDragDrop()。在函数MyDoDragDrop()中对pDropSource中的虚函数QueryContinueDrag()进行挂钩,替代为函数MyQueryContinueDrag()。在函数MyQueryContinueDrag()里跟踪当前鼠标的位置,得到鼠标所在的窗口句柄,判断窗口所属进程是否为涉密进程,并把判断的结果与虚函数QueryContinueDrag()的返回值进行匹配,使得涉密数据的拖放只发生在涉密进程中。

4 结束语

本文所介绍的透明加密文件系统在保证数据存储安全的基础上,对文件内容的使用和流向进行监控。测试中,以word文档为例,规则设为:{.doc|WINWORD.EXE|PROTETECT},若文档的访问状态合法,系统执行正常的加解密功能,文档的访问结果正常,若文档的访问状态非法,文档无法正常打开,显示为乱码;当涉密文档打开后,剪贴板中数据只能粘贴在涉密进程WINWORD.EXE的窗口中,无法粘贴到其他进程的窗口中,且对文档内容进行拖动时,若鼠标在涉密进程的窗口范围内,鼠标状态为所拖放内容可放下,当鼠标在非涉密进程的窗口范围内,鼠标状态为所拖放内容不可放下,系统运行正常。

虽然该系统基本实现了设计目标,保证数据的存储安全同时防止用户通过系统剪贴板、拖放或截图将涉密的文件内容泄漏出去,但是还可以做进一步完善,如密钥管理。

[1] 顾正义,黄皓.新加密文件系统的研究与实现[J].计算机工程与设计,2009,30(14):3 272-3 277.

[2] Alf Zugenmaier,Sven Lachmund,Dileesh Jostin.Transparent Encryption for External Storage Media with Key Management Adapted to Mobile Use[C].Honolu lu:Computer Security App lications Conference,2009:333-340.

[3] 瞿进.网络终端信息存储安全监控系统的设计与实现[D].郑州:解放军信息工程大学信息工程学院,2007.

[4] 任建华,江国华.终端文件安全保障系统中剪贴板监控技术的应用[J].计算机应用,2005,25(12):86-91.

[5] Volodymyr Sham ray,Apriorit Inc.Forbidding the Clipboard for the specified process[EB/OL].http://www.codeproject.com/KB/clipboard/forbidding-clipboard.aspx,2009-11-11.

[6]Michael Dunn.How to Implement Drag and Drop Between Your Program and Exp lorer[EB/OL].http://www.codeproject.com/KB/shell/explorerd ragd rop.aspx,2002-12-14.

猜你喜欢

粘贴保密进程
多措并举筑牢安全保密防线
《信息安全与通信保密》征稿函
帖脸谱
《猫头鹰》小粘贴
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
A ski trip to Japan
What Would I Change It To
论中国共产党的保密观
保密