基于同类系数置乱的jpeg图像加密方法

文档序号:10613183阅读:371来源:国知局
基于同类系数置乱的jpeg图像加密方法
【专利摘要】本发明涉及一种基于同类系数置乱的JPEG图像加密方法,首先读入JPEG图像文件,获得哈夫曼编码表和经JPEG编码压缩后的图像数据,解码获取所有非零量化DCT系数数值和位置,并进行分类;选定密码,利用该密码进行混沌迭代生成混沌序列,利用混沌序列置乱每个类别的非零系数和8×8区块;将置乱后的量化DCT系数矩阵进行熵编码,将编码后的数据写入JPEG图像文件,完成基于同类系数置乱的JPEG图像加密,本发明通过混沌序列对不同类别的量化DCT系数进行置乱处理,直接用同一种加密方案处理量化后的DC系数和非零AC系数,能兼顾安全性和高效性,而且本发明加密图像与明文图像文件大小相似,压缩率高。
【专利说明】基于同类系数置乱的JPEG图像加密方法 【技术领域】
[0001]本发明属于图像处理技术领域,涉及一种基于同类系数置乱的JPEG图像加密方 法。 【【背景技术】】
[0002] 随着硬件技术的发展,图像采集设备越来越普及,现阶段绝大多图像采集设备将 获取到的图像数据保存为JPEG格式,这些图像通过公共网络发布和交流时,对隐私内容的 加密需求也与日倶增。图像加密通过算法隐藏视觉信息,保护数据安全。传统图像加密方法 偏重内容和细节的隐藏,不考虑图像数据的存储格式和加密后密文图像的压缩率。对JPEG 图像采用传统加密方法获得的密文图像,由于像素值分布均匀、细节混乱,其压缩率比起明 文图像大为降低,为图像存储和传输带来不必要的损耗。JPEG图像加密分析JPEG压缩标准 对静态图像的压缩过程,寻求合适的加密方法,维持加密前后图像文件的压缩率,目前主要 的做法有:
[0003] $DZhang,Dinghui,andFengdeng Zhang."Chaotic encryption and decryption of JPEG image"·Optik-International Journal for Light and Electron Optics 125.2,pp. 717-720,2014.其中是置乱8 X 8分块:不改变分块内部的系数,将8 X 8分块作为 单元,置乱这些单元。但是置乱8 X 8分块,不处理分块内部的参数,攻击者通过差分攻击方 式,能够找出置乱规律,密钥空间小,难以对抗暴力攻击,其安全性较差。
[0004] JPEG图像编码中的量化DCT系数分为直流系数和交流系数两种,两种系数的重要 性也有所区别:直流系数(DC)包含了每个8X8分块的直流信息,是人眼最敏感的部分;交流 系数(AC),特别是高频的AC系数,人类视觉对其并不敏感。因此传统方法往往对两种系数采 用不同的加密方案:对直流系数的加密采取较复杂、安全性能比较高的方法;对交流系数的 加密采取较简单、执行速度快的方法。采用这种方法来兼顾安全性和高效性。例如在 SimYing 0ng,KokSheik Wong,Xiaojun Qi,Kiyoshi Tanaka,"Beyond format-compliant encryption for JPEG image",Signal Processing: Image Communication,Volume 31, February,Pages 47-60,2015.分别加密量化直流和非零交流系数:对量化直流系数和量化 非零交流系数用不同的方法加密处理,需要至少两种加密方案,整个系统较复杂。 【
【发明内容】

[0005] 本发明的目的是克服现有技术中存在的缺点,提供一种基于同类系数置乱的JPEG 图像加密方法,针对JPEG图像,利用混沌系统,对不同类别的量化DCT系数进行置乱处理,能 够维持JPEG格式的加密图像与明文图像文件大小相似,压缩率高。
[0006] 为了达到上述目的,本发明采用如下技术方案:
[0007] 包括以下步骤:
[0008] 步骤一:读入待加密的JPEG图像文件,获得哈夫曼编码表和经JPEG编码压缩后的 图像数据;
[0009]步骤二:通过哈夫曼编码表解码JPEG图像数据,获得量化DCT系数矩阵;
[0010]步骤三:按JPEG量化DCT系数编码类别表将量化DCT系数矩阵中的非零系数分类, 并记录每个非零系数在量化DCT系数矩阵中的位置;对待加密的图像,统计量化DCT系数矩 阵中所有非零系数的个数η和8X8分块个数m;
[0011] 步骤四:选定密码,利用该密码进行混沌迭代η+m次,生成长度为n+m的混沌序列;
[0012] 步骤五:将混沌序列前η个元素按照大小排列,其在原序列中的地址构成新的序列 I;
[0013] 步骤六:利用步骤五中生成的序列I对每个类别的非零系数进行置乱;
[0014] 步骤七:如果各个类别的非零系数都已置乱完毕,进入步骤八,否则返回步骤五;
[0015] 步骤八:将置乱后的非零系数按照步骤三中记录的位置写入新的矩阵,形成加密 后的量化DCT系数矩阵;
[0016] 步骤九:将加密后的量化DCT系数分割为不重叠的8X8区块,将混沌序列的后m个 元素按照大小排列,其在原序列中的地址构成新的序列Π ,利用序列Π 将加密后的量化DCT 系数矩阵所有8 X 8分块置乱;
[0017] 步骤十:将步骤九获得的置乱后的量化DCT系数矩阵进行熵编码,将编码后的数据 写入待加密的JPEG图像文件,获得加密后的JPEG图像文件,完成基于同类系数置乱的JPEG 图像加密。
[0018] 进一步地,步骤一中从待加密的JPEG图像文件的文件头中获取图像尺寸、量化表 和哈夫曼编码表。
[0019] 进一步地,步骤十中置乱后的量化DCT系数矩阵利用文件头中的哈夫曼编码表进 行熵编码。
[0020] 进一步地,步骤四中的混沌迭代,选用一维logistic map:
[0021] Χη+1=μΧη(?-Χη) (1)
[0022] 其中χο为初始值,μ为设定的控制参数。
[0023] 进一步地,〇〈χ〇〈1,3·570〈μ〈4。
[0024] 进一步地,步骤六中的置乱具体包括:
[0025] (a)取出混沌序列的前nl个元素,将其按照大小升序排列,元素在原序列中的地址 构成新序列A;其中,nl表示第一类非零系数的个数;
[0026] (b)利用该新序列A对第一类非零系数进行置乱;
[0027] (c)取出nl + 1至nl+n2个元素,重复步骤(a)和步骤(b),完成对第二类非零系数的 置乱,直至完成最后一种类别的非零系数置乱;其中n2表示第二类非零系数的个数。
[0028] 与现有技术相比,本发明具有如下有益的技术效果:
[0029] 本发明利用混沌系统的初值敏感性和复杂性,生成伪随机序列,通过该序列对不 同类别的量化DCT系数进行置乱处理,不直接处理DCT系数,而是处理量化后的DC系数和非 零AC系数。JPEG编码针对人类视觉特性设计了的量化表,精细地保留直流和低频信息,粗略 地保留高频信息。于是JPEG图像编码中,量化后的直流系数(QDC)绝对值较大,而量化后的 交流系数(QAC)绝对值较小,大多数为零,或接近于零,非零的值很少。在这种情况下,对量 化DC系数和非零AC系数用同一种加密方案,并不会显著增大要处理的数据,从而也能兼顾 安全性和高效性,克服了传统技术种需要区别对待两种系数的难题。本发明提出的加密方 法,能够维持JPEG格式的加密图像与明文图像文件大小相似,压缩率高,加密后文件不会大 于加密前文件的105 %,加密方法简单易实现,密钥空间大,抵抗暴力攻击的能力明显增强, 安全系能高,既可以单独使用,也易于与其他JPEG图像加密方法结合使用。
[0030] 进一步地,本发明中混沌迭代的初值范围相当大,因此密码的选择很多,初值选择 可能为2 52 ,甚至更多,如此之大的密码可能空间能有效地抵抗暴力攻击。 【【附图说明】】
[0031] 图1是本发明的流程图;
[0032] 图2是本发明的加密效果图;其中图A为原始图像,图B为加密图像,图C为正确解密 图像,图D为错误解密图像。 【【具体实施方式】】
[0033]下面结合附图和【具体实施方式】对本发明进行详细说明。
[0034]本发明提供一种维持JPEG图像质量和压缩率的加密方法,用于加密JPEG图像,参 见图1,本发明方法包括如下步骤:
[0035]步骤一:读入JPEG图像文件数据流。从JPEG图像文件的文件头中获取图像尺寸、量 化表、哈夫曼编码表等信息,并获得JPEG图像的文件体数据,即经JPEG编码压缩后的图像数 据。
[0036]步骤二:通过JPEG图像文件的哈夫曼编码表,解码JPEG图像数据,JPEG图像数据的 主要部分是量化DCT系数编码,因此解码后获得量化DCT系数矩阵。在这个矩阵中,大多数系 数取值为零,少量与人的视觉感知相关性较强的系数不为零。
[0037]步骤三:按JPEG量化DCT系数编码类别表将非零系数分类。不区分DC和AC系数,只 按其取值进行分类,其中属于第一类的系数个数为nl,属于第二类的系数个数为n2…,n = nl+n2+…。记录每个非零系数在量化DCT系数矩阵中的位置。对待加密的图像,统计量化DCT 系数矩阵中所有非零系数的个数η和8X8分块个数m; JPEG量化DCT系数编码类别表如下表1 所示:
[0038] 表1 JPEG量化DCT系数编码类别表
[0039]
[0040]^步骤四:在混沌迭代许可的初值范围内选定密码。利用该密码进行混沌迭代n+m 次,生成长度为n+m的混沌序列。混沌迭代,选用一维logistic map
[0041] Χη+1=μΧη(?-Χη) (1)
[0042] 混纯迭代许可的初值范围是XQ和μ这两个参数的取值;其中XQ为初始值,μ为控制参 数,均由用户设定,要求满足该迭代为混沌状态,因此取值范围为〇〈XQ〈 1,3.570〈μ〈4。
[0043] 步骤五:将混沌序列的前η个元素按照大小升序排列,其在原序列中的地址构成新 序列I。
[0044] 步骤六:利用步骤五中生成的新序列I对每个类别的非零系数进行置乱。比如,对 第一类系数进行置乱时,取出前nl个元素,对第二类系数进行置乱时,取出第nl+1至nl+n2 个元素。
[0045] 步骤七:如果各个类别的非零系数都已置乱完毕,进入步骤八,否则返回步骤五。
[0046] 步骤八:将置乱后的非零系数按照步骤三中记录的位置写入新的矩阵,形成加密 后的量化DCT系数矩阵。
[0047]步骤九:将加密后的量化DCT系数分割为不重叠的8X8小块,将混沌序列的后m个 元素按照大小升序排列,其在原序列中的地址构成新序列Π ,利用这个新序列Π 将加密后 的量化DCT系数矩阵所有8 X 8分块置乱。
[0048]步骤十:将步骤九获得的置乱后的量化DCT系数矩阵按照JPEG编码过程重新编码: 利用文件头中的哈夫曼编码表进行熵编码,将编码后的数据直接写入原始待加密的JPEG图 像文件,生成加密后的JPEG图像文件。其中图像大小、量化表、哈夫曼编码表等参数保持不 变。
[0049] 结合图2和具体的实施例,对本发明做进一步详细说明:
[0050] 一、读入 JPEG 图像 Lena.
[0051] 二、解码获得量化DCT系数矩阵。
[0052]三、按表1将量化DCT系数矩阵中的非零系数读出并分类,记录下每个非零系数在 矩阵中的位置。所有非零系数总共有44442个,第一类系数共22597个,第二类9268个……;8 X 8分块共4096个。
[0053]四、选择密码χ〇 = 〇 .426,μ = 3.68,迭代44442+4096 = 48538次。
[0054]五、取出混沌序列的前22597个元素,将其按照升序排列,元素在原序列中的地址 构成新序列。例如序列(〇. 356,0.732,0.364)按照升序排列后成为(0.356,0.364,0.732), 元素在原序列中的地址构成的新序列为(1,3,2)。本实施例中待加密的JPEG图像一共有 22597个第一类非零系数,因此需要混沌序列中的前22597个元素。如果选择另一幅JPEG图 像对其用本饭进行加密,其非零系数个数与本幅图像不同,取出元素的个数也不同。
[0055]六、利用新序列对第一类系数进行置乱。具体来说,新序列的第i个元素为(^,则第 一类系数的第i个元素在置乱后变成了第ci个元素。
[0056] 七、取出混沌序列的第22598至22598+9268 = 31866个元素,重复步骤五到六,直至 最后一种类别置乱完毕。
[0057]八、将置乱后的系数按照步骤三中记录的位置写入新的量化DCT系数矩阵。
[0058] 九、取出混沌序列的最后4096个元素,重复步骤五,获得地址序列。将4096个8X8 分块利用该地址序列进行置乱。
[0059] 十、将步骤九获得的量化DCT系数矩阵利用文件头中的哈夫曼编码表进行熵编码, 将编码后的数据写入加密后的JPEG图像文件。其中图像大小、量化表、哈夫曼编码表等参数 保持不变。
[0060] 加密效果结合图2,可以看出加密后图像置乱充分,无法反映原始图像的任何信 息,加密效果良好;正确解密后的图像与原始图像完全一致。
[0061]解密的过程中,步骤六与步骤九与加密过程相反,其余都一样。具体来说,解密过 程为:
[0062]步骤一:读入加密后的JPEG图像文件数据流。从JPEG图像文件的文件头中获取图 像尺寸、量化表、哈夫曼码表等信息,以及文件体数据。
[0063]步骤二:通过JPEG图像文件的哈夫曼编码表,解码文件体数据,获得加密后的量化 DCT系数矩阵。
[0064]步骤三:按JPEG量化DCT系数编码类别表将非零系数分类。不区分DC和AC系数,只 按其取值进行分类。记录每个非零系数在量化DCT系数矩阵中的位置。假设所有非零系数的 个数为η,其中属于第一类的系数个数为nl,属于第二类的系数个数位n2…,n = nl+n2+… η 15。该图像的8 X 8分块个数为m。
[0065] 步骤四:输入加密时的密码XQ和μ,利用logistic map进行混纯迭代,迭代m+n次, 生成混沌序列。
[0066] 步骤五:将长度为n+m的混沌序列元素按顺序分为15组,组内元素的个数分别为 nl,n2,……nl5,每组元素按照大小升序排列,其在原序列中的地址构成新的序列。
[0067] 步骤六:利用步骤五中生成的15组地址序列对每各类别的非零系数进行反向置 乱。
[0068] 步骤七:如果各个类别都已置乱完毕,进入步骤八,否则返回步骤六。
[0069]步骤八:将解密后的非零系数按照步骤三中记录的位置写入原量化DCT系数矩阵。 [0070]步骤九:将新的量化DCT系数矩阵分割为不重叠的8X8小块,将混沌序列的后半部 分m个元素按照大小升序排列,其在原序列中的地址构成新的序列,利用这个序列将加密后 的量化DCT系数矩阵所有8X8分块反向置乱。
[0071] 步骤十:将步骤九获得的反向置乱后的量化DCT系数矩阵按照JPEG编码过程重新 编码:利用文件头中的哈夫曼码表进行熵编码,将编码后的数据写入JPEG图像文件。其中图 像大小、量化表、哈夫曼码表等参数保持不变。这样就获得了解密后的JPEG图像文件。
[0072] 混沌迭代的初值范围相当大,因此密码的选择很多。如果攻击者试图采用穷举法 搜索密码,运算量极大,因此能有效抵抗暴力攻击。
[0073]该方法置乱每种类别的系数,能够保持JPEG图像数据中非零量化DCT系数的个数、 类别和具体数值,不影响游程编码的游程长度,维持了 JPEG编码的压缩能力;采用原有的熵 编码方法,编码结果与源图像相比,有一定变化但在可接受范围内,能够维持JPEG格式的加 密图像与明文图像文件大小相似,压缩率高。本发明有效解决了现有技术中普通图像加密, 不针对JPEG图像进行处理,导致密文图像压缩率下降的问题,安全性能高,系统易于实现。 [00 74]该方法采用运算容易的logistic map生成混纯序列,对JPEG图像数据直接进行操 作,不区分DC和AC系数,只关心非零量化DCT系数的具体取值,加密方法简单易实现。
[0075]利用该方法加密后的JPEG图像,仍然维持JPEG格式,可以继续利用其他JPEG图像 加密方法进行多轮加密。该方法既可以单独使用,也易于与其他JPEG图像加密方法结合使 用。
[0076] 混纯迭代的初值范围相当大,因此密码的选择很多。本发明方法采用的logistic map的初值选择可能为252。如果选用coupled logistic map作为混纯迭代用于生成混纯序 列,则初值的选择可能为21()4。如此之大的密码可能空间能有效地抵抗暴力攻击。
[0077]利用新方法对JPEG图像进行加密,能够维持JPEG格式的加密图像与明文图像文件 大小相似,压缩率高。表2是一些实验JPEG图像加密前后的文件尺寸,可以看出加密后文件 不会大于加密前文件的105%,在可接受范围内。
[0078]表2加密前后文件大小变化 [0079]
【主权项】
1. 基于同类系数置乱的JPEG图像加密方法,其特征在于,包括以下步骤: 步骤一:读入待加密的JPEG图像文件,获得哈夫曼编码表和经JPEG编码压缩后的图像 数据; 步骤二:通过哈夫曼编码表解码JPEG图像数据,获得量化DCT系数矩阵; 步骤三:按JPEG量化DCT系数编码类别表将量化DCT系数矩阵中的非零系数分类,并记 录每个非零系数在量化DCT系数矩阵中的位置;对待加密的图像,统计量化DCT系数矩阵中 所有非零系数的个数η和8 X 8分块个数m; 步骤四:选定密码,利用该密码进行混沌迭代n+m次,生成长度为n+m的混沌序列; 步骤五:将混沌序列前η个元素按照大小排列,其在原序列中的地址构成新的序列I; 步骤六:利用步骤五中生成的序列I对每个类别的非零系数进行置乱; 步骤七:如果各个类别的非零系数都已置乱完毕,进入步骤八,否则返回步骤五; 步骤八:将置乱后的非零系数按照步骤三中记录的位置写入新的矩阵,形成加密后的 量化DCT系数矩阵; 步骤九:将加密后的量化DCT系数分割为不重叠的8 X 8区块,将混沌序列的后m个元素 按照大小排列,其在原序列中的地址构成新的序列Π ,利用序列Π 将加密后的量化DCT系数 矩阵所有8 X 8分块置乱; 步骤十:将步骤九获得的置乱后的量化DCT系数矩阵进行熵编码,将编码后的数据写入 待加密的JPEG图像文件,获得加密后的JPEG图像文件,完成基于同类系数置乱的JPEG图像 加密。2. 根据权利要求1所述的基于同类系数置乱的JPEG图像加密方法,其特征在于,步骤一 中从待加密的JPEG图像文件的文件头中获取图像尺寸、量化表和哈夫曼编码表。3. 根据权利要求2所述的基于同类系数置乱的JPEG图像加密方法,其特征在于,步骤十 中置乱后的量化DCT系数矩阵利用文件头中的哈夫曼编码表进行熵编码。4. 根据权利要求1所述的基于同类系数置乱的JPEG图像加密方法,其特征在于,步骤四 中的混纯迭代,选用一维logistic map: Xn+l 一 14Χη( 1-Xn) ( 1 ) 其中χο为初始值,μ为设定的控制参数。5. 根据权利要求4所述的基于同类系数置乱的JPEG图像加密方法,其特征在于,0〈Xq〈1, 3·570〈μ〈4〇6. 根据权利要求1所述的基于同类系数置乱的JPEG图像加密方法,其特征在于,步骤六 中的置乱具体包括: (a) 取出混沌序列的前nl个元素,将其按照大小升序排列,元素在原序列中的地址构成 新序列A;其中,nl表示第一类非零系数的个数; (b) 利用该新序列A对第一类非零系数进行置乱; (c) 取出nl+1至nl+n2个元素,重复步骤(a)和步骤(b),完成对第二类非零系数的置乱, 直至完成最后一种类别的非零系数置乱;其中n2表示第二类非零系数的个数。
【文档编号】G06T9/00GK105975866SQ201610265512
【公开日】2016年9月28日
【申请日】2016年4月26日
【发明人】李珊珊, 孙伟阳, 赵祥模
【申请人】长安大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1