首页 磁盘文件透明加密技术

磁盘文件透明加密技术

举报
开通vip

磁盘文件透明加密技术磁盘文件透明加密技术 李伟光 郭辉 四川理工学院自动化与电子信息工程学院 四川 643000 摘要:磁盘文件透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。本文叙述了磁盘文件加密技术的原理和分类,并针对Windows操作系统下内核磁盘透明加密技术的关键技术和解决方法进行了详细的叙述和说明。 关键词:透明加密;钩了;进程环境控制块;内存描述符列表 引言 随着IT技术的飞速发展,很多企业办公、设计、管理日益电子化。这些电子文档存储在计算机硬盘中,一旦被拷贝或者通过网络传播出去,在另一台计...

磁盘文件透明加密技术
磁盘文件透明加密技术 李伟光 郭辉 四川理工学院自动化与电子信息工程学院 四川 643000 摘要:磁盘文件透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。本文叙述了磁盘文件加密技术的原理和分类,并针对Windows操作系统下内核磁盘透明加密技术的关键技术和解决方法进行了详细的叙述和说明。 关键词:透明加密;钩了;进程环境控制块;内存描述符列表 引言 随着IT技术的飞速发展,很多企业办公、设计、管理日益电子化。这些电子文档存储在计算机硬盘中,一旦被拷贝或者通过网络传播出去,在另一台计算机上就可用同样的应[来自wwW.lw5u.cOM]用软件打开这些电子文档,造成信息泄密。透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。应用透明加密技术,用户在指定的计算机上操作这些文件时会自动对这些文件进行加解密,不需要输入密码,用户在环境内使用密文不影响原有的习惯,但文件已经始终处于加密状况。一旦离开环境(指定的计算机),文件将得不到解密服务,将无法正确打开,从而起到保护电子文件知识产权的效果。 1 磁蕊文件加密技术原理 磁盘的透明加密主要方法有3种,第一种是BIOS接管方式,这种方式在计算机刚刚启动的时候就接管BIOS中磁盘操作的中断,类似还原卡、还原精灵这类产品就是利用这个原理工作的。这种方式工作在最底层,工作方式不够灵活,很难根据需要配置对哪些类型文件的文件进行加密。所以一般很少用在磁盘透明加密的的应用中。 第二种是HOOK(钩子)技术。所有Windows应用程序都是通过Windows API函数对文件进行读写的。程序在打开或新建一个文件时,—般要调用Mndows的CreateFile或OpenFile、ReadFile等Windows APt函数;而在向磁盘写文件时要调用WriteFile函数。通过截获这些函数的操作,就可以接管文件的操作。但是Windows的安全保护机制限制了一个任务不能随便的访问另一个任务的进程空间。利用Windows提供了一种叫钩子的消息处理机制,允许应用程序将自己安装一个子程序到其它的程序中,以监视指定窗口某种类型的消息。当消息到达后,先处理安装的子程序后再处理原程序。这就是钩子。钩子透明加密技术就是将上述两种技术组合而成的。通过Windows的钩了技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的足明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。钩子透明加密技术与应用程序密切相关,它是通过监控应用程序的启动而启动的。一旦应用程序名更改,则无法挂钩。监视钩子程序运行在Windows应用层,很容易被操作人员发现,通过结束进程的办法关闭保护进程,使保护程序失效。 驱动加密技术基于Windows的文件系统(过滤)驱动(IFS)技术,工作在Windows的内核层。我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。当应用程序对指定类型的文件进行操作时,文件驱动会监控到程序的文件读写操作,通过分析判断是否是需要保护的数据,如果是需要保护的数据就进行加密或者解密工作,从而达到透明加密的效果。驱动加密技术与应用程序无关,他工作于Windows的内核层。当API函数对指定类型文件进行读操作时,系统自动将文件解密;当进入写操作时,自动将明文进行加密。由于工作在受Windows保护的内核层,运行速度更快,加解密操作更稳定。驱动加密技术虽然有诸多的优点,但由于涉及到Windows底层的诸多处理,开发难度很大。如果与其它驱动的冲突、程序操作有错误, 造成系统崩溃甚至还会丢失用户数据文档。 2 驱动透明加密的相关技术 驱动透明加密技术工作在Windows的内核层,根据Windows内核驱动分层设计的原理,Windows内核是一个分层驱动模型(图1)。 每一个物理设备对应着多个驱动设备对象,而这些驱动设备对象是按照分层结构堆叠的。每一层只能同上面层和下面层进行服务请求交互,这些服务请求信息被统一的设计为IRP(I/O请求包)。每一个驱动设备对象处理IRP完一次,完成一次服务。 这些设备对象根据目的的不同,被设计为不同的功能。Windows的分层驱动程序模型允许用户开发第三方驱动程序,并通过loAttachDeviceByPointer或者IoAttchDevice函数将自己的设备驱动程序插入到这个分层结构中,这样我们的第三方驱动程序就有机会截获IRP,然后通过分析IRP,针对自己感兴趣的IRP包进行相应的处理。这种第三方驱动程序称为过滤驱动程序。 2.1 磁盘过滤驱动程序的挂接 根据上面叙述的原理,我们可以设计一个文件系统的过滤驱动程序来完成我们的功能。首先需要把过滤驱动程序挂接在某个硬盘分区之上,可以在过滤驱动程序的入口点DriverEntry例程发送一个IRP,请求驱动程序来挂接到硬盘上。该过程的函数调用流程为:由ZwCreateFile得到硬盘分区的设备句柄,再用ObReferenceObjectByHandle得到对应的FILEOBJECT指针(Windows把每个设备当作一个文件来看待,并有一个对应的FILEOBJECT结构描述其属性),然后调用IOGetRelatedDevieeObjeet得到硬盘分区设备对象指针,然后调用IOCreateDevice来构造代表过滤器的一个设备并为它指定驱动程序也就是过滤驱动程序。最后调用IOAttachDeviceByPOinter把该设备挂接在硬盘分区设备上。 挂接上设备链后,我们的驱动就可以截获对文件的IRP请求包。根据我们磁盘过滤驱动的要求,我们只对打开文件、读文件、写文件的IRP进行处理,对于其他IRP请求,我们则统统直接传递给下层驱动程序处理。 2.2 被保护程序的判别 当通过API函数CreateFile对文件进行打开操作时候,驱动程序需要判断打开的文件是否属于需要保护的文件。我们是通过进程内核的PEB(进程环境块:Process Enviroment Block)对象来查看当前发出该请求的进程。Windows操作系统为每一个进程在内核都创建了一个PEB对象。该对象的ImageFileName成员变量就是进程的名字。驱动程序可以调用内核函数PsGetCurrentProcess获得运行上下文环境的PEB对象,然后根据进程名就判断是否是我们需要保护的进程。需要注意的,不同版本的W[来自www.Lw5u.com]indows的PEB中ImageFileName的偏移量是不确定的,为此,我们通过内核函数PsGetVersion判断Windows的版本号来决定ImageFileName的偏移量。表1是常用Windows版本的ImageFileName偏移量。 2.3 文件读写操作 对于文件读写请求,内核有两种数据传送方式, 一种是缓冲I/O的方法,这种方式由Windows操作系统自动分配内核态的内存,然后将用户传递的读写磁盘数据拷贝到这个内核态UserBuffer中,然后传递给驱动程序,驱动程序处理的是这个内核态的内存数据。驱动程序处理完毕后返回用户态程序的时候,由Windows操作系统再将这个内核态的内存数据拷贝回用户态内存。显然这种方式存在着内核态和用户态内存的拷贝和状态的切换,对于文件操作这种数据量比较大的操作,速度显得很慢了。另一种是使用直接I/O,这种方式减少了Windows的数据复制。这种方式是通过Windows直接传递一个内存描述符列表(Memory descriptor list, MDLl来实现的,这个描述符列表是描述用户空间缓冲区,驱动程序可以通过 相关函数操作该MDL来得到用户写磁盘数据。在实际的文件操作中两种方式的操作都要支持,通过判断IRP包中的MdIAddress和UserBuffer成员变量来判断的。如果IRP. MdIAddress不为0,则说明是采用的MDL方式,则可以通过内核函数MmGetSystemAddressForMdISafe 来获得到需要的读写磁盘数据。如果IRP的UserBuffer成员变量不为0,则说明采用的缓冲I/O的方式,我们可以通过直接IRP的UserBuffer获得需要的读写磁盘数据指针。 2.4 加密种子的选择 对于数据加密算法,我们需要能标示计算机“身份”的信息作为加密种子,这样即使文件被拷贝走,如果加密种子不对也无法解密数据。我们可以选择CPUID、网卡序列号、硬盘序列号作为标示计算机“身份“惟一性的参数,这些参数可能在有的计算机上的设备并不支持,比如说对于老式计算机的CPU和硬盘就没有序列号,所以需要几种方式都需要支持。 使用汇编指令CPUTD可以获得CPU的信息,包括CPU类型、型号、制造商信息、商标信息、序列号等信息,其中序列号是生产时的惟一序号,具有惟一性,可以用来做加密种子。 硬盘序列号是硬盘在生产的时候为每个硬盘分配的惟一标示号,要取得这个序列号我们可以在驱动层读取硬盘相应的寄存器得到信息,这种方式比较复杂繁琐,幸好绝大多数磁盘的设备驱动程序都支持通过发送相应的IRP取得磁盘序列号,其中IRP中功能号IoControlCode为Ox0007c088,可以通过向硬盘驱动发送这个IRP就可以获得磁盘序列号。 网络底层的物理传输过程中,是通过物理地址来识别主机的,物理地址一般也是全球惟一的,网卡在生产的时候都在网卡上固定了一个MAC地址,通过GetAdapterslnfo函数可以获得网卡的MAC地址。 3 总结 计算机信息技术飞速发展,越来越多的电子信息被保存在计算机上,由于电子信息传播的十分方便,很容易造成信息的泄密。磁盘透明加密技术通过对保存在计算机上的信息进行实时的加解密,即不影响计算机合法使用者的使用,又防止了机密文件被拷贝,对于保护企业、政府、机关的机密数据有很好的推广价值和应用前景。本文对磁盘透明加密中的关键技术问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 进行了分析和阐述。 参考文献 [1]谭文,邵坚磊,天书夜读:从汇编语言到Windows内核编程[M].电子工业出版社.2009( [2]马林,数据重现——文件系统原理精解与数据恢复最佳实践[M].清华大学出版社.2009( [3]谭文,杨潇,邵坚磊(寒江独钓-Windows内核安全编程[M].电子工业出版社(2009.
本文档为【磁盘文件透明加密技术】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_721103
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-09-03
浏览量:3