为保证网络信息传输的安全性,提出一种视频图像文件加密方法。该方法引入混沌系统中的Logistic映射和 Baker映射,结合H.264视频压缩编码特点,利用Baker映射对DCT (Discrete Cosine rrransform)变换量化后 的块进行位置置乱,改变空间像素的位置;利用Logistic映射产生的伪随机序列生成密码序列,对块矩阵像素 的数值进行改变;在熵编码完成后,利用Logistic映射产生的伪随机序列,对0,1二进制串进行漂移的流加密。该算法的计算复杂度低,具有良好的安全性和实时性,对编码压缩性能影响较小。

一、混沌学引入加密系统

混沌理论,是系统从有序突然变为无序状态的一种演化理论,是对确定性系统中出现的内在“随机过程”形成的途径、机制的研讨。现代混沌学研究描写随机不规则的运动特征。英国数学家Matthews首先明确地提出了用混沌系统来产生序列密码的思想。他分析了用Logistic混沌映射作为密码序列产生器的实际问题,近年来,随着非线性和混沌理论的成熟,研究工作者们纷纷探索混沌在多媒体数据加密中可应用性。混沌系统具有对初始条件极端敏感的特性,给定一个离散混沌系统两个非常接近的初始值,经过几次迭代后,输出结果可以完全不相关。因此,利用混沌系统对初始条件极其敏感的依赖性,可提供数量众多、非相关、类随机而又确定可再生的混沌序列。

二、 Baker映射

Baker映射是一种典型的混沌映射,一个连续的Baker映射B(x,y)可描述为:

基于Logistic和Baker映射的视频加密方法

它是一个在IxI域上的混沌的双射的自映射系统,其作用效果如图1所示。

基于Logistic和Baker映射的视频加密方法
为适合于图像处理,需要对其进行规范化和离散处理。

1、规范化过程

把单位正方形划分成后个竖直的长方形,边长分别为Fi-Fi-1和1,表示成[Fi-1,Fi]×[0,1],其中,i=1,…,k,Fi =P1+P2+…+pi,Fo =O,由于pi为长方形块的宽,则P 1+p2+…+pk =1。

再把每个长方形的边长水平拉伸到1/pi,垂直缩短Pi倍。同时,把各个长方形从底部向上堆积成一个大小和原始正方形相同的图形。

基于Logistic和Baker映射的视频加密方法

其过程如图2所示。可表示为:

基于Logistic和Baker映射的视频加密方法

2、离散化过程

将上述单位正方形中连续Baker映射扩展到离散域。设正方形为N×N,用BD(n1,n2,…,nk)代表离散化的一般Baker映射。若仍要保持连续域Baker映射的性质,则需要满足下述条件:

基于Logistic和Baker映射的视频加密方法

其中,f为连续的Baker影射,F为离散化的表达式。即离散映射应该在像素个数N——∞时,趋向于连续映射。具体的离散Baker映射步骤如下。

1)把一个N×N的正方形矩阵垂直划分成一个高为N,宽为ni的长方形矩阵,其中,ni为能被N整除的正整数。于是每个矩阵有N×ni个像素。

2)把每个长方形矩阵划分成边长为N/ni和ni的小长方形矩阵。于是得到N/ni×ni个小长方形矩阵,正好有N个像素。其过程如图3所示。

基于Logistic和Baker映射的视频加密方法
3)在每个矩形内,按从下到上,从左到右的顺序重新将像素排列成一行。

4)把所有行堆积起来形成和原矩阵大小相同的矩阵。

三、Logistic映射

Logistic映射定义为:xn+1=λxn(1+xn),其中,O≤λ≤4称为分支参数,x∈(-1,1)。

由初始条件xo在Logistic映射的作用下所产生的序列{Xn,n=0,1,2,3,…},是非周期的、不收敛的,并对初始值非常敏感。这一序列也被称为该离散时间动力系统的一条轨迹。简化形式:

基于Logistic和Baker映射的视频加密方法
其中,λ∈[O,2],Xn∈(-1,1),Xn+1是状态,f是把当前状态戈厅映射到下一个状态xn+1,μ是参数。

由Logistic映射在参数μ=2时产生的混沌序列均值为0。对混沌序列的自相关、互相关性的研究,证明其自相关是δ函数,互相关为0,其概率统计特性与白噪声一致。其依据是混沌系统为确定性系统,呈现出类随机特性。

系统所产生的混沌序列的概率分布密度函数PDF(Probability Density Function)为:

基于Logistic和Baker映射的视频加密方法ρ(x)不依赖于初始值,所以式(4)表达的混沌系统具有普遍性。

通过ρ(x),可计算得到Logistic映射所产生的混沌序列的统计特性。例如,X的时间平均,即混沌序列轨迹点的均值为:

基于Logistic和Baker映射的视频加密方法

四、加密算法设计方案

视频数据不同于二进制数据,因此,视频信息加密有其特殊性。首先,视频数据安全涉及到视觉内容的安全。考虑到视觉数据通常冗余度很大,所以,要以内容相关性较强的敏感信息作为加密的核心;其次,数据格式通常要保持不变,以便支持直接播放、复制和剪切操作;再次,传输错误在视频传输中是难免的,这使加密算法要具有一定的容错性。为此,加密算法设计思想为:视频数据流应该分块加密,每个块分配不同的密钥。当传输错误发生时,只有相应块在解密时会出现错误,而其他的块能正确解密。

在H.264视频编码标准结构基础上,引入混沌加密思想,提出一种新的H.264视频加密方案。该方案使用混沌块密码部分加密视频,加密部分为:帧内预测模式变换、整数变换、量化块中非零系数加密、熵编码后0,1字符串的流加密o H.264编码视频流先分割成图像序列,图像序列再分成帧(Frame),帧再分割成包含一定数量宏块的片。编码后的码流是以宏块、片、帧、图像序列为单元存放,各个单元都有相应的格式头信息用于同步。在实际应用中,传输错误是无法避免的,视频流中的错误通常会破坏流密码的同步。选择宏块作为块加密的基本单位,且自定义一个可变长的块分配密钥,达到根据错误发生大小自动调节块大小的目的。如果一块中发生错误,只有相应的块解密时会发生错误,其他的块仍可以正确解密。

1、加密算法

1)设对原始图像所表示的矩阵量化变换后的矩阵为A1,A2,…,Ai,从左到右,从上到下依次读取出K个矩阵中的非零元素,直到这些元素从左到右,从上到下组成一个新的N×N的矩阵,N为选定的单位块的大小,通常为32,64,…

2)设置密钥K(i,n1,n2,…,ni,m),由式(3)计算出各个元素的新位置,组成一个新的矩阵B'。

3)重复过程2)m次,即迭代次数为m,得到矩阵B"。

4)从左到右从上到下把矩阵B'm中的元素重新填回到原来的K个矩阵中的非零位置。得到的这些矩阵即为置乱加密后的结果,用矩阵B表示。对于解密过程,只需把数据形代人解密公式Bc-1(x,y)=(Pix+Ni,(y -Ni)/Pi),(x,y)∈[0,1]×[Ni-1,Ni],i=1,2,…,k,再迭代m次,即得到原始数据。

5)根据Logistic映射公式Xn+l =f(xn)=1一λX2,其中,λ∈[o,2],xn∈(-1,1)。生成实数值序列,即{xk,k=0,1,2,3,…},是混沌映射的轨迹点所形成的序列。生成位序列,由实数值混沌序列得到。位序列是通过对实数值混沌序列中的Xk改写为r-bit的浮点数形式得到的。t|Xk|=O.bo (Xk)b1(Xk) b2 (Xk)…bi (Xk)…br-1(xc),其中bi(xk)是|Xk|的第i位。所需序列,即位m(X),i=0,1,2,…,r-1;k=0,1,2,3,…},其中,k是迭代次数,r是指对该实数值序列取的小数点后的前r位,一般取宏块大小。 Logistic映射生成的实数值序列是混沌序列,对应生成的位序列也同样具有混沌特性。

定义运算:基于Logistic和Baker映射的视频加密方法如果p=1,则对矩阵M的第f行各元素向右平移r位;如果p= -1,则对矩阵M的第Z行各元素向左平移r位。

定义运算 :

基于Logistic和Baker映射的视频加密方法如果q=1,则对矩阵M的第i列各元素向下平移r位;如果q= -1,则对矩阵M的第f列各元素向上平移r位。

2、视频压缩加密实现

1)把熵编码后的0,1串按顺序取出N×N个,从左到右,从上到下堆积成一个N×N的矩阵(N为宏块大小),于是得到一个只有0,1元素的矩阵C。

2)给出初始条件x[0],t[0],μ[0],α[0],β[o],h[0],h'[0]。利用式(4)迭代t[0]次,计算出x[0t],取此实数的前16位。于是

基于Logistic和Baker映射的视频加密方法
3)对矩阵C的每行i(0≤i≤N-1),进行运算xf’r[C],得到C'o其中p,r取值过程:取实数x[0t]的第(h+i)mod 16位,记为b(h+i)m0d16,1≤h≤15,如果b(h+i)m0d16为偶数或0,p=0;否则p=1;取实数x[0t]的第(h'+i)mod 16位,记为b(h'+i)m0d16,1≤h'≤15,如b(h'+i)m0d16为偶数或0,d=0;否则d=1。于是r=α[0]+β[O]b(其中O<α<N,O≤β<N,0<α+β<N)。

4)对矩阵C'的每列j(0≤j≤N-1),进行运算写yjqs[C]',得到C"o其中g,s取值过程:取实数x[0t]的第(h+j) mod 16位,记为b(h+i)mod 16,1≤h≤15,如果b(h+i)m0d16为偶数或0,p=O;否则p=1;取实数x[0t]的第(h'+j) mod16位,记为b(h'+j)m0d16,1≤h'≤15,如b(h'+i)m0d16为偶数或0,d=0;否则d= 1。于是r=α[0]+β[O]b(其中O<α<N,O≤β<N,0<α+β<N)。

5)把得到的N×N矩阵C"中元素从左到右,从上到下排列成0,1字符串存储起来,用于网络传输。

映射:

映射,或者射影,在数学及相关的领域还用于定义函数。函数是从非空数集到非空数集的映射,而且只能是一对一映射或多对一映射。