版权声明:本文为博主[email protected](阿King)原创文章,不得以任何理由任何形式进行转载 https://blog.csdn.net/lj501886285/article/details/85112655
视频加密
IPM(intra prediction modes)加密
观察到I slice的编码表,
MVD加密
在H264的baseLine profile中,运动向量差值MVD使用的是哥伦布指数编码( Exp-Golomb entropy coding),编码出来的codeWord格式为[Mzeros][1][INFO],其中[Mzero]为M个0,[INFO]含有M个bit位来携带信息。故整个codeWord的长度为
。其中M和INFO的计算方式为:
那么得到的编码为:
为了避免比特的开销并兼容H264格式,
残差值加密
在H264的baseLine profile中,量化后的残差块使用的是上下文自适应可变长编码(CAVLC)方式。我们使用密钥E_Key3通过标准序列密码来对非零系数的符号(signs)进行加密。值得一提的是,我们只对亮度块加密,而保持色度块不变。
加密视频的数据嵌入
嵌入区域的选取
- 因为DC和低频系数携带的能量(energy)大,高频系数携带的能量小。如果我们将信息嵌入到低频系数中,则大量会影响视频的质量和比特率(因为残差块后面要进行熵编码),所以我们应该将信息嵌入到高频系数中,即残差块靠右下角的位置。
- 假设嵌入的4x4残差块以Zig-Zag序列的位置为
,则有
,经过大量实验,取
,而
根据DC值自适应变化:
作者说: 的选择仍然有待于优化。 - 仅仅在P帧中的4x4残差块中进行数据嵌入,且该残差块必须要DC值或第一个AC值不为0。因为I帧对于视频来说很重要(作为参考帧嘛)。
小编说:那么B帧呢?????
数据嵌入
用
表示第i个残差宏块的第j子块的第k个已经被加密的系数。
我们统计加密系数的直方图
将
数据箱(bin)用作嵌入,
数据箱不动,将其余的数据箱子进行漂移(shift),有如下移动规则:
通俗来讲也就是将腾出一些数据箱来嵌入我们的数据
例如:
数据提取和恢复
- 加密域的数据提取
数据的提取即数据嵌入的逆过程,有
而我们还应对之前直方图漂移(shift)的加密数据进行恢复,此时得到的数据是原始的加密数据
因为所有的操作都是基于加密数据上操作,与原视频数据无关,所以我们避免了原始视频信息的泄露,通过加密密钥用户可以进一步解密视频而得到原始视频内容。 - 解密域的数据提取
一些情况下需要我们先解密视频,然后在进行隐藏的数据提取。
- 使用加密密钥通过异或(XOR)操作对视频进行解密,解密方式是加密的逆过程。
- 我们仍然可以通过
来进行数据提取,因为我们的加密解密过程只是影响了数据的符号(signs),对于嵌入的隐藏数据,无关符号, 都是对应数据0, 都是对应数据1。 - 原始视频数据仍然可以通过
来解除数据漂移,此时得到的就是原始视频数据。
论文来源:《Reversible Data Hiding in Encrypted H.264/AVC Video Streams》