常丹婷
(上海海事大學信息工程學院,上海 201306)
隨著面向服務、云計算、人工智能等信息技術在海上船舶領域的逐步應用,以船舶和岸上基站的聯網結構為主導的船舶自組網(Internet Of Vessels,IOV)[1]正被學術界廣泛認可,結合具有衛星定位功能和無線通信技術的船載智能信息服務,通過信息交換,在無線傳感網上實現各節點信息的提取、監管與利用。
近年來,隨著Ad Hoc的不斷興起,國內外學者對無線傳感的安全機制進行了大量的研究,并不斷拓展到海洋區域,逐步形成了船舶自組網。這些解決方案主要可以分為兩種:一種使用對稱密碼系統[2],該系統需要通信雙方長期共享一個密鑰。另一個是非對稱密碼術的使用。Shamir在1984年首次提出了基于身份的密碼學(Identity-Based Cryptography)[3]。在基于身份的密碼體系中,用戶公鑰可以通過計算用戶身份信息直接得出,用戶私鑰由受信任的第三方密鑰生成中心(Private Key Generator,PKG)生成。2001年,Boneh使用雙線性對提出了第一個基于身份的加密方案[4]。然而,基于證書的傳統非對稱密碼系統的通信、計算和存儲成本非常大,不適合于船舶自組網。基于閾值密碼學的分布式 CA,如 TS-DSA[5]、TS-RSA[6],則需要大量交互。目前的研究重點更多的是在無線設備上應用橢圓曲線加密技術,由于其密鑰長度短、數字簽名快、計算數據量小,使得它特別適用于設備有限的計算和存儲。
分析發現,在船舶自組網中發起攻擊的首先進行鄰居身份驗證。考慮到船舶網絡身份驗證并不頻繁,本文采用并優化了一種基于單向密鑰鏈ID認證防御機制(One-way Key Chain ID Authentication,OKCIDA)[7],降低攻擊者在任何時間段發起攻擊的可能性,限制攻擊者攻擊的時間。OKCIDA的主要思想是將節點ID與單向密鑰鏈關聯,使得攻擊節點發送或回復的鄰居認證請求只有在新節點加入認證過程中才會得到合法節點的回復或確認。因此,由于攻擊效果,狡猾的攻擊者將選擇在新節點進入階段啟動這兩種類型的攻擊。其次,為了阻止攻擊節點在新節點加入階段成功加入網絡,基于橢圓曲線離散對數問題(Elliptic Curve Discrete Logarithm Problem,ECDLP)[8],與其他簽名相比,使用短密鑰可以滿足相同的安全需求,從而減少網絡數據傳輸,讓網絡中的協議可以應用于大型船舶中。參考Duan[9]等人提出的基于位置的鄰居認證模式中構造參數思想,通過構造對稱參數并組合OKCIDA,提出了一種基于雙線性的認證簽名方案(BASS,Bilinear Authentication Signature Scheme)。BASS不僅可以阻止攻擊節點與舊節點建立有效鄰居關系,而且解決了攻擊節點與新節點建立有效鄰居關系的問題[10]。以丟棄無效信息并阻止攻擊節點加入網絡。分析表明,該方案在鄰居認證、消息簽名、訪問控制方面能夠保證通信的安全性,而且無效節點剔除能夠提高節點間的通信效率。最后,給出了BASS的基于雙線性的安全證明和效率分析,結果表明該方案具有高性能及可擴展性。
設G1是階為素數q的點的加法群,P是它的生成元。用G2表示一個q階點的乘法群;映射e:G1×G1→G2,若滿足如下的性質,則稱群(G1,G2)是一對雙線性群[11]:
(1)雙線性:

(2)非退化:如果 q是G1的一個生成元,那么e(q,q)也是G2的一個生成元。
(3)計算性:?U,V∈G1都可計算e(U,V)。
假設網絡中的船舶節點在部署后沒有移動,它們將隨機分布在不同的探測區域。在實際的船聯網中,當一些舊節點損壞或能量耗盡時,為了維護網絡的連通性,需要將新的節點添加到網絡中。也就是說,在船舶節點部署的時間存在差異,因此網絡中有不同批次的節點。假定網絡按部署批次遞增方式來進行部署,即第m+1批次節點部署時,第m批次節點已經部署。標記Bam為部署批次第m批次的批次號,IDi為點i的主ID號,Idi是點i的標識,由Bam和IDi組成;
故在節點ID中引入Ba域[12],向每一批節點部署單向密鑰鏈中對應的密鑰,新節點需向舊節點提供認證密鑰Knew,舊節點通過認證Kold=h(Knew)過濾新節點。
(1)單向密鑰鏈。選取隨機km∈Z*q(1≤m≤n-1)和 哈希h:{0,1}*→ Z*p,迭代執行h,生成如圖1所示單向密鑰鏈。如式(3)所示,給定km+1很容易推出km;反之給定km,無法計算出km+1。


圖1 單項密鑰鏈認證模型
(2)基于節點部署批次Bam預載單向密鑰鏈中對應的密鑰ki,使得(4)成立。如對于第1批節點預載共享密鑰K(Ba1)=k1。

(3)K(Bam+1)認證。第m+1批新節點若被部署,新節點i向鄰居j提供K(Bam+1)信息。如果j為舊節點,則驗證公式(5)是否成立,其中Km表示最近通過認證的密鑰。若等式成立,則表示有新節點部署到網絡中,并通過OKCIDA檢查;否則丟棄。

本節在胡、Duan等人提出的算法基礎上[13],優化了一種基于雙線性的單項密鑰鏈防御認證機制,包括密鑰的生成和分發、基于密鑰的鄰居認證方案和簽名過濾。由于之前的算法只限制攻擊者時間,當網絡中添加新節點時,攻擊節點可以嘗試在監聽新節點發送的身份驗證密鑰后加入網絡。因此針對OKCIDA的不足,組合OKCIDA和鄰居節點關系,基于橢圓曲線離散對數問題(ECDLP),并參考Duan等人提出的LBNA模式中對稱參數構造思想[14],提出了一種基于雙線性的鄰居安全協議(BASS),以防御攻擊。BASS包括預部署階段和認證簽名階段。

表1 方案的符號標記表
在船舶網絡被部署前,TA產生系統參數,使用的部分標記和定義如表1所示。
(1)生成系統公共參數Pamas(p,q,G,G1,G2,e,P)。
(2)系統選取安全參數k∈Z+,根據輸入k產生系數q,生成q階加法群G1、q階乘法群G2和雙線性映射e?:G1×G1→G2。選取生成元 P 于 G1中。
(3)選擇 2個無碰撞的 Hash函數 H和 h:H:{0,1}*→G1*,h:{0,1}*→ G2*。從安全角度可把H、h看作2個隨機預言式。
(4)選擇一個隨機數k∈Zp*作為主私鑰。同時設置相應主公鑰:

根據在群G里DLP的難解性,通過(P,Ppub)來計算k是不可行的。
(5)依照OKCIDA生成一個密鑰鏈[15]。對于密鑰km,使得m預載的共享批次密鑰K((Bam)=km。m預載可公開參數為(p,q,G,G1,G2,e,Zp*,P,Ppub,H,h,K((Bam)Bamax)。
根據定義,鄰居認證是指任何兩個相鄰節點驗證彼此的網絡成員資格的過程。這個過程是支持海上船舶通信中許多安全服務的基礎[16]。
在部署后階段,每個節點都需要發現和執行與相鄰節點的相互認證,這是許多現有的傳感器網絡安全解決方案中的一個必備過程。圖2勾畫了該算法的鄰居認證的交互過程。具體如下:
(1)對于任意的新節點i,鄰居認證簽名過程如下:
①選擇兩個隨機數 λi,μi∈Z*p,計算 Xi和 Yi之后進一步按照(9)計算i的私鑰IKi。

②對原始消息M產生加密消息Ci,節點i產生對原始消息的簽名。節點i選取隨機數αi∈Zq*并按照(10)(11)計算 θ,i和 ci。隨后進一步按照(12)計算 σi,SIGi=<σi,ci>則為節點i在加密信息Ci上的數字簽名。節點i向本地廣播鄰居發現消息M={IDi,Xi,Yi,Ti,K(Bam+1)}.其中 Ti=sekiP,seki為隨機選擇的且seki∈

(2)對于i的任意鄰居節點j,接收消息M后處理如下:
①首先檢查N的新鮮性,若不新鮮,則丟棄這條消息。
②檢查(14)是否成立,如果成立則該消息過期,將其丟棄。

③檢查部署批次號。如果(15)成立,則其可能是新部署節點,進行后續檢查;否則丟棄;

④K(Bam+1)認證。若j為新節點,比較K(Bam+1)是否與共享批次密鑰相同;若j為舊節點則查證是否成立。若通過認證,進行后續檢查;否則丟棄。


(3)向 i回復消息 Mecho。
①選擇隨機數sekj∈并計算Tj=sekjP。計算與i的對密鑰:

其中:


如果j為新節點,則Mecho={IDj,Xj,Yj,Tj,h(K(j,i),Ti,Tj,1)};如果 j為舊節點,則 Mecho={IDi,Xi,Yi,Tj,Nj,h(K(j,i),Ti,Tj,Nj,1)},Nj表示j擁有的鄰居節點集合,并根據網絡模型假設Nj≠?。
②當i收到j的回復消息Mecho,進行消息認證。計算與j的對密鑰:

其中:
通過哈希值比較來判斷:若j為新節點,則將h(K(i,j),Ti,Tj,1)與Mecho中的對應域比較,若相同,則進入后續處理,否則丟棄;若j為舊節點且Nj≠?,則將h(K(j,i),Ti,Tj,Nj,1)與Mecho中的對應域比較,后續操作同上。
(4)向j發送回復確認消息Mack
MaMack后,通過認證,將h(K( j, i),Ti,Tj,2)與 Mack中對應當j收到i的回復消息內容作比較。若相同,則與i的鄰居認證成功,同時結束與i的對密鑰建立。且可通過對密鑰K(j,i)生成其他密鑰。當i和j擁有的私鑰IK為系統預載合法密鑰時,可以保證:

成立。驗證過程詳見第3節。
定理1(驗證公式):公式K(i,j)=K(j,i)是成立的。


圖2 船舶節點鄰居交互認證簽名過程
(1)計算復雜度分析
本文方案所消耗的時間僅與代表性方案進行比較。如果設用戶身份u表示長度為nu的二進制串,消息m表示為長度為nm的二進制串,整數求和計算時間為單位時間O(1),Cmul表示群元素的乘法運算時間,Cexpt表示指數運算時間,Cparing表示雙線性對e的運算時間。與Duan方案相比,新方案密文中包含接收者的身份列表,確保接收方可以獲得所需的信息和并解密密文;與SHAO J[17]方案相比,降低了系統輸出參數;與LAL等人的方案相比,新增雙線性運算,較大程度上降低了運算次數,并減短密文長度,這都降低了計算成本和傳輸帶寬,使得效率較大提升。三種方案在相同標準下的量化詳見表2。
(1)通信復雜度分析
本文并不通過考量計算效率來計算通信復雜度,而考慮通信的比特數。基于船聯網中的通信開銷通常由身份信息、簽名、消息等組成。該方案中消息的大小為110B,簽名的大小為56B。每個方案的通信復雜度如表3所示。
這個方案基于橢圓曲線密碼體制ECDLP而設計,與傳統的基于離散對數的DLP簽名體制[18]相比,簽名長度相對較短。通過表3可以看出,與其他方案的相比,本文方案的通信復雜度明顯較優一些。

表3 4種方案的通信復雜度比較
本文提出了提出了一種基于雙線性的認證簽名方案(BASS),以丟棄無效信息并阻止攻擊節點加入網絡。與Duan方案相比,降低簽名和驗證的計算量,提高了計算效率;與SHAO J方案相比安全強度有了進一步提升;與LAL方案相比,本文的新方案減少了系統輸出的參數,降低了風險性。該方案的優點是在鄰居認證、消息簽名、訪問控制方面能夠保證通信的安全性和更高的實用性,主要缺點在于依賴于雙線性驗證,計算時間消耗較多,在某些場景的計算中會有性能上的影響[19]。總而言之,安全與高效的平衡將是值得進一步研究的問題。