使用 webrtc 时可以关闭 SRTP

Posted

技术标签:

【中文标题】使用 webrtc 时可以关闭 SRTP【英文标题】:Can I turn off SRTP when use webrtc 【发布时间】:2014-06-30 17:19:16 【问题描述】:

现在我测试 webrtc 与 SIP Client(sx20) 的通信

我使用 webrtc sdp 发送邀请消息。但是 sip 客户端的回答没有指纹,并且

sip 客户端的回答不是 SRTP,只是 RTP。

所以我需要在 WEBRTC 中关闭 SRTP。可以吗?

还有一个问题......我认为,指纹是加密密钥, 那么,发送者和接收者需要每个密钥吗?我们需要两把钥匙?发送者的密钥,接收者的密钥? 或者我们只需要发送者的密钥?

【问题讨论】:

【参考方案1】:

您无法关闭 SRTP。它是标准的一部分,可能永远不会被删除。

密钥在DTLS key exchange 中交换,并且会在一段时间内保持这种状态,因为 Mozilla 和 Chrome 一致认为这是交换媒体的最佳和最安全的方式。

该指纹不是密钥本身,密钥是通过 DTLS 交换的,如果您在其中一台机器上使用 wireshark 监听,您实际上可以看到 DTLS 交换,这样您就可以看到交换发生了什么。

您需要实现一个断路器来与 webrtc 客户端和 SIP 客户端交互。 SIPML5 already has a breaker in play.

【讨论】:

有一些流量,比如游戏位置更新,会受到加密开销的影响。他们不需要加密。每个数据通道都应该能够打开或关闭加密。【参考方案2】:

出于测试目的,Chrome Canary 和 Chrome Developer 都有一个允许您关闭 SRTP 的标志,例如:

cd /Applications/Google\ Chrome\ Canary.app/Contents/MacOS/
./Google\ Chrome\ Canary --disable-webrtc-encryption

那么带有 RTP 设置的 SDP 看起来更像:

m=audio 17032 RTP/AVPF 111 126

代替:

m=audio 17254 UDP/TLS/RTP/SAVPF 111 126

【讨论】:

有什么想法可以在 Firefox 中禁用相同功能吗?

以上是关于使用 webrtc 时可以关闭 SRTP的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC 传输安全机制:深入显出 SRTP 协议

详解 WebRTC 传输安全机制:一文读懂 DTLS 协议

详解 WebRTC 传输安全机制:一文读懂 DTLS 协议

WebRTC 有多少个通道以及使用了哪些传输?

技术分享| Sip与WebRTC互通-SRProxy开源库讲解

上手 WebRTC DTLS 遇到很多 BUG?浅谈 DTLS Fragment