常丹婷
(上海海事大學(xué)信息工程學(xué)院,上海 201306)
隨著面向服務(wù)、云計(jì)算、人工智能等信息技術(shù)在海上船舶領(lǐng)域的逐步應(yīng)用,以船舶和岸上基站的聯(lián)網(wǎng)結(jié)構(gòu)為主導(dǎo)的船舶自組網(wǎng)(Internet Of Vessels,IOV)[1]正被學(xué)術(shù)界廣泛認(rèn)可,結(jié)合具有衛(wèi)星定位功能和無(wú)線通信技術(shù)的船載智能信息服務(wù),通過信息交換,在無(wú)線傳感網(wǎng)上實(shí)現(xiàn)各節(jié)點(diǎn)信息的提取、監(jiān)管與利用。
近年來(lái),隨著Ad Hoc的不斷興起,國(guó)內(nèi)外學(xué)者對(duì)無(wú)線傳感的安全機(jī)制進(jìn)行了大量的研究,并不斷拓展到海洋區(qū)域,逐步形成了船舶自組網(wǎng)。這些解決方案主要可以分為兩種:一種使用對(duì)稱密碼系統(tǒng)[2],該系統(tǒng)需要通信雙方長(zhǎng)期共享一個(gè)密鑰。另一個(gè)是非對(duì)稱密碼術(shù)的使用。Shamir在1984年首次提出了基于身份的密碼學(xué)(Identity-Based Cryptography)[3]。在基于身份的密碼體系中,用戶公鑰可以通過計(jì)算用戶身份信息直接得出,用戶私鑰由受信任的第三方密鑰生成中心(Private Key Generator,PKG)生成。2001年,Boneh使用雙線性對(duì)提出了第一個(gè)基于身份的加密方案[4]。然而,基于證書的傳統(tǒng)非對(duì)稱密碼系統(tǒng)的通信、計(jì)算和存儲(chǔ)成本非常大,不適合于船舶自組網(wǎng)?;陂撝得艽a學(xué)的分布式 CA,如 TS-DSA[5]、TS-RSA[6],則需要大量交互。目前的研究重點(diǎn)更多的是在無(wú)線設(shè)備上應(yīng)用橢圓曲線加密技術(shù),由于其密鑰長(zhǎng)度短、數(shù)字簽名快、計(jì)算數(shù)據(jù)量小,使得它特別適用于設(shè)備有限的計(jì)算和存儲(chǔ)。
分析發(fā)現(xiàn),在船舶自組網(wǎng)中發(fā)起攻擊的首先進(jìn)行鄰居身份驗(yàn)證。考慮到船舶網(wǎng)絡(luò)身份驗(yàn)證并不頻繁,本文采用并優(yōu)化了一種基于單向密鑰鏈ID認(rèn)證防御機(jī)制(One-way Key Chain ID Authentication,OKCIDA)[7],降低攻擊者在任何時(shí)間段發(fā)起攻擊的可能性,限制攻擊者攻擊的時(shí)間。OKCIDA的主要思想是將節(jié)點(diǎn)ID與單向密鑰鏈關(guān)聯(lián),使得攻擊節(jié)點(diǎn)發(fā)送或回復(fù)的鄰居認(rèn)證請(qǐng)求只有在新節(jié)點(diǎn)加入認(rèn)證過程中才會(huì)得到合法節(jié)點(diǎn)的回復(fù)或確認(rèn)。因此,由于攻擊效果,狡猾的攻擊者將選擇在新節(jié)點(diǎn)進(jìn)入階段啟動(dòng)這兩種類型的攻擊。其次,為了阻止攻擊節(jié)點(diǎn)在新節(jié)點(diǎn)加入階段成功加入網(wǎng)絡(luò),基于橢圓曲線離散對(duì)數(shù)問題(Elliptic Curve Discrete Logarithm Problem,ECDLP)[8],與其他簽名相比,使用短密鑰可以滿足相同的安全需求,從而減少網(wǎng)絡(luò)數(shù)據(jù)傳輸,讓網(wǎng)絡(luò)中的協(xié)議可以應(yīng)用于大型船舶中。參考Duan[9]等人提出的基于位置的鄰居認(rèn)證模式中構(gòu)造參數(shù)思想,通過構(gòu)造對(duì)稱參數(shù)并組合OKCIDA,提出了一種基于雙線性的認(rèn)證簽名方案(BASS,Bilinear Authentication Signature Scheme)。BASS不僅可以阻止攻擊節(jié)點(diǎn)與舊節(jié)點(diǎn)建立有效鄰居關(guān)系,而且解決了攻擊節(jié)點(diǎn)與新節(jié)點(diǎn)建立有效鄰居關(guān)系的問題[10]。以丟棄無(wú)效信息并阻止攻擊節(jié)點(diǎn)加入網(wǎng)絡(luò)。分析表明,該方案在鄰居認(rèn)證、消息簽名、訪問控制方面能夠保證通信的安全性,而且無(wú)效節(jié)點(diǎn)剔除能夠提高節(jié)點(diǎn)間的通信效率。最后,給出了BASS的基于雙線性的安全證明和效率分析,結(jié)果表明該方案具有高性能及可擴(kuò)展性。
設(shè)G1是階為素?cái)?shù)q的點(diǎn)的加法群,P是它的生成元。用G2表示一個(gè)q階點(diǎn)的乘法群;映射e:G1×G1→G2,若滿足如下的性質(zhì),則稱群(G1,G2)是一對(duì)雙線性群[11]:
(1)雙線性:
(2)非退化:如果 q是G1的一個(gè)生成元,那么e(q,q)也是G2的一個(gè)生成元。
(3)計(jì)算性:?U,V∈G1都可計(jì)算e(U,V)。
假設(shè)網(wǎng)絡(luò)中的船舶節(jié)點(diǎn)在部署后沒有移動(dòng),它們將隨機(jī)分布在不同的探測(cè)區(qū)域。在實(shí)際的船聯(lián)網(wǎng)中,當(dāng)一些舊節(jié)點(diǎn)損壞或能量耗盡時(shí),為了維護(hù)網(wǎng)絡(luò)的連通性,需要將新的節(jié)點(diǎn)添加到網(wǎng)絡(luò)中。也就是說,在船舶節(jié)點(diǎn)部署的時(shí)間存在差異,因此網(wǎng)絡(luò)中有不同批次的節(jié)點(diǎn)。假定網(wǎng)絡(luò)按部署批次遞增方式來(lái)進(jìn)行部署,即第m+1批次節(jié)點(diǎn)部署時(shí),第m批次節(jié)點(diǎn)已經(jīng)部署。標(biāo)記Bam為部署批次第m批次的批次號(hào),IDi為點(diǎn)i的主ID號(hào),Idi是點(diǎn)i的標(biāo)識(shí),由Bam和IDi組成;
故在節(jié)點(diǎn)ID中引入Ba域[12],向每一批節(jié)點(diǎn)部署單向密鑰鏈中對(duì)應(yīng)的密鑰,新節(jié)點(diǎn)需向舊節(jié)點(diǎn)提供認(rèn)證密鑰Knew,舊節(jié)點(diǎn)通過認(rèn)證Kold=h(Knew)過濾新節(jié)點(diǎn)。
(1)單向密鑰鏈。選取隨機(jī)km∈Z*q(1≤m≤n-1)和 哈希h:{0,1}*→ Z*p,迭代執(zhí)行h,生成如圖1所示單向密鑰鏈。如式(3)所示,給定km+1很容易推出km;反之給定km,無(wú)法計(jì)算出km+1。
圖1 單項(xiàng)密鑰鏈認(rèn)證模型
(2)基于節(jié)點(diǎn)部署批次Bam預(yù)載單向密鑰鏈中對(duì)應(yīng)的密鑰ki,使得(4)成立。如對(duì)于第1批節(jié)點(diǎn)預(yù)載共享密鑰K(Ba1)=k1。
(3)K(Bam+1)認(rèn)證。第m+1批新節(jié)點(diǎn)若被部署,新節(jié)點(diǎn)i向鄰居j提供K(Bam+1)信息。如果j為舊節(jié)點(diǎn),則驗(yàn)證公式(5)是否成立,其中Km表示最近通過認(rèn)證的密鑰。若等式成立,則表示有新節(jié)點(diǎn)部署到網(wǎng)絡(luò)中,并通過OKCIDA檢查;否則丟棄。
本節(jié)在胡、Duan等人提出的算法基礎(chǔ)上[13],優(yōu)化了一種基于雙線性的單項(xiàng)密鑰鏈防御認(rèn)證機(jī)制,包括密鑰的生成和分發(fā)、基于密鑰的鄰居認(rèn)證方案和簽名過濾。由于之前的算法只限制攻擊者時(shí)間,當(dāng)網(wǎng)絡(luò)中添加新節(jié)點(diǎn)時(shí),攻擊節(jié)點(diǎn)可以嘗試在監(jiān)聽新節(jié)點(diǎn)發(fā)送的身份驗(yàn)證密鑰后加入網(wǎng)絡(luò)。因此針對(duì)OKCIDA的不足,組合OKCIDA和鄰居節(jié)點(diǎn)關(guān)系,基于橢圓曲線離散對(duì)數(shù)問題(ECDLP),并參考Duan等人提出的LBNA模式中對(duì)稱參數(shù)構(gòu)造思想[14],提出了一種基于雙線性的鄰居安全協(xié)議(BASS),以防御攻擊。BASS包括預(yù)部署階段和認(rèn)證簽名階段。
表1 方案的符號(hào)標(biāo)記表
在船舶網(wǎng)絡(luò)被部署前,TA產(chǎn)生系統(tǒng)參數(shù),使用的部分標(biāo)記和定義如表1所示。
(1)生成系統(tǒng)公共參數(shù)Pamas(p,q,G,G1,G2,e,P)。
(2)系統(tǒng)選取安全參數(shù)k∈Z+,根據(jù)輸入k產(chǎn)生系數(shù)q,生成q階加法群G1、q階乘法群G2和雙線性映射e?:G1×G1→G2。選取生成元 P 于 G1中。
(3)選擇 2個(gè)無(wú)碰撞的 Hash函數(shù) H和 h:H:{0,1}*→G1*,h:{0,1}*→ G2*。從安全角度可把H、h看作2個(gè)隨機(jī)預(yù)言式。
(4)選擇一個(gè)隨機(jī)數(shù)k∈Zp*作為主私鑰。同時(shí)設(shè)置相應(yīng)主公鑰:
根據(jù)在群G里DLP的難解性,通過(P,Ppub)來(lái)計(jì)算k是不可行的。
(5)依照OKCIDA生成一個(gè)密鑰鏈[15]。對(duì)于密鑰km,使得m預(yù)載的共享批次密鑰K((Bam)=km。m預(yù)載可公開參數(shù)為(p,q,G,G1,G2,e,Zp*,P,Ppub,H,h,K((Bam)Bamax)。
根據(jù)定義,鄰居認(rèn)證是指任何兩個(gè)相鄰節(jié)點(diǎn)驗(yàn)證彼此的網(wǎng)絡(luò)成員資格的過程。這個(gè)過程是支持海上船舶通信中許多安全服務(wù)的基礎(chǔ)[16]。
在部署后階段,每個(gè)節(jié)點(diǎn)都需要發(fā)現(xiàn)和執(zhí)行與相鄰節(jié)點(diǎn)的相互認(rèn)證,這是許多現(xiàn)有的傳感器網(wǎng)絡(luò)安全解決方案中的一個(gè)必備過程。圖2勾畫了該算法的鄰居認(rèn)證的交互過程。具體如下:
(1)對(duì)于任意的新節(jié)點(diǎn)i,鄰居認(rèn)證簽名過程如下:
①選擇兩個(gè)隨機(jī)數(shù) λi,μi∈Z*p,計(jì)算 Xi和 Yi之后進(jìn)一步按照(9)計(jì)算i的私鑰IKi。
②對(duì)原始消息M產(chǎn)生加密消息Ci,節(jié)點(diǎn)i產(chǎn)生對(duì)原始消息的簽名。節(jié)點(diǎn)i選取隨機(jī)數(shù)αi∈Zq*并按照(10)(11)計(jì)算 θ,i和 ci。隨后進(jìn)一步按照(12)計(jì)算 σi,SIGi=<σi,ci>則為節(jié)點(diǎn)i在加密信息Ci上的數(shù)字簽名。節(jié)點(diǎn)i向本地廣播鄰居發(fā)現(xiàn)消息M={IDi,Xi,Yi,Ti,K(Bam+1)}.其中 Ti=sekiP,seki為隨機(jī)選擇的且seki∈
(2)對(duì)于i的任意鄰居節(jié)點(diǎn)j,接收消息M后處理如下:
①首先檢查N的新鮮性,若不新鮮,則丟棄這條消息。
②檢查(14)是否成立,如果成立則該消息過期,將其丟棄。
③檢查部署批次號(hào)。如果(15)成立,則其可能是新部署節(jié)點(diǎn),進(jìn)行后續(xù)檢查;否則丟棄;
④K(Bam+1)認(rèn)證。若j為新節(jié)點(diǎn),比較K(Bam+1)是否與共享批次密鑰相同;若j為舊節(jié)點(diǎn)則查證是否成立。若通過認(rèn)證,進(jìn)行后續(xù)檢查;否則丟棄。
(3)向 i回復(fù)消息 Mecho。
①選擇隨機(jī)數(shù)sekj∈并計(jì)算Tj=sekjP。計(jì)算與i的對(duì)密鑰:
其中:
如果j為新節(jié)點(diǎn),則Mecho={IDj,Xj,Yj,Tj,h(K(j,i),Ti,Tj,1)};如果 j為舊節(jié)點(diǎn),則 Mecho={IDi,Xi,Yi,Tj,Nj,h(K(j,i),Ti,Tj,Nj,1)},Nj表示j擁有的鄰居節(jié)點(diǎn)集合,并根據(jù)網(wǎng)絡(luò)模型假設(shè)Nj≠?。
②當(dāng)i收到j(luò)的回復(fù)消息Mecho,進(jìn)行消息認(rèn)證。計(jì)算與j的對(duì)密鑰:
其中:
通過哈希值比較來(lái)判斷:若j為新節(jié)點(diǎn),則將h(K(i,j),Ti,Tj,1)與Mecho中的對(duì)應(yīng)域比較,若相同,則進(jìn)入后續(xù)處理,否則丟棄;若j為舊節(jié)點(diǎn)且Nj≠?,則將h(K(j,i),Ti,Tj,Nj,1)與Mecho中的對(duì)應(yīng)域比較,后續(xù)操作同上。
(4)向j發(fā)送回復(fù)確認(rèn)消息Mack
MaMack后,通過認(rèn)證,將h(K( j, i),Ti,Tj,2)與 Mack中對(duì)應(yīng)當(dāng)j收到i的回復(fù)消息內(nèi)容作比較。若相同,則與i的鄰居認(rèn)證成功,同時(shí)結(jié)束與i的對(duì)密鑰建立。且可通過對(duì)密鑰K(j,i)生成其他密鑰。當(dāng)i和j擁有的私鑰IK為系統(tǒng)預(yù)載合法密鑰時(shí),可以保證:
成立。驗(yàn)證過程詳見第3節(jié)。
定理1(驗(yàn)證公式):公式K(i,j)=K(j,i)是成立的。
圖2 船舶節(jié)點(diǎn)鄰居交互認(rèn)證簽名過程
(1)計(jì)算復(fù)雜度分析
本文方案所消耗的時(shí)間僅與代表性方案進(jìn)行比較。如果設(shè)用戶身份u表示長(zhǎng)度為nu的二進(jìn)制串,消息m表示為長(zhǎng)度為nm的二進(jìn)制串,整數(shù)求和計(jì)算時(shí)間為單位時(shí)間O(1),Cmul表示群元素的乘法運(yùn)算時(shí)間,Cexpt表示指數(shù)運(yùn)算時(shí)間,Cparing表示雙線性對(duì)e的運(yùn)算時(shí)間。與Duan方案相比,新方案密文中包含接收者的身份列表,確保接收方可以獲得所需的信息和并解密密文;與SHAO J[17]方案相比,降低了系統(tǒng)輸出參數(shù);與LAL等人的方案相比,新增雙線性運(yùn)算,較大程度上降低了運(yùn)算次數(shù),并減短密文長(zhǎng)度,這都降低了計(jì)算成本和傳輸帶寬,使得效率較大提升。三種方案在相同標(biāo)準(zhǔn)下的量化詳見表2。
(1)通信復(fù)雜度分析
本文并不通過考量計(jì)算效率來(lái)計(jì)算通信復(fù)雜度,而考慮通信的比特?cái)?shù)。基于船聯(lián)網(wǎng)中的通信開銷通常由身份信息、簽名、消息等組成。該方案中消息的大小為110B,簽名的大小為56B。每個(gè)方案的通信復(fù)雜度如表3所示。
這個(gè)方案基于橢圓曲線密碼體制ECDLP而設(shè)計(jì),與傳統(tǒng)的基于離散對(duì)數(shù)的DLP簽名體制[18]相比,簽名長(zhǎng)度相對(duì)較短。通過表3可以看出,與其他方案的相比,本文方案的通信復(fù)雜度明顯較優(yōu)一些。
表3 4種方案的通信復(fù)雜度比較
本文提出了提出了一種基于雙線性的認(rèn)證簽名方案(BASS),以丟棄無(wú)效信息并阻止攻擊節(jié)點(diǎn)加入網(wǎng)絡(luò)。與Duan方案相比,降低簽名和驗(yàn)證的計(jì)算量,提高了計(jì)算效率;與SHAO J方案相比安全強(qiáng)度有了進(jìn)一步提升;與LAL方案相比,本文的新方案減少了系統(tǒng)輸出的參數(shù),降低了風(fēng)險(xiǎn)性。該方案的優(yōu)點(diǎn)是在鄰居認(rèn)證、消息簽名、訪問控制方面能夠保證通信的安全性和更高的實(shí)用性,主要缺點(diǎn)在于依賴于雙線性驗(yàn)證,計(jì)算時(shí)間消耗較多,在某些場(chǎng)景的計(jì)算中會(huì)有性能上的影響[19]??偠灾?安全與高效的平衡將是值得進(jìn)一步研究的問題。