车载自组织网络下基于区块链与量子密钥的组密钥分发方案*
2023-10-28程腾刘强石琴王川宿张星
程腾 刘强 石琴 王川宿 张星
(1.合肥工业大学,自动驾驶汽车安全技术安徽省重点实验室 安徽省智慧交通车路协同工程研究中心,合肥 230009;2.奇瑞汽车股份有限公司,芜湖 241000)
主题词:车载自组织网络 匿名身份认证 区块链 组密钥分发 信息安全
1 前言
车载自组织网络(Vehicular Ad-hoc NETwork,VANET)是以车辆为节点构建的移动通信网络,可以有效改善道路交通状况[1-2]。在VANET 中,车辆间及车辆与路端间需交换车辆位置、速度等隐私数据[3-4],但该网络的拓扑结构极易发生变化,且易受到安全攻击,如分布式拒绝服务(Distributed Denial of Service,DDoS)[5]、女巫(Sybil)攻击[6],最终造成隐私数据泄露[7-8]。
VANET 场景下,车端的计算能力相对较弱,基于大数因子分解的公钥与私钥的加密方式难以适用[9-10]。相较于大数因子分解,基于离散对数问题的椭圆曲线算法[11-13]虽然令计算开销大幅降低,但是仍难以适应VANET 复杂场景下低延时的需求。基于数字证书的身份认证方式的拓展性较差,管理、维护成本较高,且存在认证机构(Certification Authority,CA)安全性等问题[14-16]。匿名身份认证仅实现隐私保护,对于匿名车辆的信息无法做到可追溯、可撤销[17-18]。
现阶段,密钥分发方案主要包括集中式密钥分发方案和分布式密钥分发方案。Jiao等[19]提出基于逻辑树的分布式组密钥计算方法,结合组密钥的更新算法,文献[20]对树的结构进行了更新。但上述方案均建立在理想条件下,尚未考虑实际VANET的复杂场景。Shawky等[21]利用智能合约,实现了分布式组密钥的分发。但在组成员更新时,路端需向合约提交一笔交易,因其使用非对称加解密,计算开销较大。为保证数据的隐私和安全,文献[22]提出适用于物联网的认证和密钥管理方案。鉴于VANET是一种特殊的物联网,传统物联网的安全方案的适用性有待商榷。
集中式密钥分发方案的组密钥由密钥分配中心(Key Distribution Center,KDC)选择和分发,用户仅需保存与KDC之间的会话密钥[23-24]。文献[25]提出基于无证书身份认证的组密钥分发策略,但未考虑路端设备的合法性。文献[26]提出的方案实现了匿名与隐私保护,但未提及组密钥的更新方法。集中式密钥分发方案在大规模的网络条件下,KDC需要保存大量密钥,通信量的增加将导致其负担过重。
为弥补量子密服平台的缺陷,本文提出一种匿名身份认证与组密钥分发方案,完成匿名车辆的注销与追溯,同时将计算开销转移到路端,降低量子密服平台的通信量,从而实现组密钥的高效分发。
2 系统架构
本文提出的车联网(Vehicle-to-Everything,V2X)通信场景中,车路云的架构如图1 所示,主要由密服平台、路侧单元(Road Side Unit,RSU)、车辆和区块链组成。车辆和RSU 均可与密服平台建立点对点通信,路端与车辆、车辆与车辆之间通过PC5广播通信。密服平台由身份认证服务器(AUthentication Server Function,AUSF)、KDC与CA构成。AUSF主要负责车辆匿名凭证的生成与区块链的维护,KDC 主要负责车端预充注密钥的无线更新和路端设备量子组密钥参数的管理,CA负责路端设备证书的颁发及撤销列表的维护。
图1 系统架构
V2X场景中,车端已预先充注一定数量的量子会话密钥与量子完整性验证密钥。前期车路、车云之间不互信,双方在真正通信前均需进行身份互认,路端与云端通过安全信道连接。本文使用的符号与定义如表1 所示。
表1 符号定义
3 主体方案
本文提出的方案包括5 个阶段:初始化阶段、注册阶段、组密钥分发阶段、组密钥更新阶段以及撤销与追溯阶段。初始化阶段主要完成区块链、路端与车辆的初始化。注册阶段主要完成车辆匿名凭证的生成与车辆信息的记录。车辆与云端进行身份认证,获取车辆的匿名凭证,密服平台生成智能合约并将合约地址告知路端。完成注册后,各车辆与路端通过计算得到一定数量的匿名凭证和与之对应的智能合约的地址。组密钥分发阶段,路端通过智能合约完成对车辆的身份认证,获得预充注到车辆内部的量子密钥。路端计算组密钥参数并使用量子密钥对密钥进行加密,组播给当前合法车辆。在组密钥更新阶段,为保障组通信的前向安全与后向安全,即防止车辆加入或离开路端的组后仍可解密之前的信息,从而进行组密钥更新。追溯与撤销阶段实现对特定车辆的信息追溯与信息撤销。
3.1 初始化阶段
3.1.1 唯一ID的赋予
车载单元(On Board Unit,OBU)的硬件安全模块(Hardware Security Module,HSM)中储存OBU 的唯一标识VID与预充注的密钥。同理,路侧单元的HSM 中储存有RSU的唯一标识RID。
3.1.2 车辆的密钥预充注流程
量子密服平台在OBU的HSM中预充注一定数量的QSK与QIK,同时预充注了n个用于接收组密钥的QSK。量子密服平台识别OBU内部预充注的密钥,并将密钥与密钥标识匹配。
3.1.3 CA为路端设备颁发数字证书
CA 为第三方(车辆与路端均认可)的认证中心,根据路端的唯一标识为路端颁发数字证书,数字证书内包含路端的公钥信息。
3.1.4 区块链初始化
将区块链设置为私有链,量子密服平台为其管理者,且拥有唯一部署智能合约的权限。RSU均为区块链的节点,并被赋予调用智能合约的权限。
3.2 注册阶段
如图2 所示,注册阶段,车辆与云端的密服平台进行交互,生成车辆的匿名凭证:
a.车辆i从HSM 获取身份唯一标识VIDi,量子随机数发生器产生n个真随机数RNi-c,获取当前时间,并使用车端预充注的量子会话密钥进行加密。同时,使用另一个预充注的量子完整性验证密钥针对加密后的消息计算消息验证码Mac,形成消息体M1:{QSKtag,QIKtag,EQSK(VIDi,{RNi-c}i=1n,Tv′),HMACQIK(EQSK(VIDi,{RNi-c}i=1n,Tv′)),Tv},并将其发送至云端。
b.AUSF 收到车辆的身份认证请求后,首先根据时间戳判断消息的有效性。如果时间差过大,则不处理收到的消息。根据收到的消息中的QSKtag与QIKtag找到对应QSK与QIK,计算消息验证码Mac′以验证消息的完整性。若消息完整,则使用QSK对消息进行解密,得到车辆的唯一标识VIDi与车端产生的随机数{RNi-c}i=1n。AUSF对解密得到的VINi与数据库中查询获得的VINi进行比较,如果两者相等,则产生n个随机数{RNc-i}i=1n,对解密后得到的随机数RNi-c进行“加1”操作。通过ANCi=H(VINi,RNi-c,RNc-i)计算车辆的n个匿名凭证,云端为车辆的n个匿名凭证生成n个智能合约与各智能合约的唯一标识,并将唯一标识POS与各匿名凭证的哈希值告知车端,通知车端已上传至区块链,量子密服平台从车辆预充注的密钥中选择一个QSK与QIK,并得到对应的QSKtag与QIKtag,对消息内容加密并计算Mac,得到M2:{QSKtag,QIKtag,EQSK({RNi-c+1,RNc-i,H(ANCi),POS}i=1n,Ts′),HMACQIK(EQSK({RNi-c+1,RNc-i,H(ANCi),POS}i=1n,Ts′)),Ts}发送给车辆。
c.车端收到密服平台反馈的消息,通过判断时间戳与本地的时间差进行后续处理。车端i根据消息中QSKtag与QIKtag在车端的安全介质内找到对应的QSK与QIK,计算Mac验证消息的完整性。若所获消息完整,则使用QSK进行解密,得到云端返回的{RNi-c+1,RNc-i}i=1n。车辆i计算得到相应的n个匿名凭证ANCi=H(VIDi,RNi-c,RNc-i),并计算收到的POS的哈希值。车端组装消息,告知云端计算结果,即n对ANCi和POS,将车端组装消息M3:{QSKtag,QIKtag,EQSK(VIDi,{H(ANCi),H(POS)}i=1n,Tv′),HMACQIK(E,QSK(VIDi,{H(ANCi),H(POS)}i=1n,Tv′)),Tv}发送至云端。
d.量子密服平台首先根据时间戳判断消息的有效性,决定是否进行进一步处理。AUSF 根据所获消息的QSKtag与QIKtag,在云端的安全介质内找到对应QSK与QIK,计算Mac′以验证消息的完整性。若消息完整,则使用QSK对消息进行解密,进而得到ANCi的哈希值与相应POS的哈希值。将通过云端计算步骤b 得到的POS的哈希值与原始消息对比,相同则认为车辆已完成匿名凭证的计算,并获得POS。至此,初始化完成。
3.3 组密钥分发阶段
如图3所示,组密钥分发阶段车辆将与路端交互得到组密钥。流程为:
图3 组密钥分发流程
a.路端在特定范围内广播所属唯一标识RID与数字证书DC,即M4:{RID,DC}。
b.车辆驶入路端通信范围后,通过PC5广播接收路端设备的数字证书,并验证路端身份的合法性。测试车辆确认路端的身份,车辆向路端广播自身的匿名凭证与参数,即M5:{EPK(ANCi,POS,Tv′),Tv}。
c.路端首先根据时间戳判断消息的有效性,决定是否进行进一步处理。路端使用私钥SK对消息解密,对比Tv与Tv′。通过解密得到的POS找到并调用智能合约,反馈预充注在车辆中的密钥QSK,则可认证车端身份合法性。路端随机数发生器产生一个随机数作为GSP-1,将调用智能合约所得对称密钥QSK对GSP-1进行加密。RSU循环上述过程,完成所有车辆的认证。路端计算当前所有合法车辆的匿名凭证的哈希值作为GSP-2,使用私钥对消息进行签名得到σ,拼接时间戳后,将Ts组播给当前所有车辆。消息内容为M6:{GSP-2,{H(ANCi),QSKtag,EQSK(GSP-1,Ts′)}i=1n,σ,Ts}。
d.车端接收组播消息,检查特定的匿名凭证的哈希值,存在即为验证成功,反之验证失败。验证成功的车辆截取消息GSP-2,凭借路端证书获得的公钥对签名进行验证。对消息解密得到GSP-1,根据得到的组密钥GSP-1与GSP-2计算出组密钥GSK=H(GSP-1,GSP-2)。
3.4 组密钥更新阶段
由于路端设备固定,路端广播通信范围内的车辆会持续更新。将路端广播通信范围内的车辆视为一个组,路端设备管理的组所面临的车辆更新可分为新成员加入和组成员离开2种情况。
新成员加入过程的组密钥更新流程为:
a.当新的车辆完成初始化,准备加入当前路端设备管理的组以获得组通信服务时,为保证前向安全与后向安全,需对组通信加密的密钥进行更新。路端对新加入车辆j发送的信息进行处理,通过POS找到智能合约,并对其进行调用,若返回H(RNc-i)与密钥QSK,则认为车端身份合法。其中,GSP-1 保持不变,路端通过调用智能合约所得密钥QSK对GSP-1加密。新加入车辆身份认证完成后,路端将重新计算当前所有合法车辆的匿名凭证的哈希值作为GSP-2,并使用私钥对消息进行签名得到σ,拼接时间戳后,将Ts组播给当前所有车辆,即{GSP-2,{H(ANCi),QSKtag,EQSK(GSP-1,Ts′)}i=11,σ,Ts}。
b.对于新加入车辆,执行组密钥获取阶段步骤d。对于组内原有成员,仅需重新获得GSP-2,进而计算GSK。
组成员离开过程的组密钥更新流程为:
a.路端判断当前车辆是否为当前组成员,若已确认,路端将重新生成GSP-1,并对之前调用智能合约得到的密钥进行加密。此时,重新计算当前组内剩余合法车辆的匿名凭证的哈希值为GSP-2,并使用私钥对参数进行签名得到σ,拼接时间戳后,将Ts组播给当前所有车辆,即{GSP-2,{H(ANCi),QSKtag,EQSK(GSP-1,Ts′)}i=1n-1,σ,Ts}。
b.组内剩余车辆接收组播消息,通过检索匿名凭证判断当前位置。组内剩余车辆截取消息GSP-2,利用路端证书获得的公钥对签名进行验证,QSKtag找到密钥QSK,进行解密得到GSP-1。由组密钥GSP-1 与GSP-2得到组密钥GSK=H(GSP-1,GSP-2)。
3.5 撤销与追溯阶段
3.5.1 撤销
如图4 所示,路端或者车辆获取当前时间,随即向量子密服平台上传车辆信息,并使用QSK加密得到(ANCi,POS),计算出Mac发送至量子密服平台。云端的身份认证服务器收到车辆的身份认证请求后,首先根据时间戳判断消息的有效性,决定是否进行进一步处理。云端的身份认证服务器根据收到的QSKtag与QIKtag,在云端的安全介质内找到对应的QSK与QIK,计算Mac′以验证消息的完整性。如果消息完整,则继续使用QSK对消息解密,得到车辆的ANCi与POS,AUSF 获取ANCi对应的VID,判断车辆信息是否泄漏。如果车辆信息发生泄露,量子密服平台立即销毁VID对应的智能合约,从而实现车辆的撤销。
图4 撤销流程
3.5.2 追溯
监管机构欲根据车辆的匿名凭证获取车辆的具体行程,量子密服平台凭借匿名凭证检索其真实身份VID,凭借VID找到其智能合约,通过智能合约的事件日志查看具体行程,同时反馈给监管机构,从而实现车辆信息全生命周期可追溯。
4 形式化安全性证明
Scyther 能够对协议模型进行建模、分析和验证,检测协议中可能存在的安全漏洞和缺陷。建模时,需要对协议的安全属性进行声明,描述协议应满足的安全属性,包括协议执行过程中的行为,例如身份认证、密钥交换、消息完整性、机密性等。通过声明和验证这些安全属性,检测协议中可能存在的漏洞和攻击,确保协议的正确性和安全性[27]。本文涉及的安全属性包括:
a.机密性(Secret),用于指定协议或系统中的机密信息,包括加密密钥、密码等。为保护信息安全,仅支持授权后访问使用。
b.活性(Alive),用于验证协议或系统的活性(Liveness)。若该系统或协议具有活性属性,则将于特定时间点执行特定操作或产生特定响应。
c.弱一致性(Weakagree),为协议安全属性,指两个或多个实体在协议的某个点上是否达成一致。在Scyther 中,该属性用于检查协议中的实体是否达成共识,并不需要与其决策完全相同。
d.不一致性(Niagree),同样为协议安全属性,指两个或多个实体在协议的某个点上是否不能达成一致。在Scyther 中,该属性用于检查协议中的实体是否不能达成共识。
在本方案建模过程中,共有3种角色,即车端V、路端R与量子密服平台S。车端V与量子密服平台S生成匿名凭证的流程验证结果如图5 所示,车端V 与路端R的组密钥分发流程的验证结果如图6所示。可以看出,3种角色均可实现机密性、活性、弱一致性、不一致性属性,这意味着实现了相互认证。形式验证的结果表明,本文的组密钥分发方案具有安全性。
图5 注册流程验证
图6 组密钥分发验证
5 信令开销与计算开销
5.1 信令开销
为定量验证本文方案的实用性,将提出的方案与文献[21]、文献[28]的方案进行对比。假设车路间组密钥分发场景中共有n辆汽车和1个路端设备。网络通信中维护连接所消耗的资源远大于内容存储消耗的资源,故本文未使用传统方案中计算参与者通信传输所需的数据量,而选择比较发送的消息数量。表2所示为组密钥分发过程中车、路之间的消息发送流程与建立的总连接数量。
表2 不同方案信令开销 轮次
5.2 计算开销
为保证计算开销的准确性,在内存8 GB 的I5-7300HQ 平台上计算不同操作所需时间,通过累加方式计算耗时。由于单次操作的耗时较短,计算存在较大误差,本文循环100 000 次,计算平均耗时。假定所有方案使用的哈希算法为SHA-256,消息验证采用哈希运算消息认证码(Hash-based Message Authentication Code,HMAC),椭圆曲线密码体制(Elliptic Curve Cryptosystem,ECC)使用相同的椭圆曲线,对称加密算法为SM4,非对称加密使用SM2 算法。本文借助OpenSSL 库计算各操作的计算开销,测试代码已上传到https://gitee.com/liuqiang112358/timetest。具体计算开销如表3所示。
表3 不同操作计算开销 μs
计算车辆与路端完成组密钥分发过程中所有交通参与者的通信开销,结果如表4与图7所示。
表4 方案对比 μs
图7 路端计算开销
综上所述,相较于文献[21]、文献[28],本文方案信令开销减少近50%,相较于文献[28],车端的计算开销约缩短44%,路端计算开销仅约为该方案的20%,在多车组密钥分发阶段与组密钥更新阶段相较于使用区块链方案更具优势。
6 结束语
本文根据车路所处的环境与通信方式,结合车端与云端的量子随机数发生器和量子密钥,设计了一套适用于车路协同场景的匿名身份认证方案与组密钥分发方案,实现了车辆的隐私保护与组密钥的更新。通过在区块链上部署智能合约,降低了量子密服平台的计算开销,弥补了量子密服平台集中式密钥分发的缺陷,并实现了恶意车辆注销与信息的可追溯。当组成员更新频繁时,可有效减少量子密服平台的计算开销,同时保证V2V通信的前向安全与后向安全。