CN101442676B - 基于cavlc编码的h.264视频加密方法 - Google Patents
基于cavlc编码的h.264视频加密方法 Download PDFInfo
- Publication number
- CN101442676B CN101442676B CN 200810240893 CN200810240893A CN101442676B CN 101442676 B CN101442676 B CN 101442676B CN 200810240893 CN200810240893 CN 200810240893 CN 200810240893 A CN200810240893 A CN 200810240893A CN 101442676 B CN101442676 B CN 101442676B
- Authority
- CN
- China
- Prior art keywords
- code
- coding
- code word
- nonzero coefficient
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明一种基于CAVLC编码的H.264视频加密方法,在H.264视频压缩编码的CAVLC编码过程中,采用RC4算法用1-256字节的可变长密钥初始化一个256字节的状态表,用生成的伪随机密钥流与非零系数数目、拖尾系数数目、最后一个非零系数前的零的数目、每个非零系数前零的个数的编码表中待编码码字的索引号相异或得到一个新的索引号,根据新的索引号在原码表中找到其对应的新的码字作为码流输出,实现加密。在加密之后需要对新码字进行判断,对无效码字强制设定码字区域,将无效码字索引号改为有效码字索引号,从而使无效码字回落到有效码字区域;本发明在H.264编码过程同时进行加密,对压缩编码时间的影响小,具有较高的加密速度,在安全性方面具有较好的性能。
Description
技术领域:
本发明涉及保密通信技术领域,针对的是通过对符号进行转换,将所给出的符号序列交换成不可理解的符号序列的方法。
技术背景:
H.264是新一代视频压缩编码标准,其优异的压缩性能和良好的网络亲和性使其在视频实时通信、存储等领域应用广泛。熵编码方法是H.264及其他视频压缩标准中普遍采用的一种无损编码方法。基于熵编码的加密方法已有一定研究。Chunping Wu曾在文献Efficient Multimedia Encryption via Entropy CodecDesign中提出一种MHT方法,通过变异数训练2k个不同的huffman编码表,产生随机变量作为密钥选择不同的码表从而完成对原始数据流的加密。Dahua Xie在MHT的基础上提出一种加强型MHT方案,采用hush函数仿制跳跃密钥来对抗选择明文攻击,提高了安全性。
在熵编码的过程中融入加密过程的构想虽已付诸研究,但是已有的基于熵编码的视频加密方法大多是针对MPEG标准的,而H.264的熵编码与MPEG熵编码原理不同。H.264的熵编码采用基于上下文自适应的可变长编码(CAVLC)方法,利用相邻已编码符号所提供的相关性,为所要编码的符号选择合适的上下文模型进行变长编码,大大降低符号间的冗余度。根据CAVLC编码特点设计一种高效的视频加密方法是本发明要解决的关键问题。
图1为现有的H.264的视频压缩编码流程图;视频经过帧内预测、运动估计和运动补偿、整数离散余弦变换(DCT变换)和熵编码过程实现压缩编码。
附表1为已有的H.264标准CAVLC编码中每个非零系数前零的个数(RunBefore)的编码码表。
附表1
H.264提供了两种熵编码方法:基于上下文的自适应变长编码(CAVLC)和基于上下文的自适应二进制算术编码(CABAC)。其中CAVLC容易实现,计算简单,可通过查询变长码表实现,对于比特误码具有很好的鲁棒性,多应用于可视电话、会议电视、无线通信等实时通信场合及流媒体中。CABAC具有很高的编码效率,但运算复杂度大,主要用于数字广播和数字存储。本发明仅针对广泛应用的CAVLC进行研究,而CABAC由于其编码复杂暂且不作考虑。
H.264视频压缩编码过程中,CAVLC需要编码的参数有非零系数数目(TotalCoeffs)、拖尾系数数目(TrailingOnes)、所有拖尾系数的符号、拖尾系数外全部非零系数的幅值、最后一个非零系数前零的数目(TotalZeros)和每个非零系数前零的个数(Runbefore)。每一个编码参数都有自己相对应的编码码表。H.264熵编码是参照码表输出码字来完成编码。但是将加密过程植入编码过程时,并不适合对每一个参数都进行加密:由于非零系数的幅值编码涉及前缀(level_prefix)和后缀编码(level-suffix),编码过程比较复杂,即使微小的改动都可能导致无效码字的产生,所以不对此部分进行加密。另外,拖尾系数符号(Trailingones)在码流中所占比例相当小,对此部分的加密对于提高算法的安全性无太大意义。本发明将在CAVLC编码过程中对非零系数数目、拖尾系数数目、最后一个非零系数前零的数目以及每个非零系数前零的个数进行加密。
发明内容:
本发明的目的在于对H.264视频压缩编码标准的CAVLC编码技术提供一种高效的视频加密方法。以解决当前大多数视频加密技术主要局限于MPEG标准,而针对H.264标准的熵编码加密技术发展不成熟的问题。
本发明是采用以下技术手段实现的:
一种基于CAVLC编码的H.264视频加密方法,其特征在于:在H.264视频压缩编码的CAVLC编码过程中,采用RC4算法用1-256字节的可变长密钥初始化一个256字节的状态表,用生成的伪随机密钥流与非零系数数目、拖尾系数数目、最后一个非零系数前的零的数目、每个非零系数前零的个数的编码表中待编码码字的索引号相异或得到一个新的索引号,根据新的索引号在原码表中找到其对应的新的码字作为码流输出,实现加密。编码表存在码字为空的无效区域,加密后可能会出现新码字落在码表无效区域的情况,因此在加密之后需要对新码字进行判断,强制设定无效码字的码字区域,将无效码字索引号改为有效码字索引号,从而使无效码字回落到有效码字区域;主要包括以下步骤:
110、利用流密码RC4算法产生密钥并分发;
111、在H.264视频压缩编码的CAVLC编码过程中,选择重要编码参数在其编码过程中进行加密;
112、利用密钥加密待编码参数对应编码表中的索引号;根据新的索引号在原码表中找到相应的新的码字;
113、判断加密后新码字是否落在无效区域内;若新码字落在有效区域则直接传递密文码流;
114、强制转换新码字落在无效区域内的编码参数的索引号;按照转换后的索引号重新查表;传递密文码流;
115、将重要参数加密后的密文码流和其他参数编码后的码流合并、输出。
前述的步骤110中所述的利用流密码RC4密码算法产生密钥并分发;是RC4算法用1-256字节的可变长密钥初始化一个256字节的状态表以生成伪随机密钥流;每加密一个编码参数时状态表均初始化一次。
前述的步骤111中所述的在H.264视频压缩编码的CAVLC编码过程中,选择重要编码参数在其编码过程中进行加密,重要参数包括非零系数数目、拖尾系数数目、最后一个非零系数前零的数目以及每个非零系数前零的个数。
前述的步骤111中所述的在H.264视频压缩编码的CAVLC编码过程中,选择重要编码参数在其编码过程中进行加密,加密是指步骤112-114所述内容。
前述的步骤115中所述的将重要参数加密后的密文码流和其他参数编码后的码流合并、输出,是将非零系数数目、拖尾系数数目、最后一个非零系数前零的数目及每个非零系数前零的个数经编码加密的密文码流与拖尾系数的符号、除拖尾系数外非零系数的幅值经编码的码流合并后输出。
前述的编码包括:
对非零系数的数目以及拖尾系数的数目进行编码;
对每个拖尾系数的符号进行编码;
对除了拖尾系数之外的非零系数的幅值进行编码;
对最后一个非零系数前零的数目进行编码;
对每个非零系数前零的个数进行编码。
本发明与现有技术相比,具有以下明显的优势和有益效果:
安全性方面:本发明加密了非零系数数目、拖尾系数数目、最后一个非零系数前的零的数目、每个非零系数前零的个数。它们在宏块中占据了相当大的比重,且主要集中在低频位置,没有明显的统计特性,不易被破译。RC4算法一次产生的密钥空间大小为2128。本发明用密钥流对码表执行四次加密操作,且每次加密后更新密钥。对于每一个码字索引的密钥空间大小至少为2512,安全性高。
计算复杂度方面:本发明方案的计算复杂度主要由流密码和查表时间所决定。从加密码字索引号到映射码表,加密过程所需时间几乎等同于CAVLC编码查表过程,对整个编码过程耗时量影响甚小。另外,RC4算法简单高效,密钥生成和分发所需时间也很小,而且仅仅是码流的逐位异或操作,总的说来算法的计算复杂度比较低。
本发明在安全性、计算复杂度方面具有较好的性能。另外本发明所提的方法是在H.264编码过程同时进行加密,对压缩编码时间的影响小,具有较高的加密速度。
附图说明:
图1为现有的H.264的视频压缩编码流程图;
图2为本发明加密流程图;
图3为本发明在图2的步骤111中CAVLC编码并加密参数流程图;
图4为本发明在图2的112-114步骤中加密原理图。
具体实施方式:
本发明采取的总体技术方案是:在H.264视频压缩编码的熵编码CAVLC编码过程中,采用的RC4算法用1-256字节的可变长密钥初始化一个256字节的状态表,然后用生成的伪随机密钥流与非零系数数目(TotalCoeffs)、拖尾系数数目(TrailingOnes)、最后一个非零系数前的零的数目(TotalZeros)、每个非零系数前零的个数(Runbefore)的编码表中各码字的索引号相异或,得到一个新的索引号,根据新的索引号在原码表中找到其对应的新的码字作为码流输出。通过这种加密方式扰乱待编码数据所对应码字在原码表中的位置,得到与原码字不同的新码字,实现加密。
在上述参数的编码参考码表中有些区域码字是无效的,但对索引序号加密后可能会出现新码字落在码表无效区域的情况,此时在加密之后需要对码字索引进行判断,并通过强制设定码字区域,将无效码字索引号改为有效码字索引号,从而使无效码字回落到有效码字区域。
H.264视频压缩编码的过程如图1所示,本发明针对其熵编码的基于上下文自适应的可变长编码(CAVLC)过程进行视频加密。
H.264的CAVLC编码过程主要分为以下步骤:
(1)对非零系数的数目(TotalCoeffs)以及拖尾系数的数目(TrailingOnes)进行编码;
(2)对每个拖尾系数的符号进行编码;
(3)对除了拖尾系数之外的非零系数的幅值(Levels)进行编码;
(4)对最后一个非零系数前零的数目(TotalZeros)进行编码;
(5)对每个非零系数前零的个数(RunBefore)进行编码。
本发明对于图1中熵编码过程的具体加密流程如图2所示,将在熵编码的CAVLC的编码过程中,对非零系数数目、拖尾系数数目、最后一个非零系数前零的数目和每个非零系数前零的个数的编码过程进行加密。具体的实施步骤如下:
110、利用流密码RC4算法产生密钥并分发;
111、在H.264视频压缩编码的CAVLC编码过程中,选择重要编码参数在其编码过程中进行加密;
112、利用密钥加密待编码参数对应编码表中的索引号;根据新的索引号在原码表中找到相应的新的码字;
113、判断加密后新码字是否落在无效区域内;若新码字落在有效区域则直接传递密文码流;
114、强制转换新码字落在无效区域内的编码参数的索引号;按照转换后的索引号重新查表;传递密文码流;
115、将重要参数加密后的密文码流和其他参数编码后的码流合并、输出。
在本发明的步骤110中,利用流密码RC4算法实现密钥的产生和分发主要有两个处理过程:一个是利用密钥调度算法(KSA)设置S表的初始排列;一个是利用伪随机生成算法(PRGA)选取随机元素并修改S表的原始排序顺序。
KSA开始初始化S表。在RC4算法中,使用了256字节构成的S表和两个指针i和j,因此只需256字节的存储空间。S表的元素记为S0,S1,……S255,其初始化过程如下:
(1)先对S表中的元素值进行线性填充:S0=0,S1=1,……,S255=255;
(2)用密钥填充另一个大小为256的R表,R0,R1,……,R255,如果密钥的长度小于R表的长度,那么依次重复填充,直到填满为止;
(3)j=0;
(4)对于i从0到255循环执行以下操作:
1)j=(j+Si+Ri)mod 256;
2)交换Si和Sj
KSA完成S表的初始随机化之后,由PRGA接手,为密钥流K选取字节。密钥流K由S表中的256个元素按一定方式选出一个元素生成,每生成一次K值,S表中的元素就重新生成一个新的状态。选取方式取决于索引指针i和j,密钥的选取过程如下:
(1)i=0,j=0;
(2)i=(i+1)mod 256;
(3)j=(j+Si)mod 256;
(4)交换Si和Sj;
(5)输出密钥k=S[(Si+Sj)mod 256]。
由上述产生的密钥k通过基于非线性数据表的交换产生256位的伪随机序列,将生成的伪随机序列流分发入需要加密的熵编码查询过程中。用产生的密钥流与码字索引进行异或操作实现码表的加密。每加密一次码表,更换一次密钥流以保障安全性。
H.264视频压缩编码标准是将需要编码的参数码流按照对应的编码码表,查询相应的码字作为CAVLC编码的输出码流实现压缩编码。本发明在步骤111中所述的重要编码参数包括CAVLC编码参数中的非零系数数目、拖尾系数数目、最后一个非零系数前零的数目、每个非零系数前零的个数在CAVLC编码过程中加密的流程图如图3所示。对各编码参数的加密方法相同,只是编码码表不同。
本发明对于步骤112-114所述的具体参数加密过程如图4所示,具体方法如下:
需要进行编码的参数码流通过查寻相应的码表得到输出码字的索引号,记为P。码字的索引号P与RC4流密码的密钥k进行异或运算生成新的码字索引号C:
根据新的码字索引号C在码表中查找新码字输出。由于各参数码表中存在码字为空的无效区域,因此需判断输出的新码字是否落入了码表中的无效区域。表1给出了H.264标准中每个非零系数前零的个数(RunBefore)的编码码表,其中存在大量码字为空的无效区域。经判断后,若输出新码字为有效码字,则作为加密后的码流密文输出;若输出的新码字为无效码字,则要通过强制设定码字区域,将无效码字索引号C改为有效码字索引号C’,使无效码字回落到有效码字区域。根据转换后的码字索引号C’重新查找编码码表,输出新的有效码字作为加密后的码流密文输出。
步骤114所述的强制设定码字区域需根据不同编码参数所对应的不同码表进行相应操作。以每一个非零系数前零的个数(RunBefore)为例,本发明判断码字是否有效并进行转换的流程如下:
由表1所示的每一个非零系数前零的个数(RunBefore)的编码码表可以看出,只有在第7列以及列数小于7且行数小于15的范围内码字是有效的。假设原码字P在码表中的位置索引为(m,n),加密后的码字C的位置索引为(m’,n’),本发明的处理流程如下:
(1)加密原码字索引P(m,n)得到新的码字索引C(m’,n’):
(2)判断n’是否大于15,
1)若n’>15,则n’=n’%15。输出转换后的码字索引号C(m’,n’);
2)若n’≤15,则判断m’是否小于等于6,
①若m’≤6,则判断n’是否大于m’,
若n’>m’,则n’=n’%(m’+1);
若n’≤m’,则m’=m’%7。输出转换后的码字索引号C(m’,n’);
②若m’>6,则输出转换后的码字索引号C(m’,n’)。
通过以上处理方法,使加密后落在无效码字区域内的码字回落到有效码字区域内,保证了加密后码字与码表的兼容性。
最后应说明的是:以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换;而一切不脱离发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
Claims (4)
1.一种基于CAVLC编码的H.264视频加密方法,其特征在于:包括以下步骤:
利用流密码RC4算法产生密钥并分发,其中,采用RC4密码算法用1-256字节的可变长密钥初始化一个256字节的状态表以生成伪随机密钥流;在H.264视频压缩编码的CAVLC编码过程中,用上述生成的伪随机密钥流与非零系数数目、拖尾系数数目、最后一个非零系数前零的数目、每个非零系数前零的个数这四个编码参数分别对应的编码表中待编码码字的索引号相异或得到新的索引号,根据新的索引号在原码表中找到其对应的新码字;判断上述新码字是否落在编码表中码字为空的无效区域内,若新码字落在有效区域则直接传递密文码流,若新码字落在无效区域内则强制转换其对应的编码参数的索引号,将无效码字索引号转换为有效码字索引号,按照转换后的索引号重新查表,传递密文码流;将上述四个编码参数加密后的密文码流和其他参数编码后的码流合并、输出。
2.根据权利要求1所述的基于CAVLC编码的H.264视频加密方法,其特征在于:每加密一个编码参数时状态表均初始化一次。
3.根据权利要求1所述的基于CAVLC编码的H.264视频加密方法,其特征在于:上述将四个编码参数加密后的密文码流和其他参数编码后的码流合并、输出,是将非零系数数目、拖尾系数数目、最后一个非零系数前零的数目及每个非零系数前零的个数经编码加密的密文码流与拖尾系数的符号、除拖尾系数外非零系数的幅值经编码的码流合并后输出。
4.根据权利要求1-3任一所述的基于CAVLC编码的H.264视频加密方法,其特征在于:所述的CAVLC编码包括:
对非零系数的数目以及拖尾系数的数目进行编码;
对每个拖尾系数的符号进行编码;
对除了拖尾系数之外的非零系数的幅值进行编码;
对最后一个非零系数前零的数目进行编码;
对每个非零系数前零的个数进行编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810240893 CN101442676B (zh) | 2008-12-26 | 2008-12-26 | 基于cavlc编码的h.264视频加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810240893 CN101442676B (zh) | 2008-12-26 | 2008-12-26 | 基于cavlc编码的h.264视频加密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101442676A CN101442676A (zh) | 2009-05-27 |
CN101442676B true CN101442676B (zh) | 2010-06-23 |
Family
ID=40726893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810240893 Expired - Fee Related CN101442676B (zh) | 2008-12-26 | 2008-12-26 | 基于cavlc编码的h.264视频加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101442676B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103313097B (zh) * | 2013-06-28 | 2016-12-07 | 贝壳网际(北京)安全技术有限公司 | 对编码文件进行加密以及解密的方法及系统 |
CN103442253B (zh) * | 2013-07-17 | 2016-08-10 | 宁波工程学院 | 一种加密域h.264/avc视频数据隐藏方法 |
CN104038761B (zh) * | 2014-06-05 | 2017-06-23 | 宁波工程学院 | 一种基于cabac二进制串映射的加密域h.264/avc视频数据隐藏方法 |
CN107911715B (zh) * | 2017-11-22 | 2021-04-16 | 中山大学 | 一种基于cavlc编码的h.264/avc视频格式兼容加密方法 |
CN108174207A (zh) * | 2017-12-29 | 2018-06-15 | 重庆邮电大学 | 基于zuc算法的h.264熵编码视频加密方法 |
CN108900849B (zh) * | 2018-07-26 | 2021-07-27 | 苏州科达科技股份有限公司 | 视频数据加密方法、系统、设备及存储介质 |
CN108900868B (zh) * | 2018-08-14 | 2020-11-13 | 苏州科达科技股份有限公司 | 基于h.264的视频传输方法、装置及存储介质 |
CN109743592B (zh) * | 2019-01-09 | 2021-07-23 | 安徽睿极智能科技有限公司 | 基于二维密码本的实时码流加密方法 |
CN111277678A (zh) * | 2020-01-21 | 2020-06-12 | 中国西安卫星测控中心 | 一种基于arp请求的地址跳变通信方法 |
CN114363658B (zh) * | 2021-12-30 | 2022-09-02 | 慧之安信息技术股份有限公司 | 一种音视频流加密传输的方法和装置 |
CN114666624A (zh) * | 2022-04-07 | 2022-06-24 | 乾三(北京)科技有限公司 | 一种视频文件加密和解密方法 |
-
2008
- 2008-12-26 CN CN 200810240893 patent/CN101442676B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101442676A (zh) | 2009-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101442676B (zh) | 基于cavlc编码的h.264视频加密方法 | |
CN101677399B (zh) | 基于流密码的安全编码方案的多媒体内容编码方法和系统 | |
Wu et al. | Efficient multimedia encryption via entropy codec design | |
CN101465724B (zh) | 一种加密的Huffman编码方法,及其解码方法 | |
WO2013159112A1 (en) | Systems and methods for simultaneous compression and encryption | |
CN103414686A (zh) | 一种支持透明转码的图像数据安全传输系统 | |
CN103856786A (zh) | 一种基于h.264的流媒体视频加密方法及其加密装置 | |
Raju et al. | Fast and secure real-time video encryption | |
CN108174207A (zh) | 基于zuc算法的h.264熵编码视频加密方法 | |
Lian et al. | Perceptual cryptography on JPEG2000 compressed images or videos | |
CN107507254B (zh) | 基于算术编码的图像压缩加密方法 | |
CN111372083B (zh) | 一种基于层间处理的shvc视频加密方法 | |
Li et al. | A secure and efficient entropy coding based on arithmetic coding | |
Lian et al. | A fast video encryption scheme based-on chaos | |
Mukesh et al. | Enhancing AES algorithm with arithmetic coding | |
CN103107859B (zh) | 基于ccsds idc和sms4的联合信源与信息安全编译码方法 | |
CN102547295B (zh) | 一种图像数据无损压缩的编码方法 | |
CN105704499B (zh) | 一种基于ChaCha20和CCSDS的选择性卫星图像压缩加密方法 | |
Jiang et al. | An intra prediction mode-based video encryption algorithm in H. 264 | |
CN103442233B (zh) | 基于排序置换的低码率h.264视频加密压缩传输方法 | |
El-Said et al. | Securing Image Transmission Using In-Compression Encryption Technique | |
CN106131575A (zh) | 基于小波变换与孙子定理相结合的图像压缩方法 | |
Külekci | An ambiguous coding scheme for selective encryption of high entropy volumes | |
Li et al. | A scalable encryption scheme for CCSDS image data compression standard | |
Lei et al. | A new H. 264 video encryption scheme based on chaotic cipher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100623 Termination date: 20101226 |