当前位置:主页>科 研>学术交流>

基于文件系统过滤驱动的多策略加密系统(2)

上述是不存在过滤驱动的文件系统控制流程。如果存在过滤驱动加载到文件系统之上时,控制流程会发生变化,如图2中虚线框所示,I/O管理器发出的IRP包都会先经过过滤驱动的处理再发送给文件系统驱动,而请求得到的数据也需要先经过过滤驱动的处理再返回给应用程序。因此,可以在过滤驱动中使用自定义的例程对数据进行处理,实现加解密的操作。

 
 
图2 文件系统控制流图

2 基于文件系统过滤驱动的多策略加密程序设计

    基于文件系统过滤驱动加密程序包括应用程序和过滤驱动程序。应用程序提供用户界面,完成设置多条加密路径或者指定多个加密文件类型,设定用户权限等功能。过滤驱动则根据接受到的要求信息,对指定的文件进行加解密。过滤驱动的加解密对用户是透明的。
过滤驱动程序的核心是在驱动中定义处理IRP包的处理例程。主要包括: IRP_MJ_CREATE、IRP_MJ_WRITE、IRP_MJ_READ和IRP_MJ_DEVICE_CONTROL。
    (1)FSCreate例程
    FSCreate例程用来处理IRP_MJ_CREATE包。在该例程中,主要完成文件信息的记录以及添加加密标示等功能。当需要用户对文件进行打开或者创建时,I/O管理器就会向文件系统发出IRP_MJ_CREATE包。过滤驱动调用FSCreate例程进行处理时,首先需要获取文件对象的完整路径,以判断加解密路径。在文件驱动中,完整的文件路径分为两个部分:根目录名和路径名。由于在设备对象中不直接保存文件的根目录名而保存的是设备名称(如C盘的名称是“Device\HardDiskVolume0”),因此需要调用ZwQuerySymbolicLinkObject函数将设备名称转换成盘符,然后结合文件对象中保存的路径名称获得全路径名。接下来例程将会判断文件的加密标志是否存在,并根据判断结果对文件对象相应的标志位进行填写。
    (2)FSWrite例程
    FSWrite例程与IRP_MJ_WRITE包相对应,主要对用户需要写入存储介质的信息进行加密处理。为了保证缓存中数据的一致性,例程不能直接对IRP包中Cache空间的信息进行加密处理,而是重新申请一块与Cache空间大小相同的内存空间,将IRP包中Cache空间的信息拷贝下来,作加密处理后再传递给下层设备对象。
    (3)FSRead例程
    FSRead例程与IRP_MJ_READ包对应,主要对用户需要从存储介质读出的加密信息进行解密的操作,处理的过程也与FSWrite例程相类似,但是文件系统在接到读请求时,是通过调用磁盘驱动获取存储信息的,当文件系统接收到IRP_MJ_READ包时,数据还没有到达。过滤驱动需要等待磁盘驱动返回操作成功以后,再对数据进行解密操作。因此需要对FSRead例程定义一个完成例程FSReadCompletion,并在完成例程中完成对数据的解密操作。
    在对较大的文件进行读写时,系统会将文件内容分成多个IRP包进行传送,为了保证前后有效信息的一致性,应尽量选择流加密算法。
   

(责任编辑:adminadmin2008)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

容器是如何让“一切都是代码”成为现实的

容器是如何让“一切都是代码”成为现实的

现代应用的发展在很大程度上要归功于DevOps运动的蓬勃兴起以及该运动所产生的各种自动...[详细]

如何快速掌握一门新技术/语言/框架

如何快速掌握一门新技术/语言/框架

IT行业中的企业特点是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能...[详细]

建高效数据中心有径可循

建高效数据中心有径可循

能耗问题一直是各大数据中心的心头之痛。有数据表明,2015年我国数据中心能耗预计将高...[详细]

2015黑帽大会:网络灾难后 重建IT安全

2015黑帽大会:网络灾难后 重建IT安全

在遭遇网络灾难后重建IT安全似乎是不可能完成的任务,但根据安全专家Christina Kubeck...[详细]

面对DNS劫持 企业移动应用该如何防护?

面对DNS劫持 企业移动应用该如何防护?

DNS(Domain Name System)劫持又称域名劫持,是指对正常的域名解析请求加以拦截,转而...[详细]

返回首页 返回顶部