透明加密技术的分类比较

从底层技术来看, 透明加密产品可分为采用钩子模式和采用驱动模式的两种流派,两种加密技术由于工作在不同的层面, 从应用效果、开发难度上各有特点。

* 钩子透明加密技术

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

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

钩子透明加密技术就是将上述两种技术组合而成的。通过windows的钩子技术, 监控应用程序对文件的打开和保存, 当打开文件时, 先将密文转换后再让程序读入内存, 保证程序读到的是明文, 而在保存时, 又将内存中的明文加密后再写入到磁盘中。

钩子透明加密技术与应用程序密切相关, 它是通过监控应用程序的启动而启动的。一旦应用程序名更改, 则无法挂钩。同时, 由于不同应用程序在读写文件时所用的方式方法不尽相同, 同一个软件不同的版本在处理数据时也有变化, 钩子透明加密必须针对每种应用程序、甚至每个版本进行开发。目前不少应用程序为了限止黑客入侵设置了反钩子技术, 这类程序在启动时, 一旦发现有钩子入侵, 将会自动停止运行。驱动加密技术基于windows的文件系统(过滤)驱动(FS)技术, 工作在windows的内核层。我们在安装计算机硬件时, 经常要安装其驱动,如打印机、U 盘的驱动。文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。当应用程序对某种后缀文件进行操作时, 文件驱动会监控到程序的操作, 并改变其操作方式, 从而达到透明加密的效果。

* 驱动透明加密技术

驱动加密技术与应用程序无关, 他工作于 w in- dow sAPI函数的下层。当API函数对指定类型文件进行读操作时, 系统自动将文件解密; 当进入写操作时, 自动将明文进行加密。由于工作在受 w indow s保护的内核层, 运行速度更快, 加解密操作更稳定。

但是, 驱动加密要达到文件保密的目的, 还必须与用户层的应用程序打交道。通知系统哪些程序是合法的程序, 哪些程序是非法的程序。驱动透明加密工作在内核层。

驱动加密技术虽然有诸多的优点, 但由于涉及到w indow s底层的诸多处理, 开发难度很大。如果处理不好与其他驱动的冲突, 应用程序白名单等问题, 将难以成为一个好的透明加密产品。

* 两种技术比较

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

表 1钩子透明加密与驱动透明加密比较表

项目 钩子透明加密 驱动透明加密
工作层面 用户层 内核层
工作方式 Hook应用程序和文件类型 接受系统IRP进行处理
与应用程序关联性 直接与程序工作方式相关,对新应用程序加密或应用程序升级可能需要再开发。 与程序工作方式无关,但监控应用程序名单。
加解密可靠性 应用层加解密,大文件易死机。速度慢。 内核层加解密,受windows保护,稳定性较好,速度快。
网络操作能力 不受限制 需要专门处理

开发难度 Hook技术, 相对较容易 驱动技术, 开发难度较大。采用钩子模式开发相对容易, 但由于控制的层面较高, 很多底层的操作难以控制, 和各种应用程序之间的兼容性需要特殊处理。所以相对容易受到应用版本的限制, 一旦应用修改了读写方法, 加密软件必须跟着修改。

采用驱动模式是从更为底层的层面进行控制,可以获得更高的安全性和效率, 但是技术难度很大。底层的操作需要顾及系统的各个层面之间的协调处理, 由于驱动中程序的健壮性更多由程序本身决定, 难以依赖操作系统对错误进行处理, 如果这个驱动存在缺陷或者被某些程序异常终止 (例如出现未预料的错误), 在系统底层无任何保护措施的环境下, 最直接的后果就是系统蓝屏崩溃。