西華師范大學(xué)電子信息工程學(xué)院 張建妮
?
SIP服務(wù)器的安全機制及解決方案
西華師范大學(xué)電子信息工程學(xué)院 張建妮
【摘要】本文首先介紹了SIP服務(wù)器的工作原理,對SIP服務(wù)器在會話保持過程中的不安全因素和現(xiàn)有的安全機制進行了分析和討論,并在此基礎(chǔ)上提出了一種改進型的解決方案,該方案不依賴于客戶端證書和外部安全機制。能夠有效保障SIP協(xié)議的私密性、完整性及身份鑒別。
【關(guān)鍵詞】SIP服務(wù)器;安全機制
SIP(Session Initiation Protocol)是IETF于1999年推出的一種分布式的會話控制協(xié)議,用于會話的建立、修改和終止。同時由于SIP協(xié)議簡單、靈活、易擴展的等優(yōu)點,其在VOIP、即時消息、語音會議、視頻會議等多媒體會話中得到了廣泛應(yīng)用 ,成為了下一代網(wǎng)絡(luò)中的核心控制信令。對處于互聯(lián)網(wǎng)應(yīng)用層SIP服務(wù)器的安全性提出了巨大的挑戰(zhàn)。
目前,由于SIP協(xié)議文本形式的明文傳遞,容易被非法者劫持、竊聽、模仿和篡改。同時SIP協(xié)議自身缺乏安全機制,無法對客戶端和服務(wù)器進行有效的身份鑒別,SIP業(yè)務(wù)的安全問題只能通過外部協(xié)議進行規(guī)范和控制。因此,如何保證SIP在應(yīng)用和擴展過程的安全性成為了SIP標準化過程中的一個熱點問題。
1.1網(wǎng)絡(luò)實體及其功能
基于SIP協(xié)議的通信網(wǎng)絡(luò)沿用了互聯(lián)網(wǎng)中的客戶端/服務(wù)器模型。一個SIP網(wǎng)絡(luò)包括用戶代理UA(User Agent)和網(wǎng)絡(luò)服務(wù)器兩大部分。其中UA由用戶代理客戶端UAC(User Agent Client)和用戶代理服務(wù)器端UAS(User Agent Server)組成。
服務(wù)器的功能是向客戶端發(fā)出的請求消息提供服務(wù)并發(fā)送響應(yīng)消息。從邏輯上包括代理服務(wù)器(具有解析名字的能力,主要用于轉(zhuǎn)發(fā)用戶消息)、注冊服務(wù)器(接收客戶注冊請求,并完成地址登記)、定位服務(wù)器(通過URI找到對應(yīng)的用戶或?qū)嶓w)和重定向服務(wù)器(通過響應(yīng)告訴客戶下一條服務(wù)器地址)4大功能實體。具體實現(xiàn)過程中,可以被合并在同一個應(yīng)用程序SIP網(wǎng)絡(luò)結(jié)構(gòu)中。其中,代理服務(wù)器、重定向服務(wù)器和注冊服務(wù)器可以看作公眾性網(wǎng)絡(luò)服務(wù)器;而定位服務(wù)器則為SIP重定向服務(wù)器和代理服務(wù)器提供被叫地址信息。
圖1 SIP基本網(wǎng)絡(luò)實體
1.2SIP會話流程
SIP是通過請求消息和SIP響應(yīng)消息來進行會話的建立,修改和釋放。表1和表2分別為SIP請求方法和應(yīng)答消息及其含義。
表1 SIP請求方法及含義
表2 SIP應(yīng)答消息及含義
在圖2所示的SIP基本會話流程中,SIP Server A為主叫用戶SIP Caller所在域的代理服務(wù)器,SIP Server B為被叫用戶SIP Callee所在域的代理服務(wù)器。
其中step1—step14為會話建立過程,SIP Caller打算向SIP Callee發(fā)起會話,它首先得找到自己所在域的代理服務(wù)器SIP Server A,并向其發(fā)送一個INVITE請求,代理服務(wù)器SIP Server A收到來自SIP Caller的INVITE請求后,根據(jù)TO字段所攜帶的被叫用戶的Requst-URI信息后,找到SIP Callee所在域的代理服務(wù)器SIP Server B并將INVITE請求轉(zhuǎn)發(fā)給SIP Server B,同時SIP Server A給SIP Caller發(fā)送一個100Tring的臨時響應(yīng)消息,以避免SIP Caller向SIP Server A重復(fù)發(fā)送INVITE請求,SIP Server B再將INVITE請求通過定位服務(wù)器發(fā)送給SIP Callee,其余過程類似。
Step15:會話成功共建立,SIP Caller和SIP Callee處于通過中;
Step16—step21:會話拆除。
圖2 SIP基本會話流程
由SIP基本會話流程,可以看出服務(wù)器的功能是轉(zhuǎn)發(fā)客戶端發(fā)出的請求消息并向其發(fā)送響應(yīng)消息。在此過程中,由于SIP消息是明文消息,存在各種不安全因素,下面對SIP 業(yè)務(wù)中存在的各種安全隱患進行討論和分析。
2.1SIP存在安全隱患
(1)注冊劫持
眾所周知,SIP用戶在進行會話和各種多媒體業(yè)務(wù)之前,必須將自己的URI和IP地址在注冊服務(wù)上進行綁定,以保證代理服務(wù)器和重定向服務(wù)器在轉(zhuǎn)發(fā)用戶消息能夠有明確的地址。在注冊過程中,如果攻擊者獲取到了用戶的密碼和IP并將用戶的IP篡改成為自己的IP地址,尤其是在SIP協(xié)議中,允許第三方來完成用戶注冊,如果第三方本身是攻擊者,就可以成功截取用戶應(yīng)該接收到的SIP消息,竊聽通話雙方。更嚴重的情況下第三方如果獲取了大量用戶的地址信息,造成的后果將不可估量。
(2)攻擊服務(wù)器
為了保證SIP服務(wù)器能夠?qū)⒖蛻粽埱笙⒄_的轉(zhuǎn)發(fā)到目的地,SIP消息中包含路由信息的字段必須對SIP代理服務(wù)器和重定向服務(wù)器可見。同時,由于用戶無法對服務(wù)器進行身份鑒別,這時攻擊者如果偽裝成服務(wù)器,就會將合法用戶的消息轉(zhuǎn)發(fā)到不安全的目的地。
(3)消息篡改
消息的篡改,包括會話參數(shù)的修改(如會話過程中修改媒體流SDP協(xié)議中的參數(shù));偽造BYE請求惡意終止正在進行的會話;將會話過程重定向。
造成以上SIP的不安全隱產(chǎn)生的主要原因是SIP協(xié)議的明文傳輸,和客戶端到服務(wù)器之間缺乏有效的身份驗證。
2.2現(xiàn)存SIP安全機制的比較
為了保證會話的安全性,一種極端的做法就是對SIP消息進行完全加密,但通過上述分析知道:為保證服務(wù)器能夠正確的轉(zhuǎn)發(fā)請求消息和返回響應(yīng)消息,必須對SIP消息中含有的路由信息的字段可見。鑒于SIP消息本身沒有安全機制,只能依靠外部的安全機制來保證SIP的安全性。
(1)客戶端和客戶端之間采用的安全策略
客戶端和客戶端之間的安全機制可以通過S/MIME加密認證機制實現(xiàn),可以保證SIP消息的私密性、完整性以及用戶之間的身份認證和鑒別。其缺點是客戶端必須提供權(quán)威機構(gòu)頒發(fā)的證書,才能夠?qū)崿F(xiàn)端到端的安全保障,這對PKI機制還不夠完善的客戶端來說,實現(xiàn)起來困難較大。
(2)服務(wù)器和服務(wù)器之間的安全策略
服務(wù)器和服務(wù)器之間主要是采用逐跳安全機制,逐跳安全機制可以通過過傳輸層協(xié)議TLS和網(wǎng)絡(luò)層協(xié)議IPsec實現(xiàn)。TLS可以為SIP網(wǎng)絡(luò)提供傳輸層以上的逐跳安全服務(wù),當(dāng)用戶A和B需要通信,而A和B只信任本地服務(wù)器,它們之間沒有沒有預(yù)先的相互信任關(guān)系,如果A的代理服務(wù)器和B的代理服務(wù)器通過相互交換證書,建立了信任關(guān)系,A和B之間就可以相互信任并進行通信。TLS的不足之處是當(dāng)鏈接建立在UDP之上時會引發(fā)大量的網(wǎng)絡(luò)負載,另外在SIP的具體應(yīng)用中,在向后兼容過程中需要較為復(fù)雜的加密算法;IPsec可以通過虛擬專用網(wǎng)絡(luò)VNPS創(chuàng)建鏈接,該鏈接可以為Voip提供與專用網(wǎng)絡(luò)相同的的服務(wù)和安全保障,但IPsec網(wǎng)絡(luò)實現(xiàn)復(fù)雜度高,擴展性差。
(3)客戶端和服務(wù)器之間的安全策略
客戶端和服務(wù)器端之間的安全機制主要是通過認證(如HTTP摘要認證)的方式實現(xiàn),HTTP摘要認證可以對報文發(fā)起者的合法性進行鑒別,當(dāng)一個客戶端向注冊服務(wù)器進行注冊時,客戶端不僅要向注冊服務(wù)器發(fā)送REGISTER請求,同時還需要發(fā)送一個能夠證明自己身份有效的證書。此種安全機制可以用于解決諸如注冊劫持的安全隱患。但HTTP摘要認證只能提供身份認證,而且通信延時較大。
結(jié)合以上分析,以及對HTTP摘要認證,TLS和IPsec,S/MIME加密認證機制的研究,不難發(fā)現(xiàn),通過外部協(xié)議來保障SIP的安全機制,存在各種缺陷。因此,提出一種改進型SIP安全策略,該安全策略的基本思想是:在SIP服務(wù)器之間采用TLS機制,在服務(wù)器和客戶端之間采用對稱加密方式,如圖3所示。
圖3 一種改進型SIP安全策略
在SIP客戶端和服務(wù)器之間的對稱密鑰由用戶名、域名、用戶和服務(wù)器之間共享的口令信息、服務(wù)器注冊時反饋的隨機值(nonce)通過加密函數(shù)生成,加密函數(shù)可采用加密函數(shù)采用DES CBC校驗和算法。SIP客戶端和服務(wù)器之間的對稱加密算法由二者共同協(xié)商,最終選擇二者共同支持且在服務(wù)器中優(yōu)先級最高的算法。具體的實現(xiàn)可以在客戶端注冊過程中在SIP報文的頭部增加一個clien-suanfa,將用戶能夠支持的加密算法以優(yōu)先級從高到低發(fā)送給服務(wù)器,服務(wù)器以同樣的方式在響應(yīng)消息中通過sever-suanfa頭部將自己支持的加密算法和生成的隨機值(nonce)反饋給客戶端。客戶端利用隨機值(nonce)生成密鑰,并將sever-suanfa中的算法列表復(fù)制到verify字段中,用以鑒別二者在注冊過程中是否遭受攻擊,注冊成功后二者利用協(xié)商好的加密算法和生成的公鑰進行報文傳輸。甚至還給以在報文傳輸過程中增加時間戳來防止大量消息重發(fā)阻塞服務(wù)器。
在SIP服務(wù)器和服務(wù)器之間采用TLS安全機制,此時服務(wù)器必須提供自己身份證書,對于服務(wù)器而言,生成和維護證書相對比較容易。且TLS協(xié)議能夠在 TCP之上提供私密性和身份鑒別的服務(wù)。
客戶端之間采用RSA算法來保證可信度,具體的實現(xiàn)是服務(wù)器在消息發(fā)送方的報文中添加數(shù)字簽名,當(dāng)消息接受方接收到消息后,再檢查了消息發(fā)送方的公鑰正確后,在檢查其數(shù)字簽名是否正確,如果消息接收方認為發(fā)送方的服務(wù)器可信,則間接認為消息發(fā)送方可信。利用此種方式相對于逐跳方式中的多跳更加安全可靠。
綜上所述,本文提出的一種改進型SIP安全策略,不依賴于客戶端證書和外部安全機制。旨在通過逐條擴展SIP協(xié)議本身,在能夠有效保障SIP協(xié)議的私密性、完整性及身份鑒別。同時可以有效防止SIP消息的重發(fā)。
參考文獻
[1]IETF RFC3261,SIP:SessionInitiation Protocol[S],2002,6.
[2]張建妮.基于SIP 協(xié)議的負載均衡系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:西南交通大學(xué),2011.
[3]黃珍生,張統(tǒng)文.基于SIP的電話服務(wù)器故障切換方法與可用性分析.
[4]方東輝.一種 SIP 應(yīng)用層安全機制的設(shè)計與實現(xiàn)[D].哈爾濱工業(yè)大學(xué),2007.
張建妮(1982-),女,陜西岐山人,碩士,講師,現(xiàn)供職于西華師范大學(xué)電子信息工程學(xué)院,研究方向:通信網(wǎng)絡(luò)技術(shù)。
作者簡介:
基金項目:西華師范大學(xué)校內(nèi)基金項目(13D015)。