7. Security Considerations (安全考虑)
SDP会话描述本身不构成传输协议,必须 (MUST) 与传输协议一起使用以传送会话描述给参与者。本节讨论SDP使用中的安全考虑。
机密性 (Confidentiality)
会话描述可能包含敏感信息,包括:
- 参与者身份信息
- 联系信息(电子邮件、电话号码)
- 加密密钥
- 网络拓扑信息(IP地址、端口)
- 会话时间和主题
建议使用适当的加密机制(如TLS、S/MIME)来保护会话描述在传输过程中的机密性。
完整性和真实性 (Integrity and Authenticity)
会话描述必须 (MUST) 受到保护,防止未授权的修改。攻击者可能通过修改会话描述来:
- 重定向媒体流到恶意服务器
- 注入恶意属性
- 修改加密密钥
- 更改会话时间
建议使用数字签名或消息认证码 (MAC) 来验证会话描述的完整性和真实性。
拒绝服务 (Denial of Service)
攻击者可能利用会话描述发起拒绝服务攻击:
- 发送大量伪造的会话通告
- 创建极大的会话描述消耗解析器资源
- 指向不存在的地址以消耗网络资源
实现应该 (SHOULD) 限制会话描述的大小和复杂度,并对解析错误进行适当处理。
加密密钥分发 (Encryption Key Distribution)
虽然SDP提供了传达加密密钥的机制("k=" 字段),但在许多情况下,通过会话描述传递密钥可能不安全。建议使用专用的密钥管理协议(如MIKEY、ZRTP)或带外密钥交换方法。
隐私考虑 (Privacy Considerations)
"o=" 字段包含创建会话的用户名和IP地址,这可能泄露隐私信息。在需要隐私的场景中,可以使用任意用户名和私有地址,前提是不影响字段的全局唯一性。
网络地址转换 (NAT) 和防火墙
SDP中包含的IP地址和端口信息可能在经过NAT或防火墙时变得无效。应用程序应该 (SHOULD) 使用交互式连接建立 (ICE) 等机制来处理这些情况。