黃朝陽,陳金木
(廈門海洋學(xué)院信息工程學(xué)院 福建 廈門 361100)
身份認(rèn)證協(xié)議作為網(wǎng)絡(luò)安全的首道屏障,其重要性不言而喻。隨著網(wǎng)絡(luò)應(yīng)用的增長,特別是自新型冠狀病毒肺炎疫情暴發(fā)以來,帶來了遠(yuǎn)程辦公等工作方式的轉(zhuǎn)變,全球即時(shí)通信應(yīng)用程序和服務(wù)的使用呈指數(shù)級增長,導(dǎo)致基于SIP 協(xié)議的即時(shí)通信服務(wù)的需求與日俱增。
SIP 協(xié)議(session initialization protocol)具有靈活、開放和可擴(kuò)展的特性,為多種即時(shí)通信業(yè)務(wù)提供完整的會(huì)話創(chuàng)建和會(huì)話更改服務(wù)。因此,SIP 協(xié)議的安全性對于即時(shí)通信的安全起著至關(guān)重要的作用。SIP 協(xié)議一般工作在不安全的公共信道環(huán)境。而且傳統(tǒng)SIP 的原始身份認(rèn)證機(jī)制是基于HTTP 摘要的,其強(qiáng)度不足以提供針對各種流行攻擊所需的安全性,這一先天缺陷使它很容易受到攻擊[1]?,F(xiàn)有的SIP 協(xié)議中所使用的身份認(rèn)證機(jī)制可能被攻擊者繞過,導(dǎo)致未經(jīng)授權(quán)的訪問和信息泄露需要安全且高效的SIP 認(rèn)證和密鑰協(xié)商協(xié)議來解決即時(shí)通信的安全要求。設(shè)計(jì)一種可證安全且高效的SIP 身份認(rèn)證協(xié)議具有緊迫性和重要意義。
近年來對于SIP 協(xié)議的研究和改良層出不窮,為了提高傳統(tǒng)SIP 協(xié)議的安全性,先后引入了多種安全機(jī)制,如Hash 函數(shù)、公鑰密碼體制、雙線性對映射、橢圓曲線密碼技術(shù)、混沌映射、生物特征和智能卡等。但各種研究表明:公鑰密碼體制面臨PKI 體系證書管理復(fù)雜的困難、雙線性對映射在效率上的缺陷明顯、結(jié)合生物特征和智能卡的認(rèn)證協(xié)議則可能出現(xiàn)效率明顯下降等問題。而引入Hash 函數(shù)、橢圓曲線密碼技術(shù)或混沌映射的安全、可擴(kuò)展和輕量級的SIP 身份認(rèn)證協(xié)議正成為當(dāng)前研究熱點(diǎn)。
在相同的安全級別上,橢圓曲線密碼(elliptic curve cryptography)在密鑰長度上比RSA 小很多,能有效降低計(jì)算和存儲(chǔ)的成本開銷。鑒于ECC 的明顯優(yōu)勢,文獻(xiàn)[2]提出了基于ECC 的SIP 認(rèn)證協(xié)議,并聲稱其有更好的安全性和效率。文獻(xiàn)[3]在2009 年證明了文獻(xiàn)[2]協(xié)議對已知的Denning-Sacco攻擊、Stolen-Verifier 攻擊和離線口令猜測攻擊是不安全的,并提出了改良的基于ECDH(elliptic curve diffie–hellman key exchange)的身份認(rèn)證協(xié)議。2011 年,文獻(xiàn)[4]又揭示了文獻(xiàn)[3]的協(xié)議不能抵抗內(nèi)部人員攻擊和離線口令猜測攻擊。文獻(xiàn)[5]于2012 年指出文獻(xiàn)[3]協(xié)議無法抵御Stolen-Verifier攻擊和離線口令猜測攻擊,并提供了一種改進(jìn)的方案。然而,次年文獻(xiàn)[6]又證明了文獻(xiàn)[5]協(xié)議仍然受到離線口令猜測攻擊和冒充服務(wù)攻擊威脅,并給出了一種增強(qiáng)方案。
匿名認(rèn)證是指用戶在證明自己身份合法性的同時(shí)能夠確保自己身份信息、位置信息的匿名性。在身份認(rèn)證過程中保護(hù)用戶匿名性是當(dāng)下身份認(rèn)證技術(shù)的發(fā)展趨勢。2015 年,文獻(xiàn)[7]在文獻(xiàn)[6]工作的基礎(chǔ)上提出了一種基于橢圓曲線密碼技術(shù)的匿名SIP 認(rèn)證協(xié)議,聲稱可以很好地保護(hù)用戶隱私。文獻(xiàn)[8]研究發(fā)現(xiàn)該協(xié)議不能抵御內(nèi)部人員攻擊,并在此基礎(chǔ)上提出一種更為安全的SIP 認(rèn)證協(xié)議,聲稱協(xié)議可以抵御各種已知攻擊,同時(shí)比其他相關(guān)協(xié)議具有更低的計(jì)算成本。2018 年,文獻(xiàn)[9]研究發(fā)現(xiàn)文獻(xiàn)[8]協(xié)議也存在無法保護(hù)用戶匿名性的安全漏洞。
本文深入研究了文獻(xiàn)[8]提出的SIP 協(xié)議,在分析其安全漏洞的基礎(chǔ)上通過改進(jìn)認(rèn)證消息構(gòu)成,提出一種基于ECC 的更為安全高效的SIP 協(xié)議。新協(xié)議秉承ECC 安全高效的特征,采用標(biāo)準(zhǔn)的挑戰(zhàn)/應(yīng)答信息交互模式,運(yùn)算量小的優(yōu)勢明顯。通過對新協(xié)議的BAN 邏輯分析、非形式化安全分析證明其更為安全;通過性能比較分析展示其在效率方面的實(shí)用性。
本文所用符號如表1 所示。
表1 協(xié)議中的符號標(biāo)記與含義
文獻(xiàn)[8]協(xié)議的認(rèn)證階段在用戶端所構(gòu)造生成的登錄請求消息M_request 存在設(shè)計(jì)缺陷,敵手可以根據(jù)在公共信道上竊取的登錄請求消息來驗(yàn)證自己對用戶賬號的猜測,從而非法獲得用戶U的賬號IDi這一關(guān)鍵信息;該協(xié)議的認(rèn)證階段在服務(wù)器端所構(gòu)造生成的挑戰(zhàn)消息M_challenge 同樣存在設(shè)計(jì)缺陷,這一缺陷將使敵手可以根據(jù)已掌握的用戶賬號IDi和公共信道上竊取的登錄請求消息輕易偽造出可以通過用戶驗(yàn)證的挑戰(zhàn)消息M_challenge,從而成功實(shí)施冒充服務(wù)器攻擊。文獻(xiàn)[8]協(xié)議的注冊及認(rèn)證階段細(xì)節(jié)如圖1 所示,針對文獻(xiàn)[8]協(xié)議的安全漏洞分析如下。
圖1 文獻(xiàn)[8]協(xié)議的注冊及認(rèn)證階段細(xì)節(jié)
圖2 針對文獻(xiàn)[8]協(xié)議實(shí)施冒充服務(wù)器攻擊的細(xì)節(jié)
敵手Uatt可以通過以下方法非法獲取用戶U的賬號信息IDi。Uatt在公共信道上竊取的U登錄請求消息M_request = {B, HID,C},計(jì)算HID⊕B= (IDi⊕T)⊕(T⊕A) =IDi⊕A。繼而,Uatt使用一個(gè)猜測的用戶賬號信息IDi′計(jì)算出A′ = HID⊕B⊕IDi′,然 后Uatt通 過 驗(yàn) 證 等 式hash(IDi′ ||A′) =C是否成立來判斷所猜測用戶賬號信息IDi′的正確性。Uatt可以變換猜測新的IDi′′,不斷驗(yàn)證上述等式直到找到正確的用戶賬號信息IDi為止。在獲取用戶U的賬號信息IDi后,Uatt可以通過下列步驟實(shí)施冒充服務(wù)器攻擊。
根據(jù)上述分析,敵手Uatt可以獲取合法注冊用戶的賬號信息。因此,文獻(xiàn)[8]協(xié)議無法保護(hù)用戶匿名性。由于敵手可以假冒合法服務(wù)器騙取用戶的認(rèn)證,這意味著文獻(xiàn)[8]協(xié)議無法實(shí)現(xiàn)雙向認(rèn)證。
為了克服文獻(xiàn)[8]協(xié)議所暴露的安全問題,本文提出一種更為安全高效的SIP 認(rèn)證協(xié)議。協(xié)議所使用的橢圓曲線離散對數(shù)難題(ECDLP)以及單向hash 函數(shù)是其可靠的安全基石[10]。
協(xié)議由用戶注冊、雙向認(rèn)證和口令更新3 個(gè)階段構(gòu)成。協(xié)議中所用符號如表1 所示。
1) 用戶U選定自己的賬號IDi、口令PWi和私鑰Kpri_U,計(jì)算出C= Hash(PWi|| Kpri_U),U通過安全信道向服務(wù)器S發(fā)送向注冊請求消息{IDi,C}。
2)S收到U的消息{IDi,C}后,結(jié)合自己的私鑰Kpri_S計(jì)算出W= Hash(IDi||C) ⊕C⊕Hash(Kpri_S)。S于本地?cái)?shù)據(jù)庫中寫入W。新協(xié)議注冊階段的細(xì)節(jié)如圖3 所示。
圖3 新協(xié)議注冊階段的細(xì)節(jié)
圖4 新協(xié)議登錄和雙向認(rèn)證階段的細(xì)節(jié)
用戶U與服務(wù)器S通過以下步驟實(shí)現(xiàn)雙向認(rèn)證及密鑰協(xié)商。
1) 用戶U輸入自己的賬號IDi,口令PWi,計(jì)算出TE = Hash( IDi|| Hash( PWi|| Kpri_U) )。U生成高熵隨機(jī)數(shù)RU,并計(jì)算A=RU·p,V= Hash (A|| Hash( PWi⊕ Kpri_U) )。U向S發(fā)送登錄請求消息M_request ={ TE,A,V}。
數(shù)據(jù)庫中的W,口令更新完成。
新協(xié)議在認(rèn)證階段巧妙設(shè)計(jì)了在用戶端所生成的登錄請求消息M_request 格式,讓用戶賬號及其伴隨信息都置于hash 函數(shù)的保護(hù)之下,規(guī)避了用戶賬號信息泄露的可能性,真正實(shí)現(xiàn)用戶匿名性;同時(shí),新協(xié)議改進(jìn)了服務(wù)器端挑戰(zhàn)消息M_challenge的組成部分Auth_s的格式,使敵手無法通過在公共信道上竊取的消息計(jì)算出Auth_s*,有效阻止敵手通過偽造服務(wù)器的挑戰(zhàn)消息實(shí)施冒充服務(wù)器攻擊。新協(xié)議增加一個(gè)服務(wù)器端所生成的高熵隨機(jī)數(shù)RS2,以保證后續(xù)消息的新鮮性,有效防止重播攻擊。
Burrows、Abadi 和Needham 于1989 年 提 出BAN 邏輯分析方法具有里程碑式的意義,它是第一個(gè)將形式化手段用于驗(yàn)證密碼協(xié)議安全性的分析方法,作為分析密碼協(xié)議一種公認(rèn)的重要工具而廣為使用[11]。它在用戶設(shè)置的理想假設(shè)和協(xié)議步驟的前提下,對協(xié)議能否在沒有冗余信息的條件下實(shí)現(xiàn)安全認(rèn)證的目的,以及協(xié)議中的加密信息是否在明文傳輸時(shí)不會(huì)影響協(xié)議的安全性這兩個(gè)問題給出解答[12]。BAN 邏輯分析過程所使用的符號與含義如表2 所示。
表2 BAN 邏輯的符號與含義
BAN 邏輯是一種基于信仰的內(nèi)涵邏輯,它不計(jì)量由于協(xié)議的真實(shí)實(shí)現(xiàn)額外帶來的安全問題,也不考慮由于加密體制的安全缺陷可能帶來的協(xié)議缺陷,所以BAN 邏輯存在一定的局限性。但是,在協(xié)議設(shè)計(jì)階段使用BAN 邏輯分析可盡早規(guī)避潛在的設(shè)計(jì)缺陷。
下面在假定密碼算法是安全的前提下,使用BAN 邏輯分析方法對協(xié)議本身結(jié)構(gòu)的安全性展開形式化證明。
本協(xié)議的理想化形式為:
本文協(xié)議滿足下列基本假設(shè):
假設(shè)協(xié)議所設(shè)置的參數(shù)和流程是正確的,那么本文協(xié)議必須滿足下列安全目標(biāo):
分析推理過程如下。
由P2 和消息新鮮法則R4 可得:
由式(1)、式(2)和臨時(shí)值驗(yàn)證法則R2 可得:
由式(3)和信念法則R5 可得:
于是,G1 得以證明。
由式(4)和P5,以及管轄權(quán)法則R3 可得:
于是,G2 得以證明。
由P1 和消息新鮮法則R4 可得:
由式(6)、式(7)和臨時(shí)值驗(yàn)證法則R2 可得:
由式(8)和信念法則R5 可得:
于是,G3 得以證明。
由式(9)和P6,以及管轄權(quán)法則R3 可得:
于是,G4 得以證明。
通過上述BAN 邏輯形式化證明,本協(xié)議的4 個(gè)安全目標(biāo)全部得以證實(shí)。所以,在理想化的環(huán)境下,本協(xié)議可以實(shí)現(xiàn)真實(shí)有效的雙向認(rèn)證和會(huì)話密鑰協(xié)商。
圍繞幾個(gè)相關(guān)協(xié)議[2-3,5,7-8]所暴露出來的安全問題,對本協(xié)議的一些重要的安全目標(biāo)開展啟發(fā)式安全分析。
1) 抵御重播攻擊
在本協(xié)議框架內(nèi),假定某敵手Uatt偽裝成合法用戶U向服務(wù)器S重播登錄請求消息M_request ={TE,A,V},S將返回挑戰(zhàn)消息M_challenge ={realm,B, Auth_s,RS2}。但Uatt因不掌握RU和C從而無法偽造出Auth_U進(jìn)行應(yīng)答,從而無法通過S的驗(yàn)證。同時(shí),由于隨機(jī)數(shù)RU和RS2的新鮮性,Uatt如果通過重播S的挑戰(zhàn)消息M_challenge ={realm,B, Auth_s,RS2}來偽裝成合法S時(shí),根本無法通過U方Auth_s′ = Auth_s這一等式驗(yàn)證。所以協(xié)議可以抵御重播攻擊。
2) 保護(hù)用戶匿名性
在新協(xié)議的雙向認(rèn)證實(shí)施過程中,公共信道上傳輸?shù)挠脩糍~號信息以hash 函數(shù)散列值的形式TE =Hash(IDi|| Hash( PWi|| Kpri_U) )存 在。 根 據(jù)hash 函數(shù)的單向安全特性,敵手Uatt無法從截取的TE 中計(jì)算獲取用戶U的賬號信息IDi。與用戶賬號信息IDi同時(shí)存在于TE 中的伴隨信息是C=Hash( PWi|| Kpri_U),協(xié)議設(shè)計(jì)了用戶在注冊階段通過安全信道發(fā)送C給服務(wù)器S,C也不以明文的形式存儲(chǔ)于S的數(shù)據(jù)庫中,故如果敵手Uatt使用本文1.1 節(jié)所述方法來猜測并驗(yàn)證用戶賬號信息必然失敗。所以新協(xié)議可以實(shí)現(xiàn)保護(hù)用戶匿名性的目標(biāo)。
3) 抵御冒充服務(wù)器攻擊
敵手Uatt想成功冒充服務(wù)器S騙取用戶U的認(rèn)證,必須能生成正確的挑戰(zhàn)消息M_challenge ={realm,B, Auth_s,RS2},但因Uatt無法獲取S的私鑰Kpri_S和S本地?cái)?shù)據(jù)庫所存儲(chǔ)的W,故不能計(jì)算得出C′ ,當(dāng)然也就無法生成正確的挑戰(zhàn)消息要件Auth_s。所以,Uatt無法成功冒充服務(wù)器S騙取用戶U的認(rèn)證。
4) 抵御內(nèi)部人員攻擊
在注冊階段,用戶的口令以密文C= Hash( PWi|| Kpri_U)的形式在安全信道上傳輸,服務(wù)器數(shù)據(jù)庫中所存儲(chǔ)W= Hash( IDi||C) ⊕C⊕Hash( Kpri_S)也非明文形式。在沒有掌握U口令PWi和私鑰Kpri_U的前提下,敵手Uatt無法在多項(xiàng)時(shí)間內(nèi)把它們同時(shí)猜中,更無法使用W來驗(yàn)證這一猜測。并且,由于hash 函數(shù)的單向安全特性,從C中計(jì)算得出U的口令PWi也是行不通的。所以,內(nèi)部人員無法從用戶的注冊信息中獲取U的口令PWi。內(nèi)部人員攻擊對本協(xié)議無效。
5) 抵御身份假冒攻擊
如前1)所證明,重播攻擊已無法實(shí)施。敵手Uatt偽裝成U實(shí)現(xiàn)身份假冒攻擊的前提是能生成正確的登錄請求消息M_request ={TE,A,V}和應(yīng)答消息M_response = {realm, Auth_U},但并不掌握的U的賬號IDi、口令PWi和私鑰Kpri_U,根本無法計(jì)算出TE,生成正確的C和V則更為困難,根本偽造不出正確的M_request 和M_response 要件Auth_U,從而無法通過S的身份認(rèn)證。所以,身份假冒攻擊無法實(shí)施。
6) 抵御離線口令猜測攻擊
敵手隨機(jī)猜測用戶的口令值,然后使用非法獲取的消息來驗(yàn)證這一猜測,所以離線口令猜測攻擊往往最具有破壞性。假定Uatt在公共信道上截取認(rèn)證過程的所有交互消息{TE,A,V,B, Auth_s,RS2,Auth_U}。然后Uatt猜測一個(gè)口令PWi′ ,但在未掌握用戶私鑰Kpri_U的前提下,顯然無法使用TE或V驗(yàn)證所猜測口令PWi′的正確性。所以,離線口令猜測攻擊對本協(xié)議無效。
7) 實(shí)現(xiàn)雙向認(rèn)證同時(shí)協(xié)商一次性會(huì)話密鑰
根據(jù)以上分析,本協(xié)議在安全性上填補(bǔ)了相關(guān)協(xié)議的常見漏洞,同時(shí)展現(xiàn)出較強(qiáng)的保護(hù)用戶匿名性和雙向認(rèn)證功能,可以協(xié)商生成一次性會(huì)話密鑰,具有較高的安全性能。
效率比較主要考量各相關(guān)協(xié)議在雙向認(rèn)證階段執(zhí)行橢圓曲線點(diǎn)乘、切比雪夫多項(xiàng)式、對稱加密/解密、模逆運(yùn)算和hash 運(yùn)算所需的計(jì)算開銷。與上述運(yùn)算相比較而言,字符串連接操作和異或運(yùn)算所需耗時(shí)要小得多,不列入各協(xié)議的計(jì)算開銷比較[13]。用戶注冊和口令更新為非經(jīng)常性操作,其計(jì)算開銷也不計(jì)算在內(nèi)[14-15]。
為了更準(zhǔn)確地評估各相關(guān)協(xié)議在雙向認(rèn)證階段的計(jì)算效率,在運(yùn)行平臺(tái)Windows 10、Intel Core i7-3 770、16GB RAM,matlab 仿真環(huán)境中測試ECC 點(diǎn)乘、切比雪夫多項(xiàng)式、模逆運(yùn)算、AES-128和SHA-3 運(yùn)算耗時(shí)。每種密碼操作均運(yùn)行10 000次后,統(tǒng)計(jì)所需耗時(shí)的算術(shù)平均值如表3 所示。相關(guān)協(xié)議和本文新協(xié)議在雙向認(rèn)證階段的主要計(jì)算開銷及交互次數(shù)比較如表4 所示。
表3 各種密碼運(yùn)算所需耗時(shí)的算術(shù)平均值 ms
表4 效率比較
表中,TCP為計(jì)算一次切比雪夫多項(xiàng)式;TPM為執(zhí)行一次橢圓曲線點(diǎn)乘;TSED為執(zhí)行一次對稱加密/解密;TINV為執(zhí)行一次模逆運(yùn)算;TH為執(zhí)行一次hash 運(yùn)算。
從表4 可知,本協(xié)議的總計(jì)算開銷為4TPM+10TH,總耗時(shí)為32.716 8 ms,與文獻(xiàn)[19]協(xié)議基本持平,并明顯少于其他相關(guān)協(xié)議。本協(xié)議展現(xiàn)出更高的計(jì)算效率。各相關(guān)協(xié)議在雙向認(rèn)證階段所需總交互次數(shù)都是3 次,無差別。各相關(guān)協(xié)議認(rèn)證階段的主要運(yùn)算總耗時(shí)比較如圖5 所示。
圖5 認(rèn)證階段的主要運(yùn)算總耗時(shí)比較
本協(xié)議與其他幾個(gè)相關(guān)協(xié)議的安全特性對比如表5 所示。文獻(xiàn)[8]協(xié)議無法抵御冒充服務(wù)器攻擊,無法保護(hù)用戶匿名性,無法真正實(shí)現(xiàn)雙向認(rèn)證。文獻(xiàn)[17-19]未給部分安全特性的分析結(jié)果。本文協(xié)議克服了文獻(xiàn)[8]協(xié)議的安全缺陷,能抵御多種常見攻擊,提供用戶匿名性保護(hù)和前向安全性,可以真正實(shí)現(xiàn)雙向認(rèn)證,展示出比文獻(xiàn)[17-19]更高的安全性能。文獻(xiàn)[16]雖然也可以抵御各種已知攻擊,但它在認(rèn)證過程中所使用的橢圓曲線點(diǎn)乘點(diǎn)運(yùn)算達(dá)9 次之多,明顯增加了運(yùn)算總用時(shí)。根據(jù)表4 和表5 的比較分析可知,本協(xié)議在安全性和效率方面的綜合性能優(yōu)于其他相關(guān)協(xié)議。
與所有新興技術(shù)一樣,即時(shí)通信面臨著需要克服安全方面的挑戰(zhàn),以確保該技術(shù)能夠成功大規(guī)模部署。在保密性、完整性和真實(shí)性方面,安全方面的挑戰(zhàn)尤為重要。SIP 協(xié)議有良好的可擴(kuò)展性,在語音通信、視頻通信、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)等領(lǐng)域應(yīng)用前景廣闊,但如果把生物特征、智能卡和公鑰密碼體制等多種安全因素同時(shí)糅合到改良的SIP 協(xié)議中,確實(shí)可以大大提升SIP 協(xié)議的安全性能,但同時(shí)也將給協(xié)議帶來臃腫,執(zhí)行效率退化等問題。
身份認(rèn)證協(xié)議的安全級別越高,它所需的運(yùn)算量、帶寬要求、應(yīng)用成本等各種開銷也大。找尋認(rèn)證協(xié)議的安全性能和開銷的合理平衡點(diǎn)一直是協(xié)議設(shè)計(jì)者的追求目標(biāo)。本協(xié)議使用少量的橢圓曲線點(diǎn)乘運(yùn)算和必要的hash 運(yùn)算,較好地保持了SIP 協(xié)議輕量化的優(yōu)勢,可以認(rèn)為本協(xié)議在認(rèn)證安全性能與認(rèn)證開銷之間獲得一個(gè)較好的平衡點(diǎn),適用于對安全性能有較高要求的應(yīng)用場景:涉及商業(yè)機(jī)密的企業(yè)通信、涉及國家機(jī)密的政府和軍事應(yīng)用、涉及個(gè)人健康信息的醫(yī)療保健行業(yè)以及可能使用SIP 協(xié)議來傳輸銀行交易敏感信息的金融機(jī)構(gòu)。
本文對文獻(xiàn)[8]提出的SIP 認(rèn)證協(xié)議展開深入研究,指出其存在的安全缺陷。通過改良協(xié)議的認(rèn)證消息格式,提出一種新的SIP 認(rèn)證協(xié)議。通過BAN 邏輯形式化分析,以及多種非形式化的安全分析證明,新的SIP 認(rèn)證協(xié)議可以安全地抵御各種已知的安全攻擊,既保護(hù)了用戶匿名性又可以實(shí)現(xiàn)雙向認(rèn)證,具備協(xié)商生成后續(xù)會(huì)話所需一次性密鑰的功能。通過效能比較分析可知,新協(xié)議是高效、安全的,具有較高的實(shí)際應(yīng)用和推廣價(jià)值。