动态透明加解密技术分析与产品选型

一、常见防泄密技术方法简介:


    随着企业信息化应用的深入,企业员工大部分工作都在计算机上完成,各类报告、报表、设计图纸等重要成果都以电子文件的形式存在,而电子文档很容易通过邮件、移动存储设备等突进泄露,给企业带来了很大的安全隐患。伴随者市场的需求,市面上出现了各类防止电子文档泄密的软件,目的为防止企业内部电子文档流失泄露各种企业内部的机密信息。纵观解密产品的思路不外乎两类:一类产品主要通过权限的设置,对计算机输入输出进行集中控制和管理,并进行定期进行检查和事后审计,实现对企业关键文档进出进行控制,防止未经授权的文档外泄;另一类产品则通过对文档加密的方法,实现即使文档外泄了,未经授权的用户也无法打开的目的。市场上常见的防止文档泄密的技术方法简介如下:

序号

方法名称

实现内容

特点

1

外设控制

控制各种外设的使用防止文件拷贝出去,例如软盘、U盘等, USB存储管理系统、防水墙、外设安全管理系统大致属于此类

在普通情况下可以控制文件外流,内部的部分人员肯定有外设使用权限,文件一旦外流就泄密,过多的外设限制也带来很多麻烦。

2

监控审计

监控客户端的使用状况,例如拷贝文件、发送邮件、使用什么程序等等,将监控信息记录下来备查

仅事后的日志审查,并不能记录下所有的文件外流操作,即使记录下来也是在事情发生之后,无法阻止泄密事件的发生。

3

身份认证

登录计算机时需要经过认证,一般是使用USB KEY加上口令来限制人员对计算机的使用权

可以控制外来人员或无权限人员非法使用计算机,但无法控制作者的泄密行为和计算机失窃后的泄密。

4

无盘工作站

客户端计算机无存储设备,所有的存储都在服务器上,应用程序也从服务器上运行。

客户端的泄密行为能够较为彻底的控制住,无法控制服务器使用人员泄密。对服务器硬件的要求很高,对于一些复杂应用程序很难以这种方式工作。

5

格式转换

将相关的文档转换成某种开发商特有的格式,并提供特有的浏览器来浏览这些文档

可以对文档做一些较细粒度的权限控制,但是只能支持部分程序,且无法控制作者的泄密行为

6

Windows RMS

微软的信息权限管理解决方案,可以控制到文件级更细的权限粒度

较为完善的支持微软的Office及微软出品的一些软件,但是无法支持其他厂家的软件

7

磁盘加密

将整个磁盘全部加密,对使用者透明化不知道,例如Vista下微软推出的BitLock

不区分应用程序,所有保存在磁盘上的文件全部加密,但是也无法控制作者的泄密行为

8

文件透明加解密

将相关程序产生的文件在后台进行自动的加密和解密,对使用者透明化

可以控制作者的主动泄密行为,文件只能在内部自由打开,拿出去就打不开了

 


文档的作者主动泄密是电子文档防泄密工作中最头疼的问题,从对比中可以看到能够控制主动泄密的解决方案包括:方案一,无盘工作站技术;方案二,磁盘加密加上外设控制再加上禁止互联网;方案三:文件透明加解密技术。方案一讲所有电子文档几种存放在服务器上,通过用户管理和策略控制保证文档安全,但因为需要改变企业的IT架构,实施成本较高,而且无法管理离开企业内网的计算机;方案二要控制的内容非常多,不但包括计算机的硬件端口(如:USB、打印端口等),还要封锁用户上网,用户在局域网内计算机间共享可能造成泄密,整体性价比不高,主要的缺点是易用性较差;所以方案三的文件透明加解密技术是近几年较为热门的技术,其主要优点是不影响工作人员原有的所有工作习惯(外设、互联网可以不控制)、不改变硬件架构、较低的成本和较短的实施周期。每个方案都有自己的特点,企业应该根据自身的需求来采用不同的方案。

    以上各类方法的对比如下:

序号

方法名称

硬件架

构改变否

作者获取

保密文件

拔硬盘

保护

成本

实施周期

1

外设控制

偶可

不可以

较短

2

监控审计

可以

不可以

★★

中等

3

身份认证

可以

不可以

★★

中等

4

无盘工作站

不可以

可以

★★★★

很长

5

格式转换

可以

可以

★★★

较长

6

Windows RMS

可以

可以

★★★

较长

7

磁盘加密

可以

可以

★★★

很短

8

文件透明加解密

不可以

可以

较短

    其中,2、5、6项需要性能较高的服务器支持,4项需要性能很高的服务器且每服务器下挂的客户端数量较有限。当然,这些技术方法很可能在一个解决方案中混合使用,例如常见1、2、3项混合。


二、文件透明加解密技术分析


1、主动加密和被动加密:
    主动加密:指作者自己来按照需要对文件进行加密,例如WinRar带口令压缩、给Word或Excel文件设置打开密码等。只针对某些文件夹加密的方式也可以理解为主动加密方式。
    被动加密:与作者的意愿无关,相关文件都会被加密,磁盘加密和文件透明加解密属于此类。以下内容均为讨论被动加密。

2、“动态透明加解密”的含义:
    动态和静态:动态是对文件读写多少就加解密多少,静态是指一次性把整个文件加密或解密。两者的区别在于,动态加密由于不会出现整个文件的明文,相对于静态加密而言更加安全,两者在程序实现上存在区别。
    透明:指使用者看不见、感觉不到加解密的存在,透明加密的实现目标是不对普通用户产生影响,用户在前台的操作习惯无需调整,能有效降低在企业实际应用中的阻力。
    加解密:将文件内容使用某个密钥+某种算法转换成另外的内容,对于普通用户而言,其直观的效果是:在企业局域网中,具有授权的计算机能够打开被加密的文件,而一旦离开了这个环境,文件被打开时显示为乱码,从而防范用户有意无意的主动泄密。

3、透明加解密工作原理分析:

3.1重定向原理:

    重定向指的是在打开文件时,将加密文件拷贝出一个临时文件到一个隐蔽的位置,然后把这个文件解密、打开,保存时再把临时文件加密后覆盖原文件,采用该技术的产品属于静态加密产品。
    采用重定向原理的加密产品,实质上是通过变换文件位置来实现加密的,为了确保明文和密文之间的一致性,必须在每次用户存盘或者系统自动存盘的时候,对整个文件进行一次整体加密和并复制到用户文件原来存储的位置,因此效率较低,且由于在计算机上保存了完整的明文文件,只要跟踪到临时文件所在位置即可能泄密,此外,文件在存储过程中需要多次复制,应用程序兼容性需要验证。

3.2动态加解密原理:

    采用动态加解密原理的加密产品在读取文件时,会将读出到内存的那部分数据解密,写文件时,则将内存中将写入的部分数据加密并下传至存储设备,采用该技术的产品属于动态加密。
    采用动态加解密原理的产品由于只需要对部分文件内容进行加解密,效率较高。但采用该工作原理在应用层没有可行的实现方法,只能 在驱动层中开发,技术实现中的难度很大,开发成本较高。其原因是由于windows操作系统读写文件时,基本采用二种方式,一种方式是使用ReadFile和WriteFile的常规读写方式,另一种是使用CreateFileMapping和MapViewOfFile的文件映射方式,如果应用程序仅用常规读写方式,可以在应用层通过API函数的拦截来进行动态加解密;但在实践中很多程序使用了文件映射的读写方式,映射后文件的读写由系统底层缓存管理器自动处理,在应用层无法控制,例如Office就大量使用文件映射方式,在这种情况下只能在驱动层中进行开发加以控制。

 

4、文件加密状态确认:

4.1加密指定后缀: 

    通过指定后缀加密是指加密产品对需要管理的应用程序生成的某一类文档进行加密,而对其他后缀仍然采用明文。其优点是只加密制定类型的文档,而不影响其它文件,在加密范围上相对较小,系统的稳定性容易提高;缺点是可能产生“另存为其他类型的文档”的泄密漏洞,因为此时存储的结果并不是被指定加密的文件类型。即使把程序可能产生的后缀格式都指定也没有用,因为有很多办法另存出来 ,例如在Word中可以点击另存为然后在文件名栏输入2个双引号("),然后在这2个双引号之间输入任意后缀(例如test.123),那么保存后的文件就是明文的,拷贝出来文件名改回doc后缀就可能导致文档泄密。

4.2加密不区分后缀: 

    加密不区分后缀是指加密产品对指定进程生成的所有文件都进行加密。这种加密方式由于对指定进程产生的任何文件都加密从而堵住“另存为其他类型的文档”的漏洞,可保证不论用户如何将文件另存都不会出现明文文件。其工作原理为指定进程只要发生写操作就加密被写的文件,任何中间文件和临时文件都会被加密,但由于要全面接管操作系统以及各类应用软件对磁盘的写操作,在技术实现上要解决问题很多,可能发生和其他软件争夺控制权的现象。

    加密不区分后缀的透明加密产品开发的层面有两个:应用层和驱动层,应用层只能采用重定向原理+加密指定后缀;驱动层可能为2×2的组合即4种模式,如下表所示:

 

加密指定后缀

加密不区分后缀

重定向原理

重定向原理+加密指定后缀(1)

重定向原理+加密不区分后缀(2)

动态加解密原理

动态加解密原理+加密指定后缀(3)

动态加解密原理+加密不区分后缀(4)

  上表中模式2技术上很难实现,所以实际上驱动层加密一般采用模式(1)-模式(3)-模式(4)。

    部分透明加密产品还可能将加解密操作在应用层和驱动层中混合完成,在驱动层拦截文件打开然后传递给应用层加解密,这种方法和纯应用层开发是一样只能采用模式(1)。

5、加密标记处理

    加密标记是指如何判断一个文件是否加密的关键,也是在做动态透明加解密开发中最为重要的一环,加密标记的正确与否决定了文件是否会丢失、损坏,是必须要保证不能出任何问题的技术关键点。加密标记一般可存放在文件外部和文件内部,存放于文件内部时,又常分为存放在文件头上、文件尾上、压缩在文件内等三类技术方法,相关介绍如下:

序号

标记存储位置

类型

文件变长

方法

1

数据库中

文件外部

文件的加密状态记录在数据库中,判断文件加密状态时读取数据库,缺点巨大,在驱动中是很难访问数据库的,且若数据库丢失则所有文件都可能无法打开了。

2

文件目录中

文件外部

文件的加密状态记录在其所在的目录中,文件所属目录变化时程序需要处理各种细节,且存在记录丢失整个目录文件无法打开的可能性。

3

文件名上

文件内部

将文件的名字加上一个后缀来识别是否加密过且使用技术手段对用户隐藏掉这个后缀,通用性不好且容易被人为不小心去掉加密标记。

4

文件属性里

文件内部

将文件的时间或者其他属性改变一下,例如将时间加上1000年且向用户隐藏掉这个变化,通用性太差且加密标记极易丢失。

5

压缩在文件里

文件内部

最好的思路可惜无法兼容所有的文件,一方面如果文件太小,可能很难进行压缩,对于一些压缩软件产生的压缩文件无法继续压缩等,通用性很差。

6

文件头上

文件内部

在文件头部附加一段内容来记录文件的加密标记,和文件尾的对比见图1

7

文件尾上

文件内部

在文件尾部附加一段内容来记录文件的加密标记,和文件头的对比见图1

    实际上,考虑到整体系统的稳定性和可管理性,文件的加密标记存放在文件内部,更能保证标记的可靠性、恒久性和通用性,而使用重定向原理时由于是静态加解密,加密标记存放位置对此类产品的影响不大。我们这里把使用动态加解密原理时的文件头和文件尾技术进行对比:
    假设一个文件的开头位置是P1,结束位置是P2,加密标记的长度是L,带文件头和带文件尾有不同的状态,然后需要发出一个写操作从Pw1位置写到Pw2位置,此事写操作会超过原有的结束位置P2,如图1

图1 动态加解密时文件头和文件尾对比


    文件头标记的处理方法:仅改变写入位置参数将Pw1= Pw1+L然后加密Pw2-Pw1这段内容并传递下去。
    文件尾标记的处理方法也有两种:一种方法是将L段加密标记复制到内存中,然后加密Pw2-Pw1这段内容并原位置传递下去,再到Pw2的位置把L段加密标记接上去;另一种方法是先到Pw2的位置复制L段加密标记并接上去,然后加密Pw2-Pw1这段内容并原位置传递下去。
 

从以上分析可以看出,在文件尾加标记会导致加长写文件时软件要多执行一个动作,就是移动尾部加密标记的动作,如果完成第一个动作后由于掉电或其他原因未能完成第二个动作,那么文件就会被损坏。不论是加长写文件还是缩短写文件都需要把加密标记不断移动,可能在一个文档的一个保存操作中这种动作会执行几十上百次。
    当然计算机掉电本来就有可能造成文件的损坏,但使用文件头标记不会造成多余的动作,也就意味着使用文件头存放加密标记在文件损坏的概率与文件未加密时是相等的,没有扩大文件损坏的概率。
    还发现为了逃避技术实现上的困难,某些透明产品虽然使用了文件尾加密标记的处理方式,但会在打开文件时去掉尾部的加密标记,关闭文件时再将该尾部标记加上,这种方法是不可取的,因为在用户打开了大量的文件后,如果出现掉电等意外情况,会导致所有打开文件的加密标记全部丢失,从而造成大量文件无法打开,这是企业用户绝对不能容忍的。

三、文件动态透明加解密产品评测基本点


1.可靠性

    在进行各种大量文件操作后,文件是否会出现异常而无法打开,企业可以使用各种常规和非常规的方法来仔细测试;此外透明加密产品是否支持在网络文件系统下各种应用程序的正常工作也可以作为一个考核的要点。

2.稳定性

    安装透明加密产品后,可多次开机、注销、关机看客户端是否正常;还可以安装不同的杀毒软件,检查透明加密产品是否能正常运行;在各种不同的程序进行文件自动加密后,也可以检查是否会造成应用程序异常甚至崩溃。

3.效率

    取出若干文件样本进行测试,分为二类,一类是较大的文件,二是一个目录中有较多的文件,先记录下这些文件在未安装加密软件前的打开窗口中预览、打开、保存等各项操作的时间,然后加密这些文件,安装加密后再来对比这些操作的时间。使用大型的三维CAD装配体来检测是一种比较有效的方法。

4.安全性

    安装透明加密产品后,可将文件编辑后拷贝到未安装加密产品的计算机上,查看是否能够打开;可检查文件打开后,复制粘贴、拖拽、OLE等操作是否受到控制,是否可以从受控程序中将文件内容移到其他程序中(例如:从word中将文档移到excel、写字板中等);将文件使用各种方法另存为任意后缀后拷贝到未安装加密的计算机上,查看是否能够打开;使用注入工具来攻击受控程序看是否能够获得明文文件;文件的加密密钥是否可以自行制定,保证即使加密软件开发商无密钥时拿到加密文件也无法打开。

5.透明度

    安装后按照正常习惯使用,看是否有和普通使用不同的地方,在使用过程中是否足够透明,是否影响原有的工作习惯;是否一个加密文件打开后,其他进程就无法访问,从而影响工作甚至导致一些软件无法协同工作(例如一些PDM软件就要求在文件正在打开状态时检入);是否在多台计算机同时打开共享的同一个文件时仍编辑文件等。

6.可扩展性

    是否支持一些防泄密的外围辅助功能(如:封锁usb、打印端口等);是否可以扩展支持新的操作系统及未来的操作系统(如:是否支持vista等);是否可以扩展加密算法;是否可以对一些OA和PDM等软件进行集成的定制。

    本文提到的一些原理和方法并不能涵盖透明加密产品的全部,对于透明加密这个还在迅速发展的领域,企业在选择产品的时候一定要对自己的需求有全面的把握,牢牢抓住自己的核心需求,充分评估自身的管理水平后,一定能够找到一款适合自己的透明加密产品。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现在很多做透明加解密的初学者都比较困惑,不知从何下手,我也是如此,从什么都不会开始,慢慢肯文件系统内幕,到OSR上面请教,四个月的时间还是收获颇丰。其实真正研究以后会发现,很多都是体力活,要不断的去跟踪文件的操作流程。在这里发一个基于minifilter的透明加解密的驱动源码仅供大家参考,其中也实现了对文件标识的处理,文件标识放在文件尾部。算是抛砖引玉吧。坦白的说,这个代码并不稳定(偶尔与norton杀毒软件会有冲突),但是我觉得整个流程是正确的,可能有些细节还没有考虑清楚,我觉得对初学者还是有一定帮助吧,当然大虾们可以跳过,呵呵。另外,有关加解密算法的代码由于不是我写的,也不好公开,所以我把相关代码用“\\\”给注释掉了(但没有去掉),请大家见谅,不过不会对整个流程产生影响。大家可以重点看一下各个派遣函数的实现。 欢迎大家拍砖,觉得有点意思就顶一下啊,在看代码的过程中如果有什么好的建议,也希望能告诉我。 最后非常感谢XiangXiangRen,zzbwang,neak47等网友在这段时间内对我的帮助。XiangXiangRen的书以及zzbwang的帖子对我完成这项工作有很大的帮助和参考价值,在此谨与大家分享。 编译环境:WDK6001.18002 XP x86 PS: 您可以将附件中的代码进行修改和转发,但转发时请注明出处。 http://bbs.driverdevelop.com/htm_data/39/1001/119736.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值