5G 新通话作为运营商的一种全新通话概念的探索,虽名为通话,实则远不止于此,更是一种实时的沉浸式互动体验。针对 5G 新通话,3GPP 在 R16 阶段完成了 5G 网络 IMS Data Channel 实时交互通道的相关技术标准,并于 2020 年 3 月将其写入并发布了 TS26.114 V16.5.0 版本,实现了 5G VoNR 业务能力的增强。IMS Data Channel(简称 DC 通道)以 VoLTE/VoNR 高清音视频通话为基础,与 WebRTC 技术相结合,进一步拓展提供了数据通道,使得语音和视频通话能够与扩展的数据通道同步,进而在高清视频通话中达成屏幕共享、叠加 AR ,甚至是实现听觉、视觉、触觉、动觉等同步的全沉浸式体验。IMS Data Channel 基于 UDP 提供具有高实时性的单流或多流数据交互通道,能够灵活支持多种数据通道,充分兼顾各种应用对于底层通道的多样化需求。
5G 新通话能够丰富人们的日常交流方式,让生活变得更加多姿多彩,然而随之而来的数据安全问题也愈发重要。目前,5G 新通话中 DC 通道的数据是借助 UDP 进行封装和传输的,为保障数据的安全性,引入了 DTLS 协议为数据传输保驾护航。
DTLS(Datagram Transport Layer Security)即数据包传输层安全性协议。当前众多数据包传输的应用程序(如实时视频会议、internet电话和在线游戏等)都是时延敏感的,大都采用了不可靠的UDP数据报文传输方式。大家都知道,基于 TCP 的应用能够运用已有的 TLS 协议来确保安全,然而 TLS 无法保障在 UDP 上传输的数据的安全性。正因如此,Datagram TLS 应时而生,它在现存的 TLS 协议架构基础上进行了扩展,使其能够支持 UDP 协议,成为了 TLS 的一个支持 UDP 数据包传输的版本,其中 DTLS 1.0 是基于 TLS 1.1 版本,DTLS 1.2 则是基于 TLS 1.2 版本。
DTLS 协议与 TLS 协议有所不同,DTLS 协议在传输层对数据进行加密和认证,而 TLS 协议是在传输层之上对数据进行加密和认证。所以,DTLS 协议不但能够提供与 TLS 协议相同的安全保护,同时还能够保留 UDP 协议的优点,更适合应用于对时延敏感的程序。
DTLS协议与TLS协议类似,通常包含以下三个阶段:
握手阶段:客户端和服务器之间进行握手,协商加密算法和密钥等。
数据传输阶段:客户端和服务器之间进行数据传输,DTLS协议对数据进行加密和认证。
断开连接阶段:客户端和服务器之间断开连接,并清除相关的状态信息。
DC通道协商完成之后(通过SIP交互进行DC通道的协商),需要先进行DTLS建链,之后在此基础上进行数据传输,DTLS建链位置参见下面示例:
1. 终端发起协商bootsrap DC流程时的DTLS建链位置
2. 终端-终端之间的application DC建立流程时的DTLS建链位置
与TCP三次握手类似,DTLS也是通过握手的方式建立链接,握手交互流程示例见下(遵循RFC 6347定义的DTLS 1.2协议):
流程描述:
客户端发送ClientHello报文,发起握手和密钥协商,报文主要包含:随机数(后续用于生成共享密钥)、密码算法族、压缩算法族。
按照RFC 6347交换Cookie:服务端生成Cookie,打包在HelloVerifyRequest报文中发送给客户端。
客户端收到Cookie后,将Cookie打包在ClientHello报文中并再次发送给服务端。
服务端校验Cookie,确认有效后向客户端发送ServerHello报文,报文主要包含:随机数、选择的加密方式、选择的压缩方式。
服务端用Certificate报文向客户端发送服务端证书(证书可以采用自签名证书,证书格式基于X.509标准,需要遵循RFC 5280,客户端根据SDP中的fingerprint信息来校验服务器证书)。
服务端用ServerKeyExchange报文向客户端发送服务端的密钥协商信息。
服务端用CertificateRequest报文向客户端请求客户端证书。
服务端向客户端发送ServerHelloDone报文,指示服务端的Hello和相关报文交互结束。
客户端用Certificate报文向服务端发送客户端证书(证书可以采用自签名证书,证书格式基于X.509标准,需要遵循RFC 5280,服务端采用SDP中fingerprint信息来校验客户端证书)。
客户端采用信令消息SDP中的fingerprint信息来校验服务端证书,校验通过后用ServerKeyExchange报文向服务端发送主密钥。
当服务端发送的ServerKeyExchang报文验证无误时,客户端向服务端发送CertificateVerify报文响应。
客户端向服务端发送ChangeCipherSpec报文,表明后续将要使用当前加密参数。
客户端向服务端发送加密的Finished报文,用于验证双方协商的对称加密算法、客户端密钥。
服务端向客户端发送ChangeCipherSpec报文,表明将要使用当前加密参数。
服务端向客户端发送加密的Finished报文,用于验证双方协商的对称加密算法、客户端密钥,至此握手完成。
以上便是DTLS协议及主要流程介绍,其中握手流程中同一方向的数据可以放在一起发送,如步骤4~8中的握手数据可以一起发送给客户端,握手完成之后就进入应用数据传输阶段,在客户端和服务器之间进行数据传输时,DTLS协议一致维护链接并会对数据进行加密和认证,直至会话结束再断开链接。
想第一时间收到我们的更新吗?
只需两步,为文档君加上“爱你一万年”星标⭐!
没有星标,你爱的文档君就要跟你失联啦~
我们是一群平均从业年限5+的通信专业工程师。 关注我们,带你了解通信世界的精彩!