【发布时间】:2021-10-11 14:24:44
【问题描述】:
我一直致力于创建一个 RTP/RTCP 客户端和服务器实现作为一个项目。我在解析传入数据包时遇到了障碍,因为我无法理解加密方法。我已经读过RFC 3550 好几遍了。 Section 9 解释机密性和安全性。我读过DES-CBC mode here。
我对加密的观察
- RTP/RTCP 数据包作为一个单元加密,这意味着所有字节都被加密
- 加密的 RTCP 数据包以 32 位随机数为前缀
- 加密的 RTP 数据包按时间戳和序列号随机化
- DES-CBC 是默认模式
- DES-CBC 模式需要 64 位密钥
- DES-CBC 模式需要 64 位初始化向量 (IV)
- DES-CBC 的块大小为 64 位
我的困惑:
DES-CBC 声明它使用“Internet 电子邮件隐私增强”(PEM) 协议,但 RTP RFC 没有提及这一点。此外,加密图不包含任何 PEM 标头或元素。
图表
UDP packet UDP packet
----------------------------- ------------------------------
[random][RR][SDES #CNAME ...] [SR #senderinfo #site1 #site2]
----------------------------- ------------------------------
encrypted not encrypted
所以我的问题是:
- 密钥从何而来或由哪些标题元素组成?
- 什么是 RTP/RTCP 的初始化向量?
- 如何解析加密数据包和未加密数据包?
- RTP/RTCP 是否使用 PEM 协议?如果有,怎么做?
【问题讨论】:
-
您说“DES-CBC 声明它使用“Internet 电子邮件隐私增强 (PEM) 协议”。我认为您已经颠倒了逻辑:PEM 协议使用 DES-CBC,而不是相反。
标签: encryption cryptography rtp rfc rtcp