An Authentication Protocol with Conditional Privacy Protection for IoV Communication
开放科学(资源服务)标志码(OSID):
0 概述
随着经济的发展,全球的汽车保有量呈逐渐增长趋势。车联网(Internet of Vehicles,IoV)的产业化[1]和普及对于构建和谐的汽车社会具有重要意义[2],但车联网通信中的隐私泄露问题[3]严重阻碍了其应用落地[4]。车辆在行驶过程中需要定期生成安全信息发送给其他车辆或设备,附近的车辆可以根据收到的交通信息及时做出反应以避免交通混乱,如交通拥堵、交通事故等。在这种情况下,如果恶意车辆篡改他人发送的消息、冒充其他车辆发送信息或是故意发送虚假信息,都会造成严重的交通事故甚至人员伤亡[5]。对此,许多研究者设计了面向车联网V2X(Vehicle to Everything)安全通信的条件隐私保护认证协议。然而,现有协议大多只考虑车辆的可认证性而忽略了用户的可认证性,不能适用于单车多用户或单用户多车的应用场景,并且在发生纠纷时只能追溯到车辆的真实身份,不能追溯到用户的真实身份。
本文提出一种面向车联网安全通信的条件隐私保护认证协议。该协议根据用户身份信息和车辆身份信息生成车与用户绑定的生物密钥,适用于单车多用户或单用户多车的场景。同时,协议支持车辆及用户的条件隐私保护,即消息认证时不暴露车辆和用户的身份信息,在特定情况下可追溯到用户和车辆。此外,协议中消息批量验证的功能也可满足车联网低延时通信的要求。
1 相关研究
许多研究者提出了不同的面向车联网V2X的隐私保护认证方案,其中一部分方案是基于公钥基础设施(Public Key Infrastructure,PKI)设计的,如IEEE 1609.2中PKI被标准化,用于V2X的安全应用。在传统基于PKI的密码体制中,由证书机构(Certification Authority,CA)为用户颁发证书,通信双方可以通过消息的数字签名来保证消息来源的可靠性。在文献[6]提出的方案中,车辆会在一定的时间间隔内向CA请求短期假名。为减少与CA的通信开销,文献[7]提出了车辆自我生成假名的机制。文献[8]提出一种假名变更策略,避免了同一假名使用时间过长而被跟踪的问题。文献[9]提出的MixGroup隐私保护方案通过使用假名交互策略和集成群组签名机制构造扩展的假名更改区域,允许该区域内的车辆连续交换其假名,更大程度上保护了车辆的位置隐私。尽管PKI针对车联网可以提供认证性和不可否认性等安全特性,但存在一些不足,其中最重要的是证书管理带来的巨大通信和计算开销。文献[10]通过改进现有的车辆PKI并引入布隆过滤器压缩证书撤销列表,在保证隐私的前提下提出了有效的假名撤销方案。
此外,对称加密方案也被广泛应用于V2X通信。相比于PKI,使用MAC码进行消息认证的对称密码具有更高的计算效率和更低的通信负载,因而更为高效。文献[11]首次提出了基于对称密码的车联网认证协议,而在文献[12]提出的协议中,车辆在没有中央授权的情况下保留用于认证的随机密钥集,以便在零信任策略下保护用户的隐私。文献[13-14]提出了双重认证和密钥托管技术,一方面利用双重认证机制提供更高的安全性,防止未授权的车辆进入到网络中,另一方面利用双重认证的群组密码管理机制有效地将群组密钥分发给所有成员。文献[15]提出一种基于对称密码的轻量级认证协议,使用存储在防篡改设备中的哈希链,通过不断更新密钥种子实现了系统密钥的更新。然而,基于对称密码的认证协议因存在密钥管理问题而易受攻击,并且会导致通信和存储的开销,同时此类协议缺乏不可否认性,无法为每辆车都提供认证。
除上述两类方案外,许多基于身份的方案也被相继提出。在基于身份基签名(Identity-Based Signature,IBS)的方案中,节点的身份被作为公钥,基于身份生成的私钥被用于对消息进行签名,从而避免为公钥分配证书,省去了繁重的证书管理工作。文献[16]设计一种基于椭圆曲线密码的身份基签名,并将其应用在V2X通信中。文献[17]提出的方案能够支持批量验证,文献[18-19]提出的方案则在效率上取得了提高。文献[20]提出一种不需要任何限制的身份认证协议,其不依赖于任何路侧单元(Road Side Unit,RSU)、假名和防篡改设备,可实现车辆间的相互认证。文献[21]提出一种结合PKI和身份基的混合条件隐私保护认证协议。在该协议中,基于身份的签名避免了证书撤销列表的检查和复杂的双线性配对操作。同时,可信任第三方可以通过撤销唯一的长期证书为车辆撤销身份。
此外,一些无证书签名方案也被应用到车联网环境中。文献[22]提出一种名为CLMA的无证书匿名认证机制。该机制基于环上容错学习问题和支持口令认证的密钥交换技术,在车辆通过路侧单元访问车辆云服务时,能够提供相互认证功能。文献[23]提出一种基于Schnorr的隐式证书认证方案SCMS,其将验证签名者公钥有效性和验证签名的过程相结合,相比于现有基于公钥的方案进一步提高了V2X通信的效率。文献[24]提出一种名为SE-CLASA的基于无证书的认证协议。该协议不依赖于完全受信任的第三方,且签名方案支持聚合,能够抵抗信息注入攻击。
传统场景假设一辆车仅供一个合法用户使用,在用户登录车辆之前并不对用户的身份进行认证,存在安全隐患,而实际中存在单车多用户或单用户多车的场景。单车多用户场景指的是同一辆车可能需要被不同的用户驾驶;单用户多车场景指的是同一个用户可能拥有多辆车的使用权。此时,需要在用户登录车辆前对用户身份的合法性进行验证,只有具有权限的合法用户才能登录车辆并拒绝非法用户。目前大部分方案由于不具备用户可认证性,因此并不适用于单车多用户或单用户多车的场景。
传统方案将车辆行驶通信时的车和用户看作一个整体,当发生纠纷时仅可追溯到发送消息的车辆而不能确定消息的来源用户。例如,在单车多用户场景中,某用户驾驶车辆超速行驶,交通监管部门需要对驾驶车辆的用户进行处罚,此时,该用户可能会否认驾驶过该车辆或声称是其他用户驾驶从而逃避处罚。因此,在确定消息来源时,不仅需要追溯发送该消息的车辆的真实身份,而且还需要追溯发送该消息的用户的真实身份。
2 背景知识
2.1 双线性映射
设$ {G}_{1} $、$ {G}_{2} $和$ {G}_{\mathrm{T}} $为大素数p阶的乘法循环群,$ {g}_{1} $和$ {g}_{2} $分别是$ {G}_{1} $和$ {G}_{2} $中的元素。双线性映射$ e:{G}_{1}\times {G}_{2}\to {G}_{\mathrm{T}} $具有以下特点:
1)双线性:对任意的$ {g}_{1}\in {G}_{1} $,$ {g}_{2}\in {G}_{2} $,$ \forall a, b\in {\mathbb{Z}}_{p}^{\mathrm{*}} $,$ e({g}_{1}^{a}, {g}_{2}^{b})=e({g}_{1}, {g}_{2}{)}^{ab} $。
2)非退化性:令$ {g}_{1} $和$ {g}_{2} $分别是$ {G}_{1} $和$ {G}_{2} $的生成元,$ e({g}_{1}^{a}, {g}_{2}^{b})\ne 1 $。
3)可计算性:对所有的$ {g}_{1}\in {G}_{1} $和$ {g}_{2}\in {G}_{2} $,$ e({g}_{1}, {g}_{2}) $都是可以高效计算的。
2.2 椭圆曲线离散对数问题
椭圆曲线离散对数问题(Elliptic Curve Discrete Logarithm Problem,ECDLP)描述如下:令$ G $为有限域上的椭圆曲线群,$ P $为$ G $的生成元,给定椭圆曲线中的元素$ P, Q\in G $,对于任意概率多项式时间的算法,计算未知的$ a $,使得$ Q=aP $。
2.3 哈希函数
输入任意长度的消息$ x $,哈希函数$ h $可以输出一个短的、定长的比特串$ y $作为其消息摘要。如果一个哈希函数满足以下3个性质,则称该哈希函数是安全的:
1)单向性:对任意输入$ x $,计算$ h\left(x\right) $是容易的;对给定$ y $,计算$ x $使得$ y={h}^{-1}\left(x\right) $是困难的。
2)弱抗碰撞性:给定$ {x}_{1} $,计算出$ {x}_{2} $且$ {x}_{1}\ne {x}_{2} $使得$ h\left({x}_{1}\right)=h\left({x}_{2}\right) $是困难的。
3)强抗碰撞性:找到一组$ {x}_{1}\ne {x}_{2} $使得$ h\left({x}_{1}\right)=h\left({x}_{2}\right) $是困难的。
2.4 生物信息
生物信息即生物特征,每个人都具有独特的生物特征,分为身体特征和行为特征两种。身体特征是与生俱来的先天特征,主要包括指纹、虹膜、面容、声纹等;行为特征是后天形成的具有个人特色的行为和习惯,主要包括签名、语音等。可以用于身份验证的生物特征应具有以下特点:
1)普遍性:每个人都拥有该生物特征。
2)唯一性:每个人的该生物特征都是唯一的。
3)不易变性:该生物特征很难发生变化。
4)可采集性:在现有技术下,该生物特征容易采集并储存。
5)安全性:该生物特征很难被伪造。
在车联网环境中,可使用生物特征对用户进行身份验证,通过生物特征识别技术将生物传感器获取到的生物信息转换为可直接计算的数据。车联网中的生物信息主要被用于注册阶段和用户认证阶段。注册阶段利用传感器收集用户的生物信息,将其转换为计算机可识别的信息并进行存储;用户认证阶段利用传感器收集用户生物信息并与数据库中存储的信息进行比对,从而验证用户的合法性。
3 系统模型和安全模型
3.1 系统模型
如图 1所示,本文协议中包含4种实体,即用户、车载单元(On-Board Uint,OBU)、路侧单元(RSU)和可信任第三方(Trusted Authority,TA)。
1)用户是车辆的驾驶员,协议使用用户的生物信息代表其身份信息。在单车多用户或单用户多车场景中,同一用户可能拥有多辆汽车,同一车辆可能由多个用户使用。
2)OBU包括生物设备(Biometric Device,BD)和防篡改设备(Tamper Proof Device,TPD)。BD用于存储生物信息;TPD用于存储密码材料。现有技术可保证TPD不可篡改且不可通过暴力手段获取其中信息。所有联网汽车均安装电子单元OBU。
3)RSU为路侧单元,可以与RSU辖区内的车辆进行通信。
4)TA为完全可信任的第三方认证机构,拥有无限的计算资源和存储空间。
V2X通信主要包括V2V(Vehicle to Vehicle)通信和V2I(Vehicle to Infrastructure)通信两类。V2V通信是指车辆与车辆之间的通信;V2I通信是指车辆与RSU之间的通信。
3.2 设计目标
一个安全的面向车联网通信的条件隐私保护认证协议应满足以下要求:
1)匿名性:在通信过程中,除TA以外的任何人不能获得车辆的真实身份信息。
2)不可伪造性:任意攻击者不能伪造出合法的签名。
3)强可追溯性:在发生纠纷时,TA不仅可以追溯到发送信息的车辆的真实身份,而且还可以追溯到发送该消息的用户的真实身份。
4)不可链接性:任意车辆不能确认接收的不同信息是否来源于同一车辆。
5)抵御中间人攻击:攻击者不能实现中间人攻击。
3.3 算法定义
本文提出的面向车联网安全通信的条件隐私保护认证协议由8个算法组成,具体如下:
1)系统初始化算法Setup。该算法由TA执行,输入安全参数$ \lambda $,输出系统私钥和公共参数params。
2)注册算法Register。该算法由TA执行,输入车辆$ {V}_{i} $的真实身份$ \mathrm{R}\mathrm{I}{\mathrm{D}}_{i} $、用户的身份信息$ {\mathrm{p}}_{u} $和车辆的相关信息$ \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u} $,完成车辆和用户的注册功能。在此阶段,TA生成车辆和用户绑定的生物密钥和初始匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}} $,并为OBU配置必要的参数。
3)用户认证算法UserVerify。该算法由车辆的BD单元执行,输入未经验证的用户身份信息$ {\mathrm{p}}_{u}^{\mathrm{*}} $,完成用户车辆身份认证功能。
4)离线匿名身份生成算法PidGen。该算法由车辆的TPD单元执行,输入车辆的初始匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}} $,为车辆生成签名需要的匿名身份和私钥$ <\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, \mathrm{ }\mathrm{s}{\mathrm{k}}_{i}> $。
5)消息签名算法MesSign。该算法由消息的发送方执行,输入签名消息$ {M}_{i} $,输出对应消息的签名。
6)消息验证算法MesVerify。该算法由消息的接收方执行,输入$ (\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{ }\mathrm{T}\mathrm{s}\mathrm{ }, {\sigma }_{i}) $。输出一位$ b $。若签名合法,则$ b=1 $,否则$ b=0 $,完成对消息的认证。
7)批量验证算法BatchVerify。该算法由消息的接收方执行,输入需要验证的多条消息签名,输出一位$ b $。若签名合法,则$ b=1 $,否则$ b=0 $,完成对消息的批量验证。
8)追溯算法Trace。该算法由可信任第三方执行,输入车辆的匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i} $,输出用户和车辆的真实身份信息。
3.4 安全模型
本文协议的安全性由定义在挑战者$ \mathcal{C} $和敌手$ \mathcal{A} $之间的游戏(Game)进行界定。游戏过程如下:
1)Setup阶段。挑战者$ \mathcal{C} $输入安全参数$ \lambda $,运行Setup算法生成系统私钥和公共参数params,并将params发送给敌手$ \mathcal{A} $。
2)Query阶段。敌手$ \mathcal{A} $可以任意询问以下预言机:
(1)哈希询问h-Oracle:敌手$ \mathcal{A} $输入任意数据$ x $,挑战者$ \mathcal{C} $将对应的$ h\left(x\right) $输出给$ \mathcal{A} $。
(2)哈希询问H-Oracle:敌手$ \mathcal{A} $输入任意数据$ x $,挑战者$ \mathcal{C} $将对应的$ H\left(x\right) $输出给$ \mathcal{A} $。
(3)签名询问Sign-Oracle:敌手$ \mathcal{A} $输入需要签名的消息$ {M}^{\mathrm{*}} $,挑战者$ \mathcal{C} $将生成的签名消息$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}^{\mathrm{*}}, {M}^{\mathrm{*}}, \mathrm{T}{\mathrm{s}}^{\mathrm{*}}, {\sigma }^{\mathrm{*}}\} $返回给$ \mathcal{A} $。
3)Forge阶段。敌手$ \mathcal{A} $输入$ {M}^{\mathrm{*}} $,输出伪造的消息签名$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}^{\mathrm{*}}, {M}^{\mathrm{*}}, \mathrm{ }\mathrm{T}{\mathrm{s}}^{\mathrm{*}}, {\sigma }^{\mathrm{*}}\} $。
定义敌手赢得游戏当且仅当$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}^{\mathrm{*}}, {M}^{\mathrm{*}}, \mathrm{ }\mathrm{T}{\mathrm{s}}^{\mathrm{*}}, {\sigma }^{\mathrm{*}}\} $是一个有效的签名且签名预言机从未收到过签名询问$ {M}^{\mathrm{*}} $。
定义1 选择消息攻击下存在性不可伪造性
如果敌手$ \mathcal{A} $赢得Game的概率是可忽略的,那么本文协议中的签名方案在适应性选择消息攻击下是存在性不可伪造的。
4 协议描述
4.1 符号定义
本文协议中的符号和参数定义如表 1所示。
表 1
(Table 1)
表 1 符号和参数定义
Table 1 Definition of symbols and parameters
| 符号或参数 |
定义 |
| $ G $ |
有限域上的椭圆曲线群 |
| $ P $ |
群G的生成元 |
| $ {h}_{l}, h, H $ |
安全的哈希函数 |
| $ \mathrm{S}\mathrm{K}, \mathrm{P}\mathrm{K} $ |
系统公私钥 |
| $ \mathrm{s}\mathrm{k}, \mathrm{p}\mathrm{k} $ |
身份设置公私钥 |
| $ \mathrm{R}\mathrm{I}{\mathrm{D}}_{i} $ |
车辆$ {V}_{i} $的真实身份 |
| $ {\mathrm{p}}_{u} $ |
用户身份信息 |
| $ \mathrm{p}{\mathrm{w}}_{i, u} $ |
用户$ {p}_{u} $在车辆$ {V}_{i} $上生成的生物密钥 |
| $ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}} $ |
TA为车辆$ {V}_{i} $和用户$ {p}_{u} $生成的初始匿名身份 |
| $ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i} $ |
车辆的阶段性匿名身份 |
| $ \mathrm{T}\mathrm{s} $ |
签名时的系统时间 |
| $ \mathrm{s}{\mathrm{k}}_{i} $ |
签名私钥 |
| $ \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u} $ |
车辆和用户相关信息 |
| $ \mathrm{k}\mathrm{e}\mathrm{e}\mathrm{p}\mathrm{e}{\mathrm{r}}_{i.u} $ |
生物密钥保存函数 |
| $ \mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u} $ |
生物密钥验证函数 |
|
下载CSV
表 1 符号和参数定义
Table 1 Definition of symbols and parameters
|
4.2 算法描述
本文协议中的算法描述如下:
1)$ \mathrm{S}\mathrm{e}\mathrm{t}\mathrm{u}\mathrm{p}\left({1}^{\lambda }\right)\to \mathrm{p}\mathrm{a}\mathrm{r}\mathrm{a}\mathrm{m}\mathrm{s} $
输入安全参数$ \lambda $,TA的具体操作如下:
(1)TA随机选取两个大素数$ p\mathrm{、}q $和非平凡的椭圆曲线$ E:{y}^{2}={x}^{3}+ax+b\mathrm{m}\mathrm{o}\mathrm{d}p $,其中$ a, b\in {F}_{p} $。令$ G $为椭圆曲线$ E $上的所有点和无穷远点$ O $构成的群,随机选取群$ G $中阶为$ q $的生成元$ P $。
(2)TA随机选取$ x\in {\mathbb{Z}}_{p}^{\mathrm{*}}, s\in {\mathbb{Z}}_{p}^{\mathrm{*}} $,设置系统私钥$ \mathrm{S}\mathrm{K}=x $和身份设置私钥$ \mathrm{s}\mathrm{k}=s $,以及系统公钥$ \mathrm{P}\mathrm{K}=xP $和身份设置公钥$ \mathrm{p}\mathrm{k}=sP $。
(3)TA选取安全的抗碰撞哈希函数$ {h}_{l}\mathrm{、}h\mathrm{、}H $,函数形式分别为:$ {h}_{l}:\left(\mathrm{0, 1}\right)\mathrm{*}\to {\left(\mathrm{0, 1}\right)}^{l} $,$ h:G\to {\left(\mathrm{0, 1}\right)}^{l} $,$ H:{\left(\mathrm{0, 1}\right)}^{\mathrm{*}}\to {\mathbb{Z}}_{p}^{\mathrm{*}} $。
设置系统公共参数$ \mathrm{p}\mathrm{a}\mathrm{r}\mathrm{a}\mathrm{m}\mathrm{s}=(G, p, q, P, \mathrm{P}\mathrm{K}, \mathrm{p}\mathrm{k}, $ $ {h}_{l}, h, H) $。
2)$ \mathrm{R}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{s}\mathrm{t}\mathrm{e}\mathrm{r}(\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}, {\mathrm{p}}_{u}, \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u}) $
TA完成系统初始化后,车辆和用户即可注册。用户将生物信息录入车辆传感器中,生成身份信息$ {\mathrm{p}}_{u} $。注册时,车辆将$ (\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}, {\mathrm{p}}_{u}, \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u}) $发送给TA,TA对信息的正确性进行验证后执行以下操作:
(1)计算生物密钥$ \mathrm{p}{\mathrm{w}}_{i, u}={h}_{l}(\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}\oplus {\mathrm{p}}_{u}) $。
(2)随机生成车辆$ {\mathrm{V}}_{i} $和用户$ {\mathrm{p}}_{u} $绑定的初始匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}\in {\left\{\mathrm{0, 1}\right\}}^{l} $。
(3)添加$ (\mathrm{n}\mathrm{u}\mathrm{m}\mathrm{b}\mathrm{e}\mathrm{r}\mathrm{ }, \mathrm{R}\mathrm{I}{\mathrm{D}}_{i}, {\mathrm{p}}_{u}, \mathrm{p}{\mathrm{w}}_{i, u}, \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}, \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u}) $到维护的注册信息列表,其中,$ \mathrm{n}\mathrm{u}\mathrm{m}\mathrm{b}\mathrm{e}\mathrm{r} $为条目的编号。
(4)分别计算$ \mathrm{k}\mathrm{e}\mathrm{e}\mathrm{p}\mathrm{e}{\mathrm{r}}_{i.u}=\mathrm{ }\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}\oplus {h}_{l}(\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}\oplus \mathrm{p}{\mathrm{w}}_{i, u}) $和$ \mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u}= $ $ {h}_{l}(\mathrm{p}{\mathrm{w}}_{i, u}\oplus \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}) $。
(5)为BD单元配置参数$ (\mathrm{p}{\mathrm{w}}_{i, u}, \mathrm{k}\mathrm{e}\mathrm{e}\mathrm{p}\mathrm{e}{\mathrm{r}}_{i, u}, \mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u}) $,为TPD单元配置参数$ (\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}, \mathrm{S}\mathrm{K}) $。
3)$ \mathrm{U}\mathrm{s}\mathrm{e}\mathrm{r}\mathrm{V}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{y}\left({\mathrm{p}}_{u}^{\mathrm{*}}\right) $
需要登录车辆的未经验证的用户向车辆传感器输入生物信息,生成用户身份$ {\mathrm{p}}_{u}^{\mathrm{*}} $,由车辆的BD单元执行$ \mathrm{U}\mathrm{s}\mathrm{e}\mathrm{r}\mathrm{V}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{y} $算法验证用户的身份合法性。具体操作如下:
(1)计算$ {\mathrm{p}}_{u}^{\mathrm{*}} $对应的$ \mathrm{p}{\mathrm{w}}_{i, u}^{\mathrm{*}}={h}_{l}(\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}\oplus {\mathrm{p}}_{u}^{\mathrm{*}}) $。
(2)查询是否存在$ \mathrm{p}{\mathrm{w}}_{i, u}=\mathrm{p}{\mathrm{w}}_{i, u}^{\mathrm{*}} $。若不存在,则拒绝;否则根据存储结果获取$ \mathrm{p}{\mathrm{w}}_{i, u} $所对应的$ \mathrm{k}\mathrm{e}\mathrm{e}\mathrm{p}\mathrm{e}{\mathrm{r}}_{i, u} $和$ \mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u} $,继续下述操作。
(3)计算$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}\mathrm{*}}=\mathrm{k}\mathrm{e}\mathrm{e}\mathrm{p}\mathrm{e}{\mathrm{r}}_{i, u}\oplus {h}_{l}(\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}\oplus p{w}_{i, u}^{\mathrm{*}}) $。
(4)计算$ \mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u}^{\mathrm{*}}={h}_{l}(\mathrm{p}{\mathrm{w}}_{i, u}^{\mathrm{*}}\oplus \mathrm{ }\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}) $,同时,验证$ \mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u}^{\mathrm{*}}=\mathrm{v}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{i}\mathrm{e}{\mathrm{r}}_{i, u} $是否成立。若成立,则用户身份合法,BD使用$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}\mathrm{*}} $登录TPD进行后续阶段的操作;否则拒绝。
4)$ \mathrm{P}\mathrm{i}\mathrm{d}\mathrm{G}\mathrm{e}\mathrm{n}\left(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}\right)\to (\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, \mathrm{s}{\mathrm{k}}_{i}) $
该算法由OBU中的TPD执行,输入$ \mathrm{U}\mathrm{s}\mathrm{e}\mathrm{r}\mathrm{V}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{e}\mathrm{r}\left({\mathrm{p}}_{u}^{\mathrm{*}}\right) $中经过验证后获得的初始化匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}} $,离线生成匿名身份和签名私钥。具体操作如下:
(1)随机选取$ {w}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $。
(2)计算$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i}=<\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}, \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 2}> $,其中,$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}={w}_{i}\cdot P $,$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 2}=\mathrm{P}\mathrm{I}{\mathrm{D}}_{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}\oplus h({w}_{i}\cdot \mathrm{p}\mathrm{k}) $。
(3)设置$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i} $对应的签名私钥$ \mathrm{s}{\mathrm{k}}_{i}={w}_{i} $。
(4)输出$ <\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, \mathrm{s}{\mathrm{k}}_{i}> $。
5)$ \mathrm{M}\mathrm{e}\mathrm{s}\mathrm{S}\mathrm{i}\mathrm{g}\mathrm{n}({M}_{i}, <\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, \mathrm{s}{\mathrm{k}}_{i}>)\to (\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}) $
该算法输入需要签名的消息$ {M}_{i} $,由TPD单元执行。具体操作如下:
(1)在上述过程中离线生成的匿名身份和密钥对中随机选取一组$ <\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, \mathrm{s}{\mathrm{k}}_{i}> $。
(2)计算$ {f}_{i}=H\left(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}\right|\left|{M}_{i}\right|\left|\mathrm{T}\mathrm{s}\right) $。
(3)计算$ {\sigma }_{i}=\mathrm{s}{\mathrm{k}}_{i}+{f}_{i}\cdot \mathrm{S}\mathrm{K}\mathrm{m}\mathrm{o}\mathrm{d}q $。
(4)输出$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}\} $并进行广播。
6)$ \mathrm{M}\mathrm{e}\mathrm{s}\mathrm{V}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{y}(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i})\to b $
该算法由接收方完成,对接收信息$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}\} $进行验证,输出一位$ b $。若$ b=1 $,则表示接收消息签名,若$ b=0 $,则表示拒绝消息签名。具体操作如下:
(1)设当前系统的时间为$ {T}_{\mathrm{c}\mathrm{u}\mathrm{r}} $,有效时间差为Δ。若$ |{T}_{\mathrm{c}\mathrm{u}\mathrm{r}}-\mathrm{T}\mathrm{s}|> $ Δ,则当前消息失效,丢弃;否则继续下述步骤。
(2)计算$ {f}_{i}=H\left(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}\right|\left|{M}_{i}\right|\left|\mathrm{T}\mathrm{s}\right) $。
(3)验证$ {\sigma }_{i}\cdot P=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{f}_{i}\cdot \mathrm{P}\mathrm{K} $是否成立。若等式成立,输出$ b=1 $,否则输出$ b=0 $。
7)$ \mathrm{B}\mathrm{a}\mathrm{t}\mathrm{c}\mathrm{h}\mathrm{V}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{y}\mathrm{ }\left(\mathrm{ }\right\{\mathrm{ }\mathrm{P}\mathrm{I}{\mathrm{D}}_{1}, {M}_{1}, \mathrm{T}{\mathrm{s}}_{1}, {\sigma }_{1}\}\mathrm{ }, \mathrm{ }\{\mathrm{ }\mathrm{P}\mathrm{I}{\mathrm{D}}_{2}, {M}_{2}, \mathrm{T}{\mathrm{s}}_{2}, {\sigma }_{2}\}\mathrm{ }, \cdots , \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{n}, {M}_{n}, \mathrm{T}{\mathrm{s}}_{n}, {\sigma }_{n}\left\}\right)\to b$
为提高通信效率,车辆在同一时间收到其通信范围内的多条签名信息后,使用批量验证提高验证的效率。输入车辆接收到的多条信息$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{1}, {M}_{1}, \mathrm{T}{\mathrm{s}}_{1}, $ $ {\sigma }_{1}\}\mathrm{ }, \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{2}, {M}_{2}, \mathrm{T}{\mathrm{s}}_{2}, {\sigma }_{2}\}, \cdots , \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{n}, {M}_{n}, \mathrm{T}{\mathrm{s}}_{n}, {\sigma }_{n}\} $,输出一位$ b $。若$ b=1 $,则表示接收这些消息签名,若$ b=0 $,则表示拒绝这些消息签名。具体操作如下:
(1)接收方检验所有信息中的时间$ \mathrm{T}{\mathrm{s}}_{i} $是否有效,若无效则拒绝接收该消息,其中,$ i=\mathrm{1, 2}, \cdots , n $。
(2)随机选取一组由随机整数构成的向量$ \mathit{c}=\{{c}_{1}, {c}_{2}, \cdots , {c}_{n}\} $,其中,$ {c}_{i}\in [1, {2}^{t}] $,$ t $为一个小整数。
(3)验证$ \sum\limits_{i=1}^{n}({c}_{i}\cdot {\sigma }_{i})\cdot P=\sum\limits_{i=1}^{n}({c}_{i}\cdot \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1})\mathrm{ }+\sum\limits_{i=1}^{n}({c}_{i}\cdot {f}_{i})\cdot $ $ \mathrm{P}\mathrm{K} $是否成立。若等式成立,输出$ b=1 $;否则输出$ b=0 $。
8)$ \mathrm{T}\mathrm{r}\mathrm{a}\mathrm{c}\mathrm{e}\left(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}\right)\to (\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}, {\mathrm{p}}_{u}) $
该算法输入匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i} $,实现对真实身份的追溯。具体操作如下:
(1)计算$ \alpha =\mathrm{s}\mathrm{k}\cdot \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}=s\cdot \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1} $。
(2)计算$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 2}\oplus h\left(\alpha \right) $。
(3)查询$ (\mathrm{n}\mathrm{u}\mathrm{m}\mathrm{b}\mathrm{e}\mathrm{r}, \mathrm{ }\mathrm{R}\mathrm{I}{\mathrm{D}}_{i}{\mathrm{p}}_{u}, \mathrm{p}{\mathrm{w}}_{i, u}, \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}, \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u})\mathrm{ }, $输出车辆初始化匿名身份$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}} $对应的车辆真实身份$ \mathrm{R}\mathrm{I}{\mathrm{D}}_{i} $和用户真实身份$ {\mathrm{p}}_{u} $。
5 正确性与安全性分析
5.1 计算正确性
本文协议中的签名方案满足计算正确性,其单条消息验证和批量验证过程如下:
1)单条消息验证:
|
$ \begin{array}{l}{\sigma }_{i}\cdot P=(\mathrm{s}{\mathrm{k}}_{i}+{f}_{i}\cdot \mathrm{S}\mathrm{K})\cdot P=({w}_{i}+{f}_{i}\cdot x)\cdot P=\\ \;\;\;\;\;\;\;\;\;\;{w}_{i}\cdot P+{f}_{i}\cdot x\cdot P={w}_{i}\cdot P+{f}_{i}\cdot PK=\\ \;\;\;\;\;\;\;\;\;\;\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+H\left(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}\right|\left|{M}_{i}\right|\left|\mathrm{T}\mathrm{s}\right)\cdot \mathrm{P}\mathrm{K}=\\ \;\;\;\;\;\;\;\;\;\;\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{f}_{i}\cdot \mathrm{P}\mathrm{K}\end{array} $
|
2)批量验证:
|
$ \begin{array}{l}\sum\limits_{i=1}^{n}({c}_{i}\cdot {\sigma }_{i})\cdot P=\sum\limits_{i=1}^{n}({c}_{i}\cdot (\mathrm{s}{\mathrm{k}}_{i}+{f}_{i}\cdot \mathrm{S}\mathrm{K}))\cdot P=\\\;\;\;\;\;\;\;\;\;\; \sum\limits_{i=1}^{n}({c}_{i}\cdot ({w}_{i}+{f}_{i}\cdot x))\cdot P=\sum\limits_{i=1}^{n}{c}_{i}\cdot ({w}_{i}\cdot P+{f}_{i}\cdot x\cdot P)=\\ \;\;\;\;\;\;\;\;\;\;\sum\limits_{i=1}^{n}{c}_{i}\cdot ({w}_{i}\cdot P+{f}_{i}\cdot x\cdot P)=\sum\limits_{i=1}^{n}{c}_{i}\cdot (\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{f}_{i}\cdot PK)=\\\;\;\;\;\;\;\;\;\;\; \sum\limits_{i=1}^{n}({c}_{i}\cdot \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1})+\sum\limits_{i=1}^{n}({c}_{i}\cdot {f}_{i})\cdot \mathrm{P}\mathrm{K}\end{array} $
|
5.2 安全性证明
对本文协议的安全性从匿名性、不可伪造性、强可追溯性、不可链接性和抵御中间人攻击这5个方面进行形式化证明。
定理1(匿名性) 除了TA,没有人可以知道发送消息的车辆真实身份。
证明 车辆的真实身份$ \mathrm{R}\mathrm{I}{\mathrm{D}}_{i} $仅在车辆注册阶段通过安全信道发送给TA,只有TA维护表格$ (\mathrm{n}\mathrm{u}\mathrm{m}\mathrm{b}\mathrm{e}\mathrm{r}, $ $ \mathrm{R}\mathrm{I}{\mathrm{D}}_{i}, {\mathrm{p}}_{u}, \mathrm{p}{\mathrm{w}}_{i, u}, \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}}, \mathrm{I}\mathrm{n}\mathrm{f}{\mathrm{o}}_{i, u}) $。在此阶段,除了车辆和TA之外,任何第三方均不能获得车辆的真实身份。车辆在后续消息的签名验证过程中使用匿名身份。该匿名身份在注册阶段由TA为车辆生成,即使攻击者对签名消息窃听,也不能获取车辆的真实身份$ \mathrm{R}\mathrm{I}{\mathrm{D}}_{i} $。
定理2(不可伪造性) 假设ECDLP问题是困难的,在随机预言机模型下,本文方案是适应性选择消息攻击下存在性不可伪造的。
证明 在随机预言机模型下,假设存在敌手$ \mathcal{A} $能够在多项式时间$ t $内以不可忽略的概率在游戏中获胜,则存在算法$ \mathcal{C} $能够以不可忽略的概率解决ECDLP困难问题。
假设算法$ \mathcal{C} $是一个关于ECDLP的有效算法,输入为$ (P, Q)\in G $,其中$ Q=aP $且$ a $未知,则$ \mathcal{C} $的目标是计算出$ a $。定义敌手$ \mathcal{A} $可以伪造出本文协议中的消息签名$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}^{\mathrm{*}}, {M}^{\mathrm{*}}, \mathrm{T}{\mathrm{s}}^{\mathrm{*}}, {\sigma }^{\mathrm{*}}\} $,算法$ \mathcal{C} $可以充当游戏的挑战者,运行敌手$ \mathcal{A} $作为子程序解决ECDLP困难问题。挑战者$ \mathcal{C} $和敌手$ \mathcal{A} $之间的游戏交互过程如下:
1)Setup阶段。挑战者$ \mathcal{C} $设置系统公钥为$ \mathrm{P}\mathrm{K}=Q $,任意选取$ s\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,设置$ \mathrm{s}\mathrm{k}=s $,$ \mathrm{p}\mathrm{k}=sP $,并将公共参数$ \mathrm{p}\mathrm{a}\mathrm{r}\mathrm{a}\mathrm{m}\mathrm{s} $发送给敌手$ \mathcal{A} $,$ \mathrm{p}\mathrm{a}\mathrm{r}\mathrm{a}\mathrm{m}\mathrm{s}=(G, p, q, $ $ P, \mathrm{p}\mathrm{k}, \mathrm{P}\mathrm{K}, {h}_{l}, h, H) $。
2)Query阶段。$ \mathcal{C} $建立初始为空的列表$ {L}_{h} $和$ {L}_{H} $。$ {L}_{h} $中存储元组$ <\Gamma , \tau > $,$ \Gamma \in G $,$ \tau \in {\{0, \mathrm{ }1\}}^{l} $;$ {L}_{H} $中存储元组$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{ }\mathrm{T}\mathrm{s}\mathrm{ }, {\beta }_{i}\} $,$ {\beta }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $。当敌手$ \mathcal{A} $进行询问时,$ \mathcal{C} $做出对应的回答:
(1)h-Oracle。敌手$ \mathcal{A} $输入数据$ \Gamma $时,$ \mathcal{C} $查询$ {L}_{h} $。若存在元组$ <\Gamma , \tau > $,则将$ \tau $返回给$ \mathcal{A} $;否则,任意选取$ \tau \in {\left\{\mathrm{0, 1}\right\}}^{l} $,存储$ <\Gamma , \tau > $到列表$ {L}_{h} $,并将$ \tau $返回给$ \mathcal{A} $。
(2)H-Oracle。当敌手$ \mathcal{A} $输入任意元组$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, $ $ {M}_{i}, \mathrm{T}\mathrm{s}\} $时,$ \mathcal{C} $查询$ {L}_{H} $。若存在元组$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{ }\mathrm{T}\mathrm{s}\mathrm{ }, {\beta }_{i}\} $,则将$ {\beta }_{i} $返回给$ \mathcal{A} $;否则,任意选取$ {\beta }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,存储$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{\mathrm{i}}, $ $ {M}_{i}, \mathrm{ }\mathrm{T}\mathrm{s}\mathrm{ }, {\beta }_{i}\} $到列表$ {L}_{H} $,并将$ {\beta }_{i} $返回给$ \mathcal{A} $。
(3)Sign-Oracle。敌手$ \mathcal{A} $输入需要签名的消息$ {M}_{i} $,挑战者$ \mathcal{C} $任意选取$ {\sigma }_{i}, {\beta }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,任意选取$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 2}\in {\left\{\mathrm{0, 1}\right\}}^{l} $。计算$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}={\sigma }_{i}\cdot P-{\beta }_{i}\cdot \mathrm{P}\mathrm{K} $,将生成的签名消息$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, $ $ {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}\} $返回给$ \mathcal{A} $。
3)Forge阶段。敌手$ \mathcal{A} $输入$ {M}^{\mathrm{*}} $,输出伪造的消息签名$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}^{\mathrm{*}}, {M}^{\mathrm{*}}, \mathrm{T}{\mathrm{s}}^{\mathrm{*}}, {\sigma }^{\mathrm{*}}\} $。
对于敌手$ \mathcal{A} $而言,可以很容易地验证$ {\sigma }_{i}\cdot P=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{\beta }_{i}\cdot \mathrm{P}\mathrm{K} $,因此,挑战者$ \mathcal{C} $模拟的环境与真实的环境是不可区分的。
假设敌手以不可忽略的概率$ \epsilon $赢得游戏。根据分叉引理[25],挑战者$ \mathcal{C} $在相同的预言机询问下设置H-Oracle下不同的回答,敌手$ \mathcal{A} $可以伪造出2个不同的合法签名,分别为$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}\} $和$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}^{\mathrm{\text{'}}}\} $。此时,$ {\sigma }_{i}\cdot P=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{\beta }_{i}\cdot \mathrm{P}\mathrm{K} $和$ {\sigma }_{i}\mathrm{\text{'}}\cdot P=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{\beta }_{i}^{\mathrm{\text{'}}}\cdot \mathrm{P}\mathrm{K} $成立,由此可以得到:
|
$ \begin{array}{l}({\sigma }_{i}-{\sigma }_{i}^{\mathrm{\text{'}}})\cdot P=\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{\beta }_{i}\cdot \mathrm{P}\mathrm{K}-(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}+{\beta }_{i}^{\mathrm{\text{'}}}\cdot \mathrm{P}\mathrm{K})=\\ \;\;\;\;\;\;\;\;\;\;{\beta }_{i}\cdot \mathrm{P}\mathrm{K}-{\beta }_{i}^{\mathrm{\text{'}}}\cdot \mathrm{P}\mathrm{K}={\beta }_{i}\cdot a\cdot P-{\beta }_{i}^{\mathrm{\text{'}}}\cdot a\cdot P=\\ \;\;\;\;\;\;\;\;\;\;({\beta }_{i}-{\beta }_{i}^{\mathrm{\text{'}}})\cdot a\cdot P\end{array} $
|
则挑战者$ \mathcal{C} $可以以不可忽略的概率$ \varepsilon \text{'} $输出$ a=({\sigma }_{i}-{\sigma }_{i}^{\mathrm{\text{'}}}) $ ·$ ({\beta }_{i}-{\beta }_{i}^{\mathrm{\text{'}}}{)}^{-1} $作为ECDLP问题的答案,这与假设的ECDLP问题是困难这一前提相矛盾。因此,本文协议中的签名方案在随机预言机模型下是适应性选择消息攻击下存在性不可伪造的。
定理3(强可追溯性) 本文方案允许TA对车辆和用户的真实身份进行追踪。
证明 假设系统中存在恶意车辆发送的虚假消息$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, {M}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}\} $,此时,TA可以通过执行算法$ \mathrm{T}\mathrm{r}\mathrm{a}\mathrm{c}\mathrm{e}\left(\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}\right) $来获取车辆和用户的真实身份信息。因此,本文方案可以实现对车辆和用户身份的可追溯性。
定理4(不可链接性) 除了TA,任何人无法通过接收到的多条信息来确定这些信息是否来自同一辆车。
证明 假设车辆接收到的多条信息分别为$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{1}, $ $ {M}_{1}, \mathrm{ }\mathrm{T}{\mathrm{s}}_{1}, {\sigma }_{1}\}\mathrm{ }, $$\mathrm{ }\{\mathrm{P}\mathrm{I}{\mathrm{D}}_{2}, {M}_{2}, \mathrm{ }\mathrm{T}{\mathrm{s}}_{2}, {\sigma }_{2}\}\mathrm{ }, \cdots , $$ \mathrm{ }\{\mathrm{P}\mathrm{I}{\mathrm{D}}_{n}, {M}_{n}, \mathrm{T}{\mathrm{s}}_{n}, {\sigma }_{n}\}$,对于其中的任意两条消息,唯一包含车辆身份信息的部分为$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i} $,并且$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i} $仅使用1次。对于任意的$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{1} $和$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{2} $,只有获取到其对应的$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, u}^{\mathrm{i}\mathrm{n}\mathrm{i}\mathrm{t}} $才可链接到同一车辆。而除了TA之外,任何人无法获得执行$ \mathrm{T}\mathrm{r}\mathrm{a}\mathrm{c}\mathrm{e} $需要的私钥$ \mathrm{s}\mathrm{k} $。因此,任何人无法通过接收到的多条信息链接到同一车辆。
定理5(抵御中间人攻击) 攻击者无法执行中间人攻击。
证明 对发送方和接收方而言,攻击者可能作为中间人对消息进行窃听和篡改。$ \mathrm{U}\mathrm{s}\mathrm{e}\mathrm{r}\mathrm{V}\mathrm{e}\mathrm{r}\mathrm{i}\mathrm{f}\mathrm{y} $算法能够保证恶意用户无法登录任意的车辆进入到系统中。$ \mathrm{M}\mathrm{e}\mathrm{s}\mathrm{S}\mathrm{i}\mathrm{g}\mathrm{n} $算法能够保证恶意车辆无法对消息进行篡改,因为对消息的篡改意味着攻击者必须解决ECDLP困难问题。因此,本文协议可以抵御中间人攻击。
6 性能评估
为验证本文协议的性能优势,在Intel i5、12 GB内存、Ubuntu操作系统的实验环境下,借助GMP(The GNU MP Bignum Library)、PBC(Pairing-Based Cryptography)[26]和RELIC密码库,使用C语言实现本文协议和一系列基于椭圆曲线的协议及基于双线性配对的协议,并分别从计算开销和通信开销两方面进行对比。
6.1 计算开销
对比本文协议与CPAS[16]、JMLO[17]、SASV[18]、CPPA[19]、NEAS[20]和HCPA[21]协议在签名、单条消息验证和批量验证中的计算开销。这些对比协议都是基于身份的协议。
对于双线性配对的方案,选取双线性配对$ e:{G}_{1}\times {G}_{1}\to {G}_{2} $来实现80 bit的安全等级。$ {G}_{1} $是阶为$ \stackrel{-}{q} $的定义在$ E:{y}^{2}={x}^{3}+x\mathrm{m}\mathrm{o}\mathrm{d}\stackrel{-}{p} $上的椭圆曲线加法群,其中,$ \stackrel{-}{p} $为512 bit的素数,$ \stackrel{-}{q} $为160 bit的Solinas素数,且有$ \stackrel{-}{p}+1=12\stackrel{-}{q}\stackrel{-}{r} $。对于基于椭圆曲线群设计的方案,为实现80 bit的安全等级,同样选取定义在$ E:{y}^{2}={x}^{3}+ax+b\mathrm{m}\mathrm{o}\mathrm{d}p $上的椭圆曲线加法群$ G $,其中,$ P $为群$ G $的阶为$ q $的生成元,p和q为160 bit的素数,$ a, b\in {\mathbb{Z}}_{p}^{\mathrm{*}} $。为方便表示,给出各操作的符号定义和平均时间,如表 2所示。
表 2
(Table 2)
表 2 操作定义与平均时间
Table 2 Operation definition and average time
| 符号 |
操作定义 |
平均时间/ms |
| $ \mathrm{B}\mathrm{p}\left(\mathrm{b}\mathrm{p}\right) $ |
双线性配对 |
4.018 0 |
| $ \mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right) $ |
双线性相关点乘 |
1.209 0 |
| $ \mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right) $ |
双线性相关点加 |
0.006 9 |
| $ \mathrm{B}\mathrm{p}\left(\mathrm{h}\mathrm{t}\mathrm{p}\right) $ |
双线性相关哈希 |
4.125 0 |
| Bp(sm-s) |
双线性小数点乘 |
0.053 2 |
| $ \mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right) $ |
ECC相关点乘 |
0.419 0 |
| $ \mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right) $ |
ECC相关点加 |
0.001 6 |
| Ecc(sm-s) |
ECC小数点乘 |
0.012 4 |
| $ \mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
一般哈希 |
0.003 0 |
|
下载CSV
表 2 操作定义与平均时间
Table 2 Operation definition and average time
|
对比不同协议进行单条消息签名验证时的操作数,如表 3所示。可以看出:在CPAS协议中,签名需要执行3次双线性配对相关的点乘操作、2次双线性相关的点加操作和1次一般的哈希操作,因此,该协议签名阶段的操作数为$ 3\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $;在本文协议中,签名仅需要执行2次ECC相关的点乘操作和2次一般的哈希操作,因此,本文协议签名阶段的操作数为$ 2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $。同理可得其他协议的操作数。
表 3
(Table 3)
表 3 消息签名验证操作数对比
Table 3 Comparison of number of operations for message signature and verification
| 协议 |
签名操作数 |
验证操作数 |
| CPAS协议 |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{b}\mathrm{p}\right)+2\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
| JMLO协议 |
$ 6\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{h}\mathrm{t}\mathrm{p}\right)+4\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{b}\mathrm{p}\right)+2\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+3\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
| SASV协议 |
$ 5\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{h}\mathrm{t}\mathrm{p}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{h}\mathrm{t}\mathrm{p}\right)+\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
| CPPA协议 |
$ 3\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+3\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 3\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right) $ |
| NEAS协议 |
$ 5\mathrm{B}\mathrm{p}\left(\mathrm{s}\mathrm{m}\right)+\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{b}\mathrm{p}\right)+\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right) $ |
| HCPA协议 |
$ 2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 3\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right) $ |
| 本文协议 |
$ 2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
$ 2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right) $ |
|
下载CSV
表 3 消息签名验证操作数对比
Table 3 Comparison of number of operations for message signature and verification
|
由表 2和表 3的结果绘制本文协议与其他对比协议的消息签名验证计算开销对比图,如图 2所示。可以看出,本文协议签名验证阶段的计算量小于所有对比协议。
每秒执行本文协议和其他协议所得的签名和验证消息的数目如表 4所示。可以看出,本文协议相较于其他对比协议在单位时间内可签名和验证的消息数量更多,表明其效率更高,这是因为本文协议是基于ECC设计的,与基于双线性配对的方案相比更为高效。
表 4
(Table 4)
表 4 消息签名验证效率对比
Table 4 Comparison of efficiency of message signature and verification
| 协议 |
签名数目 |
验证数目 |
| CPAS协议 |
274 |
69 |
| JMLO协议 |
87 |
69 |
| SASV协议 |
98 |
57 |
| CPPA协议 |
789 |
789 |
| NEAS协议 |
165 |
82 |
| HCPA协议 |
1 184 |
789 |
| 本文协议 |
1 184 |
1 134 |
|
下载CSV
表 4 消息签名验证效率对比
Table 4 Comparison of efficiency of message signature and verification
|
将本文协议与支持批量验证的基于身份的协议进行对比,如表 5所示,其中,$ n $为批量验证的消息数目,同时对比批量认证中本文协议与对比协议的时间消耗,如图 3所示。可以看出,本文方案在批量验证阶段的效率高于其他对比协议。
表 5
(Table 5)
表 5 批量验证操作数对比
Table 5 Comparison of number of operations for batch verification
| 协议 |
批量验证操作数 |
| CPAS协议 |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{b}\mathrm{p}\right)+(n $+$ 1\left)\mathrm{B}\mathrm{p}\right(\mathrm{s}\mathrm{m})+(3n-3\left)\mathrm{B}\mathrm{p}\right(\mathrm{p}\mathrm{a})+2n\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h} $ |
| JMLO协议 |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{b}\mathrm{p}\right)+(n $+$ 1\left)\mathrm{B}\mathrm{p}\right(\mathrm{s}\mathrm{m})+(3n-2\left)\mathrm{B}\mathrm{p}\right(\mathrm{p}\mathrm{a})+3\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+ $ $ 2n\mathrm{B}\mathrm{p} $(sm-s) |
| SASV协议 |
$ 3\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+(3n-3)\mathrm{B}\mathrm{p}\left(\mathrm{p}\mathrm{a}\right)+n\mathrm{B}\mathrm{p}\left(\mathrm{h}\mathrm{t}\mathrm{p}\right)+n\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+n\mathrm{B}\mathrm{p} $(sm-s) |
| CPPA协议 |
$ (n+2)\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2n\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+(3n-1)\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right)+2n\mathrm{E}\mathrm{c}\mathrm{c} $(sm-s) |
| HCPA协议 |
$ (n+2)\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+2n\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+2n\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right) $ |
| 本文协议 |
$ 2\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{s}\mathrm{m}\right)+n\mathrm{H}\mathrm{a}\mathrm{s}\mathrm{h}+n\mathrm{E}\mathrm{c}\mathrm{c}\left(\mathrm{p}\mathrm{a}\right)+n\mathrm{E}\mathrm{c}\mathrm{c} $(sm-s) |
|
下载CSV
表 5 批量验证操作数对比
Table 5 Comparison of number of operations for batch verification
|
6.2 通信开销
分析本文协议与其他对比协议的通信开销。由于选取的$ \stackrel{-}{p} $和$ p $分别为512 bit和160 bit,因此群$ {G}_{1} $和群$ G $中的元素分别为128 Byte和40 Byte。此外,一般的哈希函数输出为20 Byte,时间戳为4 Byte。对各协议中的签名消息长度进行分析可知:在CPAS方案中,车辆广播的匿名身份和消息签名为$ (\mathrm{A}\mathrm{I}{\mathrm{D}}_{i}, {T}_{i}, {U}_{i}, {V}_{i}, {W}_{i}) $,$ \mathrm{A}\mathrm{I}{\mathrm{D}}_{i}=(\mathrm{A}\mathrm{I}{\mathrm{D}}_{i.1}, \mathrm{A}\mathrm{I}{\mathrm{D}}_{i, 2}) $,其中,$ \mathrm{A}\mathrm{I}{\mathrm{D}}_{i}^{1}, \mathrm{A}\mathrm{I}{\mathrm{D}}_{i}^{2}, {U}_{i}, {V}_{i}, {W}_{i}\in {G}_{1} $,$ {T}_{i} $为时间戳,因此,CPAS广播的长度为$ 128\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}\times 5\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}+4\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}=644\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e} $;而在本文方案中,广播的身份和签名部分为$ \{\mathrm{P}\mathrm{I}{\mathrm{D}}_{i}, \mathrm{T}\mathrm{s}, {\sigma }_{i}\} $,$ \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 1}, \mathrm{P}\mathrm{I}{\mathrm{D}}_{i, 2}\in G $,$ \mathrm{T}\mathrm{s} $为时间戳,$ {\sigma }_{i}\in {\mathbb{Z}}_{p}^{\mathrm{*}} $,所以,本文方案的通信开销为$ 40\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}\times $ $ 2\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}+20\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}+4\mathrm{ }\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e}={104}_{}\mathrm{B}\mathrm{y}\mathrm{t}\mathrm{e} $。其他方案的通信开销计算同理。
对不同协议的通信负载进行对比,如表 6所示。可以看出,对比协议大多基于双线性配对来实现,通信负载较高,而本文协议发送单条消息的负载相对较低。
表 6
(Table 6)
表 6 通信开销对比
Table 6 Comparison of communication overhead
| Byte |
| 协议 |
发送单条消息的通信开销 |
| CPAS协议 |
644 |
| JMLO协议 |
388 |
| SASV协议 |
388 |
| CPPA协议 |
144 |
| NEAS协议 |
644 |
| HCPA协议 |
164 |
| 本文协议 |
104 |
|
下载CSV
表 6 通信开销对比
Table 6 Comparison of communication overhead
|
6.3 功能对比
对本文协议与现有协议进行功能对比。除基于身份设计的方案之外,还将本文协议与基于PKI的协议IFAL[27]、基于对称密码的协议DLAP[15]和基于无证书的协议SE-CLASA [24]进行对比,如表 7所示,其中,√表示满足该性质,×表示不满足该性质。可以看出,本文协议在满足匿名性、不可伪造性、强可追溯性、不可链接性和抵御中间人攻击这5个安全目标的前提下,同时还适用于单车多用户和单用户多车的应用场景,并且还可抵御重放攻击,具备不可否认性。本文协议是表 7所有协议中唯一满足匿名性、不可伪造性、强可追溯性、不可链接性、不可否认性、抵御中间人攻击、抵御重放攻击,并且适用于单车多用户或单用户多车应用场景的协议。
表 7
(Table 7)
表 7 协议功能对比
Table 7 Comparison of protocol function
| 功能 |
CPAS协议 |
JMLO协议 |
SASV协议 |
CPPA协议 |
NEAS协议 |
HCPA协议 |
IFAL协议 |
DLAP协议 |
SE-CLASA协议 |
本文协议 |
| 匿名性 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 不可伪造性 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
× |
√ |
√ |
| 强可追溯性 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
√ |
| 不可链接性 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 不可否认性 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 抗中间人攻击 |
× |
√ |
× |
√ |
√ |
√ |
√ |
× |
√ |
√ |
| 抗重放攻击 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
单车多用户/ 单用户多车认证 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
√ |
|
下载CSV
表 7 协议功能对比
Table 7 Comparison of protocol function
|
7 结束语
针对现有V2X通信认证协议不支持用户认证的问题,本文提出一种面向车联网安全通信的条件隐私保护认证协议。该协议适用于单车多用户和单用户多车的应用场景,更具实用性。同时协议支持条件隐私保护,通信过程中保护了车辆的真实身份信息,并且允许TA在特定情况下追溯到车辆的真实身份信息。形式化的安全性分析结果证明了协议的安全性,性能评估结果验证了协议的高效性。下一步将在本文协议中增加系统密钥更新和安全身份撤销功能,使其适用于更多应用场景。