浏览量:0
创建时间:2023-02-16 22:21

应用层和驱动层透明加密技术原理详解

一、透明加密概念

 

       透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。所谓透明,是指对使用者来说是未知的。所有加密过程均为自动和透明,不影响原有工作习惯和管理流程。当使用者在打开或编辑指定文件时,系统将自动对未加密的文件进行加密,对已加密的文件自动解密。一旦离开授权使用环境,由于应用程序无法得到自动解密的服务而无法打开,从而实现数据防泄密的目的。

 

二、透明加密特点

 

       强制加密:安装系统后,所有指定类型文件都是强制加密的;

       使用方便:不影响原有操作习惯,不需要限止端口;

       于内无碍:内部交流时不需要作任何处理便能交流;

       对外受阻:一旦离开使用环境,文件将自动失效,从而保护知识产权。

 

三、透明加密技术原理

 

       透明加密技术是与Windows紧密结合的一种技术,它工作于Windows的底层。通过监控应用程序对文件的操作,在打开文件时自动对密文进行解密,在写文件时自动将内存中的明文加密写入磁盘等存储介质,从而保证存储介质上的文件始终处于加密状态。

 

       监控Windows打开(读)、保存(写)可以在Windows操作文件的几个层面上进行。电脑操作系统定义了4种(0~3)特权级别,或称环(ring),如下图所示。其中0级为最高级(特权级),3级是最低级(用户级)。运行在0级的代码又称内核模式,3级的为用户模式。常用的应用程序都是运行在用户模式下,用户级程序无权直接访问内核级的对象,需要通过API函数来访问内核级的代码,从而达到最终操作存储在各种介质上文件的目的。

 

内核模式与应用模式

 

       为了实现透明加密的目的,透明加密技术必须在程序读写文件时改变程序的读写方式,使密文在读入内存时程序能够识别,而在保存时又要将明文转换成密文。Window允许编程者在内核级和用户级对文件的读写进行操作。内核级提供了虚拟驱动的方式,用户级提供Hook API的方式。因此,透明加密技术也分为API HOOK应用层加密方式和VDM(Windows Driver Model)内核设备驱动层加密方式这两种技术。API HOOK俗称钩子技术,VDM俗称驱动技术。

 

四、应用层透明加密(钩子透明加密)技术

 

       所有Windows应用程序都是通过各种Windows API函数对文件进行读写的。程序在打开或新建一个文件时,一般要调用Windows的Create File、Open File或Read File等Windows API函数;而在向磁盘写文件时要调用Write File函数。

 

       同时Windows提供了一种叫钩子(Hook)的消息处理机制:允许应用程序将自己安装一个子程序到其它的程序中,以监视指定窗口某种类型的消息。当消息到达后,先处理安装的子程序后再处理原程序。这就是钩子(Hook)。

 

       应用层透明加密技术俗称钩子透明加密技术。这种技术就是将上述两种技术(应用层API和Hook)组合而成的。通过Windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。其工作原理如下图所示。

 

应用层透明加密技术原理示意图

 

       应用层透明加密(钩子透明加密)技术与应用程序密切相关,它是通过监控应用程序的读写操作,同时对文件进行自动加密与解密。一旦应用程序改名,则无法挂钩。由于不同应用程序在读写文件时所用的方式方法不尽相同,同一个软件不同的版本在处理数据时也有变化,钩子透明加密必须针对每种应用程序、甚至程序的每个版本进行配置和开发。

 

       目前不少应用程序为了限制黑客入侵设置了反钩子技术,这类程序在启动时,一旦发现有钩子入侵,将会自动停止运行,所以应用层加密很容易通过反钩子来避开绕过。

 

五、驱动透明加密技术

 

       驱动加密技术基于Windows的文件系统(过滤)驱动(IFS)技术,工作在Windows的内核层。我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。当应用程序对某种后缀文件进行操作时,文件驱动会监控到程序的操作,并改变其操作方式,从而达到透明加密的效果。

 

       驱动加密技术与应用程序无关,它工作于Windows API函数的下层。当API函数对指定类型文件进行读操作时,系统自动将文件解密;当进入写操作时,自动将明文进行加密。由于工作在受Windows保护的内核层,运行速度更快,加解密操作更稳定。因与系统内核关联较密切,系统内核的任何变化(如系统更新、补丁安装后)均会对驱动透明加密造成影响,因此驱动透明加密必须对操作系统的每个SP版本进行开发。

 

       驱动透明加密要达到文件保密的目的,还必须与用户层的应用程序打交道。通知系统哪些程序是合法的程序,哪些程序是非法的程序。其系统配置方面的易用性不如钩子透明加密。

 

       驱动透明加密工作在内核层,故其无法进行灵活的权限控制应用,因为权限控制应用大多必须在应用层完成。其工作原理如下图所示。

 

驱动层透明加密技术原理示意图

 

       驱动加密技术虽然控制层次较深,但由于涉及到Windows底层的诸多处理,开发难度较大。如果处理不好与其它驱动的冲突,如应用程序白名单等问题,将难以成为一个好的透明加密产品。因此,目前市面上也只有少数几家公司有成熟的产品。

 

六、两种加密技术比较

 

       两种加密技术由于工作在不同的层面,从应用效果、开发难度上各有特点。下表从几个方面进行了简单比较。

 

比较项目

钩子透明加密

驱动透明加密

工作层面

应用层

内核层

工作方式

Hook应用程序和文件类型

接受系统IRP进行处理

应用程序关联性

基于系统API的变化而改动,和应用程序处理方式无关

与程序工作方式无关,但要监控应用程序名单,这时需要用到应用层技术

加解密可靠性

应用层加解密,大文件操作时速度较慢

内核层加解密,处理大文件速度较快

网络操作能力

不受限制

需要专门处理

开发难度

Hook技术,相对较易

驱动技术,开发难度较大,只有专业的人员可以维护

系统维护

企业维护工作量较小

企业维护工作量较大,需专业人员维护

 

       综上所述,钩子透明加密技术开发和应用难度较小,开发容易,系统维护较容易,运行过程中即使出现Bug也不会影响整个操作系统运行;但其存在技术缺陷,很容易被反Hook技术所破解。驱动透明加密技术开发难度较大,维护工作量也较大,因其工作于操作系统内核层,在运行过程中易影响整个客户端系统运行。

 

       如上所述,任何一种单一技术要达到满足企业所有的复杂需求均是不可能的。同样,钩子透明加密和驱动透明加密两种加密技术也各有优缺点,二者必然在发展的过程中走向融合,取长补短。但正如杀毒软件技术从Hook技术最终走向驱动技术一样,相信透明加密技术也终将归于越来越成熟应用的驱动技术,为广大用户开发出稳定、可靠的透明加密产品来。