- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
usb存储设备单向控制的研究与实现
USB存储设备单向控制的研究与实现蔡慧梅 乔国平
(江南计算技术研究所 无锡 214083)
??? 摘 要 介绍了USB存储设备单向控制的研究与实现,并对实现中用到的关键技术进行了详细地阐述。
??? 关键字 Windows驱动程序模型??? I/O请求包 物理设备对象
??? 1 引言
??? 计算机和计算机网络已经成为企业、政府和其它各种组织的重要信息载体和传输渠道,但是在享受计算机以及计算机网络所带来方便性的同时,信息安全也成为目前 受到广泛关注的问题。美国联邦调查局(FBI)和计算机安全机构(CSI)等权威机构的研究证明了:超过80%的信息安全隐患是来自组织内部。内部的安全 状况较差,不仅会给攻击者以可乘之机,还会使已构建的安全设施形同虚设,为内部安全违规事件的发生打开方便之门。目前广泛采用的安全设备和安全措施,均侧 重点于对付外部攻击和侵犯的威胁。但无法阻止内部不怀好意的员工盗取涉密信息拷贝或传播出去。因而数据资源的保密和非法外泄的防范逐渐成为当前迫在眉睫的 安全需求。USB存储设备的单向控制可以有效地解决这个问题。USB存储设备单向控制技术对接 入计算机的存储介质进行控制,防止信息被有意或者无意从移动存储设备泄漏出去。用户能够根据需要设定存储设备的使用权限(比如只读或者读写等),既保留了 移动设备的方便性,又堵截了移动存储设备可能带来的安全隐患。
??? 2 设计与实现
??? 本文采用对磁盘驱动器进行过滤的方法实现USB存储设备单向控制。以DDK中的filter为原形,采用标准的WDM过滤,拦截所有的对USB存储设备的 写操作,实现了U盘的单向控制。过滤器驱动程序是可选择的驱动程序,给设备增加值或修改设备的行为。过滤器驱动程序能服务于一个或多个设备。顶层过滤器驱 动程序典型地为一设备提供增值的特征,低层过滤器驱动程序典型地修改设备硬件的行为。所以本文选择使用低层设备过滤器驱动程序,监视和修改磁盘驱动器的 I/O请求。
??? 2.1 驱动程序基本结构
??? 一个WDM 驱动程序的基本结构包括一组必要的系统定义的标准驱动程序函数,加上一些可选的标准函数与内部函数,这取决于驱动程序的类型和下层设备。所有的驱动程序, 不管它们在附属驱动程序链中所处的层,都必须有一组基本标准函数以处理IRP。一个驱动程序是否必须执行附加标准函数取决于该驱动程序的类型和下层设备, 是控制一个物理设备的驱动程序,还是在一个物理设备驱动程序之上的驱动程序,也取决于下层物理设备的属性。控制物理设备的最低层驱动程序比较高层驱动程序 拥有更多要求的函数,较高层驱动程序一般传送IRP给较低层驱动程序处理。
??? 下面列出了本驱动程序所需要的标准驱动程序函数,
??? (1)DriveEntry:初始化驱动程序并设置其他标准函数的入口点
??? 当驱动程序的DriverEntry函数被调用,它直接在驱动程序对象中设置Dispatch、和Unload入口点,如下所示:
??? DriverObject-MajorFunction[IRP_NJ_xxx]=DispatchXxx;
????????????? :????????????? :
??? DriverObject-MajorFunction[IRP_NJ_yyy]=DispatchYyy;
????????????? :????????????? :
??? DriverObject-DriverUnload=Unload;
??? 在驱动程序对象内的DriverExtension中,设置它的AddDevice函数的入口点,如下:
DriverObject-DriverExtension-AddDevice=DDAddDevice;驱动程序能定义若干Dispatch入口点,但是它只能在其驱动程序对象中定义一个AddDevice入口点,和一个Unload入口点。
??? (2)AddDevice:创建设备对象,在DriverObject- DriverExtension-AddDevice
??? (3)Dispatch:至少一个Dispatch入口点,用一个或多个主要功能编码处理IRP,以得到请求PnP、电源、和I/O操作的IRP。
??? (4)Unload:如果驱动程序能动态地被装载和/或者替换,还需要一个Unload入口点,从而可以释放任何系统资源,诸如驱动程序已分配的系统对象或者内存。
??? 2.2 驱动程序的实现
??? (1)为设备定义 GUID。驱动程序使用设备名和GUID(globally unique identifiers)来标识不同的物理、逻辑或虚拟设备。PnP驱动程序注册并激活一个与GUID连接的设备接口,应用程序和其他系统组件可以通过接 口对设备进行I/O请
文档评论(0)