靳紫阳,刘玉梅
哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 150001
相比于传统的端到端的通信协议,机会网络具有在通信的过程中允许存在不完整的通路[1]、允许较高的时延、允许网络中断等特点。机会网络最早源于延迟容忍网络(delay-tolerant network,DTN)和移动自组网(mobile ad-hoc networking,MANET),具有此2 种网络的特征。机会网络在进行消息传输的过程中无法预知完整的传输路径,是通过使用节点的移动形成的可通信机会来实现传输。它通过在传输层和应用层之间加入一个束层来实现消息的存储和转发功能[2]。这样的方式使得机会网络在野生动物追踪、车联网、灾难应急或者某些恶劣条件下能够发挥很好的作用[3]。
但是,机会网络在通信过程中不存在确定的网络拓扑,也没有类似基站的枢纽,这就导致机会网络很容易遭受到攻击。攻击一般是由机会网络内部的节点发起的,可以称之为恶意节点[4]。近年来,越来越多的学者对机会网络的安全问题进行了研究。文献[5]中根据贝叶斯定律,提出了基于反馈节点信任度的信任评估模型来提高机会网络中节点间通信的安全性与准确性。文献[6]提出了一种基于信誉度惩罚策略的博弈模型,以此来降低机会网络中节点自私行为的影响。文献[7]提出了节点的动态信任模型来降低自私节点和恶意节点的影响。
黑洞攻击[8]是机会网络中常见的一种攻击方式。黑洞攻击的恶意节点在接收到其他节点传递的消息之后把接收到的消息进行删除,并不会协助其他节点进行消息的传递。这将严重降低机会网络的性能,甚至导致网络的崩溃。
本文针对黑洞节点提出了一种基于节点信誉值的路由(reputation-based secure routing,RBSR)算法。RBSR 算法主要利用节点的历史交互信息,基于节点的行为对节点信誉值进行评估,根据相遇节点的信誉值来修改该节点的可信度,其他节点将不会传递消息给可信度较低的节点。最后在机会网络仿真平台(opportunistic network environment, ONE)上进行仿真并与其他算法进行对比,验证了该算法能够提高机会网络的安全性并保障机会网络的性能。
为了评估节点的信誉值,需要使用所遇到节点的历史交互信息。RBSR 算法中使用相遇记录来存储节点在之前所遇到的节点以及消息的转发情况[9]。
相遇记录由7 部分数据组成:
式中:Ei,j为节点i与节点j相遇时的相遇记录;iid和jid为节点的编号;si为节点i给该记录分配的编号;sj为节点j给该记录分配的编号,可以用来防止记录被随意添加和删除;t为记录创建时间;NSL和NRL中存储着消息的相关信息,NSL为发送的消息信息,NSL=<Mm|节点i发送给节点j的消息>,其中Mm=<mid,tTTL,ifrom_id,ito_id,tbuild>,包含了消息的名称mid、消息的生存时长tTTL、消息源节点ifrom_id、消息的目的节点ito_id和创建时间tbuild;NRL存储的是接收到的消息信息,NRL=<mid|节点i从节点j接收的消息>。
为了防止相遇记录被节点自身随意地修改,采取了文献[10]中所采用的方法,使用一对公私钥对相遇记录进行加密。
对于信誉值的计算是基于节点的行为进行评估的。机会网络中移动的节点在大多数情况下是由人来携带的,当人携带这些终端进行移动时,不可避免地将自己的移动属性代入到节点的移动当中去。因此,本算法在对节点的信誉值进行评估时利用节点的社会属性[11]。
对于节点信誉值的评估需要使用相遇记录中收集到的信息。节点在移动过程中所遇见的节点、进行的消息传递等行为都可以在相遇记录中进行查询。根据相遇信息,每个节点都可以对机会网络中的其他节点进行信誉值的评估,信誉值主要包括节点的相似度、节点的亲密度、团体合作贡献度3 个部分。
节点相似度指的是节点i和节点j对于机会网络中黑洞节点和可信节点判断结果的相似程度。对机会网络中节点的判断结果越相似,该节点越可信,信誉值越高:
式中:VsimilarDegree为节点i计算得到的与节点j的相似度,NNumTursti,j为节点i和节点j都信任的节点数,NNumTursti为节点i所信任的节点数,NNumNoTursti,j为节点i和节点j都不信任的节点数,NNumNoTursti为节点i不信任的节点数。节点i对于节点j的相似度评价和节点j相对于节点i的相似度评价有可能不相同。
在人的社会性活动当中,人与人之间的关系越亲密,那么2 个人之间的信任也会越深。与此类似,节点之间的亲密度也可以在一定程度上展示节点的可信任程度。因此,将节点的亲密度也选作对于节点信誉度的评价标准之一:
式中:VintimateDegree为节点i对于节点j的亲密度的评价,NNumMessagefromj为节点j所接收的来自节点i的消息数量,NNumMessagesumj为节点j所接收的全部消息数量。本文中对于机会网络中节点亲密度的定义是在所有的相遇记录中2 个节点间消息交换占所有消息数的比例。节点的亲密度的评价是单向的,即节点i对于节点j的亲密度评价和节点j对于节点i的亲密度评价是不相同的。
在人们的社会性活动当中,每个人对整个团体的贡献程度都是重要的。对于机会网络而言,团体合作贡献程度能够显示出该节点对整个机会网络消息传递的作用,该参数对于辨别出黑洞节点能够提供参考。对于机会网络来说,丢包率是一个重要的参数,可以根据丢包率来对团体合作贡献程度来进行量化:
式中:Pi,j为节点i通过检查节点j的相遇记录计算的节点j在一段时间内对于需要其转发消息的丢包率,Nreceive为统计的节点j的接收消息总数,Nsend为节点j所发送的非来自自身的消息总数。
根据丢包率计算团体合作贡献度:
式中:VcoppDegree为节点j的团体合作贡献度,NsendAll为发送的消息总数。当Nreceive=0 时说明该节点发送的消息全部来自于自身,因此,团队合作贡献度应该与其发送的消息总数成反比,即该节点发送的消息越少其团队合作贡献度越高;当Pi,j=0 时,此时机会网络处于理想的状态,节点j对于团体的贡献值的达到了最大,因此,其团体合作贡献度设置为1;当Pi,j<1 时,说明在机会网络传递的过程中出现了丢包的状况,而且其丢包率越高则其团体合作贡献度越低,因此,团体合作贡献度应该与节点的丢包率成反比,且应该小于1;当Pi,j=1 时,说明该节点将所有接收到的消息都进行了丢弃,此节点处于完全不可信的状态,则可将其贡献度赋值为0。
完成节点的相似度、亲密度以及团体合作贡献度的计算之后,将此三者进行加权求和,得出该节点的信誉值:
式中 α、 β、 γ为各个组成部分所占的比例,它们三者的值都是在0~1 且α+β+γ=1。
RBSR 算法是通过节点的相遇记录收集节点的行为信息,根据节点的行为对节点的信誉值进行评估。利用信誉值可以计算节点的可信度,正常节点将不会向可信度低的节点传递消息,以此来降低消息被黑洞节点接收的概率,提高机会网络的安全性。
RBSR 算法的路由结构如图1 所示,该算法主要分为3 个模块:在第1 个模块节点将会收集历史交互信息,生成相遇记录,并将相遇记录存储在节点的缓存中;第2 个模块会通过遍历收集到的相遇记录进行信誉值的计算,根据得到的信誉值来修改该节点的可信度;第3 个模块将会进行转发判决,并将可信度较低的节点放入黑名单。
图1 RBSR 路由结构
如图2 所示,在2 个节点相遇之后,可以将相遇流程分为3 步。
图2 节点相遇流程
1) 首先是要获取彼此的相遇记录。在节点相遇之后,2 个节点可以从彼此的节点缓存中读取相遇记录的信息。
2) 在进行相遇记录的交换之后,要对相遇记录进行遍历,获取计算节点信誉值所需要的参数。根据所获得的参数计算节点的相似度、亲密度和团体合作贡献度。根据这3 个参数合成最终的节点信誉值,并根据计算得到的信誉值对节点的可信度进行修改。大于阈值θ的使可信度增加0.1,否则可信度减少0.1。
3) 最后是转发判决。对节点的可信度进行修改之后,根据该节点的可信度进行转发判决。如果该节点满足不在黑名单内且其可信度大于阈值µ的要求可以直接进行消息的传递。如果不满足该要求,则需要判断其可信度是否大于更大的阈值η,如果大于可以将其从黑名单内移除并传递消息,否则将其加入黑名单。
在初始状态下,节点的可信度设置为阈值θ,即处于基本可信状态。经过节点的移动,节点的可信度将会不断发生变化。此外,在实现RBSR 算法时,将RBSR 算法与Prophett[12]算法进行了结合,在2 节点相遇时,会首先按照RBSR 算法判断该节点是否满足转发的要求,如果满足则会继续按照Prophet 算法选择传递的路径,如果不满足则不会进行消息的传递。
本文采用了机会网络仿真平台对所提出的算法进行仿真。RBSR 算法针对的是黑洞攻击,本次仿真参考文献[13]在ONE 仿真器上对节点的属性进行了扩展,实现了黑洞节点;同时,本课题对仿真器的报告部分进行修改,使其可以统计黑洞节点的攻击信息。
本次仿真主要是通过改变黑洞节点所占的比例来进行观测,仿真所采用的参数如表1 所示。
表1 仿真参数
对于仿真结果的分析主要选择了消息投递率、消息删除比例和平均交付时延这3 个指标进行比较。同时选择了单副本的Prophet 算法和多副本的Epidemic[14]算法来与RBSR 算法进行对比。同时为了降低随机因素对仿真造成的影响,本文通过改变ONE 仿真器中的随机种子数来进行多次测试,求取平均值作为最终的结果。在仿真初期仿真器运行不稳定,舍弃前1 000 s 的仿真结果。
消息投递率[15]是机会网络中极其重要的一个评价标准。它指的是在规定时间内成功接收的消息占所有产生消息总数的比例。投递率越高说明算法传输消息的效率越高。当投递率较低时,该机会网络将会失去作用。对比RBSR 算法、Prophet算法和Epidemic 算法,其结果如图3 所示。
图3 不同算法消息投递率对比
由图3 可知:随着黑洞节点比例的增加,Prophet 算法的投递率急剧减小并处于较低的水平,黑洞节点会大幅降低该算法的性能;而Epidemic 算法和RBSR 算法的投递率在初期降低较慢,之后也快速下降,这是因为Epidemic 算法是多副本路由协议,其投递率受黑洞节点影响较小,但是随着黑洞节点的增加,正常节点数不断减小使得投递率降低。RBSR 算法虽然是单副本协议,但是能够识别出黑洞节点,使其无法接收并删除消息,因此前期投递率也降低较慢,后期由于黑洞节点数过多,中继节点不足,导致正常节点之间已经无法正常传递消息。
消息删除比例的定义是被黑洞节点所删除的消息占所有生成消息总数的比例。为了保证算法的效能,必须尽可能地降低消息的删除比例。消息被删除得越多,那么该机会网络受到的攻击程度也越大。如果不向黑洞节点发送消息,那么消息删除比例将不会发生大幅度的变化。
图4给出了随着黑洞节点的数目的增加,Prophet 算法中的消息被大量删除;RBSR 算法中由于黑洞节点已经被识别,无法正常接收消息,因此消息被删除的比例较低;而Epidemic 算法是多副本路由,并未对其消息删除比例进行统计。
图4 不同算法消息删除比例对比
平均交付时延[16]指的是网络中所有到达目的节点的有效数据包从创建到被成功接收所花费的平均时间,也是一个重要的参数。仿真结果如图5 所示。
图5 不同算法平均交付时延对比
在图5 中,RBSR 算法的平均交付时延在前期基本不发生变化,这是由于黑洞节点被发现,无法接收消息并删除;之后由于黑洞节点过多,正常节点之间传递消息的难度增大,传输时延增加。Epidemic 算法随着黑洞节点比例的增加,传输时延不断增大,是因为随着黑洞节点数增加,正常节点数不断减少,增大了消息的投递难度。Prophet 算法的平均传输时延急剧下降是因为黑洞节点删除了接收到的消息,只有经历较少中继节点的消息才能完成投递。
本文提出了RBSR 算法,它主要是基于节点的行为来计算每个节点的信誉值,通过信誉值判断节点是否可信。在计算信誉值的时候先通过相遇记录来收集信息,之后根据可信度和黑名单判断是否进行消息的传递,然后在ONE 仿真器上对该算法进行了实现。与Prophet 算法和Epidemic算法进行对比,通过对比消息投递率、消息删除比例、消息的平均传输时延验证了该算法能够很好地抑制黑洞节点对单副本协议造成的影响,保障机会网络的投递率。
但是在机会网络中还存在许多其他种类的恶意节点,如泛洪攻击、修改数据包攻击等。为了进一步保证机会网络的安全,抑制多种恶意节点的攻击也是下一步的研究方向。