首页 > 范文大全 > 正文

高速U盘病毒隔离器的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇高速U盘病毒隔离器的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

收稿日期:2010-12-24;修回日期:2011-01-26。

作者简介:张毅(1970-),男,重庆人,教授,主要研究方向:物联网; 杨校权(1984-),男,四川成都人,硕士研究生,主要研究方向:嵌入式系统、物联网。

文章编号:1001-9081(2011)07-2008-03doi:10.3724/SP.J.1087.2011.02008

(1.重庆邮电大学 通信与信息工程学院,重庆 400065; 2.重庆邮电大学 计算机科学与技术学院,重庆 400065)

()

摘 要:U盘的普及使U盘病毒繁衍迅速,针对信息系统安全保护的需要,设计出一种U盘病毒隔离器。该隔离器具有隔离Autorun病毒、防止PC的数据通过U盘泄密、防止PC中的病毒感染U盘的功能。隔离器能够快速捕获到U盘与主机之间所有底层数据,在此基础上,隔离器中的微控制器(MCU)通过分析、审计和过滤流过隔离器中的底层数据来实现上述功能。经实际检测,该设计能够实现上述功能。

关键词:U盘;病毒隔离器;Autorun病毒;海量存储类单批量传输

中图分类号:TP309文献标志码:A

Design and implementation of U disk virus isolator with hi-speed

ZHANG Yi1,YANG Xiao-quan2

(1.College of Communication and Information Engineering,Chongqing University of Posts and Telecommunications,Chongqing 400065,China;

2.College of Computer Science and Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)

Abstract: The popularization of U disk makes virus from U disk spread fast. In order to protect the safety of information system, the authors designed a U disk virus isolator with three functions, firstly isolating Autorun virus from U disk, secondly preventing the PC's data from stealing by U disk, and thirdly preventing the PC's virus from spreading to U disk. The isolator can quickly capture all the data between the U disk and the PC, then the Micro Controller Unit (MCU) of the isolator analyzed, filtered and audited the data transport between U disk and computer to implement those three functions described above. Through actual measuring, it is found that this design can implement those three functions successfully.

Key words: U disk; virus isolator; Autorun virus; mass storage class bulk-only transport

0 引言

随着信息技术的飞速发展,U盘已成为日常工作中计算机用户最为常用的文件交换工具。但是U盘在提供便利的同时,也为病毒寄生和繁衍提供了天然的温床。目前的U盘病毒,不仅能感染PC,更有称为“摆渡”的木马病毒秘密窃取计算机中的重要文件。

虽然目前的杀毒软件能发现部分U盘病毒,但如果采用硬件方式隔离病毒,会具有更好的安全性和易用性。因此在一些行业和部门(比如税务部门),更愿意采用硬件方式隔离U盘病毒。

国内的浪潮集团有限公司开发出了U盘病毒隔离器(以下简称隔离器),隔离器是安装在PCUSB端口上的一个嵌入式终端设备,作为PC和U盘交换数据的中转设备。隔离器主要运用Linux嵌入式操作系统来实现对U盘的操作,避免了U盘类病毒利用Windows的自动运行功能在用户服务器上进行病毒的自动传播,运用此装置可有效地避免一些U盘病毒的传播,大大提高了数据的安全性、可靠性[1]。但是该设计存在两大缺陷:

1)隔离器采用Linux嵌入式操作系统无疑增大了隔离器自身软件负载,增加了设计成本,降低了U盘与PC之间数据传输效率;

2)使用该隔离器之前需要在PC上安装特定的驱动程序和软件,使其在通用性和易用性上受到影响。

本文提出的隔离器实现方案能够克服浪潮集团有限公司的隔离器的两大缺陷。因为彼此的设计理念不相同:本文提出的解决方案不采用任何操作系统,隔离器通过分析、过滤和审计U盘与PC之间的所有底层数据来实现。本文设计的隔离器能彻底隔离U盘中的Autorun病毒,隔离器具备U盘只读功能开关:如果通过隔离器上的按键开启U盘只读功能,则还能防止PC的数据通过U盘泄密、防止PC中的病毒感染U盘。经实际测试,该设计具有隔离效果好、软件负荷小、通用性好、使用方便等优点。

1 系统方案

为了兼容高速、全速、低速USB传输标准,USB设备端和USB主控端的接口功能通过高速USB芯片ISP1761实现,ISP1761通过微控制器(Micro Controller Unit,MCU)控制,让隔离器能够捕获到所有底层数据,因此该隔离器的功能又好比一个USB桥(类似网桥的概念)。在此功能上,隔离器中的MCU对底层数据进行分析、过滤和审计等处理,以达到所需的安全要求。

使用时将U盘插入隔离器的USB主控端,隔离器的USB设备端连接到PC,系统构架如图1所示。

2 硬件设计

USB接口芯片采用NXP公司的ISP1761芯片,该芯片价格低,是满足该安全需求最理想的高速USB芯片。其主要特点有:

1)符合USB2.0标准,支持高速(480Mbps)、全速(12Mbps)、低速(1.5Mbps)标准;

2)提供2个USB主控端口(Host Controller port),一个OTG端口;

3)主控端片内集成64KB高速缓存,设备端片内集成8KB高速缓存,极大提升单次数据吞吐量;

4)数据总线可配置为32位或16位,并支持DMA操作。

为了最大限度地发挥ISP1761性能,MCU采用S3C2410(ARM 9)处理器。它提供32位外部数据总线接口,片内集成DMA控制器,主频高达200MHz。在本设计中采用S3C2410核心板,核心板与ISP1761的部分连线图见图2。

图1 系统构架

图2 S3C2410核心板与ISP1761的部分连线图

3 软件设计

软件设计是本次设计的关键。由于隔离器需要同时具备USB主控端和USB设备端,而ISP1761芯片只具有USB主控端和OTG端,所以首先需要将ISP1761的OTG端配置为USB设备端。为了实现病毒隔离功能,软件设计主要分4步实现:

步骤1 隔离器上电后进行自身初始化,主要包括主控端和设备端的初始化;

步骤2 隔离器在软件上断开其设备端与PC的连接,防止Autorun病毒感染PC。之后其主控端获取U盘中autorun.inf文件所在扇区的地址信息;

步骤3 隔离器在获取U盘autorun.inf信息后重启U盘,再实现USB桥的功能,以实现PC对U盘的识别和隔离器对底层数据的完全捕获;

步骤4 隔离器对流过其自身的数据进行分析、过滤和审计,实现Autorun病毒的隔离,如果开启隔离器的只读功能,还可防止PC数据通过U盘泄密,防止PC病毒感染相连U盘。

以下详述涉及Autorun病毒隔离、防止PC数据泄密、防止PC病毒感染U盘的解决思想的后3步。

3.1 获取U盘中autorun.inf文件所在扇区信息

Autorun病毒是利用Windows的自动播放功能借助autorun.inf引导感染的。为了防止Autorun病毒的传播,在将U盘插入到隔离器后,隔离器首先在软件上断开其USB设备端与PC的连接,以防止Autorun病毒感染PC。之后隔离器通过其USB主控端接口获取U盘中autorun.inf文件所在扇区的地址信息。为了实现该功能,隔离器的USB主控端需要借助硬件抽象层、USB协议驱动层、USB 海量存储类协议层和简化的FAT文件系统来实现。

在获取autorun.inf文件所在扇区的地址信息后,如果发现PC读取autorun.inf所在扇区的数据,隔离器将禁止此命令包发向U盘,并伪造一个正常的autorun.inf数据发向主机,以达到隔离Autorun病毒的目的。

3.2 隔离器实现对U盘的识别和对底层数据的完全捕获

隔离器获取U盘中autorun.inf文件的扇区地址信息后,重启连入自身USB主控端的U盘,以便在获取autorun.inf文件信息后让U盘和PC进行正常的USB枚举过程。为了减小软件负荷,此时的隔离器抛开USB协议驱动层和FAT文件系统,实现高速USB桥的功能:即隔离器收到来至 PC的数据时立刻将此数据发送给U盘,数据传输的方向及顺序如图3的箭头1、箭头2所示;当隔离器收到来至U盘的数据时,立刻将此数据发送给PC,数据传输的方向及顺序如图3的箭头3、箭头4所示。

隔离器实现USB桥的功能后,PC上无需安装任何驱动即可完成USB枚举过程,实现PC对U盘的识别。因此隔离器具有通用性好、使用方便的优点。

图3 连入隔离器后的U盘与PC之间的数据流

隔离器实现USB桥的功能是最具挑战性的。由于篇幅限制,本文只详述如何提升隔离器传输速度的方法。

连入隔离器后,PC访问U盘的速度变慢,主要原因是:由于PC和外部存储设备(比如U盘)之间多了隔离器,数据每次传输必须要在隔离器中存储两次:隔离器中USB设备端接收(或发送)存储和USB主控端发送(或接收)存储。数据从设备端缓存传递到主控端缓存或从主控端缓存传递到设备端缓存时间开销很大。曾经试想让USB主控端和设备端共用一个存储区,可由于ISP1761芯片的限制(在ISP1761芯片中,主控端和设备端的缓存是分离的),无法实现。

如果采用MCU以I/O读写方式直接实现数据在ISP1761的主控端缓存和设备端缓存之间传递,传输速度非常低。对于一批4096B的数据,从PC发出请求给U盘,到PC获取来至U盘的这批数据,需要12ms(采用Bus Hound软件获得的测试结果,BusHound软件是由美国perisoft公司研制的一种专用于PC各种总线数据包监视和控制的开发工具软件,能准确测出USB总线上数据传输速度)。而采用DMA控制器实现主控端缓存与设备端缓存之间的数据传递,就只需要1.2ms,速度陡然提升10倍。

因此最终实现方案中采用DMA控制器来进行USB主控端缓存和设备端缓存之间的数据传递。

S3C2410芯片中已集成DMA控制器,可支持存储器到存储器的传输。本文采用软件请求模式操作S3C2410芯片中的DMA控制器以提升隔离器传输速度。

3.3 隔离器对数据进行分析、审计和过滤

USB控制端点的枚举过程结束后,U盘和PC就开始利用批量传输端点进行数据传输。对于U盘设备,批量传输遵循海量存储类单批量传输(Mass Storage Class Bulk-Only Transport)协议。

该协议实际上是由n个IN/OUT事务组成。其传输共分为3个阶段,如图4所示。

图4 命令/数据/状态流程

第一阶段为命令传输阶段,主机先构造CBW命令包,然后发送CBW命令包到设备。第二阶段为数据传输阶段,根据CBW命令包中的dCBWDataTransferLength和bmCBWFlags字段内容决定进行一次或多次IN/OUT数据事务。第三阶段为状态传输阶段,由设备发送CSW状态包给主机返回状态信息。

Mass Storage Class Bulk-Only Transport协议中的CBW命令包包含RBC命令(简化的块设备命令集,是SCSI命令子集),而隔离器所进行的分析、过滤和审计操作就是根据RBC命令信息进行的,其流程如图5所示。

图5 隔离器在批量传输过程中的分析、过滤和处理流程

隔离器在进入批量数据传输后,首先读取设备端缓存,如果接收到来自主机的数据,那么此时的数据必定包含Mass Storage Class Bulk-Only Transport协议中的CBW命令包,解析CBW包中的CBWCB字段。该字段中含有RBC命令信息,通过分析RBC命令信息,便可提前知道主机对U盘的操作。

对于图5中的主要函数,说明如下:

ProREAD10():处理RBC读操作命令。在该操作中,需要判断读取数据所在的扇区,如果发现PC读取autorun.inf所在扇区的数据,则隔离器将禁止该CBW命令包发向U盘,并伪造一个正常的autorun.inf数据,通过其USB设备端发向主机。其他情况下直接将该CBW命令包转发给U盘,并将U盘返回的所有数据和CSW状态信息转发给主机。

ProWRITE10():处理RBC写操作命令。如果通过隔离器上的按键关闭了PC对U盘的只读功能,隔离器向U盘转发本次的CBW命令和随后来自PC的写入数据,并返回来自U盘的CSW状态信息。如果通过隔离器上的按键开启了PC对U盘的只读功能,隔离器停止向U盘转发此次CBW命令包,同时过滤掉来自主机的、跟随此CBW命令包的所有写数据,最后向主机伪造13B的CSW状态信息以欺骗主机,让主机认为成功完成了写数据操作,如此即可实现防止PC数据通过U盘泄密,防止PC病毒感染U盘的功能。

ProREAD_FORMAT_CAPACITIES(): 处理RBC读格式化容量命令。正常情况下该命令的第一次执行将导致U盘批量传输端点进入STALL状态,加入隔离器后为了将U盘批量传输端点的STALL状态信息传递给主机,隔离器在检测到U盘批量端点进入STALL状态后,也让自身的USB设备端批量传输端点进入STALL状态,这样U盘的STALL状态信息可传递到主机。接下来隔离器需要处理来至主机的setup请求信息,以结束自己和U盘的STALL状态。其他情况下,隔离器转发本次的CBW信息给U盘,随后将来至U盘的数据及状态信息CSW通过其USB设备端转发给主机。

ProOtherSCSI():处理其他的RBC命令。隔离器向U盘转发本次的CBW命令,并接收来至U盘返回的数据信息和CSW状态信息,再转发给主机。

4 测试结果

经过实际测试,隔离器能兼容高速、全速和低速传输速度的U盘。

隔离器的病毒隔离测试通过分析Bus Hound软件抓取到的U盘与PC之间的底层数据、借助PC上的杀毒软件和观察U盘中的数据,3种方法相结合来进行验证的。测试结果如表1所示。

表1 隔离器的病毒隔离测试结果

表1的测试结果说明:

1)隔离器能彻底隔离U盘中的Autorun病毒。

2)如果通过隔离器上的按键开启了PC对U盘的只读功能,则隔离器能隔离Autorun病毒、防止PC的数据通过U盘泄密,防止PC中的病毒感染到U盘。在此情况下,PC不能向U盘写入数据。

3)如果通过隔离器上的按键关闭了PC对U盘的只读功能,则隔离器只能隔离Autorun病毒。但在此模式下,PC可以向U盘写入数据。

使用隔离器后,主机访问U盘的数据会降低。在没有使用U盘隔离器时,主机读取U盘的速度约为96Mbps,写数据到U盘的速度约为48Mbps;在使用隔离器后,主机读取U盘的速度约为24Mbps,隔离器在关闭只读功能时,写数据到U盘的速度约为18Mbps,开启只读功能时,写数据到U盘的速度会比没有隔离器时更快,速度约为120Mbps,因为此时PC向U盘写入的数据被隔离器的USB设备端截获,并没有真正写入到U盘。PC访问U盘的速度测试结果如表2所示。

表2 PC访问U盘的速度测试结果

Mbps

隔离器具备高速USB桥的功能,仅在U盘和PC进行USB枚举过程中,隔离器实现透明传输,因此在PC上无需再安装任何驱动即可完成PC对U盘的识别,提高了其通用性、易用性。

5 结语

本文设计的隔离器没有采用任何操作系统,相对于当前已有的采用嵌入式操作系统的U盘病毒隔离器,具有更小的软件负荷和更低的成本。

由于隔离器采用高速USB桥的设计思想,使用时无需再在PC上安装任何驱动即可完成PC对U盘的识别。而目前已有的U盘病毒隔离器需要在PC上安装特定的驱动和软件,因此本次设计具有使用更方便、通用性更好的特点。

使用U盘隔离器后,主机访问U盘的数据会降低。虽然速度降低,但是24Mbps的访问速度是可以接受的,速度的牺牲换回三大安全隐患的解除:1)Autorun病毒的绝对隔离;2)开启隔离器的只读功能后,隔离器能彻底防止PC中的数据通过U盘泄密;3)开启隔离器的只读功能后,隔离器能彻底防止PC中的病毒感染到U盘。因此本文设计的U盘病毒隔离器在一些的行业或部门具有使用和推广价值。

参考文献:

[1] 梓华科技. U盘病毒隔离器[EB/OL]. [2010-04-15]. /News_Show.asp?NewsID204.

[2] Universal serial bus specification revision 2.0[S],2000.

[3] Enhanced host controller interface specification for universal serial bus[S],2002.

[4] ISP1761 data sheet Rev. 01[EB/OL]. [2010-05-15]./datasheet/philips/ISP1761_1.pdf.

[5] S3C2410A microprocessor user′s manual revision 1.0 [EB/OL]. [2010-05-25]. /datasheet/S3C2410A.

[6] Universal serial bus mass storage class bulk-only transport rev 1.0 [S],1999.

[7] T10/97-260r2 reduced block commands revision 1[S],1998.

[8] 周立功. PUSB2.0与OTG规范及开发指南[M]. 北京:北京航空航天大学出版社,2004.