5月29日 22:54
WebRTC 安全吗?DTLS/SRTP 加密原理和常见风险有哪些?
WebRTC 安全吗?DTLS/SRTP 加密原理和常见风险有哪些?
WebRTC 强制加密:所有媒体流走 SRTP,数据通道走 DTLS,密钥通过 DTLS 握手在 ICE 连接建立后协商,默认端到端加密。
加密链路:
- 信令:HTTPS/WSS 传输 SDP,信令服务器可看明文(所以选可信信令服务)
- 媒体:DTLS 握手协商密钥 → SRTP 加密音视频包 → 中间人无法解密
- 数据通道:DTLS 直接加密,SCTP 传输
潜在安全风险:
- 信令劫持:SDP 明文经信令服务器,恶意服务器可篡改 SDP 注入攻击者 ICE Candidate(MITM)
- IP 泄露:ICE Candidate 包含本地/公网 IP,即使经过 VPN 也会泄露真实 IP
- TURN 中继窃听:TURN 服务器可解密中继流量,需选择可信 TURN 提供商
- 屏幕共享滥用:getDisplayMedia 无限制可能泄露敏感信息,应约束分享区域
- DDoS 利用:WebRTC 可被用来发起 UDP 泛洪攻击
防护措施:验证远端指纹(remoteDescription.fingerprint)、限制 ICE Candidate 类型隐藏 IP、信令用 Token 鉴权。
追问
- DTLS 和 TLS 有什么区别? — DTLS 基于 UDP,增加重传和乱序处理,握手流程类似但容忍丢包
- 如何防止 IP 通过 ICE 泄露? — 设置 iceTransportPolicy 为 relay 仅用 TURN,或 filter 掉 host Candidate
- WebRTC 能做到零信任吗? — 需要 Insertable Streams 在应用层再做一层端到端加密
- TURN 服务器如何选择才安全? — 自建优于第三方,审计日志,限制中继流量配额