基于DAG分布式账本的车联网信誉值模型
2022-01-12李志展王永利宫小泽
李志展 王永利 宫小泽
1(南京理工大学计算机科学与工程学院 南京 210014)2(63863部队 吉林白城 137001)
(lzz@njust.edu.cn)
随着移动网络的普及,智慧出行正在悄然改变着人们的生活方式,车联网的快速发展,使得车与车之间、车与路边基础单元之间、车与行人之间得以实现互联互通,车辆可以与周围车辆分享交通安全相关的信息,例如道路状况、刹车预警等.这些信息可以帮助车辆及时地感知附近的交通状况,让车辆控制、信息服务、交通管理逐步智能化,从而保障交通安全,提升交通效率[1].
然而,车联网带来的安全问题不容忽视,由于行驶过程中车辆之间的陌生关系,使得车辆发布的交通消息的可信度存疑.例如,某些攻击者会故意散播虚假的交通消息,以影响消息接收车辆的驾驶决策,从而危及交通安全.
对于已认证的车辆发布虚假消息或篡改消息的恶意行为可以通过基于信任的方法来解决[2].基于信任的方法建立一种车联网信任管理机制,解决车联网中的虚假消息问题[3].
对于车联网的信任管理模型已有大量研究成果,按照模型的整体架构可以分为中心化模型与去中心化模型.对于中心化信任管理机制的研究[4-5]有2个固有的问题:一方面,中心化服务器面临单点失效的问题;另一方面,中心化服务器将信息统一收集再分发的模式,增加了不必要的通信开销和消息延迟,不满足实时性要求.所以,更多的研究[6-7]集中于去中心化的信任管理机制方面.去中心化的方法将计算与存储任务下放到边缘节点,摆脱了对中心服务器的依赖,由于车辆节点本身计算与存储能力有限,通常需要借助基站或者路边单元这种边缘节点实现去中心化的信任管理,但是由于边缘节点通常分布在室外,相对于中心式服务器更容易遭受攻击,可能会出现数据被篡改或者被入侵者控制等安全问题,因此需要一种有效的方法使分布式节点达成共识.
区块链技术的出现为解决分布式节点的共识问题提供了一种新的思路,可用于在互不信任的实体之间建立共识.区块链是一种利用加密链式数据块来验证与存储数据、利用分布式节点共识算法生成和更新数据、利用智能合约操作数据的分布式数据库技术[8].区块作为区块链中数据存储的基本单位,记录着该区块形成时间段内发生的所有交易信息,一个区块通过包含一个指向上一个区块头的哈希指针,形成一条区块链.
Lu等人[9]提出了一种基于区块链的匿名信誉系统,使用2个区块链高效地进行身份验证和信任通信,消除了真实身份和公钥之间的连接,更好地保护车辆的隐私,同时设计了一种信任模型防止虚假信息的传播和激励车辆揭发不良行为.Yang 等人[10]提出了一种基于区块链的车联网分布式信任管理系统,车辆使用贝叶斯模型验证周围车辆发送信息的可信度,根据验证结果为每辆车生成相应的评级.然后结合工作量证明机制和权益证明机制提出了一种基于信誉值改变量的共识机制.由于区块链本身不适用于记录大量数据,所以该系统只记录了信誉数据的改变量,没有记录消息本身,所以无法对信誉值的改变溯源,对于分布在区块中的信誉值改变量缺少一种合理的组织方式.而且当前区块链仍存在吞吐量不足和交易确认缓慢的问题,这大大限制了其在实际车联网中的应用.
本文提出了一种新型的分布式车联网信誉管理模型,该模型基于DAG(directed acyclic graphs)分布式账本,并且在此基础上设计了一种基于车辆信誉值的共识机制,用车辆信誉值评价车辆行为.然后该机制根据车辆节点的信誉值动态调整工作量证明的难度,使信誉高的节点容易获得记账权,信誉低的节点更难获得记账权.安全性分析证明本文模型在减少虚假消息产生的同时,可促进车辆参与消息共享,并且可抵御车联网中常见的安全攻击,为车联网的信任管理问题提供了新的解决方案.
1 车联网信誉管理系统结构设计
针对当前基于区块链的车联网信誉值模型吞吐量小、共识效率低的问题,本文基于有向无环图的分布式账本设计了一种车联网信誉管理系统,该系统主要包含2个组成部分,分别为节点和Tangle网络.根据节点的功能可以分为2类:一类是全节点,如路边单元,这种节点有稳定的电量供应和较大的存储空间,可以维护整个账本;另一类是轻节点,即普通车辆节点,这类节点数量多,但是每个节点的计算和存储空间有限,所以不能存储完整的账本,只能用于发起交易,并通过改进的工作量证明机制打包交易.Tangle网络是分布式账本,记录系统的数据.
本文系统结构如图1所示,下面详细介绍系统各部分的功能.
图1 车联网信誉管理系统模型
1) 车辆节点:车辆节点作为区块链系统中的轻节点,用于产生消息和发布交易.只有经过管理者认证的车辆才能进入系统,每个经过认证的车辆都会有1对公私钥(Pk,Sk)用于车辆身份识别和交易签名.
2) 路边单元:路边单元作为全节点,用于维护完整的分布式账本.路边单元接收车辆节点的交易请求,然后将合法交易记录到分布式账本.
3) 管理者:管理者是一个特殊的全节点,由交通管理部门维护,用于管理系统中所有车辆节点和路边单元.管理者由政府背书,本文系统中认为是可信节点,管理节点的公钥硬编码到路边单元设备中,使得管理者节点可以维护区块链网络中认证车辆节点名单,路边单元可以根据该名单验证1笔交易是否来自于经认证的车辆节点.
4) Tangle网络:Tangle网络是一种基于DAG的分布式账本,常见的基于DAG的区块链有IOTA,ByteBall[11].该账本以交易为基本单位,省去了将交易打包成块的时间,对交易的出度与入度没有严格限制,1笔交易可以同时验证多笔交易,也可以被多笔交易验证,支持高并发场景下的写入操作,每个车辆节点都可以向网络上发交易.该网络不仅记录车辆信誉值变化量,还记录车辆发出的消息,支持对信誉值的变化量溯源.相比链式区块链,该网络可以提高系统吞吐量,更适用于车辆网场景.
2 基于信誉的动态工作量证明机制
本节介绍我们设计的一种兼顾安全性与效率的工作量共识机制.传统的工作量共识机制通过设置一个高难度的数学问题,保证拥有高算力的节点可以获得更多记账机会,这种方式虽然保证了系统的安全性,但是也导致记账低效,且需要耗费大量电力,但是降低难度又会导致安全问题的发生.
为解决这一问题,本系统通过节点的行为来计算信誉值,节点的信誉值随着节点的行为实时变动:合法的行为将提高车辆信誉值,如验证其他车辆节点发送的消息,节点发送的消息被成功验证;相反,恶意行为将降低节点的信誉值,如只接收其他车辆的消息却不主动发消息或者发布虚假消息等.工作量证明的难度将随着节点信誉值的变化而动态调整,节点信誉值越高,工作量证明的难度就越小,这样车辆节点进行工作量证明时信誉值高的节点消耗更少资源,反之,消耗更多的资源,从而增加恶意节点的攻击成本,减少虚假消息的传播.
在详细介绍基于信誉的动态工作量证明机制之前,首先介绍车联网中可能存在的几种安全威胁[2,13-14],在接下来的具体设计中,将针对这些安全问题提出相应的应对措施,以增强系统的安全性.
拜占庭问题是分布式系统中的经典问题,体现在车联网中就是:车辆节点故意作出危害系统运行的行为,如故意丢弃其他节点的消息或者向不同的车辆节点发送内容冲突的消息.
当通过信誉的方式来解决拜占庭节点问题时,会出现开关攻击现象,也称为灰洞攻击,即攻击者开始会作为一个正常节点运行,当累积到一个较高的信誉值时,突然发动攻击,直到信誉值快要下降到某一个值时,再停止作恶变为一个正常节点,逐渐恢复信誉,这样既可以发动攻击,又不容易被系统察觉,对系统危害极大.
另一种攻击方式是阻塞攻击,它与拒绝服务攻击类似,通过在短时间内发送大量垃圾消息占用附近的带宽资源,使得合法车辆节点的紧急告警消息无法及时发布到网络中,导致事故的发生,所以这种攻击方式对系统同样有极大危害.
本文系统通过信誉值动态调整工作量证明的难度,信誉值会随着车辆收发消息的行为而变动.在本文系统中车辆发送的消息将以交易的形式传播,Tangle网络中记录了车辆发送的所有交易,路边单元作为全节点维护完整的Tangle网络,负责将车辆节点产生的交易同步到Tangle网络中,同时维护所有车辆节点的信誉状态.
下面将介绍根据车辆的消息收发行为来维护车辆信誉值的具体过程,其中涉及的符号及其含义如表1所示:
表1 符号对照表
首先,车辆通过节点发现方法找到周围的全节点,即路边单元,然后全节点根据注册到该节点所在的位置以及关注的范围,使用交易选取算法将网络中出现的新交易实时推送给车辆节点.
然后,车辆节点收到全节点推送的交易列表之后,先验证全节点的签名,再根据消息集合验证消息是否一致,防止单个全节点作恶.
车辆收到的来自多个全节点的消息:
(1)
其中全节点的总数i为奇数,避免消息不一致时无法得出投票结果,然后就是对消息的验证与选择.首先利用全节点的公钥验证每个全节点的签名,然后选择关注的交易Tip.车辆得到Tip之后利用其中的消息对自己的驾驶产生指导,使用消息的过程就对消息是否有帮助和消息真假进行评价,然后将认为正确或有用的消息加入到待验证列表,同时将行驶中产生的待分享消息也打包成交易.然后进行工作量证明,因为工作量证明的难度是随信誉值的变化而不断变化的,所以车辆节点在进行工作量证明之前需要获取自己的信誉值,从而得到工作量证明的难度.获取到车辆节点VNi的信誉值Cri之后,通过以下公式计算当前信誉状态下的工作量证明难度:
(2)
(3)
其中Di是车辆节点VNi的工作量证明难度值,δ是难度系数,用来控制难度的波动范围,s指ΔT时间内该车辆发布的第几笔交易,ΔT是1笔交易的验证窗口期.首先需要根据一定范围内车辆的信誉数据将车辆节点的信誉数据标准化,然后根据标准化后的结果计算难度值,标准化之后可以使得难度值控制在一定范围内,保证难度值不会随着信誉值的不断升高而不断降低.
根据难度Di得到挑战数CNi,CNi与Di正相关,如以下公式所示:
(4)
(5)
Hash{Hash(Tip1)‖…‖Hash(Tipn)‖ (6) 其中Tipi是车辆选择验证的交易,数量必须大于2,车辆节点通过调整nounce的值不断产生新的哈希值,直到该值小于挑战数CNi,说明此时即达到发送交易的条件. 根据式(2)~(6)可以看出,信誉值Cri越低,对应的难度Di就越大,产生的挑战数就越小,计算出合适的nounce也就越困难. 然后,车辆节点将验证的交易列表和工作量证明结果以及要发布的消息组装成一个新的交易广播给全节点,发布的交易分为消息交易与信誉值变动交易,交易结构如图2和图3所示: 图2 消息交易结构图 图3 信誉值变动交易结构图 一个打包好的交易分为交易头和交易体,交易头中包含交易的唯一标识TxID,用于从账本中检索消息,Is_msg字段用于区分一个交易是消息交易还是信誉值变动交易,Pki为发布者的公钥,用于验证车辆节点对消息的签名,MPT_Root为该交易所验证的交易组成的梅克尔树根节点哈希,timestamp是交易发布的时间,Body_Hash是交易体的哈希值,Sig是车辆节点对哈希值签名的结果,nounce与CN是与工作量证明有关的参数.交易体中包含了该交易所验证的交易、车辆当前位置以及消息相关的字段. 全节点收到车辆节点发布的交易之后,将其添加到Tangle网络中,1笔新的交易一定指向网络中2个及以上的交易.进入网络的交易将有1个验证窗口期,只有在该时间段内的验证才会对验证节点与被验证节点的信誉值产生影响,验证窗口期之后的交易将推入监管者节点维护的待结算交易池,进入交易池之后交易仍然可以被验证,但是不对信誉值产生影响,监管者节点每隔一定时间对交易池进行结算,从而生成1笔结算交易,用于结算当前交易池中所涉及的信誉值改变,然后全节点更新信誉树.如图4所示: 图4 信誉值存储结构 全节点首先根据交易头中的公钥找出当前交易池有哪些车辆节点的信誉值需要改变,然后计算信誉值. (7) (8) 对于每一笔交易产生的信誉值的变化分为2种情况,分别对应了式(8)中前2项,n表示交易所验证Tip个数,m表示此交易被验证的次数,第1种是信誉值增加的情况,信誉值的增加一部分来自于本交易对其他交易的验证,验证的交易越多,信誉增量就越大,而且对于同一笔交易,越早进行验证收益越高,当1笔交易得到6个验证之后或者交易发出过了验证窗口期之后,Order趋向于正无穷,此举用于鼓励车辆节点对新发生的交易进行验证;另一部分增量来自其他交易对本交易验证,这与验证本交易的节点信誉值和顺序有关,hk为被验证的次序,被信誉值越高的节点越早验证,获得的收益越高.第2种情况是信誉值减少的情况,当车辆节点发布消息,但是在验证窗口期内没有得到验证,说明此交易包含的消息内容不实或无效,所以要减少该节点的信誉值,减少量与车辆本身信誉值成正比,此举可有效遏制开关攻击现象.第3种情况是针对在一段时间内没有发布交易的懒惰节点,所以对该种节点首次不处罚,但是随着懒惰次数的增加惩罚力度呈指数速度增加,以此来督促车辆发送交易. 然后监管者节点将车辆节点的信誉变化量打包成交易,与普通交易不同之处是Is_msg字段值为0,表明是一种结算类型的交易,State_Root字段指向当前信誉状态树的根节点.为了方便管理信誉值的变动,信誉状态树采用Merkle Patricia Tree数据结构存储车辆节点的信誉状态,从根节点到叶子节点的路径代表1个账户,叶子节点记录该账户对应的信誉值,信誉值发生改变时,只需重新计算相关路径上的哈希值,状态树中未发生改变的节点可以在新的状态树中继续引用,这种方式一方面可以快速查找和更新账户状态,另一方面由于以前的状态不会被删除,可以方便查找历史记录和进行状态回滚. 第2节介绍了交易发布和节点共识的过程,下面针在这个过程中路边单元和车辆节点可能面临的威胁进行安全性分析. 本文系统的安全假设作为监管者的全节点是可信的,该监管者节点由交通管理部门维护,理论上没有作恶的动机.但是一旦监管者节点被入侵,发动拜占庭攻击恶意篡改信誉数据,其他全节点也可以根据历史交易验证结算交易的合法性,如果遇到信誉状态被恶意更改的情况,可以充分利用信誉状态树的存储特点抵御拜占庭攻击,由于信誉状态树使用了类似Merkle树的结构,改变1个账户的状态,根节点的哈希值就会发生变化,与Tangle网络中结算交易中记录的根哈希值产生冲突,自然无法与全网其他节点达成共识,从而保证恶意路边单元无法对系统造成破坏. 对于基于信誉的车联网管理系统来说需要重点关注开关攻击行为,因为出于共识效率和鼓励车辆节点发送消息的目的,系统往往会信任信誉高的车辆节点,给受信任的节点更多便利,如更低的工作量证明难度或更高的认证收益等,但是如果遇到聪明的攻击者,在一段时间之内通过良好的表现取得较高的信誉值,然后突然变为恶意节点发动攻击,信誉值下降到信任阈值再停止作恶,这种间歇性攻击通常不容易被信誉系统发现.本系统不明确指定信任阈值,而且根据节点标准化后的信誉值来决定车辆发布交易的难度,如式(2)(3)所示.信誉值高的节点在打包和验证交易时会有优势,可以快速地发布到Tangle网络中,但是发布到网络中的交易还需要经过其他交易的验证,这是由车辆节点根据实际驾驶情况来判断的,所以对于虚假消息,即使发布到Tangle网络中,也不会被其他交易验证,经过验证窗口期之后,监管者节点进行结算时针对未被验证的交易,将扣除对应发布者的信誉分,而且发布者的信誉值越高,被扣除的信誉分越多,如式(8)所示,信誉高的节点被检测到1次恶意行为将快速减少信誉值,使恶意节点难以发动2次攻击,这样可有效避免开关攻击的发生. 当路边单元失效时,将不能向外提供交易选择和交易同步的功能,不过车辆节点往往会在一定范围内的多个路边单元进行注册,即使个别路边单元失效也不会影响系统的正常运行;当路边单元被恶意控制,可能会给车辆节点提供篡改之后的交易,但是车辆不会直接相信来自单个路边单元提供的消息,而是对比来自多个路边单元的交易头,保证接收到正确的交易,当遇到不一致情况时会进行投票,相信得票数较高的交易. 对于发送频率正常的节点,工作量证明的难度主要与车辆节点的信誉值水平有关,但是如果恶意车辆节点在短时间内发动阻塞攻击,将触发系统的动态工作量调节机制,工作量证明难度会随交易频率的上升呈指数级上升,通过快速提高车辆节点发布交易的难度,降低恶意节点发布交易的速度,从而防止恶意节点短时间内发布大量交易占用全节点资源,使其他车辆节点发布的交易无法及时接收.交易频率以一个验证窗口期为单位进行计算,可在不影响正常车辆发布交易的情况下防止阻塞攻击的发生. 本文将基于有向无环图的分布式账本应用于车联网中以解决消息可信度的问题,通过设计一种基于信誉的动态工作量证明机制,用信誉值评价车辆行为,动态调整工作量证明的难度,可有效减少车联网中虚假消息的产生.通过安全性分析,本系统可有效抵御车联网中常见的攻击方式,而且相较于基于传统区块链的共识机制有更高的共识速率. 在实际情况中,车联网中消息内容的制造主体还是驾驶人,所以车辆信誉值与驾驶人的信誉值有很大相关性.在接下来的研究中可以考虑把个人在社交媒体中的行为因素纳入车辆信誉评价体系中,可能会使得信誉评价的结果更加合理.
nounce}≤CNi, 23 安全性分析
4 总结与展望