基于有限状态机的SIP监听研究
2013-09-19王鹏
王鹏
中国人民公安大学 北京 100038
0 引言
近年来,VOIP技术应用越来越广泛,从电信业未来发展趋势来看,这种基于网络IP技术的语音业务,终将成为电信的主要提供方式。然而,在VOIP技术在给人们带来方便与廉价的同时,一些负面影响也显现出来。以VOIP为通信工具的犯罪活动日益猖獗:电信诈骗、邪教组织和国外敌对势力散布一些反动信息以及一些贩毒集团利用VOIP进行非法交易等。最近的调查显示,策划2008年11月26日印度孟买恐怖袭击事件的恐怖分子利用一种类似Skype的网上电话通讯软件,成功阻挠印度安全部门对他们通话的监控。目前,国内利用VOIP进行的主要犯罪活动是电信诈骗:犯罪分子利用网络电话的灵活性、隐蔽性和透传性的特点,随意虚拟、修改来电显示号码,然后利用电话软件对任意地区的电话区段进行批量呼叫,冒充公安、检察院、法院、银行、亲友等的电话,骗取巨额汇款至犯罪嫌疑人开设的所谓“安全账号”,再利用各类银行卡在ATM机器上异地取款。这种诈骗的手段隐蔽,让群众难以判断其真实性,已经严重损害广大人民群众的利益。公安部将此类诈骗案件统一命名为电信诈骗。打击这些非法活动仅依靠法律的手段来约束是不够的,还需要从技术上对其进行有效扼制,VOIP的监听是有效打击上述犯罪的必然手段。在VOIP 系统中,ITU-T 制定的H.323 协议和 IETF 制定的 SIP(会话初始协议)成为事实标准。本文以SIP为例,从决策管理层角度,提出了SIP网络的监听模型,以解决实际工作难题。
1 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网络结构示意图
2 相关协议——RTP
RTP——实时传输协议,为数据提供了具有实时特征的端对端传送服务。应用程序通常在UDP上运行RTP以便使用其多路节点和校验服务,VOIP的两种协议都提供了传输层协议的功能,但是RTP可以与其它适合的底层网络或传输协议一起使用。RTP本身并没有提供按时发送机制或QoS保证,它依赖于低层服务去实现这一过程。RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置。
RTP由两个紧密链接部分组成:
(1) RTP---传送具有实时属性的数据;
(2) RTP控制协议(RTCP)----监控服务质量并传送正在进行的会话参与者的相关信息。RTCP第二方面的功能对于“松散受控”会话是足够的,即在没有明确的成员控制和组织的情况下,它并不一定被用来支持一个应用程序的所有控制通信请求。
3 设计思想
SIP语音通信的技术原理、传输载体与传统的电话技术完全不同,SIP的语音通信是指支持SIP的客户端利用交互的信令呼叫,建立连接后进行的媒体流通信。因此若想实现SIP的语音监听,必须先跟踪、分析出信令流,从中获取媒体流通信的路径信息(如IP等),最后根据实现监听媒体流。SIP监听模型如图2。
图2 SIP监听管理模型
SIP网络监听模型主要分为监听探头、数据包预处理模块、监控模块和管理模块4 个部分。监听探头放置于城际骨干网上,它负责采集数据,并将采集到的信息发送到数据包预处理模块。监控模块负责处理采集到的控制信令及RTP 语音流数据,并根据后台策略进行相应的处理。管理模块负责对系统进行后台策略配置以及监听查询等。首先通过旁路的方式捕获动态会话建立的信令流,将信令监听探针置于 SIP用户代理与SIP服务器之间的通信链路上(见上图中的A、B、C点)。然后从已捕获的信令流中获取通话双方的身份信息和媒体流信道地址信息。最后将媒体流监听探针置于SIP 用户代理之间的媒体流信道上(见上图中的D点)捕获RTP媒体流会话,根据需要对其进行监听、录音或其他管控。
4 系统的有限状态机
4.1 有限状态机
有限状态机是一个五元组: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是结束状态的集合,有限状态机在到达终态后不再接收输入。
4.2 模型建立
由于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 有限状态机转换图
4.3 会话信息存储
由于可能同时有多个会话需要监听,因此需要建立一个存储体保存这些信息。网络的瞬间流量巨大,为节省存储空间,没有必要对同一媒体流的不同数据包分别存储。将流经网络接口的每个数据包的数据载荷进行比较,采用哈希函数来记录这些连接,将已识别的连接存入哈希映射表,这样已经被识别的连接的数据包就不需要再提取特征码进行匹配,大大减少了工作量和存储空间。具体为根据捕获的SIP会话参数建立一个双向链表,每一个会话对应于链表中的一个节点。为提高程序的性能,需要建立一个索引。SIP将 call_id作为一个会话的惟一标识,因而可采用call_id作为索引建立双向链表。但存储完整的call_id 比较费空间,所以在链表的建立过程中,为节省存储空间提高效率,可以对call_id 进行Hash计算,在此用拉链式Hash数据结构进行存储。对于每一个会话,首先根据其call_id 的Hash值选择在拉链式Hash表中的存储行,然后将其call_id 与该存储行对应的双向链表中节点的call_id进行比较,相同则为同一个会话——不保存;反之,将该节点插入到此链表的最后。
5 结束语
本文通过对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.