WebRTC是否为报价人加密报价SDP中的数据,并为应答人加密应答SDP



在WebRTC呼叫期间,报价人和应答人共享报价&分别对SDP进行应答
我假设对等方将使用来自其各自SDP的一些信息(如指纹等(来加密数据,以便其他对等方可以解密并使用媒体流。

这就像:报价人在"加密"中有那些加密解密信息吗;提供SDP";以及在";回答SDP";?


这样做的目的是尝试选择性转发单元(SFU(的可能实现,其中用户只上传一次流。现在,他们的报价SDP与几个初始信令字节一起存储在服务器中的某个地方。无论哪一个对等方想要使用该流,都将共享相同的offer,并且它应该可以工作,因为加密-解密密钥将是offer SDP的一部分。

这个问题与寻找可能的解决方案有关:
是否有任何替代方法来实现WebRTC SFU,即只有一个上传流?

WebRTC中的加密是使用DTLS(或DTLS-SRTP(完成的。这意味着加密密钥(用于两个方向(是在具有连接的前几个UDP数据包的对等方之间协商的。

此加密使用自签名证书,您可以在SDP的a=fingerprint:行中找到该证书的指纹,并对此进行验证。

因此,当将媒体分组转发到另一个客户端时,SFU需要解密和重新加密。

所有WebRTC流量(媒体轨道、数据通道(都使用SDP交换期间协商的密钥进行身份验证和加密(要约/应答(。exchagne不受窃听的影响:如果攻击者能够接收到要约/应答交换的副本,他们将无法拦截WebRTC流量。另一方面,交换易受中间人攻击:如果攻击者能够修改要约/应答交换,他们可能能够窃听和欺骗媒体流量。

因此,要约/应答交换不需要加密,但需要进行身份验证。执行交换的最常见方法是使用受TLS保护的通道(例如https或TLS上的WebSocket(,但这并不一定能对客户端进行身份验证。如果需要更多的安全性,其他解决方案也是可能的;例如,使用crypto.subtleAPI使用共享密钥来认证SDP是足够容易的。

最新更新