无线传感器网络中安全事件的响应与预防系统
达尼埃莱·米迪、萨尔明·苏尔塔纳和艾丽莎·贝尔蒂诺,普渡大学
资源限制、无人值守的运行环境以及通信现象使得无线传感器网络(WSNs)容易受到操作故障和安全攻击的影响。然而,由于传感器网络在各种关键基础设施中的部署,应用通常对数据可靠性和服务可用性有严格要求。鉴于传感器网络易于发生故障和遭受攻击,使传感器网络能够持续提供服务并有效从攻击中恢复成为一项关键需求。
我们提出了Kinesis,这是一种安全事件响应系统,旨在确保无线传感器网络在出现异常或攻击时仍能保持功能,并能够在不造成严重中断的情况下从攻击中恢复。Kinesis在响应事件时快速且有效,具有分布式特性,能够根据上下文动态选择响应动作,在响应策略规范、通信和能量开销方面具有轻量级优势。基于每节点单定时器的分布式策略可在邻域中选择最有效的响应执行者,使系统简单且可扩展,同时实现负载均衡和冗余动作优化。我们在TinyOS中实现了Kinesis,并针对多种应用层和网络层事件测量其性能。大量TOSSIM仿真和测试床实验表明,Kinesis能够成功抵御异常/攻击,并在各种攻击场景和攻击频率下保持一致的行为表现。
类别以及主题描述:C.2.0[计算机‐通信网络]:通用——安全 ity 和保护 on
通用术语:安全,设计,实验
附加关键词和短语:无线传感器网络,安全,入侵响应
美国计算机协会参考文献格式:
达尼埃莱·米迪、萨尔明·苏尔塔纳和艾丽莎·贝尔蒂诺。2016年。无线传感器网络中安全事件响应与预防系统。ACM Transactions on Sensor Networks 13,1,文章1(2016年12月),38页。DOI: http://dx.doi.org/10.1145/2996195
1. 引言
无线传感器网络(WSNs)为众多应用领域提供了经济可行的解决方案,例如信息物理基础设施、电网、无线医疗、环境监测和物联网(IoT)。无线传感器网络为各种应用提供持续且无干扰的服务,如应急响应[Lorincz等人 2008;Lorincz 等人 2004],实时病人监护[Chipara 等人2010],医院内通信、老年人护理[Virone 等人 2006],等。随着物联网的发展,近年来的趋势是为物理设备增强感知、计算和通信能力,并将其集成到数字‐物理系统中生态系统;并利用网络化智能设备的集体效应来创建智能环境。
当前和设想中的大多数无线传感器网络应用对端到端系统可靠性、可信数据传输和服务可用性都有严格的要求。然而,无线传感器网络资源受限,通过不可靠的无线介质进行通信,运行在无人值守环境中,通常缺乏任何防篡改封装。这些条件使无线传感器网络节点易受操作故障的影响。此外,传感器环境本身不安全且易受攻击,容易遭受伪造上下文、修改访问权限以及总体上破坏系统操作的攻击[Ko等 2010],,使得满足上述要求更具挑战性。恶意攻击可能带来广泛的影响,从智慧城市传感器和控制器的故障,到医院病人接受错误治疗。通过利用其不安全的无线通信成功实施针对关键生命设备(如胰岛素泵和起搏器)的远程黑客攻击[Alexander 2013],,引发了互联传感器和执行器使用中的关键安全问题。因此,即使在出现异常或遭受攻击的情况下,也必须持续提供无线传感器网络服务,并在不造成严重中断的前提下有效从攻击中恢复。
近年来,人们提出了多种入侵检测系统(IDS)[克朗蒂里斯等人,2008;波诺马丘克 和徐,2010;马蒂等人 2000],这些系统能够协同检测入侵,并将可能的攻击报告给中央权威。然而,仅靠检测是不够的,因为必须通过采取行动快速应对攻击,使系统能够继续运行,同时阻止攻击。因此,我们需要能够实现自动响应和恢复操作的响应工具。由于操作方式、资源和通信方面的显著差异,为其他领域(如数据库系统或分布式系统)开发的入侵响应系统无法直接用于无线传感器网络(WSN)。一个针对无线传感器网络特点设计的有效入侵响应系统需要满足以下要求:
—轻量级:无线传感器网络节点的受限资源要求系统在计算成本和资源使用方面都具有轻量级特性。特别是,响应策略应以灵活但简单的方式进行定义,以免在选择适当的响应动作时产生过高的开销。
—实时: 虽然响应系统必须有效确保无线传感器网络操作不会因不利事件而中断,但同时应以安全方式对每种异常或攻击执行最有效的操作。
—协同: 为了满足前述两个要求,并确保响应系统本身对攻击具有弹性,入侵响应系统应采用完全分布式设计。它应依赖于本地操作和协同策略,而不是与中央权威进行频繁交互。
在本文中,我们提出了Kinesis——首个面向无线传感器网络的事件响应与预防系统(IRPS)的系统性方法。该系统具有轻量级、协同和分布式的特点。根据我们的设计,无线传感器网络中的每个传感器均作为一个看门狗监控器[马蒂等人 2000],并同时承载一个入侵检测系统(IDS)和 Kinesis系统。Kinesis在静态无线传感器网络中表现最佳,而静态无线传感器网络是无线传感器网络应用中非常常见的场景(例如用于农业领域的露天部署以及用于医疗场景的室内部署)。Kinesis的操作基于一个三阶段工作流程:
—Detect.通过入侵检测系统,监控器观察邻域内的行为,检测邻域中的可疑事件(异常/攻击),并通知 Kinesis。
—Diagnose.尽管入侵检测系统通常能够检测异常和攻击,但它们可能不了解这些不利事件的根本原因。
在某些情况下,需要进一步诊断。此任务由 Kinesis 执行,以便更好地了解网络中的事件。
—响应。 当收到事件通知后,在充分了解所发生事件及邻居节点当前安全状态的基础上, Kinesis 会从基站(BS)指定的响应策略集合中匹配适当的响应策略。系统因此执行最合适的响应动作以实现其安全目标。
为了在Kinesis中支持灵活的响应策略定义,我们提出了一种基于事件‐条件‐动作范式[Dayal 1994]的面向无线传感器网络的轻量级策略语言。在响应策略中,一组规则根据对嫌疑节点的安全评估,将事件和异常映射到不同的响应动作。监控器基于以下三个方面估计嫌疑节点的安全级别:(i) 事件检测置信度,(ii) 嫌疑节点的行为历史,以及 (iii) 事件对无线传感器网络的影响。该策略有助于选择最有效的响应动作。我们调研了无线传感器网络中的各类攻击,建立了攻击分类法(图1)以及一套全面的响应动作集合(表III)。然而, Kinesis能够根据攻击所表现出的异常行为,针对未知攻击生成相应的响应。
为了触发与事件对应的响应执行,Kinesis通过邻居节点之间的自组织竞争,在邻域内选择一个daemon节点。该竞争由每个节点的action timer以分布式方式控制。定时器最先触发的节点赢得竞争并执行响应动作。大多数动作涉及一次传输,该传输会被邻居节点监听到,从而使邻居节点停止其动作定时器并避免执行冗余操作。因此,Kinesis无需任何消息交换即可实现响应动作同步,且不产生通信开销。节点的动作定时器值基于以下因素在本地估算:(i)邻域大小,(ii)邻居链路质量,以及(iii)距上次动作的时间。该值反映了节点执行动作的有效性,并确保了邻居节点间的负载分配。
Kinesis 的分布式特性还增强了安全性。当某个节点被攻破时,邻域内的其他合法节点仍可继续执行 Kinesis 功能。在策略分发与存储方面,Kinesis 是安全的,因为基站(BS)指定策略,将其转换为二进制代码,并通过安全分发协议 [Hyun et al. 2008] 将该二进制代码在整个网络中进行分发。
我们在之前的文章[Sultana 等人 2014b]中介绍了Kinesis。本文在前期工作基础上进行了如下扩展: (i)引入了诊断与过滤
2. 背景与系统模式 L
2.1. 案例研究
无线传感器网络(WSN)的一个重要应用是智慧城市的智能监控。许多传统监控系统通过闭路电视摄像头进行连续视频录制,在带宽、存储空间和持续的人工监控方面存在严重不足。相反,公共和私人区域对安全日益增长的需求正推动物理世界与网络世界的融合,形成智能监控系统[Saha 和 Neogy 2014;Felemban 2013;何等人 2004;奥努尔等人 2007]。此类系统的实际部署使用无线传感器——能够检测运动、温度或光线变化、振动等——来触发视频录制,并独立且自动地向基站发出入侵告警。
作为一个具体的案例研究,Libelium [2016]——一家专注于物联网、机器对机器通信和智慧城市解决方案的公司——已部署了多个无线传感器网络(WSN),用于智能监控和周界访问控制。他们的传感器通过自组织拓扑结构的低带宽介质报告入侵事件,并触发视频录制,通过 3G网络进行流传输。另一个案例研究是SmartSantander [ 桑切斯等人 2014],,这是欧洲首个全面尝试建设智慧城市的项目之一,部署于西班牙的桑坦德市。在该项目的诸多目标与解决方案中,附加的欧洲项目EAR‐IT [ 范 和 库辛 2013] 旨在利用配备声音检测功能的无线传感器网络,通过“智能声学”技术来检测入侵和危险情况,并通知相关机构。
在这些智能监控部署中,攻击者可能会破坏传感器节点和/或篡改通信,以丢弃有关其入侵的告警数据包并掩盖其行踪。这可以很容易地被视为对多种使用智能监控系统的设施的具体威胁,从企业设施到政府建筑再到家庭住宅。在所有这些场景中采用Kinesis将确保对无线传感器网络中的数据丢失做出快速响应。此外,正如我们在评估中所展示的,无线传感器网络中使用Kinesis仅带来非常小的性能开销,从而确保部署在节点上的原始应用在此关键的实时任务中保持功能正常和响应迅速。
我们注意到,我们在讨论中提到的物联网系统正越来越多地应用于各种应用中。然而,需要注意的是,物联网是一个通用概念术语指“嵌入了电子设备、软件、传感器、执行器和网络连接功能的物理设备、车辆、建筑物及其他物品所构成的网络,使这些对象能够收集和交换数据”[ITU 2015]。因此,根据该定义,基于WSN的系统可被视为物联网系统的子类别;此外,在许多情况下,基于 WSN的系统是更大规模物联网系统的组成部分。例如,在Libelium和SmartSantander系统中,WSN即为更大规模物联网系统的一部分;然而,本案例研究中所指的具体实例仅由小型、功能有限的无线节点组成,具有单一用途,并通过自组织的多跳拓扑结构与基站节点通信。这些特性使得本研究中提出的特定系统归属于WSN这一特定子类别。但我们认为,本文所提出的技术可扩展应用于更广泛的物联网系统场景。
2.2. 网络模型
我们考虑一个多跳无线传感器网络,该网络由多个传感器节点和一个从网络收集数据的基站组成。假设每个节点都有多个可以监控其行为的邻接节点。基站是安全的,并具有安全机制来广播认证消息以及在网络中分发代码更新。传感器节点在部署后是静止的,但路由路径可能会随着时间变化,例如由于节点故障。部署完成后,基站为每个节点u分配一个唯一的节点ID和一个加密密钥Ku。每个节点还与每个邻居k共享一个成对密钥Ku,k,并与所有邻居共享一个组密钥Kg。
2.3. 威胁模型
我们将基站(BS)视为可信的,但其他任何节点都可能是恶意的。我们假设在一个邻域中大多数节点是诚实的。无线传感器网络(WSN)保持协议栈的标准分层架构,这使得典型攻击以及针对这些层的WSN特定攻击均可能发生。这些攻击旨在破坏以下资源:(i)网络;(ii)控制和数据消息;以及(iii)传感器设备资源,例如内存、电源等。下文将根据目标资源讨论这些攻击。
通信网络: 干扰会破坏一个子网络甚至整个网络。链路层的攻击包括故意引入冲突、资源耗尽以及介质访问中的不公平性。
消息: 在无线传感器网络中,所有节点都充当路由器。因此,攻击者可能伪造、篡改或重放路由消息,通过制造路由环路、更改路由、吸引或排斥来自特定节点的流量、增加延迟等方式来破坏网络通信。例如陷洞、选择性转发、黑洞攻击、虫洞攻击。此外,还可进行虚假数据注入和延迟转发等其他攻击,以降低数据质量和效用。
传感器设备: 为了保持传感器网络的经济可行性,传感器设备通常不配备防篡改封装,这增加了发生物理攻击的风险,例如物理捕获、篡改等。攻击者可以从被俘获的传感器芯片中提取存储的密钥信息,并利用软件漏洞。攻击者还可以克隆被俘获的传感器,并将其放置在网络中的选定位置(复制攻击)。一旦这些复制品获得其他节点的信任,它们就可以发动多种内部攻击。身份伪造,例如Sybil攻击,使恶意节点能够在网络中呈现多个虚假身份,从而构成威胁。
2.4. 入侵检测系统
许多入侵检测系统[克朗蒂里斯等人,2008;波诺马丘克和徐,2010;马蒂等人2000]已被提出用于无线传感器网络,以协同检测入侵。由于
无线信道的广播特性使得窃听在无线传感器网络中成为一种自然现象。邻接节点会窃听彼此的传输,即使它们并非预期的接收者[Daabaj et al. 2010]。利用这一事实,马蒂等人 [2000]提出了看护机制,通过该机制,节点可通过观察邻居节点的行为来识别行为异常的邻居节点。此类节点被称为看门狗监控器(也称为监控节点)。每个监控节点观察其邻居节点,收集审计数据,然后对每个邻居进行行为分析以检测可疑活动。入侵检测系统基于各监控节点的分析结果以及一组预定义的推理规则协同检测入侵行为。图1展示了入侵检测系统所使用的症状与各类攻击之间的关系。
2.5. 状态信息与符号表示
我们现在介绍 Kinesis 在执行过程中所使用的相关信息,以及本文其余部分将使用的一些符号。每个节点维护一组状态信息,表示其对网络及其安全级别的当前认知。每个节点 u 维护一个其直接邻居 neigh(u) 的列表,以及与每个邻居 w ∈ u) 之间的链路质量信息 L(u w)。此外,u 为每个邻居保留一个大小为 W 的滑动窗口 sliding window wk,用于记录邻居行为观测的历史,供 u 更新邻居的安全估计和状态。
3. 架构概述
在Kinesis中,每个监控器都托管一个分布式入侵检测系统(IDS)和Kinesis系统。通过该IDS,监控器可观察邻域内的节点行为,检测邻域中的可疑事件,并通知Kinesis执行自动响应动作。然而,正如我们在第5.2节中所看到的,Kinesis仅依赖于IDS提供的关于正常/异常行为的通知,而这正是入侵检测系统的基本功能。因此,IDS的具体设计out of the scope不属于本研究的范围。
图2展示了Kinesis的架构。后台进程Neighbor Ob-server在入侵检测系统观测的帮助下,记录每个被监控邻居节点的近期行为,并基于该历史记录定期更新邻居节点的安全状态。当检测到事件时,入侵检测系统会向Kinesis报告可能的异常/攻击、嫌疑节点以及每项报告的异常/攻击的告警置信度。诊断与过滤代理作为此类报告的首个接入点。该组件设计为可扩展管道,负责确保适当的
对入侵检测系统(IDS)报告的置信度,以及进一步区分那些可能具有相似症状但根本原因截然不同的异常/攻击报告具有重要意义,第4节将对此进行更详细的讨论。动作选择器随后基于告警置信度、可疑行为历史和事件影响对可疑节点执行安全评估。根据安全评估结果,从与该事件匹配的响应策略中动态选择要执行的动作。由于我们采用了基于事件的方法, Kinesis能够针对表现出异常行为的未知攻击进行处理。
给定一组响应动作,执行器将触发并执行这些动作。监控节点通过设置与自身动作有效性成反比的动作定时器来竞争成为下一个守护进程(即执行响应动作的节点),并在定时器超时时执行相应动作。需要注意的是,诸如日志和分析之类的动作由每个节点独立执行,而对于重传_数据这类动作,则应尽量减少邻居节点的冗余操作。在后一种情况下,当邻域内的其他监控节点听到某个监控节点已执行动作后,会停止自身的动作计时器,以避免对该事件进一步采取动作。所有与响应动作相关的通信或与基站的通信均由通信模块处理。
4. 有害事件的诊断与过滤
入侵检测系统通常会为报告的每个事件关联一个置信值,以表明该事件发生的可能性。然而,有时入侵检测系统可能未提供内置置信值,或由于系统对某一事件的判断不确定,导致该值非常低。此外,传统上,入侵检测系统能够检测诸如丢包或数据篡改等事件,但无法识别这些事件的根本原因。以高准确性向Kinesis报告事件,并清晰理解其根本原因,对于选择有效的响应动作至关重要。
Kinesis 中的 诊断与过滤代理 组件实现了一个可扩展的过滤器管道(参见图3),该管道支持 Kinesis 更好地诊断报告的事件,提高通知的不良事件的置信水平,并减少此类事件可能的根本原因数量。这样,当通知到达 IRPS 时,系统能够基于更充分的信息进行数据驱动决策,从而采取更有效的响应动作。
第一个流水线过滤器旨在填补事件报告中可能缺失的置信度数据。置信值有助于选择响应动作,因为它提供了入侵检测系统检测有效性的估计,以及对响应动作预期严重性的建议。然而,如果入侵检测系统未提供内置的置信值,则该管道中的第一个过滤器将按如下方式计算事件报告的置信值RC:
(1)对于异常,我们考虑RC= 1。这是合理的,因为看门狗监控器能够正确识别故障或异常行为事件 [马蒂等人 2000]。
(2) 对于攻击,RC根据入侵检测系统在成功检测攻击方面的历史性能计算为误报率。因此,RC的计算方法如下:
RC= #of true attacks #of attacks reported
.
细节关于Kinesis如何获取有关误报告警反馈的讨论见第5节。 5.
第二条流水线过滤器是我们先前工作 [Midi 和 Bertino 2016] 中开发的细粒度分析(FGA)工具。该过滤器对于理解由入侵检测系统报告的事件的根本原因至关重要。例如,某个节点的 IDS 可能检测到数据包丢弃事件,但无法确定该丢包是由被攻陷节点实施的选择性转发攻击所导致,还是由引入了干扰(自然或恶意)从而破坏无线传输所造成。显然,尽管这两种情况都会导致丢包,但针对前者的有效响应动作是撤销被攻破节点,而针对后者的有效响应动作则是将流量重新路由至受干扰区域之外。因此,以高准确性向 Kinesis 报告事件对于选择有效的响应动作至关重要。当多种攻击具有相同症状时(如图1所示),此策略尤其有用。FGA 工具能够区分与节点相关的事件和与链路相关的事件,并且未来可扩展用于区分更多类型的事件。该工具通过测量每个邻居链路的接收信号强度指示(RSSI)、链路质量指示(LQI)以及数据包接收率(PRR),来刻画链路在正常状态下的行为特征。
RSSI 表示两个节点之间的信号强度,以负 dBm 为单位(通常范围为 [−100dBm −45 dBm]),数值越高表示信号越强;LQI 衡量信号的质量;PRR 即数据包接收率。在理想情况下,较高的 RSSI 值表示强信号链路,并表现为较高的 LQI 和 PRR 值,表明链路质量更佳。然而,干扰的存在会导致这些值发生明显变化。我们的细粒度分析旨在深入理解每个链路配置文件的组成部分以及每个节点的邻域情况。在网络部署初期,每条链路的稳定参数(RSSInorm,LQInorm,PRRnorm)会在两个端节点上保存。当发生某一事件且其症状可能同时归因于节点或链路问题时,FGA 工具会将当前链路配置文件与稳定参数进行比较,从而确定所报告事件的确切根本原因。
5. 响应策略语言与引擎
在本节中,我们介绍 Kinesis 策略语言以及 Kinesis 如何选择并执行适当的响应动作以应对事件和异常。
5.1 策略语言
响应策略在事件上定义,并根据该事件及嫌疑节点的各种条件,针对不同的安全评估指定动作。响应策略被指定为一组规则,使用表 I 中的语法表示。引号内的术语 ’ ’ 为静态标记,斜体 表示函数。该语言的主要结构是 ,用于定义针对攻击或异常的响应策略。
通过对无线传感器网络中各种攻击及相应恢复动作的详细分析,我们确定了一套全面的响应动作,列于表III中。这些动作分为三类: —保守型:低严重性操作,可能有助于监控器更精确地检测攻击或避免执行错误响应,但无法预防或从攻击中恢复。 —中等型:旨在在发生故障或攻击时保持无线传感器网络服务的操作。 —激进型:高严重性响应,用于从攻击中恢复并防止进一步的恶意尝试。这些操作可由本地传感器执行,也可能需要基站协助才能执行。
| 表I. 响应策略语言 |
|---|
| <规则>::=‘开始’ ‘结束’ |
| ::= | |
| ::=当发生 <事件>( )+ |
| <事件>::=<异常> | <攻击> <异常>::=数据 丢失|数据 篡改 |数据 重放 | … |
| <攻击>::=未知 |转发 选择性 |干扰 | … |
| <条件>::=<条件>*|如果<事件>那么 |“如果” 严重性(<嫌疑节点>,<事件>) <操作符>(<值 范围>) “那么” |
| <操作符>::=‘<’ |‘>’ |‘<=’ |‘>=’ |‘==’|‘!=’ |‘在⋯⋯范围内’ ::= , | |
| <操作>::=<保守型操作>(<嫌疑节点>)* |<中等型操作>(<嫌疑节点>)* |<激进型操作>(<嫌疑节点>)* |
| <激进型操作>::=撤销|重新认证|重新密钥交换| … |
| <中等型操作>::=重传数据|触发数据认证| … |
| <保守型操作>::=无操作|分析|告警|… |
| <嫌疑节点>::= + | ( * *)* |
| <范围>::=(‘[’|‘(’)<值>–<值>(‘)’|‘]’) |
| <值>::= | +. + |
| ::=[‘0’‐‘9’] |
| <字面量>::=[‘A’‐‘Z’‘a’‐‘z’ ] |
| 表II. 响应策略示例 |
|---|
| 当发生 ‘数据 篡改’ |
| 如果 严重性(数据 篡改,节点ID)<= 0.3 |
| 那么重传数据 |
| 如果严重性(数据 篡改,节点ID)在⋯⋯范围内 (0.3,0.6] |
| 那么重传数据, 触发路由变更 |
| 如果严重性(数据 篡改,节点ID) > 0.6 |
| 那么revoke nodeID |
Kinesis的策略语言允许使用通用症状作为触发条件,例如“data_loss”,以及由入侵检测系统检测到但未被识别为特定攻击的异常行为,即“未知”。这使得Kinesis即使在面对尚未完全诊断或识别但仍需采取措施以维持网络功能的攻击时,也能采取行动。此外,我们策略中的链式结构确保规则将按顺序检查,在可能的情况下对更具体的攻击做出响应,并在必要时回退到通用动作规则,作为无线传感器网络的“安全网”。尽管这可能导致对未知攻击的响应动作不够精确,但它确保了在所有情况下都能采取某种纠正措施。
表II中显示了一个针对data_alteration事件的示例策略。其中,nodeID指可疑节点的标识符。
5.2. 策略匹配与响应选择
由于响应策略是针对事件专门定义的,fi定的, fi 在Kinesis中匹配事件对应的策略是直接的。然而,要执行的动作会根据对可疑节点的 securityassessment,从匹配策略指定的动作集中动态选择。该策略确保Kinesis在任何事件中都能采取最有效的措施。
节点的安全评估通过安全指数(SI)进行量化。在Kine‐sis中,监控器根据其邻居安全状态记录持续更新每个邻居的安全状态。
| 表III. 响应动作分类 |
|---|
| 操作 |
| 保守型:低严重性 |
| nop |
| 日志, 分析 |
| 告警 |
| 告警 |
| 中等型:中等严重性 |
| 丢弃数据 |
| 重传数据 |
| 触发重新认证 |
| 触发路由变更 |
| 触发多路径路由 |
| 暂停 |
| 暂停 |
| 激进:高严重性 |
| 撤销 |
| 重新编程 |
| 重新密钥化 |
| f lood告警 |
对邻居行为的观察。每个邻居的SI在每次观察时都会更新。如果某个邻居表现出合法行为,那么其SI仅根据行为观测进行更新。否则,如果报告了事件(即观察到异常行为),则 SI将基于三个因素进行更新:
(1)事件置信度:检测到事件的置信程度,用置信度指数(CI)表示。(2)事件影响: 事件对无线传感器网络的影响的数值,用影响指数(II)表示。(3)邻居行为历史:邻居节点的连续行为观测和安全状态,反映监控器对可疑节点的信任程度。
接下来,我们讨论Kinesis如何计算这些指数,并基于SI选择响应动作。
5.2.1. 置信度指数(CI).
在诊断和过滤管道执行结束时,事件报告总会附带一个置信值。我们利用该值来选择响应动作,因为它衡量了入侵检测系统检测事件的有效性以及响应应采取的严重程度。因此,所报告事件的置信值被用作CI的值。
5.2.2. 影响指数 (II).
II用于估计异常/攻击的整体影响,并表明响应动作的紧急性和严重性。尽管在企业网络的漏洞评分方面已有大量研究 [Mell et al. 2007],,但对无线传感器网络的关注较少。一些针对无线传感器网络的数学风险模型已被提出 [Falcon et al. 2011],,但它们并未提供一个完整的框架来考虑无线传感器网络特有的实际问题。在本研究中,我们提出了一种简单的机制来估计事件的影响。
| 表IV. 无线传感器网络异常和攻击的可能影响 数据影响 数据延迟 |
|---|
| 节点影响 |
| 节点影响 |
Kinesis 将事件影响计算为:
Ik(x)= ∑
n j=0impactxk[j] × rk[j]
∑n j=0 rk[j] , (1)
其中,k为影响类型,n为k型影响的总数,impactxk是事件x的k型影响的n长度数组,其中 impactxk[j]= 1表示该事件具有第j个影响,rk是与k型影响相关联的影响评分数组。利用 公式(1),Kinesis计算事件的数据影响(I
)、网络影响(I
)、节点影响(I
), 然后如下计算II:
II(x)= βd × Id(x)+ βn × In(x)+ βs × Is(x), (2)
其中系数 βd, βn, βs ≥ 0 为实数,且满足 βd+ βn+ βs= 1。注意,如果网络管理员未 更改无线传感器网络优先级,则影响指数为静态的,并且仅需在部署后计算一次。
5.2.3. 邻居行为观测。
邻居行为有助于监控器评估该邻居节点的易受攻击程度以及其发起攻击的可能性。因此,我们在确定响应动作的严重性时,会考虑可疑节点的行为观测。通常,入侵检测系统会维护行为历史和信任评分[Hasswa等 2005]。然而,为了兼容不具备此类功能的入侵检测系统,Kinesis包含了一种记录邻居行为信息的机制,并利用该信息来计算安全评分和状态。
为了证明响应动作的准确性,我们利用邻居行为历史而非最新的单一行为。Kinesis 为每个邻居维护一个大小为 W 的 滑动窗口wk,以记录该邻居最近的 W 个行为。当入侵检测系统通知关于邻居 k 的某个行为时,Kinesis 会将最久远的行为从 wk 中移除,并存储最近的行为。我们考虑两种类型的行为: —服务行为:邻接节点在提供无线传感器网络服务方面的可信程度,例如及时的数据包转发。—IPRS行为:邻接节点在执行必要的和期望的动作时的高效性和诚实性。
5.2.4 安全指数与状态更新。
监控器u在每次对邻居节点k ∈neigh(u)进行行为观测时,计算其SI,并相应地更新安全状态。一个节点被估计处于五种可能的状态之一:(i)初始, (ii)可疑,(iii)安全,(iv)恶意节点,以及(v)已撤销。图4展示了安全状态转换图。
在网络部署后,监控器将其所有邻居节点的安全状态初始化为初始状态,并赋予SI= 0。
在预设的时间段tf内,邻居节点被视为处于初始状态,其SI则根据行为观测结果持续更新。
公式(3)。初始状态的意义在于,当邻接节点处于此状态时,会给予其“无罪推定”的待遇。尽管可疑节点在初始状态下的安全指数(SI)会影响响应选择,但不会对该节点采取激进行动,即该节点不会被撤销、重新编程等。经过时间 tf 后,该邻接节点会根据其安全指数 (SI)进入可疑或安全状态。如果处于可疑状态的节点由于合法行为导致其安全指数(SI)下降,则该节点将转入安全状态。相反,如果处于可疑状态的节点持续表现出异常行为,其安全指数(SI)将超过预定义阈值 σ2,从而进入恶意节点状态。当邻接节点进入恶意节点状态时,监控器将对该节点发起激进行动。此外,邻接节点也可能由于监控器自身的决策或邻近监控节点发起的操作而在任何时间被撤销。在这种情况下,监控器会将该嫌疑节点标记为已撤销,并丢弃来自该节点的后续请求/数据。
我们使用两个辅助函数 f(x) 和 g(SI) 来计算邻居 k 的安全指数,其中 f(x) 计算事件 x 的严重性,而 g(SI) 根据当前的 SI 和 k 的安全状态返回一个系数。
g(SI)={1 ; SI ≤ σ1 that is, k is Fresh/Secure 1.5; σ1 ≤ SI ≤ σ2 that is, k is Suspicious 2 ; SI> σ2 that is k is Malicious
f(x)={0 ; x is good behavior min(CI × II(x)× g(SI), 1); otherwise
当发生每个i th 邻居 k 的行为观测,其 SI 由监控器计算
SI= ⎧⎨⎩ ∑ i
j= 1 f(wk[j])
i , ifi ≤ W
W
j= 1 f(wk[j])−f(wk[0]))
W , ifi> W.
(3)
5.3. 响应计算与优化
如果入侵检测系统(IDS)报告一个与事件相对应的单个事件,那么Kinesis会计算安全指数(SI),匹配响应策略,并从匹配的策略中选择基于安全指数(SI)的动作。当报告多个事件时,我们遵循相同的程序为每个报告的事件选择动作,并将这些动作的并集作为最终动作集。然而,各个动作集可能是包含的、重叠的,并且彼此之间存在不一致性。此外,在考虑新的动作执行之前,还应检查其与在线动作之间的不一致性。为了解决有限资源系统中的这一问题,我们引入了动作优先图。
动作优先图(APG)是一种有向图,用于描述响应动作之间在有效性方面的优先关系。在这种图中,(i) 每个节点ai表示一个动作,(ii) 边ai → aj表示父动作ai使子动作aj失效, (iii) 黑边ai ⇒ aj表示ai和aj是矛盾动作,并且当发生冲突时执行ai。因此,动作ai的执行会使其所有后继动作失效,而如果aj无法通过ai到达,则表示它们是独立动作。两个动作ai、aj若只能通过一条黑边路径相互到达,则它们存在冲突。图5展示了一个APG示例,其中:重新编程动作对其所有后继动作具有优先权;{记录并分析}彼此相互独立;{重传_数据, 重新认证_数据, 丢弃_数据}存在冲突。我们假设基站(BS)预先为节点配置了所有可能的响应动作及其之间的优先关系。
通过利用动作优先图(APG),算法1计算两个动作集之间的等价性、独立性、交集以及覆盖范围关系。为了从n个不同的动作集{A1,A2,…,An}(每个动作集分别对应于单个事件)中计算出优化的动作集,Kinesis运行一个递归算法,该算法以O1= A1初始化,然后依次计算Oi=cors(Oi−1,Ai),其中i = 2, 3, . . . , n。
算法1: cors() ‐ 优化响应集计算
响应集 A={ai},B ={bi}
Output:优化响应集 O
如果 A= B那么
O← A; A 对 B 是 equivalent
否则 如果 ∀ai, ∃bj,b j → ai那么
O← B; // B covers A
否则如果 ∀ai,∀bi,ai ⇒ bj或反之亦然那么
O ← A(或B); // A contradicts B
否则 如果 ∃ai, ∃bj,ai → bj那么
O ← A ∪(A\B) // A intersects B
else
O ← A ∪ B; // A是 independent到 B
end
5.4. 响应动作的执行
响应动作执行是完全分布式的。低/中等严重性动作由监控节点仅基于自身的决策来执行。高严重性针对被定罪节点采取的行动需要邻域监控节点之间达成共识。在后一种情况下,选定的监控节点(daemon)广播消息以征求其他监控节点的决策,对收集到的回复进行多数投票,然后执行达成共识的行动。某些激进行动,例如重新编程或重新密钥交换,无法在传感器上完成。在这种情况下,守护进程节点会向基站发送经过认证的报告,随后由基站执行该行动。此外,尽管某些行动(如重传_数据,告警_其他节点)可由监控节点自行决定执行,但仍需与其他节点进行交互。在所有这些情况下,监控节点必须发起行动并承担所有相关责任。Kinesis 动态选择最胜任的节点作为守护进程,以确保动作有效性,并避免同一节点始终承担全部工作。
5.4.1. 守护进程的选择。
通过邻近监控节点之间的自组织竞争,选择一个节点作为守护进程。我们方案的创新之处在于,无需在邻居节点之间进行任何消息交换或特殊的时间同步来管理动作执行。每个邻域内的节点都通过一个本地管理的退避计时器(称为动作定时器)独立参与竞争。节点u的计时器值取决于该节点的动作有效性(AE(u)),该值基于以下因素在本地进行估计:(i) 邻域大小,(ii) 一跳链路质量,以及 (iii) 距上次动作的时间。直观上讲,如果一个节点拥有更多具有高质量链路的邻居节点,那么它可以与更多的监控节点交互,从而有助于减少冗余操作。此外,如果一个节点长时间处于空闲状态,则应由其执行动作,以确保邻域内的负载分配。因此,AE(u) 的计算方式如下:
AE(u) ∝ c1 · tl+ c2 · ∑
k∈neigh(u) k∈neigh(s)
L(u, k). (4)
这里,c1, c2为实数,neigh(u)和neigh(s)分别表示节点u和可疑节点的邻居节点, L(u,k)表示节点u与监控器k之间的链路质量,而tl表示节点u距上次动作的时间。动作有效性AE(u)越高,说明节点u所采取的动作越有效。节点u通过将动作定时器的值设置为与 AE(u)成反比来参与竞争,以成为下一个守护进程。我们为此值增加一个较小的随机时间r, 以确保即使两个监控节点的动作有效性值接近——即两者的负载均衡因子(也就是距上次动作的时间)相同,且它们与邻居节点之间的链路质量差异不大时——它们的动作计时器仍具有不同的值。这一额外的小随机因子有助于确保两个监控节点的动作定时器不会同时触发, 从而仅有一个监控节点被选为守护进程。
ActionTimer(u) ∝
1
AE(u) + r.
(5)
因此,具有更优AE的节点拥有更短的退避周期,并在守护进程选择竞争中胜出。当操作涉及传输且邻居节点k侦听到该操作时,该节点将停止其运行的定时器,以避免对同一事件执行冗余操作,并更新其tl和AE值。Kinesis可能允许冗余操作,以提高系统可靠性。例如,假设节点u丢弃了数据包,其某个监控节点重传了这些丢弃的数据包。如果数据流路径中的另一个攻击者v再次丢弃了重传的数据包,那么u的多个邻居节点进行冗余传输可能有助于减轻数据丢失。然而,当 v丢弃数据时,其邻近监控节点会重传数据,这使得u的邻居节点无需再执行冗余操作。我们的实验结果也支持最小化冗余操作的设计,因为在存在多个攻击者的情况下,我们观察到极低的数据丢失率。我们在第6节中进一步研究了冗余操作。
5.4.2. 监控节点间的共识。
为了执行高严重性操作,监控节点之间相互协商,并基于多数投票决定一项操作。在选定响应动作后,守护进程节点在邻域内广播一条经过认证的status_请求_消息。该消息包含 (i) 检测到的攻击,(ii) 可疑节点,(iii) 响应决策,以及 (iv) 使用群组密钥Kg对数据计算得出的消息认证码(MAC)。
在收到消息后,每个邻近监控节点会回复一条经过认证的status_reply_msg,其中包含本地响应决策。守护进程节点计算多数投票结果,并再次进行广播。根据投票决策,守护进程可执行约定的操作,或向基站发送经认证的报告以触发该操作。邻近监控节点还会相互观察,检查彼此是否遵守投票决策,否则将记录该恶意节点的bad行为。
5.5. 响应反馈
多数投票决策会向监控节点反馈其在检测事件和选择行动方面的准确性。如果所达成一致的行动严重性低于某个节点本地确定的行动严重性,那么这意味着发生了误报,并会降低该监控节点的置信度。每个监控节点都会记录自身的误报情况,并更新其CI。请注意,本文不考虑漏报情况。响应反馈也有助于评估针对某一事件所采取行动的有效性。然而,本文未对此方向进行深入研究。
6. 冗余与冲突操作
Kinesis 每起事件执行单一操作的能力,虽然理想,但主要取决于网络拓扑结构等多种因素。正如第8.3节中的实验评估所示,偶尔多个监控节点会同时对同一事件采取行动。对于同一不良事件并发执行多个操作,可能会影响监控节点的电池寿命,而且在极端情况下,如果所执行的冗余操作既具有高严重性又存在冲突,则可能导致网络中的不一致性。
在网络管理员能够控制无线传感器网络拓扑结构的场景中,他或她可以调整节点部署以解决冗余和冲突操作的问题。在此类场景下,Kinesis 目前所采用的守护进程选择技术在安全目标以及节点资源限制方面是最优的。然而,为了应对网络管理员对网络拓扑结构控制有限的情况,我们引入了一种守护进程选择技术,该技术允许通过增加额外内存和通信开销来换取节能和面对冗余和冲突操作时的一致性保障。值得注意的是,Kinesis 的安全目标保持不变。各种资源(内存、能量、通信信道)效率之间的期望权衡,结合具体WSN应用的特定需求,将使网络管理员能够逐案确定哪种守护进程选择技术更为合适。
6.1. 冲突操作分析
首先,我们对 Kinesis 支持的所有操作进行两两分析,以确定哪些操作对彼此存在冲突。形式上,如果两个操作在实现 Kinesis 的安全目标(即最小化数据丢失)时相互阻碍,则将其定义为冲突。
| 表V. 潜在冲突响应措施分析 |
|---|
| no p log ale rt dis ca rd da ta ret ra ns mi td ata tri gg er rea uth en tic ati on tri gg er rou te ch an ge tri gg er mu ltip ath rou tin g su sp en d rev ok e re-pr og ram re-ke y flo od ale rts |
| nop |
| log |
| 告警 discard数据 |
| 重传数据 |
| trigger reauthentication |
| trigger route change triggermultipath路由 |
| 暂停 |
| 撤销 |
| 重新编程 |
| 重新密钥化 |
| flood告警 |
图6总结了我们的分析结果,其中“X”标记了冲突。例如,操作discard_data和retransmit_data的目标是相反的结束结果。如果数据包包含虚假数据,那么重传将导致虚假信息在网络中传播;相反,如果数据是真实的,丢弃数据包则会导致有价值的信息无法到达基站。因此,如果这两个操作由不同的监控节点同时执行,这种冲突可能会使Kinesis更难实现其安全目标。然而,如表格所示,仅有五次冲突操作实例。在本节其余部分,我们将讨论替代守护进程选择技术如何帮助 Kinesis缓解冗余和冲突操作的潜在问题。
6.2. 冗余动机场景
要理解冗余操作现象背后的原因,考虑图6中的网络部分,其中边表示两个节点之间的直接通信。节点18是攻击节点,而节点7、8、9、13、14和29是
监控节点。当节点18丢弃一个数据包时,所有监控节点启动其动作定时器。在此拓扑结构中,两种不同的情形可能导致冗余操作:
(1) “隐藏节点”: 例如,当节点7赢得动作定时器竞争时,它会重传被丢弃的数据,而节点8和节点9在窃听到该操作后会停止其定时器。然而,节点29与节点7之间没有链路,因此相对于节点7的操作而言,节点29是一个“隐藏节点”,当其定时器触发时也会采取行动。
(2) 断连的邻域部分:节点13和节点14与节点7、8、9、29中的任何一个都没有直接连接。因此,它们在节点18邻域中的部分与其他部分是断连的。在这种情况下,无论节点18邻域中哪一部分的节点采取了操作,另一部分都无法监听到该操作。因此,唯一的解决方案是在这些部分之间引入一种动作报告机制。节点3尽管对操作不直接感兴趣(因为它未直接连接到恶意节点18),但仍可将已采取操作的通知从邻域的一个部分转发至另一个部分。对于高严重性操作,将已执行操作的信息传播给其余相关邻居节点显得尤为重要。
本节提出的交替守护进程选择技术以额外内存和通信开销为代价,为两种场景提供了解决方案。从高层次来看,该解决方案由两个部分组成:第一部分通过分析特定事件中监控节点之间的连接性来解决“隐藏节点”问题;第二部分通过自动报告机制来解决断连区域问题,同时仍最大限度地减少通信开销。
6.3. 两跳知识
任何应对冗余操作的解决方案的基础在于,每个节点都需要更清楚地了解其邻域的拓扑结构以及其邻居节点之间的连接情况,以便做出更明智的决策。在网络启动时,每个节点在与其直接邻居相遇的同时,也会获取这些邻居的列表。也就是说,节点 u会为每一个一跳邻居 w ∈ neigh(u) 存储列表 neigh(w)。这被称为 两跳知识。因此,每个节点都了解其两跳范围内的网络拓扑结构。给定一个表示整个无线传感器网络图的关联矩阵 M,节点 u 知道所有且仅知道满足M[u v]= 1 的列 v。
6.4. 连接优势
假设一个节点 u 希望在其直接邻居 b 引发不良事件(例如,丢弃一个数据包)后启动动作定时器。我们将节点 u 的直接邻居中同时也是 b 的直接邻居的那些节点定义为 u关于 b 的本地动作集合,记作 LAS(u,b)。该集合中的节点是 u 直接邻域内唯一会因 b 引发的不良事件而设置动作定时器的节点。
LAS(u, b)= neigh(u) ∩ neigh(b)\ b.
每个节点在知晓其两跳邻居的情况下,可以确定其每个直接邻居与恶意节点b的邻居节点之间的连接程度。我们定义一个节点 v与恶意节点b的邻居节点直接相连的比例为连接比率CR(v,b)。
计算为:
CR(v, b)= |neigh(b) ∩ neigh(v)|/(|neigh(b)| −1).
为了最大化监听到某个动作的节点数量,从而最小化冗余操作的数量,我们的方案确保在动作定时器竞争中胜出的节点是与尽可能多的相关节点相连接的节点。为此,我们引入节点u,b) 的连接优势Adv,该参数用于衡量节点u相对于其本地动作集合中的节点u和b的优势。在给出正式定义之前,我们先对该概念进行非正式介绍。直观上讲,连接优势参数反映了节点u与恶意节点b的其他邻居节点(即监控由后者引发的每个事件的监控节点)之间的连接程度。由于节点u参与了对节点b的监控,这意味着u是b的直接邻居,因此通过网络启动时节点b向节点u提供的两跳知识,b的直接邻居集合(无论它们是否直接与u相连)均为已知。我们形式化地将节点u在本地动作集合LAS(u,b) 中的连接优势定义为一个介于α和 1/α之间的参数化因子,该因子将增加(或减少)u2的动作有效性。
当节点u需要为由节点b引起的不良事件设置其动作定时器时,它需要计算自身的连接优势。因此,它会针对本地动作集合LAS(u,b)中的每个节点(包括自身)计算其连接比率CR。在计算出所有连接比率后,节点可将它们在[0, 1]范围内归一化为归一化连接比率NCR(u,b):
NCR(u, b)=
CR(u, b)− min
w∈LAS(u,b)
CR(w, b)
max
wLAS(u,b)
CR(w, b)− min
wLAS(u,b)
CR(w, b) .
节点 u 最终将使用其自身的 NCR(u,b) 值来确定其连接优势,作为上述范围 [α, 1/α] 内的值:
Adv(u, b)=(1/α − α)(NCR(u, b))+ α.
可以看出,当归一化的连接比率等于1时,连接优势为 1/α;反之,当归一化的连接比率等于0时,连接优势为 α。因此,该函数满足了根据节点与恶意节点的直接邻居之间连接状况的好坏,相应增加或减少动作定时器延迟的要求,以便在赢得竞争后尽可能多地覆盖邻居节点,从而限制冗余操作。
基于Adv(u,b),该替代技术中节点u在由其邻居b引发的不良事件下的动作有效性与动作定时器的方程分别为:
AE(u) ∝ c1 · tl+ c2 · 1
Adv(u, b) (6)
ActionTimer(u, b) ∝
1
AE(u) .
这里,c1,c2 是实数,且 tl 是距上次动作的时间,由 u 执行。
很明显,一个节点可能不会直接连接到本地动作集合中的所有其他节点。这意味着每个节点仅具有关于此类节点会影响每个节点本地计算的值。这是一种有意的设计选择,通过将节点间交换的信息限制为两跳知识,从而在实现高级计算(如连接优势)的同时,限制节点的内存和存储开销。该算法可保证提供一个局部最优解,并且无需与其他节点交互(除了在网络引导时进行初始邻居列表交换),即可高效地完成计算。
6.5. 行动证明
根据恶意节点邻域的具体拓扑结构,存在一些情况:即使通过考虑节点的连接优势,优先选择与恶意节点所有其他邻居连接最紧密的节点,也无法完全解决冗余操作的问题。当所关注邻域中没有任何单个节点直接连接到所有其他节点时,或者在更普遍的情况下,当该邻域被划分为多个不连通的子部分时,就会出现这种情况。此时,某些节点相对于特定执行的操作被认为是“隐藏”的。为应对这类场景,Kinesis 提供的解决方案包含一种通过动作证明向相关方发送自动通知的机制。
虽然确保高严重性操作立即报告给所有相关节点非常重要——以防止邻域其他部分的节点在不知情的情况下执行更多冗余且可能产生冲突的高严重性操作——但对于非冲突性冗余操作而言,主要关注的是不必要的能量消耗。由于增加额外的通信轮次实际上会违背初衷, Kinesis 能够智能地区分这两种安全目标,仅在发生高严重性操作时才激活通知机制。对于非冲突性(即低严重性)的冗余操作,允许多个操作共存更为节能。
我们现在描述该机制如何帮助减少冗余操作的数量。让我们再次分析节点b引发不良事件的场景。多个监控节点将见证该事件,并启动其动作定时器(同时考虑其连接优势)。假设节点 v的定时器首先触发,那么节点v将执行操作A。所有且仅 v的直接邻居将侦听到该操作,并停止其动作计时器。为了解决隐藏节点问题,这些直接邻居中的每一个都将利用两跳知识来检查其任意直接邻居是否相对于节点 v发起的操作A处于隐藏状态,具体步骤如下。不失一般性,设u为这样一个节点。从u的角度来看,相对于由节点 v针对恶意节点 b发起的操作A而言,隐藏的节点是所有满足以下条件的节点 w:即b是它们的直接邻居之一,但v不是。更正式地,这些隐藏节点构成如下定义的集合:
hidden(v, b)={w: b ∈ neigh(w) ∧ v∈/ neigh(w)}.
如果集合 hidden(v) 非空,并且操作 A 与任何其他操作存在潜在冲突(如表V所示),那么节点 u 将生成并广播一个经过认证的行动证明,以使隐藏节点知晓该操作,防止它们执行冗余且可能冲突的操作。
由于该算法是完全分布式的,信息将逐跳传播至所有相关节点,即那些目睹了不良事件但未能监听到所采取操作、并可能试图自行发起操作的节点。需要指出的是,这些节点的数量始终受限于恶意节点的直接邻居数量减1,并且根据拓扑结构的不同,可能远低于此上限。
算法 2: 针对冗余操作的解决方案伪代码(在节点 u 上)
当发生不良事件(b) {我的ae ←计算AE(); // 省略,视为简单 我的adv ←计算Adv(b); 设置动作计时器(我的ae, 我的adv);}
函数 计算CR(v, b){common ←(b的邻居 ∩ v的邻居).size(); common /(b的邻居.size() ‐ 1);}
函数 计算CR(v, b){common ←(b的邻居 ∩ v的邻居).size(); 返回 common /(b的邻居.size() ‐ 1);}
函数 计算Adv(b){对于 v ∈ b的邻居 执行 如果 v ∈我的邻居节点 那么 conn ←计算CR(v, b); 如果 conn <最小 cr 那么 最小cr ← conn; 如果 conn >最大cr 那么 最大cr ← conn; 结束 结束 我的 ncr ←(计算CR(self, b) ‐ 最小cr) /(最大cr ‐ 最小cr); 我的adv ←(1/阿尔法 ‐ 阿尔法) * 我的ncr +阿尔法; 返回 我的adv}
当侦听动作证明(p){侦听动作(p.时间戳, p.A, p.发起 者, p.恶意节点);}
当侦听动作(时间戳, A, 发起者, 恶意节点) {取消动作计时器(); 如果 已见过(时间戳, A, 发起者, 恶意节点) ∨那么 如果 不是是否高严重性(A) 则 返回 ; 结束 隐藏节点 ← ∅; 对于 w ∈我的邻居节点 执行 如果 恶意节点 ∈ w的邻居 且 发起者 ∧ w的邻居 那么 隐藏节点 ←隐藏节点 ∪ w; 结束 结束 如果 隐藏节点 = ∅那么 p ←生成动作证明(A, 发起者, 恶意节点); 广播(p); 结束}
| 表VI. 考虑的响应策略 |
|---|
| 当发生 ‘数据篡改’ |
| 如果严重性(数据 篡改,节点ID)在⋯⋯范围内(0,0.2]那么重传数据 如果严重性(数据 篡改,节点ID)在⋯⋯范围内(0.2,0.4]那么 触发路由变更,重传数据 如果严重性(数据 篡改, 节点ID) > 0.4那么 重传数据, 撤销节点ID |
| 当发生 ‘数据 丢失’ 如果 严重性(数据 丢失, 节点ID) 在⋯⋯范围内 (0,0.2]那么重传数据 如果 严重性(数据 丢失,节点ID)在(0.2,0.4]那么 触发路由变更,重传数据 如果 严重性(数据 丢失,节点ID) > 0.4那么 重传数据, 撤销节点ID |
| 当发生选择性转发 重传数据 ,撤销nodeID |
| 当发生 ‘不一致的 etx’ 如果 严重性(不一致的 etx,节点ID)在(0,0.4]那么 NOP 如果 严重性(不一致的 etx,节点ID)> 0.4那么撤销节点ID |
| on陷洞 撤销nodeID |
7. 实现与配置
我们在TinyOS 2.x中实现了Kinesis。我们采用TinySec [Karlof等 2004]中基于Skipjack加密的CBC‐MAC实现,并将其适配到TinyOS 2.x,以在多数投票过程中计算4字节的MAC。该实现是轻量级的,因为在Mica2节点上仅需0.38ms [Karlof等 2004],而在TelosB平台上所需时间会更短,因为TelosB的处理能力高于Mica2节点。
根据第5.1节中定义的策略语言,策略规则以开关-情况的形式基于事件实现。该策略优化了实施过程。安全状态阈值(σ1, σ2)用于在策略中指定严重程度。为了计算 σ1, σ2, 我们对所有事件影响取平均值,针对不同的攻击速率测量具有该平均影响的安全指数,并根据对攻击速率的容忍度选择相应的值。用于指定策略的特定响应动作集是根据无线传感器网络应用的安全目标确定的。
在 Kinesis 配置中,无线传感器网络管理员使用事件影响映射、影响评分和实系数来配置传感器。某一事件对数据、网络或节点的影响在不同的无线传感器网络之间不会变化,因此事件影响映射是静态的。相反,事件对无线传感器网络服务造成的影响程度可能取决于具体的网络应用。因此,用于计算综合指数的影 响 评 分 和 β 系 数 应 由 管 理 员 根 据 应 用 需 求 进 行 设 置 。 然 而 , 我 们 假 定 这 些 配 置 参 数 在 网 络 生 命 周 期 内 很 少 发 生 变 化 。
8. 仿真结果
在本节中,我们展示仿真结果,以说明Kinesis在不同网络设置下的性能。
8.1. 仿真设置
在仿真中,我们使用TinyOS模拟器TOSSIM。网络拓扑采用对称链路生成。路由协议方面, 我们使用标准的CollectionTree Protocol(CTP)。在实验中,我们考虑了以下应用层和网络层异常及攻击:(i)数据丢失,(ii)数据篡改,(iii)选择性转发,以及(iv)汇合点攻击。针对这些事件所考虑的策略如表VI所示。为了检测事件,我们在TinyOS 2.x中实现了一个基于看门狗监控器的简单入侵检测系统。
为了配置Kinesis,我们对公式(2)中的实系数赋予相等的权重,即βd= 0.34, βn= 0.33, βs= 0.33。每个邻居的滑动窗口大小W设置为100。在第5.4节中,我们已经说明了如何确定σ1, σ2的值。一个数据源每隔2秒周期性地发送一次数据。在每次仿真运行中,结果基于3000次数 据传输进行平均。除非另有说明,我们在所有仿真运行中均使用上述默认值。
8.2. 性能指标
用于评估 Kinesis 的指标如下:
(1)效果性: 由于我们的目标是最小化数据或网络(a nd故 o,n)我们从两个方面展示了Kinesis的有效性:
(a) 基站处的数据丢失率:基站受到事件影响的频率,即基站接收失败的比率。在此背景下,我们将本系统的性能与(i) 无攻击的典型传感器环境和(ii)遭受攻击的网络进行比较,以表明Kinesis能够在存在异常或攻击的情况下,使无线传感器网络恢复到正常运行状态。
(b) 平均数据传输延迟:数据包从源节点发出到抵达基站所需的平均时间。在此,我们将Kinesis的性能与一种无攻击场景进行比较。
(2) 冗余动作优化:邻域内监控节点每次事件的平均动作数量。我们还测量每次事件的冗余动作率,即采取响应动作的监控节点数量与检测到事件的监控节点数量之比。这证明了我们基于动作定时器设计的分布式方案在触发响应动作方面的合理性。
(3) 负载均衡:响应动作执行在邻域中的分布均匀程度。这通过邻域内各监控节点所采取的动作数量之间的标准差来表示。
(4) 能耗: 当Kinesis与入侵检测系统运行时,所有节点能耗的总和。
8.3. 网格网络实验
我们将16到100个节点放置在维度为 4 × 4到 10 × 10的网格拓扑中,节点之间相距1.5米。对于每个网络,随机选择一个数据源和一个攻击者,并对10次运行的结果取平均值。攻击速率为0.1。对于并发攻击,我们在与第一个攻击者相同或不同的邻域中放置第二个攻击者,两个攻击者发起攻击的概率相等。
8.3.1. 单次攻击。
首先,我们展示在发生单次事件(异常/攻击)时网络中Kinesis的性能。
数据_丢失事件 :在这种情况下,一个节点可能是故障的或恶意的,并间歇性地丢弃数据包,而不是将它们转发到基站。图7(a)、7(b)和7(e)–7(g)展示了Kinesis在规模为16到 100的无线传感器网络中发生数据_丢失事件时的性能。如图7(a)所示,Kinesis将受攻击网络的数据丢失率从[0.073、0.103]降低至 ∼0.002,接近于无攻击情况下网络的自然数据丢失率(∼0.0018)。这证明了Kinesis在小型和大型网络中的有效性。
图7(b)显示了平均传输延迟随网络规模呈线性增长的趋势。然而,Kinesis由于动作执行所增加的平均延迟在不同网络中几乎保持不变([39.03,41.607]ms)。由Kinesis 主要由于动作定时器引起。根据公式(4)和(5),动作定时器的值取决于邻居数量 及其链路质量。在实验中,不同网络的邻域大小从 3 到 5 不等,链路质量值位于 [0.8, 0.976] 范围内。邻域大小和链路质量的综合效应使得不同网络中的动作定时器值几乎保持不变。因此,传输延迟的增加趋势主要是由于网络规模增大导致路由路径长度增加所致。
图7(e) 显示,Kinesis 并不总能在每次事件中像理想情况下那样仅执行一次操作。偶尔,它平均每次事件会触发多达 1.4 次操作。然而,如图 7(f) 所示,冗余操作的比率被限制在 0.11 以内。如图 7(g) 所示,相邻监控节点操作次数的标准差([1.93, 8.41])较小, 表明 Kinesis 在负载均衡方面取得了很高的成功。
为进一步分析Kinesis的可扩展性,我们在100节点网络中测量了其在不同攻击速率下的性能,并在图7(c)、7(d)、7(h)和7(i)中展示了Kinesis即使在极高攻击速率下仍能有效维持网络运行的能力。正如预期且与先前结果一致,Kinesis能够抵御数据丢失攻击,并使网络恢复到正常运行状态。图7(c)显示,Kinesis将遭受攻击的网络的数据丢失率从[0.02、0.52]降低至 ∼0.0001,证明了其在较高攻击速率下的有效性与可扩展性。图7(d)揭示了随着攻击速率升高,平均传输延迟呈线性增长趋势。即使在不同攻击速率下, Kinesis引入的平均延迟也微乎其微([12,223]ms)。
图7(h) 显示每次事件的平均操作次数为 ∼1.5。每次事件的动作冗余受限于 0.16。然而,这两个数值几乎不随攻击速率的变化而变化。这是因为动作次数取决于邻居节点之间的链路质量及其动作定时器值的差异。图7(i) 显示邻居节点执行动作次数的标准差较小, 这表明 Kinesis 的分布式方案在触发动作执行方面的有效性。
数据_篡改攻击 :在此类攻击中,恶意节点在将数据包转发给基站之前,选择性地修改其中的数据值。我们对数据篡改攻击进行了仿真,发现其结果趋势与数据丢失事件中的趋势相似。随后,我们将展示 Kinesis在并发发生数据_丢失+数据_篡改事件时的性能,因此此处不再单独报告相关图表。
选择性_转发攻击 :在选择性转发攻击中,监控节点最初会观察到攻击者造成的数据丢失,因此会重传被丢弃的数据。一旦检测到选择性转发攻击,守护进程便会向邻域发送一个 status_请求_消息。邻近监控节点通过发送它们自身关于嫌疑节点的行动决策来回复, 即发送一个 status_回复_消息。根据来自回复的多数投票决策,守护进程可能会向基站发出撤销请求。当基站收到该请求后,便会在网络中分发一条撤销命令,所有节点在接收到此命令后将攻击者从路由路径中排除。
图8报告了Kinesis在不同规模网络中遭受选择性转发攻击时的性能。在选择性转发攻击中,无论攻击者是否已被撤销网络权限,Kinesis都会重传被攻击者丢弃的数据包。因此, Kinesis将受攻击网络的数据丢失率降低至与无攻击情况下网络的自然数据丢失率相当的水平。图8(a)证实了这一结论,显示启用Kinesis后,受攻击网络的丢失率与自然数据丢失率几乎相等。
图8(b) 显示了在发生 Kinesis 选择性转发攻击时,传输延迟呈现出一种有趣且显著不同的趋势。在这种情况下,平均传输延迟与数据丢失事件相比要低得多,并且非常接近与自然数据传输延迟相比。为了更好地分析性能,我们在图8(c)中展示了随时间变化的平均传输延迟。最初,当监控节点尚未检测到选择性转发攻击,而仅观察到数据丢失时,它们会重传丢弃的数据包,从而增加数据传输的延迟。在第1755个数据包处完成对攻击者的撤销后,不再存在攻击,因此不会因响应执行而产生延迟。
图8(d)显示了在邻域内进行多数投票所交换的控制消息的平均数量(state_req_msg+status_reply_msg)。state_req_msg为27字节,state_reply_msg为35字节。每次多数投票的控制消息数量为 ≤6.2个数据包。然而,该数量与邻域大小成正比,因此除非邻居数量发生变化,否则不会随网络规模变化。
图8(e)–8(g)显示,平均动作数量、动作冗余和负载分布测量结果与先前的实验一致, 且可以以类似的方式进行解释。
对于selective_转发攻击,监控节点始终就撤销可疑节点的决定达成一致。执行多数投票并执行决定动作的平均时间为 ∼96.4ms,其中大部分时间由动作定时器值提供。
陷洞攻击 :为了模拟此攻击,我们修改了CTP协议,使攻击者能够广播经过其自身的低代价路由路径。一旦攻击者吸引了邻域内的所有数据,便以0.2的速率丢弃数据。
在Kinesis中,当监控节点听到不一致的路径代价广播时,会怀疑发生潜在的陷洞攻击, 这将导致嫌疑节点的安全指数更新,但作为响应采取无操作。在后续数据包丢弃观察期间, 监控节点会重传被丢弃的数据,并在攻击被确认后最终撤销恶意节点。图9(a)显示, Kinesis将数据丢失率降低至 ∼0.0015。同时,由于快速撤销攻击节点,传输延迟更接近自然延迟,如图9(b)所示。需要注意的是,陷洞攻击通常会引发路由环路,导致高达3.5%的数据丢失。通过撤销攻击者,Kinesis使无线传感器网络再次稳定。
8.3.2. 并发攻击。
在并发攻击实验中,我们考虑两种情况:两个同时但独立的攻击者和两个共谋攻击者。
—在存在两个并发但独立的攻击者的情况下,我们考虑一个攻击者导致data_丢失,另一个攻击者在 10× 10网格WSN中以不同速率进行data_篡改。如图10所示,Kinesis在所有方面均表现出与单次攻击场景一致的行为。因此,Kinesis在并发和高频率攻击者下有效。
—接下来,我们考虑两个共谋攻击者执行陷洞和选择性_转发(SF)攻击。当陷洞攻击者被撤销时,路由路径变化使得数据通过SF攻击者进行数据路由,然后以0.5的速率丢弃数据,反之亦然。
图11展示了Kinesis在此类场景下的表现。当节点数量等于16时出现的不规则性是由于撤销后暂时的路由不稳定所致。
8.3.3. 变化的攻击者数量。
为了进一步展示Kinesis的可扩展性,我们呈现了其在多攻击者环境中的性能。在此,我们考虑数据_丢失事件,并将攻击者数量从2%变化到100节点网络中总节点数的20%。图12(a)显示,得益于Kinesis,数据丢失率仍保持在0.009以下。由于Kinesis的作用,平均传输延迟在[122.33,189.46]ms范围内变化,如图12(b)所示。该结果与早期结果一致。
8.3.4. 能耗。
我们在各种事件发生时,测量并比较了在部署Kinesis(以及入侵检测系统)的情况下和未部署Kinesis的无攻击场景(基线)下无线传感器网络的总能耗。在能耗测量中,我们考虑了MICAz平台,并使用PowerTOSSIM z [Perla等人 2008]插件。由于 PowerTOSSIM z 的可扩展性限制,我们考虑一个包含一个源节点和一个攻击者的 6× 6网格无线传感器网络。
在启用Kinesis的系统中,由于窃听是无线传感器网络固有的特性,因此不会产生开销。在TinyOS中,无线通信协议栈要求节点接收并处理邻域内传输的所有数据包,以判断该数据包是否发往自身。TinyOS还提供了Receiver [Levis 2006]接口,允许在窃听到传输中的消息时执行相应操作。因此,节点唯一的能量开销来自于入侵检测系统和Kinesis操作。
| 表VII. 无线传感器网络在启用和未启用Kinesis入侵检测系统时的总能量消耗+ |
|---|
| 能耗 (×107毫焦) |
47

被折叠的 条评论
为什么被折叠?



