背景


当前,在企事业单位局域网中,由于员工日常工作大都是通过计算机网络进行,工作中积累的重要文件,如客户资料、技术秘密、源代码、大量的图纸、技术文档等资料,这些资料对是公司的命脉和竞争砝码,如果这些资料被非法流出,将会对公司的稳健经营造成重大的损失,甚至会使某些新产品的研制计划夭折,因此加强对图文档的保密就变得非常重要了。

而由于员工日常工作都是通过计算机网络进行,并且处于工作需要而大都接入了网络,公司的电脑也没有做加强的防护,因此现在的泄密途径很多,比如用笔记本电脑、U盘、USB硬盘等移动存储设备就可以将图纸全部拷贝带出,或者用邮件也可以将资料外送,或者通过互联网都可以将资料发送到外部。


除了研发资料外,公司其他一些资料也是机密的,比如我们的财务报表、供应商资料、客户资料、项目资料、成本及价格资料等等都是需要保密的。

近几年,因为企业机密被泄露而导致严重损失的例子经常见诸报端、网络。很多单位已经意识到通过部署专门的电脑文件加密软件来保护单位内部的重要资料。一方面可以防止通过各种管道将单位的机密信息泄露出去,另一方面对重要文件进行高强度加密,即便泄露出去也无法解密打开。


当前加密软件产品概况及用户需求


透明加解密产品从实现的技术来说,分为两种,一种是应用层加密,一种是驱动层加密。在下面的文字里,我们尽可能的用通俗易懂的语言把这两种加密方式阐述清楚,但请您注意,这仅仅是介绍性的文字,它并不是技术性文档,它的描述并不一定非常精确,请您谅解。

在windows平台上,所有应用软件不管是word,excel还是solidedge,autocad它们都是运行在windows之上的。任何一个应用软件保存数据的流程都可以用以下简化模型来描述:应用软件需要保存数据→将数据告诉windows→windows将数据告诉磁盘(或是其他介质)的驱动程序→驱动程序将数据真正写到磁盘上(或其他存储介质)。那么,如果我们需要对该应用程序保存的数据进行透明加密,我们有两个时间点可以选择:

在应用程序将数据交给windows之前,即windows收到的数据就是加密的数据。在windows将数据交给磁盘驱动程序之前。   

应用层加密是基于操作系统之上的加密方式。这样做的好处是,它完全不需要理会windows底层无比复杂足以让人崩溃的处理方式,它仅仅需要关心应用软件的行为。如下图:

图:应用层加密示意图


应用层加密必须为每个应用程序都去开发一个加解密模块。这是因为,每种应用软件读写数据的行为多多少少会有点差异。同样的软件升级,例如word从2003升级到2007,该子模块必须重新开发。现在各种专业软件层出不穷,很多软件仅仅应用在特定的领域,为每种软件开发加密模块也是不现实的,开发成本,测试成本巨大。而且您愿意接受在购买了加密软件之后每年还需要支付二次开发费用吗?从技术上说,HOOK技术是基于应用层加密的软件的技术基础。鉴于HOOK技术被绝大多数病毒和流氓软件所应用。微软明确的表示在64位机器的操作系统上不再支持现有的绝大多数HOOK。也就是说,目前基于应用层加密的防泄密软件在64位平台上必须重新开发。所以我们认为,基于应用层加密在可扩展性,可持续性方面的劣势决定了它不是一个好的选择对象。

驱动层加密是在操作系统的内核底层驱动完成加密动作的。这样做的好处是,无论是哪种应用程序,加密模块都可以捕获到它的读写行为,但是它为此付出的代价是必须去处理好windows底层那种非常复杂的处理方式,并且与之结合,浑然一体。众所周知的是windows不像Linux公开所有代码,关于其底层处理的技术文档非常少。因此很多驱动层加密程序往往没有办法处理好,造成一种值得大家警惕的现象:演示的时候,非常完美,测试的时候仅仅有点小问题,等正式使用的时候,问题不断--文件损坏,与杀毒软件冲突--频繁蓝屏。虽然说应用层加密也会损坏文件,但是客观的说,驱动层加密造成文件损坏的概率要大于应用层加密。

图:驱动层加密示意图


驱动层加密的典型流程示意图,从技术上说,驱动层绝对是领先应用层的。从企业的应用成本上来说,驱动层加密的优越性也是远远大于应用层的。因为您一旦选购了驱动层加密产品,无论是你企业采用什么样的应用软件,驱动层加密都可以应付自如而不需要二次开发,其可扩展性、优越性是显而易见的。但是驱动层容易和其他底层软件冲突,容易造成文件损坏却是不争的事实!我们经过无数次痛苦的折磨之后发现,原来造成文件损坏和与底层加密软件冲突的根源并不是驱动层这个技术架构的问题,而是windows的缓存机制。文件缓存一定会带来文件经常会被二次加密或部分加密,甚至不可逆转的损坏这类问题。具体的技术原理可以写一本书,就不在这里赘述。可以确信的是:目前没有任何方法可以彻底的清除缓存。退一万步说,即便是有这样的方法,你知道彻底清除缓存意味着什么吗?意味着每次读文件都要从物理磁盘去读,意味着你运行软件的速度会比目前慢10倍以上。

以上的文字大致的帮您分析了一下如何选择一款透明加密软件,我们希望您明确的是:如果您选择了应用层加密,您就必须意识到您可能没有办法对所有的应用软件做透密加解密处理,您可能继续需要为这个产品的二次开发投入金钱,同时偶尔还会坏几个文件。如果您选择了驱动层加密,请您一定要严密的测试,考察,看这个产品是否会损坏文件。