鄒明霞,李義豐,蘇清健,屠袁飛,2
(1.南京工業大學 計算機與科學技術學院,江蘇 南京 211800;2.南京郵電大學 計算機與科學技術學院,江蘇 南京210003)
車載自組織網絡(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作為解密代理,以達到減少車載終端解密開銷的目的。最后,對方案的性能表現進行分析,并給出仿真結果。
為了確保車載網絡中用戶數據的安全性和隱私性,目前有學者進行了許多相關研究。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算法實現了車載網絡中訪問控制的功能,但是,所有方案的訪問控制策略都是以明文形式公開的。攻擊者不僅可以利用公開的訪問策略大致推斷出車輛屬性等敏感信息,還可以推斷出傳輸數據的重要程度,從而選擇攻擊最重要的數據,以獲得利益最大化。
設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)。
布隆過濾器[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個實體:可信任中心(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的注冊系統、屬性管理系統、密鑰管理系統和數據加密系統??刂浦鳲BU的注冊、密鑰的產生和分發,以及使用車輛的相應屬性對傳送的多媒體數據進行加密。
(2)路邊基礎設施單元(roadside units,RSU):路邊基礎設施單元作為車輛到通信基礎設施的通信中繼,以廣播的形式將消息發送給沿途車輛和接收來自OBU的消息。此外,RSU還作為一個解密代理平臺,承擔著解密部分密文的工作。
(3)車載單元(on-board units,OBU):車載單元是一種安裝在車上的終端。TC可以通過與車輛相關的一組屬性來識別每個帶有OBU的車輛。這組屬性包括車輛型號、所屬單位、注冊號等靜態屬性和位置信息、時間、行駛方向等動態屬性。OBU也使用這組屬性對TC發送的加密數據進行解密。
我們的方法還基于以下假設:TC是一個完全受信任的組織,而RSU是誠實但好奇的基礎架構,RSU也可以執行由車輛委托的部分解密計算。此外,它們都無法恢復加密的數據。
為保障車載網絡中傳輸的數據的安全性和訪問策略的隱私性,我們在文獻[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。
本文提出了一種適用于車載自組網中的屬性基加密傳輸方案,該方案的詳細構造過程如下:
(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加密因為加密速度慢、時間長、實時性差等缺點,不適合加密大型文件,而對稱加密適合加密大型文件,但算法的密鑰傳遞是務必考慮的問題,所以,本文在傳輸方案中采用混合加密的方法提高數據傳輸效率?;旌霞用芊桨钢卸x的文件傳輸格式如圖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;否則,立即停止計算。
下面從方案性能、通信密文長度這兩個方面進行與文獻[11-13]進行比較分析,再使用定量分析的方法計算具體的通信能量消耗,最后進行實驗并評估方案性能。在分析過程中, |G1|、|GT| 和 |Zp| 分別表示G1、GT和Zp中元素的長度,n表示用戶屬性數量。
如表1所示,本方案支持代理解密和訪問策略隱藏,而且還具有對密鑰正確性驗證的功能,確保用戶得到的密鑰都未遭受過損壞或篡改。

表1 方案性能比較
在本方案中,密文長度主要考慮兩部分,第一部分是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 密文長度比較
本方案的通信能量損耗主要包括兩個部分,第一部分為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 通信能量損耗
本節通過仿真得到本算法的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 通信能量損耗
本文使用CP-ABE算法在車載網絡中設計了一種可以隱藏訪問策略的數據傳輸方案,利用CP-ABE具備的訪問控制功能,不但實現了對數據機密性的保護,還使用布隆過濾器對訪問策略進行完全隱藏,保護了訪問策略的隱私性。不僅如此,本方案使用代理解密的方法,將復雜的解密計算代理給RSU,有效降低RSU到OBU的傳輸損耗;而且OBU只用做一次除法運算即可,對計算和存儲資源有限的OBU而言,也極大降低了密文的存儲和解密開銷。