[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN103974241B - 一种面向Android系统移动终端的语音端到端加密方法 - Google Patents

一种面向Android系统移动终端的语音端到端加密方法 Download PDF

Info

Publication number
CN103974241B
CN103974241B CN201310046868.0A CN201310046868A CN103974241B CN 103974241 B CN103974241 B CN 103974241B CN 201310046868 A CN201310046868 A CN 201310046868A CN 103974241 B CN103974241 B CN 103974241B
Authority
CN
China
Prior art keywords
terminal
rtp
encryption
key
session
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310046868.0A
Other languages
English (en)
Other versions
CN103974241A (zh
Inventor
蒋睿
许蓓蓓
邓成军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Third Research Institute of the Ministry of Public Security
Original Assignee
CHANGZHOU RESEARCH INSTITUTE SOUTHEAST UNIVERSITY
Third Research Institute of the Ministry of Public Security
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHANGZHOU RESEARCH INSTITUTE SOUTHEAST UNIVERSITY, Third Research Institute of the Ministry of Public Security filed Critical CHANGZHOU RESEARCH INSTITUTE SOUTHEAST UNIVERSITY
Priority to CN201310046868.0A priority Critical patent/CN103974241B/zh
Publication of CN103974241A publication Critical patent/CN103974241A/zh
Application granted granted Critical
Publication of CN103974241B publication Critical patent/CN103974241B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)

Abstract

本发明提供了一种面向Android系统的语音端到端加密方法,命名为ERTP。当用户选择加密模式进行通信时,双方在会话初始阶段完成身份认证和密钥协商。当通话建立后,会话双方使用自己的私钥以及协商好的会话密钥,对发送的载有语音的RTP包进行DSA签名,然后用AES算法进行加密,最后发送。对于接收到的RTP包,先用AES解密,再进行DSA签名验证,验证通过后再对RTP包进行处理。此时若有第三方监听会话,则无法听到加密后的内容,有效的防止了第三方攻击。本发明通过采用一次一密的语音端到端加密方法,保证端到端的语音通信安全。

Description

一种面向Android系统移动终端的语音端到端加密方法
技术领域
本发明是一种基于加密RTP(Real-time Transport Protocol,实时传输协议)传输的移动终端语音端到端加密方法,命名为ERTP(Encrypted Real-time TransportProtocol,加密的实时传输协议)。本发明属于信息安全领域。
背景技术
随着Android操作系统的移动终端受到越来越多人们的青睐,它的安全性也引起了人们的关注。尤其在VoIP(Voice over Internet Protocol,网络电话)电话通信方面,一些不法分子利用安全漏洞,通过非法手段窃听甚至篡改他人通话内容,侵害他人隐私及利益,扰乱社会秩序。美国专利商标局公开的一份文件显示,微软2009年12月曾申请一项VoIP窃听技术专利,能够暗中记录双方或多方之间的语音和视频通话。微软在申请中称,这种技术能够满足政府和司法部门的窃听互联网语音通话的需求。它不仅适用于封闭网络,更适用于包括“Skype及类似应用”在内的服务。专利申请显示,这种技术的“录音客户端”可被植入各种设备,包括路由器等。此外,它还可以被“事件”或“事件序列”触发,如在特定通话者加入后开始窃听。
目前,进行语音数据加密的方法主要有以下两种:一种是利用硬件设备进行加密,一种是软件实现加密。
利用硬件设备加密的技术申请号为200710136782.1的发明,提供一种客户/服务器型分布式系统,服务器装置的SIP接口从客户装置接收SIP呼叫连接消息,当识别出客户装置之间采用加密方式,并能够确定密钥格式时,在通信客户装置之间使用端到端密码进行加密。该发明的加密方法因密钥空间有限,因而容易受到暴力破解。此外,该方法在服务器、通信用户端、控制台都需部署,所需成本高昂。
利用硬件实现加密的技术申请号为200710195390.2的发明,实时提供一种RTP报文的密钥协商方法,利用RTCP报文,协商用于加密RTP报文的密钥。该方法在通话开始后协商密钥,所以密钥协商完成是在通话开始2.5秒之后,安全性不强,且容易受到监听。而其协商方法是不经身份认证的D-H交换,极易受到中间人攻击。
利用软件实现加密的技术申请号为200810068567.7的发明,将得到待发送的语音数据帧周期性地向加密模块传输,加密模块对接收到的语音数据帧进行加密后,发送加密的语音数据,通过解密模块对接收的语音数据进行解密后播放。该发明针对CDMA网络提出加解密方法,只对语音数据帧进行加密而没有进行身份验证,容易受到第三方攻击。且该发明并未说明具体加密方法,也没有进行密钥协商,也即密钥是固定的。这样的加密极易遭受暴力破解,是不安全的。
论文《椭圆曲线密码与SHA-1算法在VOIP语音加密中的研究与应用》阐述了一种方法,声音数据根据公式D0=d*k*P计算得到D0,经过不断地SHA-l运算生成哈希验证数据,然后与声音数据进行合成,再经UDP协议将数据发送出去。在接收端接收到数据后,要先根据事先约定的椭圆曲线参数计算出D0值,然后根据数据的信息头进行相应的SHA-1计算,最后将数据进行分解得到压缩后的声音数据。然而,该方法并未提出密钥协商的具体实现方法及过程,且未形成专利。
发明内容
本发明的目的是解决现有技术的安全问题,通过基于Android系统的移动终端进行安全VoIP(Voice over Internet Protocol)会话,使得在RTP通路建立之前,即SIP(Session Initiation Protocol,会话初始协议)会话协商部分进行通话双方的密钥协商和身份认证,并且基于ERTP协议,实现通话语音数据的端到端加密功能,达到通信保密的目的。
本发明的原理为:通过对SIP媒体栈进行改进,并结合SIP协议来完成包含DSA数字签名的D-H(Diffie-Hellman)密钥交换协议,协商会话密钥并对会话双方进行身份认证,做到一次一密且抗中间人攻击。会话部分使用128位密钥的AES(Advanced EncryptionStandard)算法对语音数据进行加密。当主叫用户使用加密会话模式呼叫被叫时,提示被叫采用加密模式通信。如果被叫同样采用加密模式,则进行密钥协商;如果被叫方拒绝加密会话模式,则通过弹出对话框的方式向主叫方提示会话未被加密,并挂断电话。
当被叫接受会话邀请后,通话建立,双方的语音数据经过DSA(Digital SignatureAlgorithm) 数字签名后,使用协商好的密钥进行加密后传送给对方。当对方收到数据后先进行解密,然后进行DSA签名验证操作。
本发明的功能实现基于动态链接库完成,界面操作及人机交互部分在Android系统中的Java程序框架层完成,两者依靠JNI(Java Native Interface,Java本地调用)模块进行通信。
本发明提出的面向Android系统移动终端语音端到端加密方法包括以下步骤:
1)用户注册:主叫和被叫用户在服务器注册,包括注册请求和服务器认证两个步骤。注册完成后,用户可以用注册账号完成SIP电话的通信。
2)发起呼叫:主叫用户使用加密会话模式发起呼叫,向服务器发起会话邀请。服务器确认用户已通过认证后,检查Via头域,若没有问题插入自身地址,并向Invite消息的To域所指示的被叫终端代理转送Invite请求。该部分内容通过Java程序框架层与动态链接库间的通信来实现。
3)密钥协商:主叫方与被叫方通过SIP协议进行会话协商。在会话协商的同时双方进行D-H交换,协商会话密钥并对会话双方进行身份认证。密钥协商过程依靠动态链接库实现。
4)会话建立:被叫接受呼叫,密钥协商完成,则通话建立。
5)加密通信:使用协商好的公钥进行签名,然后利用会话密钥加密发送给对端。通话双方使用协商好的会话密钥,利用AES算法对会话内容进行端到端的加解密, 以达到防止篡改的目的。加密语音通信过程由动态链接库进行功能实现。
6)会话结束:通信双方结束会话,本次会话密钥清零。
密钥协商包含身份认证和会话密钥协商两个部分。通过密钥协商,达到安全协商并计算本次通话会话密钥的目的。其实现的方法:
1)身份认证:采用双向认证,会话双方使用各自的ID进行认证,保证消息来源于本人且未被篡改。当用户作为主叫用户发起会话时,服务器会将被叫用户的公钥发送给主叫用户,并向被叫用户发送主叫用户的公钥。主叫用户与被叫用户在通话时利用自己的私钥,对所发送的信息进行DSA签名。
2)会话密钥协商:使用D-H交换,在利用对方的公钥对发送的内容进行加密的情况下,通过两次交互完成会话密钥的协商,并在公钥后附上一个随机数。两次交互后,主叫方回复被叫发送的随机数,表示密钥协商完成。
所述加密通信包括DSA数字签名、语音加密、语音解密和DSA签名验证四个方法,具体实现为:
1)DSA数字签名:对于生成的语音数据,用协商好的自身私钥对语音数据进行签名,然后将语音帧连同签名一起封装到RTP包中。对于收到的语音帧,验证其签名,若符合则继续进行解码,若不符合则丢弃。
2)语音加密:包括RTP包的提取、RTP包加密、封装成UDP包三个步骤。语音经过采样编码后以语音帧的格式封装到RTP包中。语音加密时,将RTP包提取出来,然后对RTP包进行加密。加密后的包则封装到UDP包内,进行网络传输。
3)语音解密:包括UDP包解封装、RTP包解密、DSA签名验证三个步骤。接收端对UDP包解封后,取出载有语音数据的RTP包,对其解密后再进行DSA签名的验证。
4)DSA签名验证:对接收到的解密后的数据,用户使用对方公钥进行DSA签名验证。若验证结果相符,则继续对RTP包操作;若不符,则丢弃该包。
采用了上述技术方案后,本发明提供了一种面向Android系统移动终端的语音端到端加密方法,该方法通过软件实现了移动终端VoIP电话的语音加密功能。在用户完成SIP注册之后,发起呼叫,在被叫接听之前完成双方密钥协商和身份认证。会话建立后,载有通信语音的RTP包首先经过自身私钥DSA签名,再使用协商好的密钥进行AES加密后传递。在接收端接收到语音包后,解密恢复出语音包,使用对方公钥验证DSA签名的有效性后再送回缓冲区。本发明提供的基于ERTP包的加密方式,与现有的加密方式相比,语音加密算法是基于RTP包的,不需要额外引入协议支持,具有开销小,可移植性高,易于实现的特点。其中密钥协商过程可以在信令部分进行会话协商的同时完成。本发明无需额外硬件支持,也不需要对服务器进行调整。此外用户界面友好,易于操作。
附图说明:
图1是本发明的应用场景;
图2是本发明的软件结构框图;
图3是本发明的端到端语音加解密流程图;
图4是本发明的使用加密模式发起呼叫的流程图;
图5是本发明的密钥协商流程图;
图6是本发明的密钥协商的具体实现交互图;
图7是本发明的会话建立的流程图;
图8是本发明的语音通信的流程图;
图9是本发明的DSA签名的计算图;
图10是本发明的AES加密的计算图;
图11是本发明的AES解密的计算图;
图12是本发明的DSA签名验证的计算图;
图13是本发明的通话结束的流程图。
具体实现方式
图1所示为本发明的应用场景,本发明主要用于可以进行SIP通话的Android系统手机。首先,用户完成服务器注册。当服务器注册完成后,若用户需要进行加密通话,则摘机拨号,并选择使用加密模式发起呼叫102。在会话初始阶段,双方使用SIP进行会话初始协商,并同时完成身份认证301及会话密钥协商302过程。身份认证301过程使用用户ID进行双向认证:若身份认证301成功,则进行会话密钥协商302;若不成功,则返回身份认证301失败错误。在会话密钥协商302过程中,若协商不成功,则通话结束并返回错误;若协商成功,则用户保存各自的私钥X、对方的公钥Y以及本次会话密钥KS。在协商完成后,会话建立,首先进行初始化,然后通信双方进行加密的语音通信。对于发送的载有语音数据的RTP包,首先使用本人的私钥X进行DSA数字签名,然后使用协商好的会话密钥KS进行AES加密,再封装成UDP包传输;对于收到的UDP包,先解封装,使用会话密钥KS解密后,再进行签名验证。若验证成功,则取出该RTP包;若不成功,则丢弃该包。当会话结束后,本次会话密钥清零604。
图2所示为本发明的软件结构框图。本发明的软件结构主要由三个部分组成:Java程序框架、JNI模块及动态链接库。
1)Java程序框架是针对Android操作系统开发的程序架构,包括UI界面、Utility设备、API接口、Service服务、DB数据库、SIP协议栈、Widget外观、Model模型及Wizard向导九个部分。UI界面是本发明软件在终端操作系统的操作界面设计;Utility设备针对拨号键盘、手机听筒等设备进行调用;API接口用来进行媒体层的状态描述及配置管理等内容,Service服务管理后台运行和跨进程访问;DB数据库用来存储联系人、手机信息等内容;SIP协议栈在Java程序框架内实现动态链接库;Widget外观为程序提供皮肤管理;Model模型对数据库进行操作;Wizard向导是软件提供给用户的操作提示。
2)JNI模块定义了一套接口,当标准的Java程序框架不支持程序所需的特性时,供Java程序框架和动态链接库之间进行相互调用。
3)动态链接库是对Java程序框架的功能支持,对程序的基本功能进行实现,包括声音器件库、SIP协议栈JNI库和音频编码库。声音器件库用来实现对硬件设备的调用;SIP协议栈JNI库用来实现协议栈的功能及与Java程序框架的相互调用和通信;音频编码库用来实现VoIP软件电话的宽带音频编解码。
图3所示为本发明的端到端语音加解密流程图。主要包括用户注册101、使用加密模式发起呼叫102、密钥协商103、会话建立104、加密通话105、通话结束106六个步骤:
1)用户注册101:用户向服务器发送注册请求。若数据库中未包含用户信息,则返回质询信息。终端提示用户输入其标识和密码后,向服务器发送该消息。服务器验证其合法性后,将用户信息写入数据库中。
2)使用加密模式发起呼叫102:主叫用户完成注册后,选择使用加密模式对被叫用户发起呼叫;否则使用正常模式发起呼叫。在Android系统的Java程序框架层完成人机交互,随后将得到的结果通过JNI模块传到动态链接库。
3)密钥协商103:双方使用SIP协议进行会话初始协商的同时进行身份认证301及会话密钥协商302。若身份认证301成功,则进行会话密钥协商302;若不成功,则返回身份认证301失败错误。若会话密钥协商302不成功,则通话结束并返回错误。若会话密钥协商302成功,则会话建立104。该部分在动态链接库中进行功能实现。
4)会话建立104:终端收到确认会话的消息后,存储本次会话密钥401。在对缓冲区初始化402、参数及定时器初始化403和启动声音器件404后,会话建立104完成。
5)加密通话105:呼叫连接建立后,通信双方使用自己的私钥对载有语音数据的RTP包进行签名,之后用协商好的会话密钥对RTP包及签名进行加密。对方收到数据包后,首先对加密好的数据包进行解密,然后比对发送的RTP包和签名是否一致。若一致,则取出RTP包,进行进一步操作。该步骤在动态链接库中进行功能实现。
6)通话结束106:通信双方当中一方挂断电话,呼叫释放603,本次会话密钥清零604。
图4所示为使用加密模式发起呼叫的流程图,其主要步骤如下:
1)用户拨号201:用户作为主叫发起通话。
2)选择通话模式202:当发起呼叫时,用户首先进行模式选择:加密模式或非加密模式,在Android系统的应用框架层完成用户与终端的交互。随后将得到的结果通过JNI模块传到动态链接库。
3)加密模式初始化203:终端调用动态链接库,判断是否使用加密模式。若为加密模式,则进行加密模式初始化,加密状态置1,并提示被叫采用加密模式通信204;若选择普通模式,加密状态置0,则进行普通模式初始化,用户进行正常的语音通话。
4)提示被叫采用加密模式通信204:被叫若同意使用加密模式,则双方进行密钥协商;若不同意使用加密模式,则通过弹出对话框的方式向主叫方提示会话未被加密,则本次通话挂断。被叫用户的加密模式判断在Java程序框架层完成,之后把结果同样通过JNI模块传到动态链接库,进行配置及调用;主叫用户提示:本次通话未加密,则是由动态链接库将状态上传到JNI模块,然后在界面给出提示的。
图5所示为密钥协商103的流程图。首先,会话双方进行双向的身份认证301,若身份认证301不成功,则呼叫结束并返回错误:身份认证301失败。若身份认证301成功,则会话双方进行密钥协商302。若协商不成功,则呼叫结束并返回错误:会话密钥协商302失败;若会话密钥协商302成功,则会话建立104。该步骤的内容在动态链接库进行功能实现。
图6所示为密钥协商的具体实现交互图,包含以下步骤:
1)用户A发起呼叫,取随机数XA作为自己的私钥,计算公钥,其中p为公开的长度在512到1024之间的素数,α为其本原根。A向被叫B发送Invite请求,同时在SDP(Session Description Protocol,会话描述协议)部分向对方发送用固定密钥Kfixed 进行AES加密的公钥YA、身份信息IDA和随机数N1,即发送Invite||E(Kfixed,YA||IDA||N1)。服务器收到后确认用户认证301已通过后,检查请求中的Via头域中是否已包含其地址:若已包含,说明发生环回,则返回错误应答;若不包含,则服务器在请求的Via头域插入自身地址,修改Invite请求为Invite',并转发该消息,即向B用户发送Invite'||E(Kfixed,YA||IDA||N1)。然后服务器向终端A发送呼叫处理中的应答消息:100Trying。
2)终端B在收到转发消息Invite'||E(Kfixed,YA||IDA||N1)后,验证终端A的身份信息IDA与From头域的是否吻合,并保存公钥YA和随机数N1,然后向服务器发送呼叫处理中的应答消息:100Trying。
3)终端B指示被叫用户振铃,振铃后,终端B向服务器发送振铃消息:180Ringing。服务器向终端A转发该振铃消息:180Ringing。
4)被叫用户摘机,终端B取随机数XB作为自己的私钥,计算公钥和本次会话密钥。终端B向服务器返回表示连接成功的应答200OK,并在SDP中包含固定密钥Kfixed加密的公钥YB、身份信息IDB、终端A发送的随机数N1及自己产生的随机数N2,即发送200OK||E(Kfixed,YB||IDB||N1||N2)。服务器向终端A转发该成功指示。
5)终端A收到消息后,检验终端B的身份信息IDB与From头域的是否吻合,并检查N1是否正确。若条件都满足,则保存随机数N2,计算本次会话密钥;否则返回错误:会话密钥协商302失败。由于KS=KS',所以双方得到的会话密钥相同。
6)终端A向服务器发送确认消息ACK和用固定密钥Kfixed加密的随机数N2,即发送ACK||E(Kfixed,N2)。代理服务器将该确认消息转发给终端B。终端B检查随机数N2的正确性:若正确,则主被叫用户之间建立通信连接,开始通话;若不正确,则返回错误:会话密钥协商302失败。
图7所示为会话建立104的流程图。当被叫收到会话确认信息ACK后,会话建立,会话双方存储本次会话密钥401,然后对缓冲区初始化402、参数及定时器初始化403、启动声音器件404。
图8所示为语音通信105的流程图。声音首先经过声音器件后采样为语音数据(声音器件处理501),然后对数据进行PCM编码(编码/解码502),将语音数据封装成RTP包(RTP包封装/解封503)后,用自己的私钥对RTP包生成DSA数字签名(DSA数字签名/签名验证504)。之后使用协商好的会话密钥,对整个包进行AES加密(RTP包加密/解密505)后,再嵌到UDP包中(UDP包封装/解封506),最后进行发送。接收UDP包后的流程则反过来。在终端收到UDP包后,先对UDP包解封(UDP包封装/解封506),使用会话密钥对加密过的RTP包进行AES解密(RTP包加密/解密505),之后DSA签名验证(DSA数字签名/签名验证504):比对用明文及公钥生成的DSA数字签名与发送来的DSA数字签名:若不相同则证明包内容受到篡改,丢弃该RTP包;若匹配,则对RTP包进行解封(RTP包封装/解封503),将语音数据解码(编码/解码502)后送到声音器件,最后用扬声器播放(声音器件处理501)出来。该部分内容在动态链接库中进行功能实现。
图9所示为DSA数字签名的计算图。在终端获取到RTP包rtp_pkt后,选择一个长度160位的素数q,且满足q能够整除(p-1);选择g满足g=h(p-1)/qmodq,其中h是1到p-1之间的整数使得g大于1;产生随机数k,计算,其中,函数H(rtp_pkt)生成了RTP包rtp_pkt的消息散列码。最后,将得到的DSA签名(r,s)附在RTP包rtp_pkt后,即生成签名后的RTP包rtp_pkt||(r,s)。
图10所示为RTP包加密的具体实现方法。使用协商好的128bit会话密钥KS,对封装好的RTP包rtp_pkt与其生成的签名(r,s)进行AES算法加密,即得到E{KS,rtp_pkt||(r,s)}。然后将加密后的密文输出E{KS,rtp_pkt||(r,s)}嵌入UDP包,进行传输。
图11所示为RTP包解密的计算图。使用协商好的128bit的会话密钥KS,对收到的加密的RTP包rtp_pkt'与(r',s')进行AES算法解密,即对E{KS,rtp_pkt'||(r',s')}解密。然后对解密后的明文输出rtp_pkt'||(r',s')进行DSA数字签名验证。
图12所示为DSA签名验证的计算图。解密后,取出收到的附DSA数字签名的RTP包,进行DSA签名验证。计算。检验v是否等于r':若等于,则DSA签名验证成功,取出rtp_pkt';若不等于,则丢弃该包。
图13所示为通话结束106的流程图。当会话双方通话结束时,一方挂断,发送挂断请求Bye601。对端请求回复200OK602后,呼叫释放603,本次会话密钥清零604。

Claims (10)

1.一种面向Android系统移动终端的语音端到端加密方法,其特征在于:包在于:包括用户注册(101)、使用加密模式发起呼叫(102)、密钥协商(103)、会话建立(104)、加密通话(105)以及通话结束(106)六个步骤:用户注册(101)是终端向服务器验证其合法性后,将用户信息写入数据库中;使用加密模式发起呼叫(102)包括用户拨号(201)、选择通话模式(202)、加密模式初始化(203)、提示被叫采用加密模式通信(204)四个步骤,实现主叫用户与被叫用户进行通话模式的选择;密钥协商(103)包括身份认证(301)和会话密钥协商(302)两个部分,身份认证(301)确认收到的信息来自通信双方,会话密钥协商(302)交换双方的公钥并协商出本次的会话密钥,其过程为:1)用户A发起呼叫,取随机数XA作为自己的私钥,计算公钥其中p为公开的长度在512到1024之间的素数,α为其本原根,A向被叫B发送Invite请求,同时在SDP(Session Description Protocol,会话描述协议)部分向对方发送用固定密钥Kfixed进行AES加密的公钥YA、身份信息IDA和随机数N1,即发送Invite||E(Kfixed,YA||IDA||N1),服务器收到后确认用户认证301已通过后,检查请求中的Via头域中是否已包含其地址:若已包含,说明发生环回,则返回错误应答,若不包含,则服务器在请求的Via头域插入自身地址,修改Invite请求为Invite',并转发该消息,即向B用户发送Invite'||E(Kfixed,YA||IDA||N1),然后服务器向终端A发送呼叫处理中的应答消息:100Trying;2)终端B在收到转发消息Invite'||E(Kfixed,YA||IDA||N1)后,验证终端A的身份信息IDA与From头域的是否吻合,并保存公钥YA和随机数N1,然后向服务器发送呼叫处理中的应答消息:100Trying;3)终端B指示被叫用户振铃,振铃后,终端B向服务器发送振铃消息:180Ringing,服务器向终端A转发该振铃消息:180Ringing;4)被叫用户摘机,终端B取随机数XB作为自己的私钥,计算公钥和本次会话密钥终端B向服务器返回表示连接成功的应答200OK,并在SDP中包含固定密钥Kfixed加密的公钥YB、身份信息IDB、终端A发送的随机数N1及自己产生的随机数N2,即发送200OK||E(Kfixed,YB||IDB||N1||N2),服务器向终端A转发该成功指示;5)终端A收到消息后,检验终端B的身份信息IDB与From头域的是否吻合,并检查N1是否正确,若条件都满足,则保存随机数N2,计算本次会话密钥否则返回错误:会话密钥协商302失败,由于KS=KS',所以双方得到的会话密钥相同;6)终端A向服务器发送确认消息ACK和用固定密钥Kfixed加密的随机数N2,即发送ACK||E(Kfixed,N2),代理服务器将该确认消息转发给终端B,终端B检查随机数N2的正确性,若正确,则主被叫用户之间建立通信连接,开始通话;若不正确,则返回错误:会话密钥协商302失败;会话建立(104)用于本次会话密钥的初始化及其他参数、器件的初始化;加密通话(105)包括声音器件处理(501)、编码/解码(502)、RTP包封装/解封(503)、数字签名/签名验证(504)、RTP包加密/解密(505)、UDP包封装/解封(506),加密过程针对所发送的RTP包,采用先DSA签名后AES加密的方法,解密过程针对接收到的RTP包,采用先AES解密后签名验证的方法;通话结束(106),通过发送挂断请求Bye(601),对端回复200OK(602)后,呼叫释放(603),本次会话密钥清零(604)。
2.根据权利要求1所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:使用加密模式发起呼叫(102)为基于Android系统的Java程序框架层,通过JNI模块与动态链接库进行通信,实现参数传递及设置,包括以下步骤:
1)用户拨号(201):主叫用户完成注册后,开始进行拨号;
2)选择通话模式(202):当发起呼叫时,用户首先进行模式选择,加密模式或非加密模式,终端判断是否使用加密模式:若为加密模式,则进行加密模式初始化,并提示被叫采用加密模式通信(204);若选择普通模式,则进行普通模式初始化,用户进行正常的语音通话;模式选择的步骤在Android系统的Java程序框架层完成用户与终端的交互,随后将得到的结果通过JNI模块传到动态链接库;
3)加密模式初始化(203):终端调用动态链接库,判断是否使用加密模式:若为加密模式,则进行加密模式初始化,加密状态置1,并提示被叫采用加密模式通信(204);若选择普通模式,加密状态置0,则进行普通模式初始化,用户进行正常的语音通话;
4)提示被叫采用加密模式通信(204):被叫若同意使用加密模式,则双方进行密钥协商;若不同意使用加密模式,则通过弹出对话框的方式向主叫方提示会话未被加密,本次通话挂断;被叫用户的加密模式判断的过程在Java程序框架层完成,之后把结果通过JNI模块传到动态链接库,进行配置及调用;主叫用户提示:本次通话未加密的过程,则是当主叫用户收到被叫拒绝加密的消息后,由动态链接库将状态上传到JNI模块,然后在界面给出提示。
3.根据权利要求1所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:密钥协商(103),同时使用SIP协议进行会话初始协商和密钥协商,该过程在动态链接库中进行功能实现,包含身份认证(301)和会话密钥协商(302)两个步骤:
1)会话初始协商的过程中,若身份认证(301)不成功,则呼叫结束并返回认证不成功错误;若身份认证(301)成功,则会话双方进行会话密钥协商(302);若主叫使用加密模式而被叫使用普通模式,则主叫的公钥为本次的会话密钥;
2)若会话密钥协商(302)不成功,则呼叫结束返回协商失败错误;若会话密钥协商(302)成功,则会话建立。
4.根据权利要求3所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:身份认证(301)可实现会话双方间的双向身份认证,包含以下步骤:
1)终端A向终端B发送Invite请求时,附上采用固定密钥Kfixed进行AES加密的身份消息IDA,即Invite||E(Kfixed,YA||IDA||N1),其中,终端A的公钥YA为一整数且1≤YA≤p,终端A的身份信息为IDA且1≤IDA≤p,随机数N1为一整数且1≤N1≤p-1;
2)终端B接收到含有身份消息的Invite请求Invite'||E(Kfixed,YA||IDA||N1)后,先用固定密钥解密,然后比对ID与发送头域是否相符:若相符,则继续;若不符,则返回错误:身份认证(301)失败;
3)终端B向终端A发送200OK消息时,附上采用固定密钥Kfixed进行AES加密的身份消息IDB,即200OK||E(Kfixed,YB||IDB||N1||N2),其中,终端B的公钥YB为一整数且1≤YB≤p,终端B的身份信息为IDB且1≤IDB≤p,随机数N2为一整数且1≤N2≤p-1;
4)终端A收到该消息200OK||E(Kfixed,YB||IDB||N1||N2)后,先用固定密钥解密,然后比对IDB与收到SIP协议的From头域是否相符:若相符,则继续;若不符,则返回错误:身份认证(301)失败。
5.根据权利要求3或4所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:会话密钥协商(302)包含以下步骤:
1)终端A取随机数XA作为自己的私钥,计算公钥其中,p为公开的长度在512到1024之间的素数,α为其本原根;终端A向终端B发送Invite请求时,附上采用固定密钥Kfixed进行AES加密的公钥YA和随机数N 1,即Invite||E(Kfixed,YA||IDA||N1);
2)终端B在接收到转发消息Invite'||E(Kfixed,YA||IDA||N1),且通过身份认证(301)后,保存终端A的公钥YB和随机数N1;
3)被叫用户摘机,终端B取随机数XB作为自己的私钥,计算公钥和本次会话密钥终端B向服务器返回表示连接成功的应答200OK,在SDP中附上采用固定密钥Kfixed进行AES加密的公钥YB、终端A发送的随机数N1及自己产生的随机数N2,即发送200OK||E(Kfixed,YB||IDB||N1||N2);
4)终端A收到消息,检查N1是否正确,若条件都满足,则保存随机数N2,计算本次会话密钥KS=KS';否则返回错误:会话密钥协商(302)失败;
5)终端B检查随机数N2的正确性,若正确则主被叫用户之间会话建立(104),开始加密通话;否则返回错误:会话密钥协商(302)失败。
6.根据权利要求5所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:加密通话(105)具体步骤为:通话语音首先经过声音器件的处理后采样为语音数据,然后对数据进行PCM编码,将语音数据封装成RTP包,接着采用自己的私钥对RTP包生成DSA数字签名;然后使用协商好的会话密钥,对整个包进行AES加密后,再嵌到UDP包中,最后进行发送;接收UDP包后的流程则反过来,在接收端收到UDP包后,先使用会话密钥对加密的RTP包进行AES解密,之后比对用明文及公钥生成的DSA数字签名与收到的DSA数字签名:若不相同,则证明包内容受到篡改,丢弃该RTP包并返回错误:DSA身份验证失败;若相同,则进行RTP包封装/解封(503)的RTP包解封,将语音通过编码/解码(502)的解码后送到声音器件,最后经声音器件处理(501)后用扬声器播放出来。
7.根据权利要求6所述的面向Android系统移动终端的语音端到端加密方法,其特征在于,DSA数字签名/签名验证(504)的DSA数字签名具有以下几个步骤:
1)在获取到RTP包rtp_pkt后,选择一个长度160位的素数q,且满足q能够整除(p-1);选择g满足g=h(p-1)/qmodp,其中h是1到p-1之间的整数使得g大于1,产生随机数k,计算r≡(gkmod p)mod q 与s≡[k-1(H(rtp_pkt)+Xr)]mod q,其中,对于终端A则X=XA,对于终端B则X=XB,函数H(rtp_pkt)生成了RTP包rtp_pkt的SHA-1消息散列码;
2)将步骤1)计算得到的DSA签名(r,s)附在RTP包rtp_pkt后,即生成签名后的RTP包rtp_pkt||(r,s);
3)将签名后的RTP包rtp_pkt||(r,s)发送至RTP包加密/解密(505)模块进行RTP包加密。
8.根据权利要求7所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:RTP包加密/解密(505)的RTP包加密使用协商好的128bit的会话密钥KS,对封装好的RTP包rtp_pkt与其生成的签名(r,s)进行AES算法加密;然后将加密后的密文输出E{KS,rtp_pkt||(r,s)}嵌入UDP包,进行传输。
9.根据权利要求8所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:RTP包加密/解密(505)的RTP包解密,使用协商好的128bit的会话密钥KS,对接收到的加密RTP包rtp_pkt'与(r',s')进行AES算法解密,即对E{KS,rtp_pkt||(r',s')}解密;然后对解密后的明文输出rtp_pkt'||(r',s')进行DSA数字签名/签名验证(504)的DSA数字签名验证。
10.根据权利要求9所述的面向Android系统移动终端的语音端到端加密方法,其特征在于:DSA数字签名/签名验证(504)的DSA签名验证具有以下步骤:
1)在进行RTP包解密后,取出收到的附DSA数字签名的RTP包rtp_pkt'||(r',s');计算w≡(s′)-1mod q,u1≡[H(rtp_pkt′)w]mod q,u2≡(r′)w mod q,
2)检验v是否等于r':若等于,则表明DSA签名验证成功,取出RTP包rtp_pkt';若不等,则表明DSA签名验证失败,丢弃该RTP包rtp_pkt',并返回错误:DSA签名验证失败。
CN201310046868.0A 2013-02-05 2013-02-05 一种面向Android系统移动终端的语音端到端加密方法 Expired - Fee Related CN103974241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310046868.0A CN103974241B (zh) 2013-02-05 2013-02-05 一种面向Android系统移动终端的语音端到端加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310046868.0A CN103974241B (zh) 2013-02-05 2013-02-05 一种面向Android系统移动终端的语音端到端加密方法

Publications (2)

Publication Number Publication Date
CN103974241A CN103974241A (zh) 2014-08-06
CN103974241B true CN103974241B (zh) 2018-01-16

Family

ID=51243182

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310046868.0A Expired - Fee Related CN103974241B (zh) 2013-02-05 2013-02-05 一种面向Android系统移动终端的语音端到端加密方法

Country Status (1)

Country Link
CN (1) CN103974241B (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202736A (zh) * 2014-08-26 2014-12-10 东南大学常州研究院 面向Android系统的移动终端短信端到端加密方法
CN105592451A (zh) * 2014-10-22 2016-05-18 北京元心科技有限公司 一种语音呼叫、应答方法和移动终端
CN104539433A (zh) * 2014-10-30 2015-04-22 马洁韵 一种语音通话加密系统和加密方法
CN105704711A (zh) * 2014-11-25 2016-06-22 中兴通讯股份有限公司 一种保证通话安全的方法、装置及用户终端
CN105790942A (zh) * 2014-12-17 2016-07-20 中兴通讯股份有限公司 一种安全通话的方法、终端和系统
CN104640108A (zh) * 2015-01-28 2015-05-20 深圳市比维视创科技有限公司 一种终端通话语音加密方法及语音加密系统
CN105992203B (zh) * 2015-01-29 2019-04-30 成都三零瑞通移动通信有限公司 一种语音通信加密密钥协商方法及基于该方法的系统
CN105992199B (zh) * 2015-01-29 2019-04-30 成都三零瑞通移动通信有限公司 一种语音通信明密识别方法及系统
CN105025475B (zh) * 2015-07-28 2019-02-26 东南大学常州研究院 面向Android系统的移动保密终端实现方法
CN105792193B (zh) * 2016-02-26 2019-02-26 东南大学常州研究院 基于iOS操作系统的移动终端语音端到端加密方法
CN107295506A (zh) * 2016-03-31 2017-10-24 宇龙计算机通信科技(深圳)有限公司 一种语音处理的方法、装置以及终端
CN107426521A (zh) * 2016-05-24 2017-12-01 中兴通讯股份有限公司 一种视频通话方法及终端
CN106101081B (zh) * 2016-05-31 2020-02-21 宇龙计算机通信科技(深圳)有限公司 语音加密方法、装置、终端、密钥管理平台和系统
CN106027819A (zh) * 2016-05-31 2016-10-12 北京小米移动软件有限公司 网络电话中的数据传输方法及装置
CN107819725B (zh) * 2016-09-12 2020-11-27 山东量子科学技术研究院有限公司 基于VoIP通话的方法及移动终端
CN106341225B (zh) * 2016-09-19 2019-07-23 杭州字节信息技术有限公司 一种umts移动终端电路域语音加密通信技术实现方法
CN106303085B (zh) * 2016-09-27 2020-01-14 北京安云世纪科技有限公司 移动终端以及保密通话的方法和装置
CN106357940B (zh) * 2016-09-27 2019-04-30 北京安云世纪科技有限公司 保密通话的方法和装置
CN106506450B (zh) * 2016-09-27 2020-01-21 北京安云世纪科技有限公司 保密通话的方法和系统
CN107104888B (zh) * 2017-06-09 2020-10-16 四川楠水农牧科技有限公司 一种安全的即时通信方法
CN108040269A (zh) * 2017-12-18 2018-05-15 西安邮电大学 一种视频监控系统密钥协商的方法及系统、计算机
CN108307023B (zh) * 2018-01-19 2020-05-05 厦门盈趣科技股份有限公司 基于dtmf技术的加密通信方法及系统
CN110278073B (zh) * 2018-03-14 2021-11-02 西安西电捷通无线网络通信股份有限公司 一种群组数字签名、验证方法及其设备和装置
CN108449346B (zh) * 2018-03-22 2021-07-27 北京可信华泰科技有限公司 一种密钥生成客户端
CN108966213A (zh) * 2018-07-18 2018-12-07 中国联合网络通信集团有限公司 加密通话方法、加密通话终端、加密通话平台及系统
CN109286634A (zh) * 2018-11-08 2019-01-29 成都卫士通信息产业股份有限公司 一种数据传输方法、装置、电子设备及可读存储介质
CN109698834A (zh) * 2019-01-11 2019-04-30 深圳市元征科技股份有限公司 一种加密传输方法以及系统
CN110213139B (zh) * 2019-05-09 2021-04-06 四川通信科研规划设计有限责任公司 一种语音通话方法及系统
CN110740129A (zh) * 2019-09-29 2020-01-31 武汉大学深圳研究院 一种基于端到端认证的电话网通信防护方法
CN111192474A (zh) * 2019-11-14 2020-05-22 晏子俊 一种基于车库的私人停车位共享方法
CN111478774B (zh) * 2020-04-09 2022-07-22 确信信息股份有限公司 一种基于语音鉴别的密钥授权方法及系统
CN111510291B (zh) * 2020-04-20 2023-06-02 重庆邮电大学 基于双线性对的高效身份认证密钥协商方法
CN111756726A (zh) * 2020-06-23 2020-10-09 上海缔安科技股份有限公司 一种支持国密算法的sip安全认证方法
CN114726958A (zh) * 2021-01-05 2022-07-08 中国移动通信有限公司研究院 身份验证方法、装置、电子设备及可读存储介质
CN112953898A (zh) * 2021-01-26 2021-06-11 四川天翼网络服务有限公司 一种音视频加解密传输控制方法
CN113360891B (zh) * 2021-05-25 2023-12-15 深圳市蘑菇财富技术有限公司 基于练习系统的防作弊方法和相关设备
CN114448955B (zh) * 2021-12-31 2024-02-02 赛因芯微(北京)电子科技有限公司 一种数字音频网络传输方法、装置、设备及存储介质
CN114630290B (zh) * 2022-04-08 2024-08-06 中国电信股份有限公司 语音加密通话的密钥协商方法、装置、设备及存储介质
CN115052056B (zh) * 2022-04-26 2024-06-07 深圳市云伽智能技术有限公司 工业控制通信方法、装置、设备及存储介质
CN115243206B (zh) * 2022-09-21 2023-01-31 荣耀终端有限公司 语音通话建立方法及电子设备
CN115567209B (zh) * 2022-09-29 2023-09-22 中电信量子科技有限公司 采用透明代理和量子密钥预充注实现VoIP加解密方法
CN118118276B (zh) * 2024-04-26 2024-08-06 广东安创信息科技开发有限公司 一种基于协处理器的语音加密近端装置、远端装置、系统及其加解密方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658552A (zh) * 2004-02-17 2005-08-24 华为技术有限公司 媒体流安全传输的实现方法
CN101325484A (zh) * 2007-06-11 2008-12-17 达声科技股份有限公司 在通讯信令中隐藏信息的方法及装置
CN101488957A (zh) * 2009-02-17 2009-07-22 华为技术有限公司 基于sip的网络设备与终端的认证方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865681B2 (en) * 2000-12-29 2005-03-08 Nokia Mobile Phones Ltd. VoIP terminal security module, SIP stack with security manager, system and security methods

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1658552A (zh) * 2004-02-17 2005-08-24 华为技术有限公司 媒体流安全传输的实现方法
CN101325484A (zh) * 2007-06-11 2008-12-17 达声科技股份有限公司 在通讯信令中隐藏信息的方法及装置
CN101488957A (zh) * 2009-02-17 2009-07-22 华为技术有限公司 基于sip的网络设备与终端的认证方法、装置及系统

Also Published As

Publication number Publication date
CN103974241A (zh) 2014-08-06

Similar Documents

Publication Publication Date Title
CN103974241B (zh) 一种面向Android系统移动终端的语音端到端加密方法
Zimmermann et al. ZRTP: Media path key agreement for unicast secure RTP
US7730309B2 (en) Method and system for key management in voice over internet protocol
US7464267B2 (en) System and method for secure transmission of RTP packets
CN105025475B (zh) 面向Android系统的移动保密终端实现方法
US9258303B1 (en) Method of providing real-time secure communication between end points in a network
US6865681B2 (en) VoIP terminal security module, SIP stack with security manager, system and security methods
US7382881B2 (en) Lawful interception of end-to-end encrypted data traffic
US20150089220A1 (en) Technique For Bypassing an IP PBX
Reaves et al. {AuthLoop}:{End-to-End} cryptographic authentication for telephony over voice channels
CN105792193B (zh) 基于iOS操作系统的移动终端语音端到端加密方法
TWI711293B (zh) 驗證網路通話身份的方法及相關裝置
US7764945B2 (en) Method and apparatus for token distribution in session for future polling or subscription
CN106899969A (zh) 基于iOS系统的特定保密终端系统实现方法
CN106935242A (zh) 一种语音通信加密系统与方法
CN111756726A (zh) 一种支持国密算法的sip安全认证方法
US8284935B2 (en) Method, devices and computer program product for encoding and decoding media data
WO2016082401A1 (zh) 通话方法、装置、用户终端及计算机存储介质
EP3248355B1 (en) Enhanced establishment of ims session with secure media
CN103546442B (zh) 浏览器的通讯监听方法及装置
WO2017197968A1 (zh) 一种数据传输方法及装置
CN115589292A (zh) 实现端到端VoIP一话多密的加密通话方法及系统
CN101001143A (zh) 一种终端设备对系统设备进行认证的方法
CN115589288B (zh) 基于量子密钥预充注实现端到端VoIP加密通信方法
CN117579271A (zh) 量子加密通话方法、装置及通信系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: THE THIRD RESEARCH INSTITUTE OF MINISTRY OF PUBLIC

Effective date: 20140804

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140804

Address after: 213164 Changzhou Research Institute, Southeast University, North building, science and technology building, No. 801, Chang Wu Road, Changzhou, Jiangsu, China

Applicant after: Changzhou Research Institute, Southeast University

Applicant after: The Third Research Institute of Ministry of Public Security

Address before: 213164 Changzhou Research Institute, Southeast University, North building, science and technology building, No. 801, Chang Wu Road, Changzhou, Jiangsu, China

Applicant before: Changzhou Research Institute, Southeast University

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180116

Termination date: 20190205