WebRTC之传输协议初探:SRTP协议

简述

SRTP协议,全称Secure Real-time Transport Protocol。顾名思义,SRTP就是在RTP协议的基础上提供了安全保障,主要包括数据加密、消息认证和重放保护。

SRTP提供了一套框架用于加密和认证RTP和RTCP数据流,且内置一系列预定义的加密套件。当然也可以使用自定义加密套件。

SRTP协议建立于在RTP协议之上,在RTP/RTCP包的基础上通过增加额外的空间和计算量来实现安全保障。因此SRTP增加的额外开销越小,对RTP传输影响也越小。而SRTP额外开销的大小主要取决于加密套件的选择,SRTP中预定义的加密套件是一个不错的选择,详见 RFC 3711

Read more

WebRTC之传输协议初探:DTLS协议在WebRTC中应用

简述

DTLS在WebRTC中主要提供两个功能:

  1. 协商SRTP加密密钥

    虽然DTLS协议提供了解决丢包和乱序的机制,但是具体实现方案比较简单,对于音视频这类对丢包和乱序更为敏感的数据包有点力不从心。因此WebRTC中RTP(Real-time Transport Protocol)协议作为音视频包的传输协议。而SRTP(Secure Real-time Transport Protocol)在RTP协议之上,为RTP包提供了加密、消息认证和完整性以及重放攻击等保护。

    SRTP作为安全协议,采用的是对称加密算法,而密钥协商则是通过DTLS协议,具体协商过程留待下文。

  2. 为SCTP协议提供加密通道

    SCTP是一种在网络连接两端之间同时传输多个数据流的协议,提供的服务与UDP和TCP类似,同样SCTP本身不提供加密功能。因此在WebRTC中使用DTLS作为SCTP的底层协议,为SCTP中的消息提供加密等一系列安全保护。

Read more

WebRTC之传输协议初探:DTLS协议

简述

由于TLS协议主要是提供加密功能以保障通道数据的安全性,因此要求底层协议提供一个可靠且有序的通信过程,一旦数据包出现丢包或乱序的情况则会断开连接,所以UDP协议是不能和TLS协议组合使用。

现实情况是UDP协议常用于媒体数据传输,因此为了保障媒体传输的安全性,引入了DTLS协议来对UDP通信过程进行加密。DTLS是在TLS的基础为UDP定制和改进的安全传输协议,在设计上尽可能复用TLS现有的结构。

DTLS和TLS在版本上的对应关系:

  • DTLS1.0 → TLS1.1
  • DTLS1.2 → TLS1.2
  • DTLS1.3 → TLS1.3
Read more

WebRTC之传输协议初探:TLS协议

简述

TLS(Transport Layer Security)协议,其前身为SSL(Secure Socket Layer),是1994年由Netscape公司设计的一套协议,并于1995年发布了3.0版本,而TLS是IETF基于SSL3.0设计的协议,相当于SSL的后续版本。

TLS建立在传输层之上,服务于应用层,旨在于为通信双方提供一条安全通道,主要提供一下三重保障:

  • 身份认证:认证通信双方的身份,防止第三方冒充身份参与通信。
  • 数据安全:加密通道数据且只有通信双方可以解密,以防窃听。
  • 数据完整:提供数据签名和校验机制,一旦数据被篡改,通信双方可立刻发现。
Read more