一种VoIP实时数据安全传输的端到端密钥协商方法转让专利

申请号 : CN201410669878.4

文献号 : CN104486077B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 顾小卓周卫华朱大立张仁军

申请人 : 中国科学院信息工程研究所

摘要 :

本发明公开了一种适用于手机终端VoIP实时数据安全传输的端到端密钥协商方法。本方法为:1)在信令安全传输阶段,客户端和服务器端之间的SIP信令采用TLS协议进行双向认证和保护;2)在端到端密钥协商阶段,采用两层加密的方式,在第一层,通信发起方和服务器之间,服务器和通信接收方之间分别采用TLS协议进行保护,在第二层,通信发起方和通信接收方的密钥协商参数信息使用通信发起方和通信接收方的SM2公钥分别进行保护。本发明采用两层加密方法对密钥协商参数进行保护,并且在信令传输阶段对信令进行双向认证和保护,大大提高了信息传输的安全性。

权利要求 :

1.一种VoIP实时数据安全传输的端到端密钥协商方法,其步骤为:

1)信令安全传输阶段,通信方生成信令数据并利用TLS协议进行保护,然后利用自己的RSA私钥对加密后的数据进行签名后将加密数据和签名发送给服务器;服务器利用该通信方的RSA公钥对签名进行验证,验证通过后用TLS通道的加密密钥解密该加密数据,得到该通信方的信令数据;

2)密钥协商阶段,通信发起方将生成的通信请求消息发送给服务器;所述通信请求消息的生成方法为:通信发起方生成会话密钥参数SK1,并用通信接收方的SM2公钥对其加密,然后用自己的SM2私钥对加密后的SK1进行签名,然后将加密后的SK1和签名生成数据包,再使用TLS通道的加密密钥对该数据包进行加密,并使用自己的RSA私钥进行签名,最后将加密后的数据包和签名数据生成该通信请求消息;

3)服务器利用该通信发起方的RSA公钥对该通信请求消息中的签名进行验证,验证通过后,服务器使用与通信发起方之间的TLS通道的加密密钥解密数据包,之后再将解密的数据包使用与通信接收方的TLS通道的加密密钥进行加密,并使用服务器的RSA私钥签名后发送给通信接收方;

4)通信接收方使用服务器的RSA公钥对接收数据中的签名进行验证,验证通过后,使用TLS通道的加密密钥解密数据包中的加密数据;然后用通信发起方的SM2公钥对通信发起方的签名进行验证,验证通过后,对通信发起方加密的数据使用通信接收方的SM2私钥进行解密,得到会话密钥参数SK1;

5)通信接收方生成响应消息并发送给服务器;所述响应消息的生成方法为:通信接收方首先生成一会话密钥参数SK2并用通信发起方的SM2公钥对其进行加密,然后用自己的SM2私钥对加密后的SK2进行签名,然后将加密后的SK2和签名形成数据包,再使用与服务器之间的TLS通道的加密密钥加密数据包,并对加密后的数据包使用通信接收方的RSA私钥进行签名,最后将加密数据和签名数据生成所述响应消息;通信接收方根据SK1和SK2生成本次会话密钥SK;

6)服务器使用通信接收方的RSA公钥对该响应消息中的签名进行验证,验证通过后,使用TLS通道的加密密钥解密数据包,然后将解密后的数据使用服务器与通信发起方的TLS通道进行保护,并对保护后的数据使用服务器的RSA私钥进行签名,将加密数据和签名组合后发送给该通信发起方;

7)通信发起方用服务器的RSA公钥对接收数据中的签名进行验证,验证通过后,使用TLS通道的加密密钥解密数据包中的加密数据,然后用通信接收方的SM2公钥对解密后的签名进行验证,验证通过后,使用自己的SM2私钥解密加密后的数据,得到会话密钥参数SK2;通信发起方根据SK1和SK2生成本次会话密钥SK;

其中,密钥管理服务器为每一通信方分配两组密钥对:RSA密钥对和SM2密钥对;通信发起方和通信接收方分别保存有对方两密钥对的公钥,以及服务器的RSA公钥;服务器保存有每一通信方的RSA公钥。

2.如权利要求1所述的方法,其特征在于,所述通信发起方在本地对SK1和SK2进行异或,生成本次会话密钥SK;所述通信接收方在本地对SK1和SK2进行异或,生成本次会话密钥SK。

3.如权利要求1或2所述的方法,其特征在于,在数据安全传输阶段,通信发起方使用SRTP协议对通信语音或视频进行保护,会话密钥为SK,然后对加密后的数据包使用SM2算法进行签名并发送;通信接收方接收到数据包后,首先分离出签名,使用通信发起方的SM2公钥对签名进行验证,验证通过后使用会话密钥SK解密通话内容。

4.如权利要求1或2所述的方法,其特征在于通信发起方与通信接收方之间的密钥协商数据采用SM2公钥进行认证和保护。

说明书 :

一种VoIP实时数据安全传输的端到端密钥协商方法

技术领域

[0001] 本发明涉及一种端到端密钥协商方法,尤其涉及一种VoIP实时数据安全传输的端到端密钥协商方法,适用于VoIP通信(Voice over Internet Protocol),属于数字网络技术领域。

背景技术

[0002] 随着移动通信技术的迅速发展,智能手机终端得到了广泛应用,运行于其上的各种应用,例如VoIP语音通信和即时通信,给人们的工作生活带来了极大的便利。2013年4月,微软宣布Skype的全球用户每天累计使用Skype同他人交流的时间已达20亿分钟,已经占据了全球四分之一的国际长途通话份额。VoIP的基本原理是使用语音压缩算法对语音数据编码进行压缩处理,再按TCP/IP标准包格式进行传输,通过IP网络把数据包送至目的地,接收方把这些语音数据包串起来,经过解压处理,恢复成原来的语音信号。
[0003] VoIP极大地丰富了人们的生活,降低了资费,但是VoIP由于使用IP作为传输媒介,天然的存在一些安全缺陷,例如不能保证用户的隐私和通信安全。因此,对于VoIP传输的数据进行加密保护成为急需解决的问题。
[0004] 基于PKI体制的安全以及加解密算法是目前公认的较好的安全方案之一。目前的传统做法都是使用RSA公钥进行加密,来保护会话密钥的安全。但是“斯诺登事件”给我们揭示出国际的密码算法并不是安全可靠的,使用国际密码算法进行保护的信息很可能会受到国外组织的监听和监控。
[0005] 会话初始协议(Session Initial Protocol,SIP)是下一代网络中的核心协议之一,广泛应用于控制多媒体通信会话,如IP网上的语音和视频通话。SIP用于创建、修改、终止由一个或多个媒体流组成的会话,并且能用于两方或多方会话(关于SIP可参考:Rosenberg J,Schulzrinne H,Camanilo G.SIP:Session initiation protocol.Internet RFC 3261,2002)。
[0006] 中国专利(专利申请号CN201010111260.8)公开了一种端对端会话密钥协商方法和系统,用于身份标识与位置分离的网络架构中。该方法包括:当第一接入节点接收到第一用户终端发起的加密呼叫请求时,利用该加密呼叫请求中携带的第二用户终端的身份标识,查询第二接入节点的路由标识和有效的公钥;所述第一接入节点生成端对端会话密钥,并将所述端对端会话密钥发送给所述第一用户终端,并利用查询到的有效的公钥将该端对端会话密钥加密后发送给所述第二接入节点;所述第二接入节点利用所述有效的公钥对应的私钥解密并获取该端对端会话密钥,并将所述端对端会话密钥发送给所述第二用户终端。
[0007] 中国专利CN201010243957.0公开了一种基于对称密码的弱认证和密钥协商方法,包括如下步骤:1)在任意两个网络节点设备A和B之间预置一长期共享密钥k;2)在节点A和B上各自设置一时钟;3)在节点A和B点之间内置加密算法E和hash函数H(x);4)在节点A和B之间建立认证和会话密钥,方法为:节点A发送经加密算法E和长期共享密钥k加密的密文和A的相关信息给节点B,节点A计算会话密钥;节点B利用解密算法和长期共享密钥k对密文解密,节点B将解密后的信息与节点A的相关信息进行对照,如果信息合法,认证通过,则节点A和B之间共享会话密钥;会话密钥为hash函数H(x)。
[0008] 中国专利CN200410030855.5公开了一种端到端加密通信的密钥分发方法,在每个用户终端和密钥分发中心分别存储有对应用户的用户私有数据,该方法包括:VoIP服务器收到主叫终端的呼叫建立请求后,向密钥分发中心发送获取密钥请求;密钥分发中心收到请求后,分别产生主叫加密密钥特征数据和被叫加密密钥特征数据,并将所产生的加密密钥特征数据返回给VoIP服务器;VoIP服务器将所得到的主叫和被叫加密密钥特征数据分别发送给主叫终端和被叫终端;主叫终端和被叫终端分别通过当前得到的加密密钥特征数据和自身存储的用户私用数据产生本次呼叫的加密通信密钥,并通过所产生的加密通信密钥进行双方的加密语音通话。该方法能在端到端加密通信系统中实现高安全性的密钥分发。
[0009] 中国专利(专利申请号:N201110390564.7)公开了一种基于SM2密钥交换协议的密钥协商方法,其特征在于,包括:确定本次密钥协商所使用的椭圆曲线参数阶n的取值;计算所述阶n≤2x时,X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值;基于所述参数W的取值与协商对端进行密钥协商。
[0010] 已有专利提出的方案并不适用于VoIP数据传输的安全保护。在信令传输阶段,仅采用了TLS协议进行保护,但是传输的内容对于服务器是可见的。

发明内容

[0011] 本发明提供了一种适用于手机终端VoIP安全语音、视频通信的端到端密钥协商方法,采用TLS和SM2公钥两层加密方法对密钥协商参数进行保护来保证密钥协商的安全性。
[0012] 本发明采用以下技术方案:
[0013] 一种用于VoIP安全语音、视频的密钥协商方法,包括:
[0014] (1)信令安全传输阶段
[0015] 信令的传输使用TLS协议进行保护。客户端和服务器端保存有对方的RSA公钥,客户端和服务器端之间的SIP信令采用TLS协议进行双向认证和保护。
[0016] (2)端到端密钥协商阶段
[0017] 本阶段采用两层加密的方式,在第一层,通信发起方和服务器之间,服务器和通信接收方之间分别采用TLS协议进行保护,在第二层,通信发起方和通信接收方的密钥协商参数信息使用通信发起方和通信接收方的SM2公钥分别进行保护。通信发起方和通信接收方都保存有对方的SM2公钥。通信发起方、通信接收方和服务器都保存有对方的RSA公钥(关于RSA加密方法,SM2加密方法以及数字签名等内容可参考:R.L.Rivest,A.Shamir,and L.Adleman.A method for obtaining digital signatures and public-key cryptosystems.Communications of the ACM,21(2):120-126,1978;SM2椭圆曲线公钥密码算法.国家密码管理局,2010年12月)。
[0018] 通信发起方在发送的通信请求消息(INVITE消息)中,携带用于语音以及视频通信时所使用的会话密钥参数SK1。通信发起方首先使用通信接收方的SM2公钥对会话密钥参数SK1进行加密,并使用自己的SM2私钥对加密后的SK1进行签名,然后将这两部分组合在一起,形成数据包。发起方使用与服务器之间的TLS通道的加密密钥加密数据包,加密后的数据包使用通信发起方的RSA私钥进行签名。发起方将加密和签名后的数据包发送给服务器,发起方和服务器之间的数据采用TLS协议进行保护。
[0019] 服务器接收到通信发起方发送的数据包后,首先分离出签名信息,使用通信发起方的RSA公钥对签名进行验证。验证通过后,服务器使用TLS通道的加密密钥解密数据包,之后再将解密的数据包使用与通信接收方的TLS通道的密钥进行加密,并使用服务器的RSA私钥签名后发送给通信接收方。通信接收方接收到服务器发送的通信数据后,首先分离出签名,使用服务器的RSA公钥对签名进行验证。验证通过后,通信接收方使用TLS通道的加密密钥解密数据包。通信接收方在解密后的数据中,分离出通信发起方的签名信息,并使用通信发起方的SM2公钥对签名进行验证,验证通过后,对通信发起方加密的数据使用接收方的SM2私钥进行解密,得到会话密钥参数SK1。
[0020] 通信接收方在回答该INVITE消息的响应消息中,携带用于语音以及视频通信时所使用的会话密钥参数SK2。通信接收方首先使用通信发起方的SM2公钥对会话密钥参数SK2进行加密,并使用自己的SM2私钥对加密后的SK2进行签名,然后将这两部分组合在一起,形成数据包,再使用与服务器之间TLS通道的加密密钥进行加密,加密后的数据包使用通信接收方的RSA私钥进行签名。通信接收方将加密和签名后的数据包发送给服务器。通信接收方对SK1和SK2进行异或,生成本次会话密钥SK。
[0021] 服务器接收到通信接收方发送的数据包后,首先分离出签名信息,使用通信接收方的RSA公钥对签名进行验证。验证通过后,服务器使用TLS通道中的加密密钥解密数据包。然后将解密后的数据使用与通信发起方之间TLS通道密钥进行加密,并使用服务器的RSA私钥进行签名。服务器将加密和签名后的数据包发送给通信发起方。
[0022] 通信发起方接收到服务器发送的通信数据后,首先分离出签名,使用服务器的RSA公钥对签名进行验证。验证通过后,通信发起方使用与服务器TLS通道的加密密钥解密数据包。通信发起方在解密后的数据中,分离出通信接收方的签名信息,并使用通信接收方的SM2公钥对签名进行验证。验证通过后,通信发起方使用自己的SM2私钥解密加密后的数据,得到会话密钥参数SK2。通信发起方对SK1和SK2进行异或,生成本次会话密钥SK。
[0023] (3)数据安全传输阶段。
[0024] 在通信过程中,通信发起方使用SRTP协议对数据进行保护,会话密钥是第二阶段协商的SK,加密算法使用国密SM4算法。通信发起方对加密后的数据包使用SM2算法进行签名并发送。通信接收方接收到数据包后,首先分离出签名,使用通信发起方的公钥对签名进行验证,验证通过后使用会话密钥SK解密通话内容。
[0025] 与现有技术相比,本发明的积极效果为:
[0026] 本发明采用两层加密方法对密钥协商参数进行保护,并且在信令传输阶段对信令进行双向认证和保护,大大提高了信息传输的安全性。

附图说明

[0027] 图1为本发明信令安全传输阶段的通信原理图;
[0028] 图2为本发明密钥协商阶段发起方消息发送示意图;
[0029] 图3为本发明密钥协商阶段接收方消息发送示意图;
[0030] 图4为本发明数据安全传输阶段示意图。

具体实施方式

[0031] 下面结合附图对本发明进行更全面的描述:
[0032] 本发明是一种用于手机终端VoIP实时数据安全传输的端到端密钥协商方法,包括两个阶段:信令安全传输阶段和密钥协商阶段,第一阶段使用TLS协议进行保护,第二阶段使用TLS协议和SM2公钥两层加密方法。
[0033] 如图1所示,在信令安全传输阶段,在VoIP信令传输阶段,客户端和服务器端保存有对方的RSA公钥。客户端和服务器端之间的SIP信令采用TLS协议进行双向认证和保护。通信发起时,客户端使用TLS协议对通信内容进行保护,并利用客户端的RSA私钥对加密后的通信内容进行签名。
[0034] 服务器端接收到客户端发送的数据后,首先分离出签名,并利用客户端的RSA公钥对签名进行验证,验证通过后,服务器端使用TLS通道的加密密钥解密数据包。服务器将解密后的数据包使用TLS协议进行保护,并使用RSA私钥签名。
[0035] 在端到端密钥协商阶段,采用两层加密的方式。在通信发起方和服务器之间,服务器和通信接收方之间分别采用TLS协议进行保护。对协商的密钥参数信息使用通信发起方和通信接收方的SM2公钥分别进行保护。通信发起方和通信接收方都保存有对方的SM2公钥。通信发起方、通信接收方和服务器都保存有对方的RSA公钥。
[0036] 通信发起方在发送的通信请求消息(INVITE消息)中,携带用于语音以及视频通信时所使用的会话密钥参数SK1。通信发起方首先使用通信接收方的SM2公钥对会话密钥参数SK1进行加密,并使用自己的SM2私钥对加密后的SK1进行签名,然后将这两部分组合在一起,形成数据包。发起方使用与服务器之间TLS通道的加密密钥加密数据包,加密后的数据包使用通信发起方的RSA私钥进行签名。发起方将加密和签名后的数据包发送给服务器,发起方和服务器之间的通道采用TLS协议进行保护。
[0037] 服务器接收到通信发起方发送的数据包后,首先分离出签名信息,使用通信发起方的RSA公钥对签名进行验证。验证通过后,服务器使用TLS通道的加密密钥解密数据包,然后将解密后的数据使用与通信接收方之间TLS通道密钥进行加密,并使用服务器的RSA私钥进行签名。服务器将加密和签名后的数据包发送给通信发起方。
[0038] 如图2所示,通信接收方接收到服务器发送的通信数据后,首先分离出签名,使用服务器的RSA公钥对签名进行验证。验证通过后,通信接收方使用TLS通道的加密密钥解密数据包。通信接收方在解密后的数据中,分离出通信发起方的签名信息,并使用通信发起方的SM2公钥对签名进行验证,验证通过后,对通信发起方加密的数据使用接收方的SM2私钥进行解密,得到会话密钥参数SK1。
[0039] 通信接收方在回答该INVITE消息的响应消息中,携带用于语音以及视频通信时所使用的会话密钥参数SK2。通信接收方首先使用通信发起方的SM2公钥对会话密钥参数SK2进行加密,并使用自己的SM2私钥对加密后的SK2进行签名,然后将这两部分组合在一起,形成数据包,再使用与服务器之间TLS通道的加密密钥进行加密,加密后的数据包使用通信接收方的RSA私钥进行签名。通信接收方将加密和签名后的数据包发送给服务器。通信接收方对SK1和SK2进行异或,生成本次会话密钥SK。
[0040] 服务器接收到通信接收方发送的数据包后,首先分离出签名信息,使用通信接收方的RSA公钥对签名进行验证。验证通过后,服务器使用与通信接收方TLS通道中的加密密钥解密数据包。然后将解密后的数据使用服务器与通信发起方的TLS通道进行保护,并使用服务器的RSA私钥进行签名。服务器将加密和签名后的数据包发送给通信发起方。
[0041] 如图3所示,通信发起方接收到服务器发送的通信数据后,首先分离出签名,使用服务器的RSA公钥对签名进行验证。验证通过后,通信发起方使用TLS通道的加密密钥解密数据包。通信发起方在解密后的数据中,分离出通信接收方的签名信息,并使用通信接收方的SM2公钥对签名进行验证。验证通过后,通信发起方使用自己的SM2私钥解密加密后的数据,得到会话密钥参数SK2。通信发起方对SK1和SK2进行异或,生成本次会话密钥SK。
[0042] 如图4所示,在数据安全传输阶段,在通信过程中,通信发起方使用SRTP协议对通信语音或视频进行加密,会话密钥是SK,加密算法使用国密SM4算法。通信发起方对加密后的数据包使用SM2算法进行签名并发送。通信接收方接收到数据包后,首先分离出签名,使用通信发起方的公钥对签名进行验证,验证通过后使用会话密钥SK解密通话内容。