简介
安全实时传输协议 (SRTP) 在 VoIP 电话通话期间加密音频流,以避免拦截和窃听。参与通话的各方必须同时启用 SRTP 功能。当双方话机都启用此功能时,话机会协商会话中使用的加密类型。此协商过程符合 RFC 4568。
当你在启用了 SRTP 的话机上拨打电话时,话机会将 RTP/RTCP 加密算法的 INVITE 消息发送到目标话机。正如 RFC 3711 中所述,RTP/RTCP 流可以使用 AES(高级加密标准)算法进行加密。
以下是 INVITE 消息的 SDP 中携带的 RTP 加密算法示例:
m=audio 11780 RTP/SAVP 0 8 18 9 101
a=crypto:1 AES_CM_128_HMAC_SHA1_80 > inline:NzFlNTUwZDk2OGVlOTc3YzNkYTkwZWVkMTM1YWFj
a=crypto:2 AES_CM_128_HMAC_SHA1_32 > inline:NzkyM2FjNzQ2ZDgxYjg0MzQwMGVmMGUxMzdmNWFm
a=crypto:3 F8_128_HMAC_SHA1_80 inline:NDliMWIzZGE1ZTAwZjA5ZGFhNjQ5YmEANTMzYzA0
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:9 G722/8000
a=fmtp:101 0-15
a=rtpmap:101 telephone-event/8000
a=ptime:20
a=sendrecv
被叫方收到携带 RTP 加密算法的 INVITE 消息,然后通过响应 200 OK 消息并携带协商后的 RTP 加密算法来应答通话。
以下是 200 OK 消息的 SDP 中携带的 RTP 加密算法示例:
m=audio 11780 RTP/SAVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:NGY4OGViMDYzZjQzYTNiOTNkOWRiYzRlMjM0Yzcz
a=sendrecv
a=ptime:20
a=fmtp:101 0-15
当双方话机都启用 SRTP 时,RTP 流将被加密,并且在成功协商后,每部话机的 LCD 屏幕上会出现一个锁定图标。
如果你启用 SRTP,那么你也应该启用 TLS。这确保了 SRTP 加密的安全性。有关 TLS 的更多信息,请参阅 传输层安全 (TLS)。你可以通过“account.X.srtp.unencrypted_rtp.enable”/“account.X.srtp.unencrypted_rtcp.enable”将话机配置为在 SDP offers 中包括未加密的 RTP /RTCP 流。
SRTP 配置
通过网页用户界面设置
在网页用户界面,选择:账号 > 高级设置 > RTP 加密模式。
配置参数
下表列出了你可以用来配置SRTP的参数。
account.X.srtp_encryption
account.X.srtp.cipher_list
account.X.srtp_lifetime
account.X.srtp.unencrypted_rtp.enable
account.X.srtp.unencrypted_rtcp.enable
account.X.tls.srtp_encryption_compulsorily
参数
允许值
默认值
描述
account.X.srtp_encryption[1]
0-禁用1-可选,话机会与另一部话机协商会话中使用的加密类型。2-强制,话机在通话期间必须使用 SRTP。
0
配置是否使用音频加密服务。
account.X.srtp.cipher_list[1]
512个字符
空
用于配置 SRTP 算法列表。如果同时配置多个值,则需要用逗号分隔。
示例
SM4_CM_128_HMAC_SM3_80,SM4_CM_128_HMAC_SM3_32,AES_256_CM_HMAC_SHA1_80,AES_256_CM_HMAC_SHA1_32,AES_CM_128_HMAC_SHA1_80,AES_CM_128_HMAC_SHA1_32
account.X.srtp_lifetime[1]
0-关闭,不带lifetime参数。
11024-最长为1024。
10252^48-配置值。
2^48以上为2^48。
0
配置Master Key的更新周期(多少个SRTP包)。指定的值是SRTP数据包的数量。
如果设置了,则当主密钥使用量超过一半时,通话会发起re-invite,更新key配置为新的参数。
将此参数设置为非零值可能会影响设备的性能。仅当“account.X.srtp_encryption”设置为1(可选的)或2(Compulsory)时有效。
account.X.srtp.unencrypted_rtp.enable[1]
0-不支持
1-支持,话机在SDP offer中同时提供加密的和未加密的RTP流(未加密的RTP流带有UNENCRYPTED_SRTP会话参数)。协商成功后,RTP流是否加密取决于SDP answer。
0
SRTP是否支持不加密RTP。
仅当“account.X.srtp_encryption”设置为1(可选的)或2(Compulsory)时有效。
account.X.srtp.unencrypted_rtcp.enable[1]
0-不支持
1-支持,话机在SDP offer中同时提供加密的和未加密的RTCP流(未加密的RTCP流带有UNENCRYPTED_SRTP会话参数)。协商成功后,RTCP流是否加密取决于SDP answer。
0
SRTP是否支持不加密RTCP。
仅当“account.X.srtp_encryption”设置为1(可选的)或2(Compulsory)时有效。
account.X.tls.srtp_encryption_compulsorily[1]
0-是否开启SRTP由account.X.srtp_encryption控制。
如果是TLS注册,则强制开启SRTP,“account.X.srtp_encryption”配置无效;如果是TCP、UDP注册,则是否开启SRTP由“account.X.srtp_encryption”控制。
2-如果是TLS注册,则强制开启SRTP,且注册时不携带Mediasec相关头部,account.X.srtp_encryption配置无效;如果是TCP、UDP注册,则是否开启SRTP由“account.X.srtp_encryption”控制。
0
控制动态SRTP的模式。
[1]X表⽰账户ID。