陸萬順 符云清
重慶大學計算機學院 重慶 400044
近些年來,SIP協議作為VoIP核心控制協議已得到了越來越多的推廣與應用。SIP協議是伴隨著互聯網的發展而誕生和發展的,它廣泛借鑒了和繼承了其他各種流行的網絡協議,例如HTTP、SMTP等,因而不可避免的會面臨各種安全威脅。
網絡安全問題一直以來都是網絡應用必須關注的問題,健康安全的網絡環境對于我們的生活和工作是十分必要的。作為下一代互聯網核心控制功能的SIP協議,安全顯得尤為重要。現有SIP安全機制主要借鑒其他成熟網絡應用協議的安全機制,并取得了一定的安全效果。但是隨著網絡不斷的發展和VoIP業務的進一步創新以及推廣普及,現有SIP安全機問題將會面臨更為嚴峻的考驗。
會話初始化協議(Session Initial Protocol,SIP)是一個應用層的控制協議,用來建立、修改和終止多媒體會話。SIP協議沿用了成熟的HTTP以及SMTP等現有應用協議,繼承了他們簡單易用等特性。而SIP只單純地繼承了這些協議的結構,而沒有特別針對其安全問題進行本質性、創新性地改造。也正是這個原因,SIP不可避免地會遇到以下安全問題:
(1)由于SIP繼承了HTTP以及SMTP等協議的結構,對于SIP協議,也將面臨網絡重放攻擊、網絡竊聽、網絡篡改、網絡欺騙等常見的網絡問題。
(2)由于SIP協議自身不成熟性和脆弱性以及SIP協議的應用特點,SIP也會遭受針對SIP應用的安全威脅,如冒充注冊服務器、會話參數被惡意篡改、注冊劫持攻擊等。
(3)由于下一代互聯網高度開放性和異構性,SIP也將面臨很多新型安全威脅,例如由于惡意網絡行為無法安全區分使得攻擊者有機會惡意攻擊SIP服務器,例如模仿正常操作注冊服務器的SIP消息,插入的惡意SQL語句,惡意修改或者刪除注冊用戶信息。
(4)拒絕服務/分布式拒絕服務是現有網絡一個棘手問題。對于SIP協議,此類安全威脅危害更大,形式更為特別,除了常見的泛洪攻擊,還包括了惡意發送終止、取消會話請求消息導致的正常會話建立和進行被拒絕等方式。
SIP網絡安全就是要保證在合法的用戶終端之間正常的建立會話連接,完整機密地進行多媒體會話參數協商;安全地保持和修改會話過程的順利完成;安全有效地完成結束正常的通話過程。同時,由于SIP采用預先注冊機制,保存用戶URI作為用于使用惟一標識以實現SIP相應功能,SIP安全還包括注冊過程的安全有效地實現。

圖1 SIP消息過程傳遞示意圖
SIP安全就是要保證SIP消息在順利經過圖中A、B、C、D四部分時的完整性、可用性和可信性。SIP安全相關研究者就此提出來很多解決方案,總結起來主要是安全認證和安全加密兩種方式:在端與端之間實現安全認證,保證端點合法性和有效性;在消息傳遞過程中采用安全加密,保證 SIP消息傳輸過程中的安全性(圖1)。
安全認證:認證主要是驗證SIP網絡UAC和UAS的合法性和有效性,常見認證方式有HTTP摘要認證和基于身份認證算法的安全認證等。
(1)HTTP摘要認證:基本的HTTP摘要認證是基于在HTTP報文頭中用戶名和密碼等相關參數進行驗證的原理,服務器對UAC進行單向認證,這種方式實現簡單,但是脆弱性較高,驗證參數易于被竊取,可能會遭受重放攻擊等威脅,而且沒有實現UAC對服務器的驗證,面臨冒充服務器的安全隱患;為此,相關研究者在此基礎上進行了改進,設計出了雙向的HTTP摘要認證等改進措施;但是改進后認證存在代價較高、效率較低的缺點。
(2)基于身份認證的安全認證:該認證方式是基于用戶ID(SIP網絡中即為用戶注冊的 URI)參與密鑰協商進行驗證的方式,是目前較為先進的安全驗證方式,可以很好的提高安全效果。文獻[3]介紹了幾種類似的認證方式,并針對實現代價和效率上進行了改進,提出了一種相對輕量級別的認證方式,但是無法避免攻擊者利用合法用戶作為傀儡發起的DDoS安全威脅,認證方式缺乏一定的靈活性。
安全加密:安全加密主要是為了保證SIP消息能安全地在SIP網絡鏈路上傳輸,最終安全完整的到達目的終端。常見加密方式有網絡層IPSec加密、傳輸層TLS加密和應用層S/MIME加密。
(1)IPSec加密:通過在網絡層相互信任的終端之間建立對等虛擬專用通道傳送數據。但對于 SIP,此機制實現代價較高。另外,SIP是以URI作為用戶惟一標識,而不是IP地址(SIP用戶由于其快捷的移動性,IP地址是時刻動態變化的),同時IPSecAH不能穿越NAT,故只能使用空加密的ESP來替代AH,而SIP多采用UDP作為傳輸協議,且ESP-UDP極易遭受泛洪攻擊,因此應用IPSec進行SIP安全加密不太現實。
(2)TLS加密:TLS結合SIPS URI使用,在傳輸層通過證書驗證協商對SIP消息安全加密。但是它需要TCP作為傳輸層協議,而現有SIP實現大部分采用UDP實現快速連接,故TLS加密存在一定的應用局限性。
(3)S/MIME加密:將SIP消息體加密體進行傳輸,但是SIP消息頭對中間轉發人是可見的,可能會被攻擊者截獲并篡改消息頭域內容,且S/MIME加密是基于PKI支持的,證書安全有效管理也是相當困難的。
針對SIP拒絕服務攻擊,現有文獻多是采用檢測過濾的方式盡量的緩解DoS造成的破壞。對于DoS/DDoS,目前還沒有很好的根除的方案,應盡早的發現和控制,減少其影響范圍,同時檢測策略應盡量輕量、低開銷、覆蓋全面,否則仍會給攻擊者提供可趁之機。
現存SIP安全機制雖在一定程度上緩解了SIP面臨的安全威脅,但較為被動,且存在一定局限性并缺乏一定的靈活性,而且都不能全面地解決SIP所面臨的安全問題。本文將根據現有成熟先進的安全解決方案進行研究改造,找出一種輕量、高效、靈活的SIP安全機制。
文獻[3]提出了一種輕量級的認證協商機制,該機制基于DH算法,采用用戶密碼以及隨機數計算協商密鑰的方式,具體實施過程如圖2。

圖2 一種輕量安全認證和密鑰協商機制示意圖
其中重要的參數計算描述如下:
(1)用戶代理UA(Alice)取隨機數r,用共享的用戶密碼和H()hash函數,計算gH(pwd)mod p 和grmod p得出H(pwd)和 gr,當進入安全驗證,UA選擇隨機數 NA,計算出H(pwd)+NA+r,與gr作為DH公鑰信息裝入請求消息傳給服務器。
(2)服務器接收到H(pwd)+NA+r后,利用保存的共享用戶密碼計算取隨機數NS計算gNSmod p,作為DH公鑰信息裝入401/407應答消息反饋給UA(Alice)進行挑戰認證。
(3)UA接收到挑戰應答后,計算主鑰 MK=(gNS)NAmod p,然后得出認證密鑰AK= H(MK,“AuthenticationKey”),加密密鑰 EK= H(MK,“EncryptionKey”),一致密鑰 IK= H(MK,“IntegrityKey”)。UA利用 AK和用戶密碼計算并放入請求消息發送給服務器端。
(4)服務器接收到請求消息后采用同樣的方式得出AK、IK和EK,然后利用AK和保存的共享用戶密碼對用戶進行安全認證。驗證成功后,計算 responseS1= H(AK||gH(pwd),nonce1|| nonce2|| realm ||gNS||gNA),將此信息載入200OK響應UA。
(5)UA被認證通過后,UA和服務器利用新的隨機數nonce2、nonce3計算 responseA2= H(AK|| gH(pwd),nonce2|| realm||username ||gNS||gNA)和 responseS2= H(AK||gH(pwd),,并通過EK和IK共同保證隨后的正式請求消息的安全傳遞。當下一次的安全關聯時,UA將重新選擇隨機數NA'來進行重新進行密鑰協商。
以上方案是基于用戶密碼不會被竊取的假設條件下保證密鑰協商的安全,故存在一定安全漏洞;另外這種方案對于攻擊者利用分布式傀儡合法終端進行重放攻擊卻是無法進行安全保障的。因而我們在此基礎上加入 OTP(一次口令)機制共同完成安全認證協商。在步驟 1中由服務器端發起OTP質疑,在步驟2中,服務器利用哈希安全算法對UA傳來的OTP序列數進行驗證,驗證合格后,再繼續往下進行。
文獻[1]提出一種基于“能力”的TVA(Traffic Validation Architecture)模式來緩解DoS對IP互聯網絡造成的危害。文中指出,任何可以作為網絡篩選數據包原則的信息即為能力。路由器利用能力標記將到來的消息按照一定規則進行排隊,同時設置隊列上限,然后按照此隊列進行數據包選擇,緩和非法數據包耗盡網絡資源的風險。具體如圖3所示。

圖3 基于能力參數的消息隊列
本文引入上述思想,在每個SIP網絡域設置邊界代理服務器,負責監控和過濾進入本網絡域的SIP消息。邊界代理服務器要求具備較高的業務處理能力和安全級別,且是有狀態的代理服務器。邊界代理服務器用一組安全分析策略對到來SIP消息進行安全分析,我們把這組分析策略定義為“能力”,按照能力參數對SIP消息進行排隊。惡意攻擊消息直接拒絕,可疑、不規范SIP消息放在隊列后段,信任級別較好的優先放入隊列前段。
由于SIP消息結構簡單,不關心任何多媒體會話信息,因而我們的能力參數主要來源于SIP消息頭域信息。我們將SIP消息的可用性、保密性、完整性、真實性、可審計性、私密性、抗毀性和可預測性等方作為能力標記的參考信息。例如SIP頭域格式是否規范;頭域字段值是否合格;SIP消息來源是否合法(邊界代理服務器預先保存一組合法用戶URI)。
邊界代理服務器根據能力參數對SIP消息進行處理后,要求加入能力標記標識此消息安全級別,交給域內中間代理服務器逐跳轉發(中間代理服務器為無狀態代理服務),下一網絡域代理服務器將此能力標記作為其的能力參數進行 SIP消息處理。
本文采用了一次口令 OTP改進文獻[3]提出的安全認證和密鑰協商機制,能靈活有效地解決終端冒充欺騙(包括用戶代理、注冊服務器)、網絡篡改等常見SIP安全威脅;由于服務器端是根據安全級別較高的秘密通行短語和用戶注冊信息利用嚴格保密的安全哈希迭代算法計算一次口令,而且需要和上一次計算的口令進行對比認證的,所以在一定程度避免了用戶密碼被竊取的風險,同時也避免了攻擊者控制合法傀儡用戶進行重放攻擊造成的DDoS造成的影響;在本文方案中,沒有專門的密鑰的管理和分發機制,利用用戶共享信息動態計算獲得必需的驗證和加密密鑰,減少了證書交換和證書安全管理的開銷;同時UA進行一次冪計算便可得到系統主鑰,極大的提高了驗證和協商的效率。這種輕量、高效的安全機制減輕了關聯終端必要的進程負擔,進而減少了SIP終端遭受資源耗盡型DoS攻擊的概率。
采用基于能力的SIP-TVA,一方面,設置邊界代理服務器利用能力標記對不同SIP消息進行排隊,同時過濾掉不合法來源消息,緩解了SIP遭受DoS/DDoS造成的危害;另外對于龐雜的網絡行為可以進行智能監控,利用能力標記對傳送的SIP消息進行整體監控和消息行為預測,盡早的將非法消息控制源端,減小攻擊行為影響范圍;我們只選擇了邊界代理服務器為有狀態代理服務器,網絡域內中間代理服務器全部采用無狀態代理服務器,執行簡單的消息轉發功能,減少SIP消息傳輸的系統開銷。我們采用這種關鍵部分重點防御,整體輕量的方式也是為了緩解SIP-DoS/DDoS的危害,盡快安全實現SIP功能。
SIP作為下一代互聯網核心控制協議,安全問題不可忽視。SIP安全機制要本著高效性、低開銷、靈活度高、解決問題全面和效果明顯的原則去設計。另外,SIP的安全問題要從本質特征出發,在網絡的關鍵部分增加安全認證、安全加密等必要的安全措施實現整體安全,但是不能扼殺了新業務的加入和運行,不能影響應用SIP網絡正常運行。因而我們不能總是被動的或者極端的去考慮SIP安全問題,要保證其應用網絡的完整、一致性。
[1]Yang X,Wetherall David, Anderson Thomas.A DoS limiting network architecture.Computer Communication Review.2005.
[2]J.Rosenberg,Schulzrinne,H., Camarillo,G., Johnston, A..Peterson, J, Sparks, R..Handley, M., and E.Schooler, SIP: Session Initiation Protocol.RFC 3261.June 2002.
[3]Jaeduck Choi, Souhwan Jung, Kwangyong Bae, Hokun Moon, A Lightweight Authentication and Hop-by-Hop Security Mechanism for SIP Network, International Conference on Advanced Technologies for Communications.2008.
[4]N.Haller,Bellcore,C.Metz,P.Nesser,M.Straw,A..Bellcore.A One-Time Password System.RFC2289.Feb 1998.
[5]J.Franks,P.Baker,J.Hostetler,S.Lawrence,P.Leach,A.Luotonen, L.Stewart,HTTP Authentication:Basic and Digest Access Authentication.RFC2617.IETF Network Working Group.June 99.
[6]J.Ring,K.Choo,E.Foo,M.Looi.A new authentication mechanism and key agreement protocol for SIP using Identity-based cryptography.Proc.AusCERT2006. May 2006.
[7]J.Arkko,V.Torvinen,G.Camarillo, A.Niemi, T.Haukka.Security Mechanism Agreement for the Session Initiation Protocol (SIP).RFC 3329.IETF.January 2003.