使用DTLS加密WebRTC流量 - 确定。但是通过TURN服务器转发的流量呢?
我正在寻找一个可靠的资源,它确认流量真正端到端加密(因为“端到端”有时可能意味着几件事)。所以我的意思是
而是,
我未能找到明确答案。
答案 0 :(得分:20)
要看的地方是TURN提议的标准,RFC 5766。该标准提供了一种在客户端和对等端之间中继包含应用程序数据的UDP数据包的方法:
创建分配后,客户端可以将应用程序数据发送到服务器,同时指示数据将发送到哪个对等方,服务器会将此数据中继到适当的对等方。客户端在TURN消息内将应用程序数据发送到服务器;在服务器上,从TURN消息中提取数据并在UDP数据报中发送给对等体。在相反的方向上,对等体可以将UDP数据报中的应用数据发送到中继的传输地址以进行分配;然后,服务器将此数据封装在TURN消息中,并将其发送到客户端,同时指示哪个对等体发送了数据。
TURN解析的最高层是UDP层。它不了解或修改应用程序数据层(在您的情况下,WebRTC协议)。标准说:
希望确保其数据不被更改或伪造的应用程序必须在应用程序级别对其数据进行完整性保护。
这意味着您可以完整性保护您的应用程序数据,而TURN将在不进行修改的情况下对其进行转发。您还可以查看TURN协议的详细信息(我在此不再重复),该协议表明它仅包装和转发应用程序数据。
最后,该标准在窃听中说明了这一点:
TURN转发的应用程序数据的机密性最佳 由应用程序协议本身提供,因为运行TURN over TLS不保护服务器和服务器之间的应用程序数据 同行。如果应用程序数据的机密性很重要,那么 应用程序应加密或以其他方式保护其数据。对于 例如,对于实时媒体,可以提供机密性 使用SRTP。
本摘录中的建议是通过使用WebRTC使用的DTLS-SRTP等协议加密应用程序数据来保护机密性。
由于TURN不会解释或修改应用程序数据,因此它不会向WebRTC应用程序数据流量添加任何安全漏洞,而这些流量在不使用TURN的情况下也不会存在。 WebRTC数据在WebRTC端点之间加密。
现在,没有人可以保证TURN服务器无法访问该秘密。"恶意TURN服务器可能会像拦截您的网络数据包的任何其他人一样轻松地尝试对您的连接进行中间人攻击。使用TURN中继并不会削弱WebRTC的安全性。
只要正确实施和使用DTLS并假设DTLS算法和密码是安全的,WebRTC流量就应该是端到端的。使用任何基于SSL的方案的一部分需要验证另一个端点的证书,就像HTTPS一样。就像HTTPS一样,这需要事先进行带外证书身份交换或使用受信任的第三方。就像HTTPS一样,如果证书没有得到正确验证,那么门将被打开以进行MITM攻击(任何人,而不仅仅是TURN服务器)。