Page 467 - 《软件学报》2025年第7期
P. 467
3388 软件学报 2025 年第 36 卷第 7 期
传输, 但当 HTTP/2 DATA 帧长度较小, 未超过 1 个 TLS 记录的最大负载长度时, 往往只会使用 1 个 TLS 记录传
输. 已知 TLS 的最大负载长度为 16 384 字节, 当 HTTP/2 DATA 帧的长度小于 16 384 字节时, 该帧只会使用 1 个
TLS 记录传输.
TLS _θ len , 可以只选取数据长度小于 16 384 字节的 CDU 进行模型训练. 该 CDU 数据只会使
为了准确地得到
用一个 HTTP/2 DATA 帧, 且该 DATA 帧也只需一个 TLS 记录传输. 此时, 公式 (1) 中的参数 N TLS 和 N H2 均为 1,
公式 (1) 可以简化为:
]
CDU len = TCP_Payload len −TLS _θ len − H2_HEADERS _Frame len − H2_Frame_Headers len (2)
音频片段的数据量较小, 在本文的研究平台中, 一个音频片段的大小为 14 KB 左右, 远小于 HTTP/2 DATA 帧
和 TLS 记录的最大负载长度, 满足上述特殊情况. 此外, 根据第 5.1 节和第 5.2 节的介绍, 公式 (2) 中的 TCP_Payload len 、
H2_HEADERS _Frame len 和 H2_Frame_Headers len 等参数可以直接获得. 因而从本研究采集到的约 10 万组 CDU
中提取出满足上述情况的 CDU 的加密传输数据作为训练集, 对公式 (2) 进行拟合. 使用 Facebook 和 Instagram 样
TLS _θ len = 22, 这表明 Facebook 和 Instagram 在使用 TLS1.3 封装 HTTP 数据后, 每个 TLS 记录会
本数据集得到的
使负载数据长度增加 22 个字节.
当使用不同视频平台的数据对公式 (2) 进行训练时, 有可能得到不同的 TLS _θ len . 本文后续使用 Facebook 和
Instagram 训练得到的结果, 代入公式 (1) 就可以对 TLS 协议带来的长度增加干扰进行修正.
5.4 针对 HTTP/2 协议干扰的修正
公 式 ( 1 ) 中 H T T P / 2 协 议 带 来 的 干 扰 有 两 项 , 包 含 的 参 数 有 3 个 , 分 别 为 H2_HEADERS _Frame len 、
H2_Frame_Headers len 和 N H2 .
H2_HEADERS _Frame len 为承载 HTTP 首部数据的 HEADERS 帧的长度, 其大小一般小于 TLS 记录的最大
报文长度 MSS, 所以该帧会单独被封装在一个 TLS 记录中, 并且在传输音视频数据的 DATA 帧之前传输. 该参数
的大小可以通过第 5.1 节介绍的方法获得.
H2_Frame_Headers len 是每个 HTTP/2 数据帧的首部长度, 在 HTTP/2 的协议标准 RFC 7540 中被指定为 9 B.
N H2 指承载一个 CDU 的 HTTP/2 DATA 帧的个数. 由于 HTTP/2 数据帧被 TLS 协议加密, 无法通过分组数据
获得. 本文利用机器学习模型, 用承载 CDU 数据的 TLS 记录的加密有效负载长度序列作为特征, 所有承载 CDU
数据的 DATA 帧的数量作为标签, 训练机器学习模型. 当需要对一个 CDU 进行修正复原时, 提取承载该 CDU 的
TLS 记录的加密有效负载长度序列, 就可以利用训练出的机器学习模型预测.
上述 N H2 预测模型的训练过程中, 需要提取出每个加密 CDU 对应的 TLS 记录长度序列作为特征. 在第 5.2 节
划分出每个加密 CDU, 并提取出每个加密 CDU 对应的多个 TLS 记录长度序列, 在第 5.3 节利用线性回归模型拟
合出每个 TLS 记录对其所承载的数据的长度干扰量为+22 B, 因此将序列中每个 TLS 记录长度减 22 后就是每个
TLS 记录内数据的原长度, 这些 TLS 记录数据原长度序列就是本文提取的 TLS 记录长度序列特征.
N H2 预测模型的目标是预测出每个 CDU N H2 值作为标签. TLS _Load len 表
的参数 N H2 , 因此训练数据需要有
示 CDU 数据被 HTTP/2 和 TLS 协议封装后的有效载荷长度总和, 有:
(3)
TLS _Load len = TCP_Payload len −TLS _θ len × N TLS
将公式 (3) 代入公式 (1) 可得:
]
CDU len = TCP_Load len − H2_HEADERS _Frame len −9× N H2 (4)
从公式 N H2 的公式:
(4) 可得到计算参数
N H2 = (TLS _Load len − H2_HEADERS _Frame len − ] )/9 (5)
CDU len
利用公式 (5) 和 CDU 对应的明文指纹便可以计算出参数 N H2 的值, 将该值作为上述特征序列的标签.
通过上述提取方法, 从样本 CDU 提取出的 TLS 记录长度序列作为特征, 对应的 N H2 作为标签, 就可以训练出
预测模型.
为了提高模型预测的准确率, 本文对用于预测模型训练的特征向量做了进一步的处理. 在 HTTP/2 协议和

