首页> 中国专利> 一种数字图像压缩加密联合编码方法

一种数字图像压缩加密联合编码方法

摘要

本发明一种数字图像压缩加密联合编码方法,属于图像加密技术领域,本方法基于目前应用最为广泛的JPEG压缩编码标准实现,在编码过程中融入了基于混沌的加密算法;根据JPEG标准对DC系数和AC系数分开进行编码的特点,对图像的DC系数和AC系数分别进行加密;为兼顾安全性与压缩效率,本方法对全部DC及部分AC系数进行加密,将所有DCT块中相同位置的系数组成不同的分组,在组内进行置乱和扩散,以最大可能降低加密过程对差分编码及行程编码的破坏;置乱和扩散分别基于logistic和Chebyshev混沌映射实现;实验证明,该方法在提供有效的图像数据安全保护的同时,具有较好的数据压缩能力。

著录项

  • 公开/公告号CN104144343A

    专利类型发明专利

  • 公开/公告日2014-11-12

    原文格式PDF

  • 申请/专利权人 东北大学;

    申请/专利号CN201410329402.6

  • 发明设计人 王宁宁;付冲;侯淇彬;

    申请日2014-07-11

  • 分类号H04N19/186(20140101);H04N19/132(20140101);H04N19/625(20140101);H04N19/124(20140101);H04N19/48(20140101);H04N19/88(20140101);

  • 代理机构沈阳东大知识产权代理有限公司;

  • 代理人梁焱

  • 地址 110819 辽宁省沈阳市和平区文化路3号巷11号

  • 入库时间 2023-12-17 02:14:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-06-30

    授权

    授权

  • 2014-12-10

    实质审查的生效 IPC(主分类):H04N19/186 申请日:20140711

    实质审查的生效

  • 2014-11-12

    公开

    公开

说明书

技术领域

本发明属于图像加密技术领域,具体涉及一种数字图像压缩加密联合编码方法。 

背景技术

近年来,随着多媒体与计算机网络技术的飞速发展,数字图像作为最直观的信息载体已成为人们进行信息交流的重要手段,越来越多的数字图像在以Internet、无线网络等为代表的开放性网络中传播,极大的方便了信息的访问与共享;与此同时,商业、金融、医疗、科研、军事、政治等诸多敏感领域的图像信息在开放网络环境下的传输存在着巨大的安全隐患,经常会遭到各种人为的攻击,包括信息的非法窃取、篡改与发布等,给信息拥有者造成巨大的损失。 

与普通文字信息相比,数字图像具有容量大、冗余度高、可理解性好等特点。现代密码学中典型的加密算法,如Triple-DES(三重-数据加密标准)、AES(高级加密标准)、IDEA(国际数据加密算法)等,可以应用于图像加密,但其并未考虑到图像信息的固有特点,因此并不适合于图像加密。尤其近年来随着宽带网络应用的普及,传统算法在加密速度上越来越不能满足日益增长的图像实时安全传输的需求。 

基于以上背景,近年来图像加密技术得到了广泛深入的研究,已成为密码学的一个热点研究分支;在国内外学者提出的众多方法中,基于混沌动力学的加密方法,得到了广泛的关注。自上世纪90年代中期以来,很多学者发现混沌学与密码学之间存在着天然的联系;混沌系统具有的初值与系统参数极端敏感性、遍历性、轨道不可预测性以及良好的伪随机性等一系列特性,使其能够很好的满足构建一个安全性能良好的密码系统的需求。基于混沌动力学构造的加密系统,提供了安全性与加密效率的一个良好的平衡,其既具有很高的安全性保证,又具有软、硬件实现简单,速度较快的特点,特别适合于对数据量较大的数字图像进行加密,实现数字图像的实时、安全传输;目前,基于混沌的图像加密方法已成为图像信息安全的主流技术和研究热点。 

然而,绝大多数的现有图像加密算法均未考虑到图像压缩的问题;从密码学的角度来讲,加密后的密文图像像素灰度值应具有良好的随机分布特性,即:密文图像的信息熵应逼近理想随机信源的信息熵;然而,这一密码学的良好特性却违背了数据压缩的基本准则;根据香农(Shannon)信息论的原理,最佳的(无损)数据压缩方法的理论极限是信息熵;有损压缩则是在人的视觉系统容许范围内,通过丢弃一些信息,即突破信息熵的限制,以得到更大的压缩率;由于加密过程改变了源图像的信息熵,使其逼近理论上的最大值,因此加密后的图像从统计分析上看已不具备任何冗余特性,从编码角度来看已几乎不能压缩;这一对矛盾严重制 约了图像信息安全技术的发展与应用。 

发明内容

针对现有技术的缺点,本发明提出一种数字图像压缩加密联合编码方法,以达到解决图像加密后数据无法进行有效压缩的目的。 

一种数字图像压缩加密联合编码方法,包括以下步骤: 

步骤1、将待压缩加密图像进行色彩空间转换,即由RGB色彩空间转换至YCrCb色彩空间,获得由多个最小数据单元构成的图像; 

步骤2、针对于转换后的图像,对其最小数据单元内像素点的亮度和色度进行采样; 

步骤3、采用二维离散余弦变换方法对采样后的图像进行变换,即将图像的像素点由空间域转换至频率域,获得频率域内,图像每个最小数据单元内像素点的亮度和色度; 

步骤4、根据亮度和色度量化表,对频率域内,图像每个最小数据单元内像素点的亮度和色度进行量化; 

即将每个像素点的亮度或色度除以其对应量化步长,并将计算结果进行四舍五入获得量化后的亮度值或色度值; 

步骤5、确定量化后每个最小数据单元的亮度直流分量和色度直流分量,并对其进行加密,具体步骤如下: 

步骤5-1、按照最小数据单元的先后顺序,将每个最小数据单元的亮度直流分量构成一个序列; 

步骤5-2、根据logistic混沌映射对亮度直流分量构成的序列进行置乱,具体如下: 

步骤5-2-1、用户根据实际需求设置logistic混沌映射的置乱密钥和控制参数; 

xn+1=rxn(1-xn)    (1) 

其中,xn+1表示n+1次迭代中的logistic映射状态变量;r表示logistic映射的控制参数,r∈(3.56995,4];xn表示n次迭代中的logistic映射状态变量;xn∈[0,1],xn的初始值x0作为亮度直流分量的系数置乱密钥,由用户根据实际需求设定; 

步骤5-2-2、预迭代logistic映射N0次,N0≥200,使映射充分进入混沌状态; 

步骤5-2-3、在步骤5-2-2的基础上继续迭代logistic映射,获得伪随机位置坐标; 

positionobj=mod[floor(xn×1014),(length×width/N2-positioncurr+1)]+positioncurr (2) 

其中,positioncurr为当前操作的亮度直流分量在序列中的位置;positionobj为交换目标亮度直流分量在序列中的位置,即伪随机位置坐标;floor(xn×1014)函数返回距离xn×1014最近的 整数值;length表示图像的长;width表示图像的宽;xn表示当前状态变量;N表示最小数据单元的长或宽;mod(x,y)函数表示返回x除以y的余数; 

步骤5-2-4、将当前操作的亮度直流分量与目标位置的亮度直流分量进行交换; 

步骤5-2-5、返回步骤5-2-3,直到序列中所有亮度直流分量的位置均交换完成,即完成亮度直流分量的置乱处理; 

步骤5-2-6、返回执行步骤5-2-1至步骤5-2-5,完成色度直流分量的置乱处理; 

步骤5-3、根据Chebyshev映射对置乱后的亮度直流分量构成的序列和置乱后的色度直流分量构成的序列进行扩散,具体如下: 

步骤5-3-1、用户根据实际需求设置Chebyshev映射的扩散密钥和控制参数; 

x′n+1=cos(k·acos(x′n))    (3) 

其中,k表示Chebyshev映射的控制参数,k≥2;acos(.)表示反余弦函数,x′n+1代表第n+1次迭代Chebyshev映射的状态变量值,x′n代表第n次迭代Chebyshev映射的状态变量值,x′n∈[-1,1],x′n的初始值x′0作为亮度直流分量的系数扩散密钥,由用户根据实际需求设定; 

步骤5-3-2、预迭代Chebyshev映射N0次,N0≥200,使映射充分进入混沌状态; 

步骤5-3-3、在步骤5-3-2的基础上继续迭代Chebyshev映射,对当前状态变量x′n进行量化,获得密钥流元素; 

kn=mod[floor(x′n×1014),L]    (4) 

其中,kn表示密钥流元素,L表示图像边长; 

步骤5-3-4、根据密钥流元素对序列中当前亮度直流分量进行加密,即进行异或操作; 

DC′n=kn⊕DCn⊕DC′n-1,    (5) 

其中,DCn表示当前操作的亮度直流分量;DC′n表示加密后的亮度直流分量;DC′n-1为前一次迭代中已加密的亮度直流分量,其初始值DC′0为整型常量,由用户根据实际需求设定,其取值范围为[0,L],⊕表示按位异或操作; 

步骤5-3-5、返回执行步骤5-3-3,直至序列中所有亮度直流分量均完成加密,即完成亮度直流分量的扩散操作; 

步骤5-3-6、返回执行步骤5-3-1至步骤5-3-5完成色度直流分量的扩散操作; 

步骤6、确定量化后每个最小数据单元的亮度交流分量和色度交流分量,并对其进行加密,具体步骤如下: 

步骤6-1、按照Z字排列顺序,将所有最小数据单元中的亮度交流分量提取出,提取的亮度交流分量个数范围为[4,20]; 

步骤6-2、将所有最小数据单元提取出的第一个亮度交流分量,按照最小数据单元的排列顺序,构成一个序列,并按照Z字排列顺序继续构建其他亮度交流分量的序列,直至提取出的最后一个亮度交流分量,按照最小数据单元的排列顺序,完成构成一个序列,即获得所有亮度交流分量所构成的多组序列,序列的组数为提取的亮度交流分量个数; 

步骤6-3、根据步骤5-2,采用logistic混沌映射对第一组亮度交流分量构成的序列进行置乱; 

步骤6-4、根据步骤5-3,采用Chebyshev映射对置乱后的第一组亮度交流分量构成的序列进行扩散; 

步骤6-5、反复执行步骤6-3至步骤6-4,直至完成所有组亮度交流分量构成的序列的置乱和扩散处理,即完成对亮度交流分量的加密; 

步骤6-6、返回执行步骤6-1至步骤6-5,完成对色度交流分量的加密; 

步骤7、对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分量进行压缩处理,具体如下: 

步骤7-1、对加密后的亮度直流分量序列进行差分脉冲编码; 

步骤7-2、对差分脉冲编码后的亮度直流分量序列进行熵编码; 

即根据差分脉冲编码后的亮度直流分量的大小,查询DC系数熵编码表,对应获得该亮度直流分量所属范围,查询其所占的比特位数,并确定该亮度直流分量的二进制码,由获得的比特位数和二进制码构成该亮度直流分量的熵编码;并反复执行上述内容,直至序列中所有亮度直流分量均完成熵编码,获得亮度直流分量的熵编码码流; 

步骤7-3、返回执行步骤7-1至步骤7-2,获得色度直流分量的熵编码码流; 

步骤7-4、对加密后的所有组亮度交流分量序列进行行程长度编码; 

即按照Z字排列顺序,提取出的所有最小数据单元中加密后的亮度交流分量,确定每一个非零亮度交流分量前0的个数,并根据该非零亮度交流分量值的大小,查询行程长度编码表,确定非零亮度交流分量的比特位数及其在所属范围内所处位置;确定非零亮度交流分量前0的个数与其比特位数的数值组合,确定其所处位置的二进制码,并由上述两者构成交流分量的行程长度编码; 

步骤7-5、对获得的所有组行程长度编码进行熵编码; 

即根据非零亮度交流分量前0的个数与其比特位数的数值组合,查询AC系数熵编码表,确定其对应码字,并由该码字和非零交流分量所处位置的二进制码构成熵编码,进而获得每 组亮度交流分量序列的熵编码流; 

步骤7-6、返回执行步骤7-4至步骤7-5,获得每组色度交流分量序列的熵编码流; 

步骤7-7、完成对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分量的压缩处理; 

步骤8、根据获得的直流分量序列熵编码码流和所有组交流分量序列熵编码码流,将压缩加密后的图像保存为JPEG格式,即完成图像的压缩加密处理。 

步骤2所述的采样方式包括:以1∶1∶1采样频率的方式,对图像的每个最小数据单元的亮度和色度进行采样;或以4∶2∶2或4∶1∶1采样频率的方式,对图像的指定最小数据单元的亮度和色度进行采样。 

步骤7-4所述的数值组合为:R/S,其中,R表示非零亮度交流分量前0的个数;S表示非零亮度交流分量的比特位数。 

本发明优点: 

(1)本发明方法将图像的压缩编码与加密有机融合在一起,解决了传统意义上加密后数据无法进行有效压缩的问题;在提供有效的图像数据安全保护的同时,具有较好的数据压缩能力; 

(2)编码后文件仍符合JPEG国际标准,可通过任何常见的图像浏览器进行查看; 

(3)密钥空间大于经典的分组加密算法,包括DES,AES及IDEA。 

附图说明

图1为本发明一种实施例的数字图像压缩加密联合编码架构图; 

图2字本发明一种实施例的数字图像压缩加密联合编码方法流程图; 

图3为本发明一种实施例的24位待压缩加密彩色图像; 

图4为本发明一种实施例的YCrCb4∶2∶2采样示意图; 

图5为本发明一种实施例的最小数据单元的直流分量位置示意图; 

图6为本发明一种实施例的直流分量加密架构示意图; 

图7为本发明一种实施例的参与加密操作的AC系数示意图; 

图8为本发明一种实施例的AC系数加密架构示意图; 

图9为本发明一种实施例的JPEG标准文件格式示意图; 

图10为本发明一种实施例的加密效果测试图,其中,图(a)为图像原图;图(b)为JPEG编码压缩后的效果图;图(c)为压缩加密联合编码效果图。 

具体实施方式

下面结合附图对本发明一种实施例做进一步说明。 

本发明实施例中,数字图像压缩加密联合编码架构如图1所示,本发明基于目前应用最为广泛的JPEG压缩编码标准实现,在编码过程中融入基于混沌的加密算法;由图1可见,源图像经过色彩空间转换与采样后,分成8×8的数据块(最小数据单元);对每个数据块内的数据进行离散余弦变换(DCT)与量化;量化后的数据分为直流(DC)系数和交流(AC)系数;根据两种系数的不同特点,本发明分别对DC(直流分量)和AC(交流分量)系数独立进行加密,以期达到较好加密效果的同时,能够尽量减小对压缩效果的影响;本发明对两类系数的加密均采用混沌密码学中经典的“置乱-扩散”架构进行加密;加密后的DC系数和AC系数分别进行差分脉冲编码和行程长度编码,之后送入熵编码器进行霍夫曼编码,以最大限度的去除数据冗余;最后,按JPEG标准规范,构建文件头并写入量化表、熵编码表、熵编码器输出的数据以及文件中必要的格式控制信息,形成最终的压缩加密联合编码文件。 

一种数字图像压缩加密联合编码方法,方法流程图如图2所示,包括以下步骤: 

步骤1、将待压缩加密图像进行色彩空间转换,即由RGB色彩空间转换至YCrCb色彩空间,获得由多个最小数据单元构成的图像; 

如图3所示,本发明实施例中对一个大小为256×256的24位真彩图像实施压缩加密; 

转换公式为: 

Y=0.299R+0.587G+0.144B-128Cr=0.500-0.4187G-0.0813BCb=-0.1687R-0.3133G+0.500B---(6)

其中,R表示彩色图像的红分量像素值;G表示彩色图像的绿分量像素值;B表示彩色图像的蓝分量像素值,Y表示转换后的亮度值;Cr代表转换后的红色色差信;Cb代表转换后的蓝色色差信号。 

本发明实施例中,以8×8数据块作为最小数据单元,测试图像的左上角第一个8×8块的R、G、B分量分别如表1、表2和表3所示: 

表1 

表2 

表3 

变换后的Y、Cr、Cb分量分别如表4、表5和表6所示: 

表4 

表5 

表6 

步骤2、针对于转换后的图像,对其最小数据单元内像素点的亮度和色度进行采样; 

采样方式包括:(1)以1∶1∶1采样频率的方式,对图像的每个最小数据单元的亮度和色度进行采样;(2)对色差信号使用的采样频率比对亮度信号使用的采样频率低,即对图像进行子采样。该方法利用人的视觉系统对色度信号的敏感程度比对亮度信号低的特点,以有效降低原始图像的数据量。具体来讲,JPEG是以8×8的块为单位来进行处理的,对图像进行子采样,可采用YCrCb4∶2∶2方式或YCrCb4∶1∶1方式。图4为YCrCb4∶2∶2采样示意图。由图可见,4∶2∶2采样模式对源图像16×16的块,Y取4个8×8的块,CrCb各取2个8×8的块,采样后数据量减少1/3。 

本发明实施例中采用1∶1∶1采样频率的方式,以下步骤中均以Y分量的第一个8×8块的数据为例,给出变换后的数据。 

步骤3、采用二维离散余弦变换方法对采样后的图像进行变换,即将图像的像素点由空间域转换至频率域,获得频率域内,图像每个最小数据单元内像素点的亮度和色度; 

本发明实施例中,对采样后的图像实施二维离散余弦变换(DCT,Discrete Cosine Transform),将图像由空间域转换至频率域。 

以Y分量的第一个8×8块的数据为例,设图像信号为二维函数F(x,y),变换公式如下: 

G(u,v)=C(u)C(v)Σy=1NΣx=1N2Ncos[π2N(u-1)(2x-1)]F(x,y)2Ncos[π2N(2y-1)(v-1)]---(7)

其中,(x,y)表示像素点的位置,F(x,y)表示该点的亮度像素值,(u,v)表示频域空间坐标,G(u,v)表示频率域内该像素点的亮度,也即DCT系数,N表示参与变换的正方形图像块的宽度或高度,N=8; 

函数C(u),C(v)定义为: 

C(u)=C(v)=12u,v=01v,v0---(8)

本发明实施例中,应用于8×8数据块,变换公式实际形式为: 

G(u,v)=C(u)C(v)Σy=18Σx=18{12cos[π16(u-1)(2x-1)}F(x,y){12cos[π16(v-1)(2y-1)}---(9)

由式(7)可知,经DCT变换得到的频率系数的个数与图像像素个数相等,即:若图像数据F(x,y)为8×8矩阵,则G(u,v)也是8×8矩阵。 

本发明实施例中,变换后的结果为: 

表7 

经过DCT变换,时域图像中较为平坦的主体部分对应于频域中的低频分量,而人眼并不敏感的细节部分则集中在高频区域;利用这一特性,对低频分量采用较小的量化步长,而对高频分量采用较大的量化步长,可达到较大幅度压缩图像的目的。 

步骤4、根据亮度和色度量化表,对频率域内,图像每个最小数据单元内像素点的亮度和色度进行量化;即将每个像素点的亮度或色度除以其对应量化步长,并将计算结果进行四舍五入获得量化后的亮度值或色度值; 

量化过程就是每个DCT系数除以各自的量化步长并按四舍五入取整,得到量化系数。量化步长由量化表给定,即对DCT系数8×8的块依次以8×8的量化表中相应的元素作为量化步长。 

亮度信息与色度信息的量化表有所不同,本发明实施例中所使用的亮度与色度量化表如表8所示。该表同时利用了人类视觉难以感觉高频分量(位于8×8块的右下区域)失真和对亮度比较敏感的特点。经量化后,DCT系数中的高频分量几乎全部变为0,从而为压缩提供了便利。 

表8 

本发明实施例中,量化后的结果如表9: 

表9 

步骤5、确定量化后每个最小数据单元的亮度直流分量和色度直流分量,并对其进行加密,具体步骤如下: 

本发明实施例中,对于每个8×8的DCT系数块,其第一行第一列元素代表了DC系数,其余63个元素代表AC系数,如图5所示。由于两个相邻的8×8子块的DC系数相差很小,所以对所有块中的DC系数单独进行差分脉冲编码(DPCM),即对相邻的子块DC系数的差值进行编码,以提高压缩比。 

在对DC系数进行差分脉冲编码前,首先对其加密。加密方法采用混沌密码学中经典的“置乱-扩散”架构,如图6所示。其总体思路为:在置乱阶段,不同DCT块中的DC系数以一种伪随机的方式相互交换,以改变其所属的DCT块,但在交换过程中DCT系数的值保持不变。在扩散阶段,每个DCT系数的值按照从左至右的顺序,依次被混沌密钥流所改变。 

步骤5-1、按照最小数据单元的先后顺序,将每个最小数据单元的亮度直流分量构成一个序列; 

本发明实施例中,DCT量化之后的DC系数值组成的序列为: 

{30,27,36,21,-31,-23,-19,-5...} 

步骤5-2、根据logistic混沌映射对亮度直流分量构成的序列进行置乱,具体如下: 

步骤5-2-1、用户根据实际需求设置logistic混沌映射的置乱密钥和控制参数; 

xn+1=rxn(1-xn)    (1) 

其中,xn+1表示n+1次迭代中的logistic映射状态变量;r表示logistic映射的控制参数,r∈(3.56995,4],本发明实施例中,将logistic映射的控制参数r设为4;xn表示n次迭代中的logistic映射状态变量;xn∈[0,1],xn的初始值x0作为亮度直流分量的系数置乱密钥,由用户根据实际需求设定,本发明实施例中,x0=0.3; 

步骤5-2-2、预迭代logistic映射200次,使映射充分进入混沌状态; 

本发明实施例中,对于状态变量x,0.5为“不良点”,会使状态变量在后续迭代中陷入“不动点”0。如果该情况出现,则对x的当前值做一个微小的扰动,例如增加或减小0.001。 

步骤5-2-3、在步骤5-2-2的基础上继续迭代logistic映射,获得伪随机位置坐标; 

positionobj=mod[floor(xn×1014),(length×width/N2-positioncurr+1)]+positioncurr (2) 

其中,positioncurr为当前操作的亮度直流分量在序列中的位置;positionobj为交换目标亮 度直流分量在序列中的位置,即伪随机位置坐标;floor(xn×1014)函数返回距离xn×1014最近的整数值;length表示图像的长;width表示图像的宽;xn表示当前状态向量;N表示最小数据单元的长或宽;mod(x,y)函数表示返回x除以y的余数; 

步骤5-2-4、将当前操作的亮度直流分量与目标位置的亮度直流分量进行交换; 

步骤5-2-5、返回步骤5-2-3,直到序列中所有亮度直流分量的位置均交换完成,即完成亮度直流分量的置乱处理; 

本发明实施例中,由公式(2)产生的伪随机坐标(交换目标)为: 

{792,806,196,160,78,435,967,422...} 

置乱之后DC系数序列变为: 

{-4,-56,-42,-17,0,59,-59,-27...} 

步骤5-2-6、返回执行步骤5-2-1至步骤5-2-5,完成色度直流分量的置乱处理; 

步骤5-3、根据Chebyshev映射对置乱后的亮度直流分量构成的序列和置乱后的色度直流分量构成的序列进行扩散,具体如下: 

步骤5-3-1、用户根据实际需求设置Chebyshev映射的扩散密钥和控制参数; 

x′n+1=cos(k·acos(x′n))    (3) 

其中,k表示Chebyshev映射的控制参数,k=4.0;acos(.)表示反余弦函数,x′n+1代表第n+1次迭代Chebyshev映射的状态变量值,x′n代表第n次迭代Chebyshev映射的状态变量值,x′n∈[-1,1],x′n的初始值x′0作为亮度直流分量的系数扩散密钥,由用户根据实际需求设定,本发明实施例中,x′0=0.3; 

步骤5-3-2、预迭代Chebyshev映射200次,使映射充分进入混沌状态; 

本发明实施例中,对于Chebyshev映射,当k为整数值时,-1为其“不良点”。如果该情况出现,则对x′的当前值做一个微小的扰动,例如增加或减小0.001。 

步骤5-3-3、在步骤5-3-2的基础上继续迭代Chebyshev映射,对当前状态变量x′n进行量化,获得密钥流元素; 

kn=mod[floor(x′n×1014),L]    (4) 

其中,kn表示密钥流元素,L表示图像边长; 

步骤5-3-4、根据密钥流元素对序列中当前亮度直流分量进行加密,即进行异或操作; 

DC′n=kn⊕DCn⊕DC′n-1,    (5) 

其中,DCn表示当前操作的亮度直流分量;DC′n表示加密后的亮度直流分量;DC′n-1为前一次迭代中已加密的亮度直流分量,其初始值DC′0为整型常量,由用户根据实际需求设定,其取值范围为[0,L],⊕表示按位异或操作;在DC系数加密过程中,由于DC′n-1的引入,每一个DC系数的影响都能被有效地扩散至后续所有的密文中; 

步骤5-3-5、返回执行步骤5-3-3,直至序列中所有亮度直流分量均完成加密,即完成亮度直流分量的扩散操作; 

本发明实施例中,DC′0=80,由公式(4)产生的扩散密钥流元素序列为: 

{190,121,232,248,143,94,52,247...} 

由公式(5)加密后的DC系数序列为: 

{-238,163,-99,138,5,96,-111,131...} 

对应于步骤5-3-4中式(5)的解密反变换公式为 

DCn=kn⊕DC′n⊕DC′n-1    (10) 

步骤5-3-6、返回执行步骤5-3-1至步骤5-3-5完成色度直流分量的扩散操作; 

步骤6、确定量化后每个最小数据单元的亮度交流分量和色度交流分量,并对其进行加密; 

在对AC系数进行加密时,本发明方法只对部分AC系数进行处理,其目的是在保证图像信息安全性的同时,尽量降低对压缩效率的影响。 

本发明实施例中,对AC系数的加密同样采用混沌密码学中经典的“置乱-扩散”架构,但每个DCT块的63个AC系数中,如图7所示,只有AC1~AC8共8个系数参与置乱,并且在这8个系数中,只有取值在[0,7]之间的系数参与扩散操作;如图8所示为AC系数的加密架构,其总体思路为:对所有块中相同位置的AC系数进行置乱和扩散,即:首先对n个DCT块中的所有AC1系数进行块间置乱与扩散,接下来对所有AC2系数进行操作,直至对全部8个系数完成操作。本发明算法在AC系数的置乱和扩散阶段采用了同DC系数加密过程相同的混沌映射-logistic映射和Chebyshev映射。 

具体步骤如下: 

步骤6-1、如图7所示,按照Z字排列顺序,将所有最小数据单元中的亮度交流分量提取出,提取的亮度交流分量个数H范围为[4,20];H的值越大,安全性越高,但是同时压缩效果越差,权衡这两方面的要求,H值的取值范围为[4,20]; 

步骤6-2、如图8所示,将所有最小数据单元提取出的第一个亮度交流分量,按照最小数据单元的排列顺序,构成一个序列,并按照Z字排列顺序继续构建其他亮度交流分量的序列,直至提取出的最后一个亮度交流分量,按照最小数据单元的排列顺序,完成构成一个序列, 即获得所有亮度交流分量所构成的多组序列,序列的组数为提取的亮度交流分量个数; 

步骤6-3、根据步骤5-2,采用logistic混沌映射对第一组亮度交流分量构成的序列进行置乱; 

本发明实施例中,此处logistic映射的状态变量初始值x0作为AC系数置乱密钥。注:AC系数加密过程与DC系数加密过程完全独立,加密者需对x0赋以一新值。本发明实施例中,x0=0.3。 

将所有DCT块中相同位置的AC系数组成8组(AC1~AC8参与置乱),在组内进行置乱操作。置乱原理与DC系数相同,将每个DCT块中的AC系数与包括其自身在内的后续某个块中的同位置AC系数相交换。置乱操作从第1组开始依次进行。每一组内的置乱均从第一个DCT块的AC系数开始,按块号依次操作,直至最后一个块结束。 

本发明实施例中,加密之前的AC1系数序列为: 

{1,2,-7,25,-6,0,-5,-4...} 

步骤6-3-1、获得伪随机位置坐标; 

步骤6-3-2、将当前操作的亮度交流分量AC与交换目标亮度交流分量AC进行位置交换; 

步骤6-3-3、返回步骤6-3-1,直到该组AC系数全部按指定顺序完成交换; 

本发明实施例中,由公式(2)产生的伪随机坐标(交换目标)为: 

{101,435,100,609,531,161,579,301...} 

置乱之后AC1系数序列变为: 

{0,-9,-6,-15,-10,-25,22,-7...} 

步骤6-4、根据步骤5-3,采用Chebyshev映射对置乱后的第一组亮度交流分量构成的序列进行扩散; 

本发明实施例中,Chebyshev映射的状态变量初始值x′0=0.3,控制参数k=4.0; 

步骤6-4-1、根据式(12)对映射的当前状态变量x′n进行量化,得到一个密钥流元素kn

kn=mod[floor(x′n×1014),L],    (12) 

此处L=8,其原因为;因为本算法只对大小在[0,7]这个区间内的AC系数进行加密,加密之后的数仍需要控制在这个范围内,所以产生的密钥流元素也需要在这个范围内,故L值设定为8。 

步骤6-4-2、若当前操作的AC系数的值在[0,7]区间,则利用密钥流元素kn对其实施加密,加密公式为: 

AC′n=kn⊕ACn⊕AC′n-1,    (13) 

其中,ACn表示当前操作的AC系数;AC′n表示加密后AC系数;AC′n-1为前一个已加密的AC系数值,其初始值AC′0可由加密者设为一取值范围在[0,L]的整型常量,⊕代表按位 异或操作; 

若当前操作的AC系数的值不在[0,7]区间,不对该系数进行加密操作; 

步骤6-4-3、返回步骤6-4-1,直到所有该组AC系数按指定顺序完成加密; 

本发明实施例中,AC′0=5,由公式(12)产生的扩散密钥流元素序列为: 

{6,1,0,0,7,6,4,7...} 

由公式(13)加密后的AC1系数序列为: 

{3,-9,-4,-15,-10,-25,22,-3...} 

对应于步骤6-4-2中式(13)的解密反变换公式为 

ACn=kn⊕AC′n⊕AC′n-1    (14) 

步骤6-5、反复执行步骤6-3至步骤6-4,直至完成8组亮度交流分量构成的序列的置乱和扩散处理,即完成对亮度交流分量的加密; 

对8组AC系数(AC1~AC8)实施置乱和扩散操作,改变每个AC系数的值。置乱和扩散操作从第1组开始依次进行;每一组内的置乱和扩散均从第一个DCT块的AC系数开始,按块号依次操作,直至最后一个块; 

步骤6-6、返回执行步骤6-1至步骤6-5,完成对色度交流分量的加密; 

步骤7、对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分量进行压缩处理,具体如下: 

步骤7-1、对加密后的亮度直流分量序列进行差分脉冲编码; 

本发明实施例中,对加密后的DC系数进行差分脉冲编码的方法是:取每个块中的DC值与前一个块中的DC值的差值来进行编码,其中第一个块的DC系数值直接进行编码。由于加密后的不同块间的DC系数值的差值远小于DC系数值本身,因此对差值进行编码所需要的数据量远小于对原值进行编码所需要的数据量。对加密后的DC系数进行差分脉冲编码后,形成的编码序列为: 

DC′1,DC′2-DC′1,DC′3-DC′2,...,DC′i-DC′i-1,...,DC′n-DC′n-1   (11) 

其中,DC′1~DC′n表示加密后各数据块的DC系数,即直流分量; 

本发明实施例中,输出的差分脉冲编码为: 

{-238,401,-262,237,-133,91,-207,242...} 

步骤7-2、对差分脉冲编码后的亮度直流分量序列进行熵编码; 

即根据差分脉冲编码后的亮度直流分量的大小,查询DC系数熵编码表,对应获得该亮度直流分量所属范围,查询其所占的比特位数,并确定该亮度直流分量的二进制码,由获得的比特位数和二进制码构成该亮度直流分量的熵编码;并反复执行上述内容,直至序列中所 有亮度直流分量均完成熵编码,获得亮度直流分量的熵编码码流; 

本发明实施例中,首先将差分脉冲编码后序列中的每一个值描述为如下符号对(A,B),其中,符号A代表差分脉冲编码后的值所占的比特位数,符号B代表差分脉冲编码后的值。 

根据CCITT(国际电报电话咨询委员会)颁布的JPEG图像压缩国际标准白皮书(T.81)中给出的DC系数熵编码表H.2,可获得符号B所属范围占用的比特位数A,再根据熵编码表K.3找到符号A对应的码字。 

本发明实施例,以差分脉冲编码后的的序列第一个值-238为例进行查表过程说明,查表H.2得到-238所属范围所占的比特位数为8; 

H.2表的格式为: 

差分脉冲编码后的值所占的比特位数 差分脉冲编码后值的取值范围 

8 -255..-128,128..255

再根据表K.3找到比特位数为8的码字为111110; 

K.3表的格式为: 

差分脉冲编码后的值所占的比特位数 码字所占比特位数 码字 

8 6 111110

则-238对应的熵编码输出为: 

符号A对应的码字 符号B的二进制码 

(111110     00010010) 

将其他的差分脉冲编码值均查表转换为相应的熵编码码流,则差分脉冲编码后序列转换后的熵编码码流为: 

(111110 00010010),(1111110 110010001),(1111110 1110),(111110 11111010),(11111001111011),(11110 1011011),(111110 00110001),(111110 11110010),...... 

步骤7-3、返回执行步骤7-1至步骤7-2,获得色度直流分量的熵编码码流; 

步骤7-4、对加密后的所有组亮度交流分量序列进行行程长度编码; 

即按照Z字排列顺序,提取出的所有最小数据单元中加密后的亮度交流分量,确定每一个亮度交流分量前0的个数,并根据该亮度交流分量值的大小,查询行程长度编码表,确定亮度交流分量的比特位数及其在所属范围内所处位置;确定亮度交流分量前0的个数与其比特位数的数值组合,确定其所处位置的二进制码,并由上述两者构成交流分量的行程长度编码;所述的数值组合为:R/S,其中,R表示亮度交流分量前0的个数;S表示亮度交流分量的比特位数; 

本发明实施例中,对每个DCT块中的AC系数独立进行编码,具体方法为:按图7所标注顺序将加密后的AC系数写成一1×63矢量,根据AC系数中值为0的系数占比较大且多连续的特点,仅对非零AC系数进行编码,而对值为0的AC系数仅记录其连续出现的个数。根据CCITT(国际电报电话咨询委员会)颁布的JPEG图像压缩图际标准白皮书(T.81)中给出的行程长度编码表F.2可以获得非零AC系数值所占的比特位数。 

本发明实施例中,第一个Y的8×8块加密后AC系数排序为: 

3  2  5  -2  1  -2  6  0  0  0  -1  0  0  0  0  0  0  0  0  0  0  0  0  0  00  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  00  0  0  0  0  0  0  0  0  0  0  0 

以第一个AC系数3为例,查表F.2得到3所占的比特位数为2,3在改组中所有位置中排在第三位; 

表F.2的格式为: 

非零AC系数值所占的比特位数   非零AC系数值的取值范围 

2 -3,-2,2,3

AC系数编码为: 

<非零AC系数前为0的系数的个数/非零AC系数值所占的比特位数>(非零AC系数的值在该组所有数值中的位置的二进制值) 

本发明实施例中,3前面的0的系数的个数为0,所以3的行程长度编码输出为(0/2)(11)。其余62个AC系数的行程长度编码均做相同查表转换,第一个Y的8×8块加密后AC系数的行程长度编码码为(0/2)(11),(0/2)(10),(0/3)(101),(0/2)(01),(0/1)(1),(0/2)(01),(0/3)(110),(3/1)(0),(EOB) 

步骤7-5、对获得的所有组行程长度编码进行熵编码; 

即根据非零AC系数前0的个数与其比特位数的数值组合,查询AC系数熵编码表,确定其对应码字,并由该码字和交流分量所处位置的二进制码构成熵编码,进而获得每组亮度交流分量序列的熵编码流; 

本发明实施例中,用符号R表示AC系数行程长度编码后非零AC系数前为0的系数的个数,用符号S表示AC系数行程长度编码后非零AC系数值所属的组编号,符号P表示非零AC系数的值在该组所有数值中的位置的二进制值。 

根据CCITT(国际电报电话咨询委员会)颁布的JPEG图像压缩国际标准白皮书(T.81)中给出的AC系数熵编码表K.5,可获得每一对R/S对应的码字。 

本发明实施例中,以输出的行程长度编码的(0/2)(11)为例,查表K.5得到(0/2)所对应的码字01。 

表K.5的格式为: 

R/S 码字所占比特位数 码字 

0/2 2 01

所以,(0/2)(11)对应的熵编码输出为(0111)。 

其他的行程长度编码输出,均按照上述相同操作,最后输出的熵编码码流为: 

(01 11),(01 10),(100 101),(01 01),(00 1),(01 01),(100 110),(111010),(1010) 

步骤7-6、返回执行步骤7-4至步骤7-5,获得每组色度交流分量序列的熵编码流; 

步骤7-7、完成对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分量的压缩处理; 

步骤8、根据获得的直流分量序列熵编码码流和所有组交流分量序列熵编码码流,将压缩加密后的图像保存为JPEG格式,即完成图像的压缩加密处理。 

按照CCITT(国际电报电话咨询委员会)颁布的JPEG图像压缩国际标准白皮书(T.81)规范,顺序写入SOI(图像开始标记位)、APP0(应用标记位)、DQT(定义量化表标记位)、SOF0(帧开始标记位)、DHT(定义Huffman表标记位)、SOS(扫描开始标记位)、图像数据加密后的熵编码流以及EOI(图像结束标记位),形成JPEG标准格式文件,具体写入顺序及数据如图9所示。 

算法测试 

(1)加密效果与膨胀率 

如图10(a)所示,参与测试的原图像为彩色Lena图像,其格式为位图格式(bmp),大小为193Kb。原图像经JPEG编码压缩后的效果如图10(b)所示,其大小为17Kb,以此大小为基准计算引入加密后的膨胀率。对原图像应用本发明所提出的压缩加密联合编码算法,得到的图像如图10(c)所示,其大小为51Kb。由图10(c)所见,由于在压缩编码过程中引入了有效的加密机制,编码后的图像在视觉上完全不可分辨,取得了较好的加密效果。表10为本发明方法与传统的先加密后压缩模式的对比。由表可见,本发明所提出的联合编码方法,引入的膨胀率较低,很好的兼顾了安全性与压缩效率。表10 

(2)密钥空间分析 

密钥空间是指在加密或解密过程中可用的不同密钥的总量。对于一个安全的加密系统,密钥空间应该足够大以使穷举攻击失效。本算法在DC和AC系数的置乱和扩散阶段分别采用了两种混沌映射-logistic映射和Chebyshev映射。两种系数的密钥均由两部分组成:置乱 密钥KeyP和扩散密钥KeyD。由于两种系数在加密过程中密钥独立设置,因此分析一种系数的加密过程后,将密钥空间平方即可。 

以DC系数为例,置乱密钥KeyP由一个浮点数x0∈[0,1]构成。扩散密钥KeyD由两个浮点数(x′0,k)构成,其中x′0∈[-1,1],k可以为任意大于等于2.0的实数。根据IEEE浮点数标准,64比特双精度浮点数的计算精度为10-15,因此x0的可用数量约为1×1015,x′0的可用数量约为2×1015。虽然k的可用数量在理论上为无穷大,但考虑到Chebyshev映射对于控制参数k的周期行为,在分析密钥空间时,k的取值范围需要被限定在某个[0,2π]范围内,因此其实际可用数量约为2π×1015。x0,x′0与k相互独立,因此加密DC系数的密钥空间为: 

KeyDC=1×1015×2×1015×2π×1015≈2153    (15) 

总密钥空间为:KeyTotal=(KeyDC)2=2306: 

表11 

表11为本方法与三种经典对称加密算法密钥空间的比较。从表中可以看出,本方法的密钥空间大于各类经典加密算法,可有效抵御穷举攻击。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号