6.2.1 中间件安全技术
物联网(Io T)是一种网络基础设施,用于将物理对象、计算机和人类连接到Internet以进行信息交换。这些基础设施可以是传感器、执行器、智能手机、建筑物和任何其他设备。物联网为各种各样的应用提供了前所未有的机遇,并被广泛应用于许多场景,如制造、医疗和交通。然而,物联网是一个超大规模的网络,包含数十亿甚至数万亿的节点。这些节点会自发地产生大量的数据,要对这些数据进行实时处理和通信,无疑给应用程序的性能带来了挑战。要实现物理世界、网络世界和人类世界的无缝集成,有效地管理和控制这些事物是一个具有挑战性的问题。根据分布式系统的开发经验,有必要构建一个将网络硬件、操作系统、网络栈和应用程序粘合在一起的泛在中间件,如图6.3所示。
1.中间件的概念
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通信,是连接两个独立应用程序或独立系统的软件。相连接的系统,即使具有不同的接口,但通过中间件仍能相互交换信息。
执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,包括消息中间件、交易中间件、应用服务器等。由于介于两种软件之间,所以,它被称为中间件。
从基本功能上来说,物联网中间件既实现了平台的功能又实现了通信的功能,它要为上层服务提供应用的支撑平台,同时连接操作系统,保证系统正常运行。中间件还要支持各种标准的协议和接口。例如,在基于RFID的EPC应用中,中间件要支持和配套设备的信息交互和管理,同时还要屏蔽前端的复杂性。这两大功能也限定了只有用于分布式系统中的才能被称为中间件,同时还可以把它与系统软件和应用软件区分开。
图6.3 中间件
从结构上来说,物联网中间件处于物联网的集成服务器端和感知层、传输层的嵌入式设备中。服务器端中间件被称为物联网业务基础中间件,一般是基于传统的中间件来构建的。嵌入式中间件是支持不同通信协议的模块和运行环境。中间件的特点是它固化了很多通用功能,但在具体应用中多半需要二次开发来实现个性化的业务需求,因此所有物联网中间件都需要提供快速开发工具。根据具体应用的不同,物联网中间件有嵌入式中间件、M2M中间件、RFID中间件和EPC中间件等多种形式。
2.中间件分类
(1)基于服务的中间件
基于服务的中间件,其体系结构受到传统面向服务体系结构(SOA)的启发,这种方法将资源抽象为服务,并将其与Internet上的现有服务相结合,为用户提供集成的数据处理能力。服务可以是云平台提供的数据融合服务,也可以是物理设备上的简单感知服务。如图6.4所示,基于服务的中间件的体系结构由4个功能模块组成,包括服务注册、服务发现、服务组合和编程接口,方便用户快速、高效地构建物联网应用。
Hydra由欧盟资助,2014年更名为LinkSmart,旨在将传感器集成到环境智能系统中。它使用语义Web服务来实现语法和语义级别的互操作性。所有的功能,如数据感知和处理,都由本体(ontology)以OWL和SAWSDL格式来描述。Hydra具有基于本体论和低级语义处理方法推理的上下文感知功能,它将上下文数据分为设备上下文(如传感器)、语义上下文(如位置)和应用上下文(如用户需求)3类,并为这些上下文提供获取、推理和管理策略。目前,中间件被广泛用于开发上下文感知的应用程序,如糖尿病管理平台。然而,本体标准的缺乏限制了Hydra的可扩展性。
图6.4 基于服务的中间件
Cocamal是环境辅助生活(AAL)系统的中间件,它提供了一个由5个部分组成的云平台:①AAL系统,它是一个由异构传感器组成的监控系统(如人体传感器网络);②上下文聚合器和提供者,负责使用基于本体的方法推理高层上下文;③上下文感知中间件,提供数据管理和服务管理功能;④服务提供者,提供可由Ca M云调用的上下文感知服务;⑤上下文数据可视化,为用户提供数据可视化界面。Cocamal提供了高效的数据流处理和上下文推理,其局限性在于系统不支持个性化知识发现。BDCa M是Cocamal的扩展中间件,部署在医疗云平台上,它能为患者创建特定的监控规则,并通过基于患者档案和历史数据的迭代学习对其进行优化。
Atlas是一个面向服务的云传感器系统,由位于云上、边缘网关(即网关)和边缘传感器(即传感器)的3个子系统组成。它支持多种虚拟抽象服务,包括云传感器和虚拟传感器。Atlas的主要组件包括边界连接模块、实用服务管理模块、服务注册管理模块、服务提供管理模块、服务发现模块、服务组合模块和应用开发模块。Atlas开发了一个被称为E-SODA的程序模型,其中传感器数据被抽象为事件,应用程序遵循由事件/条件/动作(ECA)规则列表组成的面向规则的处理范式。中间件基于表示事件聚合关系的事件表示树来实现流处理的工作流组装。此外,它还支持基于双向瀑布优化框架的计算任务(即服务)的自适应迁移。
基于服务的中间件通常用于支持云的环境,在解决异构性问题和互操作性问题方面具有很大的优势。新兴的语义面向服务架构(SSOA)描述了一种适用于大规模物联网基础设施的方法,它利用对数据、服务和流程的丰富的、机器可解释的描述,使系统能够自主地进行交互。然而,缺乏统一的服务标准给服务发现和组合带来了挑战。此外,随着服务数量的激增,手工管理服务已经不现实,这就需要对服务进行自配置和自优化。
(2)基于事件的中间件
事件驱动体系结构(EDA)是一种促进事件的产生、检测和反应的软件体系结构范式。与SOA相比,EDA允许物联网应用程序有效地对特定的传感器事件做出反应。图6.5描述了基于事件的中间件的典型体系结构。基于事件的中间件通常使用订阅/发布机制来支持异步和多对多通信。通常,应用程序订阅它们感兴趣的事件。当中间件检测到一个事件时,该事件将被转发给它的订阅用户。然而,在开放环境中,复杂事件的检测和处理仍然面临许多挑战。
事件驱动模式将功能模块从时间序列中分离出来,使得处理和发现知识更加容易。然而,其松散耦合的特性增加了系统管理的复杂性和难度。此外,事件的并发性也增加了数据交换的不确定性,降低了系统的可靠性。
图6.5 基于事件的中间件
Io T-MP是一个基于事件的智能家居通信管理平台,用于解决异构性带来的基础管理问题。它有一个三层体系结构,由传感器节点、管理器(Manager)服务器和管理器管理器(Mo M)服务器组成。除了感测原始数据外,传感器节点还负责通过简单网络管理协议(SNMP)来响应来自Manager服务器的请求。每个Manager服务器连接多个传感器节点,并存储和处理从这些传感器节点收集的数据。顾名思义,Mo M服务器负责管理和调度Manager服务器,并充当Manager服务器的管理器。当Mo M收到数据或计算请求时,它将请求转发到相关的管理服务器。在数据安全方面,Io T-MP为每个传感器节点提供了唯一的安全身份,实现了基于属性的访问控制。然而,Io T-MP不支持语义处理。
PRISMA是为WSN分布式环境设计的面向资源的中间件。通过一个高级标准化的RESTful数据访问接口,用户可以在不考虑异构网络技术的情况下进行决策。PRISMA具有三层体系结构,包括接入层、服务层和应用层。接入层提供上下文获取和网络通信的功能。服务层侧重于资源发现、事件检测和分发。应用层负责编程抽象和应用程序之间的交互。基于PRISMA的系统可分为网关、簇头和传感器节点3个子系统,每个子系统由部分或全部中间件层组成。网关端子系统管理其他子系统,并从高层角度进行决策。簇头端子系统管理其集群中的传感器节点,并向网关提供资源发现功能。传感器节点端子系统收集传感数据并做出局部决策。这种分层方法有利于系统实现可扩展性、互操作性和资源管理。然而,PRISMA不提供语义处理,也不支持运行时的自适应。
SeCo Man是一个基于语义Web的上下文管理中间件,旨在为开发上下文感知应用程序提供一个隐私保护解决方案。这个中间件具有三层结构,包括插件、上下文管理和应用程序。插件层负责收集数据。上下文管理层是SeCo Man的核心,采用基于本体的上下文推理方法来获取有用的知识。此外,它还提供了基于组的策略管理和访问控制机制来保护数据安全。
(3)基于虚拟机的中间件
如图6.6所示,基于虚拟机的中间件由虚拟机(VM)等组成。VM根据操作系统提供的接口定义一组指令。应用程序是指令的组合。灵活性是基于VM的中间件的最大特点。
图6.6 基于虚拟机的中间件
Mate是一个基于VM的中间件,由加州大学伯克利分校为Tiny OS开发。Mate的核心组件包括虚拟机、解释器、网络管理、日志和引导/调度程序。它总共提供24条Mate指令,并支持事件驱动的同步处理机制。应用程序由这些指令表示,可以通过无线传输在线更新。DVM和DAVi M都是基于Mate设计的,并使用类似的方法动态更新VM。不同之处在于DAVi M支持应用程序的运行时重新配置和多应用程序并行执行。由于应用程序的重新配置需要更新网络中的所有节点,因此会引入额外的执行开销。此外,DAVi M使用协调器来执行代码管理任务,这可能是系统中的一个瓶颈。
Sensor Ware实现了一个部署在嵌入式操作系统上的虚拟机,并使用其系统功能接口为移动应用程序提供运行环境。它由一个语言组件和一个脚本解释器组成。语言组件结合操作系统指令为应用程序提供编程接口。Sensor Ware使用脚本扩展添加新的功能模块,如无线通信、定时和传感模块。此外,Sensor Ware通过向网络中注入轻量级的控制脚本,可以动态地控制数据采集和通信。然而,复杂的组件间通信和代码管理机制使得其不适合于资源受限的设备。
Actinium是一个运行时容器,符合RESTful架构风格,并扩展了Wo T方法。每个应用程序都由容器提供的脚本实现,并在特定线程中执行。这些脚本是用JavaScript语言编写的,可以运行时在云端安装、上传、下载和定制。在数据安全方面,Actinium提供细粒度的访问控制策略和脚本的异常状态监视。此外,基于数据报传输层安全(DTLS)协议,它保证了端到端数据的完整性、认证性和机密性。
MODE是一种基于事件驱动和虚拟机的物联网中间件。它的应用程序由JavaScript脚本实现,并在Rhino引擎中执行。MODE的脚本分为两类:系统脚本和用户定义脚本。系统脚本实现系统的基本功能,用户自定义脚本是用户通过RESTful接口提交的个性化功能。这些脚本可以根据需要在设备和云服务器之间迁移,这大大地提高了系统效率。但是,该模式仅支持资源丰富的设备。另外,在MODE和Actinium模式下,由于JavaScript所具有的特性,所以多个应用程序不能同时调用同一个脚本,这降低了系统的性能。
基于虚拟机的中间件提供了动态加载和软件隔离,并且可以使已编译应用程序的大小最小化。然而,VM的能力往往有限,不足以满足复杂逻辑的需要。
(4)基于数据库的中间件
如图6.7所示,基于数据库的中间件将网络节点视为分布式数据对象,将网络视为虚拟分布式关系数据库。用户通过类似于SQL的查询来请求数据。系统对请求进行分析并生成网络查询方案,然后将子查询发送到网络中相应的节点。在接收到查询之后,传感器节点执行网络处理和数据聚合,然后将结果返回给用户。
图6.7 基于数据库的中间件
Tiny DB基于Tiny OS,使用控制流方法为数据查询提供一个易于使用的接口。提交给系统的数据查询由类似于SQL的语句(即SELECT-FROM-WHERE-GROUP-BY)组成。子查询经过解析和优化后,通过控制泛洪的方法转发给相应的节点。Tiny DB可以支持多种功能查询,如聚合查询、事件描述查询、设备状态查询等,提高了数据处理和网络管理的灵活性。聚合查询基于聚合数据的网络间处理。然而,Tiny DB只支持一些简单的聚合操作,例如求平均值、最大值等,因此对于开发复杂的应用程序是不实际的。
SINA是一个基于数据库的中间件,它将传感器节点视为一个分布式数据对象。在网络中,每个传感器节点维护一个完整的数据表,整个传感器网络可以看作所有数据表的集合。数据表由多个单元格组成,每个单元格唯一地表示传感器节点的特定属性。SINA使用基于属性的命名方案来管理工作表,并使用分层聚类算法来提高中间件的可扩展性。与Tiny DB相比,除了类似于SQL的查询,SINA还可以支持基于传感器查询和任务语言(SQTL)的程序。
Cougar提供分布式数据库接口来接收用户的查询,并通过这些查询来实现WSN管理。它通过将查询分布到传感器网络中的每个节点来最小化能量消耗。传感器的类型被建模为抽象数据类型(ADT)。信号处理功能被建模为返回传感器数据的ADT功能。长时间运行的查询是用类似于SQL的语言表示的。此外,Cougar还提出了一种可扩展的容错数据聚合算法传感器网络上的操作。然而,Cougar在复杂的场景中是不可用的,并且很难在运行时支持多个应用程序的并发执行。
DSWare提供以数据为中心、实时和基于组的事件监视服务,它解决了单节点事件报告的不可靠性和多节点观测值的相关性等聚合可靠性问题。DsWare提供基于组的决策和可靠的数据存储,从而提高了应用程序的性能。DsWare使用类似于SQL的语言来注册和取消事件。然而,DSWare不能处理相对复杂的事件,例如涉及时空关系的事件。
基于数据库的中间件支持检测数据和事件的时间关系。然而,它需要保持一个全局的网络结构,这降低了中间件的可伸缩性。此外,基于数据库的中间件往往不具备数据聚合和知识发现的能力。
(5)基于代理的中间件
移动代理是一个独立的软件实体,在没有用户参与的情况下自主工作。通常,代理需要在特定的虚拟机环境中运行,因此可以说基于代理的中间件是基于VM的中间件的特例。如图6.8所示,在基于代理的中间件中,应用程序被划分为多个模块化代理,这些模块化代理可以被注入和分发到网络中。当从一个节点迁移到另一个节点时,代理需要保持其执行状态。基于代理的中间件需要确保代理可以异步、自主和高效地执行。
Agilla是基于Mate设计的基于移动代理的中间件,有利于WSN中自适应应用的快速部署。Agilla允许用户创建移动代理并将其注入网络。当触发相应的事件时,移动代理将迁移到相应的节点以执行特定于应用程序的任务。Agilla拥有自己的指令集和专用的数据/指令存储器。此外,Agilla还提供本地化的元组,以确保即使在多代理环境中,代理也能保持自治以及可远程访问的空间。它允许代理自由移动,同时保持与其他代理协调的能力。问题是Agilla只考虑资源受限的设备,在应用于资源丰富的设备时会造成性能的浪费。此外,在多个应用程序的情况下,需要部署、克隆和移动较多的代理,这会导致性能瓶颈。
Eagilla以Agilla为基础。Eagilla采用一种混合内核方法,将微内核分离到单片内核上,以执行JVM,这使得Eagilla更安全、更高效。类似地,基于交互的范围,代理被扩展到3个类别:全局级、局部级和系统级。根据上下文信息,这些代理可以在不同的操作模式下执行,包括数据驱动、事件驱动、时间驱动、查询驱动和混合驱动,这使得Eagilla具有适应性和可扩展性,因此可以扩展到各种环境中。
图6.8 基于代理的中间件
ACOSO(基于代理的计算范式)为智能设备提供了面向代理、事件驱动的编程模型和工具,它支持多种通信机制,包括消息传递和订阅/发布机制,以及基于规则的上下文推理机制。ACOSO提供了有效的代理管理和通信,其体系结构由三层组成:①高层智能对象体系结构,即体系结构代理模型;②代理中间件,支持不同设备的不同代理平台;③WSAN编程和管理层,基于楼宇管理框架(BMF)管理WSN。在ACOSO中,针对大规模边缘计算,ACOSO作者G.Fortino等人提出了一种架构——CA-Io T,它是ACOSO与BSN的SaaS平台(基于云计算的计算范式)的协同集成。
Sensomax是一种基于代理的WSN中间件,它是轻量级的,只需要70 KB的存储空间。Sensomax包含3个子系统,分别位于桌面应用程序、网关和传感器节点中。在网关中,Sensomax的软件架构可以分为三层:评估层、任务层和部署层。评估层提供XML解析工具和元素拆分器来验证应用程序查询并将其拆分为单个或多个代理。任务层分析应用程序,以QTask的形式形成捆绑包。任务可以在不同的策略上运行,包括时间策略、区域策略或基于事件的策略。部署层负责向网络传输代理或从网络接收代理。在传感器节点中,有两个附加的层:GLS层和资源层。GLS层处理QTask,资源层负责与传感器和执行器的通信。Sensomax允许在运行时重新配置网络。
移动代理这样的模块化编程范例为网络更新提供了一种有效的机制。代理的自主行为增强了网络的容错性和自组织性。然而,由于其指令不允许硬件异构性,基于代理的中间件通常不适合于资源受限的设备。