SRTP是如何工作的

什么是SRTP

SRTP wiki

参考RFC 3711 - The Secure Real-time Transport Protocol
参考RFC 7201 - Options for Securing RTP Sessions

RTP是实时传输协议,用于媒体通信;SRTP就是加密的实时传输协议。

工作原理很简单,即在RTP开始前,双方先协商约定好加密的cipher suite和key,然后把媒体加密后传输。


加密方式

默认的加密方式使用的是AES, 定义了两种mode

  • (1) AES in Counter Mode
  • (2) AES in f8-mode


    RFC 3711

这两种mode是什么区别请参考RFC 3711

支持的Cipher Suite

每一种SRTP设备可能支持的Cipher Suite可能各不相同,需要查看响应的文档。

比如我们常见的Freeswitch支持的SRTP Cipher Suite如下,

AEAD_AES_256_GCM_8
AEAD_AES_128_GCM_8
AES_CM_256_HMAC_SHA1_80
AES_CM_192_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_80
AES_CM_256_HMAC_SHA1_32
AES_CM_192_HMAC_SHA1_32
AES_CM_128_HMAC_SHA1_32
AES_CM_128_NULL_AUTH

具体可以参考这里

KEY的管理

在开始加密传输前,双方应该以什么样的方式来协商加密方式呢?

RFC 7201给了几种可供参考的选择

  1. Session Description Protocol (SDP) security descriptions

Refer RFC 4566 - SDP: Session Description Protocol

  1. Datagram Transport Layer Security Extension for SRTP (DTLS-SRTP)

Refer RFC 5763 - Framework for Establishing a Secure Real-time Transport Protocol (SRTP)
Security Context Using Datagram Transport Layer Security (DTLS)

  1. The Multimedia Internet Keying (MIKEY) protocol

Refer RFC 3830 - MIKEY: Multimedia Internet KEYing

SRTP with SDP

比较常用的方式是SRTP with SDP,

SDP的offer/answer协商模式这里不在讨论,不清楚的可以参考RFC文档。下面举一个最简单的例子

OFFER/ANSWER
  1. client 发起INVITE携带SDP, SDP中包含client支持的cipher suites和对应的key


    offer
  2. server answer的时候带的SDP,这里就是协商过的加密信息
    answer

注意事项

VOIP部署的情况下,一般采用的是SRTP WITH SDP.但是这里的key都是明文传输,所以光有SRTP还是等于裸奔,一般SRTP会配套TLS使用

你可能感兴趣的:(SRTP是如何工作的)