趙開新,張俊英,孟少迪
(1.河南工學院 計算機科學與技術(shù)學院,河南 新鄉(xiāng)453003;2.新鄉(xiāng)市智能工業(yè)大數(shù)據(jù)應(yīng)用工程技術(shù)研究中心,河南 新鄉(xiāng) 453003;3.河南科技大學 食品與生物工程學院,河南 洛陽 471000)
隨著網(wǎng)絡(luò)技術(shù)和通信技術(shù)的飛速發(fā)展,物聯(lián)網(wǎng)已經(jīng)廣泛應(yīng)用于智能交通、智能醫(yī)療、公共安全等諸多行業(yè),但是物聯(lián)網(wǎng)安全問題也變得越來越嚴重。為了打造一個萬物互聯(lián)、安全可靠的通信環(huán)境,加密算法被廣泛應(yīng)用[1],其中,對稱加密算法由于加密速度快而被廣泛應(yīng)用于物聯(lián)網(wǎng)通信。但由于對稱加密算法加解密方所用的密鑰相同,一旦密鑰被泄露,所有會話信息將會被解密。為了解決對稱加密算法的上述密鑰缺陷,國內(nèi)外學者提出了許多認證加密方案。文獻[2]針對當前物聯(lián)網(wǎng)隱私保護加密算法所需存儲空間較大且計算復雜度高的問題,提出一種新的較小存儲空間下物聯(lián)網(wǎng)隱私保護加密算法;文獻[3]提出了一種無線網(wǎng)絡(luò)中移動節(jié)點基于橢圓曲線RSA的安全認證加密協(xié)議;文獻[4]針對現(xiàn)有基于智能卡支付系統(tǒng)的安全方案存在密碼暴露、信息泄露等問題,提出了一種新的基于相互認證和3DES加密的智能卡遠程支付系統(tǒng)認證方案;文獻[5]針對無線人體局域網(wǎng)的安全隱私保護問題,提出了一種基于屬性的安全與高效的密文加密方案,該方案采用對稱加密算法AES和基于屬性的加密算法CP-ABE分別對數(shù)據(jù)和共享密鑰進行加密,并以密文的形式存儲在手持終端中,保證了存儲數(shù)據(jù)的安全。
上述文獻提出的一些加密和認證協(xié)議在安全性和效率方面需要進一步提升:文獻[3]協(xié)議較復雜,效率低;文獻[4]協(xié)議用戶能夠自由地修改密碼,同時可對用戶信息進行匿名保護,但不能實現(xiàn)用戶標識唯一性;文獻[5]協(xié)議不能抗重放攻擊。本文把橢圓曲線加密算法應(yīng)用到注冊和密鑰生成過程中,實現(xiàn)了用戶標志唯一性和密鑰前向安全性,抗重放攻擊,可防止非法用戶注冊,并且協(xié)議效率高。
橢圓曲線指的是方程y2+axy+by=x3+cx2+dx+e所確定的曲線,它是方程的全體解(x,y)再加上一個無窮遠點構(gòu)成的集合,其中a,b,c,d,e是滿足一些簡單條件的實數(shù)??蓪⑸鲜銮€方程通過坐標變換轉(zhuǎn)化為y2=x3+ax+b,由它確定的橢圓曲線常記為E(a,b),當滿足4a3+27b2≠0時,稱E(a,b)是一條非奇異橢圓曲線[6-8]。
設(shè)G是橢圓曲線Ep(a,b)上的一個循環(huán)子群,P是G的一個生成元,Q∈G。已知P和Q,把求解滿足等式mP=Q成立的整數(shù)m問題,稱為橢圓曲線上的離散對數(shù)問題,在使用橢圓曲線密碼體制時,需要將發(fā)送的明文m編碼為橢圓曲線上的點Pm=(xm,ym),然后再對點Pm做加密變換,解密過程就是把Pm還原為明文。具體過程如下:
(1)密鑰生成。在橢圓曲線Ep(a,b)上選取一個階n的生成元P,隨機選取整數(shù)x,計算Q=xP,其中n為一個大素數(shù),x∈(1,n),則公鑰為Q,私鑰為x。
(2)加密。為了加密Pm,隨機選擇一個整數(shù)k,k∈(1,n),計算C1=kP,C2=Pm+kQ,則密碼文為C=(C1,C2)。
(3)解密。計算C2-xC1=Pm+kQ-xkP=Pm+kxP-xkP=Pm,攻擊者要想從C中計算出Pm,就必須知道k。要從P和kP中計算出k將面臨求解橢圓曲線上的離散對數(shù)問題(Elliptic cure discrete logarithm problem,ECDLP),目前ECDLP問題的求解在理論上是難以實現(xiàn)的[9-12]。
橢圓曲線密碼學可以用較短長度的密鑰獲得較高的安全性,為了提高協(xié)議的安全性、可靠性,降低通信的復雜性,本文建立基于橢圓曲線的密鑰生成協(xié)議。物聯(lián)網(wǎng)中通信的雙方用用戶ID進行標志,注冊中心在不泄露自己私鑰的基礎(chǔ)上為用戶創(chuàng)建公私鑰對,用戶間通過自己的身份ID、公私鑰信息安全可靠地協(xié)商出共享密鑰。
2.1.1 初始化參數(shù)
可信任的注冊中心建立橢圓曲線Ep(a,b),然后選出生成元P,并求出生成元P的階n,H()為哈希函數(shù),注冊中心公鑰為PubRC,私鑰為PriRC,PriRC∈(1,n-1),其中PubRC=PriRCP,參數(shù){PubRC,EP(a,b),P,H(),n)}對所有用戶是公開的。本文用到一些符號的含義,如表1所示。
表1 符號及說明
2.1.2 用戶注冊
用戶Ui向注冊中心發(fā)送消息,獲得其公私鑰對(Pubi,Prii),過程如下:
(1)用戶Ui生成一個隨機數(shù)T-Prii,其中T-Prii∈(1,n-1),作為用戶臨時私鑰,通過T-PriiP計算出Ui的臨時公鑰T-Pubi,把H(T-Prii,PubRC)賦給A1,并把A1、臨時公鑰T-Pubi和自己的身份標志IDi發(fā)送給注冊中心。
從土塞效應(yīng)形成機理、影響因素及力學分析出發(fā),對以密實砂層為持力層的開口鋼管樁土塞效應(yīng)計算適當簡化, 推演得出可運用于水運工程規(guī)范計算開口鋼管樁豎向極限承載力的土塞效應(yīng)折減系數(shù),并結(jié)合海利公式、高應(yīng)變動力檢測對比分析,得出以下結(jié)論與建議:
(2)注冊中心收到用戶Ui發(fā)來的消息,檢索IDi是否已經(jīng)注冊過,如果已經(jīng)注冊過,則Ui注冊失敗。如果未注冊過,計算A2=H(T-PubiPriRC),并且比較A2和A1是否相等,如果不相等,則Ui注冊失敗,如果A2和A1相等,注冊中心生成一個隨機的密鑰對(t,R),其中R=tP,t∈(1,n-1),計算Bi=T-Pubi+PubRC,ei=H(R,IDi),Si=PriRCei+t,Pubi=eiBi+R(modn),其中,Pubi為Ui的公鑰,注冊中心把R,Si和Bi發(fā)送給用戶Ui。
(3)Ui收到注冊中心發(fā)過來的信息后,計算ei=H(R,IDi),Prii=Si+T-Priiei(modn),Pubi=PriiP,并且驗證Pubi是否和eiBi+R(modn)相等,如果相等則通過注冊,得到用戶的私鑰Prii和公鑰Pubi,否則用戶Ui注冊失敗。詳細注冊流程如圖1所示。
圖1 用戶注冊過程
用戶完成合法注冊后,下一步要協(xié)商共同的會話密鑰,過程如下:
(1)Ui選擇一個隨機數(shù)xi,xi∈(1,n-1),并得到時間標記Ti,然后計算Xi=xiP,Yi=xiP+Prii+H(Pubi,Ti,IDj),再把{Xi,Yi,Pubi,IDi,Ti}發(fā)給用戶Uj。
圖2 密鑰生成過程
如果網(wǎng)絡(luò)中的用戶Ui通過安全渠道獲得了注冊中心的公鑰PubRC,當用戶把注冊消息發(fā)送到注冊中心時,若此注冊中心是偽造的,它就沒有真實的私鑰PriRC,因此用戶在注冊過程中就不能計算出正確的Si,那么最終用戶Ui收到偽注冊中心發(fā)送過來的信息后,驗證Pubi和eiBi+R(modn)相等是不成立的,這樣用戶Ui注冊失敗,從而避免了用戶的虛假注冊。驗證Pubi等于eiBi+R(modn)步驟如式(1)所示。
Pubi=PriiP=(Si+T-Priiei)P(modn)
=(PriRCei+t+T-Priiei)P(modn)
=(PriRCeiP+tP+T-PriieiP)(modn)
=(ei(T-PriP+PriRCP)+R)(modn)
=(ei(T-Pubi+PubRC)+R)(modn)
=eiBi+R(modn)
(1)
YiP=(xi+Prii+H(Pubi,Ti,IDj))P
=xiP+PriiP+PH(Pubi,Ti,IDj)
=Xi+Pubi+PH(Pubi,Ti,IDj)
(2)
=H(xixjPTiTj)
(3)
在網(wǎng)絡(luò)中,如果攻擊者監(jiān)聽到一個有效消息后把此消息重發(fā)到網(wǎng)絡(luò),由于在本協(xié)議中消息里含有時間標簽Ti,因此如果間隔時間過長,則接收方計算Tj-Ti≤ΔT將不成立,Uj將忽略此次請求;如果監(jiān)聽者在重新發(fā)送信息時修改了Ti,雖然能通過時間標簽驗證,但監(jiān)聽者由于沒有辦法修改Yi,因此用戶Uj將會驗證到Y(jié)iP不等于Xi+Pubi+PH(Pubi,Ti,IDj),Uj也會忽略此次請求。因此該協(xié)議能夠很好地抵抗重放攻擊。
如果通信雙方在私鑰泄漏的情況下,記錄了先前交換消息的攻擊者無法訪問過去的會話密鑰,則身份驗證方協(xié)議可以提供完美的前向保密。在本協(xié)議中即使攻擊者在消息中提取了Xi,Ti,Tj,但是計算不出每次會話臨時生成的隨機數(shù)Xi或Xj,因為這里涉及的橢圓曲線離散對數(shù)問題難以求解,因此攻擊者破譯不出前一次會話的共享密鑰,從而可以提供完美前向安全性。
注冊中心會開辟一個存儲區(qū)域,用來存放用戶ID和公鑰的映射表,當注冊中心收到用戶的注冊ID后,會檢查自己的存儲表中是否存有該用戶信息,如果有此ID信息記錄,則丟棄注冊信息,這樣就避免了用戶身份重復。
由于通信雙方采用的是雙向認證,并且Yi或Yj的值均由自己的私鑰和一些雙方屬性的哈希值共同決定,因此攻擊方無法對任何一方進行偽造,這有效地避免了偽裝攻擊。文獻[13]、文獻[14]和文獻[15]的密鑰生成方案安全可靠性較高,把本文提出的密鑰生成協(xié)議同文獻[13]、文獻[14]和文獻[15]提出的協(xié)議在安全性方面進行對比,具體比較結(jié)果如表2所示。從表2可以發(fā)現(xiàn)本文所提出的安全密鑰生成協(xié)議在具有抗偽裝攻擊、前項安全性、用戶標志唯一性的基礎(chǔ)上,還具有抗重放攻擊和防止非法注冊的功能。
表2 協(xié)議安全性比較
文獻[13]、文獻[14]和文獻[15]的密鑰生成方案的用戶注冊安全,密鑰生成效率較高,把本文和文獻[13]、文獻[14]與文獻[15]中協(xié)議的執(zhí)行效率進行對比,為了便于分析,采用下列符號來表示不同運算所需時間:Th表示一次哈希所需的時間,Tecmul表示橢圓曲線上一次點乘運算所需的時間,Tenc表示一次加密運算所需時間,Tdec表示一次解密運算所需的時間。四種協(xié)議在注冊和密鑰生成過程中所用時間如表3所示。從表3可以看出,本文協(xié)議注冊所用時間和文獻[13]同為4Th+3Tecmul,比文獻[14]和文獻[15]少用了Tecmul;協(xié)商共享密鑰所用的時間為6Th+4Tecmul,分別比文獻[13]少用了2Th,比文獻[14]少用了2Th+Tenc+Tdec,比文獻[15]少用了3Th;本文注冊和協(xié)商密鑰所用總時間為10Th+7Tecmul,分別比文獻[13]少用了2Th,比文獻[14]少用了2Th+Tenc+Tdec,比文獻[15]少用了3Th+Tecmul,因此本文協(xié)議和文獻[13]、文獻[14]與文獻[15]相比,注冊和協(xié)商密鑰所用總時間最少,效率最高。
表3 協(xié)議執(zhí)行時間比較
利用橢圓曲線算法的優(yōu)勢,筆者設(shè)計了一種物聯(lián)網(wǎng)安全通信密鑰生成協(xié)議,通過對比分析可知,此協(xié)議克服了一些傳統(tǒng)密鑰生成協(xié)議的缺陷,具有抗偽裝攻擊、前項安全,抗重放攻擊和防止非法注冊的功能,并且協(xié)議的安全性和效率都有了一定的提高。下一步研究的方向是在保證協(xié)議安全性的基礎(chǔ)上,進一步簡化用戶注冊和協(xié)商會話密鑰的算法復雜度。