摘 要:介绍一种企业环境中电子文档的保护架构—FSPA 的设计和应用。此架构以文件服务器为中心,当文件被上传到文件服务器后,被保护的文件内容就不会离开服务器,用户与被保护文件的交互方式与在本机相同。此架构可有效防止企业内部电子文档的泄密,并提高了系统透明性。
关键词:信息保护访问控制 终端服务 数据版权管理
引言
目前,在电子政务网和企业内部网中,很多文件以电子文档的形式进行分发和存储。这些内容很容易复制、修改、二次传播,造成敏感信息的泄密,也是内部网所面临的最大安全风险。因此,我们需要相应的技术来阻止对数字内容未经授权的访问和使用。
网络安全传统的方法就是在公司内部网和外部网之间设防火墙或入侵检测系统。但当敏感信息被访问,或传递到授权用户后,这些方法则不能起到保护作用。因为在许多情况下攻击者可能是授权用户。其它解决方案,如限制使用者计算机的媒体移动,可能会给使用者的工作环境带来不便,也增加系统和维护的工作量;或通过检测邮件信息过滤内容,但如果当敏感数据被攻击者加密或混淆,则不能有效的检测出;现存的DRM 系统在保护企业敏感文件方面也具有较强的作用,但不同的是授权用户接触到的是文件的真实内容,一旦攻击者通过客户端的权限检测验证,则该文档的信息仍可能会被泄密[1]。
一种防止敏感文件信息泄露、保护内部网中信息安全的新的解决方案就是以文件服务器为中心的文件影子化保护架构(File Shadowed Protection Architecture, FSPA),在这个架构中数据和使用者被分配到多个安全层次中的一个,数据只能从低安全级别到高于数据安全级别的使用者访问。通常,FSPA 把安全标签[2]加入文件、程序和其他的计算机资源中,以便数据不能够直接地从高安全级流动到低安全级别。数据的物理存储在文件服务器上,客户端请求访问某一文件时,返回的只是带有标签的文件路径、地址及相应的权限,对Email 发送敏感文件时,其附件也只是加密的文件路径及权限信息,再通过此路径及权限信息在服务端运行相应的应用程序,而把结果显示在客户端,所以在客户只是文件的“影子”,并非真正物理存储内容。
1 系统架构
以文件服务器为中心的 FSPA 由服务端和客户端组成。公司的文件通常存储在一个或多个文件服务器中,以Html,PDF,Postscript 和MS Office 等文件格式。对UNIX/LINUX 操作系统可通过登陆NFS 访问文件,对于Windows 的操作系统通过网络可共享访问到文件报务器上的文件。
一个用户创建文件并传到文件服务器中,文件的作者或者系统管理员可对文件的访问权进行定义。为了本地的应用,终端用户需要拥有对文件的操作权,如阅读、复制等权限。
FSPA 一个关键思想就是防止敏感文件的字节到达终端用户的计算机上,一旦用户上传了敏感文件到服务器,则无论用户怎么入侵敏感文件的应用程序,则应用程序都是运行在文件服务器上,只是把结果显示到要求的终端用户的计算机上,虽然文件运行在文件服务器上,用户仍能正常操作,仿佛是运行在本地计算机上,包括通过键盘和鼠标的操作。因为FSPA 不但存储敏感文件而且运行操作这些文件的应用程序。远程显示机制保证即使像“复制粘贴”这样的操作也不能脱离文件服务器。
在一个企业内部,可以有一个或多个服务端,每一个终端用户的机器就是一个FSPA 客户端,一旦文件被上传到服务器,则永久物理存储在服务器中,在基于基层操作系统的标准授权及访问控制机制下,用户可以不改变使用习惯读写FSPA 文件服务器中的文件。FSPA 架构支持“虚拟票据”机制。此机制中用户实际不复制敏感文件字节,而是把敏感文件路径及权限信息等作为Email 的附件发送,邮件接收者用此票据去访问FSPA 服务器上的文件。用一个虚拟票据访问邮件过程对用户是完全透明的。同样,想复制敏感文件到本地计算机,则任何的“复制品”实际也是一个虚拟票据。
客户端需要显示文件内容,因此在客户端要防止通过抓屏方式泄密是很必要的。另外,在终端显示的文件中,嵌入含使用者身份的水印,防止攻击者通过复制或其它方式,如照相等,进行攻击。当敏感信息被发现泄露后,水印可作为法律依据。虽然这些方式不能绝对地保护,但能最大程度上减少信息通过显示屏被泄露的机会。
FSPA 同样支持不能连到服务器上的移动用户。用户把敏感信息文件在许可申请后带出网外。这种情况下,敏感文件的保护与现存的企业中DRM 系统的保护机制相似。
所有对敏感文件的操作,都是以服务器为中心,如上传、修改、删除、打印、发邮件、申请传出等,整个过程都在监控、记录及控制之下。 (图片)
图1 FSPA 系统架构 图 1 说明FSPA 的系统架构,由一个服务器及4 个客户端(包括一个移动客户端)组成,当客户端访问存储在FSPA 服务器上共享的敏感文件时,间接地去响应运行在服务端的应用程序,并将结果返回到终端Session,这些终端包括Windows 终端服务及Linux 终端服务,本论文中主要介绍Windows。
2 系统应用
FSPA 服务器主要有3 个功能:文件过滤、提供服务及访问控制、执行session 请求。分别由以下3 个模块完成:文件过滤器,FSPA 控制模块,FSPA 执行模块,如图2 所示。(图片)
图 2 FSPA 服务器 当一个敏感文件被访问时,服务器只返回这个文件的加密路径、权限等文件信息。文件过滤器的作用就是控制I/O 请求访问敏感文件。其访问过程的算法如下:
① 文件过滤器接受阅读文件的I/O 请求后,加密文件路径、权限等文件信息,并输出文件路径信息(而不是文件内容);
② 客户端接收到加密文件路径后,启动Windows 终端服务session;
③ 发送加密文件的路径给服务器上的执行模块;
④ 执行模块打开目标文件,FSPA 控制模块与执行模块及文件过滤器进行交互完成访问及监控。(图片)
图3 远程FSD 及FAPA 文件过滤器 2.1 文件过滤器
对文件的访问是通过文件过滤器 (File System Driver,FSD)来完成的,如图3 所示。其交互过程如下:
① 客户端 FSD 接到访问服务器的终端I/O 请求后,把这些请求通过CIFS(Common Internet File System)协议传给服务端的FSD;
② 服务端 FSD 监听并接收网络连接的命令后,返回命令给本地FSD[3]。
Window 设备驱动由一系列的层式对象栈组成,文件I/O 请求传到IRP(I/O Request Package),IRP 在设备驱动的顶层,其直接完成请求或传到下一层进行处理。在现存的驱动,如本地FSD上,Windows 提供了易定义的接口来加载过滤器。因此,FSPA 很容易在本地FSD 上加载过滤器去响应被保护文件所存储的磁盘容量。
文件过滤器位于服务端 FSD 的下面,如图3 所示,它过滤所有来自服务端FSD 的IRPs,如阅读、创建文件等。从FSPA 服务器的本地系统传递IRPs 到更低层的不需做任何修改,因此,文件过滤器不影响服务端应用程序的正常运行。
为了防止敏感文件内容在服务端泄露,FSPA 文件过滤器有一个专用缓冲区,用于存储每个文件唯一的FSPA 标签、文件所在服务器IP 及文件路径名。缓冲区的数据通过RC4 加密后,被复制到IRP 的输出缓冲区。
2.2 FSPA 访问控制模块
FSPA 访问控制模块是运行在本地系统帐户上的NT 服务的应用,主要功能是:持续监控从敏感文件的创建到文件删除的整个过程;检测激活终端的数量,防止同时激活过多的终端;加载本地FSPA 的过滤器,并与I/O 控制的APIs 的过滤器进行交互。
因为 FSPA 客户端访问的只是敏感文件的“影子”,所以,文件被访问后,服务器要区别文件是“影子”内容,还是真内容是非常重要的。例如,一个用户可能从FSPA 服务器上通过浏览器复制文件A,以文件B 的名称保存在本地文件夹,以后可能用B 覆盖了A,那么覆盖后的内容就是文件A 的一个“影子”内容。FSPA 控制模块从敏感文件的创建就监控文件,在文件目录中当新增加一个敏感文件时,目录监控器就分出一个线程,去检查文件的FSPA 标签,如果没有标签,目录监控器批准文件内容;否则,就是一个“影子文件”。目录监控器根据文件路径,并重新提取真正保护的文件内容。当用户企图用自己的“假”内容去更换真正的文件内容时,FSPA 过滤器会加上一个文件后缀,如“.docf”在原文件名中,因此,改写不会发生,文件内容仍可在重命名的备份中恢复。
FSPA 采用自主访问控制(discretionary access control)和身份验证(NTLM)的授权方式对敏感文件的访问进行管理,减少了维护所有者权限策略的复杂性。
2.3 FSPA 执行模块
FSPA 执行模块从终端session 开始,基于虚拟通道与客户端进行信息交互。此虚拟通道是面向session 传输协议[4],在FSPA 服务器的一个终端内FSPA 执行者是一个能初始化的其它应用程序。在执行管理模块及它的子处理完成后,这个终端session 自动终止。在终端session 中,应用程序的处理是不允许访问其它计算机上的远程网络的共享。
一旦接到访问请求,执行模块解密,读取文件名及路径,传给FSPA 访问控制模块。由访问控制模块分配相应的权限,并启动合适的文件应用程序,监控这个session 一直到不运行子程序或窗口关闭为止。执行模块负责接收客户端键盘数据的更新,随之用一个隐藏窗口去加载相同的数据到服务端键盘,在2.5 描述键盘响应的细节问题。
2.4 客户端控制
FSPA 客户端主要包括3 个部分:Shell 扩展,客户端服务控制,FSPA 文档处理器,如图4所示。Shell 扩展是基于COM 接口技术的外壳扩展,使得基于32 位的Windows 应用程序可以通过多种方式来增强系统所提供的操作环境。当用户打开一个文件时,FSPA 客户端能一直像类似DRM 控制器一样来控制和跟踪文件。其算法如下:(图片)
图 4 FAPA 客户端 ① Shell 扩展通过对加密文件头,与FSPA 标签字段进行比较,检查文件内容是否是一个影子内容;
② 如果是,则是FSPA 服务器上的受保护的文件,读取文件头路径,启动FSPA 文档处理器;
③ FSPA 文档处理器从文件头内容中解密服务器的IP,及客户访问控制中的用户帐号,通过远程桌面插件连接WTS。这个插件只是用于建立连接和给WTS 发送简单的消息。客户端还增加一个DLL 去提供虚拟通道更全面的功能,包括从共享内存中加密文件路径并把这个路径给FSPA的执行模块;
④ 如果不是,则视为普通文件在本地打开。
2.5 键盘控制
Windows 终端默认下支持服务端和客户端的键盘映射,因此,从服务端复制加密文件的数据到客户端就比较容易了,所以要防止这种键盘泄露。
通过监控键盘窗口链及具体的窗口消息,客户端窗口监控键盘内容的改变。当客户端的DLL被通知键盘捕获来的消息时,通过事件对象读取新的键盘内容,并发送给执行管理模块,使它来处理相应的服务端键盘的数据。
当前不足之处是,存在多个不同格式的键盘对象,所以很难从内存复制所有不同数据结构的数据。目前从客户端到服务端,只允许用户复制和粘贴纯文本的数据。
2.6 水印保护
水印可作为版权保护和法律纠纷的依据。当客户端访问加密文件时,可嵌入用户的身份到保护文件的内容中。不过这种保护性较弱,当水印被删除时,如通过OCR 软件删除,则失去水印的保护作用。
2.7 离线访问
对离线访问可通过文件迁出的方式,FSPA 服务器提供基于持久文件保护技术。当客户端迁出保护文件时,实际上迁出的内容包括执行文件解密的程序包、加密文件内容及访问的权限。内容权限可通过标准权限表达语言,如XrML 来表达。从被保护文件初次打开开始,程序包就开始运行,并通过DLL 加载了防屏幕捕获功能。离线访问保护是商业系统中的重要功能,但比起现存的DRM 系统来,FSPA 系统在这方面还不够强。
3 系统测试
我们在相同配置的 PC 机下测试比较,当在FSPA 服务器上的物理内存大于20MB 时,则启动延迟在本地执行与在FSPA 机制下执行相差平均1s。当连接终端的Session 数量增加到30-40时,起动延迟几乎保持不变。只有当FSPA 服务器上的物理内存小于20MB 时,由于大量的内存交换,使起动延迟则大大增加到5s,甚至更长。(图片)
图 5 FAPI 服务器上的内存使用 在 FSPA 服务器上CPU 的使用也与内存消耗相关,FSPA 服务器上的物理内存大于20MB 时,当启动或终止终端Session 时,CPU 使用每次增加50%~90%,但很快降到较低的平均值上;但当物理内存小于20MB 时,CPU 的使用达到最高值。
随着终端 Session 的数量增加,内存的占用也相应增大,如图5 所示,每增加一个Session,内存的占用增加约为20MB。所以在保证服务器有一定的物理内存的情况下,不会影响企业内部网的正常使用。
4 结束语
FSPA 保护内部文件的关键在于防止用户(授权和非授权)访问敏感文件的物理字节,这一点不同于大多数DRM 系统对企业文件的保护架构,使用上也不改变公司正常的工作习惯,具有较高的安全性及透明性。而且,这种架构与现存的其它IT 架构来比,能大大减少解密和管理成本,具有一定的实用价值。在以后的研究工作中,需要对当前FSPA 在应用上做进一步完美,要能读取服务端-客户端之间不同类型的键盘数据。通过使用防屏幕捕获、嵌入水印等多种综合技术,提高客户端的鲁棒性。
参考文献
1 E.John Sebes and Mark Stamp.Solvable Problems in Enterprise Digital Rights Management. January 2004. http://home.earthlink.net/~mstampl/papers/DRMsebes.pdf
2 Rick Smith.The Challenge of Multilevel Security.Cryptosmith LLC.October 2003.
3 David.Solomon and Mark E.Russinovich.Inside Microsoft Windows2000.Third Edition.Microsoft Press.
4 Using and Understanding APIs for Terminal Server.White Paper.1997 Microsoft Corporation.
12/31/2010
|