咨询热线:400-000-3720 中文 | English
安腾加密内核与应用层驱动层加密之比较 发布时间:2011/9/28

       随着透明加密类软件在企事业单位的广泛应用。用户也越来越关心其加密是否真的安全可靠。当使用了加密后,其对性能究竟有多大的影响,是否会让用户在使用过程中明显感觉到变慢。对于透明加密产品而言,其加密所采用的技术原理,往往决定了一个产品 终的整体性能指标。加密内核对于加密软件的重要性,尤如发动机对于汽车,地基对于高楼。

       目前透明加密类软件主要有两大技术流派,一种是基于应用层的ApiHook技术,另一种是基于驱动层的技术。目前市面上大多廉价低端的透明加密软件多采用应用层的ApiHook技术;驱动层技术相对复杂,则多为一些高端品牌厂商采用,所以你了解到的采用驱动层、驱动级内核等技术的产品,属于这一技术流派。

       安腾软件采用了PHOENIX透明加密内核。PHOENIX内核技术是安腾历时十年潜心研发,多项关键技术突破行业极限,融合安腾诸多专利方法和技术。这里我们会分别介绍PHOENIX内核技术与市面上两大技术流派进行分析和对比。

       应用层ApiHook技术对比

       应用层的透明加密技术采用文件重定向技术实现,在打开关闭文件的时候进行处理,通过文件的重定向技术、读取写入等IO接口来实现的加密。也就是在每次打开密文的时候要先把密文的整个文件解密到硬盘上的某个地方,然后使用重定向技术定向到这个没有加密的文件上。

       首先我们来看一下在没有加密软件的时候,Windows程序读取文件的过程。如下图所示:


 
       我们再来看一下使用应用层加密技术后,Windows程序读取文件的过程。如下图所未:


 
       从以上的图例我们可以看到,应用层加密技术不论要读取多少内容,都需要将整个文件完整的解密至硬盘。我们在了解了应用加密软件的工作原理后,我们以PowerPoint软件做一些测试数据。对于PowerPoint这个软件,当他去打开一个100M的文件时,如果需要处理其中的一部分内容,例如1M,为了要读取这1M的内容。他不得不将整个100M的文件读取一遍,然后解密并写到一个临时文件中。然后再从这个临时文件读取1M的内容。而这个解密的过程恰恰作用于整个电脑系统中 慢的设备--硬盘。

      根据上面的原理分析,在操作文件小的时候可能没有感觉,当其在读取大文件的一部分数据时,会带来严重的额外性能损耗。比如你要预览一个大的Photoshop文件时,速度将会变得很慢。

      应用层加密技术长期使用的情况:

      将使用户在打开、保存文件时的速度大大降低。

     频繁的硬盘读写动行将使硬盘磁头一直处于忙碌状态,使其加速老化并导致使用寿命降低。频繁的硬盘读写动行将产生大量的硬盘碎片,如果不经常整理,将使磁盘性能降低,并且在突然停电的时候,分区损坏的可能性增加。

     因为在硬盘上有明文的存在,即便一些加密软件厂商对此明文进行了一定的保护,但要获取他依旧是易如反掌。就象是没有地基的楼房,无论撑多少根竹竿都是无济于事的。

     因应用层加密技术相对简单,兼容性好,能够支持较多的软件产品。目前市场绝大多数的加密软件产品均采用这种技术。但因其在 关键的技术原理上存在着严重的缺陷,所以不可能采用外围的技术产品实现弥补。

     安腾PHOENIX技术与驱动层技术原理及比较

     驱动层透明加密技术是通过Windows提供的可安装文件系统(Installable File System)开发接口写设计一个文件过滤驱动,通过此驱动实现透明加解密功能。由于驱动开发要与windows更核心层打交道,此方面的开发人才比较少,相对开发难度也高。驱动层的透明加密技术由于与操作系统的文件系统结合紧密,加解密效率更高,控制更加密灵活,运行更加稳定。

       
     在看到与驱动层加密技术做对比这个标题的时候,可能坐在电脑前面的你笑了,这还有什么可讨论的,驱动层加密肯定是 好的加密了。当然这可能是人云亦云,也或者你见过的都是廉价的解决方案。本文针对PHOENIX技术与驱动层技术将从扩展性、安全性、稳定性、兼容性和速度5个方面来进行比较。鉴于此文读者可能为非windows的核心技术人员,我们尽可能的用容易理解的语句来描述我的想法。如果您无意了解更多技术细节,可以直接查看文件末尾的评分。

      首先讲一下扩展性,在早期的时候,也就是我们公司刚成立不久。那时候的透明加密仅能针对AutoCAD/MS Office等少数软件。所采用的工作原理也是针对此类软件做定向的开发。当然,这时候要添加新的软件是极其困难的,你必须从头开发,维护也很困难,软件做了版本升级也必须做同步的升级。而采用驱动层加密的方式,因为其挂接了WINDOWS的文件系统,所以他根本不会关心上层是哪个什么软件,只需要按照相应的配置处理就行了。理论上他可以支持所有windows系统下的程序。扩展性大大提高。

     但是,我要说,采用定向开发的厂商很少,现在要么升级了要么淘汰了。实际上任何一个WINDOWS平台下的软件都是通过调用WINDOWS提供的API来完成工作的,所以在应用层下同样能够完成对windows文件系统的接管。理论上他一样能够完成对所有windows平台下软件的支持。

     第二个要讲的安全性,这里面存在着 大的争议。我经常接到一些咨询,当我告诉他说我们的软件是基于PHOENIX内核技术的时候,他会说,“啊,你们为什么不采用驱动层加密,你的软件一定不安全”。对于这样的理解我通常是不做解释的,因为的确是比较难理解,需要一定的技术知识。

     在这里我不想讨论多么高深的技术,而是尽可能简单的,以一些大家都认同的定理来解释这个问题。第一,对于加密来说,其要求是尽可能早加密尽可能晚解密。第二,环节越多出错误的可能越多。

     下图是PHOENIX加密内核工作时的情况,可以看到,他是在 后的时刻才转为明文的。


 
     下图则为驱动层的方案,可以看到,其通过驱动时,已经转为明文了。
 

     此时如果在挂接一个过滤驱动,那么OK,将能够直接得到明文。

     对于一个透明加密系统而言,其核心是对生成的文件进行实时加密。这部分的实现可以在驱动层也可以在应用层。另外为了防止被破解,还需要对诸如剪贴板、OLE插入、抓屏等等行为进行限制处理。而这一部分,则只能在应用层进行。那么,这样看起来,问题就变得简单了,驱动层的透明加密其在驱动层Ring0和应用层Ring3两部分都有可能存在漏洞,都需要做防护。而PHOENIX加密内核的方案则只需要处理Ring3下面的漏洞。就象一根自来水管,经过的环节越多,漏水的机会也就越大。

      第三个要讲的稳定性,当然你一定对这一块很重视,但是我要说,你可能还不够那么重视。因为在真正的实际使用过程中,这才是 重要的,失去了稳定性,神马都是浮云。没有用户想装上透明加密软件后,三天两头会死机蓝屏,或者更糟糕的是突然某一天当你打开电脑,你发现昨天写了很久的文件却无法打开。

     从技术原理上讲,驱动层的方案,因为微软在开发Windows时,并没有考虑过这种类型的透明加密应用(自己防止自己做的文件被自己窃取)。所以这方面的实现就五花八门了,从早期的用数据库来记录文件状态,到后来的清缓存,再到双缓存, 后到现在比较流行的LayerFSD。方案一个比一个复杂,也能解决很多之前方案的问题。但是这种底层的开发终究要面对很多不确定性,因为你没有官方的资料可能参考,无法得到一个确切肯定的基点。你经常不得不通过动态跟踪去了解WINDOWS是怎么运行的,然后在此基础上用巧妙的办法去实现你想要的目的。但是,这种方式是脆弱的,如果用来写一个不计后果的病毒那是可以的。但对于商业应用来说,这是不可取的。同时,这种方法比较容易碰到Windows的Bug,之前06~07年时候我们做驱动开发的时候就深受其害。也许你的代码现在运行的很好,但是微软在某个补丁中修改了他的处理方式,那么大麻烦来了,windows死机蓝屏、文件损坏,问题接踵而来。

     回过来再来看一下PHOENIX加密内核的方案,PHOENIX加密内核采用了自有内存交叉映射和预读和延迟写技术,核突破很多行业技术瓶颈。PHOENIX加密内核是通过对WINDOWS SDK的挂接处理,这里面包括文件系统的核心接口,包括外围的辅助接口如剪贴板、OLE、抓屏、进程创建等等。但这些接口均为WINDOWS 公开的技术,在其每个WINDOW版本中均有相类似的实现,稳定性都能得到保证。由于技术上的一些区别,想要在PHOENIX加密内核上制造一个死机蓝屏,简直比在驱动层下避免蓝屏还要困难。

      第四个要讲的兼容性,他与稳定性经常相伴相生,象一队孪生兄弟。很多时候,为了稳定些,会放弃一定的兼容性。或者为了得到更大的兼容,但却要面临可能更多的稳定性风险。对于开发者总之要在这方面做出一定的取舍。

      我们首先来看文件过滤驱动,对于Windows系统来说,一般会有多个文件过滤驱动,如杀毒软件等,如果你用分布式文件系统,那么有DFS,如果你不幸中了木马病毒,他也可能会装有过滤驱动,如果你用了EFS,那么也一样会产生影响。为了这些,你可能要做出一些变态的修改,或者你干脆就说不支持与这些共存。总之,可以影响到透明加密驱动正常工作的因素实在太多了,并且随着时间推移会不停演变。而采用PHOENIX加密内核方案,这么多复杂的东西全部由系统去完成了。你不再需要去关心这些。只需要专注于自己的问题即可。

      后要讲一下速度,这其实是 没有可讲的,在现今CPU性能严重过剩的情况下,速度上的差距都微乎其微。对于文件驱动来说,只要不是经常去清空缓存,性能基本上和不装加密软件是一样的。而对于PHOENIX加密内核的方案来说,因为采用了具有专利技术的内存交叉映射和预读和延迟写技术,性能同样也不是问题。我们曾经测试过一个100M的PPT,在加密环境和非加密环境下分别打开5次,完全无法测出差距。

       安腾PHOENIX技术与驱动层技术原理及比较

      后,为尽可能直观而简单的描述两种工作原理的表现,特制下表。(注:以下评分均假设加密内核的开发水平达到了理想的状态,不同厂商实际表现会有不同)

 

 

应用层ApiHook技术

驱动层加密技术

PHOENIX加密内核技术

稳定性

★★★★

★★★★

★★★★★

兼容性

★★★★★

★★★★

★★★★★

安全性

★★

★★★★

★★★★

性能

★★

★★★★★

★★★★★

扩展性

★★★★

★★★★★

★★★★★