基于USB的存储设备信息安全防护设计

发布者:DelightfulGaze最新更新时间:2013-10-08 来源: dzsc关键字:USB  存储设备  信息安全防护 手机看文章 扫描二维码
随时随地手机看文章
  0 引言

  计算机和计算机网络已经成为当前企业、政府和其它各种组织的重要信息载体和传输渠道。但是,人们在享受计算机以及计算机网络所带来的方便性的同时,信息安全也成为目前受到广泛关注的问题。美国联邦调查局(FBI)和计算机安全机构(CSl)等权威机构的研究证明:超过80%的信息安全隐患是来自组织内部。内部的安全状况较差,不仅会给攻击者以可乘之机,还会使已构建的安全设施形同虚设,为内部安全违规事件的发生打开方便之门。目前广泛采用的安全设备和安全措施,均侧重于对付外部的攻击、侵犯和威胁,而无法阻止内部不怀好意的员工盗取涉密信息并将其拷贝或传播出去。因此,数据资源的保密以及非法外泄的防范已成为当前迫在眉睫的安全需求。而利用USB存储设备的单向控制技术可对接人计算机的存储介质进行控制,以防止信息被有意或者无意地从移动存储设备泄漏出去。由于用户可以根据需要设定存储设备的使用权限(比如只读或者读写等),因此,该方法既保留了移动设备的方便性,又堵截了移动存储设备可能带来的安全隐患。

  1 单向控制的设计与实现

  本文采用对磁盘驱动器进行过滤的方法来实现USB存储设备的单向控制。该技术以DDK中的filter为原形。采用标准的WDM过滤,可拦截所有对USB存储设备的写操作,从而实现U盘的单向控制。其中过滤器驱动程序是可选择的驱动程序,它可以给设备增加值或修改设备行为,而且,该过滤器驱动程序能服务于一个或多个设备。由于顶层的过滤器驱动程序主要是为某一设备提供增值特征,而低层过滤器驱动程序则主要修改设备的硬件行为。所以,本文选择使用低层设备过滤器驱动程序,来监视和修改磁盘驱动器的I/0请求。

  1.1 驱动程序的基本结构

  一个WDM驱动程序的基本结构包括一组必要的,通过系统定义的标准驱动程序函数,同时还有一些可选的标准函数与内部函数(取决于驱动程序的类型和下层设备)。对于所有的驱动程序,不管它们在附属驱动程序链中所处的是那一层,都必须有一组基本的标准函数来处理IRP。一个驱动程序是否必须执行附加标准函数,取决于该驱动程序的类型和下层设备是控制一个物理设备的驱动程序,还是在一个物理设备驱动程序之上的驱动程序,同时也取决于下层物理设备的属性。控制物理设备的最低层驱动程序比较高层驱动程序拥有更多所要求的函数,较高层的驱动程序一般将IRP传送给较低层的驱动程序来处理。

  下面所列是本驱动程序所需要的标准驱动程序函数:

  (1)DIiveEntry

  该函数可用于初始化驱动程序并设置其他标准函数的人口点。当驱动程序的DriverEntry函数被调用,它将直接在驱动程序对象中设置Dispatch和Unload的入口点,方法如下:


  在驱动程序对象内的DriverExtension中设置它的AddDevice函数的人口点方法如下:

  DriverObject->DriverExtension一>AddDevice=DDAddDevice;

  驱动程序能定义若干Dispatch人口点,但是它只能在其驱动程序对象中定义一个AddDevice人口点和一个Unload人口点。

  (2) AddDevice

  AddDevice函数主要用于创建设备对象,地址在DriverObject->DriverExtension->AddDevice。

  (3)Dispatch

  该函数至少应一个Dispatch人口点。因为要用一个或多个主要功能来编码处理IRP,以得到请求PnP、电源和I/O操作的IRP。[page]

  (4)Unload

  如果驱动程序能动态地被装载和/或者替换,还需要一个Unload人口点,以释放系统资源(诸如驱动程序已分配的系统对象或者内存等)。

  1.2驱动程序的实现

  实现驱动程序时,首先要为设备定义GUID。驱动程序使用设备名和GUID(globallv unique identifiers)来标识不同的物理、逻辑或虚拟设备。PnP驱动程序可注册并激活一个与GUID连接的设备接口,应用程序和其他系统组件则可通过接口对设备进行I/O请求和控制,WDM用于过滤驱动禁止给它们的设备对象命名,所以,要为设备定义GUID。

  其次是应为驱动程序函数选择名字。由于每个驱动程序中都要包含标准的驱动程序函数,因此,应使用一套区别于其他驱动程序的函数命名机制,由于使程序更容易开发、调试和测试。

  此外,还要编写一个为AddDevice、DispatchPnP、DispatchPower和DispatchCreate函数设置入口点的DriverEntry函数,同时要编写一个完成内容的AddDevice函数。这四个内容。第一是调用IoCreateDevice以创建一个独立设备对象:第二是调用IoAttachDeviceToDeviceStack。以把它自己加入设备栈,同时填写PDEVICE_EXTENSION;第三是调用IoRegisterDeviceInterface,并为它的设备暴露一个接口,暴露的接口可为访问该设备的应用程序提供途径:第四调用IoSetDevi.ceInterfaceState,以激活它先前注册的接口。

  至此,过滤设备就可以在DeviceTree中看到了。

  最后,应为IRP_MJ_PNP请求编写一个基本DispatchPnP函数。该DispatchPnP函数必须准备处理具体的PnP IRP,然后为IRP_MJ_POWER编写一个基本DispatchPower函数,再为IRP_MJ_CREATE请求编写一个基本Dispatch Create函数,同时拦截相应的IRP请求,接着再为I/O控制请求编写一个基本DispatchDevCtrl函数,以与应用程序进行通讯和处理具体的控制请求。

  2单向控制关键技术分析

  2.1 SCSI命令的分析

  对应于不同的过滤功能,其需要拦截的IRP也不相同。要对U盘进行单向控制。就需要拦截所有的写操作,使U盘成为只读的。但是,写U盘的时候,发送的并不是通常的IRP_MJ_WRITE请求,而是要分析相应的SCSI命令,对SCSI命令的取得和操作大致有两种。

  第一种是得到当前的SCSI命令,其格式为:


  2.2单向控制的实现

  系统进行写操作时,通常都是先写在缓存区,然后经过一定的延时后,才会写到真正的磁盘中。所以,当拦截到SCSI命令中的SCSIOP WRITE后,虽然系统不会真正的写东西到U盘上,但却要过很久才会提示延时写错误。所以,本文采用了另外一种方法,即用软件实现“带写保护功能”的U盘,其效果与硬件实现的写保护方式一样,从而实现了U盘的只读。其软件实现方法如下:



  2.3  区分硬盘和U盘驱动器

  作为磁盘驱动器的低层设备过滤器驱动程序。在区分硬盘和U盘驱动器时,Device_Ob_iect->DeviceType的值并不能真正区分硬盘和U盘驱动器。这个值对于U盘而言,第一次插入时是0x2d,但是,一旦被虚拟化成磁盘分区后,它将变成07。这和本地硬盘没有任何区别。因此,如果采用IoGetDeviceProperty来获得当前物理设备对象的总线类型的GUID,就往往会导致操作系统出现蓝屏(系统死机)。因为函数调用要求在passive-level执行。而不是dispatch—level。其代码如下:

[page]


  但是,由于符号链接的名称和光盘驱动器的设备类型将保持不变。所以,可以通过修改设备扩展的内部结构,并增加DeviceType项,然后根据符号链接的名称和设备类型来设置:deviceExtension->DeviceType

  该方法对光盘和硬盘以及USB都有很好的支持。其代码如下:


  3  结束语

  本文在分析了磁盘读写技术的基础上,采用对磁盘驱动器进行过滤的方法,给出了基于过滤驱动的USB存储设备的单向控制方法。这种技术的实现能有效解决涉密信息的外泄,是内网安全的一种重要辅助手段。

关键字:USB  存储设备  信息安全防护 引用地址:基于USB的存储设备信息安全防护设计

上一篇:USB数据采集在机车数据分析系统上的应用
下一篇:基于DSP的USB数据传输系统设计

推荐阅读最新更新时间:2024-05-02 22:47

全新AVR MCU结合USB、充电功能
  爱特梅尔现已推出结合了 USB 控制器和高性能模拟功能的全新AVR® 微控制器产品,型号为 ATmega16UA 和 ATmega32U4。这些器件可降低电池供电设备如游戏外设的系统成本。   虽然电池供电设备能够通过USB连接进行充电,然而,现代电池需要复杂的算法来加速和优化充电过程,而USB给电源带来了更多的限制,以致其能够提供的电压和最大电流都很有限。新的AVR器件则可以在优化电池充电的同时提供各项USB功能。其模数转换器可以用于感应终端应用的动作或压力,而高速脉冲宽度调制 (PWM) 则是低成本电机控制的理想选择。   游戏外设比如功能复杂的操纵杆,也需要大量模数转换信道和若干PWM信道,来驱动力反馈电机。这些全新
[单片机]
HOLTEK推出HT68FB240 Low Speed USB Flash MCU
Holtek USB Flash MCU又多了1个新成员I/O型的Low Speed USB 8-bit Flash MCU -- HT68FB240。如之前所推出的HT66FB5x0与HT68FB5x0一样,HT68FB240均提供ICP / ISP / IAP等烧录模式,支持在线更新功能,可高达百万次的擦写次数。HT68FB240适用于鼠标、键盘、Gamepad、电视游戏外围、USB下载型遥控器、USB Key网络安全、有线或无线的计算机外设与消费性产品等。HT68FB240特别考虑到碳膜键盘的应用需求,研发出无需额外增加被动组件便可轻易克服碳膜高电阻值应用问题。 HT68FB240兼容于USB 2.0规范,并符合工规 (-40
[单片机]
深度解析让人又爱又恨的USB Type-C接口
今天撞胆来谈谈USB。为啥说USB Type-C呢?因为近日风口浪尖的USB Type-C连爆隐患。最近新款MacBook曝出了充电线充电隐患,可能导致笔记本无法充电,苹果不得不发出声明为用户更换全新的USB-C充电线;无独有偶,2015年底谷歌工程师发现一款热卖的Type-C数据线会彻底损坏Chromebook……     理工男基地   不过话说回来USB联盟本来就是一个些许混乱的联盟组织,具体怎么混乱呢,听撞胆娓娓道来。但是,本人并不想唱衰USB,毕竟它还是个好东西,并且在电子设备的历史长河中(其实不过几十年)为数据接口统一做出了历史性的贡献。    
[嵌入式]
USB转串口转换器在自动化仪器仪表的应用
            USB转串口 不难理解,电脑与设备COM口的数据转换,从而实现数据通讯。为计算机没有串口提供了一个方便快捷的通道。       USB串口线的广泛应用于工业自动化,仪器仪表、单片机等。在工控行业,对于USB转RS232或者USB转RS485串口线的质量和功能要求非常高,如系统兼容性,抗电压,防静电等功能。       HighTke HU-04 USB转RS485/422串口线工控行业工程师最爱一款USB串口线,这款产品具有以下特点:       1.采用原装英国FTDI芯片,超强兼容Win7/Win8/Android/2000/xp/vista/CE/Linux/M
[嵌入式]
小电流充电器可为USB-单节电池系统提供备份
引言 本方案为低功耗应用解决了一个非常特殊的电池备份问题。当12VDC电源中断时,用户需要一个集成方案,为备份电池提供充电和电源切换。当电压下降至3.0V时,尤其需要一个断开电池的途径,这里不考虑电量计管理问题。 应该说市场上有大量方案可以解决负载供电和充电问题。然而,这里讨论的设计非常容易实现,而且可以独立工作,无需微控制器,设计灵活、成本低。该方案采用模拟电路实现,无需编程。占用非常小的PCB面积,可满足空间受限应用的要求。 该设计的灵感来源于射频(RF)系统。实际上,该电路对于任何低功耗移动装置(例如,定期发射无线信号的装置)非常有用。大多数USB充电器支持4V-7V供电,高于7V的输入可能损坏电路。本设计在输入电压低于
[电源管理]
小电流充电器可为<font color='red'>USB</font>-单节电池系统提供备份
STM32-USB之Buffer Description Table
一. stm32的USB接口每个端点对应两个分组缓冲区,其地址与范围位于分组存储区。 从STM32的数据手册中存储器映像- 寄存器组起始地址看到: (注意地址范围大小为1024,APB1按32BIT对齐访问,但此SRAM是由256个16BIT字组成) 这512BYTE的SRAM便是分组存储区;而Buffer Description Table(缓冲区描述表)则用于定位与划分各个端点的缓冲区 缓冲区描述表同样位于分组存储区,其地址偏移由分组缓冲区描述表地址寄存器USB_BTABLE决定。 二. ST提供了的USB库程序,其中USB复位函数XXX_Reset()包含了缓冲区描述表的建立。 复位代码一般有若干个类似的函数: SetE
[单片机]
STM32-<font color='red'>USB</font>之Buffer Description Table
英特尔向 Linux 6.5 提交 USB4 Version 2.0 初步支持
7 月 4 日消息,去年 9 月,USB Promoter Group 宣布了 USB4 Version 2.0 标准,可使用 USB-C 数据线实现高达 80 Gbps(10GB/s)的传输速度,并能够在一个方向上处理 120 Gbps 的数据,而在另一个方向上处理 40 Gbps 的数据。 英特尔现在已经为 Linux 6.5 内核提供了 USB4 v2 的初始支持,并在其新的 Intel Barlow Ridge 控制器上进行了初步启用。 英特尔工程师 Mika Westerberg 与众多 Linux 工程师一起参与了 USB4 v2 的启动工作,并启用了他们的 Barlow Ridge 控制器。 初始支持包括
[手机便携]
英特尔向 Linux 6.5 提交 <font color='red'>USB</font>4 Version 2.0 初步支持
USB数字音频解码768KHZ DSD512 CT7601
USB数字音频芯片支持最高可达768Khz/DS512,低功耗高性能,兼容性好,Hi-res高清音频解码。 CT7601 USB数字音频芯片PCBA板方案 2个播放端口,1个记录端口 播放0:8通道I2S, 6通道DSD, 2通道SPDIF 播放1:2通道I2S, 2通道DSD, 2通道SPDIF 记录:8通道I2S, 6通道DSD, 2通道SPDIF 播放端口支持标准/左对齐格式,主模式。 记录端口支持标准/左对齐,主/从模式。 音频传输 PCM支持高达768K/32位通过USB, I2S, SPDIF端口。 DSD(PDM)通过DSD(PDM)端口支持1x/2x/4x/8x带宽。 DSD(本机)支持1x/2x/4x/8x
[嵌入式]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved