APP下载

车载网络中支持策略隐藏的属性基加密方案

2021-07-21邹明霞李义丰苏清健屠袁飞

计算机工程与设计 2021年7期
关键词:布隆密文解密

邹明霞,李义丰,苏清健,屠袁飞,2

(1.南京工业大学 计算机与科学技术学院,江苏 南京 211800;2.南京邮电大学 计算机与科学技术学院,江苏 南京210003)

0 引 言

车载自组织网络(vehicular ad hoc network,VANET)是一种特殊的移动自组织网络(mobile ad hoc network,MANET),其通信节点分为两类:车载单元(on-board units,OBU)和路边基础设施单元(roadside units,RSU),可以实现机动车与机动车(V2V)和机动车与互联网(V2I)之间信息的传递[1,2]。

将社交网络集成到车载网络中,利用车载网络提供的无线通信功能,可以在车载网中实时共享紧急事故信息(如交通拥堵、自然灾害、火灾等)和多媒体信息(如音频、视频等)[3]。然而,由于无线网络的开放性和网络区域的广泛性,无线通信容易受到恶意的网络攻击,对用户数据进行窃取或篡改,严重威胁用户数据的安全性和隐私性[4,5]。因此,保护车载网络中数据的安全迫在眉睫。

为了保护车载网络中传播数据的安全性和隐私性,本文使用属性基加密算法设计了一种可以隐藏访问策略的数据加密传输方案。该方案利用布隆过滤器实现对访问策略的完全隐藏,彻底避免了访问策略属性的泄露。此外,方案采用混合加密的方法,先使用AES算法加密数据,再用CP-ABE算法加密AES密钥,既保护了数据机密性,又实现了灵活的密钥管理。同时,使用RSU作为解密代理,以达到减少车载终端解密开销的目的。最后,对方案的性能表现进行分析,并给出仿真结果。

1 相关研究

为了确保车载网络中用户数据的安全性和隐私性,目前有学者进行了许多相关研究。Rajput等[6]提出一种使用假名的方案,每个车载单元能够生成自己的假名,而不影响系统安全。Man等[7]则针对电动汽车提出一种新颖的匿名认证系统,利用电动车特有的属性,设计了一种对位置和时间进行验证的方法。然而,在车载网络中,使用匿名消息验证是一把双刃剑,行为良好的车辆会遵守隐私保护机制,行为不良的车辆则可能滥用该机制,破坏正常的驾驶环境。此外,Liu等[8]和Xia等[9]分别提出一种使用组签名和基于身份的签名方案,组签名用于保护OBU和OBU之间的通信,基于身份的密码技术则用于验证RSU发送的消息。所以,因为车载网络拓扑结构的特殊性,车联网中群组构建、密钥分发和组成员管理都是比较困难的。

Waters等提出的属性基加密算法(attribute based encryption,ABE),是一种非常有效的面向群分享数据的访问控制方法,不仅支持复杂的访问策略定义,其密钥也便于管理。Bouabdellah等[10]为车载网络设计了一种安全的传输协议,该协议使用CP-ABE算法增强了信源和目的地之间通信的安全性。Xia等[11]在车载网络中设计了一种具有隐私保护的自适应多媒体数据转发方案,通过使用决策树优化多个因素,以降低通信成本。何倩等[12]为了使在车载网络中构建的策略树更加灵活,将动态属性和静态属性分开管理,提出一种组合策略树的方法。Safi等[13]则利用CP-ABE的访问控制功能,将基于身份的签名(IBS)与假名相结合,不仅提供身份认证,而且保证了车辆节点的隐私性。虽然,上述方案文献[10-13]都使用CP-ABE算法实现了车载网络中访问控制的功能,但是,所有方案的访问控制策略都是以明文形式公开的。攻击者不仅可以利用公开的访问策略大致推断出车辆属性等敏感信息,还可以推断出传输数据的重要程度,从而选择攻击最重要的数据,以获得利益最大化。

2 预备知识和系统模型

2.1 双线性配对

设G1和GT是两个阶为素数p的循环群,g是G1的生成元,定义双线性映射e∶G1×G1→GT满足如下条件:

(1)双线性:对任意的a,b∈Zp, 满足e(ga,gb)=e(g,g)ab;

(2)非退化性:存在g∈G1, 使得e(g,g)≠1;

(3)可计算性:对任意∀(u,v)∈G1, 都能有效计算出e(u,v)。

2.2 布隆过滤器

布隆过滤器[14](bloom filter,BF)是由Howard Bloom设计的一种过滤器算法,其原理是一种基于哈希映射的快速查找算法,由一个较长二进制向量和一系列独立的哈希函数组成,用于判断一个元素是否属于某个特定集合。

布隆过滤器包含一个m比特的位向量和k个随机独立的哈希函数,其定义为hi∶{0,1}*→[1,l],1≤i≤k。 在初始化时,所有位向量的值是0,当插入新元素e到集合S时,BF构造算法计算出位向量的哈希值 {hi(e)}i∈[1,k], 再将k个哈希值在位向量对应位置的值设置为1。如图1所示,例如布隆过滤器设置集合 {a,b}, 位上的值通过哈希函数h1(a),h2(a),h3(a),h1(b),h2(b),h3(b) 等的索引设置为1。

图1 布隆过滤器

若检查任意元素g是否属于集合S时,只需检查布隆过滤器中h1(g),h2(g),…,hk(g) 位置的比特是否全为1,当出现某一个位置是0,则表明元素g不属于集合S,否则g可能属于S。而出现误判的概率为P=(1-(1-1/m)kn)k≈(1-e-kn/m)k, 其中n表示插入元素的个数。本文使用l比特布隆过滤器,用来判断用户属性是否属于现有的访问策略,假设一个属性用16比特存储,k=8,则误判率为5/10000,在本方案应用环境下,该误判情况是可以容忍的。

2.3 系统模型

本文构造的车载网络系统模型如图2所示。系统模型中包括3个实体:可信任中心(trusted center,TC)、路边基础设施单元(roadside units,RSU)、路上车辆单元(on-board units,OBU)。车辆可以使用专用的短距离通信技术与最近的RSU进行通信。短距离技术通信基于IEEE 802.11p,工作频段为5.9 GHz,带宽为75 MHz,通信范围是500 m。

图2 系统模型

(1)可信任中心(trusted center,TC):可信任中心由多个模块组成,包括OBU的注册系统、属性管理系统、密钥管理系统和数据加密系统。控制着OBU的注册、密钥的产生和分发,以及使用车辆的相应属性对传送的多媒体数据进行加密。

(2)路边基础设施单元(roadside units,RSU):路边基础设施单元作为车辆到通信基础设施的通信中继,以广播的形式将消息发送给沿途车辆和接收来自OBU的消息。此外,RSU还作为一个解密代理平台,承担着解密部分密文的工作。

(3)车载单元(on-board units,OBU):车载单元是一种安装在车上的终端。TC可以通过与车辆相关的一组属性来识别每个带有OBU的车辆。这组属性包括车辆型号、所属单位、注册号等静态属性和位置信息、时间、行驶方向等动态属性。OBU也使用这组属性对TC发送的加密数据进行解密。

我们的方法还基于以下假设:TC是一个完全受信任的组织,而RSU是诚实但好奇的基础架构,RSU也可以执行由车辆委托的部分解密计算。此外,它们都无法恢复加密的数据。

3 系统方案

3.1 通用方案描述

为保障车载网络中传输的数据的安全性和访问策略的隐私性,我们在文献[11]和文献[15]的基础上设计出一种可以隐藏用户访问策略的加密方案。该方案使用线性秘密共享方案(linear secret-sharing scheme,LSSS)作为用户访问策略,通过布隆过滤器算法将用户访问策略进行隐藏,避免了访问策略以明文形式进行传输,有效保护了访问策略中车辆属性等隐私数据的安全。本方案主要包含5个基本算法:Setup、KeyGen、Encrypt、TransformCT和Decrypt,每个基本算法的功能简单介绍如下。

(1)Setup(λ,U)→{PK,MK}: 由可信任中心(TC)运行,输入内置安全参数λ和属性集合U,输出系统公钥PK和系统主私钥MK。

(2)KeyGen(MK,S)→{AK,SK}: 由可信任中心(TC)运行,输入系统主私钥MK和用户属性集合S,输出该用户的属性密钥AK和安全密钥SK。

(3)Encrypt(PK,(M,ρ),m)→{CT,M,ABF}: 由可信任中心(TC)运行。加密算法Encrypt包括数据加密算法Encm和布隆滤波器建立算法ABFCreate这两个部分。

1)Encm(PK,(M,ρ),m)→{CT}: 在数据加密算法中,输入对称加密密钥m、系统公钥PK和访问结构 (M,ρ), 输出密钥密文CT。

2)ABFCreate(M,ρ)→{M,ABF}: 在布隆过滤器建立算法中,输入访问结构(M,ρ),输出属性布隆过滤器ABF(attribute bloom filter)。

(4)TransformCT(CT,AK,M,ABF)→{CT′}: 由路边基础设施单元(RSU)运行。密文转换算法TransformCT包括布隆过滤器检查算法ABFCheck和部分解密算法Decpar两个部分。

1)ABFCheck(S,ABF,PK)→{ρ′}or⊥: 在布隆滤波器检查算法中,输入属性集合S、ABF和系统公钥PK,输出重新生成的属性映射ρ′={(row,att)}S, 其中row表示访问矩阵的行号,att表示属性。然后可以判断该属性是否符合访问策略,若符合,则进行下一步计算,否则输出⊥。

2)Decpar(AK,CT,(M,ρ′))→{CT′}: 在部分解密算法中,输入属性密钥AK、访问结构(M,ρ′)和密钥密文CT,输出CT′。

(5)Decrypt(CT′,SK)→{m}: 由路上车辆单元(OBU)运行,输入部分解密密文CT′和安全密钥SK,输出对称密钥m。

3.2 系统方案构造

本文提出了一种适用于车载自组网中的属性基加密传输方案,该方案的详细构造过程如下:

(1)Setup(λ,U)→{PK,MK}: 由可信任中心(TC)运行,输入内置安全参数λ和属性集合U,定义两个阶为素数p的乘法循环群 (G1,GT),e∶G1×G1→GT是一对双线性映射。令Latt表示系统中属性的最大位长;Lrow表示矩阵中行数的长度;LABF表示ABF的大小;k表示与ABF有关的哈希函数的个数。TC随机选择g,u∈G1,α1∈Zp,α2∈Zp, 令α=(α1+α2)modp,H∶{0,1}*→Zp是一个抗碰撞的哈希函数。然后随机选择群元素h1,h2,…,hU∈G1和生成k个独立的哈希函数H1,H2,…,HU, 哈希函数是为了将每一个元素映射到[1,LABF]中的一个位置。最终生成的系统公钥PK和系统主私钥MK为

PK={g,e(g,g)α,gα,Latt,Lrow,LABF,h1,h2,…,hU,H1,H2,…,Hk,u,H}

(1)

MK={α1,α2,α}

(2)

在运行Setup算法之前,当安装有OBU的车辆路过附近的RSU时,OBU会通过RSU向TC进行认证和注册,只有通过了认证和注册的OBU,TC才会记录该车辆的属性信息(包括车辆型号、品牌、车辆实时位置和车主信息),并生成属性集合S。然后,再运行Setup。

(2)KeyGen(MK,S)→{AK,SK}: 由可信任中心(TC)运行,选取随机值t∈Zp, 输入系统主私钥MK和与用户关联的属性集合S,分别生成代理使用的属性密钥AK和OBU使用的安全密钥SK为

(3)

SK={K2=gα2gα t}

(4)

(3)Encrypt(PK,(M,ρ),m)→{CT,M,ABF}: 加密算法Encrypt由可信任中心(TC)运行,其包括数据加密算法Encm和布隆滤波器建立算法ABFCreate这两个部分。为了实现访问控制,采用如图3所示的由TC定义的访问策略,该策略制定多个属性,以确保授权车辆可以访问数据。

图3 访问策略

1)Encm(PK,(M,ρ),m)→{CT}: 在数据加密算法中,输入对称加密密钥m∈Zp、 系统公钥PK和访问结构(M,ρ)。矩阵M为l行n列的访问矩阵,函数ρ将矩阵里的每一行映射为一个属性。数据加密算法选择随机值s∈Zp作为秘密值,再选择列向量v=(s,y2,y3,…,yn), 其中y2,y3,…,yn∈Zp是随机值,则可以计算出λi=Mi·v, 向量Mi(i=1,2,…,l)代表矩阵M的第i行。此外,还选择随机指数r1,r2,…,rl∈Zp进行加密计算,再计算密钥验证码V=H(um), 最后得到的密钥密文CT为

(5)

在车载自组网,往往有大量的多媒体数据需要进行加密,CP-ABE加密因为加密速度慢、时间长、实时性差等缺点,不适合加密大型文件,而对称加密适合加密大型文件,但算法的密钥传递是务必考虑的问题,所以,本文在传输方案中采用混合加密的方法提高数据传输效率。混合加密方案中定义的文件传输格式如图4所示,文件传输格式分为两部分。第一部分数据密文是使用AES算法对数据DATA进行加密后的密文;第二部分密钥密文是使用本文算法对对称密钥m进行加密得到的密文。

图4 文件传输格式

2)ABFCreate(M,ρ)→{M,ABF}: 传统的布隆过滤器无法判断一个属性是否在访问矩阵M中,也无法定位属性在访问矩阵中的位置。因此,我们使用乱码布隆过滤器作为我们的属性定位方法,如图5所示。为了能够在乱码布隆过滤器中精确定位到属性位置,我们采用如图6所示的属性字符串作为乱码布隆过滤器的组件,Latt表示属性,Lrow表示行号,λ表示一个属性字符串的长度,且λ=Latt+Lrow。

图5 访问矩阵和ABF

图6 属性字符串格式

布隆过滤器建立算法中,我们通过访问策略(M,ρ)中的属性和该属性的行号构造出元素集合Se={i‖atte}i∈[1,l], 其中atte=ρ(i)。 若行号和属性的二进制位没有达到最大长度,则在左边添加字符串0来达到最大长度。当需要将集合Se中的元素e添加进入ABF时,首先使用(k,k)秘密共享方案,生成k-1个λ位的字符串r1,e,r2,e,…,rk-1,e, 然后设置rk,e=r1,e⊕r2,e⊕…⊕rk-1,e⊕e, 再将属性atte使用k个独立的哈希函数进行哈希计算:H1(atte),H2(atte),…,Hk(atte), 其中Hi(atte)i∈[1,k]代表在ABF中的索引。如图7所示,将ri存储到ABF中哈希索引为Hi(atte) 的位置为:r1,e→H1(atte),…,rk,e→Hk(atte)。

图7 实例

如图7所示,如果向ABF中添加的元素e2的哈希索引Hj(atte2)与已经存在的索引位置相同时,即Hi(atte)=Hj(atte2), 则令ri,e=rj,e2, 否则在解密时无法恢复属性atte2。最后,TC将密文数据 {CT,M,ABF} 存储在TC的云服务器上。

(4)TransformCT(CT,AK,M,ABF)→{CT′}: 在传统的CP-ABE算法中,访问策略是以明文的形式和密文一起传输的,而在本文的方案中,隐藏了访问策略中的属性映射函数ρ,所以无法直接判断访问者的属性是否符合访问策略,需要先使用ABFCheck算法计算出属性映射函数ρ′,再进行解密计算。由于已注册车辆的属性密钥AK是保存在RSU中的,所以RSU先通过ABFCheck算法检查属性是否与访问策略匹配,如果匹配则进行部分解密计算,否则ABFCheck输出⊥。

1)ABFCheck(S,ABF,PK)→{ρ′}or⊥: 在布隆滤波器检查算法中,输入属性集合S、ABF和系统公钥PK。对于每一个属性atte∈S, 先使用哈希函数Hi()i∈[1,k]计算其在ABF中的索引位置H1(atte),…,Hk(atte), 再获得与Hi(att)相对应的位置字符串为:H1(atte)→r1,e,…,Hk(atte)→rk,e。

然后计算元素e

e=r1,e⊕r2,e⊕…⊕rk-1,e⊕rk,e=r1,e⊕r2,e⊕…⊕rk-1,e⊕r1,e⊕r2,e⊕…⊕rk-1,e⊕e

(6)

元素e的格式为e=i‖atte, 去除Latt左边所有的0,得到属性atte的字符串,如果属性atte不在ABF中,则此属性不满足访问策略,输出⊥。然后去掉Lrow左边所有的0,得到属性atte在访问矩阵M里的具体行号。如图8所示,输出的新属性映射函数为ρ′={row,atte}atte∈S。

图8 属性字符串示例

(7)

然后,RSU将部分解密密文CT′发送给OBU。

(5)Decrypt(CT′,SK)→{m}: 由路上车辆单元(OBU)运行。OBU接收到由RSU发送的部分解密密文CT′和安全密钥SK后,只需进行一次配对计算就可以实现快速解密出对称密钥m。解密过程包括以下两个步骤:

1)首先,OBU进行一次配对运算得到m,解密计算如下

(8)

2)然后检验密钥m和对称解密。OBU先计算密钥验证码H(um), 如果H(um)=V, 说明密钥m是正确的,OBU则可使用密钥m对对称加密AES(m,DATA) 进行解密,得到多媒体数据DATA;否则,立即停止计算。

4 性能分析

下面从方案性能、通信密文长度这两个方面进行与文献[11-13]进行比较分析,再使用定量分析的方法计算具体的通信能量消耗,最后进行实验并评估方案性能。在分析过程中, |G1|、|GT| 和 |Zp| 分别表示G1、GT和Zp中元素的长度,n表示用户属性数量。

4.1 方案性能

如表1所示,本方案支持代理解密和访问策略隐藏,而且还具有对密钥正确性验证的功能,确保用户得到的密钥都未遭受过损坏或篡改。

表1 方案性能比较

4.2 通信密文长度

在本方案中,密文长度主要考虑两部分,第一部分是RSU密文长度,第二部分是OBU端密文长度,此处不考虑对称加密密文长度。从表2可知,本文在RSU端的密文长度与其它对比文献一样,为 (2n+1)|G1|+|GT|。 而在OBU端,因为本文使用了全代理,所以OBU端密文长度为 |GT|; 文献[12]也使用解密代理,但其密文长度为2|GT|; 文献[11]只是根据距离判断是否使用代理,所以OBU端密文长度为 (2n+1)|G1|+2|GT|; 而文献[13]并没有使用解密代理,其密文长度为 (2n+1)|G1|+|GT|。

表2 密文长度比较

4.3 通信能量消耗

本方案的通信能量损耗主要包括两个部分,第一部分为TC与RSU通信的能量损耗,第二部分为RSU与OBU通信的能量损耗。为便于计算本算法产生的能量损耗,我们采用先量化密文长度,再计算能量损耗的方法。

(1)密文长度量化

在本文的ABE算法中,双线性映射采用的是定义在有限域Fp上的椭圆曲线的Tate对,G1和GT的阶p是一个20 Byte 的素数。如果GT是一个分别定义在有限域Fp2、Fp3和Fp6上的乘法群的p阶子群,为了达到1024-bit RSA的安全等级,则p分别为有限域Fp2、Fp3和Fp6长度为64 Byte、42.5 Byte和20 Byte的素数,素数p的长度为 |p|。 在对称加密算法中,采用的是128-bit AES算法,其密文长度为16 Byte。通过以上分析,则TC与RSU的通信密文长度为

SizeCT=(2n+1)|G1|+|GT|+|AES(m,DATA)|=
((2n+2)|p|+16)(Byte)

(9)

按照相同的分析方法,RSU与OBU的通信密文长度为

SizeCT′=|GT|+|AES(m,DATA)|=(|p|+16)(Byte)

(10)

(2)能量损耗计算

根据文献[16]可知,将射频芯片CC1100作为无线通信模块,当其工作在发送模式和接受模式的状态下时,发送和接受1 Byte所损耗的能量分别为28.6 μJ和59.2 μJ。我们假设TC、RSU和OBU都是使用CC1100作为无线通信模块,则TC与RSU每次通信产生的能量损耗为

((2n+2)|p|+16)×(28.6+59.2)=
(175.6(n+1)|p|+1404.8)(μJ)

(11)

按照相同的分析方法,RSU与OBU每次通信产生的能量损耗为

(|p|+16)×(28.6+59.2)=(87.8|p|+1404.8)(μJ)

(12)

结果见表3,分别计算出了当 |p| 为20 Byte、42.5 Byte和64 Byte素数时各通信阶段的能量损耗。

表3 通信能量损耗

5 实验仿真

本节通过仿真得到本算法的OBU解密开销和通信能量损耗。实验采用斯坦福大学开发的双线性对密码库(PBC Library),椭圆曲线采用Type A:y2=x3+x, 仿真硬件为Inter(R)Core(TM)i5-3470 3.2 GHzCPU,4.00 GB内存,Windows7 32 bit操作系统,对称加密算法采用的是128 bit AES算法。

从图9所示的OBU端解密时间图可知,OBU端的解密时间为常数,因为本文算法使用RSU作为代理承担大部分解密开销,最后由RSU传送给OBU的密文长度仅为 |GT|; 文献[12]中OBU端的解密时间也是一个固定值,但是比本文算法的解密时间多;而文献[11,13]的解密时间则随着属性个数增加而增加。令 |p| 为20 Byte,得到如图10所示的通信能量损耗图,从图中可知TC和RSU之间通信能量损耗时随着属性个数线性增加的,而RSU和OBU之间的通信能量损耗非常低,为常数3.16。

图9 OBU解密时间

图10 通信能量损耗

6 结束语

本文使用CP-ABE算法在车载网络中设计了一种可以隐藏访问策略的数据传输方案,利用CP-ABE具备的访问控制功能,不但实现了对数据机密性的保护,还使用布隆过滤器对访问策略进行完全隐藏,保护了访问策略的隐私性。不仅如此,本方案使用代理解密的方法,将复杂的解密计算代理给RSU,有效降低RSU到OBU的传输损耗;而且OBU只用做一次除法运算即可,对计算和存储资源有限的OBU而言,也极大降低了密文的存储和解密开销。

猜你喜欢

布隆密文解密
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
炫词解密
解密“一包三改”
守门员不在时
炫词解密
一种基于密文分析的密码识别技术*
云存储中支持词频和用户喜好的密文模糊检索
解密“大调解”