1.1 SRTP
1.1.1 两种Key
SRTP协议中定义了两种类型的key,分别为master key和session key。
Master key为一个随机位串,根据这个随机位串来生成相应的session key。
Session key指在加密传输中使用的key。其中,master key以及加密上下文中的其它参数都由密钥管理机制提供。
1) ROC (Rollover Counter)
记录16位的RTP序列号重置(当序列号超过65535时将进行归零重置)的次数。根据ROC来产生SRTP数据包索引index。
index = 2^16 * ROC + SEQ
其中SEQ为RTP数据包序列号,从数据包中获取。
2) 仅对接收端:序列号s_l(16位)
可以认为是接收端接收到的RTP数据包序列号的最大值。
3) 加密算法标识
包括ciper,操作模式(Counter模式和f8模式)等。
4) 针对消息加密的:加密算法标识
5) 仅接收端:重播列表
当接受端提供认证和重播保护时,接收端会创建重播列表,其中包含最近接收和认证过的SRTP数据包索引。
6) MKI(Master Key Identifier)标识(0/1)
指示SRTP、SRTCP数据包中是否有MKI字段。
7) 当MKI设为1时:MKI字段的长度
8) Master key
必须是随机的,保密的。
9) 使用某个master key处理(发送)过的SRTP数据包的个数
10) 非负整数n_e和n_a
用来决定用于加密的session key的长度。
1.1.3 SRTP流相关参数
针对每个master key,SRTP数据流使用的参数有:
1) master salt
必须是随机的,并且公开的。从master key产生session key的过程中使用。
2) key_derivation_rate
产生session的速率,必须是{1,2,4,……2^24}中的一个,必须为2的幂数。
3) MKI值
4) <From,to>——用来指示master key的生命周期
From,To分别为两个48位的时间值,在From和To之间的时间段内master key有效。
注意:<From, To>参数对于MKI是可选的,在默认情况下,一个master key对应一个SRTP session key,session key必须定义<From, To>参数,master key的默认有效期即为session key的<From, To>。
5)
1.2 SRTCP
SRTCP默认情况下使用与SRTP相同的加密上下文,但是下面几个方面同:
1) SRTCP没有ROC参数和s_l
由于SRTCP索引被直接包含在SRTCP数据包中,因此SRTCP不需要维护ROC和s_l值。
2) SRTCP独立维护一个重播列表。
3) 虽然SRTCP与