传输层安全TLS建链的方法、用户设备、服务器和系统与流程

文档序号:11234618阅读:439来源:国知局
传输层安全TLS建链的方法、用户设备、服务器和系统与流程

本发明涉及通信领域,尤其涉及通过会话协议(sessioninitiationprotocol,sip)协商减少传输层安全(transportlayersecurity,tls)认证次数的方法和系统。



背景技术:

富通信套件(richcommunicationsuite,rcs)是由近百家运营商和厂商在gsma标准组织联合倡导的可商用、可实施互通、基于ip多媒体子系统(ipmultimediasubsystem,ims)通信的核心业务集,满足运营商快速提供互联网时代的融合通信及社交服务的需求。基于msrp协议实现图片共享、文件传送和聊天等相关业务。

在rcs的业务处理过程中,用户设备(userequipment,ue)和网络设备之间通常采用传输层安全(transportlayersecurity,tls)承载,应用流程如图1所示,在ue与网络设备进行业务数据传输之前,需要在信令面建立传输控制协议(transmissioncontrolprotocol,tcp)和tls链路(包括认证过程),在建立好的信令tls链路上进行信令消息交互,完成会话协商,媒体面根据信令协商好的参数进行媒体面的tcp链路和tls链路(包括认证过程)建立,在媒体tls链路上,媒体数据封装在消息会话中继协议(messagesessionrelayprotocol,msrp)报文中进行交互,以实现安全的业务媒体数据交换。

但在网络功能虚拟化(networkfunctionvirtualization,nfv)的背景下,媒体面的加密性能直接影响云化服务器的竞争力,而在rcs会话过程 中存在冗余认证,导致设备性能差。



技术实现要素:

本发明实施例提供的传输层tls建链的方法、用户设备、服务器和系统,在rcs会话的媒体面tls建链时,通过利用信令面tls建链时的认证结果,保证msrp通信的安全性,来减少rcs会话过程中的身份认证,以实现提高设备的性能。

第一方面,本发明提供了一种提供了一种传输层tls建链的方法,该方法包括:

当信令协商完成时生成认证方式信息,认证方式信息用于指示媒体传输层安全tls建链时,采用匿名密钥算法。在媒体传输层安全tls建链时,根据认证方式信息确定第一报文,例如:clienthello报文,并向服务器发送第一报文,以用于服务器根据第一报文返回第二报文,如serverhello报文。其中,第一报文为与服务器建立握手通信的请求消息;第二报文为服务器返回的响应消息。接收第二报文,并根据第二报文进行媒体传输层安全tls建链。

结合第一方面,在第一方面的第一种可能实现的方式中,第一报文包括第一密码套件列表,根据认证方式信息确定第一报文,包括:

根据认证方式信息,确定第一密码套件列表的第一个元素为匿名密钥算法。

结合第一方面或第一方面的第一种可能实现的方式,在第一方面的第二种可能实现的方式中,第一报文还包括第一随机数,第二报文包括从第一密码套件列表中选择的加密算法、第二随机数,该方法还包括:

根据第二报文生成预主密钥(pre_master_secret);根据第一随机数、第二随机数和预主密钥生成主密钥(master_secret);根据主密钥生成加密密钥,加密密钥用于加密所要传输的数据。

结合第一方面的第二种可能实现的方式中,在第一方面的第三种可能实现的方式中,第二报文中还包括服务器的公钥,根据第二报文进行媒体传输层安全tls建链,包括:

根据服务器的公钥和预主密钥生成密钥交换信息,也可以称为clientkeyexchange,并向服务器发送密钥交换信息,以用于服务器根据密钥交换信息生成加密密钥。

结合第一方面的第三种实现方式,在第一方面的第四种可能实现的方式中,根据加密密钥和第一信息生成第一完成信息,该第一完成消息为建立tls后发送的第一次数据传输,为finish报文,第一完成信息用于验证新建立链路是否安全;

向服务器发送完成信息,以用于服务器根据完成信息返回第二完成信息,第二完成信息为服务器根据第一次完成信息生成的加密信息,为服务器向用户设备发送的finish报文;

接收第二完成信息,获取第二信息;

根据第一信息和第二信息,确定新建链路可安全传输。

第二方面,本发明还提供一种传输层安全tls建链的方法,该方法包括:在媒体传输层安全tls建链时,接收用户设备发送的第一报文,如clienthello报文第一报文为用户设备与服务器建立握手通信的请求消息,包括匿名算法;根据第一报文确定第二报文,如serverhello报文;向用户设备发送第二报文,以用于用户设备根据第二报文进行媒体传输层安全tls建链。

结合第二方面,在第二方面的第一种可能实现的方式中,第一报文包括第一密码套件列表,第一密码套件列表包括匿名算法,根据第一报文确定第二报文,包括:

从第一密码套件列表中,确定加密算法为匿名算法。

结合第二方面的第一种可能实现的方式,在第二方面的第二种可能实现的方式中第一报文还包括第一随机数,第二报文包括第二随机数,方法还包 括:接收用户设备发送的密钥交换信息,也可以称为clientkeyexchange;根据密码交换信息获取预主密钥(pre_master_secret);根据预主密钥、第二随机数和第一随机数生成主密钥;根据主密钥生成加密密钥,加密密钥用于加密所要传输的数据。

结合第二方面的第二种可能实现的方式,在第二方面的第三种可能实现的方式中,该方法还包括:

接收用户设备发送的第一完成信息,其中,第一完成信息是根据加密密钥和第一信息生成的,第一信息是根据预主密钥、第一随机数和第二随机数生成的mac值;

根据第一完成信息获取mac值,并生成第二完成信息;

向用户设备发送第二完成信息,以用于用户设备根据第二完成信息确定新建链路可安全传输数据。

第三方面,本发明实施例还提供一种用户设备,该用户设备包括:生成单元、确定单元和接收单元;

生成单元,用于当信令协商完成时,生成认证方式信息,认证方式信息用于指示媒体传输层安全tls建链时,采用匿名密钥算法;

确定单元,用于在媒体传输层安全tls建链时,根据认证方式信息确定第一报文,例如:clienthello报文,,并向服务器发送第一报文,以用于服务器根据第一报文返回第二报文,如serverhello报文,其中,第一报文为与服务器建立握手通信的请求消息;第二报文为服务器返回的响应消息;

接收单元,用于接收第二报文,并根据第二报文进行媒体传输层安全tls建链。

结合第三方面,在第三方面的第一种可能实现的方式中,第一报文包括第一密码套件列表,确定单元具体用于,

根据认证方式信息,确定第一密码套件列表的第一个元素为匿名密钥算法。

结合第三方面或第三方面的第一种可能实现的方式,在第三方面的第二种可能实现的方式中,第一报文还包括第一随机数,第二报文包括从第一密码套件列表中选择的加密算法、第二随机数;

生成单元还用于,根据第二报文生成预主密钥(pre_master_secret);

根据第一随机数、第二随机数和预主密钥生成主密钥(master_secret);

根据主密钥生成加密密钥,加密密钥用于加密所要传输的数据。

结合第三方面的第二种可能实现的方式,在第三方面的第三种可能实现的方式中,第二报文中还包括服务器的公钥,用户设备还包括发送单元,

生成单元还用于,根据服务器的公钥和预主密钥生成密钥交换信息(clientkeyexchange),并通过发送单元向服务器发送密钥交换信息,以用于服务器根据密钥交换信息生成加密密钥。

结合第三方面的第三种可能实现的方式,在第三方面的第四种可能实现的方式中,

生成单元还用于,根据加密密钥和第一信息生成第一完成信息(finish报文),完成信息用于验证新建立链路是否安全;

发送单元还用于,向服务器发送完成信息,以用于服务器根据完成信息返回第二完成信息,第二完成信息为服务器根据第一次完成信息生成的加密信息,为服务器向用户设备发送的finish报文;

接收单元还用于,接收第二完成信息,获取第二信息;

确定单元还用于,根据第一信息和第二信息,确定新建链路可安全传输。

第四方面,本发明实施例提供一种服务器,该服务器包括:接收单元、确定单元和发送单元;

接收单元用于在媒体传输层安全tls建链时,接收用户设备发送的第一报文(clienthello报文),第一报文为用户设备与服务器建立握手通信的请求消息,包括匿名算法;

确定单元用于根据第一报文确定第二报文(serverhello报文);

发送单元用于向用户设备发送第二报文,以用于用户设备根据第二报文进行媒体传输层安全tls建链。

结合第四方面,在第四方面的第一种可能实现的方式中,第一报文包括第一密码套件列表,第一密码套件列表包括匿名算法,根确定单元具体用于从第一密码套件列表中,确定加密算法为匿名算法。

结合第四方面的第一种可能实现的方式中,在第四方面的第二种可能实现的方式中,第一报文还包括第一随机数,第二报文包括第二随机数,服务器还包括获取单元和生成单元;

接收单元还用于,接收用户设备发送的密钥交换信息(clientkeyexchange);

获取单元,用于根据密码交换信息获取预主密钥(pre_master_secret);

生成单元,用于根据预主密钥、第二随机数和第一随机数生成主密钥(master_secret);

生成单元还用于,根据主密钥生成加密密钥,加密密钥用于加密所要传输的数据。

结合第四方面的第二种可能实现的方式中,在第四方面的第三种可能实现的方式中,

接收单元还用于接收用户设备发送的第一完成信息(finish报文),其中,第一完成信息是根据加密密钥和第一信息生成的,第一信息是根据预主密钥、第一随机数和第二随机数生成的mac值;

获取单元还用于根据第一完成信息获取mac值,并通过生成单元生成第二完成信息;第二完成信息为服务器根据第一次完成信息生成的加密信息,为服务器向用户设备发送的finish报文。

发送单元还用于向用户设备发送第二完成信息,以用于用户设备根据第二完成信息确定新建链路可安全传输数据。

第五方面,本发明提供一种系统,系统包括第三方面或第三方面中任一 可能实现方式中的用户设备和第四方面或第四方面中任一可能实现的服务器。

基于本发明实施例提供的一种安全传输层tls建链的方法、用户设备、服务器和系统,通过利用信令面tls建链的结果指示媒体面进行tls建链过程中采用匿名算法,减少用户设备和服务器之间的认证次数,提高了系统的性能。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中rcs业务应用流程示意图;

图2为本发明实施例提供一种系统网络结构示意图;

图3为本发明实施例提供的一种客户端的结构示意图;

图4为本发明实施例提供的一种服务器的结构示意图;

图5为本发明实施例提供的一种传输层安全tls建链方法的流程图;

图6为本发明实施例提供的另一种传输层安全tls建链的交互图;

图7为本发明实施例提供的一种rcs会话文件传输方法的流程图;

图8为本发明实施例提供的一种用户设备的结构示意图;

图9为本发明实施例提供的一种服务器的结构示意图。

具体实施方式

本发明实施例提供的传输层安全tls建链的方法、客户端、服务器和系统,可以应用于富通信套件rcs会话,当信令面和媒体面都采用tls承载时, 需要首先完成信令面的tls建链,并在建链过程中完成用户设备(userequipment,ue)和服务器之间的双向身份认证,并在建链的tls链路上完成会话发起协议(sessioninitiationprotocol,sip);在媒体面的tls建链时可以通过信令面tls建链时的认证结果,节省媒体面tls建链过程中的客户端和服务器之间的双向身份认证过程,从而极大的提升设备性能。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

图2为本发明实施例提供的一种系统结构示意图。如图2所示,所述系统200包括用户设备210和服务器220。

图3为本发明实施例提供的一种用户设备的结构示意图。该用户设备300对应于图2所示的用户设备210,如图3所示,该用户设备300包括接收器310、处理器320、发射器330和外部设备通信接口340,该接收器310和发射器330通过外部设备通信接口340与外部设备完成两者之间的通信,并通过处理器320对得到的信号进行处理。

在本实施例中,该用户设备300还包括存储器350,用于存储指令或者数据。处理器320调用存储器350中存储的指令,并执行相应的操作。

图4为本发明实施例提供的一种服务器的结构示意图。该服务器对应于图2所示的服务器220,如图4所示,该服务器400包括接收器410、处理器420、发射器430和外部设备通信接口440,存储器430、

该接收器410和发射器430通过外部设备通信接口440与外部设备完成两者之间的通信,并通过处理器420对得到的信号进行处理。

在本实施例中,该服务器400还包括存储器450,用于存储指令或者数据。处理器420调用存储器450中存储的指令,并执行相应的操作。

在本发明实施例中,图3和图4中所示的处理器320/420可以是中央处理 单元(centralprocessingunit,cpu),该处理器320/420还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

外部设备通信接口340/440除包括数据总线与外部设备连接的接口之外,还可以包括电源总线、控制总线和状态信号总线与外界设备连接的接口等。但是为了清楚说明起见,在图中将各种总线的接口都标为外界设备通信接口340/440。

存储器350/450可以包括只读存储器和随机存取存储器,并向处理器350/450提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以公私钥等信息。

图5为本发明实施例提供的一种传输层安全tls建链方法的流程图。如图5所示,该方法500的执行主体为图3所示的用户设备300和图4所示的服务器400,该方法500包括以下步骤:

s510,当信令协商完成时,用户设备生成认证方式信息,该认证方式信息用于指示媒体传输层安全tls建链时,采用匿名密钥交换算法;

s520,当媒体传输层安全tls建链时,用户设备根据认证方式信息确定第一报文;

s530,向服务器发送该第一报文,该第一报文为与服务器建立握手通信的请求消息;

s540,服务器根据第一报文确定第二报文;

s550,服务器向用户设备发送第二报文;

s560,用户设备接收第二报文,并根据第二报文进行媒体传输层安全tls建链。

rcs的一次会话,需要先进行信令面的会话发起协议sip协商,根据信令 面协商的结果指示在媒体面在tls建链过程中,省略对对方,例如服务器的身份认证。

在s510中,在信令面的用户设备和服务器建立传输控制协议tcp的建链的基础上,完成信令面的tls建链过程,该过程包括客户端与服务器之间的双向身份认证过程。

在信令面tls建链后进行信令会话发起协议sip协商,得到认证方式信息,该认证方式信息可以包括指示用户设备与服务器在媒体面进行tls建链时,采用匿名密钥交换算法的指示信息,即信任用户设备与服务器在信令面的tls建链过程中的认证关系,在媒体面tls建链过程中省略用户设备和服务器的双向建链过程,提高系统的性能。

在s520中,第一报文为用户设备与服务器建立通信连接的请求消息,在rcs会话过程中可以叫做clienthello报文。clienthello报文可以包括第一密码套件列表和第一随机数,第一密码套件列表为加法算法族。

clienthello报文还包括tls的版本信息、安全id和压缩算法族等信息。其中,tls版本信息中包括用户设备可以接受的tls版本信息,例如:ssl3.0、tls1.0、tls1.1、tls1.2等版本信息。

在本申请实施例中,第一报文中的第一密码套件列表中增加匿名算法。优选地,可以确定第一密码套件列表的第一个元素为匿名密钥交换算法。第一元素为服务器选择加密算法中的首选算法。

当服务器接收到clienthello报文后,在s540中,服务器根据clienthello报文中的tls版本信息、加密算法族和压缩算法族进行磋商,确定第二报文。

在本申请实施例中,第二报文可以为服务器根据第一报文信息向用户设备返回的响应消息,可以包括从第一密码套件列表中选择的加密算法、第二随机数和服务器的公钥。

在s540中,服务器根据第一报文确定第二报文的过程如下:

服务器确定是否可以与用户设备(或者客户端)发送的tls版本信息中包括的可接受版本信息进行对接。

如果服务器可以与用户设备发送的版本信息对接时,即用户设备发送的可接受版本信息包括在服务器可以接收的版本信息中时,服务器从clienthello报文的加密算法族和压缩算法族选择用户设备和服务器通信使用的加密算法和压缩算法,得到返回用户设备的响应信息,也可以叫做serverhello报文。

如果服务器发送的tls版本信息服务器不能对接的话,换句话讲,如果客户端发送的版本不在服务器可与客户端对接的版本信息中时,服务器会发送协议版本错误的告警消息给用户设备。

需要说明的是,在本申请实施例中,服务器的公钥可以与serverhello报文一同发送给用户设备,也可以以serverkeyexchange的形式单独发送,告知用户设备服务器的公钥。

在用户设备与服务器建立握手的阶段中,当服务器已经发送完在此阶段所要发送的全部信息时,服务器向用户设备发送serverhellodone,告知用户设备在此阶段不在发送任何信息。其中,serverhellodone为一条空消息。

客户端接收到服务器返回的响应消息之后,在s560中,用户设备根据serverhello报文与服务器进行tls建链,其具体过程为:

用户设备根据第二报文生成预主密钥(pre_master_secret)的随机密码串,并使用服务器的公钥对其进行加密;客户端将加密后的信息发送给服务器;客户端与服务器分别根据预主密钥以及客户端与服务器的随机数,即第一随机数和第二随机数数值独立计算出加密密钥和mac密钥,然后用户设备将所有握手消息的mac值发送给服务器,服务器接收到用户设备发送的握手消息的mac值时,将所有握手消息的mac值发送给用户设备,以用于用户设备根据接收到的握手消息的mac值确定握手是否受到第三方的攻击。

s510至s560为本发明实施例提供的一种传输层安全tls建链的方法,通 过利用信令面tls建链的结果指示媒体面进行tls建链过程中采用匿名算法,减少用户设备和服务器之间的认证次数,提高了系统的性能。

图6为本发明实施例提供的一种媒体面tls单向认证建链的方法流程图。该方法600的执行主体为用户设备和服务器,如图6所示,该方法包括以下步骤:

s610,用户设备根据信令面tls建链时得到的认证方式信息向服务器发送clienthello报文;

s620,服务器根据clienthello报文向用户设备发送serverhello报文;

s630,服务器向用户设备发送serverkeyexchange;

s640,服务器向用户设备发送serverhellodone;

s650,用户设备根据服务器发送的信息生成预主密钥,并向服务器发送clientkeyexchange;

s660,用户设备向服务器发送changecipherspec,以用于通知服务器使用当前加密密钥进行加密。

s670,用户设备根据服务器发送的信息和用户设备产生的预主密钥产生的加密密钥对用户设备根据服务器发送的信息产生的mac值进行加密,并将加密后的信息以finish发送给服务器;

s680,服务器根据用户设备发送的changecipherspec向用户设备发送changecipherspec;

s6890,服务器根据用户设备发送的加密后的mac信息向用户设备发送finish。

用户设备接收到服务器发送的finish后,确定是否可以安全通信。

具体的,在rcs会话过程中,媒体面的tls建链可以利用信令面tls建链过程中用户设备和服务器之间的认证结果,采用adh(匿名)算法进行tls 建链,省略用户设备和服务器之间的认证过程,提高了系统的性能。

在s610中,clienthello报文中包括用户设备可以接受的tls版本的版本信息,例如:ssl3.0、tls1.0、tls1.1、tls1.2;用户设备产生的随机数,安全标识(identity,id)、密码算法族和压缩算法族。

在s620中,serverhello报文为服务器根据clienthello报文返回的响应消息。

服务器根据clienthello报文中的tls版本信息,确定是否需要建立tls,当clienthello报文中包括的tls版本信息为服务器可以支持的tls版本时,服务器从密码算法族和压缩算法族中分别选取加密算法和压缩算法,并携带使用的tls版本和服务器产生的随机数返回给用户设备。

在s630中,服务器向用户设备发送的serverkeyexchange包括服务器的公钥,用于用户设备向服务器传送密钥的加密。

需要说明的是,在本申请实施例中,服务器的公钥也可以随serverhello报文一同发送给用户设备,在实际应用中,可以根据不同的需要对服务器进行设置,在本申请实施例中,对此不作任何限制。

当服务器无其他消息向用户设备发送时,执行s640,其serverhellodone是一条空白消息,不携带任何参数,用来指示服务器的hello和相关包报文的结束。

在s650中,clientkeyexchange为使用服务器公钥加密的预主密钥的加密后的信息,预主密钥为用户设备根据serverhello报文产生的一个随机密码串。该报文内容依据不同的密钥交换算法而不同。当服务器接收到该信息时,会使用服务器的私钥对其加密后的信息进行解密,得到预主密钥,并根据clienthello报文中的随机数、服务器发送serverhello报文时产生的服务器随机数以及预主密钥进行计算得到主密钥,并采用相应的算法得到加密密钥。

于此同时,或者用户设备在生成预主密钥时或者其他时间段内,可以根 据clienthello报文中的随机数,预主密钥和serverhello报文中的随机数计算得到主密钥,并根据响应的算法得到加密密钥。此时,用户设别和服务器两端都具有加密密钥。

用户设备通过s660通知服务器使用当前加密参数(或加密密钥)进行加密。

在s670中,用户设备向服务器发送的finish为使用加密密钥加密摘要后的信息,摘要为用户设备根据serverhello报文产生的mac值,以用于验证用户设备和服务器之间是否存在第三方攻击者,造成传输数据的安全性问题。

当服务器接收到用户设备发送的使用当前加密参数进行加密的消息后,服务器回应用户设备使用当前的加密参数进行加密,即执行s680。

当服务器接收到用户设备发送的finish后,采用加密密钥对摘要进行加密,并将新的finish发送给用户设备,即执行s680,以用户设备解密其finish获取其摘要,将获取的摘要与自身生成的摘要进行对比,确定是否被第三方篡改。

如果获取的摘要和自身生成的摘要相同,表示在数据传输中为被第三方篡改;反之,则被第三方篡改。

通过本发明实施例的提供的传输层安全tls建链的方法,通过利用信令面tls建链的结果指示媒体面进行tls建链过程中采用匿名算法,减少用户设备和服务器之间的认证次数,提高了系统的性能。

在媒体tls建链之前还需要完成媒体tcp的建链。其tcp建链过程通过三次握手的方式实现,如图6所示。

需要说明的是,在rcs一次会话中,信令tcp建链的过程与媒体tcp建链过程相类似,为描述简洁,在这里不在赘述。

还需要说明的是,在rcs一次会话中,信令面的tls建链过程包括用户设备和服务器之间的身份认证过程。

下面依信令面采用tls单向认证、媒体面tls采用匿名认证对本发明的方案进行详细的说明。

图7为本发明实施例提供的一种rcs会话文件传输方法的流程图。如图7所示,该方法700的执行主体对应图5中的执行主体。

s1至s3:用户设备发起tcp连接请求,通过3次握手与服务器实现信令面tcp建链成功。

用户设备或者终端向服务器发送第一次握手,即建立联机(synchronous,syn)请求,服务器接收到syn请求后确认联机信息,并向用户设备发送第二次握手synack,即联机确认(acknowledgement,ack);用户设备接收到synack后确定是否可以与服务器进行建立连接,当确定可以与服务器联机时,向服务器发送第三次握手,即ack。

至此,用户设备与服务器建立联机,用户设备和服务器可以传输数据,但是为了数据的安全传输,采用tls承载,需要进行信令面tls建链。

s4:用户设备发出clienthello报文。

clienthello报文中主要包括tls的版本信息、随机数、安全id、密码算法族、压缩算法族。服务器收到消息后检查clienthello报文中client_version的值(包含tls版本信息)。服务器可与使用不同tls版本(ssl3.0、tls1.0、tls1.1、tls1.2)的客户端对接。如果客户端发过来的版本不在以上的几个版本范围内,则发送协议版本错误的告警消息给客户端。

s5:服务器根据接收到的clienthello报文,确定客户端是否需要建立tls,并选择加密算法和压缩算法,并向用户设备发送serverhello报文。

serverhello报文中包括确定的tls版本信息和协商的加密算法、压缩算法和服务器产生的随机数。

s6:服务器向用户设备发送自身证书(certificate)。

证书中包括服务器的公钥。

s7:服务器发送serverhellodone报文,用来指示服务器的hello和 相关报文的结束。

其中,serverhellodone报文为一条空白消息,不带参数。

需要说明的是,在本发明实施例中,如果需要对用户设备进行验证时,在服务器向用户设备发送serverhellodone报文之前,服务器向用户设备发送请求用户设备发送证书的请求消息,以用于用户设备接收到请求消息时,向服务器发送证书;服务器接收到用户设备的证书时,对用户设备的身份进行验证。

s8:用户设备向服务器发送clientkeyexchange报文。

具体为用户设备对收到的证书进行验证,并抽取服务器的公钥,再生成一个称为预主密钥(pre_master_secret)的随机密码串,并使用服务器的公钥对预主密钥进行加密,用户设备将加密后的信息发送给服务器。

其中,clientkeyexchange报文的内容依据不同的密钥交换算法而不同。

用户设备与服务器根据预主密钥、clientkeyexchange报文中的随机数以及服务器的随机数独立计算得到加密密钥和mac值(或者mac密钥)。

当用户设备和服务器均有加密密钥时,执行s9。

s9:用户设备向服务器发送changecipherspec报文,表明将要使用当前加密参数。

s10:客用户设备发送finished报文,用来验证密钥交换和鉴别过程是否成功。

finished报文为用户设备使用加密密钥对mac值进行加密后的加密信息。

s11:服务器也向用户设备发送changecipherspec报文,表明启用当前的加密密钥。

s12:服务器发送加密过的finished报文,用来验证密钥交换和鉴别过程是否成功。

服务器将用户设备的finished报文进行解密,获取其中的mac值,并使用加密密钥进行加密,将加密后的finished报文发送给用户设备。

用户设备接收到该finished报文后,会对该finished报文进行解密,获取其中的mac值,并将本端(用户设备端)的mac值与获取的mac值进行比对,确定密钥交换和鉴别过程中是否被第三方篡改。

当用户设备端的mac与获取的mac值相同时,器过程传输过程安全,未被第三方篡改;反之,则其过程中被第三方篡改。

其中,s4至s12为信令面tls单向认证建链的过程。

在媒体面msrp消息的传输,不能单独使用,需要结合sip协议进行相关的会话控制,首先需要使用sipinvite请求完成会话建立的过程,并通过sip消息体的sdp交互来协商msrpurls,以建立msrp的底层连接,其过程为s13至s15。

s13:用户设备在信令tls链路上,向服务器发起invite请求消息;

s14:服务器返回200ok响应消息;

s15:用户设备向服务器发送ack消息。

在本发明实施例中,用户设备和服务器两者之间完成文件传输业务协商时,生成认证方式信息分别指示媒体承载面tls协商采用匿名算法。

s16~s18:用户设备在媒体面发起tcp连接请求,通过3次握手与服务器实现媒体面tcp建链成功。

其执行过程与信令面tcp建链过程类似,为简洁描述,在此不再对此过程进行赘述。

s19:用户设备发出clienthello报文,其中,clienthello报文的加密算法套件中增加匿名算法。

s20:服务器根据接收到的clienthello报文,判断客户端是否需要建立tls,优选匿名认证,并发回serverhello报文对clienthello进行回应。

s21:服务器发送serverkeyexchang,用于与用户设备交换sessionkey。

该sessionkey可以为预主密钥。

s22:服务器发送serverhellodone报文,用来指示服务器的hello和 相关报文的结束。

s23:用户设备向服务器发送clientkeyexchang报文,用于与服务器交换sessionkey。

s24:客户端向服务器发送changecipherspec报文,表明将要使用当前加密参数。

s25:客户端发送加密过的finished报文,用来验证密钥交换和鉴别过程是否成功。

s26:服务器也向客户端发送changecipherspec报文,表明启用当前的加密参数。

s27:服务器发送加密过的finished报文,用来验证密钥交换和鉴别过程是否成功。

至此,客户端与服务器之间的tls链路建立成功。

以上s19至s27的方法步骤与本发明实施例中图6所示的方法中s610至s690的方法步骤相同,为简洁描述,在此不再赘述其过程。

通过以上步骤后,可以进行msrp消息的交互,其过程为s28和s29。

s28:用户设备在媒体tls链路上,向服务器发送msrpsend请求消息,开始文件传输。

s29:服务器给用户设备返回msrp200ok响应消息。

至此,用户设备与服务器之间在tls链路上使用msrp消息进行文件传输。

当文件传输完成后,通过s30至s40完成会话释放,也就是四次握手关闭的过程。

s30:用户设备完成文件传输后,在信令tls链路上,向服务器发送bye请求消息。

s31:服务器给用户设备返回200ok响应消息,结束信令sip会话。

s32:用户设备在信令tls链路上给服务器发送告警/关闭通知消息。

s33-s36:用户设备与服务器之间通过四次握手关闭信令tcp链路。

s37:用户设备在媒体tls链路上给服务器告警/关闭通知消息。

s38-s41:用户设备与服务器之间通过四次握手关闭媒体tcp链路。

基于本申请实施例提供的传输层安全tls建链的方法,通过利用信令面tls建链的结果指示媒体面进行tls建链过程中采用匿名算法,减少用户设备和服务器之间的认证次数,提高了系统的性能。

采用本发明实施例的安全传输层tls建链的方法可以将系统的性能提升5-10倍。

应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

上文中结合图5至图7,详细描述了根据本发明实施例的安全传输层tls建链的方法,下面将结合图8至图9,详细描述根据本发明实施例的用户设备和服务器。

图8为本发明实施例提供的一种用户设备的结构示意图。该用户设备800对应于图2中的210。该用户设备800包括生成单元810、确定单元820和接收单元830。

生成单元810,用于当信令协商完成时生成认证方式信息,认证方式信息用于指示媒体传输层安全tls建链时,采用匿名密钥算法。

确定单元820,用于在媒体传输层安全tls建链时,根据认证方式信息确定第一报文,并向服务器发送第一报文,以用于服务器根据第一报文返回第二报文,其中,第一报文为与服务器建立握手通信的请求消息;第二报文为服务器返回的响应消息。

接收单元830,用于接收第二报文,并根据第二报文进行媒体传输层安全tls建链。

在rcs会话过程中,在媒体面的tls建链时可以利用信令面tls建链过 程中用户设备和服务器之间的认证结果,采用adh(匿名)算法进行tls建链,省略用户设备和服务器之间的认证过程,提高了系统的性能。

可选地,在本发明实施例中,第一报文包括第一密码套件列表,确定单元820具体用于,根据认证方式信息,确定第一密码套件列表的第一个元素为匿名密钥算法。

可选地,在本发明实施例中,第一报文还包括第一随机数,第二报文包括从第一密码套件列表中选择的加密算法、第二随机数;

生成单元810还用于,根据第二报文生成预主密钥;

根据第一随机数、第二随机数和预主密钥生成主密钥;

根据主密钥生成加密密钥,加密密钥用于加密所要传输的数据。

可选地,在本发明实施例中,第二报文中还包括服务器的公钥,如图8所示,该用户设备800还包括发送单元840,

生成单元810还用于,根据服务器的公钥和预主密钥生成密钥交换信息,并通过发送单元向服务器发送密钥交换信息,以用于服务器根据密钥交换信息生成加密密钥。

可选地,在本发明实施例中,生成单元810还用于,根据加密密钥和第一信息生成第一完成信息,完成信息用于验证新建立链路是否安全;

发送单元840还用于,向服务器发送完成信息,以用于服务器根据完成信息返回第二完成信息;

接收单元830还用于,接收第二完成信息,获取第二信息;

确定单元820还用于,根据第一信息和第二信息,确定新建链路可安全传输。

通过本发明实施例提供的用户设备,通过利用信令面tls建链的结果指示媒体面进行tls建链过程中采用匿名算法,减少用户设备和服务器之间的认证次数,提高了系统的性能。

需要说明的是,本申请实施例提供的用户设备中的各个单元可以实现图 5、图6以及图7中对应用户设备的方法/步骤,为简洁描述,在此不再赘述。

图9为本发明实施例提供的一种用户设备的结构示意图。该服务器900对应于图2中的220。该服务器900包括:接收单元910、确定单元920和发送单元930;

接收单元910用于在媒体传输层安全tls建链时,接收用户设备发送的第一报文,第一报文为用户设备与服务器建立握手通信的请求消息,包括匿名算法;

确定单元920用于根据第一报文确定第二报文;

发送单元930用于向用户设备发送第二报文,以用于用户设备根据第二报文进行媒体传输层安全tls建链。

可选地,在本发明实施例中,第一报文包括第一密码套件列表,第一密码套件列表包括匿名算法,根确定单元920具体用于从第一密码套件列表中,确定加密算法为匿名算法。

可选地,在本发明实施例中,第一报文还包括第一随机数,第二报文包括第二随机数,服务器还包括获取单元940和生成单元950;

接收单元910还用于,接收用户设备发送的密钥交换信息;

获取单元940,用于根据密码交换信息获取预主密钥;

生成单元950,用于根据预主密钥、第二随机数和第一随机数生成主密钥;

生成单元950还用于,根据主密钥生成加密密钥,加密密钥用于加密所要传输的数据。

可选地,在本发明实施例中,接收单元910还用于接收用户设备发送的第一完成信息,其中,第一完成信息是根据加密密钥和第一信息生成的,第一信息是根据预主密钥、第一随机数和第二随机数生成的mac值;

获取单元940还用于根据第一完成信息获取mac值,并通过生成单元生成第二完成信息;

发送单元930还用于向用户设备发送第二完成信息,以用于用户设备根据第二完成信息确定新建链路可安全传输数据。

通过本发明实施例提供的用户设备,通过利用信令面tls建链的结果指示媒体面进行tls建链过程中采用匿名算法,减少用户设备和服务器之间的认证次数,提高了系统的性能。

需要说明的是,本申请实施例提供的服务器中的各个单元可以实现图5、图6以及图7中对应服务器的方法/步骤,为简洁描述,在此不再赘述。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1