1. Introduction (简介)
会话发起协议 (Session Initiation Protocol, SIP) [RFC3261] 与会话描述协议 (Session Description Protocol, SDP) [RFC4566] 用于建立多媒体会话或呼叫. SDP 也用于建立 TCP [RFC4145] 以及媒体会话所用的 TCP/TLS 连接 [RFC4572]. 实时传输协议 (Real-time Transport Protocol, RTP) [RFC3550] 在 UDP 与 TCP [RFC4571] 之上承载实时媒体. 数据报 TLS (Datagram TLS) [RFC4347] 的引入使得可将 TLS 能力应用于 UDP 与 DCCP 等数据报传输协议. 本文档给出如何通过 DTLS 的扩展 (见 [RFC5764]) 在 UDP 上建立 SRTP [RFC3711] 安全保护的指南.
本工作的目标是提供一种密钥协商技术, 使彼此无事先关系的设备仍能进行加密通信. 它也不要求设备信任参与路由或会话建立过程的每一个呼叫信令网元. 该方法不需要终端用户额外操作, 也不要求向所有设备部署由知名证书颁发机构 (CA) 签名的证书.
媒体在双方均持有证书的、经相互认证的 DTLS 会话上传输. 务必注意: 证书仅用作对等方公钥的载体. 这是因为 DTLS 没有携带“裸密钥”的模式, 纯属格式问题. 证书可以是自签名的且完全由本地生成. 主流 TLS 协议栈普遍支持按需生成此类证书. 不过, 若对等方持有第三方证书, 也可以使用 (从而减少必须信任中间环节的需求). 证书指纹 (fingerprint) 作为 offer/answer 交换的一部分, 通过 SIP 在 SDP 中发送.
指纹机制使连接一侧能够验证 DTLS 握手中呈现的证书与信令侧一方所使用的证书一致. 但这要求对信令提供某种完整性保护. RFC 3261 所述的 S/MIME 签名, 或 [RFC4474] 所述的 SIP Identity, 可提供最高安全级别, 因为它们不易被恶意中间人篡改. 然而, 即使是 SIPS 等逐跳安全, 也能为不控制路径上信令网元的攻击者提供一定防篡改能力. 由于 DTLS-SRTP 对信令仅要求消息完整性而非保密性, 需要持有凭据并被信任的网元数量显著减少. 特别地, 若使用 RFC 4474, 则只需认证服务 (Authentication Service) 拥有证书并被信任. 中间网元无法不被察觉地修改消息, 因而无法实施中间人 (man-in-the-middle, MITM) 攻击. 相比之下, 因 SDESCRIPTIONS [RFC4568] 要求信令保密, 所有中间网元都必须被信任.
本方法与先前保护媒体流量的做法不同: 后者将认证与密钥交换协议 (例如多媒体互联网密钥管理 MIKEY [RFC3830]) 搭载在信令消息交换中. 采用 DTLS-SRTP 时, 由媒体端点在端点之间建立媒体保护, 仅将媒体密钥与 SIP/SDP 通信进行密码学绑定. 当不存在加密媒体时, 仍可按惯常方式使用 RTP 与 SIP.
在 SIP 中, 通常主叫发送 offer, 被叫可能在主叫收到 SIP answer 之前就开始向主叫发送单向媒体. 本规范将媒体密钥协商与 SIP 信令解耦, 使得可在收到 SIP answer 之前建立早期媒体 (early media), 同时仍保留重要安全属性: 允许媒体发送方为媒体选择部分密钥材料. 这也允许在初始 SIP 信令之后更改媒体会话, 重新密钥等, 而无需额外 SIP 信令.
影响本规范适用性的设计决策在第 3 节讨论.