透明加密技术是近年来针对企业数据保密需求应运而生的一种数据加密技术。所谓透明,是指对使用者来说是透明的,感觉不到加密存在,当使用者在打开或编辑指定文件时,系统将自动对加密的数据进行解密,让使用者看到的是明文。保存数据的时候,系统自动对数据进行加密,保存的是密文。而没有权限的人,无法读取保密数据,从而达到数据保密的效果。
自WindowsNT问世以来,微软提出的分层的概念,使透明加密有了实现的可能。自上而下,
应用软件,应用层APIhook(俗称钩子), 文件过滤驱动,卷过滤驱动,磁盘过滤驱动,另外还有网络过滤驱动,各种设备过滤驱动。其中应用软件和应用层apihook在应用层(R3),从文件过滤驱动开始,属于内核层(R0).数据透明加密技术,目前为止,发展了3代,分别为
第一代APIHOOK应用层透明加密技术;
第二代文件过滤驱动层(内核)加密技术;
第三代内核级纵深加密技术;
第一代:APIHOOK应用层透明加密技术
技术及设计思路:应用层透明加密技术俗称钩子透明加密技术。这种技术就是将上述两种技术(应用层API和Hook)组合而成的。通过windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。应用层APIHOOK加密技术,特点是实现简单,缺点是可靠性差,速度超级慢,因为需要临时文件,也容易破解。但由于直接对文件加密直观感觉非常好,对于当初空白的市场来讲,这一旗号确实打动了不少企业。
第二代:文件过滤驱动加密技术
驱动加密技术是基于windows的文件系统(过滤)驱动技术,工作在windows的内核层,处于应用层APIHook的下面,卷过滤和磁盘过滤的上面。设计思想是建立当应用程序(进程)和文件格式(后缀名)进行关联,当用户操作某种后缀文件时对该文件进行加密解密操作,从而达到加密的效果。
内核层文件过滤驱动技术,分IFS和Minifilter2类。IFS出现较早,Minfilter出现在xp以后。两者的区别可以理解为VC++和MFC的区别,IFS很多事情需要自己处理,而Minifilter是微软提供了很多成熟库,直接用。由于windows文件保存的时候,存在缓存,并不是立即写入文件,所以根据是否处理了双缓bug,后来做了些细分,但本质还是一样,都是问题的修正版本而已。但由于工作在受windows保护的内核层,运行速度比APIHOOK加密速度快,解决了很多问题和风险。
文件过滤驱动技术实现相对简单,但稳定性一直不太理想。
第三代:内核级纵深沙盒加密技术
之所以叫内核级纵深沙盒加密技术,主要原因是使用了磁盘过滤驱动技术,卷过滤驱动技术,文件过滤驱动技术,网络过滤驱动(NDIS/TDI)技术等一系列内核级驱动技术,从上到下,纵深防御加密。沙盒加密,是当使用者操作涉密数据的时候,对其过程进行控制,对其结果进行加密保存,每个模块只做自己最擅长的那块,所以非常稳定。加密的沙盒是个容器,把涉密软件,文件扔到容器中加密。而这个容器是透明的,使用者感觉不到它的存在。,
第三代透明加密技术的特点是,涉密数据使用前,先初始化涉密沙盒,沙盒加密一旦成功,之后所有的数据都是数据实体,不针对文件个体,所以无数据破损等问题。特点是速度快,稳定,但技术相当复杂。
第一代,第二代本质都是采用的针对单个文件实体进行加密,如a.txt内容为1234, 加密后变成@#$%% +标记。@#$%%是把原文1234进行加密之后的密文。而标记的用途是用来区分一个a.txt文件是否是已经被加密。当系统遇到一个文件的时候,首先判断这个标记是否存在,如果存在,表明时被系统加密过的,则走解密读取流程,如果不是加密的,就无需解密,直接显示给使用者,只是当保存的时候,再进行加密,使其成文密文+标记。
这就带来一个巨大的风险:如果是一个较大文件,加密过程中发生异常,标记没加上,那么下次读这个文件的时候,因为没有读到表记,而采用原文读取,然后再加密,那么这个文件就彻底毁坏了。这个现象在第一代APIHOOK透明加密技术的产品中特别明显,在第二代文件过滤驱动产品中,因为速度变快了,使文件破损发生概率减低了很多,但并没有本质解决这个问题。
另外,由于是进程和文件后缀名进行关联,也造成了一个缺陷:很多编程类软件,复杂制图软件的编译,晒图等操作,都是很多进程同时操作某个文件,这个时候进行进程和文件关联显然太牵强了,因为进程太多了。即使进行关联,多个进程交替访问文件,加密解密混在一起,极容易造成异常。所以才会出现VC等环境下如不能编译,调试等。
其他方面,版本管理无法对比,服务器上存放的是密文(服务器存密文,是个极大的风险,目前没有哪家大企业敢这么做,毕竟太依赖加密软件,持续性没有了),大文件速度慢等,一系列问题,无法解决。
而第三代内核纵深加密技术是在前者2个基础之上发展而来的,每个过滤层都只做自己最擅长的事情,所以特别稳定,速度快,性能可靠,不存在第一代和第二代的问题。由于内核级纵深透明加密技术要求高,涉及技术领域广,极其复杂,开发周期长,所以国内的能做开发的厂商不多。目前,深信达公司推出的SDC机密数据保密系统,给人一眼前一亮的感觉,其产品是第三代透明加密保密技术的典型产品,其产品主要特点是:
1)采用了磁盘过滤,卷过滤,文件过滤,网络过滤等一系列纵深内核加密技术,采用沙盒加密,和文件类型和软件无关,沙盒是个容器。
2)在操作涉密数据的同时,不影响上外网,QQ,MSN等。
3)保密彻底,包括网络上传,邮件发送,另存,复制粘贴,屏幕截取等,特别是屏幕保密,做得非常炫。
4)服务上存放的是明文,客户端存放的是密文,文件上传服务器自动解密,到达客户端自动加密。服务器上明文,减少了业务连续性对加密软件的依赖。
5)不但可以针对普通文档图纸数据进行保密需求,同时更是研发性质的软件公司(游戏,通讯,嵌入式,各种BS/CS应用系统)源代码保密首选。
附件1:加密技术对比:
代次 | 第一代 | 第二代 | 第三代 |
名称: | APIHOOK应用层透明加密技术 | 文件过滤驱动层(内核)加密技术 | 内核级纵深加密技术 |
设计思路 | 应用层透明加密技术俗称钩子透明加密技术。这种技术就是将上述两种技术(应用层API和Hook)组合而成的。通过windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。 | 驱动加密技术是基于windows的文件系统(过滤)驱动(IFS)技术,工作在windows的内核层。我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。当应用程序对某种后缀文件进行操作时,文件驱动会监控到程序的操作,并改变其操作方式,从而达到加密的效果。 | 客户端在涉密的场合,启动一个加密的沙盒,沙盒是个容器,把涉密软件,文件扔到容器中加密。而这个容器是透明的,使用者感觉不到它的存在。采用最先进的磁盘过滤驱动,文件过滤驱动,网络过滤驱动等内核级纵深加密防泄密技术,每个模块只做自己最擅长的那块,所以非常稳定。 |
优点 | 直接对文件加密直观感觉非常好,对于当时空白的市场来讲,这一旗号确实打动了不少企业。 | 由于工作在受windows保护的内核层,运行速度较快。 | 单个文件,复杂文件,大文件,源代码开发复杂环境等,都特别适合。 |
缺陷 | 应用层透明加密(钩子透明加密)技术与应用程序密切相关,它是通过监控应用程序的启动而启动的。一旦应用程序名更改,则无法挂钩。同时,由于不同应用程序在读写文件时所用的方式方法不尽相同,同一个软件不同的版本在处理数据时也有变化,钩子透明加密必须针对每种应用程序、甚至每个版本进行开发。 | 1) 复杂软件经常会很多进程同时操作某个文件,如果这个时候,一个进程加密,另一个进程不加密,交替访问文件,极容易造成异常。如不能编译,调试等。 2) 涉及到windows底层的诸多处理,开发难度很大。如果处理不好与其它驱动的冲突,应用程序白名单等问题。 | 无此类不稳定问题。 |
进程关联 | 和进程绑定,容易被冒充。另外很多软件进程非常多,如VC++的MFC/ATL的界面和socket编程,编译的时候,关联进程非常多,无法对应。 | 和进程无关,无冒充问题,因为都在容器中。 | |
大文件破损 | 200M以上文件,极容易破损。 | 无文件破损问题。 | |
源代码保密 | 无法针对源代码开发人员保密,具体表现在,影响调试,影响版本管理,版本工具对比乱码等问题。 对于一般员工的操作有效,但无法针对源代码开发人员保密。 | 适合源代码开发。有大型成功案例。 | |
复杂图纸软件保密 | 复杂图纸一般都是进程多,文件大,此产品问题太多了。 | 复杂图纸适合DLP+ | |
软件版本升级 | 当软件升级如VS2005->2008,AutoCAD升级等,都需要重新设置。 | 不需要设置,因为和进程无关。 | |
破解难度 | 非常容易破解,网上工具太多了。 | 很难破解,即使是懂电脑的程序员。 |