跳到主要内容

8. Key Management Considerations (密钥管理注意事项)

8. Key Management Considerations (密钥管理注意事项)

目前正在出现一些密钥管理标准 [MIKEY] [KEYMGT] [SDMS], 用于建立 SRTP 加密上下文 (cryptographic context) (例如, SRTP 主密钥 (master key))。专有和开放标准的密钥管理方法都可能用于电话应用 [MIKEY] [KINK] 和多播应用 [GDOI]。本节为服务于 SRTP 会话的密钥管理系统提供指导。

对于初始化, 一个可互操作的 SRTP 实现应该 (SHOULD) 由密钥管理提供 SSRC, 并且可以 (MAY) 由密钥管理提供 RTP 流的初始 RTP 序列号 (因此, 密钥管理依赖于 RTP 操作参数)。在密钥管理中发送 RTP 序列号可能很有用, 例如, 当初始序列号接近回绕 (wrapping) 时 (以避免同步问题), 以及向加入的端点通信当前序列号 (以正确初始化其重放列表 (replay list))。

如果使用预定义的转换 (transforms), SRTP 允许在属于同一 RTP 会话的 SRTP/SRTCP 流之间共享相同的主密钥。

首先, 如果同步机制的设计 (即 IV) 避免了密钥流重用 (keystream re-use) (两次一密, Section 9.1), 那么属于同一 RTP 会话的 SRTP 流之间的共享是安全的。这是通过 RTP 为属于同一 RTP 会话的流提供唯一的 SSRC 来实现的。有关进一步讨论, 请参见 Section 9.1。

其次, SRTP 和相应的 SRTCP 之间的共享是安全的。由于密钥派生 (key derivation), SRTP 流及其关联的 SRTCP 流都携带相同的 SSRC 这一事实不会对两次一密构成问题。因此, 对应于一个 RTP 会话的 SRTP 和 SRTCP 可以 (MAY) 共享主密钥 (默认情况下就是这样做的)。

请注意, 消息认证 (message authentication) 也依赖于 SSRC 的唯一性, 这与密钥流重用问题无关: 使用相同密钥认证的 SRTP 流必须 (MUST) 具有不同的 SSRC, 以便识别消息的发送者。这个要求是必需的, 因为 SSRC 是用于区分不同 SRTP 流的经过加密认证的字段。如果两个流使用相同的 SSRC 值, 那么攻击者可以在不被检测的情况下将消息从一个流替换到另一个流。

SRTP/SRTCP 绝对不能 (MUST NOT) 在除上述情况之外的任何其他情况下共享主密钥, 即在 SRTP 和其对应的 SRTCP 之间, 以及在属于同一 RTP 会话的流之间。