王鵬
中國人民公安大學 北京 100038
近年來,VOIP技術應用越來越廣泛,從電信業未來發展趨勢來看,這種基于網絡IP技術的語音業務,終將成為電信的主要提供方式。然而,在VOIP技術在給人們帶來方便與廉價的同時,一些負面影響也顯現出來。以VOIP為通信工具的犯罪活動日益猖獗:電信詐騙、邪教組織和國外敵對勢力散布一些反動信息以及一些販毒集團利用VOIP進行非法交易等。最近的調查顯示,策劃2008年11月26日印度孟買恐怖襲擊事件的恐怖分子利用一種類似Skype的網上電話通訊軟件,成功阻撓印度安全部門對他們通話的監控。目前,國內利用VOIP進行的主要犯罪活動是電信詐騙:犯罪分子利用網絡電話的靈活性、隱蔽性和透傳性的特點,隨意虛擬、修改來電顯示號碼,然后利用電話軟件對任意地區的電話區段進行批量呼叫,冒充公安、檢察院、法院、銀行、親友等的電話,騙取巨額匯款至犯罪嫌疑人開設的所謂“安全賬號”,再利用各類銀行卡在ATM機器上異地取款。這種詐騙的手段隱蔽,讓群眾難以判斷其真實性,已經嚴重損害廣大人民群眾的利益。公安部將此類詐騙案件統一命名為電信詐騙。打擊這些非法活動僅依靠法律的手段來約束是不夠的,還需要從技術上對其進行有效扼制,VOIP的監聽是有效打擊上述犯罪的必然手段。在VOIP 系統中,ITU-T 制定的H.323 協議和 IETF 制定的 SIP(會話初始協議)成為事實標準。本文以SIP為例,從決策管理層角度,提出了SIP網絡的監聽模型,以解決實際工作難題。
會話發起協議(Session Initiation Protocol,SIP),是建立VOIP連接的 IETF標準(互聯網工程任務組:The Internet Engineering Task Force是松散的、自律的、志愿的民間學術組織,成立于1985年底, 其主要任務是負責互聯網相關技術規范的研發和制定,目前,IETF已成為全球互聯網界最具權威的大型技術研究組織)。SIP在VOIP網絡中有客戶機和服務器之分。客戶機是指為了向服務器發送請求而與服務器建立連接的應用程序。SIP是一種客戶機/服務器的協議,啟動會話的一方為用戶代理客戶(UserAgent Client,UAC),響應會話的一方為用戶代理服務器(User Agent Server, UAS)。SIP是一種應用層控制協議,用于和一個或多個參與者創建、修改和終止會話。SIP的結構與HTTP 相似,客戶機發出請求,并發送給服務器,服務器處理這些請求后給客戶機發送一個響應,該請求與響應形成一次事務。以此,SIP與互聯網天生融合,目前SIP已被公認為最好的利用互聯網進行全面集成通信的方式。
SIP在五個方面支持創建和終止多媒體通信:
(1) 用戶定位:決定用于通信的終端系統的確定;
(2) 用戶可用性:決定被叫方是否愿意加入通信;
(3) 用戶能力:媒體和媒體參數的確定;
(4) 呼叫建立:“響鈴”,主叫方和被叫方的會話參數的建立;
(5) (呼叫管理:包括傳輸和終止會話、修改呼叫參數和調用服務。
SIP提供了一組安全服務,包括防止拒絕服務攻擊、認證(用戶對用戶和代理對用戶)、完整性保護和加密及隱私服務。SIP同時支持IPv4 and IPv6,術語包括:1、呼叫;2、事務;3、SIP URL;4、用戶定位;5、定位服務(Location Service);6、代理,代理服務器(Proxy、Proxy server);7、重定向服務器(Redirect server);8、注冊員(Registrar);9、用戶助理(User Agent);10、用戶代理客戶(User Agent Client);11、用戶代理服務器(User Agent Server)。兩類消息(消息采用文本方式編碼):1、請求消息——用于客戶端為了激活按特定操作而發給服務器的SIP消息,包括INVITE,ACK,OPTIONS,BYE,CANCEL和REGISTER消息等,2、響應消息——用于對請求消息進行響應,指示呼叫的成功或失敗狀態。SIP工作方式如下:
通過SIP地址識別主叫方和被叫方。當建立一個SIP呼叫時,主叫方首先定位適合的服務器,然后發出一個SIP請求。最通常的SIP行為是邀請。SIP請求會被代理重定向或者觸發一系列的新SIP請求,而不是直接到達目的被叫方。用戶可以通過 SIP服務器注冊他們的位置。SIP地址(URL)可以嵌入到網頁中,因此只要點擊一下就可以和對方建立呼叫會話。SIP信息可以在TCP上傳輸也可以在UDP上傳輸。SIP信息是基于文本的,采用UTF-8編碼中的ISO 10646字符集。信息的每一行必須通過CRLF終止。大多數信息語法和頭字段類似于HTTP。SIP信息可以是請求信息也可以是響應信息。典型的SIP網絡結構如圖1。

圖1 SIP網絡結構示意圖
RTP——實時傳輸協議,為數據提供了具有實時特征的端對端傳送服務。應用程序通常在UDP上運行RTP以便使用其多路節點和校驗服務,VOIP的兩種協議都提供了傳輸層協議的功能,但是RTP可以與其它適合的底層網絡或傳輸協議一起使用。RTP本身并沒有提供按時發送機制或QoS保證,它依賴于低層服務去實現這一過程。RTP實行有序傳送,RTP中的序列號允許接收方重組發送方的包序列,同時序列號也能用于決定適當的包位置。
RTP由兩個緊密鏈接部分組成:
(1) RTP---傳送具有實時屬性的數據;
(2) RTP控制協議(RTCP)----監控服務質量并傳送正在進行的會話參與者的相關信息。RTCP第二方面的功能對于“松散受控”會話是足夠的,即在沒有明確的成員控制和組織的情況下,它并不一定被用來支持一個應用程序的所有控制通信請求。
SIP語音通信的技術原理、傳輸載體與傳統的電話技術完全不同,SIP的語音通信是指支持SIP的客戶端利用交互的信令呼叫,建立連接后進行的媒體流通信。因此若想實現SIP的語音監聽,必須先跟蹤、分析出信令流,從中獲取媒體流通信的路徑信息(如IP等),最后根據實現監聽媒體流。SIP監聽模型如圖2。

圖2 SIP監聽管理模型
SIP網絡監聽模型主要分為監聽探頭、數據包預處理模塊、監控模塊和管理模塊4 個部分。監聽探頭放置于城際骨干網上,它負責采集數據,并將采集到的信息發送到數據包預處理模塊。監控模塊負責處理采集到的控制信令及RTP 語音流數據,并根據后臺策略進行相應的處理。管理模塊負責對系統進行后臺策略配置以及監聽查詢等。首先通過旁路的方式捕獲動態會話建立的信令流,將信令監聽探針置于 SIP用戶代理與SIP服務器之間的通信鏈路上(見上圖中的A、B、C點)。然后從已捕獲的信令流中獲取通話雙方的身份信息和媒體流信道地址信息。最后將媒體流監聽探針置于SIP 用戶代理之間的媒體流信道上(見上圖中的D點)捕獲RTP媒體流會話,根據需要對其進行監聽、錄音或其他管控。
有限狀態機是一個五元組:M=(Q,∑,δ,q0,F),其中
Q={q0,q1,q2,q3,…,qn}是一個有限的狀態集合,在任一確定的時刻,有限狀態機只能處于一個確定的狀態qi;
∑={σ1,σ2,σ3,…,σm}是有限輸入字符集,可以表示系統接收的所有事件的集合,在任一確定的時刻,有限狀態機只能接收一個確定的輸入σi;
δ:Q×∑→Q,是狀態轉移函數,是Q×∑ 到Q的映射,它是一個二元函數。如果在某一確定時刻,有限狀態機處于某一狀態qi∈Q,并接收一個輸入字符σj∈∑,那么下一時刻將處于一個確定的狀態 qj=δ(qi,σj)∈Q。在這里規定 q=δ(q,ε),即對任何狀態q,當輸入空字符(不輸入任何字符)時,有限狀態機不發生任何狀態轉移,它描述了系統中每個狀態轉換到其他狀態的可能性。狀態轉移函數是有限狀態機中最關鍵的部分。
q0是初始狀態,q0∈Q,有限狀態機由此狀態開始接收輸入。
F是結束狀態的集合,有限狀態機在到達終態后不再接收輸入。
由于SIP是通過信令交互建立連接,而信令的交互從另一個角度可以看作根據信令消息進行的狀態轉換;另外需要監聽控管的SIP會話一定會建立一個完整的連接,因而可采用有限狀態機來實現信令流的跟蹤、還原和分析。
定義:基于 SIP的狀態轉換模型是一個五元組M=(Q,∑,δ,q0,F),其中 Q={q0,q1,q2,q3,q4,q}是 SIP 狀態有限集合;∑={σ1,σ2,σ3,σ4}表示系統接收的所有消息的集合,在此只列出需要使用的消息;狀態轉移函數 δ:Q×∑→Q;q0是初始狀態;F={q}是結束狀態集合,表示一次呼叫結束。
狀態qi具體描述如下:
q0:呼叫前的狀態;
q1:成功收到σ1信令狀態;
q2:成功收到σ2信令狀態;
q3:成功收到σ3信令狀態;
q4:成功收到σ4信令狀態;
q:結束狀態,是成功收到σ3或錯誤信令狀態。
消息σi的具體描述如下:
σ1:邀請信令(invite);
σ2:接受邀請(ok);
σ3:確認(ACK);
σ4:結束信令(bye)。
信令的流程就是有限狀態機的狀態跳轉表, 可根據有限狀態機的狀態跳轉表來檢測一個會話是否是SIP 會話。檢測過程為:狀態機首先處于q0狀態, 當收到σ1(邀請信令)時說明檢測到呼叫端發出邀請,狀態機跳轉到 q1狀態;如果在q1狀態收到σ2(接受邀請信令)時,說明服務器收到被叫端的接受邀請消息,狀態機跳轉到q3狀態;如果在q3狀態收到σ3(確認)信令,說明呼叫端確認被叫端的應答,標志一個會話已經建立,可以對其媒體流進行監聽,狀態機跳轉到 q3狀態;如果在q3狀態收到σ4(結束信令),說明通信的一方希望結束會話,狀態機跳轉到q4狀態;如果在q4的狀態收到σ3(確認)信令,說明雙方同意結束會話,標志一個SIP 會話正常結束,狀態機跳轉到q狀態。有限狀態機狀態轉換圖如3。

圖3 有限狀態機轉換圖
由于可能同時有多個會話需要監聽,因此需要建立一個存儲體保存這些信息。網絡的瞬間流量巨大,為節省存儲空間,沒有必要對同一媒體流的不同數據包分別存儲。將流經網絡接口的每個數據包的數據載荷進行比較,采用哈希函數來記錄這些連接,將已識別的連接存入哈希映射表,這樣已經被識別的連接的數據包就不需要再提取特征碼進行匹配,大大減少了工作量和存儲空間。具體為根據捕獲的SIP會話參數建立一個雙向鏈表,每一個會話對應于鏈表中的一個節點。為提高程序的性能,需要建立一個索引。SIP將 call_id作為一個會話的惟一標識,因而可采用call_id作為索引建立雙向鏈表。但存儲完整的call_id 比較費空間,所以在鏈表的建立過程中,為節省存儲空間提高效率,可以對call_id 進行Hash計算,在此用拉鏈式Hash數據結構進行存儲。對于每一個會話,首先根據其call_id 的Hash值選擇在拉鏈式Hash表中的存儲行,然后將其call_id 與該存儲行對應的雙向鏈表中節點的call_id進行比較,相同則為同一個會話——不保存;反之,將該節點插入到此鏈表的最后。
本文通過對SIP協議的分析給出了一個基于有限狀態機的 SIP監聽模型,并論證了模型的實現。但在現實的 VOIP監聽中,仍有許多技術障礙和法律盲區,出于國家安全和公眾利益考慮,對VOIP有效管控需要管理者吸取眾家之長、運用聰明才智和綜合手段施行。這是政策、法律與技術的結合區域,單一側重某一方面都不會取得理想效果。目前,我國還沒有利用 VOIP進行通信實行恐怖襲擊等危害國家主權、危害公共安全犯罪案例,但應該未雨綢繆,盡早建立針對VOIP的管控體制,填補空白。
[1]古天龍.軟件開發的形式化方法[M].高等教育出版社.2009.
[2]J an Axelson.USB大全[M].北京:中國電力出版社.2001.
[3]肖博.低速率語音編碼中的信息隱藏研究與實現:碩士學位論文.北京:清華大學圖書館.2009.
[4]陳華林,盛翎智,sIP協議中的媒體協商.廣東省通信技術.2005.
[5]ITU一TreeommendationH.245,ControlProtoeolforMultimediaCommunieation,1996=61D耐elCollins著,舒華音等譯,VoIP技術與應用.人民郵電出版社.2003.