安全与合规
WebRTC 在传输层默认强制 DTLS-SRTP,但安全面远不止链路加密。本目录讨论端到端加密、TURN 安全、隐私、合规。
阅读顺序(计划)
| 顺序 | 文件 | 解决的问题 |
|---|---|---|
| 1 | DTLS-SRTP工作原理.md | 证书指纹、密钥派生、SRTP 套件 |
| 2 | 端到端加密E2EE.md | Insertable Streams、SFrame、密钥分发 |
| 3 | TURN凭据与防滥用.md | 短期凭据、配额、单租户隔离 |
| 4 | 隐私与IP泄露.md | mDNS 候选、设备指纹、最小化暴露 |
| 5 | 合规清单.md | GDPR/PIPL/HIPAA、录音同意、数据驻留 |
| 6 | 内容审核接入.md | 音频转写 + 文本审核、关键帧旁路 |
安全心智图
┌──────────────────────────────────────┐
│ 链路加密 DTLS-SRTP (强制) │ → 通常不用操心
├──────────────────────────────────────┤
│ 端到端加密 Insertable Streams │ → 高敏感场景才做
├──────────────────────────────────────┤
│ 信令安全 wss + JWT │ → 业务必做
├──────────────────────────────────────┤
│ TURN 安全 短期凭据 + 配额 │ → 防滥用
├──────────────────────────────────────┤
│ 隐私 mDNS 候选、最小授权 │ → 默认就好
├──────────────────────────────────────┤
│ 合规 录音同意、数据驻留 │ → 业务/法务联动
└──────────────────────────────────────┘
E2EE 关键点
- 媒体在 SFU 上是明文(SFU 持有 SRTP 密钥),无法穿越 SFU 端到端加密。
- 需要 Insertable Streams API 在编码后、SRTP 前对每个帧二次加密。
- 密钥分发用业务层 KMS / 双棘轮算法(如 MLS)。
- LiveKit、mediasoup、Jitsi 都有 E2EE 示例。
反模式
| 反模式 | 后果 |
|---|---|
| 前端硬编码 TURN 长期凭据 | 被爬虫拿走,TURN 被刷流量 |
信令走 ws:// | SDP 指纹被替换 → MITM |
| 录音未告知用户 | GDPR/PIPL 违规 |
| iframe 不限制 Permissions-Policy | 子域名能调摄像头 |
| 不限制候选 IP 范围 | SFU 端被 SSRF 探内网 |
权威资料
- RFC 8826 WebRTC Security Architecture
- RFC 8827 WebRTC Security Considerations
- W3C Insertable Streams: https://w3c.github.io/webrtc-encoded-transform/
- OWASP Web Security: https://owasp.org/www-project-web-security-testing-guide/
- 核对日期:2026-06-22