苗婷婷,劉笑凱,姬勝凱,郝克林,蘇立文
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京102200)
隨著衛(wèi)星通信技術(shù)的發(fā)展,衛(wèi)星通信組網(wǎng)技術(shù)越來越被人們重視。安全認(rèn)證是通信系統(tǒng)中不可或缺的重要環(huán)節(jié)[1]。由于衛(wèi)星通信在開放的無線信道進(jìn)行數(shù)據(jù)傳輸,接入衛(wèi)星IP 網(wǎng)絡(luò)的業(yè)務(wù)系統(tǒng)面臨來自公開信道的信息竊取和網(wǎng)絡(luò)攻擊威脅,因此,用戶終端接入衛(wèi)星IP 網(wǎng)絡(luò)時(shí)需要進(jìn)行身份認(rèn)證,從而確保接入用戶為合法的真實(shí)用戶。對(duì)衛(wèi)星網(wǎng)絡(luò)安全認(rèn)證協(xié)議的研究是衛(wèi)星網(wǎng)絡(luò)安全問題研究的重要組成部分。然而,目前空間信息網(wǎng)絡(luò)中的身份認(rèn)證技術(shù)仍存在很多問題,例如:通信和計(jì)算資源消耗大、認(rèn)證時(shí)間長(zhǎng)、不考慮密鑰生成中心安全性等[2]。
本文就衛(wèi)星通信認(rèn)證技術(shù)進(jìn)行研究,基于無證書公鑰密碼體制(Certificateless Public Key Cryptosystem,CL-PKC),使用公鑰加密、私鑰簽名、公鑰驗(yàn)簽等密碼技術(shù)設(shè)計(jì)一種具備身份信息匿名保護(hù)功能的安全認(rèn)證協(xié)議,以提升用戶接入衛(wèi)星通信系統(tǒng)的隱私性??紤]到衛(wèi)星網(wǎng)絡(luò)的計(jì)算、存儲(chǔ)能力受限的特點(diǎn),本文使用基于身份的密碼體制在安全認(rèn)證的基礎(chǔ)上提高認(rèn)證協(xié)議的性能。
非對(duì)稱密碼體制的身份認(rèn)證技術(shù)分為基于證書和基于身份ID 兩種[3]。不需要用身份信息生成公鑰的方式需要在公鑰基礎(chǔ)設(shè)施體系(Public Key Infrastructure,PKI)中通過驗(yàn)證可信第三方授權(quán)機(jī)構(gòu)(Certificate Authority,CA)下發(fā)的證書來驗(yàn)證公鑰與目標(biāo)用戶信息的對(duì)應(yīng)關(guān)系。但獲取證書和CA 的公鑰并進(jìn)行驗(yàn)簽將造成額外的通信傳輸和計(jì)算開銷?;谏矸莸墓€密碼系統(tǒng)(Identity-Based Public Cryptosystem,ID-PKC)使用用戶的身份來生成用戶的公鑰實(shí)現(xiàn)了用戶公鑰和身份的綁定,從而可以降低證書方式帶來的開銷。這也就是基于身份的密碼體制(Identity-Based Encryption,IBE)[4]。但I(xiàn)D-PKC 方式完全依賴體系內(nèi)的密鑰生成中心(Key Generation Center,KGC)生成私鑰,不能解決KGC 不完全可信的情況。
因此本文選擇CL-PKC 的密碼體制由用戶選擇秘密值和KGC 生成的部分私鑰組合成完整的私鑰,在KGC 不完全可信或被攻破的情況下仍可以保護(hù)完整私鑰的安全性[5]。
基于IBE 密碼體制的第一個(gè)實(shí)用方案是用雙線性映射對(duì)構(gòu)造的,其安全性基于雙線性對(duì)中離散對(duì)數(shù)問題的難解性[6]。本文IBE 密碼體制認(rèn)證協(xié)議采用基于雙線性對(duì)運(yùn)算的方案。
一個(gè)完整的IBE 密碼體制由四部分組成,分別是系統(tǒng)初始化、密鑰提取、加密和解密。本文設(shè)計(jì)身份認(rèn)證的前提條件為:衛(wèi)星通信系統(tǒng)組織建立可信組織KGC,用來接收終端用戶和衛(wèi)星節(jié)點(diǎn)的注冊(cè)[7]。
(1)KGC 產(chǎn)生的參數(shù)有:大素?cái)?shù)q;q 階加法群(G1,+)和q 階乘法群(G2,·);G1的生成元P;雙線性對(duì)e:G1×G1→G2。
(3)選擇兩個(gè)Hash 函 數(shù),H1:{0,1}*→G1,H2:G2→{0,1}n。
因此,需要公開的系統(tǒng)參數(shù)為<q,G1,G2,e,n,P,Ppub,H1,H2>。
本文設(shè)計(jì)的基于CL-PKC 的通信認(rèn)證協(xié)議分為注冊(cè)階段密鑰提取和身份認(rèn)證階段兩個(gè)過程,以下將對(duì)這兩個(gè)過程分別進(jìn)行描述。協(xié)議描述中的標(biāo)識(shí)符及定義如表1 所示。
表1 標(biāo)識(shí)符及定義
用戶A 發(fā)送IDA給KGC,如果用戶A 為合法用戶,KGC 計(jì)算用戶A 的部分私鑰ds=sH1(IDA),用戶A 再選取秘密值和部分私鑰一起得到A 的完整私鑰SA。密鑰生成中心KGC 用選定的哈希函數(shù)和其公鑰PKGC計(jì)算用戶的公鑰PA。同時(shí)KGC 構(gòu)建包含用戶ID、用戶權(quán)限、密鑰有效時(shí)長(zhǎng)的授權(quán)令牌,并使用自己的私鑰SKGC對(duì)用戶A 的權(quán)限令牌進(jìn)行簽名。通過安全通道(如加密郵箱)發(fā)送KGC 私鑰簽名了的權(quán)限令牌給用戶A[9]。至此,用戶A 便完成了訪問衛(wèi)星系統(tǒng)之前的注冊(cè),同時(shí)在KGC 保存有合法衛(wèi)星ID 表。衛(wèi)星節(jié)點(diǎn)的公鑰私鑰獲得方式與用戶相同。注冊(cè)階段的過程示意圖如圖1 所示。
世界經(jīng)濟(jì)一體化的高速發(fā)展,對(duì)商貿(mào)物流提出了更高的要求,而商貿(mào)物流的眾多環(huán)節(jié)中,分撥是最容易出問題的一環(huán)。分撥中心是在整個(gè)物流鏈中,在始發(fā)倉(cāng)和末端中間起著重要的作用。同時(shí)也是在快遞整個(gè)網(wǎng)絡(luò)中的一個(gè)重要節(jié)點(diǎn),在其所在的物流配送區(qū)域和其他有聯(lián)系的物流配送中心區(qū)域有著重要作用,換個(gè)角度來說,它又是集加工、理貨、送貨等多種職能于一體的物流據(jù)點(diǎn)。分撥中心的業(yè)務(wù)質(zhì)量關(guān)系到整個(gè)物流鏈的效率。
圖1 用戶注冊(cè)流程示意圖
注冊(cè)完成后,當(dāng)用戶A 需要申請(qǐng)衛(wèi)星S 的服務(wù)時(shí),首先要先進(jìn)行身份的認(rèn)證。身份認(rèn)證過程如下:
(1)用戶A 向衛(wèi)星S 發(fā)起認(rèn)證時(shí),首先從KGC列表得到衛(wèi)星S 的IDS∈{0,1}*,然后計(jì)算H2(e(H1(IDS),Ppub)r)用來加密用戶A 的身份IDA、PA和時(shí)間戳,并取隨機(jī)數(shù)r∈,計(jì)算:
U=rP
V=H2(e(H1(IDS),Ppub)r)⊕(IDA,PA,timestamp)
用戶A 公開發(fā)送<U,V>給衛(wèi)星節(jié)點(diǎn)。
(2)衛(wèi)星S 收到認(rèn)證申請(qǐng)后用KGC 頒發(fā)的私鑰SS解密,檢測(cè)U ∈G1是否成立,不成立則拒絕,成立則用衛(wèi)星的私鑰SS解密V,得到明文后校驗(yàn)時(shí)間戳信息,驗(yàn)證系統(tǒng)時(shí)差是否在允許范圍內(nèi),不在允許范圍內(nèi)則不處理該注冊(cè)信息。用解密得到的IDA計(jì)算用戶的PA,若一致說明其為合法用戶,完成衛(wèi)星節(jié)點(diǎn)對(duì)用戶的認(rèn)證。然后,衛(wèi)星S 生成協(xié)商密鑰key 和隨機(jī)數(shù)C,使用衛(wèi)星的私鑰SS對(duì)C、key 和系統(tǒng)時(shí)間timestamp 進(jìn)行簽名,并用用戶A 的公鑰PA進(jìn)行加密后將第二包消息C、key 和timestamp 以及簽名發(fā)送給用戶A:
EncryPA(C,key,timestamp,SignSS(C,key,timestamp))
(3)用戶A 收到衛(wèi)星發(fā)過來的密文后用自己的私鑰SA進(jìn)行解密,用衛(wèi)星的公鑰驗(yàn)簽。解密后若時(shí)間校驗(yàn)不通過則不響應(yīng)此報(bào)文;通過后,用驗(yàn)簽得到的隨機(jī)數(shù)和密鑰值key 與解密消息的隨機(jī)數(shù)和密鑰值進(jìn)行比對(duì),比對(duì)一致說明消息是由衛(wèi)星S 發(fā)出,完成用戶對(duì)衛(wèi)星節(jié)點(diǎn)的認(rèn)證,同時(shí)保存隨機(jī)數(shù)和密鑰值。然后使用協(xié)商密鑰key 進(jìn)行加密后向衛(wèi)星S 發(fā)送第三包消息:
Encrykey(C+1,AuthToken)
(4)衛(wèi)星S 收到第三包消息之后,使用協(xié)商密鑰key 進(jìn)行解密,驗(yàn)證解密后的隨機(jī)數(shù)C+1 是否正確。使用KGC 的公鑰對(duì)AuthToken 進(jìn)行驗(yàn)簽,對(duì)比認(rèn)證用戶ID 是否與用戶A 在認(rèn)證開始時(shí)的身份ID 一致。
如果上述步驟均無誤,則認(rèn)證成功,衛(wèi)星S 將在用戶A 的資源有效時(shí)長(zhǎng)T 內(nèi)為其分配相關(guān)資源,并提供用戶授權(quán)令牌中指定的服務(wù)。協(xié)商密鑰key作為用戶與該衛(wèi)星節(jié)點(diǎn)通信的對(duì)稱密鑰。
表2 端到端認(rèn)證平均計(jì)算用時(shí)
通過Socket 網(wǎng)絡(luò)編程用C++語言對(duì)本文設(shè)計(jì)的認(rèn)證方案進(jìn)行仿真實(shí)驗(yàn)測(cè)試,基于ECC 算法進(jìn)行3次 加 密、3 次 解 密、1 次 簽 名、2 次 驗(yàn) 簽。為 了 控 制 計(jì)算平臺(tái)對(duì)協(xié)議計(jì)算性能的影響,選擇CPU 1.7 GHz和CPU 2.2 GHz 兩個(gè)機(jī)器分別進(jìn)行仿真實(shí)驗(yàn)。在每一次仿真實(shí)驗(yàn)中,取500 次認(rèn)證用時(shí)的平均值,同樣的仿真實(shí)驗(yàn)進(jìn)行4 次。表2 為4 次仿真實(shí)驗(yàn)得到的端到端認(rèn)證平均計(jì)算用時(shí)統(tǒng)計(jì)表。
分析仿真實(shí)驗(yàn)數(shù)據(jù),在計(jì)算性能略低的機(jī)器上仿真的認(rèn)證用時(shí)較長(zhǎng)但均不超過50 ms。一般認(rèn)為衛(wèi)星網(wǎng)絡(luò)的傳輸時(shí)延為270 ms[10],實(shí)驗(yàn)中認(rèn)證用時(shí)加衛(wèi)星網(wǎng)絡(luò)傳輸用時(shí)遠(yuǎn)遠(yuǎn)低于文獻(xiàn)[9]中的認(rèn)證計(jì)算用時(shí)(平均8 s),說明本文設(shè)計(jì)的認(rèn)證方案具有很好的計(jì)算性能。
根據(jù)通信流程,對(duì)身份認(rèn)證方案的安全性分析如下:
(1)用戶身份信息保護(hù)。在注冊(cè)階段,用戶向KGC進(jìn)行注冊(cè)時(shí)的信息使用KGC 的公鑰進(jìn)行加密,然后KGC 收到注冊(cè)信息后使用其私鑰進(jìn)行解密,竊聽者即使能得到KGC 的公鑰,也無法對(duì)注冊(cè)信息進(jìn)行解密,實(shí)現(xiàn)了對(duì)合法用戶的身份信息的保護(hù)。在認(rèn)證階段,用戶A 對(duì)身份ID 進(jìn)行加密發(fā)送,攻擊者同樣無法竊取合法用戶的身份信息。
(2)抗重放攻擊。抗重放攻擊是指在攻擊者無法有效猜測(cè)出認(rèn)證信息的情形下,通過截獲其中的認(rèn)證報(bào)文,重復(fù)轉(zhuǎn)發(fā)該報(bào)文,從而導(dǎo)致合法用戶認(rèn)證受到影響[11]。本文設(shè)計(jì)的協(xié)議中添加了系統(tǒng)時(shí)間信息,接收端在收到信息進(jìn)行解密后會(huì)判斷系統(tǒng)時(shí)間,若系統(tǒng)時(shí)間不在合理的時(shí)間差內(nèi)則不對(duì)該報(bào)文進(jìn)行響應(yīng)。因此,協(xié)議可以有效地抵抗重放攻擊。
(3)抗中間人攻擊。根據(jù)IBE 密碼體制的特點(diǎn),用戶ID 對(duì)應(yīng)了唯一一對(duì)公私鑰[12],通過公鑰驗(yàn)簽可以確定是否為特定用戶的私鑰簽名。在注冊(cè)階段中間人不能以合法的身份重復(fù)進(jìn)行注冊(cè),因此也不能偽裝為認(rèn)證中的任一身份。
(4)抗假冒攻擊。由于衛(wèi)星回復(fù)的第一包報(bào)文是用用戶的公鑰加密的,而攻擊者無法得知用戶的私鑰,所以無法完成假冒攻擊。衛(wèi)星使用公共參數(shù)和用戶ID 計(jì)算得到用戶A 的公鑰與PA一致,那么就建立對(duì)該身份ID 的信任。當(dāng)用戶A 使用其私鑰進(jìn)行驗(yàn)簽成功,并返回正確信息給衛(wèi)星S 時(shí),就說明用戶A 為合法用戶。
(5)前向安全性。由于協(xié)議使用了基于身份的密鑰協(xié)商形式,超過有效時(shí)長(zhǎng)T 之后需要進(jìn)行再次密鑰協(xié)商得到新的會(huì)話密鑰,因此可以保證會(huì)話密鑰的前向安全性。
本文的認(rèn)證方案使用了對(duì)稱和非對(duì)稱混合密碼算法,用私鑰簽名,從而保證消息來源的唯一性和真實(shí)性,實(shí)現(xiàn)用戶終端與衛(wèi)星節(jié)點(diǎn)的雙向身份認(rèn)證。使用認(rèn)證服務(wù)系統(tǒng)的公鑰對(duì)上報(bào)的信息進(jìn)行加密,保護(hù)了用戶身份信息。并在上報(bào)的報(bào)文中添加系統(tǒng)時(shí)間信息,可以抵抗重放攻擊。當(dāng)用戶進(jìn)行認(rèn)證時(shí),根據(jù)協(xié)議可以在保證用戶隱私的前提下實(shí)現(xiàn)認(rèn)證。
本文在分析衛(wèi)星通信特點(diǎn)和安全認(rèn)證需求的基礎(chǔ)上,設(shè)計(jì)了一種基于CL-PKC 密碼體制的身份認(rèn)證協(xié)議,避免了PKI 證書機(jī)制帶來的存儲(chǔ)和通信上的開銷,同時(shí)有效保護(hù)了用戶的身份信息,實(shí)現(xiàn)了衛(wèi)星節(jié)點(diǎn)與用戶之間的安全認(rèn)證和通信。用戶端和衛(wèi)星節(jié)點(diǎn)在沒有獲取接收方證書的前提下,只要擁有接收方的身份ID 和系統(tǒng)參數(shù),就可以計(jì)算出接收方的公鑰,向接收方發(fā)送由其公鑰加密的信息。當(dāng)接收方接到消息后使用其私鑰解密密文信息,在這一過程中也不需要獲取證書。因此,該協(xié)議的安全性取決于IBE 密碼系統(tǒng)的安全性。在實(shí)現(xiàn)認(rèn)證的同時(shí),也產(chǎn)生了協(xié)商會(huì)話密鑰,認(rèn)證結(jié)束后認(rèn)證雙方會(huì)使用協(xié)商密鑰對(duì)通信內(nèi)容進(jìn)行對(duì)加解密處理,從而保證通信的安全性。