WebRTC中TURN的意义何在

信息安全 tls 网络RTC
2021-08-29 17:24:54

TURN-Servers如果直接对等连接失败,WebRTC 会使用有两种可用的协议:TURNTURNS(TURN over TLS)。

根据MDN

使用 WebRTC 传输的所有数据都经过加密。

如果通过数据通道发送的所有数据都DTLS默认使用端到端加密,为什么TURNS甚至存在?

TURNS只是加密服务器和客户端之间的连接吗?

那不是不必要的开销吗?

编辑- 为什么不简单地使用TURN没有任何服务器/客户端加密的纯文本?我知道TURN-servers它的用途,但我不明白为什么我们要加密与 的连接TURN-server.由于对等方DTLS之间的加密,TURN-server无法读取任何传输的数据。因此没有其他人可以,那么为什么还要费心添加另一层加密呢?

4个回答

一个原因是为了更好地穿越防火墙。您可以通过端口 443 上的 TURN/TLS 绕过一些更严格的防火墙,以将 WebRTC 流量伪装成 HTTPS 流量。

除了更好的防火墙穿越。如果不将 TURN 有效负载包装在 TLS 中,窃听者将能够看到对等方的 IP 地址(中继流量的目的地)。根据您的威胁模型,这可能重要也可能不重要。

来自 RFC 的节选

消息的主要协议内容是对等方的 IP 地址如果防止 TURN 连接上的窃听者了解这一点很重要,则可以在 TLS 上运行 TURN。

rfc5766#section-17.1.6

根据我的理解,使用围绕 NAT 的中继进行遍历 (TURN) 似乎更旨在更好地遍历 NAT 后的防火墙,RFC5766因此,尽管 TURN 服务器处理加密(就像 Web 服务器处理 HTTPS),但它并不是 TURN 服务器的主要用途。

转服务器

如果允许直接通信,但防火墙阻止了信令,则不会发生初始化:不会建立 P2P 通信。

网络RTC

图片来源,以及进一步的解释

TURN 的防火墙穿越目的同样可以通过使用 SSL VPN 或 OpenVPN 来绕过限制防火墙来实现。

共有三种传输模式 - TURN/UDP、TURN/TCP 和 TURN/TLS。根据 LAN FW 策略,浏览器将选择限制最少的传输模式。