WebRTC 信令与传输的安全层解析:WSS、DTLS、SRTP
整体脉络
WSS负责"约定如何通信":传递SDP(Offer/Answer)和ICE候选,建立媒体/数据的连接参数,但不承载媒体或数据本身。DTLS负责"建立安全会话":点对点握手、协商密钥与算法;数据通道直接跑在DTLS之上。SRTP负责"加密媒体":使用由DTLS导出的密钥,对RTP音视频包进行加密与完整性保护。
WSS 信令层
- 用
TLS保护的WebSocket(wss://),提供信令的机密性与完整性,防窃听与篡改。 - 承载
SDP与ICE消息;信令服务器的实现不被WebRTC标准化,可自定义。 - 与媒体/数据传输解耦:即使信令走
WSS,实际媒体走UDP点对点或经TURN。 - 安全意义:只保护信令通道,不参与媒体/数据的加密;但它承载的
DTLS证书指纹等是后续安全的关键。
DTLS 与数据通道
DTLS是"基于UDP的TLS",提供机密性、完整性、重放保护;典型启用DTLS 1.2,使用ECDHE实现前向安全。- 数据通道是
SCTP over DTLS:RTCDataChannel的可靠/部分可靠、按序/乱序属性来自SCTP;加密由下层DTLS提供。 - 握手角色通过
SDP的a=setup确定(active/passive),证书指纹通过a=fingerprint绑定避免中间人攻击。 DTLS完成后导出密钥材料供SRTP使用(DTLS-SRTP),确保媒体与数据共享同一安全会话根。
SRTP 媒体层
- 在
RTP之上加密与鉴别:常见算法AEAD_AES_128_GCM或AES_CM_128_HMAC_SHA1_80,并有SRTCP用于控制。 - 保护负载与部分头扩展;路由必要的
RTP头字段保持可见以便网络设备转发与同步。 - 使用
DTLS-SRTP派生的会话密钥,支持重放窗口与序号校验,抵抗重放与篡改。 - 性能与实时性优先:设计上比纯
TLS流更适合实时媒体(低抖动、包级保护)。
密钥协商与指纹绑定
- 每个端生成自签证书;
SDP里通过a=fingerprint公布哈希,远端在DTLS握手时校验证书与指纹一致。 - 指纹绑定信令与媒体:即使有人控制信令服务器,篡改指纹也会导致
DTLS握手失败,从而阻断中间人。 - 前向安全:
ECDHE临时密钥使得录制的流量在私钥泄露后仍无法解密。
与 ICE/STUN/TURN 的关系
ICE只负责路径选择;STUN提供外网地址探测;TURN在直连失败时中继。- 加密职责不在
ICE/STUN:真正的加密由DTLS/SRTP完成。 - 若经
TURN中继:客户端到TURN常走UDP或TCP,可叠加TLS(TURNS)保护至中继点;端到端媒体仍由SRTP保护。
端到端 vs 端到中端
- 纯点对点:
DTLS与SRTP端到端,除RTP必要头外媒体负载不可见。 - 经
SFU:典型做法是SFU终止每个端的DTLS/SRTP并在转发前重新加密,安全是"端到中端";要实现真正E2EE需使用插入式加密(Insertable Streams)在应用层再次端到端加密负载。
常见问题与排查
- 握手失败:检查
SDP的a=fingerprint是否匹配、a=setup角色是否正确、时钟偏差是否严重。 - 传输受阻:防火墙阻断
UDP导致回退到TCP/TURN,增加时延;确认ICE统计与候选优先级。 - 算法不匹配:老设备仅支持
AES_CM_128_HMAC_SHA1_80;现代偏好AEAD_AES_128_GCM,看webrtc-internals与Stats确认。 - 抓包验证:用
Wireshark观察DTLS握手与SRTP报文;若启用密钥日志,可验证解密过程是否按预期。
快速对比
WSS:保护信令,承载SDP/ICE,与媒体/数据分离。DTLS:握手与密钥协商,直接加密数据通道,向SRTP导出密钥。SRTP:加密音视频流,面向实时、低开销的包级保护。
图示说明
- 图1:安全分层总览(信令/数据/媒体分层关系)
flowchart LR
A[Peer A]:::peer -- WSS/TLS (SDP/ICE) --> S[Signaling Server]:::srv
B[Peer B]:::peer -- WSS/TLS (SDP/ICE) --> S
A ---|SCTP over DTLS (DataChannel)| B
A ---|RTP over SRTP (Media)| B
classDef peer fill:#ffffff,stroke:#333333,stroke-width:1px
classDef srv fill:#eef3ff,stroke:#335599,stroke-width:1px
- 图2:握手与密钥导出(端到端建立过程)
Peer A Signaling Server Peer B WSS: Offer (SDP + ICE) WSS: Offer WSS: Answer (SDP + ICE) WSS: Answer ICE connectivity checks (STUN/TURN) DTLS handshake DTLS handshake Export keys (DTLS-SRTP) SRTP media + SRTCP SCTP over DTLS (DataChannel) Peer A Signaling Server Peer B
- 图3:拓扑---直连、TURN 与 SFU 的安全属性
Through SFU Relay via TURN Direct P2P WSS/TLS WSS/TLS DTLS/SRTP DTLS/SRTP DTLS/SRTP DTLS/SRTP terminated Re-encrypt per subscriber SFU TURN Relay Peer B Peer A Signaling Server