盐城工学院学报(自然科学版)JournalofYanchengInstituteofTechnology(NaturalScience)第17卷第3期2004年9月Vol.17No.3Sep.2004Ξ利用过滤层驱动程序实现移动硬盘加密梁德祥(南京微辰信息技术有限公司,江苏南京210010)摘要:通过对磁盘驱动程序设备堆栈的研究,推演出利用过滤层驱动程序对移动硬盘进行扇区级别加密的实现方法,该方法具有速度快,算法可变,文件系统无关,加密彻底,抵御攻击手段齐全等优点,同时,该方法可以方便的移植到Linux等非Windows系统下。关键词:过滤层驱动程序;加密;解密;DES算法;RSA算法中图分类号:TP311文献标识码:A文章编号:1671-5322(2004)03-0026-04无论在学术界,还是工业界,数据加密解密一直是一个很热门的话题。在学术界,关于加密解密的算法已经有很多从数学上被证明是行之有效的,而且其破解难度极大,比如DES算法,有一些是尚未经过证明的,但是却尚未有破解方法的,比如RSA算法1。在工业界,很多厂商已经把这些加密算法从理论上变成了产品,这些产品有纯软件的,有纯硬件的,还有软硬件结合的。下面来比较和分析一下这些产品所使用的加密方法。1.2.1速度和成本传统的软件加密速度很慢,因为占用了太多的主机CPU的时间片,然而,在主机CPU频率越来越高,甚至出现了超线程CPU的今天,软件加密的速度和硬件加密相比,在某些条件下,已经不是问题,甚至会比普通的硬件加密快很多,如果硬件加密算法比较复杂,比如使用DES,或者RSA,并且不采用DSP,而是采用普通的嵌入式系统的CPU来实现的话,速度会比软件加密慢很多,而采用DSP芯片的开发成本很高,最终转嫁到终端用户身上的成本也是普通客户难以接收的2。1.2.2普通软件加密方法的不足在现有的加密工具中,有下列这些方法:(1)加密分区表或者文件分配表。这种方法很不安全,现在有很多工具在没有分区表的情况下都可以把文件读取出来。(2)对指定的文件或者目录进行加密。这种方法一般是在文件系统上面做文章,但是这需要了解所有的文件系统,当新增加了文件系统类型或者分区类型进行了转换之后,或者到一个不同的操作系统中使用的时候,原来的加密解密算法可能就无法再使用。(3)在采用DES或RSA等复杂度比较高的算法时没有考虑使用现有CPU强大的单指令多1加密1.1加密方法关于硬盘内容的加密,传统上有3种方式:(1)硬件加密,具有速度快,成本很高,难于破解等特点。(2)软件加密,具有速度慢,成本很低,相对比较容易破解等特点。(3)软硬件结合加密,有的把密码存放在一种特定的硬件上,算法则仍然由软件实现,这种方法在本质上说仍然是软件加密;有的把加密算法在芯片中实现,而硬件的启用需要软件的参与,这种方法在本质上说仍然是硬件加密。1.2软件加密方面的一些问题本文将提出一种软件加密的方法,下面着重谈谈软件加密方面的一些问题。收稿日期:2004-05-21作者简介:梁德祥(1974-),男,江苏东台市人,东南大学计算机系硕士。Ξ序的下一层,通过完全接管操作系统对磁盘的读2原理和本文的设想2.1硬盘加密的原理任何加密方法,其原理是相同的,都可抽象为钩子(hook)理论。即在数据从用户界面到磁盘的这个通路上的某个地方,安装自己的处理过程(我们称之为“钩子”),当写入请求到达的时候先把数据经过数学变换,然后再调用原来路径上的处理过程,写入到磁盘,当请求到达的时候,先把数据经过反向变换,然后再传递到上层应用程序。各种加密方法区别就在于这个钩子放置和起作用的位置和作用范围不同,硬件加密的钩子放置在硬盘控制器的固件(Firmware),或专有的DSP中,其作用范围大部分是整个磁盘,软件加密则都是在主机端,有的在文件系统中,有的在系统调用中,有的甚至在用户层应用程序中,作用范围有的写请求,在扇区级别上进行加密解密,其作用范围和硬件加密相同,都是整个磁盘。这个钩子的实现不是普通意义上的简单函数地址替换(在日益成熟的操作系统中通过地址替换几乎很难实现了),而是通过一个完整的过滤层设备驱动程序来实现。由于采用比较底层的驱动程序来实现,可以和操作系统融为一体,速度更快,加密更彻底。这也是本方法和其它加密方法的本质区别所在。3Windows上的实现3.1Windows驱动程序模型以及设备堆栈在Windows驱动程序模型(WDM)中,一个物理设备的驱动几乎都不是依靠...