Page 466 - 《软件学报》2025年第7期
P. 466

吴桦 等: 面向  HTTP/2  流量多路复用特征的加密视频识别方法                                             3387


                 用技术, 在一个    CDU  中混杂传输的音视频无法分开, 本文的目标是将               CDU  作为一个整体进行长度修正, 因此, 需
                 要在音视频流中精准划分出可以修正的              CDU.
                    (1) 音视频数据流提取
                    由于标准的     TLS  加密数据使用    TCP  的  443  端口, 所以首先可以从所有数据流中筛选出使用            443  端口的加密
                 TCP  数据流. 其次, 虽然   TLS  协议因其加密性使其负载数据内容无法获知, 但在建立                  TLS  连接时, 其握手信息
                 “Client Hello”中包含了一些未被加密的信息, 如服务器的          SNI (server name indication) 等, 可以利用  SNI 字段来区
                 分音视频流和非音视频流. 需要说明的是, 由于             HTTP/2  有多路复用机制, 多个     HTTP  请求可以通过    1  条  TCP  流传
                 输, 这意味着, 如果音频流和视频流的          SNI 相同, 那么音频数据和视频数据可以通过             1  条  TCP  流传输. 为了方便后
                 续叙述, 本文将音频流、视频流、音频和视频流统称为音视频流. 最后, 可以根据流的数据量大小区分是否为视频
                 的数据流. 经过以上过滤操作, 可以准确地提取出音视频流.
                    (2) TLS  记录序列提取
                    由于提取出的音视频流是位于传输层的 TCP 数据流, 因此还需要去除 TCP                      数据包的头部信息长度, 并组合
                 出  TLS  记录序列, 便于计算后续 TLS     记录在传输数据中产生的干扰量. 为此, 本文实现了一个类似于 TCP 协议栈
                 端系统的缓冲机制, 将 TCP 报文根据其头部信息按序在缓冲区排序, 并基于 TLS 协议规范从 TCP 数据包中组合
                 出 TLS  记录. 根据 TLS  记录头部仅存的明文信息, 可以得到每个 TLS             记录的长度信息, 再根据每个 TCP 载荷的
                 实际长度信息, 将 TCP     数据包合并或者拆分到各 TLS         记录中, 构成 TLS   记录序列用于后续特征提取. 该过程可以
                 有效确保 TLS 序列的完整性和准确性, 从而对抗真实世界中的网络抖动和拥塞现象.
                    (3) 精准划分加密音视频组合数据单元           CDU
                    音视频组合数据单元        CDU  可能包含    1  到多个音视频数据片段组合. 由于         HTTP/2  的多路复用特性, 同一条
                 TCP  连接上会同时存在多条数据流的传输数据              (如图  7  所示), 为方便后续的修正还原工作, 需要精准划分出加密
                 数据流的音视频分组数据         CDU, 使划分出的每一组加密数据都只包含             1  个  CDU.

                                                           CDU

                     音频数据片段      a 1 a 2  a 3     a 4  a 5 a 6  a 7     a 8 a 9  a 10 a 11 a 12

                     视频数据片段         v 1 v 2  v 3 v 4          v 5 v 6 v 7 v 8




                       客户端                                                                    服务端
                                          图 7 加密音视频分组数据单元          CDU  精准划分

                    对  CDU  的划分是通过特定长度的          TLS  记录作为标识. 根据     RFC 7540  标准, WINDOW_UPDATE     帧在
                 HTTP/2  中用于流量控制. 视频服务器响应各组音视频             CDU  数据时, 会先发送若干个      WINDOW_UPDATE    帧来更
                 新每条   HTPP/2  流的数据窗口大小, 且这些       WINDOW_UPDATE    帧被封装在同一个       TLS  记录中传输. 由于每个
                 WINDOW_UPDATE   帧大小固定为      13 B  [35] , 通过观察, WINDOW_UPDATE  帧经  TLS  协议处理封装后, 大小变为
                 35 B, 包含两个  WINDOW_UPDATE   帧的  TLS  记录大小为   48 B, 正好增加一个    WINDOW_UPDATE   帧的长度, 依
                 此类推, 本文将    35 B、48 B、61 B、74 B  和  84 B  等大小的  TLS  记录作为标志  TLS  记录, 标识  CDU  的开始.

                 5.3   针对  TLS  协议干扰的修正
                    公式  (1) 中的参数   TLS _θ len  为单个  TLS  记录在承载传输数据后引入的干扰量的均值, 本节将根据修正还原公
                 式  (1) 构建线性回归修正模型, 利用回归修正模型估算参数              TLS _θ len .
                    在  HTTP/2  协议中, 音视频   CDU  会被分割后封装在       HTTP/2 DATA  帧中, 然后由   TLS  协议进一步封装到
                 TLS  记录中, 如果  HTTP/2 DATA  帧的长度超过了     TLS  记录的最大负载长度, 则会被切分到多个            TLS  记录中进行
   461   462   463   464   465   466   467   468   469   470   471