当前位置:文档之家› 加密文件系统中缓冲技术的研究

加密文件系统中缓冲技术的研究

加密文件系统中缓冲技术的研究 ◎陈忠贵,舒远仲,吴文俊 

(南昌航空大学,江西南昌330063) [关键词]缓冲技术;加密;文件系统;效率 [摘要]文章对加密文件系统中缓冲的清除技术进行了研究。当加密文件关闭时,调取内核函数,采用对其缓冲中的明文 数据进行清除并非禁用的方法,从而既保障了加密文件系统对文件操作的效率,又保证了文件内容安全,能有效防止文件内 容泄密。 [中图分类号]TP393.08 [文献标志码] A [文章编号】1001-4926(2010)02—0067-05 

Research of Buffering Technique in the Encrypting File System CHEN Zhong—gui,SHU Yuan—zhong,WU Wen—Jun (Nanchang Hangkong Unive ̄ity,Nanchang,Jiangxi 330063,China) Key words:buffering technique;eneryption;file systems;efficiency Abstract:The article studies the removal technology of buffer in Encrpting File System.When the encrypted files al'e closed,the ker- nel function is used and plaintext data is deleted rather than forbidden.The method ensures the efficiency of file operations and docu— ment content security in encrypted file system SO as to effectively prevent the document disclosure. 

计算机普及带来的文件信息安全性问题,成为 信息安全领域中最受关注的热点之一l1j。加密文件 系统是一种将数据以密文形式存储的文件系统。经 加密文件系统加密后的密文即使文件信息被非法窃 取,因没有密钥,得到的也只是无法辨认的乱码,达 到保护信息资源的目的。 由于内存映射文件的存在,难以在文件过滤驱 动中截取映射文件的读写I/O。若不进行缓冲控 制,容易发生数据混乱的现象。如授权进程取到的 数据为加密状态,而非法进程却能获取明文数据。 为避免上述情况发生,在加密文件系统中对文件缓 冲的监控则是一项非常重要和不可或缺的一环。所 以,采用对缓冲中的文件内容(明文)进行删除,即当 文件进程关闭时,对缓冲进行清除。最大程度方便用 户,同时也保证数据的安全,防止文件内容的泄密。 1 相关概念 1.1 Windows文件缓冲 Windows具有巧妙的文件缓冲机制,就是只要 一个文件被以缓冲方式打开过,则其内容的全部或 者一部分就已经保存在内存里了,称这部分信息为 文件缓冲。一般地说,一个文件无论有几个进程在 访问,都只有一份文件缓冲。 应用层的读/写请求大多都是普通的读/写请求 (不带IRP_PAGING—IO、IRP—SYNCHRONOUS 

—PAGING—IO、IRP—NOCACHE),这种请求的特 

点是文件系统会调用CcCopyRead和CcCopyWrite 来完成。这两个函数会直接从缓冲中读数据,若缓 

[收稿日期]2010—04—08 [修回151期]2010—05—19 [作者简介]陈忠贵(1979一),男,南昌航空大学软件学院硕士研究生。主要研究方向:信息安全。 

67 68 第 期 冲中没有,才会转换为分页读/写请求。 图1表示应用程序看到的文件内容、缓冲中的 文件内容和真实硬盘上的文件内容之间的关系。 l应用程序看到的文件内容 ▲ 缓冲写请求l I{缓 ’ r { 文件缓冲中的文件内容 t 真实硬盘上的文件内容 图l 应用程序看到的文件内容、缓冲中的文件内容 和真实硬盘上的文件内容之间的关系 显然,同一个文件的内容被分成了3份。这3 份数据是可以互不相同的,而且他们之间通过4种 IRP进行互相转换。这4种IRP是: (1)缓冲写请求,把应用程序看到的文件内容 拷贝到文件缓冲中。 (2)缓冲读请求,把文件缓冲中的文件内容拷 贝到应用程序中。 (3)分页写请求,把文件缓冲中的文件内容拷 一贝到真实硬盘中。 (4)分页读请求,把真实硬盘中的数据拷贝到 文件缓冲中。 文件过滤可以过滤到全部4种IRP。实际上有 时候还有另外的IRP(比如直接从硬盘读/写数据但 是不给文件缓冲做出贡献的非缓冲读/写请求),在 此暂时忽略,把非缓冲i卖/写请求和分页读/写请求 归并到一起 ¨。 1.2明文还是密文选择 据图1所示,对一个授权进程来说,有以下两点 是确定无疑的: (1)真实硬盘上的文件内容必须是密文。这是 防止信息泄密的要求所致。 (2)应用程序看到的文件内容必须是明文。如 果不是明文,应用程序自然就无法正常编辑文件了。 对一个非授权进程而言,它看到的文件内容必 须是密文。这个说法也是成立的。 南蜃巍官士謦学报 Journal of Nanchang Hangkong Unlversity 自然科学版………・Natural Sciences 加密文件系统中缓冲技术的研究 文件缓冲内容到底应该是密文还是明文,实际 上还没有一个统一的答案。如果文件缓冲内容是密 文,则须截获缓冲读/写请求来进行加密/解密。对 于使用内存映射文件的情况,这就难以处理。所以, 文件缓冲内容为密文的情况一般都只能将不使用内 存映射文件的软件作为授权进程。如果文件缓冲内 容是明文,只需要处理分页读/写请求。而分页读/ 写请求无论是否使用内存映射文件都存在,这样就 能合并处理两种情况(使用内存映射文件或者不使 用)。因此,这里将采用明文作为文件缓冲内容。 当然,更超前的技术是所谓的“双缓冲”_3 J,意 思是授权进程看到的缓冲内容是明文,而非授权进 程看到的缓冲内容是密文。因为两个缓冲同时存在, 互不干扰,执行效率高,但这样的后果是同步困难。 另外,缓冲技术还需要对微过滤驱动 的开发, Windows消息机制 以及PE文件格式有一定的了解。 

2加密文件系统结构层次 加密文件系统设计分内核层(RING 0)和用户 层(RING 3)。在用户层,客户端初始化USBKEY, 设定要附着驱动的分区,再设定过滤条件,包括过滤 目录和过滤进程;然后将该过滤条件传给内核层的文 件过滤驱动。文件过滤驱动根据此条件,动态选择加 解密操作_6]。如图2给出整个系统的结构层次。 初始化USBKEY 

包 叵 

图2加密文件系统结构层次 2ot0年6月 第24卷第2期 

文章阐述的缓冲内容清除技术即在RINGO下 实现。 

3加密文件系统的性能优化策略 NT内核模式开发标准是使用IRP作为与系统 驱动程序通信的基本手段。它的优点是IRP既封装 了上下文所需的详细操作又允许IRP从驱动程序的 众多操作细节中分离出来,该方法在NT分层设备 体系中非常通用。但有相当多的上层操作请求需要 快速响应,此时,上层操作生成的IRP决定整个操作 的成本并会导致系统性能的下降。所以,NT系统引 入的Fast 1/O概念以实现文件内容的缓冲。若打算 提升加密文件系统对文件操作的效率,必须实现对 文件的Cache管理。文件Cache管理又牵涉到文件 系统驱动(File System Driver,FSD)、虚拟内存管理 器、Cache管理器,三者一起为用户提供访问非易失 性存储器的能力。限于篇幅,文章只介绍文件系统 的Cache管理机制及其实现。 3.1文件系统Cache管理机制 文件系统因操作系统而异,但共同目标都是提 高文件系统的执行效率。Windows Cache管理器的 显著优点是允许用户在文件系统缓冲和运行程序使 用物理内存之间保持平衡。文件系统还有一个使用 Cache管理器的重要原因:一个文件可能被标准的 文件系统接口访问,比如读和写,也有可能通过内存 管理器被视作内存映射文件访问;有时两种访问方 式备用在同一个文件上。此时,Cache管理器必须 建立这两种访问方式的桥梁,以确保数据的可靠性。 3.2 Cache管理实现 3.2.1 FAST I/O处理 IRP是1/O请求操作的默认机制,它用于同步 或异步1/O;缓冲或非缓冲1/O;或者分页1/O请求。 但对于缓冲文件的快速同步1/O请求,有一个特定 处理机制:FAST 1/O 。 

加密文件系统中缓冲技术的研究 69 FAST 1/O机制出现的原因是:大部分1/O请求 都是同步和允许阻塞的。在FAST 1/O操作中,数据 在用户空间和系统缓冲之间直接传输,而不通过文 件系统和存储驱动堆栈。当FAST I/O处理例程不 存在时,它会重新发送一个IRP替代。所以,FAST 1/O并不是必须的。FAST 1/O能提高文件系统的效 率原因在于它不用1/O管理器来创建IRP,也不需 要经过驱动设备对象堆栈的处理。 FAST 1/O一般处理过程是:查询文件系统驱动 对象FAST 1/O所对应的处理例程是否存在。若不 存在则返回假,系统重新发送IRP继续实现文件操 作;若该处理例程存在,则直接调用该处理例程完成 该FAST 1/O。 3.2.2文件缓冲清除 显然,对缓冲中的数据控制最简单方法是禁用 缓冲。但该方法将大大影响用户使用文件的效率, 违背缓冲设计者的初衷。本系统为最大程度方便用 户,同时也要保证数据的安全,采用对缓冲中的明文 清除并非禁用。 对内存数据操作涉及到一个非常重要的数据结 构:文件控制块(File Control block,FCB)。众所周 知,当打开一个文件时,内存中存在一个文件对象, 通过文件对象的FsContext域可以获得文件控制块 的信息,如图3所示。 文件控制块 

图3文件对象和文件控制块

相关主题