李子健,章国安,陈葳葳
(南通大学信息科学技术学院,江苏南通 226019)
随着第五代移动通信技术的快速发展,车联网(Internet of Vehicles,IoV)通过不断降低车与车(Vehicle-to-Vehicle,V2V)、车与道路基础设施(Vehicle-to-Infrastructure,V2I)之间的通信时延,为道路交通安全与畅通提供了有效保障,但由于车辆的高速移动性和动态性,使得网络拓扑不断变化,极易遭受恶意节点入侵与攻击,影响整个车联网系统的安全。近年来,车联网安全问题受到越来越多学者的关注。传统解决方案采用公钥基础设施(Public Key Infrastructure,PKI)对车辆身份进行认证[1-3],利用加密[4-6]、数字签名[7]等技术对车辆身份及交互信息进行管控。为提高隐私保护能力,车辆周期性接收到证书机构所产生的假名,并用假名在车联网环境中进行匿名通信。利用上述技术能够有效防止身份伪装及隐私泄露,抵御篡改、女巫等攻击[8-9],但由于车联网点对点(Peer-to-Peer,P2P)的交互模式,无法抵御内部恶意节点的攻击。内部恶意车辆节点在注册身份后,以合法身份越过静态信任机制认证,对车联网环境中的其他车辆节点进行信息欺骗等攻击[10-11],会对车联网安全造成危害。通过将信任机制引入点对点网络,双方通过历史行为轨迹对对方进行信任评估,能够有效排查出环境内部的恶意节点。文献[12]提出基于贝叶斯的信任模型,利用概率评估可信度。文献[13]综合考量交易总数、交易满意度、反馈信任度等与信任有关的参数,提出一种基于信任的P2P 信任模型。近几年,许多学者将车联网中的安全技术与信任机制相结合,构建车辆节点间的信任关系。文献[14]通过将本地与全局信任相结合来构建一个反攻击的信任体系。文献[15]提出基于人为因素的车辆信息估计算法,通过车辆间信任和基于OSN 信任的融合,综合估计车辆的总体信任值。文献[16]在车联网中建立信任模型,将可信性检查和邻节点推荐相结合,抵御中间人攻击。但上述方案并没有给出完整的车联网信任机制,如何有效地在车联网中实施信任评估并对评估节点及其信任值进行管理,成为车联网亟待解决的安全问题。
区块链[17-18]作为比特币的核心技术,因去中心化、开放性、防篡改性、匿名性、可追溯性等特点成为近年来的热门研究方向。区块链技术的各种特性与车联网安全十分契合,能够为车联网中车辆身份和交互信息的验证和保存提供全新的思路。文献[19]将SDN 与区块链技术相结合来存储车辆视频信息,并提出一种信任管理机制来扼制恶意节点发送虚假信息。文献[20]利用将位置证明替换工作量证明的区块链来保存更新车辆的信用值。文献[21]使用PoW 及PoS 共识机制将含有信任值的区块上传到区块链。文献[22]采用联盟链中的PBFT 机制及公有链中的PoW 机制来选择Leader 节点。文献[23]提出一种基于联盟链的车联网管理方法,利用改进的DPoS 共识对车辆数据的安全分享提供保障,但是没有对车辆的可靠性进行分析,进而影响了对矿工的判定。上述文献通过联盟链与车联网的结合,在一定程度上解决了车联网内部信任及信息存储问题,但是多数文献将公有链中的共识机制应用于联盟链,造成了巨大的算力资源浪费,并且网络性能较差。本文设计一种基于区块链的车联网安全通信策略,采用基于椭圆曲线的加密技术对车联网外部攻击进行防御,利用基于Beta 分布的直接信任和基于PageRank 算法的推荐信任相结合的信任评估对车联网内部攻击进行防御,使用智能合约技术实现车辆信息上链、查询以及信任评估功能,通过RAFT 共识机制降低车联网时延并提高吞吐量。
基于区块链的车联网安全通信系统模型如图1所示,由证书颁发机构(CA)、路侧单元(RSU)和车载单元(OBU)构成。CA 负责为进入车联网的合法车辆进行身份注册,产生公私钥对,颁发身份证书。RSU 是分布在路边的设备,通过长期演进技术(Long Term Evolution,LTE)与车辆上的OBU 进行信息传递,还负责将收集到的数据上传到区块。OBU 是车联网的参与者,能够与其他参与车联网的车辆、路侧单元、证书颁发机构进行通信,并向RSU上传车辆信息。
图1 基于区块链的车联网安全通信系统模型Fig.1 System model of blockchain-based IoV secure communication
基于区块链的车联网安全通信系统模型包括数据传输层、数据共识层和数据储存层。数据传输层由车辆和RSU 组成。RSU 负责收集车辆上传的历史信任数据,并将其共识存储至区块链网络。车辆作为用户节点,驶入RSU 通信覆盖范围,与RSU 进行交互。为保证V2V 通信安全,车辆间利用信任模型进行信任评估,从而进行安全消息传递。数据共识层由RSU组成,RSU 将接收到的信息上浮至数据共识层,通过共识机制进行Leader 选举并对信息进行排序共识。数据储存层根据选出的Leader 将这一时间段的信息进行排序共识,并将数据上传到区块链。
根据上文系统模型,提出基于区块链的车联网安全通信策略,策略流程如图2 所示。接入车联网的RSU 节点与车辆节点通过CA 机构进行身份注册得到注册信息,并将注册信息存储至区块链。在车辆间通信时,通过检索区块链查验交互对方信息是否属实,并计算对方车辆在此阶段的信任值判别其可靠性,同时将本次计算的信任值存入区块链。如果某一车辆的信任值多次低于某个设定的信任阈值,则将此车辆假名置于撤销列表,车辆需重新向CA 申请身份注册。
图2 基于区块链的车联网安全通信策略流程Fig.2 Strategy procedure of blockchain-based IoV secure communication
区块链通常采用PoW 共识机制来完成对信息的上传,虽然PoW 去中心化程度及安全性能高,但是挖矿记账将浪费大量资源及时间,系统性能较差,无法满足车联网节点的高速移动性及低时延要求。本文策略使用RAFT 作为区块链的共识机制,具有如下优势:
1)复杂度仅为O(n),优于PBFT 的O(n2)。
2)可容忍(n−1)/2 个故障节点,有效防止RSU 宕机产生的数据丢失等问题。
3)对于车联网,Leader 选举机制能较好地避免资源被浪费,数据信息上传速度快且不会出现分叉。
RAFT 算法中的所有节点包含Leader、Candidate、Follower 等3 种角色,作为强一致性算法,选举出的Leader 角色能够决定信息的上链。RAFT 共识机制的具体过程如下:
1)一开始区块链系统中的所有RSU 节点都为Follower 节点,如果Follower 节点在一段任期(Term)中没有收到Leader 或者是Candidate 的响应,则自动增加任期,转变为Candidate 节点,对其他节点发起投票。当得票数超过一半时,则说明此节点被选举为Leader。如果另一个Candidate 节点赢得选举,则此节点返回为Follower 节点。RAFT 选举流程如图3所示。
图3 RAFT 选举流程Fig.3 Procedure of RAFT election
2)Leader 节点将接收到的信息以区块形式打包并广播给其他节点。区块中的区块头摒弃了公链需要的随机数(Nonce),并增加了任期,如图4 所示。其他节点收到区块后对区块内容中的时间戳和任期进行验证,并复制一份作为存证。
图4 区块结构Fig.4 Structure of block
3)在得到超过半数节点的响应后,Leader 节点将区块上链。
策略设计由基于椭圆曲线算法的身份注册、信任评估、安全通信等3 个部分构成。身份注册和安全通信中的符号说明如表1 所示。
表1 符号说明Table 1 Symbol description
所有参与车联网的RSU 及车辆都需要向CA 进行身份注册,RSU 将自己身份ID 提交给CA。CA 利用椭圆曲线加密算法对接入车联网的车辆及RSU 生成公私钥对及证书。CA 产生一个椭圆曲线Ep(a,b):y2=x3+ax+b(modp),必须满足4a3+27b2≠0,且在椭圆曲线上取一个基点G(x,y),其中,p为素数域内点的个数,a和b为两个大数。RSU 与车辆的注册流程如图5 所示。
图5 RSU 与车辆的注册流程Fig.5 Procedure of RSU and vehicle registration
2.1.1 RSU 注册
所有参与车联网的RSU 都需要向CA 进行身份注册,RSU 将自己身份ID 提交给CA,具体步骤如下:
步骤1RSU 向CA 发送注册请求{RIDr,kr},可以抵御中间人攻击。
步骤2CA 接受RSU 的发送注册请求并验证RSU 身份,在确认身份信息无误后产生一个授权证书Certr,选择一个椭圆曲线Ep(a,b)并随机选取一个基点G(x,y)。CA 将RSU 发送的kr作为RSU 的私钥PRIr,用私钥PRIr产 生RSU 公 钥PUBr=PRIr×G。在产生公私钥对后,将RSU 注册完成时间戳TSr及PUBr向全网广播。
步骤3CA 将{TSr,PUBr,PRIr,Certr}通过安全通道传输给等待注册的RSU,RSU 收到CA 消息后RSU 注册流程结束。
2.1.2 车辆注册
在车辆接入车联网系统前,需要向CA 发起身份注册申请,具体步骤如下:
步骤1车辆向CA 发送注册请求{RIDv,TSv},其中TSv为车辆申请时的时间戳。
步骤2CA 接受车辆的注册申请请求并验证车辆身份,确认身份信息无误后,CA 产生一个随机数kv作为车辆私钥PRIv,选择一个椭圆曲线Ep(a,b),并在椭圆曲线上取一个基点G(x,y)。CA 将自身产生的随机数kv作为RSU 的私钥PRIv,使用私钥PRIv产生RSU 公钥PUBv=PRIv×G。然后,CA 为车辆产生假名PIDv=h(RIDv||kv),CA 根据TSv为车辆颁发含有注册失效时间的授权证书Certv并赋予车辆一个初始的直接信任值DTdefault。
步骤3CA 将{PIDv,PUBv,PRIv,Certv,DTdefault}通过安全通道传输给等待注册的车辆并上传至区块链,车辆收到CA 信息后车辆注册流程结束。
在注册身份完成后,车辆节点依旧有可能会进行恶意攻击,对车联网信息系统进行破坏。本文策略在车辆通信时增加了信任评估机制,计算出的信任值将由车辆上传至附近的RSU,RSU 通过共识机制将信任值等信息上传到区块链中进行存储。
2.2.1 直接信任值
计算在t+1 时段车辆节点j的直接信任值,主要考虑之前时段车辆节点i与j的交互情况。利用Beta分布对车辆节点i与j进行直接信任值计算,如式(1)所示:
其中:S(i,j)表示车辆节点i和j交互成功次数;F(i,j)表示车辆节点i和j交互失败次数;D(i,j)能够反映两个车辆节点之间交互的情况。
但是,仅依赖车辆节点交互成功率不能保证节点在获得信任后会发送真实信息,因此增加反馈评价度C,表示在交互成功的前提下车辆节点i对j的可信度评价,如式(2)所示:
其中:t(i,j)表示车辆节点i发送消息中真实信息的个数;n(i,j)表示车辆节点i发送信息的总数,发送的真实信息数越多,反馈评价度越高。
在t+1 时段车辆节点j的直接信任值计算如式(3)所示:
其中:N为交互次数。如果车辆没有交互,那么直接信任值为注册时CA 分发的初始信任值,但是如果节点进行摇摆攻击,即积累信任值,然后发动攻击,那么很难计算直接信任值。引入时间影响度δ(Δt),表示上一时段节点信任值对当前节点信任值的影响,如式(4)所示:
其中:Δt=tn+1−tn;λ为调节系数,λ越小,时间影响度越大,意味着上一时段的直接信任值对这一时段的直接信任值的影响越大。当上一时段信任值减少时,λ小幅增加;当连续减少3 次及以上时,λ大幅增加。
将时间影响度考虑在内的直接信任值计算如式(5)所示:
2.2.2 推荐信任值
当两个车辆节点没有直接交互或者直接交互次数过少时,车辆节点i需要通过获取在车联网中其他与i进行交互过的节点j的信任评价来计算推荐信任值。恶意诋毁攻击通常发生在推荐信任值计算时,攻击方式有2 种:1)对同样是恶意节点的车辆节点进行过高评价,使得恶意车辆节点能够继续维持一个较高的信任值,得以在车联网中继续运作;2)对交互过的正常车辆节点进行差评,使得正常车辆节点的信任值下降,从而破坏信任模型。
通过改进PageRank 算法[24]进行车辆的推荐信任值计算,如式(6)所示:
其中:PR(u)为所计算的网页u的PageRank 值;P为网页总数;α是阻尼系数,一般取0.85;Bu为页面u的入链集合;PR(Pv)为网页Pv的PageRank 值;L(Pv)为Pv链出页面的数量。
通过对PageRank 算法进行改进,评估车辆的推荐信任值。所计算的推荐信任值也可看作是对系统环境内车辆交互积极性的信任值奖励,如果在一段时间内车辆进入车联网系统但不与任何其他车辆进行交互,那么只能得到一个较小的推荐信任值。与其他车辆节点交互越多,相应的推荐信任值在一定程度上会越大。改进PageRank 算法的推荐信任值计算如式(7)所示:
其中:K(k1,k2,…,kn)表示在n时段与车辆节点j交互过的所有节点的集合;PR 表示在n时段车辆节点k的PageRank 值;L(k)表示车辆节点k在n时段的总交互次数;M表示此时段的车辆总数。车辆节点的推荐信任值由与车辆节点j交互过的车辆节点集合K(k1,k2,…,kn)共同决定。如果有车辆节点在当前时段离开车联网或者是因为信用问题被强制注销,那么此节点不包括在K集合中。同样地,如果在当前时段有新的车辆节点加入并与j发生交互,那么对j的推荐要等到下一时段才能生效。
在推荐信任值计算过程中加入节点相似度的概念,能够更好地抵御恶意诋毁攻击。节点相似度计算如式(8)所示:
其中:Set(i,k)为节点i与k都交互过的节点集合;N(Set(i,k))为此集合的节点数量;C(i,x)为节点i对此集合中节点x的反馈评价;C(k,x)为节点k对此集合中节点x的反馈评价。两个车辆节点对同一车辆的反馈评价越接近,两个车辆节点的相似度越高。
推荐信任值计算公式如式(9)所示:
当总交互次数小于等于1 次时,系统只赋予一个较小的推荐信任值。
2.2.3 综合信任值
将直接信任值和推荐信任值相结合计算综合信任值,如式(10)所示:
其中:ϕ为信任调节权重,能够调节直接信任值和推荐信任值的比例。在产生车辆的信任值后,将车辆的假名、信任值、产生时间戳、其他信息以及此时RSU 的服务范围传给附近RSU 写入区块中。
车与车、车与RSU 在通信前必须对车辆身份进行验证,验证流程如图6 所示。
图6 车辆身份验证流程Fig.6 Procedure of vehicle identity authentication
车辆节点的身份验证步骤具体如下:
1)车辆到RSU 的认证申请
在车辆进入RSU 管辖范围后,对自身的假名、公钥、证书以及信任值{PIDv,PUBv,Certv}使用Hash 函数产生摘要DIG1=h({PIDv,PUBv,Certv})。使用车辆私钥PRIv对此摘要进行签名,产生数字签名SIG=sig(DIG1)。车辆将SIG 以及{PIDv,PUBv,Certv}一起发送给RSU。
2)RSU 验证
步骤1RSU 收到车辆发送的信息后,用PUBv验证签名SIG 得到DIG1,将收到的{PIDv,PUBv,Certv}使用同样的Hash函数计算得到DIG2。如果DIG1=DIG2,则发送的信息没有被篡改,则执行步骤2。
步骤2RSU 提取车辆假名PID,调用智能合约Search Information()函数,在区块链中进行查询:若PID 存在,则说明此车辆经CA 授权;若验证没有通过,则将此车辆的证书撤回,车辆需要重新在CA 中进行身份注册。
步骤3若车辆合法,则返回认证成功消息。车辆向RSU 上传信息。
3)车辆A 到车辆B 的认证申请
车辆A 向车辆B 发送通信请求{PIDv,PUBv,Certv}。对{PIDv,PUBv,Certv}使用Hash 函数产生摘要DIG3=h({PIDv,PUBv,Certv}),使用车辆私钥PRIv对此摘要进行签名产生数字签名SIG。车辆B 将SIG 和{PIDv,PUBv,Certv}一起发送给车辆B。
4)车辆B 验证
步骤1车辆B 收到车辆A 发送的信息后,使用PUBv验证签名SIG 得到DIG3。将收到的{PIDv,PUBv,Certv}使用同样的Hash 函数计算得到另外一个数字摘要DIG4。如果DIG3=DIG4,则可保证信息的完整性。
步骤2车辆B 接受请求申请,首先查验车辆A证书是否到期,如果到期则拒绝通信。接着车辆B 根据车辆A 的假名,调用智能合约Search Information()在区块链中查找车辆A 的信任值,如果信任值低于某一阈值,则拒绝通信。
步骤3车辆B 如果接受通信请求,则将{PIDv,PUBv,Certv}发给车辆A。车辆A 同样按照上述步骤对车辆B 进行认证。在接受通信后,双方对本次通信对方的信任值进行计算并就近上传至RSU,由RSU 写入区块。
5)全局通信安全
每过一段时间,车联网中管理员会通过智能合约Revoke Information()来遍历区块链,找到被其他车辆认定信任值低于阈值的车辆假名并置于撤销列表。
安全通信涉及的区块链账本操作均通过智能合约完成。智能合约主要包括信息上链、身份信息验证、信任评估等3 种功能。智能合约根据不同的场景需求制定相关策略,通过代码方式写入区块链,在触发条件后能够自动完成合约上的预设。本文采用智能合约对车辆信任值及信息进行管理,可以实现对车辆信任值的上链、更改与更新,以及查找出信任值不符合规定的所有车辆。
1)Upload Information()智能合约
Upload Information()智能合约收集车辆上传给RSU 的信息,车辆信息包括假名、时间戳、所需提交的RSUID、车辆公钥、信任值及其他信息,利用账本数据状态操作API 中GetState 及PutState 方法对信息状态进行操作。
2)Search Information()智能合约
Search Information()智能合约为用户提供已上链车辆信息的查询功能。当用户有查询需求时,需要输入车辆的假名以此获取车辆的所有信息。利用账本数据状态操作API中的GetState方法对信息状态进行操作。
Revoke Information()智能合约可对车联网系统中信任值较低的车辆节点进行排查,对于排查出的多次被其他车辆认定信任值较低的车辆,能够根据车辆的假名以及公钥在CA 中进行证书的撤回。
测试在5 个车辆节点交互的情况下车辆节点综合信任值的变化情况。初始综合信任值设为0.5,ϕ设为0.7。如图7 所示,随着时段的增加,正常车辆综合信任值不断增加,恶意车辆综合信任值不断减小。
图7 车辆综合信任值评估Fig.7 Evaluation of vehicle comprehensive trust value
为测试本文策略的可行性,利用Hyperledger Fabric 组件搭建基于区块链的信任评估系统(简称为本文系统)模拟车辆信息的上链查询过程,部署多个节点模拟RSU 进行区块链仿真。仿真环境配置为Ubuntu 16.04 操作系统、Hyperledger Fabric 1.4.3 测试环境、Docker 应用容器引擎、Golang 编程语言。仿真主要对系统吞吐量和平均时延进行压力测试。模拟车辆终端向系统发送5 000 笔交易,通过改变交易发送速率,观察系统性能的变化。
在较低交易发送速率的情况下,在上链过程中系统吞吐量和平均时延的变化如图8(a)、图8(b)所示。在上链过程中,交易发送速率由25 transaction/s增加至150 transaction/s,每次叠加25 transaction/s 对系统进行测试。在查询过程中系统吞吐量和平均时延的变化如图8(c)、图8(d)所示。在查询过程中,交易发送速率由50 transaction/s增加至300 transaction/s,每次叠加50 transaction/s 对系统进行测试。基于区块链的信任评估系统相比文献[17]模型在较低交易发送速率的情况下具有较高的吞吐量以及较低的时延。
图8 低交易发送速率下的吞吐量与平均时延对比Fig.8 Comparison of throughput and average time delay under low transaction sending rate
在较高交易发送速率的情况下,上链及查询过程的系统吞吐量及平均时延变化如图9、图10 所示,两个过程的交易发送速率均从100 transaction/s 增加至1 000 transaction/s,每次叠加100 transaction/s。由图9 可以看出,在交易发送速率为400 transaction/s之后,上链过程吞吐量稳定保持在373.8 transaction/s左右。在交易发送速率为700 transaction/s 之后,查询过程吞吐量稳定保持在665.1 transaction/s 左右,均能满足车联网需求。由图10 可以看出,随着交易发送频率的提高,查询与上链过程的平均时延都有所提高,但是上链过程的响应时延均在7 s 之内,查询过程的响应时延均在3 s 之内。因为查询过程不需要与Hyperledger Fabric 中的节点进行通信,所以查询过程的平均时延及吞吐量均要优于上链过程。
图9 高交易发送速率下的吞吐量对比Fig.9 Comparison of throughput under high transmission sending rate
图10 高交易发送速率下的平均时延对比Fig.10 Comparison of average time delay under high transmission sending rate
综上所述,本文设计的基于区块链的信任评估系统在高交易发送速率及低交易发送速率下均具有较高的吞吐量及较低的时延,可满足车联网实时通信需求,同时保证数据传输的安全可靠性。
本文从车辆节点身份注册与信任评估两方面入手,提出基于区块链的车联网安全通信策略。利用椭圆曲线加密算法为车辆及RSU 生成通信所需的证书等信息,并对外部攻击进行抵抗,保证通信节点的真实性。运用直接信任和推荐信任相结合的方式对车辆信任值进行量化判断,将其与车辆的其他信息共同写入区块链,利用区块链去中心化、可追溯等特点为车联网提供分布式存储系统。同时,通过智能合约上链查询信息,对恶意车辆进行评估监管,实现对内部攻击的抵抗。仿真结果验证了该策略具有较高的系统吞吐量及较低的平均时延,能够满足车联网实时安全通信需求。后续将改进RAFT 选举机制,通过提升RAFT 共识机制的去中心化程度以及区块链系统的吞吐量,增强车联网整体性能。