基于iOS操作系统的移动终端语音端到端加密方法
技术领域
本发明涉及信息安全,移动通信,及手机操作系统领域,特别提出了一种应用于iOS操作系统的移动终端语音端到端加密方法。
背景技术
随着通信技术的飞速发展和移动互联网时代的到来,人们的工作和生活已经越来越离不开智能手机。而iOS是最受欢迎的智能手机操作系统之一,iOS系统由于其更好的稳定性、流畅性、功耗控制和后台机制吸引了越来越多的高品质用户,iOS用户通常对通信安全、隐私保护等有着更高的要求。但是随着伪基站的猖獗和窃听技术的大规模传播,特别是随着斯诺登爆料的“棱镜门”窃听事件的发生,移动终端的通信安全越来越得不到保障。因此,提出一种切实可行的基于iOS系统的端到端保密通信方法迫在眉睫。
目前加密通信的实现方法主要有以下两类,一类是利用硬件设备进行加密,一类是利用软件加密。
利用硬件设备加密通信的技术,如申请号为201010556715.7的发明专利“移动通信端到端语音加密蓝牙手持设备及语音加密方法”。该发明主要包括FPGA芯片处理模块,语音加解密算法模块,蓝牙收发模块,存储模块,电源模块共五个模块;FPGA芯片处理模块是整个系统进行语音加解密处理的核心硬件平台;语音加解密算法模块是实现语音加解密处理的算法程序;蓝牙收发模块与手机蓝牙进行无线连接,对语音信号进行收发及预处理;存储模块存储语音加解密算法模块和蓝牙初始化程序;电源模块连接其它模块提供所需的特定工作电压。然而,该方法需要引进蓝牙手持设备,在一定程度上增加了额外的开销并且不方便携带。
如申请号为201410822455.1的发明专利“一种具有通话加密功能的移动终端及其加密通话的方法”。该发明专利中的移动终端包括无线收发模块,音频处理模块,发生器模块,受话器模块,加密模块,加密-非加密信号切换模块和CPU处理模块共七个模块。该方法通过硬件电路实现通话加密,不便于业务扩展,并且需要通话双方手持相同的通话设备,成本较高。
论文《一种电路域加密通信方案》提出的电路域加密方案包括终端部分和服务器部分;服务器部分包括密钥管理中心和用户管理中心,密钥管理中心的主要功能是生成密钥,并使所生成的密钥进行安全TF卡的发卡功能,用户管理中心主要提供用户管理的功能,包括对终端上安全TF卡的各种管控功能;终端部分分为手机和安全TF卡,对于电路域语音的所有加密相关功能在安全TF卡内实现,包括终端之间的身份认证,密钥协商和语音媒体流的加解密功能,手机负责加密通信的应用以及加密通信相关的UI和逻辑控制。该方案通过扩展外部安全TF卡实现认证和加密语音通信,而iOS在系统上无法扩展TF卡,因此本方案不适用于iOS系统。
利用软件加密通信的技术,如申请号为201310219661.9的发明专利“一种面向Android系统的端到端语音加密方法”。该专利技术包括语音采集播放模块、Android多媒体模块、语音编码解码模块、编码JNI接口模块、speex编解码模块、语音网络传输模块、加解密JNI接口模块、加解密模块共八个模块;所述的方法基于ZRTP技术,通过加解密JNI接口模块调用加解密模块实现音频数据的加解密,通过语音网络传输模块对语音数据进行网络发送和网络接收。然而,该发明不提供身份认证功能,容易遭受中间人攻击,此外,该方法仅适用于Android系统。
如申请号为201310046868.0的发明专利“一种面向Android系统移动终端的语音端到端加密方法”,命名为ERTP。当用户选择加密模式进行通信时,双方在会话初始阶段完成身份认证和密钥协商。当通话建立后,会话双方使用自己的私钥以及协商好的会话密钥,对发送的载有语音的RTP包进行DSA签名,然后用AES算法进行加密,最后发送。对于接收到的RTP包,先用AES解密,再进行DSA签名验证,验证通过后再对RTP包进行处理。然而,该发明基于公钥管理体制对数据包进行签名,实现开销大;此外,该方法仅能应用于Android系统,无法应用于iOS系统。
如申请号201510450606.X的发明专利“面向Android系统的移动保密终端实现方法”。该方法包括Android用户注册模块,Android用户管理模块,Android呼叫模块,SIP信令处理模块,密钥协商模块,服务器密钥协商模块,语音桥接模块,加密通话模块,服务器加密通话模块和SIP中级模块共十个模块。该方法支持两种加密通信模式:其一,在通话双方都是保密终端时,可实现针对Android操作系统移动终端端到端一次一密的加密语音通信,即端到端加密通信;其二,在通话双方只有一方是保密终端时,可实现针对Android操作系统移动终端到服务期间的一次一密的加密语音通信,即保密终端到服务器半程加密通信模式。然而,该方法需引进服务器加解密模块,在仅需要端到端加密的情况下,略显复杂;另外,该发明仅适用于Android操作系统。
如申请号为2011100447621.1的发明专利“一种用于VoIP的实时数据加密传输方法”。该方法包括通信建立阶段和通信数据传输阶段,在两个阶段分别采用了不同的数据加密策略。然而,该发明在数据加密阶段采用一种改进的AES解密算法,仅对部分数据段进行加密,该方法严重降低了数据的安全性,不能保证通信保密,并且该方法没有涉及到在iOS系统上的具体实现。
如申请号201210558804.4的发明专利“IP分组网中VOIP多层加密方法和系统”。该专利方法包括终端与内部数据网内对应的虚拟专用网关建立虚拟专网通道并形成网络层安全隧道,用于进行网络层安全保护传输;终端与内部数据网内的SIP服务器建立安全关联,形成内层SIP信令传输隧道,用于进行传输层安全保护传输;终端发起对对端终端的VoIP数据端到端隧道,用于进行RTP层安全传输。然而,该方法需要创建一个虚拟专用网,然而虚拟专用网创建过程往往比较复杂,而且不一定能保证其安全性,并且该方法没有涉及到在iOS系统上的具体实现。
论文《VoIP的语音动态加密方法研究》使用一种对语音进行分组加密的动态加密方法,通过对加密算法的动态选择,以及密钥的动态分配来增加加密的复杂度,利用数字信封技术来保证密钥的安全传输,提高通话质量。然而,该方法需要动态选择加密算法,复杂度较高,容易造成较大时延;并且该方法不提供身份认证功能,不能保证通信双方的身份安全,并且该方法没有涉及到在iOS系统上的具体实现。
发明内容
本发明的目的是克服现有技术存在的缺陷,提供一种面向iOS操作系统、具备身份认证和密钥协商功能,加密过程采用一话一密,有效防止中间人攻击及任何非法窃听,并且无需添加任何硬件设备,可适用于Internet网络和3G/4G移动网络的基于iOS操作系统的移动终端语音端到端加密方法。
实现本发明目的的技术方案是:一种基于iOS操作系统的移动终端语音端到端加密方法,基于iOS移动操作系统,设计一套端到端语音加密方案,修改现有的SIP协议栈,使得在通过SIP协议建立会话时实现通话双方的身份认证和密钥协商,随后建立RTP加密通路,通过加密RTP数据包,实现端到端通信保密的目的。
本发明包括如下7个模块:呼叫处理模块、身份认证模块、密钥协商模块、语音加解密处理模块、语音输入输出模块、协议解析模块和网络收发模块。所述的呼叫处理模块周期性检测是否有呼叫事件发生,当发生呼叫发起事件时,构建一个INVITE类型的sip消息,当有接收来电事件时,通过响铃的方式提醒用户接听;包括iOS呼叫处理类模块,iOSOutCallViewController呼叫发起模块和iOSInCallViewController呼叫响应模块三个子模块;所述的iOS呼叫处理类模块每隔1S检测是否有sip事件发生,当发生呼叫发起事件时,触发iOSOutCallViewController呼叫发起模块,当发生来电接收事件时,触发iOSInCallViewController呼叫响应模块;iOSOutCallViewController呼叫发起模块在用户发起呼叫时,接收用户输入的被叫号码,构建一个INVITE类型的sip消息;iOSInCallViewController呼叫响应模块在有来电时,通过响铃提醒用户接听,当用户接听电话或挂断电话时,停止响铃。
所述的身份认证模块在加密通话建立前,验证通话双方的身份;包括iOS身份认证接口类模块,认证码生成类模块和认证码验证类三个子模块;身份认证过程包括主叫方发送身份认证码,被叫方验证身份认证码,被叫方发送身份认证码,主叫方确认四个步骤,具体实现如下:
1)主叫方发送身份认证码:认证码生成模块通过调用随机数生成器生成随机数R1,将R1附着在主叫方号码ID1之后,用主密钥加密主叫方号码和随机数(ID1||R1),得到主叫方身份认证码,将身份认证码填充在INVITE类型的sip消息的Authentication-Info头域,随后发送给被叫方;
2)被叫方验证身份认证码:被叫方接收主叫方发送过来的INVITE类型的sip消息,取出Authentication-Info头域的内容即为主叫方身份认证码,认证码验证模块通过主密钥解密身份认证码得到主叫方的号码ID1和随机数R1,将主叫方的号码和INVITE消息的from头域的号码进行比较,若一致,则表明主叫方身份有效,否则,主叫方身份无效,通话结束;
3)被叫方发送认证码:主叫方身份认证通过后,认证码生成模块通过调用随机数生成器生成随机数R2,将R1、R2附着在被叫号码ID2之后,用主密钥加密(ID2||R1||R2),得到被叫方身份认证码,将该身份认证码随着200OK类型的sip消息发送给主叫方;
4)主叫方确认:主叫方接收被叫方的身份认证码,通过主密钥解密身份认证码,得到被叫方号码和随机数R1、R2,将被叫方号码和sip消息from头域的号码进行比较,将随机数R1和之前1)中生成的随机数进行比较;若两者均一致,则说明被叫方身份有效,向被叫方发送附带有主密钥加密的R2的Ack消息;否则,说明被叫方的身份无效,通话结束。
所述的密钥协商模块在通话双方的身份认证通过后,对加密通话过程所需的会话密钥进行协商;包括iOS密钥协商接口类模块,协商初始模块和密钥生成模块三个子模块;密钥协商过程包括主叫方生成密钥协商内容,被叫方生成密钥协商内容,主叫方计算会话密钥,被叫方计算会话密钥四个步骤,其具体实现如下:
1)主叫方生成密钥协商内容:密钥初始模块调用随机数生成器为主叫方生成一个大素数p,并选择p的本原根g,调用随机数生成器生成随机数X1作为主叫方的私钥,将(p,g,X1)代入公式Y=gXmodp得到公钥Y1=gX1modp,将(p,g,Y1)作为协商内容发送给被叫方;
2)被叫方生成密钥协商内容:被叫方接收主叫方密钥协商内容(p,g,Y1),密钥初始模块调用随机数生成器,生成随机数X2作为被叫方私钥,将从主叫方接收到的密钥协商内容(p,g)和私钥X2代入公式Y=gXmodp得到公钥Y2=gX2modp,将(Y2)作为密钥协商内容发送给主叫方;
3)主叫方计算会话密钥:主叫方接收被叫方发送的协商内容(Y2),密钥生成模块通过将(p,X1,Y2)代入公式Ks=YXmodp,得到的Ks=gX1X2modp即为会话密钥;
4)被叫方计算会话密钥:密钥生成模块通过将(p,X2,Y1)代入公式Ks=YXmodp,得到的Ks=gX1X2modp即为会话密钥。
所述的语音输入输出模块调用iOS系统AVFoundation框架中的音频接口采集和播放通话语音;包括iOSAudioSession录音模块和iOSAudioPlayer放音模块两个子模块;所述的iOSAudioSession录音模块调用iOS系统AVFoundation框架中的AVAudioSession接口采集通话语音,并将其输入到语音加解密处理模块;所述的iOSAudioPlayer放音模块调用iOS系统AVFoundation框架中的AVAudioPlayer接口播放解密后的通话语音。
所述的语音加解密处理模块实现通话过程中语音数据的加密和解密处理;包括iOS音频处理接口类模块,语音编解码模块,加解密控制模块和消息认证模块四个子模块;电话接通后,通话双方建立加密语音通道,实现加密语音数据端到端传输,包括加密通话语音和解密通话语音两个过程。
其中,加密通话语音是指加密自身产生的语音数据,包括编码,加密,添加语音包ID三个步骤,其具体实现如下:
1)编码:将从iOSAudioSession录音模块接收到的语音以链表的形式排列,形成编码链表,开启编码线程,为编码链表中的数据依次进行PCMA编码;
2)加密:将编码后的语音数据以链表的形式排列,形成加密链表,开启加密处理线程,采用密钥生成模块中得到的会话密钥依次对加密链表中的语音数据进行AES加密处理,得到加密语音数据;
3)添加语音包ID:将加密后的语音数据和自身号码进行Hash运算,得到语音包ID。
其中,解密通话语音是指解密接收到的通话对方的语音,包括验证语音包ID,解密,解码三个步骤,其具体实现如下:
1)验证语音包ID:接收通话对方RTP数据包的加密语音数据和语音包ID,将加密语音数据和对方的号码进行Hash运算,将得到的内容和语音包ID进行比较,若一致,则表明该RTP数据包有效,否则,该RTP数据包无效,丢掉该包;
2)解密:将待解密的语音数据以链表的形式排列形成解密链表,开启解密处理线程,采用密钥生成模块中得到的会话密钥依次对解密链表中的语音数据进行AES解密处理;
3)解码:将2)中得到的解密后的语音数据以链表的形式排列,形成解码链表,开启解码线程,解码线程为解码链表中的数据依次进行PCMA解码,得到原始语音数据,并将原始语音数据输入到iOSAudioPlayer放音模块。
所述的协议解析模块所述的协议解析模块(6)对通信过程中的SIP信令包和RTP数据包进行封装或解析,包括iOSSIP协议解析类模块和iOSRTP协议解析类模块两个子模块。所述的iOSSIP协议解析类模块对通话建立过程中的SIP信令包进行封装和解析;在身份认证阶段,将身份认证码填充到SIP消息的Authentication-Info头域,并从对方的SIP消息的Authentication-Info头域取出相应的内容作为身份认证码;在密钥协商阶段,将密钥协商内容填充到SIP消息的Alter-Info头域,并从对方的SIP消息的Alter-Info头域取出相应的内容作为密钥协商内容。所述的iOSRTP协议解析类模块在加密通话阶段实现RTP数据包的封装和解析,将加密语音数据填充在RTP数据包的数据段,扩展RTP头域,将语音包ID填充在扩展头域,并从对方的RTP数据包的数据段和扩展头域取出加密语音数据和语音包ID。
所述的网络收发模块通过WiFi/3G/4G信号从网络中收发SIP信令包和RTP数据包,包括SIP信令包收发模块,RTP数据包收发模块和iOS网络监听类模块三个子模块。所述的SIP信令包收发模块将待发送的SIP信令包以队列的形式排列,形成待发送SIP信令包,并将接收到的SIP信令包以队列的形式排列,依次输入到iOSSIP协议解析类模块。所述的RTP数据包收发模块将待发送的RTP数据包以队列的形式排列,形成待发送RTP数据包,并将接收到的RTP数据包以队列的形式排列,依次输入到iOSRTP协议解析类模块。所述的iOS网络监听类模块通过监听的方式每隔1S检测是否有待发送的SIP信令包和RTP数据包,将待发送的SIP信令包和RTP数据包通过WiFi/3G/4G信号发送出去;同样,每隔1S检测是否有接收到的SIP信令包和RTP数据包,将接收到的SIP信令包输入到SIP信令包收发模块,将接收到的RTP数据包输入到RTP数据包收发模块。
采用上述技术方案后,本发明具有以下积极的效果:
(1)本发明无需添加任何硬件设备实现语音加密;
(2)本发明无需第三方密钥管理中心完成密钥协商,实现一话一密;
(3)本发明适用于Internet网络和3G/4G移动网络。
附图说明
为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1为本发明的应用场景图;
图2为本发明的整体原理结构图;
图3为本发明的加密通话流程图;
图4为本发明的通话建立流程图;
图5为本发明的身份认证原理图;
图6为本发明的密钥协商原理图;
图7为本发明的语音处理流程图;
图8为本发明的RTP包接收流程图;
具体实施方式
(实施例1)
图1所示,为本发明的应用场景图。本发明适用于能通过WiFi/3G/4G网络进行SIP通话的iOS系统移动终端。当双方需要进行加密语音通信时,通信双方首先通过双向身份认证和密钥协商后,建立加密语音会话,语音在发送端加密并在接收端解密,实现端到端加密语音通信。
图2所示,为本发明的整体原理结构图。本发明包括以下七个模块:呼叫处理模块1,身份认证模块2,密钥协商模块3,语音输入输出模块4,语音加解密处理模块5,协议解析模块6和网络收发模块7。所述的呼叫处理模块1用于处理呼叫发起事件和响应来电事件,包括iOS呼叫事件处理类模块1-1、iOSOutCallViewController呼叫发起模块1-2和iOSInCallViewController呼叫响应模块1-3三个子模块;所述的身份认证模块2在通话建立过程中,实现通话双方的身份认证,包括iOS身份认证接口类模块2-1、iOS认证码生成模块2-2和iOS认证码验证模块2-3三个子模块;所述的密钥协商模块3在通信双方的身份验证通过后,协商通话过程中的会话密钥,包括iOS密钥协商接口类模块3-1、协商初始模块3-2和密钥生成模块3-3三个子模块;所述的语音输入输出模块4调用iOS系统音频接口采集和播放通话语音,包括iOSAudioSession录音模块4-1和iOSAudioPlayer放音模块4-2两个子模块;所述的语音加解密处理模块5为通话语音进行加密和解密处理,包括iOS音频处理接口类模块5-1、语音编解码模块5-2、加解密控制模块5-3和消息认证模块5-4四个子模块;所述的协议解析模块6对SIP信令包和RTP数据包进行封装和解析处理,包括iOSSIP协议解析类模块6-1和iOSRTP协议解析类模块6-2两个子模块;所述的网络收发模块7将待发送的SIP信令包和RTP数据包通过WiFi/3G/4G网络发送出去,或者从网络中接收通话对方的SIP信令包和RTP数据包,包括SIP信令包收发模块7-1,RTP数据包收发模块7-2和iOS网络监听类模块7-3三个子模块。
图3所示为本发明的加密通话流程图。加密通话的建立和完成一共包括发起呼叫,身份认证,密钥协商,通话建立,加密通话和通话结束六个步骤,其具体实现如下:
1)发起呼叫:主叫方发起呼叫,向SIP服务器发送带有被叫方号码的INVITE消息,SIP服务器将主叫方的INVITE消息转发给被叫方;
2)身份认证:双方通过在INVITE消息及其响应消息的头域添加身份认证字段,验证对方的身份是否真实,实现双向身份认证;
3)密钥协商:双方通过在INVITE消息及其响应消息的头域添加密钥协商字段,通过对方的密钥协商内容,计算得到会话密钥;
4)通话建立:在通话双方完成双向身份认证并且成功协商会话密钥后,建立加密通话;
5)加密通话:将双方的会话语音加密后发送给对方,并且解密对方的会话语音,实现语音端到端加密传输;
6)通话结束:当通话一方决定结束通话时,向对方发送BYE消息,对方接收到BYE消息后发送一个确认消息,通话结束。
图4所示,为本发明的通话建立流程图。首先,主叫方发起呼叫,双方进入身份认证阶段;若通话双方有一方身份认证不通过时,结束通话,若通话双方身份认证均通过后,进入密钥协商阶段;若通话双方成功协商密钥,得到一致的会话密钥,则接通电话,进行加密语音通信,否则,通话结束。
图5所示,为本发明的身份认证原理图。主叫方发起呼叫时,根据对方号码生成一条INVITE类型的SIP消息,并在SIP消息的Authentication-Info头域添加经过AES加密的身份认证码,该身份认证码包括自身的号码和一个随机数R1,将该INVITE类型的SIP消息发送给SIP服务器;SIP服务器收到该INVITE消息后向主叫方发送一条“100Trying”响应消息,并根据被叫方的号码,将该INVITE消息转发给被叫方;被叫方收到INVITE消息后,返回“180Ringing”响应消息,并通过解密Authentication-Info头域的内容得到对方的号码和随机数R1,比较对方的号码和SIP消息from域的号码是否一致,若一致,表明通过认证,生成一条200OK类型的SIP消息,并在该SIP消息的Authentication-Info头域添加经过AES加密的身份认证码,该身份认证码包括自身的号码、接收到的随机数R1和新生成的随机数R2,通过SIP服务器将该SIP消息发送给主叫方;主叫方收到被叫方的200OK消息,通过解密Authentication-Info头域的内容得到对方的号码和两个随机数R1、R2,比较对方的号码和SIP消息from头域的号码是否一致,判断随机数R1是否和之前发送的随机数一致,若两者均一致,则表明对方身份通过验证,向对方发送一条Ack消息,并附带通过AES加密的随机数R2;被叫方收到Ack消息后,通过解密得到R2,验证R2是否和之前发送的随机数一致,若一致,则表明双向身份认证通过,进入密钥协商阶段。
图6所示,为本发明的密钥协商原理图。在身份认证的最后一阶段,主叫方发送Ack确认消息后,开始为密钥协商做准备,通过随机数产生器生成一个大素数p,选择p的本原根g,通过随机数产生器生成私钥X1,通过公式Y=gXmodp计算得到公钥Y1=gX1modp,将用主密钥加密后的Y1||p||g通过SIP服务器发送给被叫方;被叫方收到消息后用主密钥解密,通过随机数产生器生成私钥X2,并通过公式Y=gXmodp计算得到公钥Y2=gX2modp,将用主密钥加密后的Y1||Y2发送给主叫方;主叫方收到消息后用主密钥解密得到Y1||Y2,当接收到的Y1是自己的公钥时,通过公式Ks=Y2X1modp得到会话密钥Ks=gX1X2modp,将Ack消息和用Ks加密的双方身份信息ID1||ID2发送给被叫方;被叫方收到消息后,用通过公式Ks=Y1X2modp得到的会话密钥Ks=gX1X2modp解密消息得到ID1||ID2,当ID1||ID2为通话双方的身份信息时,则完成密钥协商,进入端到端加密通话阶段。双方得到的Ks为加密通话阶段的会话密钥。
图7所示,为本发明的语音处理流程图。通话过程中,通信双方的语音处理均包括语音发送处理和语音接收处理。
语音发送处理包括录音、编码、加密、散列生成语音包ID、RTP封包和RTP包发送六个步骤,其具体实现如下:
1)录音:调用iOS系统AVFoundation框架中的AVAudioSession接口,采集通话语音;
2)编码:对通话语音进行PCMA编码;
3)加密:对编码后的语音数据进行AES加密,得到加密语音数据;
4)散列生成语音包ID:将加密后的语音数据和发送方的号码进行hash运算得到语音包ID;
5)RTP封包:将加密语音数据填充在RTP包数据段,扩展RTP头域,将语音包ID填充在扩展头域,封装RTP数据包;
6)RTP包发送:将封装好的RTP数据包通过WiFi/3G/4G网络发送出去。
语音接收处理包括RTP包接收、RTP包解析、语音包ID认证、解密、解码和放音六个步骤,其具体实现如下:
1)RTP包接收:通过WiFi/3G/4G网络接收RTP数据包;
2)RTP包解析:取出RTP包的数据段和扩展头域的内容,则数据段的内容为加密语音数据,扩展头域的内容为语音包ID;
3)语音包ID认证:将加密语音数据和对方的号码进行Hash运算,将得到的内容和2)中的语音包ID进行比较,若一致,则该包为有效的RTP数据包,否则,丢掉该包;
4)解密:对有效的RTP数据包的加密语音数据进行AES解密;
5)解码:对4)中解密后的数据进行解码,得到原始语音数据;
6)放音:调用iOS系统AVFoundation框架中的AVAudioPlayer接口,播放5)中得到的原始语音数据。
图8所示,为本发明的RTP包接收流程图。接收到RTP包后,通过判断RTP包扩展头域的语音包ID是否有效,若有效,则对RTP包的数据段进行解密处理,若无效,则丢弃该RTP包。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。