◆唐金艺 蒲 江
针对H.264/AVC视频流的加密研究
◆唐金艺 蒲 江
(91977部队 北京 100084)
H.264/AVC视频压缩编码标准已成为当前的主流标准,随着人们对视频清晰度要求的不断提高,视频流的数据量也在不停增大。利用H.264/AVC压缩编码标准中帧分类的特性,针对不同等级的用户应用数据分级保护传输的方法,进行差异化数据加密。结合序列密码ZUC算法,给出密钥同步设计方法进行实时乱数流和视频帧流同步的加密,有效的降低了视频加密的开销,并解决了视频流和密码流的加密同步问题。
视频加密;H.264/AVC;ZUC
随着互联网消费模式日新月异的变化,传统的影视消费越来越趋于家庭化个人化,人们无需再像传统的方式那样走入影院进行消费。坐在家中通过网络进行在线视频的需求也日益增多,人们更愿意通过支付一些费用在自己的客厅里享受高清晰度的影视频作品。这样的高视觉感知度的视频数据加密带来的开销是十分巨大的。面对这样的用户需求,如何有效地降低服务端的加密开销变得尤为重要。
本文充分研究分析了当前主流的H.264/AVC视频压缩编码标准,提出了以I帧为加密对象,结合序列密码ZUC算法,给出密钥同步设计方法进行实时乱数流和视频帧流同步的加密,有效的降低了视频加密的开销,并解决了视频流和密码流的加密同步问题。
H.264/AVC是ISO/IEC(国际标准化组织)和ITU-T(国际电信联盟)于2003年共同提出制定的视频压缩编码格式标准[1]。设计和提出的目的是为了解决在互联网环境下提高对误码率的抵抗能力,同时保证较高的Qos。有效的解决好稳定性、可管理性和安全性。新的标准相比较于H.263和MPEG-4拥有了更高的压缩比;同时对各种网络的亲和性大大提升。
传统方式去理解视频,每一帧就是一张画面,很多张画面构成动态的视频。而实际视频H.264/AVC的处理是会通过压缩编码算法来降低数据体量。H.264/AVC压缩编码后的数据就是用I、P、B帧来构成。一组连续的I、P、B帧就可以构成一个GOP(Group of Pictures)画面组,很多个GOP构成一段完整的视频文件。
I帧:称之为关键帧,可以将其理解为一张完整描述画面的数据包,I帧是一个GOP中的第一个帧,通常来说一个GOP中也就只有唯一一个I帧,I帧的压缩只能是适度的,其压缩方法是帧内压缩,I帧是通过DCT(Discrete Cosine Transform)离散余弦转化法来进行压缩的,压缩方法类似于JPG图片压缩。
P帧:用来描述这一帧和之前一个I帧或P帧的差别,P帧的压缩是根据当前帧和之前一个I帧或P帧的运动变化轨迹来进行运算的。解码时需要结合之前画面叠加上本帧的差别后进行呈现。
B帧:是更复杂的双向差别描述,B帧的压缩需要通过相邻的前一帧、后一帧和本帧的运动轨迹来进行运算。其压缩率较高,但CPU编码开销会增大。
I、P、B帧的依赖关系如图1所示。
图1 I、P、B帧关系图
I帧对视频视觉感知度的分析
分析得出H.264/AVC视频压缩编码标准中I帧的数据大小占比在20.06%-32.32%之间。同时,对I帧按照各种比例进行加密处理,得到各种加密比例下量化的PSNR值,通过PSNR值衡量用户视觉感知的差异,三类视频加密前后分别用PSNR进行量化分析,如表1所示。分析发现PSNR随I帧加密比例增加而急速降低,在I帧全加密的情况下会极大的影响视频的视觉感知度,I帧的加密具有非常大的视觉感知安全保证。[2]
表1 I帧加密对PSNR值的影响(q为加密I帧的比例)
密码学是一种研究如何将信息通过隐秘手段进行传输的学科,密码学是信息安全控制的重要支撑技术。当今主流的密码学是基于计算机科学和数学的信息加密技术。其中现代密码学分了三个主要分支:分组密码(块密码)、序列密码(流密码)和公钥密码。
序列密码(流密码)是密码学的主要研究分支。正如命名可以看出该算法具有数据流化的特征。又因其安全强度大被主要用于军事、政府部门和商业安全领域。常见的序列密码算法有:3GPP标准中使用的Snow 3G和ZUC算法、GSM上使用的A5/1算法、WEP上使用的RC4算法和蓝牙标准上使用中的E0算法。
序列密码的加解密过程是将密码算法生成的乱数流与明文数据逐个比特异或处理的,所以其错误的传播性极低,甚至可以说是完全不存在错误传播。又因其算法逻辑对软硬件的开销需求较低所以加密性能较高。
序列密码对数据的处理流程是:
图2 序列密码加解密处理流程
ZUC(祖冲之)序列密码算法[3]
序列密码ZUC算法是中国人自主设计的高性能序列密码,它和其他序列密码一样具有很好的数据流化特征。又由于其错误的传播性极低,甚至可以说是完全不存在错误传播。所以选择ZUC算法来进行加密同样以流形式进行编码的视频数据非常合适。
图3 ZUC算法总体结构
(1)视频组Gop加密与密钥同步设计
图4 密钥同步设计
(2)收发方加密同步设计
无论是视频直播还是视频点播,视频的数据流都是源源不断的传递过来的。如何做好被加密数据与乱数流的同步问题非常重要。无论是网络的不可靠传输还是一些用户的操作行为都会带来数据流的不同步问题,一旦发生了数据不同步,快速的将其同步回来显得尤为重要。
前面提到本方案的加密策略是选择将需要加密的I帧明文和序列密码算法ZUC产生的乱数进行异或操作来获取密文的。同时网络中通过命名规则可以知道当前视频播放的帧组号时多少,序列密码算法ZUC也是通过基础的密钥Key加上组号来决定密钥。所以用户端可以快速通过数据包的名称得到组号,再结合约定的基数的密钥Key计算得到相应密文所需的乱数。这样可以快速实现解密数据的同步,因为每一组帧组所对应的播放时间相当短暂的,用户端是完全可以接受的。
随着视频消费需求的不断增加,数据安全有效控制的需求正逐步凸显。如何将网络下的视频类消费进行有效的安全管理控制需要不断的完善。对视频安全控制的研究正在逐步深入,伴随用户体验的需求提高,视频流体量也日趋增大,授权视频的安全控制开销随之增加,针对主流的H.264/AVC视频压缩编码标准高效的控制视频流安全,将成为未来降低服务端开销的主要突破口。
[1]Wiegand T, Sullivan G J, Bjontegaard G, et al. Overview of the H.264/AVC video coding standard[J]. IEEE Transactions on Circuits & Systems for Video Technology, 2003.
[2]唐金艺.NDN下一种基于I帧加密的在线视频安全访问控制研究[D].清华大学硕士学位论文,2017.
[3]冯秀涛.3GPP LTE国际加密标准ZUC算法[J].信息安全与通信保密,2011.