基于SIP协议的Android语音通信加密软件设计本科生毕业论文_第1页
基于SIP协议的Android语音通信加密软件设计本科生毕业论文_第2页
基于SIP协议的Android语音通信加密软件设计本科生毕业论文_第3页
基于SIP协议的Android语音通信加密软件设计本科生毕业论文_第4页
基于SIP协议的Android语音通信加密软件设计本科生毕业论文_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国科学技术大学本科毕业论文中国科学技术大学UniversityofScienceandTechnologyofChina本科毕业论文题目:智能手机安卓系统秘密语音通信软件设计英文SoftwareDesignoftheSmartphoneSecret题目:VoiceCommunicationBasedonAndroid学院:信息科学技术学院

致谢本论文是在我的导师XXX教授的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,X老师都始终给予我细心的指导和不懈的支持,谨向李老师致以诚挚的谢意和崇高的敬意。历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。感谢在大学生学习期间给我上课的老师们,感谢在大学四年里对我们的生活学习都无微不至照顾的辅导员周远远老师。在此,我还要感谢在一起愉快的度过大学生活的XXX寝室各位同门,正是由于你们的帮助和支持,我才能克服一个一个困难和疑惑,直至本文的顺利完成。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助,在此向帮助和指导过我的各位老师表示最衷心的感谢!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!感谢我的同学和朋友,在我写论文的过程中给予我了很多素材,还在论文的撰写和排版过程中提供热情的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!感谢我认识的师兄弟、师姐妹们。需要一一感谢我的同学们,有幸与你们同学是我大学的最大收获。最后,我要特别感谢我的家人,没有你们的支持,就没有今天的我。愿把我的幸福和快乐都送给关心和支持过我的人,也愿他们一切如意。目录中文内容摘要…………………4英文内容摘要……………………5第一章 绪论 2第一节研究背景 2一、网络电话 2二、SIP协议 2三、数据加密技术 2第二节本文主要研究工作 2第三节本文组织结构 2第二章VoIP技术 2第一节VoIP技术简介 2一、VoIP技术的定义 2二、IP电话与传统电话的区别与优势 2三、VoIP的三种主流协议 2第二节VoIP的关键技术 2一、语音编码压缩技术 2二、信令技术 2第三章SIP协议分析 2第一节SIP协议概述 2一、SIP协议简介 2二、SIP起源与发展 2三、SIP协议功能 2第二节SIP基本原理分析 2一、SIP协议要素 2二、SIP协议结构 2三、SIP的用户定位功能 2四、SIP消息机制 2第三节SIP会话详述 2一、SIP工作原理 2二、IP会话实例 2第四节其它与SIP相结合的协议 2一、SIP与其他协议的协作 2二、传输协议(RTP) 2三、会话描述协议SDP 2第五节SIP协议的优越性 2一、H.323与SIP的比较 2二、SIP协议的优点 2第四章Android平台下SIP协议栈的实现 2第一节Android平台简介 2第二节Android平台下SIP协议栈实现 2一、SIP协议栈的选择 2二、SipDroid数据传递流程 2三、注册流程代码 2四、拨号流程代码 2五、来电处理流程代码 2第五章加密模块的嵌入 2第一节加密算法的选择 2一、RC4流密码 2二、RC4的java实现 2第二节加密算法的嵌入 2一、改写SIPDroid的UDP收发函数 2二、密钥的处理 2三由本系统想到的VoIP安全性分析 2第六章系统测试 2第一节测试环境 2一、搭建测试环境 2二、服务器的设置 2三、用户软件设置 2四、winshark抓包软件设置 2第二节测试结果 2一、注册测试 2二、拨号测试 2三、来电测试 2四、语音加密测试 2第七章总结与展望 2第一节总结 2第二节展望 2

摘要随着Internet技术的飞速发展,在Internet上进行语音交换变得越来越普及。VoIP技术已经成为网络界受关注最多、发展最快的技术之一。然而作为IP语音传输媒介的IP网络目前存在着各种安全隐患,网络上的IP数据包极有可能被黑客截获,造成话音丢失或被窃听。因此,IP语音在网络上的安全传输就是一个非常重要的问题,已经成为研究的热点。为了保障VoIP的安全传输,需要对语音数据进行加密。然而加密的运算量通常会很大,因此选择了对称加密算法RC4流密码来实现加密。本文分析了VoIP应用中几个重要的协议,包括SIP(会话初始化协议)、SDP(会话描述协议)、RTP(实时传输协议)、RTCP(RTP控制协议),并详细阐述这些协议如何协同实现VoIP。之后分析了Android与VoIP结合的应用前景,并利用开源SIP协议栈,研究设计一个基于SIP的嵌入式Android语音终端,在此基础上,改写了协议栈中的UDP收发函数,调用RC4算法的java实现包,实现了加密功能。最后搭建测试平台,对终端各项功能进行测试。关键词:VoIP;SIP;SIPDroid;RC4;秘密语音终端

AbstractWiththerapiddevelopmentofInternettechnology,voiceinteractionoverInternetisbecomingincreasinglypopular.VoIP(VoiceoverIP)technologyhasbecomeoneofthefastestgrowingtechnologiesinInternetfield.However,astheVoIPtransmissionmedium,IPnetworkcurrentlyexistsavarietyofsecurityrisks.ItisthatIPdatapacketsonthenetworkisverylikelybeingstolenbyhackers,resultinginaseriousconsequencethepartofvoiceislostortapped.Therefore,thesecuretransmissionofVoIPisaveryimportantissueandbecomesahotspotofresearchandapplication.InordertoprotectthesecurityofVoIPtransmission,encryptionforvoicedataisnecessary.However,encryptionisusuallyalargeamountofcomputation,sowechooseastreamcipherRC4symmetricencryptionalgorithmtoachieveencryption.ThisarticlefirstdetailedseveralimportantprotocolsrelatedtotheVoIPapplications,includingSIP(SessionInitiationProtocol)、SDP(SessionDescriptionProtocol)、RTP(Real-timeTransportProtocol)、RTCP(RTPControlProtocol),thenexpoundshowtheseprotocolssynergiesfortheVoIP.AfteranalysisoftheprospectsofAndroidandVoIPapplication,IusetheopensourceSIPstackSIPDroidtodesignaSIP-basedembeddedAndroidvoiceterminal.Onthisbasis,IrewrotetheUDPprotocolstacktransceiverfunction,usetheRC4algorithmjavapackagetoachievetheencryption.Atlast,Isetupthetestplatformtomakeafunctiontest.Keywords:VoIP;SIP;SIPDroid;RC4;secretvoiceterminal

绪论第一节研究背景随着网络技术向着综合化、数字化、智能化、个人化的方向发展,Internet越来越走进人们的生活,在单一的网络平台上实现语音、数据、图像等多媒体综合业务已经乘务网络发展的目标和趋势。随着网络带宽不断增加和计算机处理能力的不断提高,在宽带网上实现高速多媒体通信已成为可能。Internet在即时通讯能力的不断提高,在宽带网上实现高速多媒体通信已成为可能。Internet在即时通讯、视频会议、IP电话领域不断取得新的应用。这些利用Internet为彼此通讯的双方提供实时信息交互的技术,随着网络应用的进一步普及,成为人们利用网络相互联系的重要手段,VoIP技术就是在这种情况下发展起来的。对于政府、银行、公安这样的行业或者大型企业来讲,由于比较重视信息化的建设,同时对信息的安全有很高的要求,因此大都拥有专用的IP宽带骨干网,用于综合传输语音、数据和图像等业务。因为语音通信具有高度的隐私性和机密性,所以应当采取必要的防范措施以防止任何未被授权的第三方对信息的非法窃取,同时保障语音通信质量。然而,目前为IP电话提供服务的IP网络存在各种安全隐患,VoIP网络容易遭受DoS、病毒和黑客攻击,造成系统崩溃。如同针对TCP的控制包攻击一样,黑客可以通过发起针对VoIP协议的DoS攻击,使VoIP设备被大量请求阻塞,导致语音呼叫服务中断或处于虚假繁忙状态。与计算机设备一样,VoIP设备感染病毒后也会出现系统性能显著下降,甚至崩溃。因此,IP电话在网络上的安全传输是一个非常重要的问题,已成为研究和应用的热点。一、网络电话网络电话又称为VoIP电话,是通过把语音信号经过数字化处理、压缩编码打包、透过网络传播、然后解压、把数字信号还原成声音,让通话对方听到。话音从源端到达目的端的基本过程是:1.声电转换:将声波转换为电信号2.量化采样:将模拟信号按照某种采样方法转换成数字信号3.封包:将一定时长的数字化之后的语音信号组合为一帧,封装到一个RTP报文中,并被进一步封装到UDP报文和IP报文中。4.传输:IP报文在IP网络中由源端传递到目的端。二、SIP协议SIP(SessonInitiationProtocal)称为信令控制协议,是由IETF组织于1999年提出的一个基于IP网络中,特别是在Internet这样一种结构的网络环境中,实现实时通信应用的一种信令协议。会话,指的就是用户之间的数据交换。在基于SIP协议的应用中,每一个会话可以是各种不同的数据,可以是普通的文本数据,也可以是经过数字化处理的音频、视频数据,还可以是诸如游戏等应用的数据,具有巨大的灵活性。SIP是基于文本的编码方式,这也是SIP协议同视频通信领域其他现有标准相比最大的特点之一。SIP的业务的网络结构和各个参与者之间的关系如图1-1所示,关于SIP的系统组成、消息机制和呼叫控制机制在第三章中会有详细的分析介绍。图1-1SIP网络结构及各组件关系三、数据加密技术加密技术通常分为两大类,对称是和非对称式。对称式加密就是加密和解密使用同一个密钥,这种加密技术目前被广泛采用。如美国政府采用的DES加密标准就是一种典型的对称式加密。非对称式加密就是加密和解密用的不是同一个密钥,通常有两个密钥,称为公钥和私钥,它们两个必须配对使用,否则不能打开加密文件。本文选择了对称加密算法流密码RC4作为嵌入的加密模块的算法。第二节本文主要研究工作本文的目的是智能手机安卓系统秘密语音通信软件设计。本文的主要研究工作包括:对VoIP关键技术、加密算法以及SIP协议原理做了详细、透彻的分析研究,这些是本文的理论基础。通过SIP协议的扩展功能,实现基于RC4流密码的加密传输基于SIP协议的终端系统的设计与实现。包括终端系统的基本架构设计、系统开发环境的搭建、SIP协议栈的搭建以及系统软件的模块化设计与实现。第三节本文组织结构本文共分为七个章节:第一章首先介绍了课题的研究背景,并对VoIP、SIP协议、数据加密做了简单的介绍。第二章详细介绍了VoIP,并探讨了其中关键的信令技术。第三章对SIP协议原理做了深入透彻的分析研究。介绍了SIP协议的起源和发展、SIP的功能;详细分析了SIP系统组成、实现机制和消息机制,并给出了SIP会话的实例。第二章和第三章共同构成本文的理论基础。第四章是本文的重点,详细阐述了系统软件的设计过程,包括开发平台的介绍、SIP协议栈的搭建以及各软件模块的设计等等。第五章是对VoIP加密传输的设计研究,实现基于RCT的加密算法,以及嵌入SIP协议栈中。第六章是系统测试和性能分析,对本文的研究成果给出了评估。第七章是对本文研究与开发工作的总结和对今后进一步研究方向的展望。第二章VoIP技术第一节VoIP技术简介一、VoIP技术的定义VoIP技术是VoiceoverIP的简称,也就是IP语音技术。其根本思想是传送IP包来实现语音业务。首先在发送端对模拟语音信号进行采样、量化、压缩编码,然后将语音数据封装成IP包,通过IP网络发送到接收端,再进行解包和解压缩,还原模拟信号,以实现语音通信。VoIP技术的出现,使语音业务在数据网上实现连续而高效的传输成为可能。它提供了一种强大而又经济的通信手段,能更合理地利用网络资源,降低了语音业务成本,因此在全球范围内得到了迅速的发展。二、IP电话与传统电话的区别与优势IP电话与传统电话的主要区别是传输媒介和交换方式。IP电话利用internet进行传输,而传统电话则使用公共交换电话网络(PSTN);IP电话的交换方式是分组交换,而传统电话则使用电路交换。分组交换技术使得IP电话在有信息时才传送数据,无信息时不传输数据,并且在使用压缩技术后,能使用远低于传统电话所需的网络带宽来实现传输,传统电话技术通常需要64kbit/s以上的带宽,而分组语音需要的带宽往往不到10kbit/s。IP电话都是智能终端,IP网络也是开放式网络,因此很容易快速推出新业务;而PSTN结构复杂、设备固定,因而补充新业务复杂。三、VoIP的三种主流协议鉴于VoIP的诸多优势,越来越多的个人、公司和科研机构开始发展和完善VoIP技术及相应标准。其中,最有影响力的两个组织为国际电联电信分会(ITU-T)和Internet工程任务组(IETF),这两个组织制定了不同的VOIP协议标准。目前在VoIP中使用较多的是音视频协议H.323、信令控制协议SIP、及媒体网关控制协议MGCP这三种主流协议,下表列出了这三种协议的简单比较表2-1VoIP主流协议比较H.323SIPMGCP拟定组织ITU-TIETFIETF架构P2PP2P主从式设计对象ISDN及ATMInternetGateway复杂度高低中扩展性低高中编码方式二进制编码基于文本编码基于文本编码在本文中,基于Android的VoIP语音通信客户端的实现是基于SIP协议的。第二节VoIP的关键技术一、语音编码压缩技术IP电话中的语音处理主要解决在IP网络环境中,在保证语音质量的前提下,尽可能地降低编码比特率,这就是语音压缩编码技术。本文VoIP客户端软件的安全性设计并未涉及到语音编码压缩技术,直接利用了开源协议栈的代码实现。二、信令技术在IP电话中,仅仅利用语音编码来保证语音质量是不够的,这也并非VoIP技术的难点。关键是分组语音应用要求某地的呼叫者连接至同样使用其拨号标准的语音代理,并将呼叫转发到可以访问其它语音代理的用户组,这就需要信令技术——一项鉴别呼叫方所要呼叫的对象和定位呼叫方在网络中的位置的技术。信令技术被用以创建、修改和结束一个或多个参与者参加的会话进程,其目的是实现一个完整的呼叫过程。在分组语音网络中的信令有两种。一种是外部信令,存在于普通语音网络中的语音代理和该代理服务的语音设备,遵循电话标准。另一种信令在语音代理之间传输,称为内部信令。这种内部信令通过传输网络标准或语音代理本身的标准实现。内部信令提供了连接控制和呼叫处理(或状态信息)两种功能。连接控制信令用于建立语音代理之间传输语音分组的联系或通道。呼叫处理(或状态信息)信令在语音代理之间发送呼叫状态,如振铃、忙音等。在分组语音网络的传输模式中,内部信令最初是用于避免在网络中维持用来支持所有可能呼叫的永久连接,这样,该传输模式中的内部信令就隶属于分配带宽固定的连接网络。对无连接网络中的分组语音应用而言,永久连接并不存在,进行语音业务时双方的语音代理只需要彼此定位。在分组语音网络的转换模式中,信令的作用是通过拨号规则判断目标代理是否存在,如果存在就将分组流发送至该代理。但网络中往往存在多种语音代理,连接种类的多样性使得语音代理无法为每个语音业务建立通道。单独的传输网络方案,如ATM、帧中继和IP都拥有独立的信用标准。ATM的标准为Q.931,帧中继分组语音信令为FRF.11。这些标准规定用户在不同的传输网络使用相对应的特殊分组语音代理。在IP分组语音网络中采用的内部信令(包括连接和呼叫处理)标准主要有两种,即ITU-T提出的H.323协议和IETF制订的SIP协议。

第三章SIP协议分析第一节SIP协议概述一、SIP协议简介信令控制协议SIP(SessionInitiationProtocol)是由IETF提出的会话控制协议,负责建立和管理两个或多个用户间的会话连接,是IETF多媒体数据和控制体系中的核心协议。SIP借鉴了超文本传输协议(HTTP),简单邮件传输协议(SMTP)这两个互联网最成功的应用层协议,具有简单、开放、灵活的特点。SIP协议可用来创建、修改以及终结多个参与者参加的多媒体会话进程,会话成员可以使用组播、单播或者两者结合的形式进行通信,同时也支持重定向服务,便于实现综合业务数字网,智能网和个人移动业务。二、SIP起源与发展SIP最早是由HenningSchulzrinne 和Markhandley于1996年所设计,当初设计的目标之一是实现类似PSTN中提供呼叫处理功能的扩展集,来完成类似普通电话的各种操作:拨号、振铃、回铃音等。随着网络技术的发展,如今SIP已被用来提供跨越internet的高级电话业务。IP电话正在演变为一种正式的商业电话模式,SIP协议就是支持这种演进的协议簇中重要的一员。SIP的发展大致可分为四个阶段:1996年,SIP的概念首先被提出,但只能处理会话的建立,用户一旦加入会话,信令就会终止,因此也无法实现对会话的中间控制。1999年3月,IETF的多方多媒体会晤控制工作组(mmusic)提出了RFC2543建议。2000年7月,已经从mmusic中分离出来的SIP工作组发表了SIP的草案。2002年6月,IETF的SIP工作组又发表了RFC3261建议,取代了RFC2543.从SIP的发展来看,协议首次被提出的时候,受限于当时的网络环境及多媒体技术的不足,协议仅仅针对文本应用。随着技术的发展,并通过和IETF中其他工作组如IP电话工作组(iptel)、IP网中电话选路工作组(trip)等的配合,在SIP协议中大大加强了对多媒体通信的支持。而3GPP使用了SIP标准来支持语音和数据,SIP协议得到了进一步的发展。SIP可以对语音进行很好的优化,并且由于它的可编译性,使移动业务能更好地面对灵活性和多样性的挑战。三、SIP协议功能SIP在建立和维持终止多媒体会话协议上,支持5个方面:用户定位:检测终端用户的位置,用于通讯。用户有效性:鉴定用户参与会话的意愿。用户能力:检查媒体的参数。建立会话:建立会话,参数在呼叫方和被叫方。会话管理:包括发起和终止会话,修改会话参数,激活服务等等。SIP本身并不提供服务,却可以和其他IETF协议一起工作,来提供完整的对终端用户的服务和构造完整的多媒体架构。但是基本的SIP协议的功能组件并不依赖于这些协议。安全对于提供的服务来说特别重要。要达到理想的安全程度,SIP提供了一套安全服务,包括防止拒绝服务,认证服务(用户到用户,代理到用户),完整性保证,加密和隐私服务。SIP可以基于IPV4也可以基于IPV6。第二节SIP基本原理分析一、SIP协议要素SIP定义的要素是逻辑上的要素,不是物理要素。一个物理的实现可以包含不同的逻辑要素。按照逻辑功能分,SIP系统由五种要素组成:用户代理客户机(UAC)、用户代理服务器(UAS)、代理、重定向服务器及注册服务器。用户代理客户机(UserAgentClient):用来发起SIP请求的客户程序。2.用户代理服务器(UserAgentServer):收到SIP请求后负责与用户联系并代表用户回送响应的服务程序。该响应可以表示接受、拒绝或重定向请求消息。一般与UAC一起组成用户代理存在于用户终端中。3.代理(Proxy):既充当服务器又充当客户机的媒介程序,是SIP系统中最重要的网络功能实体,主要提供路由功能。用户的SIP请求和响应可以直接被代理服务器处理或遵循相应网络策略转发给对应的服务器,并根据收到的应答对用户做出响应。代理服务器在转发之前要对消息进行解析,必要时还会改写请求。代理服务器分为有状态(Stateful)和无状态(Stateless)两种类型,它们之间的区别是有状态代理服务器会记住它接收的入请求,回送的响应以及它转送的出请求,无状态代理服务器一旦转发请求后就忘记所有的信息。无状态代理服务器位于网络核心,处理大量请求,负责重定向等工作,不必追踪记录一个会话的全过程。而位于网络边缘的有状态代理服务器,处理局部有限数量的用户呼叫,负责对每个会话进行管理和计费,需要追踪一个会话的全过程。无状态代理服务器是SIP结构的骨干,处理速度最快。有状态代理服务器是离用户代理最近的本地设备,它控制用户域并且是应用服务的主要平台。4.重定向服务器(RedirectServer):是实现呼叫重定向的逻辑实体。它接收用户代理的SIP呼叫请求,通过服务器中配置的策略和对定位服务器的查询将其地址映射成新地址返回给用户,以指示用户代理将呼叫重定向到其它目的地,来实现对呼叫的灵活控制。与代理服务器不同,它不发出自己的SIP请求;与用户助理服务器不同,它不接受呼叫。5.注册服务器(Registrar):是完成用户代理注册/注销功能的逻辑实体。它接收其管辖范围内的用户代理的注册请求,将用户代理的地址信息添加到定位服务器中,完成用户地址的注册。常与代理或重定向服务器在同一位置,可以提供定位服务。可以看出,用户终端程序往往需要包括UAC和UAS,而代理服务器、重定向服务器和注册服务器可以看成是公众性的网络服务器。值得注意的是,在SIP中还经常提到定位服务的概念。但SIP协议不规定SIP服务器如何请求定位服务,定位服务器也不属于SIP服务。定位服务(LocationService):SIP重定位服务器或代理服务器用来获得被叫位置的一种服务,可由定位服务器提供。二、SIP协议结构从网络分层结构看,SIP处于网络传输层之上。SIP本身又由若干层组成,它们从下到上分别是:传输层、事务层以及事务用户层。如图3-1所示SIP事务用户层事务层传输层UDP/TCPIP链路层物理层图3-1SIP分层结构第一层是传输层。它定义了一个客户端如何发送请求和接收应答,以及一个服务器如何接收请求和发送应答。所有的SIP要素都包含传输层。第二层是事务层。事务是SIP的基本组成部分。一个事务指的是从客户机发送请求到一个服务器开始,直到服务器的所有对该请求的应答发送回客户端为止的整个过程。事务层处理应用层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理完成的事情都是由一组事务构成的。事务层包含客户机元素和服务器元素。用户代理和有状态代理服务器均包含一个事务层,无状态代理服务器则不包含事务层。第三层是事务用户。每个SIP实体都是一个事务用户。当事务用户发出一个请求,它首先创建一个客户事务实例和请求一起发送,包括目标IP地址、端口号以及发送请求的设备。事务用户既能创建事务,也能取消事务。当客户机取消一个事务,就请求服务器终止正在处理的事务,回滚到该事务开始前状态,并产生该事务的错误报告。这是由CANCEL请求(将在后文提到)完成的,这个请求有自己的事务,并且包含一个被取消的事务。将SIP作为一个分层协议来描述,只是为了能够更清晰的表达,各层次之间只有松散的关系,并没有规定一个具体的实现。因此一个要素”包含”某一个层,指的是这个要素要符合这个层定义的规则,而非每个要素都一定包含每一个层。三、SIP的用户定位功能SIP通过E-mail地址形式来标明用户地址。一个终端用户通过一个唯一的URL来标识自己的身份。SIPURL用于SIP消息中,包括请求的发起者(From)、当前目的地(Request-URI)和最终接收者(To)以及指定重定向地址(Contact)。SIPURL也可以嵌入WEB页面或其它超链接表示某个用户或服务可以使用SIP服务器访问。此外,SIP在设计上也充分考虑了对其它协议的可兼容性。它支持多种寻址地址描述,例如用户名@主机地址:被叫号码@PSTN网关地址:普通电话的描述等。这样,SIP主叫根据被叫地址就可以标识出被叫在普通电话网上的位置,然后利用与普通电话网相连的网关建立连接。SIP最强大之处就是用户定位功能。SIP本身包含向注册服务器注册的功能,同时也可以使用其它定位服务器例如DNS提供的定位服务来增强其定位功能。四、SIP消息机制SIP对会话的管理主要是通过其消息机制实现的,通信双方可通过消息的交换实现会话控制。SIP消息机制有两种:客户机到服务器的请求(Request)和服务器到客户机的响应(Response)。SIP的核心通信机制就是请求响应。SIP消息采用文本方式编码,尽管两种类型消息在语法细节上不同,但是两种类型消息都是由一个起始行、若干个字头段、一个空行(用于标志字头段结束)以及一个可选消息体组成。起始行、每个消息头行和空行都必须以回车换行序列(CRLF)终止。值得注意的是即使没有消息体,也必须有空行。1.SIP请求消息SIP请求消息以Request-Line为起始行,以此区别于其他消息。Request-Line包括方法名、Request-URI以及由空格分开的协议版本号。Request-Line同样以CRLF结束。RFC3261规范一共定义了六种请求方法:INVITE请求消息用于邀请用户加入一个呼叫。INVITE消息中有一种消息体称为消息描述符,描述符符合SDP协议标准。消息体包括会话名称和意图、会话持续时间、会话媒体、接收媒体信息等内容。ACK请求消息用于对请求消息的响应消息进行确认,也可以包含消息体。ACK请求与INVITE捆绑使用,当INVITE请求被最终应答时,ACK消息就会被发出,表示主叫方接受对方应答。OPTIONS请求消息用于查询代理服务器支持的方法和会话描述协议。BYE请求消息用于释放已建立的呼叫。主叫方与被叫方都可以发送,等同于普通电话通讯中的挂机操作。CANCEL请求消息用于释放尚未建立的呼叫。CANCEL请求必须与被取消的消息具有相同的CALL-ID,FROM,TO,Cseq标题字段。REGISTER请求消息用于在SIP网络服务器上登记用户的位置信息。UAC可以通过发送REGISTER请求,将自己的SIP地址信息登记到注册服务器中。UAC组播REGISTER请求,接收到此请求的注册服务器记录下用户信息。不过注册记录有有效期的,因此UAC要定时发送REGISTER请求刷新自己的位置信息。一个典型的SIPINVITE请求消息如下所示:INVITEsip:bob@SIP/3.0Via:SIP/3.0/UDP;branchMax-Forwards:70To:Bob<sip:bob@>From:Alice<sip:alice@>;tag=192830Call-ID:66710@CSeq:314159INVITEContact:<sip:alice@>Content-Type:application/sdpContent-Length:142(忽略了Alice的SDP消息体)消息第一行,是请求的类型(INVITE)。接下来是请求头域集合。VIA域包含了Alice接收发送请求的服务器地址()以及一个标志Alice和这个服务器会话事务的分支参数。TO域包含了显示姓名(Bob)和一个SIPURI(sip:bob@),请求将首先传输到这个URI中。From域也同样包含一个显示姓名(Alice)、一个用来标志请求发起者的URI(sip:alice@以及用于身份鉴别的TAG随机参数。Call_ID包含一个全局标志,用来唯一标识这个呼叫。TOTAG,FROMTAG和CALL-ID完整定义了Alice和Bob端到端的SIP关系。Cseq:包含了一个整数和一个请求名字,新请求会顺序递增这个整数。Contact域包含一个SIPURI用来表示访问Alice的直接方式,包括用户名和主机全名组成。VIA域告诉其他元素请求将发送到哪里并且应答到哪里,Contract域则表明将来的请求将发送到哪里。Max-Forwards:最大转发数量是一个整数,用来限制通讯中转发的数量,每转发一次,整数减一。Content-type包含了消息正文的描述Content-length:包含消息正文的长度(字节数)2.SIP响应消息SIP响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。SIP响应起始行为Status-Line,作为请求与响应的区别。Status-Line是由协议版本号、响应状态码和相关协议分析组成,各部分之间用空格字符隔开。状态码是一个三位整数用来区分不同的响应类型,第一位定义响应类型,另外两位对应响应更加详细的说明。SIP协议仅要求应用程序必须理解响应状态码的第一位,允许应用程序不对状态码的后两位进行处理。其中,1xx响应为暂时响应(ProvisionalResponse),用于指示呼叫正在进行,其它响应为最终响应(FinalResponse),用于结束请求消息。表3-2列出了不同类型的SIP响应消息状态。表3-2SIP响应状态码编码类别描述1xx信息表示请求已经收到,可以继续处理请求2xx正确表示呼叫已经被正确接受和处理3xx重定向表示该呼叫需要被重定向处理4xx客户机错误表示该消息存在表达错误,不能被服务器处理5xx服务器错误服务器不能处理该消息6xx全局失败请求无论在哪都不能被处理一个具体的SIP响应消息如下所示:SIP/2.0200OKVia:SIP/3.0/UDPbranch;received=Via:SIP/3.0/UDPbranch;received=Via:SIP/3.0/UDPbranch;received=To:Bob<sip:bob@>;tag=cfFrom:Alice<sip:alice@>;tag=1928301774Call-ID:66710@CSeq:314159INVITEContact:<sip:bob@>Content-Type:application/sdpContent-Length:129(忽略了Bob的SDP消息体)响应的第一行是应答代码(200)和原因(ok),剩下的行包含了头字段。VIA,TO,FROM,CALL-ID,Cseq包头域直接拷贝INVITE请求包中的信息。Bob的SIP电话增加了一个TAG参数。Contract域包含了一个能直接联系到Bob的URI。Content-type和Content_Length域包含了消息体(没有在例子中体现),消息体记录了Bob的SDP媒体信息。第三节SIP会话详述一、SIP工作原理当UAC希望发起会话时,它构造一个INVITE请求要求服务器建立会话。INVITE请求可以被代理服务器转发,并最终到达可接受请求的UAS。这些UAS将询问用户是否愿意接受邀请。选择接受邀请的UAS将发送2xx响应。如果请求不被接受,根据被拒绝的原因,将发送3xx,4xx,5xx或6xx响应。UAS可以在发送最终响应之前发送临时响应通知UAC进度。一个或者多个临时响应收到后,UAC将收到一个或多个2xx响应或最终响应。值得注意的是针对INVITE请求的最终响应会延长一定时间,因此INVITE请求的机制与其它请求不同。最终响应收到后,UAC为每个最终响应根据响应的类型发送ACK。事务遵循同一套规则来完成300和699之间的最终响应,而针对2xx响应的ACK则由UAC发出。二、IP会话实例SIP会话通常包含注册/注销过程,呼叫过程和重定向过程。1.注册/注销过程SIP的注册和注销过程可以动态建立用户的逻辑地址和其当前联系地址之间的映射,将其保存在定位服务器中,来实现呼叫路由和支持用户移动性。注册/注销过程通过REGISTER消息和200成功响应来实现的,具体流程如图3-4所示。图3-4终端到注册服务器注册的过程2.呼叫过程SIP协议呼叫方式有三种:由主叫UAC直接向被叫UAS呼叫,由代理服务器代表主叫UAC向被叫UAS发起呼叫和由主叫UAC在重定向服务器的辅助下进行重定向呼叫。(1)主叫UAC直接向叫UAS呼叫一次最简单的SIP会话建立包括三次握手,如图3-5所示。当主叫UAC要发起呼叫时,就构造并发送一个INVITE消息。被叫收到消息后,回送一个临时响应消息(180RINGING),表示已经收到主叫发来的INVITE消息并正在处理,接着再回送一个成功响应(200ok),表明愿意和主叫建立会话。收到成功响应后,主叫UAC发送ACK确认请求。被叫收到ACK后,呼叫成功建立,多媒体信息流可以开始传输。BYE请求消息被用来终止呼叫。任何一方要终止呼叫,就构造并发送一个BYE请求消息。对方收到后,释放相关资源,并回送一个成功响应,通知当前呼叫已经终止。 图3-5一个最简单的会话过程(2)由代理服务器代表主叫UAC向被叫UAS发起呼叫只有当主叫知道被叫的位置的时候,INVITE消息才能直接发送给被叫。如果主叫不知道被叫的位置,就需要代理服务器解析被叫的位置并将请求发送给他们。UAC要发起呼叫,先将呼叫请求消息发送给本域的出向代理服务器。服务器收到后,在头部字段Via栈中压入自己的地址,再将请求转发,这个过程可能经过多个代理服务器。消息到达被叫域的代理服务器时,服务器向定位服务器查询被叫位置信息并转发请求消息。UAS收到请求后,生成响应消息并回溯请求消息路径,原路返回到UAC。一个典型的通过代理服务器完成的呼叫过程如图3-6所示useragentclient(A)useragentclient(A)proxyserveruseragentserver(B)INVITEliu@200OKACK图3-6通过代理服务器转发信令,建立会话的过程INVITEwang@work200OK(searchlocationserver)ACK(3)重定向过程当主叫用户代理的INVITE请求消息到达重定向服务器,它查找定位服务器发现该呼叫需要重新定向,就构造一个重定向响应消息(状态码为3xx),并和新的目标地址一起回送给主叫用户代理。收到重定向响应消息后,UAC向新的目标地址一一发送INVITE请求,直至收到成功响应并建立呼叫,如图3-7所示useragentclient(A)useragentclient(A)redirectserveruseragentserver(B)INVITEliu@302ACKINVITE200OKACK图3-7重定向呼叫过程(searchlocationserver)第四节其它与SIP相结合的协议一、SIP与其他协议的协作SIP仅涉及会话信令部分,因此需要结合其它IETF协议来建立完善的多媒体结构。例如:预约网络资源的资源预留协议RSVP,传输实时数据并反馈服务质量的实时传输协议RTP,控制实时媒体流的传输的实时流协议RTSP,通过组播发布多媒体会话的会话通知协议SAP,描述多媒体会话的会话描述协议SDP,为公用交换电话网络提供网关控制的媒体网关控制协议MEGACO等。IETF多媒体数据及控制体系协议栈结构如图3-8所示。图3-8IETF多媒体数据及控制协议栈那么,我们下面着重介绍实时传输协议(RTP)和会话描述协议(SDP)。二、传输协议(RTP)1.RTP协议介绍实时传输协议(RTP)是最典型、最广泛的服务于流媒体的传输层协议,VoIP系统普遍采用RTP协议。RTP是用于Internet上针对于一对一或者一对多的多媒体数据流的一种传输协议,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但也可以在TCP或ATM等其它协议上工作。2.RTP协议特点RTP协议有以下特点:(1)协议灵活性RTP协议不实现传输层协议完整功能,也不保证数据实时传输,不支持资源预留,也不提供服务质量保障。此外,部分传输层协议功能(比如流量控制)被上移到应用层完成,既能简化处理又能提高效率。(2)数据流和控制流分离RTP协议的数据报文和控制报文使用不同端口,实现了灵活性和简单性。(3)协议的可扩展性和适用性RTP协议往往通过一个具体的应用进程实现,并且只提供协议框架,开发者可以根据应用的具体要求来充分扩展协议。三、会话描述协议SDPSDP协议的信息结构和功能会话是指一组多媒体发送方和接收方以及双方发送的数据流,这些媒体流是多点到多点信息流,且只在规定的时间区段内存在。SDP协议定义了会话描述的统一格式,告之某会话的存在,并给出参与该会话所必须的信息,但是并不分配多播地址,也不协商编码方案商,而是由下层协议来实现这些功能。除此之外,SDP还可创建专用会话,即对会话描述加密处理。能够使用SDP协议的会话传送协议包括:SAP,SIP,RTSP,HTTP和使用MIME的E-mail。第五节SIP协议的优越性一、H.323与SIP的比较音视频协议H.323和信令控制协议SIP设计之初都是作为多媒体通信的应用层控制(信令)协议,目前一般用于IP电话。功能基本相同,也都是基于RTP实现媒体传输,但设计风格截然不同,H.323是由国际电联提出来的,初衷是把IP电话当作传统电话的升级,只是传输方式由电路交换变成了分组交换。而SIP侧重于将IP电话作为Internet上的一个应用,只是相比于其他应用(如FTP,E-mail等)增加了信令要求。H.323推出较早,采用传统电话信令模式,便于与现有的电话网互通,但相对复杂。二、SIP协议的优点SIP借鉴了其他Internet标准和协议的设计思想,有其突出的优点。1.首先,SIP协议采用基于文本的UTF-8编码方式,易于用Java等语言实现并且易于调试,具有良好的扩展性和灵活性;而H.323采用基于ASN.1和压缩编码规则的二进制方法表示其消息。因此,SIP对以文本形式表示的消息的词法和语法分析就相对简单。2.其次,SIP协议同步进行会话请求和媒体协商等过程,因此呼叫建立时间短,而在H.323中呼叫建立过程和进行媒体参数等协商的信令控制过程是分开进行的。

3.再次,H.323为实现补充业务定义了专门的协议,如H.450.1、H.450.2和H.450.3等。而SIP只要充分利用和简单扩展已定义的头域,就能支持补充业务。此外,低层协议可以为SIP协议层提供分组或字节流业务,可靠或非可靠业务。SIP协议层首选UDP协议,当不能使用UDP协议时,使用TCP协议。4.最后,H.323进行集中式控制。尽管便于管理,但是、H.323中执行会议控制功能的多点控制单元在控制大型电话会议时很可能成为瓶颈。而SIP借鉴了其他的Internet协议,具有分布式的组播功能。

在我国的IP电话领域,采用H.323协议已是定论。但我们必须重视SIP简单灵活、分布式控制等优点。相信在不久的将来,SIP必将伴随软交换机(SoftSwitch)等技术的发展取代H.323成为IP领域内运用最广泛的信令控制协议,

第四章Android平台下SIP协议栈的实现第一节Android平台简介Android是2007年11月5日Google宣布的基于Linux平台的开源手机操作系统,包括操作系统、中间件、用户界面和应用软件。它采用了软件堆层架构,主要分为三部分:底层以Linux核心为基础,由c语言开发,只提供基本功能。中间层包括函数库Library和虚拟机VirtualMachine,由C+开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以java编写。Android操作系统的组件如图4-1所示图4-1Android操作系统组件以下所有的应用程序都由一系列的服务和系统组成,包括:

一个可扩展的视图(Views)可以用来建立应用程序,包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons)以及一个可嵌入的web浏览器

内容管理器(ContentProviders)使得应用程序的数据(如联系人数据库)可以相互访问或者共享。

一个资源管理器(ResourceManager)提供本地字符串,图形,和分层文件等非代码资源的访问。

一个通知管理器(NotificationManager)使得状态栏中可以显示应用程序对客户的通知信息。

一个活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。

Android程序库一个被Android系统中各种组件使用的C/C++库集,通过Android应用程序框架为开发者提供服务。

Android运行库一个提供了JAVA编程语言核心库的大多数功能的核心库。第二节Android平台下SIP协议栈实现一、SIP协议栈的选择要开发一个完整的SIP协议栈是一件相当复杂的工程,所以我们希望在网络上找到开源协议栈的帮助。目前SIP开源协议栈主要有六种:OPAL、VOCAL、sipX、ReSIProcate、oSIP和SIPDroid,各有千秋,我们选择的是SIPdroid。SIPdroid协议栈是按照RFC3261(SIP)标准的一个公开源码的免费协议栈,可以应用与任何支持POSIX的系统当中,所以在嵌入式系统中得到广泛的应用。SIPDroid软件架构非常先进,高内聚低耦合,层次分明,便于开发者自己定制新功能。SIPDroid支持接入方式,包括WIFI、3G、EGPRS、蓝牙。其程序框架如图4-2所示图4-2SIPDroid程序框架1.界面层:显示界面,为用户提供各种操作的接口。2.核心层:软件核心处理层,启动服务,处理各种UI时间,维持配置文件信息,保存全局属性变量。其中包括UserProfile(用户配置文件属性),UserAgent(用户事件代理)。SipDroidEngine(SIP核心处理,调度所有的UI的事件,参数设计以及服务的启动),RegisterAgent(注册服务代理)。3.会话层:负责完成会话邀请、来电的业务处理。4.服务层:提供所有SIP消息模型,完成SIP消息的处理流程。包括发送,接收,封装,解码等。5.网络层:监听SIP消息并且交付给SIP层,将封装好的SIP消息交付给传输层进行传输。6.传输层:负责数据的传输与控制,采用了TCP、UDP协议。二、SipDroid数据传递流程只有先了解SIPdroid的数据传递流程,才能明白它的工作机制。SIPDroid的数据流主要有SIP信令消息和会话音频数据两种,分别使用不同的传输渠道。如图4-3所示图4-3SIPDroid数据传输流程图1.信令数据的传输用户在UI层的操作(比如拨号、接听等),会广播给SIPdroidEngine类,SIPdroidEngine会根据操作类型交付给UserAgent类或者RegisterAgent类,处理后产生的不同请求由SIPDroidProvide类解读,并将产生的SIP消息封装成包,之后交付给UdpTransport类,Udptransport是个接口类,SIPdroidProvider与UdpProvider之间的接口,可以提供数据传送、监听Udp数据包和封装或分解Udp数据包等服务。UdpProvider会调用UdpSocket,将目标地址映射至UdpSocket,最终调用Java的DatagramSocket将数据传输出去。当收到来自网络的数据包时,数据传递顺序则相反。2.RTP数据包的传输RTP数据包的简要传输流程如下:当终端把采样到的音频数据压缩编码后需要封装成RTP包传输出去时,会先建立一个虚拟的RTP传送器RtpStreamSender和一个用于接收RTP数据包的虚拟RTP接收器RtpStreamReceiver,这两个继承于线程,在对话建立后就不断运行。RTPStreamSender会把音频数据压缩编码后交付UDPtransport(或TCPtransport)处理,UDPtransport之后会调用RtpSocket将其封装成RTP包,,读取目标IP地址与协商好的RTP端口号,将数据传输出去。当收到来自网络的RTP数据包时,数据传递顺序则相反。三、注册流程代码注册流程如图4-4所示:图4-4SIPDroid注册流程图根据SIP协议内容,在以下几种情况之下需要重新发送注册请求:启动SIP服务时、注册有效期已过、系统重启、有效连接断开重连。当需要发送注册请求消息时,要先调用MessageFactory.createRegisterRequest函数构建请求消息,将用户帐号信息、注册服务器地址等必要信息填充进请求消息的各字段,然后建立一个用来监管本次信令流程的线程TransactionClient。TransactionClient会调用SIPProvider来发送请求消息,同时会监听注册服务器的响应消息。当收到响应消息后,将响应消息传递给上层的SIPProvider进行处理。四、拨号流程代码拨号流程如图4-5所示:图4-5SIPDroid拨号流程图拨号请求由UI通过Receiver广播信息交给SIPDroidEngine处理,在SIPDroidEngine上鉴别目标帐号以及本地帐号是否为空,然后交给UserAgent处理。UserAgent调用call(Stringtarget_url,booleansend_anonymous)判断是否匿名拨号,接着通过该方法创建一个ExtendedCall对象,以提供给SIP协议栈使用,然后经过ExtendedCall的call方法处理之后,由ExtendedCall调用ExtendedInviteDialog来发送invite请求。由InviteDialog调用InviteTransactionClient的request方法,并由InviteTransactiongClient来监管本次信令流程。五、来电处理流程代码来电处理流程如图4-6所示:图4-6来电处理流程图启动程序时SIPDroidEngine创建并启动一个UdpProvider线程,开始监听收到的信息,当收到信息后,先判断消息是否大于最小长度(默认为0),如果不是则丢弃,之后调用onReiceivedPacket方法,把对象传出到UdpTransport,由UdpTransport把消息封装成SIP的扩展消息Message,再通过onReceivedPacket方法传出到SIPProvider对象,最后将在SIPProvider的processReceivedMessage方法中处理收到的消息。processReceivedMessage会鉴定该消息是否为SIP消息,若不是就会丢弃该消息,然后通过查看Via字段的地址跟数据报源地址是否一致来判断该SIP消息是否经过其他代理服务器转发。如果是,则修改Via字段,这样就可以优化寻址路径。最后从listenrs(map)中取出相应的listenr,通过响应的listenr中的OnReceivedMessage来处理具体SIP请求。如果是INVITE请求,就启动来电提示界面,如果本地用户选择接听,就发送请求接受响应,即200(ok)响应,若用户不愿接听,则发送4xx错误响应。

第五章加密模块的嵌入第一节加密算法的选择一、RC4流密码考虑到加密成本等因素,我们选择的加密算法是RC4流密码,该算法简洁易于软件实现,加密速度快,安全性比较较高。RC4算法非常简单,易于描述:用从1到256个字节(8到2048位)的可变长度密钥初始化一个256个字节的状态矢量S,S的元素记为S[0],S[1],⋯,S[255],从始至终置换后的S包含从0到255的所有8比特数.对于加密和解密,字节K由S中256个元素按一定方式选出一个元素而生成.每生成一个K的值,S中的元素就被重新置换一次.1.初始化S开始时,S中元素的值被置为按升序从0到255,即s[0]=0,S[1]=1,⋯,S[255]=255.同时建立一个临时矢量T.如果密钥K的长度为256字节,则将K赋给T.否则,若密钥长度为keylen字节,则将K的值赋给T的前keylen个元素,并循环重复用K的值赋给T剩下的元素,直到T的所有元素都被赋值.这些预操作可概括如下:/*初始化*/fori=0to255doS[i]=i;T[i]=K[imodkeylen]然后用T产生S的初始置换.从S[0]到S[255],对每个S[i],根据由T[i]确定的方案,将S[i]置换为S中的另一字节:/*S的初始序列*/j=0fori=Oto255doj=(j+s[i]+T[i])mod256swap(s[i],s[j]);因为对S的操作仅是交换,所以惟一的改变就是置换.S仍然包含所有值为0到255的元素.2密钥流的生成矢量S一旦完成初始化,输人密钥就不再被使用.密钥流的生成是从s[0]到S[255],对每个S[i],根据当前S的值,将S[i]与S中的另一字节置换.当S[255]完成置换后,操作继续重复,从S[0]开始:/*密钥流的产生*/i,j=0while(true)i=(i+1)mod256j=(j+S[i])mod256swap(sEi],s[j])t=(sEi]+s[j])mod256;k=S[t]加密中,将k的值与下一明文字节异或;解密中,将k的值与下一密文字节异或。二、RC4的java实现RC4的java实现的部分核心代码如图5-1和5-2所示图5-1RC4java实现核心代码1图5-2RC4java实现核心代码2第二节加密算法的嵌入一、改写SIPDroid的UDP收发函数通过研究SIPDroid的源代码,我们发现SIPDroid在对UDP消息进行封装时是将语音信息编码为BYTE类型处理的,因此我们选择不改变信令协议栈和媒体传输协议栈的任何实现代码,仅仅只是将RC4算法模块封装成为src中的一个包,改写了系统的UDP收发函数,使其在对语音编码信息封装前先调用RC4算法进行加密,再将加密后的密文打包。解密时则进行相反的过程。对系统UDP收发函数的改写部分代码如图5-3所示图5-3改写后的UDP收发函数二、密钥的处理由于RC4是对称加密,因此加解密使用同一个密钥。考虑到如果将密钥采用明文传输,则讨论本套语音加密系统的安全性将毫无意义,而如果采用非对称加密如RSA来传递密钥,需要的加密成本太高。因此选择了客户端自己设置加密密钥或者解密密钥的方案。三由本系统想到的VoIP安全性分析1.本系统的安全性分析本系统在实现SIPDroid系统语音通信的基础上实现了对通话语音编码数据先进行RC4加密再传输,安全性建立在RC4加密算法被攻击的风险和通话双方密钥的保存。从整个Android应用层来看,权限控制也是实现语音通信安全很重要的一方面,假如另一款系统也拥有得到用户通信语音数据的权限,那么用户的语音通话安全依旧存在风险。因此虽然在软件的设计上加入了让用户选择设置使用SIPDroid还是Android系统自带服务来进行语音通信的模块与界面,但未能从Android广播机制来实现对语音数据的控制。2.VoIP的安全威胁对于日渐得到认可的VoIP来说,显然它面临的安全性挑战相当多样性,应对的手段也不仅限于加密。当前VoIP存在的安全漏洞和面临的威胁主要有以下几种:(1)VoIP产品本身存在一定的安全漏洞目前VoIP各厂家都有独立的语音服务器产品,而且往往基于不同的操作系统开发。主流操作系统都不同程度地存在安全漏洞,并且无法保证这些产品是否已经弥补了安全漏洞。(2)DoS攻击问题VoIP系统实现业务传输以及系统管理需要很多端口,如果开放这些端口而又不加强呼叫建立的认证协议,就为DoS攻击提供了可能。SIP协议和H.323协议都采用RTP,H.323会话可能使用7个~11个端口号,其中只有两个为静态的;SIP至少使用3个端口号,其中只有一个为静态的。然而,由于VoIP会话同时支持TCP和UDP,这些协议可以从防火墙的内部或者内部启动,而且标准防火墙的配置是所有可能使用的潜在应用端口都是打开的。因此对于VoIP应用来说,就意味着会打开大量端口,从而产生了大量安全漏洞。(3)VoIP的很多协议本身也存在着安全漏洞默认状态下的SIP消息采用未加密的明文格式传输,容易受到截获、篡改和窃听攻击。基于H.323、SIP的VoIP都可由RTP来承载。而这种协议导致很多关键信息如起始和目的地址容易被截获及篡改。如果RTP会话未经加密,那么用户的身份信息或者会话内容被窃取、篡改或窃听。(4)监听语音由于VoIP数据在数据网络上传输,与PSTN等电路交换模式的通信网相比更容易遭受窃听攻击,常用窃听工具如TCPDUMP、SNIFFER等通过侦听就有可能得到语音通信的内容。对于开放协议来说,一小段媒体流的重放不需要前后信息的关联。如果有人窃听记录所有信息,并加以重放,将严重影响通信内容的安全。(5)对VoIP服务的盗用尽管IP电话机无法并线的方式,但通过IP网络窃听方式窃取登录密码同样能够获得话机的权限。窃取用户帐户与密码信息后,攻击者可冒充用户身份进行大量语音通话,使其蒙受高额话费损失。同时,攻击者还能够向特定终端发送SIP控制包,将用户当前的语音呼叫重定位至不同的设备,使用户无法与呼叫目标通话。(6)对通话双方话音实时内容的恶意篡改基于IP话音数据的分组特性,只要跟踪并锁定通过H.323或SIP建立呼叫的双方,就能故意在通话过程中实时加入恶意话音数据而导致沟通双方产生误解,实现攻击目的。(7)对数据网络的安全威胁随着VoIP的逐步普及,以TCP/IP协议栈为基础的IP语音设备如各种IP语音终端和服务器也面临着病毒、蠕虫和木马程序的攻击。病毒不但会严重降低VoIP业务的性能,甚至会传播到数据网络的服务器,使数据网络遭到破坏。3.解决方案针对上述威胁有一系列的VoIP安全机制解决方案:选择合适的VoIP设备并及时加强软硬件的安全升级尽管

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论