12. 安全考虑 (Security Considerations)
使用本规范所定义载荷格式的 RTP 分组受 RTP [3] 第 9 节讨论的一般安全考虑约束.
在常见流式场景中, 需要消息认证, 数据完整性, 重放保护以及机密性.
缺少认证可能使中间人攻击与重放攻击成为可能, 对 RTP 重传危害很大. 例如: 篡改的 RTCP 分组可能触发不适当的重传, 从而有效降低分配给原始数据流的实际比特率份额; 篡改的 RTP 重传分组可能导致客户端解码器崩溃; 篡改的重传请求可能使本文档第 5 节所述 SSRC 关联机制失效. 另一方面, 重放分组可能导致错误的重排与 RTT 测量 (重传请求策略需要), 并可能导致接收端缓冲区溢出.
此外, 为保证数据机密性, 需要对原始载荷数据加密. 实际上无需加密 2 字节的重传载荷首部, 因为它不提供有关数据内容的线索.
此外, RECOMMENDED 为本载荷格式使用的密码机制提供针对已知明文攻击的保护. RTP 建议初始 RTP 时间戳 SHOULD 为随机, 以保护流免受已知明文攻击. 本载荷格式不遵循该建议, 因为初始时间戳将是首个被重传分组媒体时间戳. 然而, 由于原始流的初始时间戳本身是随机的, 若原始流已加密, 则对攻击者而言首个重传分组时间戳也是随机的. 因此机密性不会受损.
若对原始流使用密码学机制提供安全服务, 则 MUST 对重传流提供具有同等密码强度的相同服务. 对重传流与原始流使用相同密钥可能导致安全问题, 例如两次使用同一密钥垫 (two-time pads). 安全实时传输协议 (SRTP, Secure Real-Time Transport Protocol) [12] 第 9.1 节讨论两次使用同一密钥垫的含义及避免方法.
撰写本文档时, SRTP 尚未提供上述全部安全服务. 原因至少有两条: 1) 两次使用同一密钥垫的发生; 2) 本载荷格式通常在 RTP/AVPF 概要下工作, 而 SRTP 仅支持 RTP/AVP. 未来应有经调整的 SRTP 变体解决这些不足.
与使用重传相关的拥塞控制考虑见本文档第 7 节.