譚 覓, 王文勝
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
會(huì)話初始協(xié)議(SIP)是IETF規(guī)定的一種基于IP的應(yīng)用層信令控制協(xié)議,采用文本編碼,結(jié)構(gòu)簡單,使用靈活且擴(kuò)展性強(qiáng)。然而SIP應(yīng)用于完全開放的Internet環(huán)境,其協(xié)議本身也沒有明確規(guī)定的安全機(jī)制,所以 SIP的安全性并不能得到保證[1]。目前大多數(shù)SIP應(yīng)用中,數(shù)據(jù)包以明文傳輸,可能遭到攻擊者的惡意修改,遭受注冊(cè)劫持、消息篡改和非法監(jiān)聽等各種形式的攻擊,其原因在于沒有一種可靠的機(jī)制來保證SIP應(yīng)用的身份認(rèn)證和消息的機(jī)密性。
文獻(xiàn)[2]提出了一種應(yīng)用層的安全策略,改變了SIP頭部Call-ID的生成方法,需要對(duì)現(xiàn)有協(xié)議棧進(jìn)行修改,且對(duì)SIP消息采用非對(duì)稱加密,影響了加解密速率。文獻(xiàn)[3]提出了一種SIP輕量級(jí)雙向認(rèn)證機(jī)制,采用AES對(duì)稱加密算法,提高了加解密速率。但是該方法對(duì)HTTP摘要認(rèn)證中的digest-challenge字段進(jìn)行了修改,需要對(duì)現(xiàn)有設(shè)備進(jìn)行改進(jìn),增加了實(shí)現(xiàn)的難度。文獻(xiàn)[4-5]提出了采用S/MIME的機(jī)制實(shí)現(xiàn)對(duì)SIP消息體的加密,實(shí)現(xiàn)了端到端的安全保護(hù),然而此方法對(duì)SIP消息頭并沒有提供任何安全措施。
鑒于以上方案在SIP用戶認(rèn)證和信令機(jī)密性等方面存在的不足,提出了一種改進(jìn)的SIP信令安全機(jī)制。該機(jī)制實(shí)現(xiàn)了用戶注冊(cè)階段的雙向認(rèn)證,且對(duì)于后續(xù)的SIP信令消息采取對(duì)稱加密。在建立會(huì)話之前的用戶認(rèn)證階段,客戶端和注冊(cè)服務(wù)器之間首先建立TLS連接。用戶注冊(cè)完成后,對(duì)于會(huì)話建立時(shí)的信令,客戶端與服務(wù)器之間仍然采用之前的TLS通道,服務(wù)器之間則通過IPSec提供保護(hù)。因此,信令的所有交互流程的機(jī)密性都得到了保證,且對(duì)于信令消息都使用的是對(duì)稱加密算法,使得SIP信令加解密速率和安全性都得到了提高。
用戶注冊(cè)階段首先要解決的就是身份認(rèn)證。目前大部分SIP應(yīng)用采用HTTP摘要認(rèn)證對(duì)SIP用戶進(jìn)行驗(yàn)證。然而,使用HTTP摘要認(rèn)證的客戶端不能認(rèn)證服務(wù)器并且對(duì)消息完整性的保護(hù)也不夠充分[3]。為了實(shí)現(xiàn)客戶端對(duì)服務(wù)器的認(rèn)證,必須考慮使用雙向認(rèn)證的機(jī)制。
1.1.1 客戶端對(duì)服務(wù)器的認(rèn)證
為了驗(yàn)證服務(wù)器的合法性,本方法考慮在用戶注冊(cè)開始前,首先建立TLS通道,通過通道建立階段客戶端對(duì)服務(wù)器證書進(jìn)行驗(yàn)證來完成客戶端對(duì)服務(wù)器的認(rèn)證,具體步驟如下:
1)客戶端獲取CA認(rèn)證中心的根證書,服務(wù)器端下載自己的證書。
2)客戶端發(fā)起 TLS連接建立請(qǐng)求,申請(qǐng)對(duì)服務(wù)器進(jìn)行身份驗(yàn)證。
3)服務(wù)器將證書發(fā)送到客戶端,客戶端利用CA的根證書對(duì)服務(wù)器證書進(jìn)行驗(yàn)證。
4)若身份驗(yàn)證通過,則根據(jù) TLS握手協(xié)議的流程繼續(xù)進(jìn)行會(huì)話密鑰協(xié)商。
從上述流程可以看出,SIP客戶端借助TLS協(xié)商中對(duì)于服務(wù)器證書的驗(yàn)證,完成了針對(duì)服務(wù)器的身份認(rèn)證,從而完成了雙向認(rèn)證的第一步。
1.1.2 服務(wù)器對(duì)客戶端的認(rèn)證
在驗(yàn)證了服務(wù)器的合法身份之后, TLS通道此時(shí)已經(jīng)建立,此后服務(wù)器與客戶端之間交互的信令都將受到TLS通道的保護(hù)。下面將完成服務(wù)器對(duì)客戶端的身份認(rèn)證。
該認(rèn)證方法與目前大多數(shù)SIP服務(wù)器對(duì)客戶端采取的認(rèn)證方法一致,即通過共享密鑰[6],使用挑戰(zhàn)響應(yīng)(Challenge-Response)機(jī)制完成對(duì)用戶的身份認(rèn)證,具體步驟如下:
1)客戶端發(fā)送 REGISTER消息到服務(wù)器,請(qǐng)求進(jìn)行用戶注冊(cè)。
2)服務(wù)器返回401 Unauthorized消息,指明用于驗(yàn)證的nonce,realm和摘要算法。
3)客戶端將自己的username,與服務(wù)器共享的password,以及從收到的 401消息中的 nonce和realm,根據(jù)其指定的算法計(jì)算出一個(gè)摘要認(rèn)證消息返回給服務(wù)器。
4)服務(wù)器收到客戶端返回的響應(yīng)消息,在數(shù)據(jù)庫中查找共享密鑰,然后檢查返回的response值是否正確,如果正確,則認(rèn)定為合法用戶,并將其注冊(cè)到該服務(wù)器上。
通過以上兩個(gè)步驟,在沒有改變SIP現(xiàn)有格式和信令交互流程的情況下,完成了雙向認(rèn)證,即提高了安全性,又沒有增加過多的開銷,在服務(wù)器對(duì)客戶端的認(rèn)證階段,信令交互在TLS通道中完成的,所以攻擊者不能通過截取SIP頭部字段進(jìn)行離線猜測(cè)強(qiáng)行破解密碼。
在完成SIP用戶的注冊(cè)之后,需要對(duì)會(huì)話兩端的IP地址、端口、媒體編碼格式和碼率等參數(shù)進(jìn)行協(xié)商,以建立RTP媒體流[7]。目前的SIP應(yīng)用中,大多數(shù)情況下沒有采取有效的安全機(jī)制對(duì)信令進(jìn)行保護(hù),使得客戶端可能受到服務(wù)器重定向攻擊和INVITE請(qǐng)求偽造攻擊等安全威脅,其根本原因是SIP信令的機(jī)密性無法保證。為了解決這一問題,本方法考慮對(duì)建立會(huì)話的信令進(jìn)行加密,由于SIP代理服務(wù)器需要對(duì)應(yīng)用層數(shù)據(jù)進(jìn)行解析,不能采取端到端的加密方式,所以其過程又分為客戶端到服務(wù)器的加密以及服務(wù)器之間的加密兩個(gè)階段。
1.2.1 客戶端到服務(wù)器
客戶端和服務(wù)器之間的信令交互,利用用戶注冊(cè)階段建立的TLS通道進(jìn)行加密保護(hù)。這樣既避免了再次協(xié)商加密通道造成的時(shí)間和資源的浪費(fèi),又保證了信令交互的機(jī)密性。
1.2.2 服務(wù)器到服務(wù)器
由于服務(wù)器之間的信令交互沒有采用任何安全機(jī)制,所以必須對(duì)其進(jìn)行加密保護(hù),考慮使用IPSec。相對(duì)于遍布Internet的SIP終端,代理服務(wù)器數(shù)量比較少、分布比較集中[8],且大多數(shù)情況下由運(yùn)營商進(jìn)行統(tǒng)一管理,所以考慮采用預(yù)共享密鑰實(shí)現(xiàn)代理服務(wù)器之間的身份認(rèn)證,預(yù)共享密鑰事先在各代理服務(wù)器上進(jìn)行手動(dòng)配置,密鑰協(xié)商采用IKE協(xié)議,其第一階段采用主模式預(yù)共享密鑰發(fā)起身份認(rèn)證,加密方式使用ESP的傳輸模式,Hash函數(shù)為Sha1,加密算法采用3des的對(duì)稱加密方式。
為了驗(yàn)證上述方法的可行性,在 Linux環(huán)境下搭建仿真環(huán)境??蛻舳撕头?wù)器均運(yùn)行在 CPU為2.4 GHz,512 M內(nèi)存,操作系統(tǒng)為Ubuntu10.10的PC平臺(tái)上。客戶端運(yùn)行Sipp模擬UAC發(fā)起注冊(cè)、建立會(huì)話和 UAS響應(yīng)會(huì)話的功能,服務(wù)器運(yùn)行Opensips模擬SIP注冊(cè)服務(wù)器、代理服務(wù)器,使用Openvpn協(xié)商建立TLS通道,使用IPSec-Tools實(shí)現(xiàn)IPSec加密。
配置Opensips對(duì)用戶進(jìn)行HTTP摘要認(rèn)證,啟動(dòng)Openvpn建立客戶端與服務(wù)器之間的TLS通道,在客戶端使用Sipp發(fā)起注冊(cè),使用Tcpdump抓包進(jìn)行分析,記錄完成整個(gè)注冊(cè)流程所需時(shí)間,與沒有建立TLS通道的情況進(jìn)行比較。仿真場(chǎng)景如圖1所示。
Tcpdump抓包記錄如圖2所示,通過抓包記錄可以看出,采用加密機(jī)制之后,交互的SIP注冊(cè)信令均為Openvpn建立的TLS通道中傳輸?shù)拿芪?,所以保證了其機(jī)密性。
圖2 未加密和采用TLS通道的注冊(cè)信令交互流程
通過實(shí)驗(yàn)數(shù)據(jù)可知,未建立TLS時(shí),注冊(cè)需要0.005 4 s,采用TLS加密之后,完成一次注冊(cè)所需的時(shí)間為0.009 9 s,比沒有采用TLS增加了83%,但仍然在可以接受的范圍。
首先如 2.1節(jié)所述,在兩臺(tái)服務(wù)器上注冊(cè)兩個(gè)不同的用戶,并在服務(wù)器之間使用IPSec-Tools實(shí)現(xiàn)IPSec的ESP傳輸模式,在兩個(gè)客戶端分別運(yùn)行Sipp為UAC和UAS模式,由UAC發(fā)起INVITE請(qǐng)求,UAS回應(yīng)200OK以模擬一次會(huì)話的建立??蛻舳伺c服務(wù)器間為之前建立的TLS通道,服務(wù)器間為IPSec加密。仿真場(chǎng)景如圖3所示。
Tcpdump抓包記錄如圖4所示,終端與服務(wù)器之間均為TLS通道中的加密數(shù)據(jù)包,服務(wù)器之間均為ESP數(shù)據(jù)包,保證了會(huì)話建立階段信令的機(jī)密性,可以使其免受安全威脅。
通過實(shí)驗(yàn)數(shù)據(jù)可知,未采用安全機(jī)制的會(huì)話建立時(shí)間為0.008 5 s,采用上述安全機(jī)制后會(huì)話建立時(shí)間為0.023 1 s,雖然增幅較大,但其絕對(duì)值仍然較小,對(duì)用戶影響不大,證明該機(jī)制可行。
采用本文提出的針對(duì)SIP信令的安全機(jī)制,在用戶注冊(cè)階段,完成SIP客戶端與服務(wù)器之間的雙向認(rèn)證,且保證了注冊(cè)信令的機(jī)密性,比現(xiàn)有機(jī)制更加安全,可以防止服務(wù)器偽裝和注冊(cè)劫持等攻擊行為。在會(huì)話建立階段,通過TLS通道和IPSec的ESP傳輸模式的共同使用,實(shí)現(xiàn)了會(huì)話建立流程的全程加密,且加解密過程對(duì)SIP協(xié)議解析透明。總而言之,采用本文提出的方法,保證了SIP用戶注冊(cè)和會(huì)話建立階段的安全,且沒有對(duì)現(xiàn)有的SIP格式和網(wǎng)絡(luò)架構(gòu)進(jìn)行任何改變,并采用對(duì)稱加密算法,造成的開銷在可以接受的范圍之內(nèi),所以該方法可行。在仿真實(shí)驗(yàn)時(shí)發(fā)現(xiàn),用于TLS通道協(xié)商的時(shí)間遠(yuǎn)遠(yuǎn)大于TLS和IPSec用于數(shù)據(jù)加解密所需的時(shí)間,所以可以結(jié)合SIP的特點(diǎn)進(jìn)行進(jìn)一步研究,以縮短通道協(xié)商的時(shí)間。
[1] ARKKO J, TORVINEN V, CAMARILLO G. Security Mechanism Agreement for the Session Initiation Protocol (SIP)[S].[s.l.]: IETF,2003.
[2] 隆昭華,李明哲.基于應(yīng)用層的 SIP安全機(jī)制設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì), 2010,31(15):3350-3353.
[3] 崔濤,高強(qiáng),何寶宏.SIP協(xié)議的輕量級(jí)雙向認(rèn)證技術(shù)研究[J].電子技術(shù)應(yīng)用,2008(09):125-128.
[4] Kumiko Ono, Shinya Tachimoto. SIP Signaling Security for End-to-end Communication[C].USA:IEEE Conference Publications,2003:1042-1046.
[5] 婁穎. SIP協(xié)議安全機(jī)制研究[J]. 廣東通信技術(shù), 2004,24(04):5-8.
[6] 李婧,李雪,胡浩.基于 SIP的安全認(rèn)證機(jī)制的研究與改進(jìn)[J].計(jì)算機(jī)工程,2009,35(02):162-164.
[7] ROSENBERG J, SCHULZRINNE H, CAMARILLO G. SIP:Session Initiation Protocol[S].[s.l.]:IETF,2002.
[8] 儲(chǔ)泰山,潘雪增.SIP安全模型研究及實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2004,12(21):101-103.
[9] 王嘯,周淵平. VoIP系統(tǒng)中 NAT穿越技術(shù)的研究與實(shí)現(xiàn)[J].通信技術(shù),2010,43(10):105-107.
[10] 陳偉,鮑慧.IMS網(wǎng)絡(luò)拓?fù)潆[藏及其加密算法的研究[J].通信技術(shù),2008,41(03):85-87.
[11] 衛(wèi)亞兵,蘇宏,郝平軟交換系統(tǒng)中的 SIP信令安全[J].信息安全與通信保密,2005(10):76-79.