第1节 RFID中间件简介
推荐给好友
打印
加入收藏
更新于2008-05-19 12:03:51

 6.1 RFID中间件简介

当系统没有建立有效的多层次的安全体系时,标签数据可能会被非法改写,这是一个基于基础标准构架的系统所面临的关键任务。本章内容里,我们将从多方面入手,研究建立在无线射频系统(RFID)中间件层面上的多层次的安全体系,以确保数据库不被非法入侵。我们同时也将研究商业事件中的中间件的实现,这种中间件基本构架能够为RFID系统提供可升级的安全机制来防止RFID系统受到攻击。

我们的研究将从被EPCgolbal 所采用EPC网络协议入手,这是目前被广大企业所使用的用来为系统进行加密的事实标准。公共密钥构架(Public Key Infrastructure , PKI)是用于识别标签和阅读器之间的握手通信的,而RFID中间件则用来管理阅读器和网络之间的连接。

在本章内容里,我们将会再次遇到安全系统的基本原理与原则,这是良好安全手段的基础,包括一系列识别和授权、控制和查询等问题。所有有关安全系统的问题都必须经过公共安全标准的验证才能证明是可取的,这些都关系到形成独立的行业标准和涉及到无线通信的相关体系。

 6.1.1 电子产品编码网络系统结构

RFID用于识别、追踪及定位物品。对物品惟一身份识别号的识别是Auto-ID中心工作的核心。这个惟一的代码,叫做电子产品编码(Electronic Product Code , EPC),这个EPC码可以被写入到廉价的RFID标签中。EPC网络还可以通过互联网和授权请求使得从某一物品获取相关信息成为可能。 

 

 

6.1.2 EPC网络软件架构组成

EPC网络构架(如图6-1所示)表示了EPC网络位于较高层次部分的构成体系,我们将在以下的内容里具体说明。

6.1.2.1 阅读器

阅读器的主要功能是探测进入阅读器阅读范围内的所有的RFID标签。此外,阅读器还具有和与标签相连或者嵌入标签内部的传感器之间进行数据通信的能力。

Auto-ID的阅读器协议参数说明1.0版定义了这样一个标准,根据这个标准,阅读器与EPC及其他主机之间进行数据通信。专家系统(Savant)同时还提供一个“适配器”接口来处理与旧的不执行Auto-ID阅读器协议的老式阅读器进行通信。

6.1.2.2 RFID中间件

RFID中间件是用来处理来自一个或多个阅读器的标签或传感器的数据流(事件数据)的软件系统。它在将标签数据发送至企业应用系统之前,对标签数据进行过滤、汇总与分发,并减少需要传送的数据量。Auto-ID的Savant 1.0详细说明了RFID中间件如何工作的及并详细定义了企业应用接口。这一定义说明现在被EPCgloba框架协议1.0版所替代。

更为详细的信息请参阅EpcGlobl官方网站:http://www epcglobalinc.com。

 6.1.2.3 EPC信息服务

EPC信息服务使得能够在EPC网络上采用物品标识语言格式下进行任何相关数据的查询服务。从EPC信息服务中获得的数据包括:

由RFID中间件收集而来的标签阅读数据(例如物品跟踪和追溯的连续数据);实时数据例如制造日期、有效期等等;物品类别数据如产品目录信息等。当应答查询请求时,EPC信息服务列出多个存在于企业内部的数据源,并将数据转化为PML格式。当EPC信息服务数据分布于供应链时,任何企业都能够通过EPC准入的注册服务来进入EPC系统的信息库获取相关信息。Auto-ID EPC信息服务详细说明1.0定义了访问EPC信息服务协议。

 6.1.2.4 对象名称服务


对象名称服务(Object Name Service , ONS)提供一种全球查询服务,这种服务把EPC代码转换一个或多个统一资源定位符(Internet Uniform Reference Locators , URLs)。这些URLs指向EPC信息服务器;尽管如此,ONS也能够被用于通过某一物品把EPCs和网站及其他相关的互联网资源联系起来。

ONS同时提供静态和动态两种服务方式。典型的静态ONS提供给UPLs由产品制造商维护的信息。动态ONS则提供某一物品在整个供应链上的信息查询服务。

ONS的建立与域名服务(Domain Name Service , DNS)使用的是相似的技术。Auto-ID物品服务详细说明1.0版里定义了ONS如何工作及应用接口。

 6.1.2.5 ONS本地缓存

ONS本地缓存用于减少某一物品对全球ONS访问的需要量,因为本地缓存能够储存频繁访问的地址信息。本地缓存的作用相当于执行ONS类型访问请求的第一个端口。对于物品跟踪查询来讲,本地缓存可以看成是单个独立的私人EPC网络。和本地缓存紧密相关的是注册功能,提供EPC的全球地址寄存和为动态ONS提供单个企业物品的跟踪与协作。

 6.1.3 EPC网络数据标准

EPC网络的作用是为物品查询提供一个数据标准,这个标准明确了组件之间数据交换的语法和语义。

 6.1.3.1 EPC

EPC是物品识别的基础。Auto-ID电子产品编码数据规则1.0版(Auto-ID Electronic Product Code Data Specification 1.0)定义了EPC包括RFID标签、互联网URLs及其他方面的内容。

 6.1.3.2 PML

PML是标准XML语言的集合,用于对EPC网络中的相关物品进行描述和信息分发。PML还负责对在EPC网络内进行交换的信息进行标准化。这是Auto-ID中心致力发展的在Auto-ID构架之间通讯的标准化接口和协议的部分。PML的核心部分(PML Core)为从Auto-ID构架(例如RFID阅读器)中传感器所获得的数据进行交换提供了一个标准格式。Auto-ID PML核心部分详细说明 1.0版定义了PML核心的语法和语义成分。

6.1.4 RFID中间件概述

RFID中间件存在于标签阅读器和企业应用程序之间。它旨在解决满足EPC应用程序对标签数据的格式要求。对于RFID系统来讲,最大的问题之一就是具有较大的数据量而且数据的精确度较高,这些数据都是通过无线射频电子标签阅读器进行采集的。这些数据的准确性是与传统企业习惯应用的数据相比而言的。因此,大量的中间件处理过程的实现涉及到如何减少数据量,如过滤、汇总以及数据整核等。此外,EPC构架的处理细节,包括ONS和PML服务组件,也是RFID系统需要认真处理的问题之一。

EPC处理过程的功能要求随着具体的应用项目的不同而不同。目前,EPC的应用尚处于起步阶段,其成熟性还需要大量的创新和努力,还需要在实际应用中不断地完善。因此RFID中间件应用的重点在于强调其可拓展性,而不是具体的对某些应用上的细节特征的具体规定。RFID中间件因此可以被定义为 “处理模块”或者“服务”。中间件应用的具体形式都是和具体的应用项目相关的,都是由具体的项目组成员决定的。我们不可能为所有的应用项目确定一个统一的规范性的应用模式来满足不同应用项目的需求。如图6-2所示。 
 

 

RFID中间件是包含一系列的处理模块,这些模块通过规范里定义的两个接口起作用。阅读器接口提供系统对标签阅读器的连接(也就是RFID阅读器)。AUTO-ID阅读器协议规范1.0版对这一接口的详细细节做了说明。尽管如此,专家系统同样允许阅读器通过其他协议进行连接。

应用程序接口不仅提供了外部应用的连接(例如存在于企业的“后端”的应用系统),而且适用于新的EPC规范应用和其他专家系统。在协议里,根据命令的格式对应用程序接口进行了完整的定义,每个命令格式都是由处理模块所定义。因此应用程序接口作为专家处理模块与外部应用之间的一个通用通道而存在(如有需要,处理模块能够通过使用本地服务协议与先前的外部服务进行联系)。应用程序接口使用与阅读器协议1.0中所规定的相似的分层方法进行数据规范,上面的一层定义了具体的命令及其摘要语法,下面的一层对特定语法和协议进行了绑定.(即能够同时定义几种绑定方式)。

除了由专家系统定义的两个外部接口(阅读器接口和应用程序接口)之外,中间件处理模块之间也能够通过与应用程序接口(API)而相互作用。处理模块还能通过其他外部服务对外部接口和这些外部服务起到影响作用(如专家系统之间的相互作用)。尽管如此,这一规范没有对处理模块如何获得对这些外部服务的访问进行定义。

小知识

路由表(非标准化):

可以预见,这个标准的下一个版本将对处理过程模块对特定的外部服务的访问,特别是对EPC信息服务、对象命名服务和其他专家事件的规范的访问作出具体的规定。

处理模块通过AUTO-ID标准或者用户、第三方来进行定义。利用AUTO-ID标准定义的处理模块称为标准处理模块。每个专家系统的执行必须为标准处理模块提供执行的具体情况。某些标准处理模块要求必须和专家处理系统配对使用,这些标准处理模块叫做必需性标准处理模块。在其他一些事件种,由于用户的定义可能已经包括了这些事件或者忽略了这些事件,因此这些标准处理模块叫做可选性标准处理模块。

在专家系统规范性说明1.0里,只定义了两种标准处理模块。第一种模块是必需性标准处理模块即autoid.core。这个标准处理模块提供一套最小的应用接口指令,允许应用程序系统判断出是否还有另外的处理模块可以应用,并且获得阅读器连接的基本的相关信息。第二种模块是可选性标准处理模块文件即autoid.readerproxy。这个标准处理模块为应用程序提供一个通过应用接口直接获得应用程序指令的方法。

 6.1.5 阅读器层――操作运行概述

6.1.5.1 概述 

阅读器协议为主机提供一个统一的路径来来对各个不同厂家生产的类似的阅读器进行访问和控制。由于模块和生产技术路线的差异,不同的厂商生产的阅读器在功能性上存在很大的区别,从“哑巴阅读器”(只是对在当前阅读器射频范围内存在的标签进行数据采集)到“聪明阅读器”(能够提供实用的过滤功能、数据传输功能和其他功能)。阅读器协议定义了一系列的数据采集的特征,能够适应一般系统的开发,并且提供一个标准的方法来访问和控制这些特征。

关于标签读取的不同情形,可以通过阅读器协议示意图来描述(如图6-3所示)。

 

 图6-3从几个主要阶段模拟了阅读器读取标签的功能过程。在某一阶段里描述了标签读取的信息向主机的有效传输。一些情况当中,信息作为对一条系统命令的响应是通过命令通道实行的(一种同步传送信息模式)。其他情况下,可以通过通知频道(一种异步传送信息模式)实现信息自动从阅读器向主机的发送。在每一阶段里,由不同的操作参数来对作业进行控制,这些信息能够通过主机进行设置和查询。

不是所有的阅读器都会提供图6-3种所有的功能。图中第六阶段表示的相应功能必须要在前三个阶段执行后才能够得到实现。更多的阅读器在每一个阶段都设置了更多的参数限制。这就是阅读器协议处理不同的阅读器功能的方法(例如具有无限制数据过滤的阅读器提供的功能最多,其次是只允许只读的过滤器的阅读器的功能,再次是不允许读取过滤信息的阅读器功能)。阅读器协议提供的命令要求所有一致的阅读器都要执行,通过主机来发现特殊阅读器的性能。

图6-3中的六个功能部分包括两个子系统,每个子系统分为三个阶段:数据采集子系统和事件子系统。数据采集子系统从标签获取数据后,应用过滤器根据标签的内容过滤掉一部分无用数据。数据采集子系统在每个新的数据获取循环时产生一个标签队列,直到完成全部的数据采集。事件子系统通过减少产生在每一个标签基础上的“事件”来减少数据量,这是在特殊标签在某些情况的状态当中进行的。(例如事件子系统可以设置阅读器只有在先前没有被读到的标签进入阅读器阅读范围之内时才产生一个输出数据,或者是在先前被读到的标签在某一个特定的时间间隔之内没有被再次读到时才产生输出数据)。数据采集子系统是没有国界的,而事件子系统必须在以每个具体的标签为基础上标识标签的隶属国别。

数据采集子系统由下面三个部分构成:

信号源

信号源(例如RFID阅读器的一个天线)用来读取标签和向阅读器发送数据的。然而,信号源虽然包括天线但是也不限于天线(例如条形码扫描器等)。信号源也可以是“虚拟”的(例如阅读器通过和其连接在一起的两个天线的任意一个来定义一个信号源,这两个天线也可以是独立的信号源)。通常情况下,阅读器针对信号源来对标签进行分别读取,来满足实际情况对标签阅读的需要。不同的阅读器根据信号源的不同存在很大差异。阅读器协议提供可以判别不同的信号源的序号和名称的命令。

数据采集部分

数据采集部分指在特定的时间内从特定的信号源获取标签数据。阅读器根据通信协议提供的参数进行相应的操作,包括主机对指定数据的获取、获取数据量的多少、触发的条件等。某一数据采集单元从单一信号源获取一个或者多个标签的微小间隔称为阅读周期。

阅读过滤部分

阅读过滤部分根据主机设置的数据规则,删除来自标签数据采集部分所采集的数据的无效部分。这种配置的目的是减少所获取的数据的体积,只保留应用程序所需要的有效的标签数据。

有必要指出的是,在图6-3中表示的阶段是概念性的,不是一定要限定阅读器的设计都要遵循这种概念(例如一些阅读器在工作过程种,可能在数据采集时就完成了数据过滤工作)。这里存在一个特例,按照Auto-ID标签协议开发的阅读器需要通过主机进行数据过滤功能的配置以减少阅读事件(也就是射频协议中“树形图”部分),这是特殊过滤模块的功能决定的。从系统主机的角度来看(通过阅读器协议),当进行阅读器设计时,没有必要分清“数据采集阶段”和“数据过滤阶段”,相当于一个阅读器包含了全部的这些功能。

事件子系统包括三个阶段:

顺滑和发生事件部分;

事件过滤部分;

报告缓冲部分。

6.1.5.2 顺滑和事件发生阶段

这个阶段的主要作用是缩减超时的数据量。当需要传输数据的标签出现在特定的信号源范围之内时,数据采集子系统在其标签的每个阅读周期内读取标签信息。在信号源有效范围内的标签经过多个阅读周期产生很大的数据量。事件发生阶段将有效的减少这一部分数据的数据量。其数据量的减少是通过只在某些感兴趣的事情发生的时候产生一个“事件”(如当标签第一次出现和标签不再出现的时候)。

一些信号源,特别是射频信号源,本身具有固定的不可靠性(例如在信号源读取区域的标签在每一个读取周期中有可能不会作出响应),这就希望存在一个细化的规则来产生这些事件。阅读器协议定义了一个普通用途的滤波过滤器,通过它可以利用参数设置在主机上进行控制(如主机可能会要求在正式的事件发生之前标签在规定的时间间隔里被读取次数一定的次数)。并不是所有的阅读器都会支持平滑用途的滤波过滤器的所有需求。一些阅读器可以对参数的允许值进行限制。

顺滑和事件发生阶段必须清楚地地记载每一个信号源和标签ID的状态信息(例如如果要产生一个实例事件,你必须要对某一特定标签的ID是否已经在系统有被阅读的信息)。在主机还在正常地通过事件过滤和报告缓冲部分接收这一阶段产生的事件的过程种,主机还可以通过滤波和事件发生阶段把的当前所有的状态信息消除掉。

6.1.5.3 事件过滤阶段

在某一特定的标签作出状态改变时,滤波和事件发生阶段每次都会产生一个事件(例如从可以检测到不可监测出现)。事件过滤阶段允许主机识别哪个事件将会传输到主机种去(例如主机可能需要知道标签会什么时候出现,但是无需知道它们什么时候停止出现)。

 6.1.5.4 报告缓冲阶段

在滤波和事件发生阶段产生的事件和经过过滤处理的事件一同被储存在报告缓冲区当中。主机可以同步要求传送储存报告缓冲区当中的所有的事件,或者这些事件可以在受到各种触发时被异步传送。当事件被传送到主机之后,报告缓冲区就会被自动清空。 

 6.1.6 与无线局域网的交换

无线局域网(WLAN)技术利用无线信号频率提供组网和传统局域网的物理层。无线局域网节点通过通用无线访问点传输和接收数据(APs)。为了在企业中成功实施RFID,与无线网络的无缝连接是很有必要的。在本部分内容里,我们将解析无线网络的工作原理,讨论在企业无线网络中实施RFID所面临的问题和解决方案。

无线访问点是无线网络的中心网络集线器,通常和有线网络相连接。这样的网络配置允许无线网络用户访问有线网络的服务资源,例如E-mail服务器、应用服务器、企业内部网服务器和互联网服务器等。

这里也存在另外一个问题,那就是无线节点之间是可以直接通信的,这取决于管理员的授权状态,这种授权可以通过软件配置来实现。在对等网络(Peer-to-Peer)中,如果一个非法用户能够和一个合法用户进行通信时,就产生了安全问题,因此我们必须考虑网络的安全防范措施。

按照客户或解决途径的不同,无线网络的实现存在两种不同扩频方式(Spread Spectrum):

FHSS(跳频扩频技术)

DSSS(直接序列传播频谱)

现在流行使用的四种商业用途的无线局域网解决方案包括:

802.11 无线网络

HomeRF 智能家居无线射频技术

802.15 WPAN,基于蓝牙技术

802.16 WMAN



802.11 无线网络技术

IEEE 802.11 WLAN 标准在1989年开始使用,最初是基于提供一个与以太网对等的无线网络(802.11协议堆栈方式如图6-4所示)的目的的。这个标准建立了一套具有连续性的健壮的企业级应用解决方案,符合并超出了企业级网络的应用需求。 

 

IEEE 802.11无线局域网络的有效范围是以基站为中心的半径300米的范围内。无线局域网的典型应用是数据的共享,包括对音频、视频和其他形式的流媒体进行共享传输。


IEEE 802.11无线局域网络通用规则如下:


与传统局域网设备的无线连接,如工作站、服务器、打印机等;

通用的标准媒体接入控制层(Media Access Control,MAC);

类似于802.3以太网(CMSA/CA)

支持TCP/IP、UDP/IP、IPX、NETBEUI等协议;

虚拟冲突侦测机制(VCD);

使用数据包确认和重发机制的纠错和访问控制;

采用WEP加密方法进行通信加密;

漫游;

当设备停止工作时进入省电配置模式;

操作系统驱动接口;

针对不同应用的不同的物理层结构;

支持三种无线扩频技术(跳频扩频技术FHSS, 直接序列传播频谱DSSS和HRDSS),以及红外线技术;

适用于北美、日本和欧洲的相关规定;

支持2.4GHZ和5GHz的ISM频段;

支持1兆、2兆、5.5兆和11兆的接入速度,并且也提供对未来新标准所需要的额外的接入速度的支持;

多方协同工作机制。

6.1.7 利用空中接口对中间件进行攻击

由于其固有特性,RFID标签是一种无声设备。对于来自阅读器的问讯,标签应答一个标识号,通常是一个数字串或者是一个较短的字符串。这是用来标识标签的惟一的识别号的,也是作为其所标识的物品的惟一识别号的。真正的RFID关键单元是系统的中间件和后端的应用系统。

大部分的应用系统中,后端系统通常是一个数据库,这个数据库为用户提供接口以获取有用的数据。

没有中间件的存在,系统就不能正常工作。此外,如果数据库里没有数据的存储,数据库也不能正常工作。阅读器发射的数字串或字符串不存在真正意义上的格式,因此,数据库需要一系列的中间件把信号在阅读器和数据库之间进行解码,通常这是通过对标签起影响作用的应用程序来实现的。中间件应用程序扮演着“填空”的角色,也就是说,中间件应用程序与数据库进行连接,通过SQL指令在必要的地方插入相关的信息。

如果RFID应用到航空包裹跟踪系统,携带该行李的旅客的名字(或者是旅客的ID号)、航班号和航班目的地代码都会在办理登机手续时被写入到标签上。当行李通过航空包裹传送系统时,RFID阅读器对行李进行跟踪,以确保行李输送的正确性。阅读器阅读经过阅读器阅读区域的标签,这种对标签的阅读实际上标签、阅读器和数据库之间的三方会话,其场景如下所示:

中间件查问包裹标签:“请问ID是多少?”

包裹标签回答阅读器或中间件:“琼斯.史密斯,AC453,LGA”

中间件向数据库发送指令:“增加一个包裹信息,航班号是AC453,旅客名是琼斯.史密斯,目的港是LAX机场”。

中间件将一小段信息解码成合适的数据库指令,将这段信息添加到数据表中。在数据库里,其他的应用程序会记录包裹的相关数据,或者查询和确认琼斯 史密斯确实在该航班上。

系统无需和数据库进行数据交互。阅读器和中间件能够跟包裹系统进行数据交互,确定包裹是在正确的航班上,或者对误送的包裹通过便携式阅读器由航空工作人员确认包裹能够回到它真正的主人那里。

中间件可以保证来自数据库和标签的原始数据更为合理和有效地被利用。在行李的例子当中,为了保证行李放在正确的飞机上,必须首先获知准确的目的地。然而,数据库只是存储记录,标签只是携带一个ID号或者一段信息。利用中间件可以合理安排行李的运输路线。然而,中间件对攻击并不是可以完全避免的。它有可能是整个运输链当中最薄弱的环节,因为它的自动化程度是相当高的。

泛美103航班在苏格兰的洛克比发生了爆炸后,航空安全部门开始强化旅客在飞机上的随身行李的安全问题。这样做的目的是防止不法份子把非法行李装载到飞机上,而实际上不法份子本人却不乘坐该架飞机。

相对于条形码而言,在行包跟踪上,RFID系统具有有很大的优势。然而,RFID系统在具有这些便利的同时也带来了不便的地方。

让我们再回到行李包裹的假设案例中来。标签可能会被重写,因为乘客在办理登机手续时需要编程写入数据。假如标签能够被机场内部人员重写,它也可以被其他攻击者重写。根据中间件应用程序的性能好坏的不同,系统安全攻击者拥有不同的攻击机会,可以在不引起警报作用的情况下将行李装载到飞机上。想要复制某个站点上的条形码标签并不容易(特别是你在事先不知道相关信息的情况下),但RFID数据的取得则显得更容易和更为隐蔽。

使用一个便携式阅读器扫描一个合法的行李能够得到标签所标识的行李目的地、乘客名字及其他必须的信息。通过使用这些信息,一个盗贼能够复制一个相同的标签并将它贴到非法行李上。同时,通过中间件的强大功能,使人可能在无意间完成了非法行李的运输。一个较高水平的中间件应用程序能够在关键时候自动发现这类问题的存在从而避免可能的危险的出现(也就是说,如果琼斯.史密斯登记时只携带两件行李,但是有三件行李通过了机场行李管理系统,那么,系统会警告工作人员对所有三件行李都重新进行检查。)

即使标签数据不能被改写,克隆一个合法的标签并对你自己的标签进行一次写入多次读出操作也是不切实际的。除非中间件十分准确地知道标签不可写的标签序列号,否则阅读器可能不会识别到标签。这样,标签就不再是一个简单的信号发生器,它还可以检测到数据库的异常。

2006年3月阿姆斯特丹维杰大学(Vrije Universiteit Amsterdam)的梅勒妮.R.里贝克(Melanie R. Rieback)发表了一篇关于使用标签及其数据攻击中间件和后端数据库的可能性的论文。论文中对中间件应用程序的弱点进行了论述,指出,这些弱点为标签被恶意改写提供了可能,这种恶意改写将影响后台数据库系统并导致系统产生病毒。



论文的核心思想是:即使RFID标签没有足够的存储空间,但RFID攻击者依然可以通过在标签里写入特殊数据来执行某种攻击。该论文特别讨论了SQL嵌入式攻击。

为了实现在应用程序数据库里数据的不经确认的盲目提交,可以使用普通的输入域进行SQL攻击(如名字或者一条其他的信息)来增加SQL代码,达到系统攻击的目的。可以利用一个适当的写入应用程序检查录入的数据以过滤任何不应该进入数据库里的数据信息。


通常,这些攻击是通过网页上的输入域或应用程序人机界面进行的。尽管如此,RFID阅读器接口同样也是一个输入域(只不过数据是从标签读取而不是通过用户交互式录入),同样服从同样类型的过滤功能。

Melanie R. Rieback在其文章详细地总结了这些系统攻击的原因,详情请参阅网站www.rfidvirus.org

“为了达到系统攻击的目的,被感染的标签会利用RFID中间件的薄弱环节进行系统攻击并使数据库感染病毒。一旦病毒、蠕虫或者其他恶意代码进入到数据库,利用数据库数据对标签的写入过程将感染其他标签,问题就会变得十分严重了。”

在我们所例举的机场行李管理的例子里,假设机场中间件的询问语句表述为:

请注意下一班到<X>的航班”

其中,<X>是当行李登记时记录在标签上的航班编码(为了使不熟悉SQL的读者更好地理解这个例子,我们将不在这里讨论实际的SQL代码。在接下来的内容中里我们会例举实际的SQL代码的例子)。通常情况下,RFID中间件会在阅读器之前读取标签并获取标签ID及某些特殊的应用数据。接着根据所获取的标签ID建立询问。如果标签的回应是“LAX”,那么系统的指令将会是:

请注意到下一班到LAX的航班”

接着它将这一指令发送到数据库并获得应答。现在假设,除了该件行李的真实的标签以外,在行李上上还有一个伪造的标签,这个伪造的标签含有“JFK;停航”的信息。两个标签都会被阅读器阅读和处理。在系统处理伪造标签的数据时,中间件会建立发出这样一个询问:

注意下一班到JFK的航班;停航”。

然而不幸的是,分隔符在询问语句和单独命令中都是有效的字符。当发出这样的询问指令时,数据库可能会作出如下应答:

“AA178;数据库已经完全关闭”。

结果实际情况是攻击者关闭了系统。尽管这一事件不是病毒也不会被传播,而仅仅是将机场的主要行李管理系统关闭了一个半小时,一旦机场方面找到问题的症结并并重启系统,系统就会恢复正常运转。这可能会导致航班的延误,严重时可能会由于飞机延迟而导致世界范围内航空运输秩序的混乱。

在被传输到数据库之前,中间件需要对输入的数据进行验证以证明其有效性。然而,Melanie R. Rieback在其进一步的研究里指出,如果不能合理地使用中间件来对数据进行验证,可能会引起其他问题。

RFID中间件对这种类型的攻击的防范措施是对输入的所有数据进行验证。当然,所有的软件都应该对所有的输入数据都进行有效性的检验。但是经验告诉我们,程序员会经常忘记这种验证工作。这种系统攻击被称为SQL感染攻击。这种攻击所占用的空间很少。即使是最便宜的RFID标签,也只需要其114字节中的12字节的有效空间就能写入病毒。一些病毒采用用一种更加诡异的形式来嵌入SQL语句,这种病毒利用紧跟在分号后的命令语句来感染数据库。

现在我们来看第二个例子,假设应用程序使用的是128字节的标签。很自然地,编写应用程序的程序员会分派一个128字节的缓冲区来保存标签的响应。在这种情况下,假设攻击者使用一个512字节的伪标签或一个更大容量的伪标签。当系统读取这些出乎意料的大容量的标签时,可能导致数据量超出中间件缓冲区的承载能力,这样,当信息返回时甚至改写当前程序在堆栈里的返回值,这些信息将会被写回到标签中,这些数据里可能包含一些精心编写的执行程序。这种类型的攻击在家用计算机软件领域经常发生,被称为缓冲器溢出攻击。为防止这种攻击的发生,中间件需要具备能够处理任意数据量的标签字符串的能力。

因此要避免RFID系统的攻击,中间件必须不存在可以导致SQL语句嵌入、缓冲溢出或者相似的攻击的BUG。不幸的是,软件发展的历史告诉我们,对于一个庞大的复杂的软件系统而言,不存在BUG几乎是不可能的。

通过RFID接口进行 SQL语句嵌入攻击和缓冲区溢出攻击,从而进行后端系统攻击,这些都是相当新颖的想法。人们已经从应用接口层面和数据库安全层面对系统安全给予了关注,这都是和用户进行人机交互的。即使这样,RFID接口还是为系统攻击者提供了有效的攻击点。至少,如果没有相关的验证系统来确认标签的合法性的话,系统攻击者可以利用RFID接口能够来对数据库进行数据的插入。

在Melanie R. Rieback的研究项目里,最有兴趣的事情是,那些感染数据库的程序代码在阅读器扫描标签时,向所有标签写入伪造的标签数据。在一个巨大的一致性较强的系统里如一个机场系统里,一个小小的标签的感染可能会导致世界性的浩劫。

当Melanie R. Rieback的研究成果发表后,引起了许多激烈的讨论。RFID技术的快速发展地有效地遏制了这些攻击,但是却不能完全杜绝它。我们可以很负责任地讲,Melanie R. Rieback的研究成果只是给了我们一些小小的警告而已。

<<上一节  下一节>>




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.