移动介质管理系统设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
针对移动存储介质的使用特点,提出了一种基于Windows NT的移动存储介质安全管理系统的设计方案,讨论了基于波分复用(WDM)分层驱动模型的实现原理,设计了用于增强身份验证安全性的一次性口令算法,采用3层密钥结构以及改进的加密模式,不仅提高了文件加密的安全强度,也保证了小群组内文件的安全共享。
1 移动存储介质安全管理系统的结构模型
移动存储介质的安全管理依赖于操作系统所提供的安全机制以及对移动存储设备的管理机制,考虑到目前计算机上使用的操作系统大多为Windows系统,Windows NT对移动设备的管理采用基于WDM的分层驱动模型,因此,移动存储介质的安全管理系统必须与Windows NT进行集成才能实现相应功能。该系统包括3个功能模块:主机监控模块、USBKey模块、加解密模块。其结构模型如图l所示。
上述结构设计的主要思想是根据Windows NT的分层驱动模型,通过开发联接在Hub上的过滤驱动程序,使上层应用程序将用户注册口令密文和登录口令传递给Hub过滤驱动程序,在内核模式下完成对用户的身份认证。认证过程中,为了增强安全性,采用一次性口令认证方案,具体方法是用户的登录口令固定,但在内核模式下将其作为一次性口令生成算法的种子,生成下一次需要传递给Hub过滤驱动进行验证的口令。为了实现数据安全存储,在移动存储介质中设置一个安全文件夹,通过开发文件系统过滤驱动对进出安全文件夹的文件进行加解密。加密体制采用3层密钥结构,即私人密钥、大群组密钥、小群组密钥。加密文件时使用私人密钥与小群组密钥的组合(异或而成)作为加密密钥,私人密钥存储在USBKey中,并通过管理程序将其注入文件系统过滤驱动。小群组密钥则采用IDEA算法加密后保存在安全文件夹的扩展属性中,这个IDEA加密算法中使用的密钥为大群组密钥。
2 系统实现技术
根据系统各模块的逻辑关系以及Windows NT系统支持的分层驱动模型和文件系统的结构特征,系统的实现包括在应用层的实现和内核模式下的实现,包括用户管理应用程序(MFileManSys.exe)、极小泄漏的USBKey认证方案、Hub过滤驱动程序(MHubFilter.sys)和文件系统过滤驱动程序(MFileFiher.sys)4个部分。其中USBKey认证是基于挑战一响应模式的双向的、动态的和极小泄漏的认证。
2.1 Hub过滤驱动程序
主机监控模块是通过Hub过滤驱动程序(MhubFiher.sys)实现的,主要功能是验证移动存储介质使用者的身份,确保数据不被恶意拷贝。Hub过滤驱动程序的设计需要创建一个设备,并将这个设备挂接到ttub的设备堆栈中.这样就可以捕获到操作系统发往Hub驱动程序的IRP,根据需要对IRP进行适当地处理,再将其下发到Hub驱动程序。
当用户插入移动存储介质后,Hub过滤驱动程序截取主功能号为IRP_MJ_PNP,次功能号为
IRP_MN_QUERY_BUS_INFORMATION的IRP,在DispatchPnp分发例程中检查合法标志是否为1,如果为1,则调用Hub驱动程序创建该移动存储介质的PDO,同时设置一个完成例程MHub Contml Completion,PDO创建完成后将完成例程中的合法性标志重新设为0。Hub过滤驱动程序的工作流程如图2。
图1系统的结构模型
为了增强静态存储口令的安全有效性,在Hub过滤驱动程序中采用一次性口令算法。为了方便用户操作,由用户自己选择登录口令,并在一次性口令算法中将此作为一个种子,用来生成新的口令。一次性口令算法是基于MD5算法的,具体过程如图2所示。生成新的口令后,将下次口令的验证码以及本次口令加密后返回给用户管理程序,并且随着本次验证过程的结束,彻底删除新口令以及用户的登录口令。
图2 Hub过滤驱动程序的工作流程
2.2文件系统过滤驱动程
加密模块是整个管理系统的核心部分,主要功能是对进出安全文件夹的数据实行透明加解密。加解密模块是通过文件系统过滤驱动程序序以一个DriverEntry例程作为入口,它联接于文件系统驱动程序的上面。除了DriverEntry例程,还包括以下几个例程:
FileFilterCreat()主功能号为IRP_MJ_CREAT,IRP_MJ_CREATE_NAMED_PIPE,IRP_MJ_CREATE_MAILSLOT 的分发例程;
FileFiheControl()主功能号为IRP_MJ_FILE_SYSTEM_CONTROL的分发例程;
FileFiherDeviceIoControl() 主功能号为IRP_MJ_DEVICE_CONTROL的分发例程;
FileFilterAddDevice() 相当于AddDeviee函数;
FileFilterRead() 主功能号为IRP_MJ_READ的分发例程;
FileFilterWrite() 主功能号为IRP_MJ_WRITE的分发例程;
FileFiterClose() 主功能号为IRP_MJ_CLEANUP,IRP_MJ_CLOSE的分发例程。
2.2.1安全文件夹的实现
(1)绑定移动存储介质的卷
移动存储介质一旦被系统发现,就会在文件系统中生成一个卷(Volume),这个过程称为Mounting。文件系统的控制设备对象(CDO)将收到一个主功能号为IRP_MJ_FILE_SYSTEM_CONTROL,次功能号为
IRP_MN_MOUNT的IRP,因此,只有绑定了所有的CDO;才能截获Mount请求的IRP。
DriverEntry例程调用IoRegisterFsRegistrationChange(FSNotification)注册一个回调函数FSNotification,当系统中有任何文件系统被激活或者被注销的时候,注册过的回调函数都会被调用,这样就可以在所有文件系统被激活的时候对其进行绑定。在FSNotification的File FiherAttach To File System Device()函数中,调用FileFiherAddDevice()函数,绑定所有激活的CDO,那么卷Mount的lfuP 也就能捕获到了。
在FileFiheControl()分发例程中,如果IRP的次功能号为IRP_MN_MOUNT,就对新Mount的卷实施绑定。注意,只有在卷Mount过程结束后才能进行绑定,这就需要设定一个完成函数,对于Windows XP系统可以采取事件等待完成的方法,如果Mount结束,在完成函数设置该事件后,再对卷进行绑定,而不是在完成函数中做这件事,因为完成函数的中断级别过高。
(2)对安全文件夹的数据操作
在移动存储介质中统一设定安全文件夹Secure_Folder_Notice,对该文件夹中数据的读写操作,在内核下转化为主功能号分别为IRP_MJ_READ和IRP_MJ_WRITE的IRP,这些IRP中包括读/写卷的偏移地址及读/写长度。文件系统过滤驱动程序中的FileFiherRead()接收到这些IRP后,提取路径,查看是否为安全文件夹的路径,如果是,则先设置一个完成函数,然后直接将IRP下发,待到完成函数设置了事件后,再将IRP中的数据读出,解密并通过完整性验证后将明文返回给应用程序,否则直接下发。File.FiherWrite()接收到这些IRP后,同样先提取路径,如果是安全文件夹的路径,则将数据的杂凑值同数据一起加密后再下发IRP,最终将密文存储到安全文件夹对应的物理磁盘中,否则直接下发。
2.2.2加解密功能的实现