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