杨长春,章 阳,陈友荣,缪克雷,任条娟,王章权
1.常州大学 计算机与人工智能学院,江苏 常州 213164
2.浙江树人学院 信息科技学院,杭州 310015
随着5G 商用的发展,自动化驾驶产业和车联网(Ⅰnternet of vehicles,ⅠoV)产业进入黄金发展期。在车联网中每一辆个体车均可作为节点活动,会产生大量且类型不同的数据,并进行相关数据广播与共享,从而提高智能交通的服务质量。但是在数据共享方面车联网面临恶意节点共识攻击、隐私窃取攻击等安全挑战,会对车联网的数据共享产生不利影响,甚至形成数据“孤岛”的困境[1-2]。区块链技术具有去中心化和匿名性等特点,遵循同一记账交易规则并在一致性共识算法下达成一致意见,因此可采用区块链技术确保车联网中车辆或道路基础设施收到的消息是合法的,并对消息进行认证、完整性保护和隐私保护。
在区块链中核心要素是一致性共识算法,可直接决定其在应用领域上的交易吞吐量[3]、交易时延[4]等特性。目前国内外学者提出DPOS[5](delegated proof of stake)、PBFT[6](practical byzantine fault tolerance)、CDBFT[7](credit-delegated byzantine fault tolerance)、RPCA[8](ripple protocol consensus algorithm)等一致性共识算法。其中,DPOS 采用委托权益证明机制,在这种共识方式下,恶意节点可在前期通过离线方式累积币龄,再重新上线对当前区块共识进行攻击。PBFT 解决实用拜占庭容错问题,但是不能有效排除异常节点,并且实现数据的一致性需要大量的通信资源,效率较低。CDBFT虽然改进PBFT,且建立一套信用评价机制和投票机制对节点进行筛选,但恶意节点可以选择在前期累积信用值,获得更多的权利后对共识过程发动攻击。总之,DPOS、PBFT,CDBFT 均研究静态节点的一致性共识,但存在共识效率较低和异步网络节点通信时延高,因此不适用于拓扑变动频繁的车联网。此外,Schwartz等人[9]首次提出了RPCA。该算法通过可信任节点列表完成区块共识,每隔几秒能应用到所用节点,具有高效维护整个网络的有效性和一致性等优点。虽然RPCA等共识算法能形成节点间的共识一致性,但是由于区块链网络是分布式网络,节点具有动态加入和退出网络、拓扑结构动态变化等特性,给恶意节点的攻击创造了条件[10]。恶意节点通过女巫攻击、日蚀攻击等攻击,伪装成正常节点参与共识或通过多个恶意节点偏差诱导正常节点的共识结果和效率,从而发起针对车联网环境的虚假数据传播和车辆跟踪等恶意攻击。该类攻击具有隐蔽性强、周期长、危害性大等特点,将直接导致车辆做出错误决策或操作,甚至酿成交通事故。
综上所述,目前RPCA仍存在以下两个问题:(1)主要考虑静态节点的区块共识问题,没有考虑具有节点动态移动的车联网场景,且其共识效率较低;(2)恶意攻击会影响到共识的安全和效率,但是目前Ripple较少涉及对恶意节点的检测。因此针对上述问题,在RPCA的基础上,提出面向恶意节点攻击的车联网节点一致性共识算法(node consistency consensus algorithm for malicious node attacks in ⅠoV,NCCA)。简单地说,该文的贡献如下:
(1)针对一致性共识算法,提出可信任节点列表改进和验证节点确认方法。该方法通过验证节点计算区域网络可通信列表中全部节点的信用值分数,确定可信任节点列表,并定期更新验证节点。改进交易集共识,采用赞成票和弃权票的投票机制,并通过票型权重的方式计算交易的投票票数,从而选择出需要进行共识的交易集。改进共识过程中区块验证的节点选择,主要通过选择验证节点完成共识,从而提高节点参与区块共识的积极性,提高交易吞吐量,降低交易时延。
(2)针对恶意节点攻击,结合车联网网络结构提出多区域协同检测和单区域内局部检测的恶意节点二轮检测机制。第一阶段进行多区域检测,即根据节点的投票效率、交易时延、离线时间、加入可信任列表次数和提供无效区块次数的评估因素,并通过FCM(fuzzy Cmeans)聚类实现节点的信用等级划分,可初步划分出恶意节点,提高恶意节点检测的查全率。第二阶段进行局部检测,即通过对第一轮检测出的恶意节点,与其周围邻接节点之间相互通信后节点的状态差异值,进一步确认恶意节点,从而提高恶意节点检测的查准率。对检测后的节点执行赋权和停权机制,即赋予验证节点和正常节点相应权利,对恶意节点根据其检测出的次数,逐步加重其停权的时间,甚至剔除其网络,从而降低恶意节点对网络共识的影响。
目前部分学者侧重于在主流共识算法的基础上,研究能适用于车联网时效性、异构性等特征的共识算法。如文献[11]在PBFT 共识算法的基础上,改进基于时间序列和八卦协议,实现智能交通中车联网的信息通信和共识认证。文献[12]提出一种累积信任证明机制,即根据车联网中特定路侧单元的累积信任选择特定节点进行共识,并通过每个车辆向多个目标发生事务,从而避免单点故障。文献[13]提出一种基于车联网协同拥塞避免机制的改进PBFT共识算法,通过对验证节点进行分组,选择信道质量优的节点作为先导节点,并用两阶段过程代替传统三阶段,从而提高算法性能。文献[14]在RPCA 的基础上,创建本地物联网验证器,而不是使用现有的公共验证器,从而消除网络干扰。文献[15]提出节点间连接状态的评价机制,从而应对节点间通信质量的变化对区块共识效率的影响。由于RPCA 的共识效率远远高于其他共识算法,且提出的信任节点列表符合车联网网络环境,可满足短时间内交易响应和较高交易吞吐率需求,较其他共识算法更适用于车联网网络环境。但是RPCA 等共识算法均易遭受恶意节点的身份伪装和潜伏扩散攻击,因此部分学者侧重于研究针对共识算法的恶意攻击检测算法,如文献[16]提出一种自私挖矿攻击检测机制。该机制通过分析网络中交易的大小,序号和区块挖掘成本,为每个交易设置预期确认高度。最终根据预期的交易确认高度和区块发布高度实现恶意检测。文献[17]提出一种基于深度学习的攻击检测算法。该算法通过主成分分析方法进行特征提取,通过神经网络的多层感知器算法与训练集获得检测模型。文献[18]在随机森林分类算法的基础上,收集正常情况和恶意情况的数据,提出一种检测攻击者控制节点的检测算法。文献[19]提出一种基于雾计算的分布式入侵检测算法。该算法选择互信息特征选择,并通过智能合约的方式实现攻击检测。文献[20]在共识机制中采用反对票,提出将节点信用分数与等级作为选举依据等方法,从而加快恶意节点的检测效率。但是文献[16-20]都是考虑静态节点,没有考虑车联网中节点移动导致网络动态变化,难以高效快速检测恶意节点,无法直接应用到RPCA的恶意节点检测。
综上所述,针对恶意节点攻击,目前算法侧重于通过对静态节点的状态检测,而对于车联网环境中动态节点的研究相对较少,存在无法全面高效检测到恶意节点的同时实现高效共识等问题。
如图1 所示,在由车联网节点(车载智能终端)、基站和云服务平台组成的车联网中,车联网节点易遭受到恶意节点攻击。即恶意节点伪造成不同的身份,通过多个恶意节点围绕网络中某一正常节点进行信息偏差诱导,从而在网络中自身和所诱导节点执行恶意行为,如共识过程中多次延时或忽略正常节点消息行为,发送冲突虚假消息和多次执行恶意投票行为等,最终实现对网络正常共识的干扰与攻击。
图1 恶意节点攻击场景Fig.1 Malicious node attack scenario
如图2所示,针对上述恶意行为,结合基站的部署,将车联网网络划分若干个蜂窝单区域。考虑车联网节点划分为验证节点、正常节点和恶意节点三类,且当车联网网络启动时,每个单区域内通过节点投票,选举出单区域初始验证节点并建立可信任列表。其次,由验证节点对区域内其他活动节点的行为进行评分,并在可信任列表中更新信用得分高的节点。接着,由验证节点对交易集进行投票和区块验证共识。最后,经过几轮共识后,为实现恶意攻击,恶意节点表现出异常数据,因此由验证节点对恶意节点进行恶意节点二轮检测,并对检测后的节点进行赋权和停权限制,从而保证区块共识。
图2 整体结构示意图Fig.2 Overall structure diagram
同理,由多个单区域验证节点投票选举出多区域初始验证节点,并建立多区域节点可信任列表,多区域后续工作流程同子区域流程基本相同。但是NCCA 仍需要解决以下三个问题:一是如何结合节点的行为特征和具体情况等信息,实现可信任列表的更新和验证节点的确认;二是如何考虑验证节点在交易集和区块共识中的合理安排,保证区块共识效率;三是如何进行恶意节点的检测,在保证分区情况下提高恶意节点的查全率与查准率。这三个问题的具体解决如下。
在RPCA共识过程中,验证节点都会维护一个信任节点列表,且只接受来自信任节点列表中节点的提案。考虑到RPCA 虽然比较高效,但是其防攻击能力较弱。恶意节点可向正常节点发送冲突消息,忽略或延迟正常节点消息,导致网络存在分叉风险并且让共识算法失去活力,此时只能重启系统,这将会造成巨大损失。为解决RPCA易遭受恶意节点攻击问题,NCCA改进可信任节点列表,即当网络启动时,由单区域中所有节点进行自主投票选取N1个区域初始验证节点。各单区域初始验证节点投票组成多区域初始验证节点列表。该列表中节点投票选择N2个多区域初始验证节点。若出现节点票数相同的情况时,则优先选择算力较大的节点确定为初始验证节点。在确认完初始验证节点后,区域内所有验证节点通过公式(1)计算区域网络可通信列表中全部节点的信用值分数,当节点信用值分数超过预定阈值时,即该节点加入其可信任列表,根据节点信用值得分高低顺序进行添加。
其中,SCi,j表示第i个验证节点的可通信列表中第j个节点的信用值得分,CRi,j表示第i个验证节点的可通信列表中第j个节点的历史信任值。δi,j表示第i个验证节点的可通信列表中第j个节点的通信次数,ωi,j表示第i个验证节点的可通信列表完成第j个节点的添加时所经历过的中间传递损失因子。
验证节点需在规定的时间戳内完成事务验证,若产生超时情况,则采取2.3节中的赋权和停权机制,并更新该节点CR值。如果出现多个得分相同的节点,则随机选择节点加入可信任列表,同时将可通信列表中未能成功加入可信任列表的其他验证节点,组成备用可信任节点群。当可信任列表中的节点异常或出现意外无法正常工作时,则从备用可信任节点群中选择节点进行切换。如当一次更新替换可信任列表中的验证节点数量过高时,导致可信任列表中剩余验证节点数量低于预设阈值,则可能发生了网络分叉问题,这时便可以通过备用可信任节点群和剩余高信用值验证节点交叉验证,从而实现对可信任列表的维护与保障事务处理效率。同时,经过一定时间后,区域内验证节点根据自身可信任列表中的节点信用值分数,重新投票选择N1个验证节点,并经过所有验证节点验证通过后进行验证节点的更新。
每个验证节点会不断收到从网络发送过来的交易,通过与本地账本数据验证后,将不合法的交易直接丢弃,合法的交易与之前未确认的交易汇总成节点本身的交易候选集。验证节点收到其他验证节点所认可的交易提案后,与自身的交易集进行对比,有相同交易则交易获得票数一票。考虑到RPCA 的交易集需要验证节点进行多轮投票,且在最终达成共识的交易集中每笔交易都至少获得β1的验证节点认可。因此NCCA在保证共识安全性的前提下,对投票机制采用赞成票和弃权票,允许验证节点对交易投出弃权票,并通过票型权重的方式计算交易的投票票数,削弱恶意节点验证风险,从而在保证交易安全的前提下,提高对恶意交易的筛选与共识安全。具体票数计算公式如下:
其中,vote_number表示交易的投票票数,vote_yes表示该区域中针对交易投赞成票的数量,vote_no表示该区域中针对交易投弃权票的数量,ζq表示对交易进行投票的节点身份q(验证节点、正常节点、恶意节点)的权重,ζyes和ζno表示所对应节点身份中票型的权重因子,且ζyes+ζno=1,每笔交易按照投票结果从高到低进行排序。为减少RPCA共识轮次,达到总票数阈值v1后无须再等待验证直接确认交易,达到阈值v2至v1范围内的交易继续等待其他验证节点的验证,进入下一次确认的判断,否则将当前第一轮小于阈值v2和第二轮小于阈值v1的交易放弃,从而避免双花攻击,保证交易的安全性。最终确定交易集共识的最终结果。
在区块验证过程中,采用轮盘赌选择法随机选择交易集中高信用值的验证节点负责区块生成。同时负责区块生成的验证节点计算哈希值并将所得值发送给其他验证节点,然后统一收集反馈信息,当反馈信息中的认可比例达到一定阈值β2,则表明该区块达成验证共识,最终将区块写入到链上。
按照《兽用消毒剂鉴定技术规范》[8],配制成中和剂:为含0.5%卵磷脂、0.5%硫代硫酸钠、3%吐温-80及磷酸盐缓冲液,再以金黄色葡萄球菌或白色念珠菌为受试菌,分6 组进行中和剂性能的鉴别,具体分组如表1 所示。
由于RPCA中恶意节点偏向于虚假投票多个消息、延时或不进行消息验证,其存在较高的隐匿概率,因此为保障共识算法的查全率与查准率,NCCA提出包含多区域协同检测和单区域内局部检测的恶意节点二轮检测机制,并对检测后的节点执行赋权和停权机制,从而提高恶意节点的查准率和查全率,具体内容如下:
如图3所示,第一阶段检测为多区域协同检测。由多个区域内选择具有较大算力的验证节点作为多区域验证节点。由多区域验证节点获得所代表多个区域节点的交易时延、投票效率、离线时间、加入可信任列表次数和提供无效区块次数等评估因素,进行评价值评分。由于各评估因素中含有模糊评定,如不同情况下的交易时延,因此通过FCM聚类[21]计算每组评估因素在0-1间的隶属度,并确定其属于正常节点和恶意节点这两个簇的程度。同时该验证节点通过公式(3)计算各簇类的评价值,将簇类评价值低的簇类标记为恶意节点,另一个簇类节点标记为正常节点。
图3 恶意检测流程图Fig.3 Malicious detection flowchart
其中,Vˉi表示第i个簇的得分,αij表示第i个簇内第j个节点的加入可信任列表次数,μij表示第i个簇内第j个节点的投票效率,υij表示第i个簇内第j个节点的提供无效区块次数,χij表示第i个簇内第j个节点的交易时延,CNi表示第i个簇内的节点总数,ι1、ι2、ι3和ι4表示不同评估因素对应的权重参数。第一阶段检测保证了网络中节点的查全率,筛选出区域内可能存在的恶意节点对象。为避免部分正常节点被误检,因此进行恶意节点的第二阶段检测。
第二阶段检测为单区域内局部检测。由单区域内的验证节点对第一轮检测出来的恶意节点和验证节点进行二轮判断。考虑到正常节点在交换数据后会更新自我状态值,则将节点通信次数、通信时延与通信质量因素作为邻接节点状态值评估因素,其第一轮被判断为恶意节点的邻接节点通过公式(4)计算节点状态信息,并发送给其所在区域的验证节点。
其中,ηlk表示邻接节点l记录的恶意节点k状态值,C_timeslk表示恶意节点k与其邻接节点l的通信次数,C_delayslk表示恶意节点k与其邻接节点l的通信时延,C_qualitylk表示恶意节点k与其邻接节点l的通信质量。考虑到恶意节点会通过噪声添加模拟伪造成正常节点的收敛状态,但是邻接节点记录的通信次数、通信时延和通信质量不会被篡改,因此可通过公式(5)计算邻接节点记录的节点状态差异值,并验证恶意节点。
其中,nslk表示当前共识轮次下邻接节点l记录恶意节点k的状态差异值,ηlk(N)表示第N轮共识完成后本节点对恶意节点k的状态值,l表示恶意节点邻接节点标号,m表示恶意节点k周围邻接节点个数。根据邻接节点,在共识阶段中,恶意节点k的状态差异值nslk出现以下现象,则将该节点标记为恶意节点,加入恶意节点列表。
(2)恶意节点k的状态差异值 超出预先设置的阈值β4,即节点存在异常行为,导致状态值发生异常波动。
如表1 所示,在经过恶意节点二轮检测后,执行节点的赋权和停权机制,即对验证节点赋予投票权、区块验证权和区块生成权,对普通正常节点赋予投票权和区块验证权,对恶意节点进行Ti时间的停权操作,即暂停恶意节点以上权力,并广播信息,其中Ti表示第i次被检测为恶意节点所对应的停权时间。为避免交易时延等正常行为造成正常节点的误检,验证节点采用Sigmoid函数对恶意节点给予相应轮次的停权时间。停权时间初期缓慢增加,当节点多次被检测为恶意节点,为加大恶意节点的惩罚力度,停权时间随着轮次增幅加大。当节点停权时间超过500 s,仍检测该节点为恶意节点,则将其剔除网络。
表1 赋权和停权机制表Table 1 Empowerment and suspension mechanism table
为综合评估NCCA 算法的性能,在Ⅰntel i7-11700 CPU 2.50 GHz八核,16 GB内存和RTX 3080显卡的实验环境下,创建多个虚拟机模拟车联网节点,并使用Golang语言实现一个由车联网验证节点、正常节点和恶意节点三类组成的车联网数据共享原型系统。通过收集模拟系统中节点的行为数据和评估因素进行实验仿真。其中,车辆网场景考虑9 km×9 km的车联网覆盖区域,并均匀划分为9 个区域大小均为3 km×3 km 的网格。在每个区域内随机设置1个基站,整个区域随机分布250个初始节点[22],验证节点比例为0.6。由初始节点随机投票选举出区域候选验证节点,区域候选验证节点计算其他节点的信用值,按信用值更新区域验证节点,剩余节点设置为正常节点。
因此基于上述实验场景,为了验证NCCA 的性能,通过参考文献查阅和实验分析两种方法确定了如表2所示的实验参数[23-24],分别采用基于典型证明类共识(POS)改进的DPOS、基于典型选举类共识(PBFT)改进的CDBFT、类PBFT 的共识算法RPCA 和所提出的NCCA进行实验对比,计算各个算法的交易吞吐量、平均交易时延和平均节点通信开销。其中,交易吞吐量定义为交易发起到写入区块链中的总交易数与总时间的比值。平均交易时延定义为全部交易从发起到写入区块链的总时间与交易数的比值。平均节点通信开销定义为完成所有交易数时平均每个节点需要发送的通信包数量。查全率定义为NCCA 检测出的真实恶意节点数量与网络中存在的真实恶意节点总量的百分比,查准率定义为NCCA 检测出的真实恶意节点数量与算法认为是恶意节点的总数量百分比。
表2 实验参数Table 2 Experimental parameters
在交易吞吐量方面,实验主要对不同恶意节点数量下DPOS、CDBFT、RPCA 和NCCA 的交易吞吐量进行分析。实验方案选择共识节点数量为250,依次存在恶意节点数为10、20、30、40、50、60、70和表2中其他参数。如图4 所示,随着恶意节点数量的上升,增加了部分区块共识的时间,导致DPOS、CDBFT、RPCA 和NCCA 的交易吞吐量总体均呈下降趋势。但NCCA 的交易吞吐量明显高于其他共识算法,且受恶意节点影响下降趋势不显著。这是因为:在应对恶意节点的攻击方面,NCCA采用对不同身份的节点给予不同的投票权重,通过限制恶意节点的投票权重,选择高信用值的验证节点完成区块验证共识,从而减少恶意节点对投票共识过程的影响。同时针对网络中存在的恶意节点,提出一种多区域协同检测和单区域内局部检测的恶意节点二轮检测机制,能够高效区分出正常节点和恶意节点,对检测出的正常节点进行赋权和恶意节点的停权操作,从而降低恶意节点对区块共识效率的影响,最终有效提高交易吞吐量。而DPOS和CDBFT均未考虑到车联网中节点的离线问题,随着恶意节点数量的增加,网络中代表节点遭受到恶意攻击次数增加,而易发生节点离线的状况,此时则需重新发起投票进行共识,从而导致算法投票次数较多,DPOS和CDBFT的交易吞吐量处于相对较低的水平。RPCA 在共识过程中需要每个验证节点参与区块共识,随着恶意节点数量的上升,恶意节点将攻击可信任列表中节点或伪造节点,影响到交易集与区块验证共识,并通过延时验证等恶意行为导致交易吞吐量下降。因此NCCA 交易吞吐量要始终优于DPOS、CDBFT和RPCA的交易吞吐量。
图4 恶意节点数量对交易吞吐量的影响Fig.4 Ⅰnfluence of number of malicious nodes on transaction throughput
在平均交易时延方面,实验主要对不同恶意节点数量下DPOS、CDBFT、RPCA 和NCCA 的平均交易时延进行分析。实验方案选择共识节点数量为250,依次选择恶意节点数为10、20、30、40、50、60、70 和表2 中其他参数。如图5 所示,随着恶意节点数量的上升,共识算法被攻击的次数增加,导致DPOS、CDBFT、RPCA 和NCCA的平均交易时延均呈上升趋势,但NCCA的平均交易时延明显低于其他共识算法,其性能得到了一定的改善。这是因为:NCCA采用可信任节点列表改进和验证节点确认,在验证节点生成可信列表时,考虑在通信过程中节点传递损失因子等关键参数,将信用值高且性能良好的节点加入到可信任列表中。在恶意检测中综合考虑节点的行为评估因素与状态值情况,实现动态的节点权力分配,降低受多次延时、忽略正常节点消息等恶意行为的概率,最终将平均交易时延维持在较低水平。而DPOS与CDBFT仅通过信誉值或代币累积时长构建区块节点,缺乏对节点综合性能的评估。面对数量增加的恶意节点,无法有效区分代表节点是否异常而需要重新发起投票选举,因此其平均交易时延数值处于较高水平且呈逐渐上升趋势。RPCA 通过预先设置的方式选择验证节点,在验证节点的性能受到影响或恶意攻击时,无法进行自动调整。随着恶意节点数量上升,导致其成功攻击次数上升,且每个验证节点均需要参与区块共识,因此其平均交易时延上升明显。因此NCCA的平均交易时延优于DPOS、CDBFT和RPCA的平均交易时延。
图5 恶意节点数量对平均交易时延的影响Fig.5 Ⅰnfluence of number of malicious nodes on average transaction delay
在平均节点通信开销方面,实验主要对不同恶意节点数量下DPOS、CDBFT、RPCA和NCCA的平均节点通信开销进行分析。实验方案选择共识节点数量为250,依次选择恶意节点数为10、20、30、40、50、60、70 和表2中其他参数。如图6 所示,随着恶意节点数量的增加,在区块验证和交易广播等阶段节点间通信次数与质量受到干扰,导致DPOS、CDBFT、RPCA 和NCCA 的平均通信开销呈上升趋势,但NCCA的平均节点通信开销低于其他共识算法。这是因为:NCCA采用恶意节点二轮检测机制,减少参与区块共识的恶意节点数量。选择信用值高的验证节点进行共识验证,在保证区块的共识效率的同时降低通信开销。在交易集共识过程中设置弃权票与投票系数,允许验证节点对交易投出弃权票,通过票型权重的方式削弱恶意节点验证影响,避免交易集共识受到恶意节点干扰而增加通信次数,最终保证了区块共识效率。而DPOS与CDBFT在代表节点的共识上需要经过多个阶段,恶意节点数量的增加将导致节点重复多次广播投票等信息,因此其平均节点通信开销出现上升趋势且数值处于较高水平。RPCA 中的每个验证节点都需要对自身交易集进行广播,随着恶意节点数量的增加,受到的恶意攻击数上升,验证节点则需要重新完成交易集共识与区块验证共识。因此NCCA 的平均节点通信开销远优于DPOS、CDBFT和RPCA的平均节点通信开销。
图6 恶意节点数量对平均节点通信开销的影响Fig.6 Ⅰnfluence of number of malicious nodes on average node communication overhead
在恶意节点查全率与查准率方面,实验主要对不同恶意节点数量下算法检测恶意节点的完整性与准确率进行分析。实验方案选择共识节点数量为250,依次选择恶意节点数为10、20、30、40、50、60、70 和表2 中其他参数。如图7所示,随着恶意节点数量的上升,NCCA的查全率与查准率均维持在一个较高的水平,且NCCA的查准率会略高于查全率。这是因为:NCCA结合节点的当前投票效率、交易时延、离线时间、加入可信任列表次数和提供无效区块次等信息,实现节点评价值划分。并结合与邻接节点的通信次数、通信时延与通信质量进行恶意节点的二轮划分,从而能够全面并准确地区分出恶意节点与正常节点。由于NCCA 在区块验证共识中选择高信用值的验证节点,部分恶意节点存在共识验证完成时还未进行恶意攻击,在共识过程中其表现出来的行为特征与正常节点无明显差异,因此算法的查准率会略高于查全率。
图7 恶意节点数量对查全率与查准率的影响Fig.7 Ⅰnfluence of number of malicious nodes on recall and precision
该文针对车联网中节点具有移动性和异构性而易遭受恶意攻击,在RPCA 的基础上,提出一种面向恶意节点攻击的车联网节点共识算法(NCCA)。首先,NCCA将车联网划分为若干个蜂窝单区域,改进可信任列表,并定期更新验证节点,改进交易集共识投票权重和区块验证。其次,根据节点的参与区块共识情况与行为信息,提出恶意节点二轮检测机制,第一阶段根据节点评估因素进行多区域协同检测恶意节点,第二阶段为根据邻接节点状态差异值进行单区域内局部检测恶意节点。将车联网节点分为验证节点、正常节点和恶意节点三类,对验证节点与正常节点进行赋权,对恶意节点进行停权惩罚。最后通过对算法交易吞吐量、平均交易时延、平均节点通信开销、查全率和查准率的分析,得出NCCA能有效检测出车联网中的恶意节点,在保证节点参与区块共识安全性的同时降低恶意节点对区块共识的影响。通过降低性能较差的正常节点和恶意节点对区块共识效率的影响,从而提高交易吞吐量和降低平均交易时延和平均节点通信开销。但是NCCA 没有考虑到恶意节点多融合攻击问题和基于硬件的实测工作,因此下一阶段目标研究将共识算法移植至基于树莓派硬件的车联网节点,开展进一步的实测工作,并开展适用于多融合攻击手段情况下车联网节点的共识算法研究,提高对恶意节点的全方面检测与防御。