一种基于混沌的H.264视频快速零码率膨胀加密方法

文档序号:26917405发布日期:2021-10-09 16:14阅读:88来源:国知局
一种基于混沌的H.264视频快速零码率膨胀加密方法
一种基于混沌的h.264视频快速零码率膨胀加密方法
技术领域
1.本发明是一种基于混沌的h.264视频快速零码率膨胀加密方法,涉及多媒体信息安全领域。
技术背景
2.互联网的迅猛发展和数字多媒体信息的广泛应用推动了传媒产业的快速发展,丰富的多媒体信息被用于政治、经济、军事、教育、医疗和新闻等各行各业。多媒体中的视频信息具有独特的感观特性,是包含内容最为丰富的一种媒体,能提供比文本、声音和图形更为丰富和形象生动的信息。随着数字视频编码技术的成熟,使得以视频编码为基础的视频信息流能够适应多种带宽的实际应用场景,逐渐成为人类获取信息的重要手段,满足了人们社会交往、学习、医疗、购物、娱乐等各种需要。
3.然而,任何事物的发展都具有两面性。由于网络的国际化、社会化、开放化、个性化的特点,使得视频信息在向人们提供信息共享、资源共享和技术共享的同时,也带来了一系列安全隐患。当前,信息安全问题已威胁到了各行各业,其中视频信息安全问题尤为突出。例如,对于敏感的军事航空等视频信息,通常要求进行安全保护处理,防止未授权用户非法访问获取数据内容。对于视频点播或收费电视等应用,非法拷贝传播或者未授权用户通过非法手段获取付费节目,都会造成巨大的商业损失。随着无线及移动通信网络的迅猛发展,个人用户需要保存和交流的视频信息越来越多,使得视频信息的安全问题更加突显。
4.早期的安全方法主要依赖于对访问者的身份认证,而视频信息本身并未经过加密处理,存在传输过程中被窃取后解码并播放的问题。因此,如何从源头保护视频信息的安全是一项十分紧迫的工作,具有十分重要的理论意义与实际应用价值,己成为信息安全领域的研究热点。近年来,研究学者们提出了一系列视频加密算法,力求在视频进行存储或传输前即对其本身进行加密,使得视频加密算法的研究取得了长足的进步。然而,现有的基于h.264视频加密算法中,仍然存在以下不足:
5.(1)对于早期算法由于加密数据选取不当或加密算法过于复杂而造成的实时性不足的问题,现有算法提出以视频的哈希摘要值作为密钥以提升实时性。然而这种做法相当于一次一密,带来了密钥分发的难题;一些算法提出将哈希值作为密钥的一部分,联合驱动混沌系统。然而这种做法通常需要对哈希值进行单独传输,带来了应用的不便。
6.(2)对于早期算法中将视频数据视为普通二进制码流而对其进行完全加密造成的计算复杂度较高的问题,现有算法选取重要语法元素进行选择性加密。然而在进行算法设计时未针对待加密语法元素的编码特征设计相应的加密方法,使得加密后的数据流与原始数据流相比有一定程度的码率膨胀,对于视频信息的传输和存储都带来了额外的困难。


技术实现要素:

7.本发明的目的是提供一种基于混沌的h.264视频快速零码率膨胀加密方法。利用哈希函数增强明文信息和加密密钥流之间的关联,通过使用明文哈希值与用户密钥共同驱
动混沌系统生成密钥流,建立了明文与密钥流的强耦合,实现仅一轮替代即可达到良好扩散效果的加密算法,实现快速加密;对于哈希值的传递,本发明在密文运动矢量差处设计了一种隐写算法。通过将哈希值隐藏于密文视频中,使其不再需要额外的传输机制,实用性更强;在加密算法的设计中,本发明针对待加密语法元素的编码特征设计对应的加密方法,保证了加密过程的零码率膨胀。本发明能够在保证加密算法安全性的前提下,提高视频加密算法的实时性,同时实现加密算法的零膨胀。
8.为实现本发明的目的所采用的技术方案是:
9.一种基于混沌的h.264视频快速零码率膨胀加密方法,包括以下步骤:
10.步骤1:生成加密密钥流:引入哈希函数,将生成的明文摘要与用户密钥结合共同驱动混沌系统生成与明文相关的密钥流;
11.步骤2:帧内预测信息加密:结合h.264编码规则中帧内预测模式的编码方式对其设计特定的加密方法,运用步骤1中生成的密钥流进行加密;
12.步骤3:帧间预测信息加密:对帧间预测编码过程中的运动矢量差设计特定的加密方法,运用步骤1中生成的密钥流进行加密;
13.步骤4:残差系数加密:此步骤在残差系数的熵编码过程中进行,对拖尾系数及非零系数幅值分别运用步骤1中生成的密钥流进行加密;
14.步骤5:将哈希摘要值隐写于密文运动矢量差中以用于视频的正确解密。
15.本发明的有益效果是:
16.1、针对加密算法的实时性问题,本发明引入哈希函数设计了一种加密密钥流与明文相关的算法,建立了明文与密钥流的强耦合。利用哈希函数的“雪崩”特性与混沌系统初始值敏感特性,使用该密钥流进行一轮替代操作即可达到良好的扩散效果,实现快速加密。如图2所示,为使用该密钥流对明文进行一轮替代操作与传统“置乱

扩散”框架进行两轮操作后的加密结果对比图。
17.2、针对哈希值传递问题,本发明对哈希摘要值在密文运动矢量差处设计了一种隐写算法。通过将哈希值隐藏于密文视频中,使其不再需要额外的传输机制,算法的整体实用性更强。
18.3、针对码率膨胀问题,本发明结合各加密点的语法元素编码规则进行加密算法的设计,在保证加密系统有良好的安全性的同时,实现无码率膨胀的加密算法,利于视频数据的存储和传输。
附图说明
19.为了使本发明的技术方案更加清晰,下面结合附图对本发明进行详细描述,其中:
20.图1为视频加密方法流程图。
21.图2a为传统置乱

扩散算法。
22.图2b为本发明提出的一轮替代算法。
23.图3为视频加密算法总体框架。
24.图4为帧内预测块示意图。
25.图5a为测试视频bus第100帧原图像。
26.图5b为测试视频bus第100帧加密效果图。
27.图5c为测试视频bus第100帧解密效果图。
28.图5d为测试视频harbour第100帧原图像。
29.图5e为测试视频harbour第100帧加密效果图。
30.图5f为测试视频harbour第100帧解密效果图。
31.图5g为测试视频ice第100帧原图像。
32.图5h为测试视频ice第100帧加密效果图。
33.图5i为测试视频ice第100帧解密效果图。
具体实施方式
34.为了使本发明的目的、技术方法及优点更加明显,下面结合图1、图2a、图2b、图3、图4、图5a、图5b、图5c、图5d、图5e、图5f、图5g、图5h、图5i及具体实施方式对本发明做进一步的详细说明。此处描述的具体实施方式仅用来解释本发明,并限定于本发明。本发明亦可通过其他具体实施方法进行应用。可根据相似需求背景,在不背离本发明思路下进行修饰或修改。
35.本发明提出一种基于混沌的h.264视频快速零码率膨胀加密方法,其流程图如图1 所示,加密算法总体框架如图3所示。具体包括以下步骤:
36.步骤1:生成加密密钥流,具体包括以下步骤:
37.步骤1.1:初始化用户密钥。假设用户密钥值取为: (userkey_x=9.45478484102548,userkey_y=7.01548752156984,userkey_z=20.125487501450 6,userkey_u=5.69840145987215)。
38.步骤1.2:将完整的待加密视频作为哈希函数sha

224的输入得到224bits的明文摘要值sha0~sha
223
。其中,sha

224是美国国家标准与技术研究院于2004年2月发布的散列函数。
39.步骤1.3:将224bits的哈希摘要值进行分组得到sha
p1
~sha
p4
,分组公式如式(1) 所示:
[0040][0041]
步骤1.4:量化sha
p1
~sha
p4
得到四个实数hx,hy,hz,hu,量化公式如式(2)所示:
[0042][0043]
其中<<s代表左移s位。
[0044]
步骤1.5:将用户密钥(userkey_x,userkey_y,userkey_z,userkey_u)与(hx,hy,hz, hu)结合,公式如式(3)所示,得到混沌初值x0,y0,z0,u0。
[0045][0046]
步骤1.6:以混沌初值x0,y0,z0,u0作为超混沌系统的状态变量初始值,采用四阶龙格

库塔法(runge

kutta)对超混沌系统进行n0次预迭代。超混沌系统的公式如式(4)所示:
[0047][0048]
其中,(x,y,z,u)为混沌系统的状态变量,分别为状态变量x,y,z,u对时间的导数,a,b,c为常量,本文中,a=36,b=3,c=20,d为控制参数,当

0.35<d≤1.30 时,系统处于超混沌状态。
[0049]
n0为常量,一般取n0≥200,本文中,n0=200。
[0050]
采用四阶龙格

库塔法对系统进行n0次迭代的公式如式(5)所示:
[0051][0052]
其中,
[0053][0054][0055]
其中(x
n
,y
n
,z
n
,u
n
)为超混沌系统的n次迭代后的状态变量,(x
n+1
,y
n+1
,z
n+1
,u
n+1
)
为超混沌系统的n+1次迭代后的状态变量,h为步长,此处取0.005。
[0056]
步骤1.7:继续迭代一次混沌系统,将当前的状态变量值(x
n+1
,y
n+1
,z
n+1
,u
n+1
)依次存储到数组ds
k
={ds0,ds1,ds2,ds3}。
[0057]
步骤1.8:将ds
k
量化为key_ele
m
(m=0,1,2,3)。量化公式如式(6)所示。
[0058]
key_ele
m
=mod(sig(abs(ds
k
),α),q
l
),
ꢀꢀꢀ
(6)
[0059]
其中,abs(ds
k
)代表ds
k
的绝对值,sig(abs(ds
k
),α)代表取abs(ds
k
)的前α位有效数字, q
l
代表不同加密点的量化长度,mod(sig(abs(ds
k
),α),q
l
)代表sig(abs(ds
k
),α)除以 q
l
的余数。
[0060]
步骤1.9:每加密四个语法元素后,回到步骤1.7继续迭代,直到所有待加密元素均加密完成。
[0061]
步骤2:帧内预测信息加密,具体包括以下步骤:
[0062]
步骤2.1:判断每个4
×
4帧内预测块标志位pred_intra4
×
4_pred_mode_flag的值,出于无码率膨胀的设计要求,对标志位为1的帧内预测块的预测模式不进行加密。对标志位为0预测块执行下述步骤。
[0063]
步骤2.2:判断帧内预测块的位置。提取图4中的白色区域部分,即除上边缘块及左边缘块以外的帧内预测块的3bits预测码字作为待加密数据。
[0064]
步骤2.3:生成加密密钥流。调用步骤1.8中的密钥流生成公式(6)。为保证视频编码的压缩率不变,本步骤中的q
l
取值为8。
[0065]
步骤2.4:对每一个筛选出的帧内预测模式执行具体加密操作。加密公式如式(7) 所示。
[0066][0067]
其中,ipm
curr
为当前待加密的帧内预测模式,en_ipm
curr
为当前帧内预测模式加密后的密文值,key_ele
curr
为当前密钥流元素值,为异或操作符。
[0068]
步骤2.5:将密文值写入编码码流中,并返回步骤2.1对下一个帧内预测子块进行加密,直至完成所有4
×
4帧内预测块加密。
[0069]
步骤3:帧间预测信息加密,具体包括以下步骤:
[0070]
步骤3.1:确定用于加密的运动矢量差范围。如表1所示为运动矢量差编码规则,为保证加密算法的应用不对视频大小造成影响,对运动矢量差绝对值进行判断,若为0 则不进行操作,直接写入输出码流,否则,执行步骤3.2。
[0071]
表1 0阶指数哥伦布编码对应于运动矢量差的编码应用
[0072][0073]
步骤3.2:设置计数器j,初始值设为1。
[0074]
步骤3.3:若abs(mvd)的值在区间(2
j
,2
j+1

1)上,执行步骤3.4,否则重复步骤3.3,并且j=j+1。
[0075]
步骤3.4:调用步骤1.8中的密钥流生成公式(6),为保证加密算法的无码率膨胀特性,本步骤中的量化级q
l
取值为2
j

[0076]
步骤3.5:对每一个运动矢量差执行具体加密操作。若当前的密钥流元素的值 key_ele
curr
为偶数,由加密公式如式(8)所示对运动矢量差的数值及符号进行加密运算。
[0077][0078]
若当前的密钥流元素的值key_ele
curr
为奇数,由加密公式如式(9)所示对运动矢量差的数值及符号进行加密运算。
[0079][0080]
其中,mvd
curr
为当前待加密的运动矢量差,en_mvd
curr
为当前运动矢量差加密后的密文值。
[0081]
步骤3.6:对加密后的运动矢量差进行0阶指数哥伦布编码后写入编码码流中,并返回步骤3.1对下个运动矢量差数据进行加密。
[0082]
步骤4:对残差系数在熵编码过程语法元素加密,具体操作如下:
[0083]
步骤4.1:在编码的过程中,提取每个宏块的拖尾系数数目,存储在变量num中。
[0084]
步骤4.2:调用步骤1.8中的密钥流生成公式(6),为保证加密后视频的格式兼容性,并且不改变拖尾系数的数目,本步骤中量化级q
l
取值为2
num

[0085]
步骤4.3:对每一个拖尾系数符号进行具体加密操作。加密公式如式(10)所示。
[0086][0087]
其中,t1s
curr
为当前待加密的拖尾系数符号,en_t1s
curr
为当前拖尾系数符号加密后的密文值。
[0088]
步骤4.4:将加密后的拖尾系数符号写入码流后,对非零系数幅值进行编码。为保证加密算法的无码率膨胀特性,本算法对非零系数幅值的符号位进行加密。调用步骤 1.8中的密钥流生成公式(6),本步骤中量化级q
l
取值为2。
[0089]
步骤4.5:对后缀长度值大于等于1时的非零系数幅值的符号位进行随机翻转,翻
转公式如式(11)所示。
[0090][0091]
其中,level
curr
为当前待加密的非零系数幅值的符号位,en_level
curr
为当前非零系数幅值的符号位加密后的密文值。
[0092]
步骤4.6:将加密后的非零系数幅值写入码流,并继续进行熵编码过程。
[0093]
步骤5:将哈希摘要值隐写于密文视频中以用于视频的正确解密。
[0094]
步骤5.1:使用用户密钥(userkey_x,userkey_y,userkey_z,userkey_u)作为l
ü
系统的初值,对系统预迭代n0次。一般取n0≥200,本步骤中,n0=200。
[0095]
步骤5.2:继续迭代系统56次,并将迭代生成的混沌值依次存储于数组 us
p
={us0,us1,

,us
223
}。
[0096]
步骤5.3:将us
p
={us0,us1,

,us
223
}量化为hk
q
={hk0,hk1,...,hk
223
},量化公式如式 (12)所示。
[0097]
hk
q
=mod(sig(abs(us
p
),α),q)
ꢀꢀꢀ
(12)
[0098]
其中,q为量化长度,此处取值为2。
[0099]
步骤5.4:利用hk
q
={hk0,hk1,...,hk
223
}加密哈希值sha
i
={sha0,sha1,

,sha
223
},加密公式如式(13)所示。
[0100][0101]
其中,cs
t
代表当前哈希比特加密后的结果,cs
t
‑1代表上一个哈希比特加密后的结果。
[0102]
步骤5.5:计算加密过的运动矢量差对en_mvd
u
‑1与en_mvd
u
的整数均值l及差值h0,公式如式(14)所示。
[0103][0104]
步骤5.6:判断当前加密过的运动矢量差对是否满足嵌入加密过的哈希比特条件,即判断l,h0与cs
t
是否满足式(15)。若满足则执行步骤5.7将cs
t
隐写入当前加密过的运动矢量差对,否则继续判断下一对运动矢量差是否满足嵌入条件。
[0105]
|2
×
h0+cs
t
|≤min(2
×
(k

l),2
×
l+1)
ꢀꢀꢀ
(15)
[0106]
其中,min(x,y)为返回x与y中较小的值,当yuv视频尺寸为width
×
height时, k=min(width,height)。
[0107]
步骤5.7:根据式(16)计算隐写了哈希比特后的运动矢量差对。
[0108][0109]
其中,h1=2
×
h0+cs
t
,hid_en_mvd
u
‑1与hid_en_mvd
u
为隐写了哈希比特后的运动矢量差对。
[0110]
步骤5.8:反复执行步骤5.5至步骤5.7直至全部的224bits哈希值全部隐写入加密后的运动矢量差对内。
[0111]
加密结果与实验对比结果。
[0112]
一个有效的视频加密系统,其加密后的视频应具备视觉安全性,并有效抵抗常见的密码学攻击。为对本方法的性能做进一步的评判,下面分别从主观感知、客观数据评价、抗穷举攻击几方面对本文提出的视频加密算法的性能进行详尽的分析。
[0113]
(1)主观感知
[0114]
本文对三个视频进行加密的测试实验。测试结果如图5所示。其中(a

c)、(d

f)、(g

i) 分别为qcif(bus)、4cif(harbour)、cif(ice)三种格式视频的第100帧加密前、加密后及解密的效果图。其中,各语法元素正确的用户密钥均为 (userkey_x=9.45478484102548,userkey_y=7.01548752156984,userkey_z=20.125487501450 6,userkey_u=5.69840145987215)。
[0115]
从结果图可以看出,对视频信息进行加密后,观察者已无法清晰的辨认出原始视频信息,视频不再具备商业价值。实验结果表明本算法具备良好的感知安全性。
[0116]
(2)客观评价
[0117]
对于视频的客观评价标准中psnr(峰值信噪比)应用最为广泛,psnr是图像、视频质量的一个量化标准,一般认为psnr<20db时,图像就具有不可辨别性。本文对测试视频进行加密操作,并计算加密后视频的100帧平均psnr,从客观数据上分析视频被破坏的程度,进而说明本文设计的加密算法的有效性,结果如表2所示。
[0118]
表2不同视频序列100帧的平均峰值信噪比值
[0119][0120]
从计算结果中可以看出,加密后的视频的y、u、v三个分量psnr值均小于20db,具备良好的安全性。
[0121]
(3)穷举攻击
[0122]
对于有效的密码系统,其密钥空间应该足够大,以防止攻击者针对密钥进行暴力破解。现代计算机的计算能力有限,通常认为如果密钥长度大于100比特,那么这个密码系统就是安全的,难以通过现代计算机对其进行穷举攻击。
[0123]
本文中使用的混沌系统为l
ü
系统,其具有4个状态变量。对混沌映射采用64位双精
度浮点数进行迭代,其有效精度为53bits,同时各个混沌映射中的各状态变量相互独立,本文中加密算法的密钥实际具有4
×
53=212位,多于现代密码系统需要的密钥长度。因此,本文提出的算法可以有效的抵抗穷举攻击。
[0124]
(4)时间膨胀
[0125]
本文所提出的加密算法的计算开销包括密钥流的生成成本和对帧内预测模式、运动矢量差及残差系数加密的过程。实际上,本算法所选择加密的语法元素,占整个视频数据的比率很低。密钥流采用l
ü
混沌系统生成,并使用本文提出的高效的加密算法对语法元素进行动态加密,使得本加密算法具有较快的计算速度。
[0126]
在实验中我们对测试序列的编码时间及编码并加密的时间进行了记录,并计算出加密操作所产生的时间膨胀,计算公式如式(19)所示。
[0127][0128]
其中,p
time_expansion
表示时间膨胀,t
en
表示原始视频经过编码、加密后的时间,t
coded
表示只对原始视频进行编码后的时间。
[0129]
时间膨胀实验结果如表3所示。
[0130]
表3加密引入的时间膨胀
[0131][0132]
从表3中可以看出该算法的加密时间膨胀率均在0.06%以下,这样的时间开销是十分小的,说明该加密算法具有很高时间效率。
[0133]
(5)码率膨胀
[0134]
对加密系统而言,码率膨胀指视频在编码的过程中进行加密操作后的视频大小减去视频仅进行编码操作生成的视频大小,如式(20)所示为码率膨胀的计算方法,由此计算得到的值越大,说明加密算法对视频编码的压缩效率的影响越大,反之,则说明加密算法对视频编码的压缩效率的影响越小。
[0135][0136]
其中,p
rate_expansion
表示码率膨胀,b
en
表示原始视频经过编码、加密后得到的加密视频的字节数,b
coded
表示只对原始视频进行编码后得到的视频文件的字节数。
[0137]
本文设计的算法通过对各加密元素的编码特性进行分析,实现了零码率膨胀的加密算法,在应用中不占用额外的带宽进行数据传输,具有实际应用价值。
[0138]
本实验用于测试的平台为:intel(r)core(tm)i3

4170 cpu@3.70ghz;内存:4gb 外存:1tb机械硬盘;操作系统:ubuntu 16.04lts 64位;算法实现语言:c语言。
[0139]
通过以上的一系列分析说明本发明提出的视频加密方法在保证了加密后视频的安全性的同时,也保证了视频编码的时间效率和编码压缩效率。实验证明本文加密算法适用于视频的存储或传输等应用场景,有实际应用价值。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1