Skip to content

双缓冲部分的设计

hkx3upper edited this page May 29, 2022 · 21 revisions

1.为什么要使用双缓冲隔离缓存?

单一缓冲时,授权进程读操作后,缓冲内是明文,此时非授权进程再读缓冲,也会读到明文,这样会导致数据泄露。
所以本课题使用双缓冲,授权进程和非授权进程分别使用明文缓冲和密文缓冲,两个缓冲之间互不干扰,相对独立。
如图2-1所示

2.什么是双缓冲?

双缓冲即使用原来的缓冲作为明文缓冲,新建的缓冲作为密文缓冲。主要涉及到密文缓冲的创建与销毁,以及密文缓冲与明文缓冲的同步问题。密文缓冲不允许下发非缓冲写请求到文件系统驱动,它的非缓冲读请求不解密,因而应用程序会显示密文。

2.双缓冲方法的实现方式

缓冲是建立在FileObject->SectionObjectPointer结构体指针上的,如图2-2所示。
本课题在minifilter内的私有密文缓冲指针ShadowSectionObjectPointer的基础上建立密文缓冲,替换掉非授权进程原始的SectionObjectPointer指针;而授权进程仍使用文件系统的原始明文缓冲。
至于为什么使用这种实现方式,可以参考开发文档这一节。

Clone this wiki locally