3.3.2. Replay Protection (重放保护)
3.3.2. Replay Protection (重放保护)
只有在存在完整性保护 (integrity protection) 时才可能实现安全的重放保护。建议对 RTP 和 RTCP 都使用重放保护, 因为仅完整性保护无法确保抵御重放攻击的安全性。
当数据包被对手存储, 然后重新注入网络时, 该数据包就是"被重放的" (replayed)。当提供消息认证时, SRTP 通过重放列表 (Replay List) 来防护此类攻击。每个 SRTP 接收方维护一个重放列表, 该列表在概念上包含所有已接收和认证的数据包的索引。在实践中, 该列表可以使用"滑动窗口" (sliding window) 方法, 以便固定数量的存储足以用于重放保护。落后于上下文中的数据包索引超过 SRTP-WINDOW-SIZE 的数据包索引可以假定已被接收, 其中 SRTP-WINDOW-SIZE 是接收方的实现相关参数, 必须至少为 64, 但可以设置为更高的值。
接收方根据重放列表和窗口检查传入数据包的索引。只有索引在窗口之前的数据包, 或者在窗口内但尚未接收的数据包, 才应当被接受。
在数据包被认证后 (如有必要先将窗口向前移动), 应当用新索引更新重放列表。
重放列表可以通过使用位图 (bitmap) 来表示哪些数据包已被接收来高效实现, 如 IP 安全架构 (Security Architecture for IP) [RFC2401] 中所述。