



对H.264/SVC视频流进行认证时,首先通过分析编码格式建立相应的视频逻辑单元图,即寻找相应图像组、时域层、空域层与质量层的数据单元,采用自底向上方式,依次认证对应的视频数据包。图2-8、图2-9所示分别为视频帧认证过程与图像组认证过程。
图2-8展示了视频帧中不同空域层之间的认证过程。对于不同的空域层,按照解码关系图拓扑排序认证算法建立相应顶点的哈希值附着方式;而对于质量层,考虑到视频码率对不同带宽子信道的适应性,采用分组认证方式,即首先分析所有质量层单元在给定带宽分布情况下的最优分组策略,对分组后的MGS数据顶点集合进行认证,而非单独对每个MGS数据顶点进行认证,以提高认证效率,节省相应的认证负载。质量层分组优化策略将在第2.5节进行详细描述。所有子信道都必须传输空域的基础层数据,且该层中包含其他增强层的认证信息,不同子信道提取的视频子流中都将包含这些认证信息。
图2-8 视频帧认证过程
图2-9展示了图像组中视频帧之间的认证过程,首先按照解码关系图拓扑排序认证算法建立帧之间的哈希值附着方法;然后对解码关系图拓扑排序认证算法中依次出栈的顶点序列进行视频单元帧认证,如获得第 n 帧的哈希值 H n 后,将该哈希值附着在第 j 帧质量域的基础层MGS 0 数据之后。按照此方式进行哈希认证,最终将获得该图像组的哈希值(GOP Hash),之后对其进行签名认证。在图2-8和图2-9中,实线箭头表示对视频逻辑单元数据进行哈希值计算以获得相应的哈希值,而虚线箭头则表示哈希值附着。
图2-9 图像组认证过程
图像组的哈希值签名是将多个图像组的哈希值连接起来同时进行签名。签名算法(如RSA Signature方法)较哈希算法(如SHA-1)需要更长的计算时间、更多比特数表示结果,若对每个图像组单独进行签名,则将花费较长的计算时间,造成较大的认证负载,而对多个图像组共同进行签名(见图2-10),可以节省一定的通信带宽和签名算法计算时间,但接收端此时需要同时获得 n 个图像组数据单元才能进行认证,这在一定程度上增加了接收端的延迟时间。实验中可通过仿真选择合适的图像组数据单元数量,用于多个图像组的签名认证。
图像组的签名数据单元采用NAL数据包格式进行封装,以独立于视频编码数据的数据包形式进行单独传输,因此该数据包对于接收端的认证尤为重要,通常情况下发送端将该签名数据包重复发送多次,以抵抗信道中该签名数据包丢失的风险,从而能够让接收端以较高概率获得整个视频流信息认证的起点。
图2-10 对多个图像组共同进行签名
基于解码关系图拓扑排序的视频流认证框架如图2-11~图2-13所示。图2-11所示为AuthenticateStreams认证框架,其对视频流进行认证,参数 k 表示图像组中的时域帧数目, n 表示同时签名的图像组数目,Key表示认证方签名的私钥, c []表示认证方需要额外添加的认证信息,如视频可信内容标引中的高层语义信息。认证时,首先对SVCStreams流进行解析,获得视频帧的起始标识(见AuthenticateStreams认证框架第1行);然后对视频帧进行图像组划分(见AuthenticateStreams认证框架第2~3行),按照给定参数 n 对图像组进行分组,并分别认证签名;最后将签名数据包封装成NAL数据包格式,并且重复 K 次嵌入流当前图像组分组的开始位置(见AuthenticateStreams认证框架第4~11行)。
图2-12所示为AuthenticateGOP认证框架,其对图像组进行认证时,首先通过拓扑排序获得视频帧之间的认证关系(见AuthenticateGOP认证框架第3行);然后循环地从拓扑排序集合中读取认证关系,依次对时域视频帧进行认证(见AuthenticateGOP认证框架第4~10行)。图2-13中也采用类似方法实现视频质量层数据之间的认证。
图2-11 AuthenticateStreams认证框架
图2-12 AuthenticateGOP认证框架
图2-13所示为AuthenticateAU认证框架,其对视频流的时域帧进行认证,第3行代码表示分析当前时域帧不同质量层内的分组认证,以获得对MGS数据的分组信息。该部分的目的在于避免对众多MGS NAL单元进行单独认证,而采用分组认证模式,以降低认证负载。COptimization算法将返回每个空域层中的MGS分组信息,故采用二维数据形式GroupsInfo[][]进行存放,其中GroupsInfo[ i ][ j ]表示第 i 组的第 j 个MGS数据。AuthenticateSL算法的作用是对质量层数据进行认证,将该组内所有质量层的哈希值依次附着,并形成该组的哈希值。
图2-13 AuthenticateAU认证框架
视频流数据包在互联网中传输时可能会遭到攻击者的恶意修改,破坏视频流在接收端恢复后视频帧内容的完整性,如对视频帧进行篡改、内容添加、内容删除、时域重组等。对H.264/SVC视频流进行认证时,需要确保提取的任何子流仍具有内容完整性,即通过子流中的认证信息,能够判断所获得的子流视频信息是可信的。
由于H.264/SVC视频流在时域、空域和质量域具有可伸缩性,因此不同带宽的子信道可接收不同码率的视频流。但在认证方案中,由于采用自底向上方式,因此高层视频流数据的认证信息存放于底层数据包中,而所有子流中都应当包含时域、空域或质量域的基础层数据包,否则接收端将无法实现解码。视频子流逻辑单元包括多个图像组、帧、空域和质量域,对于每个逻辑单元层,都需要能够实现相应的安全性认证。
采用基于解码关系图拓扑排序认证算法进行认证的H.264/SVC视频流能够提供任何子流的安全性认证。从多个图像组的角度看,由于对 n 个图像组的哈希值进行连接,合并进行签名认证,生成签名数据包P sig ,该数据包对于任何子信道来说都是必须传输的。接收端获得签名数据包P sig 后,根据签名算法,采用认证方的公钥对签名数据包进行解码,若解码出来的信息与签名数据包中的哈希值 H 相同,则表明哈希值 H 是安全的,该值可以对后续收到的 n 个图像组进行认证;若某个图像组中的视频数据被篡改或图像组顺序被交换,则该 n 个图像组的哈希值连接将发生改变。因此,正确接收签名数据包是接收端对图像组进行认证的充要条件。在该认证过程中,假设了签名算法本身是安全的,且哈希算法对视频流数据产生的哈希值不会产生碰撞。
图像组的哈希值安全是该图像组中帧内容哈希值安全的充要条件。由图2-9不难看出,该图像组的哈希值是由时域帧在拓扑排序下进行哈希认证而生成的,图像组的哈希值中包含解码依赖于该顶点的哈希值,将其附着在空域基础层数据单元中。而所有子信道必须传输空域基础层数据,空域基础层数据是该帧空域增强层数据解码的依据,若证明图像组的哈希值是安全的,则说明空域基础层中存放的解码依赖于该顶点的哈希值AU Hash也是安全的;反之,若解码依赖于该顶点的帧的内容被修改,则其哈希值也将改变,故与空域基础层中存放的哈希值不相等,无法实现安全认证。
对于空域或质量域,其安全认证过程与图像组中帧的安全认证过程类似。对于质量域,虽然对其采用了分组认证方法,但该分组认证的哈希值将连接起来附着在质量域基础层中,因此所有子信道将获得这些哈希值,即使某些信道由于网络带宽限制丢弃了一些较高层的质量层数据。若某些较高层的空域或质量域数据被恶意修改,则经过重新计算的哈希值将与附着在质量域基础层的哈希值有所不同,故接收端通过认证将发现这些安全问题。
本章提出的哈希值附着方法直接将哈希值附着在拓扑排序得到的相应顶点上,而不是采用数据包多次发送或信道编码方式单独传输这些认证数据包,优点在于能够避免认证数据包丢失导致的认证失败问题,缺点在于认证时虽无须进行较为复杂的信道编码计算,但需要对流的基础层数据单元内容进行哈希值附着计算。