RFC4568规范:SDP协商SRTP密钥

本文详细解析了SDP中crypto字段如何用于SRTP密钥协商,包括tag、crypto-suite、key-params等参数的作用,以及密钥生成规则和SRTP报文格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. SDP协商SRTP密钥

RFC4568中关于媒体流加密说明时,在SDP中新增了"crypto"字段用于描述加密信息,格式如下:     

a=crypto:<tag> <crypto-suite> <key-params> [<session-params>]

其中:

<tag>为十进制数字,用于标记后面所述的加密属性,该数字内容不能为0,在offer/answer的协商模式下,tag用以区分各组备选信息。

<crypto-suite>用于描述加密和认证算法,在offer/answer模式下,本字段参数可协商。

   <key-params>反馈crypto-suite字段对应的密钥信息

举例:

crypto:1 AES_CM_128_HMAC_SHA1_80 inline:NHomSmlnXy4qRCwhVi9ANVcwZ3Q3cXVaLykzJ1Rf|2^31|1:1

这里

tag =1 

  crypto-suite = AES_CM_128_HMAC_SHA1_80 ,支持AES128加密和SHA1_80的Hash

  key-params = inline:NHomSmlnXy4qRCwhVi9ANVcwZ3Q3cXVaLykzJ1Rf|2^31|1:1

 

下面重点介绍下key-params

key-params = <key-method> ":" <key-info>

key-method参数现在只提供一种方式,即“inline”,指示实际密钥信息在key-info字段提供;key-info定义一串字符串,包含Master key、Master salt,可选包含Master key存活时长、Master key索引及长度;在offer/answer协商模式,密钥参数对外公开。

 

密钥生成规则如下图所示:

 

例如:AES_CM_128_HMAC_SHA1_80算法套件

Master key:128位(16字节)随机生成;

Master salt :112位(14字节)随机生成 ;

 

通信双方使用的AES密钥key=base64编码(Master key+ Master salt);

 

Master key存活时长:一般没有意义,因为默认值很长

MKI:形式为mki_length:mki_value,mki_length是指后面mki_value的实际长度,mki_value用于插入srtp报文中,防破解。

如果没有协商出MKI,则SRTP报文格式如下:

加密报文

Hash

如果协商出MKI,则SRTP报文格式如下:

加密报文

MKI_VALUE

Hash

其中MKI_VALUE占的字节数就是MKI_LENGTH

最后加密协商是不对称的,所以本端发出的crypto属性中的加密信息指示的本端发送的码

流的加密信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值