[发明专利]基于交流统计特征改变的JPEG图像比特流加密方法有效
| 申请号: | 201910089778.7 | 申请日: | 2019-01-30 |
| 公开(公告)号: | CN109889687B | 公开(公告)日: | 2020-03-27 |
| 发明(设计)人: | 陈帆;和红杰;郑梦阳;董梦瑶 | 申请(专利权)人: | 西南交通大学 |
| 主分类号: | H04N1/32 | 分类号: | H04N1/32;H04N19/91;H04N19/184 |
| 代理公司: | 成都博通专利事务所 51208 | 代理人: | 陈树明 |
| 地址: | 610031 四*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | 一种基于交流统计特征改变的JPEG图像比特流加密方法,用户在JPEG比特流中由用户密钥选择部分图像块中最后一个非零交流系数熵编码进行加密,并作为秘密信息通过直方图平移方法隐藏到部分图像块熵编码中,由用户密钥和交流系数得到统计特性,自适应生成直流系数加密密钥和交流系数的加密密钥,分别对直流系数进行组间置乱和差分编码迭代置乱,对交流系数进行块内和块间置乱;接收者在加密比特流中提取秘密信息并进行解密,由用户密钥和加密比特流中交流系数统计特性恢复直流系数和交流系数加密密钥,并对交流系数和直流系数进行解密,恢复每个图像块熵编码中的交流系数熵编码,得到原始比特流。该方法安全性高,且加密文件扩展小。 | ||
| 搜索关键词: | 基于 交流 统计 特征 改变 jpeg 图像 比特流 加密 方法 | ||
【主权项】:
1.一种基于交流统计特征改变的JPEG图像比特流加密方法,包括如下步骤:A、JPEG图像比特流加密A1、数据读取用户读取大小为H0×W0的JPEG格式的图像X,获得图像X的原始比特流J,J={SOI,JH,ECS1,ECS2,...,ECSn,...,ECSN,EOI},其中:SOI为图像开始标记符,JH为JPEG头文件,EOI为图像的结束标记符,ECSn为图像X中的第n个图像块熵编码,N为图像块熵编码的个数,N=(H0×W0)/64;H0为图像X的行数、W0为图像X的列数;图像X中的第n个图像块熵编码ECSn由第n个图像块熵编码的直流差分熵编码Cn,第n个图像块的非零交流系数熵编码集An,图像块熵编码结束标记符EOB组成,即ECSn={Cn,An,EOB};其中,![]()
是ECSn中第i个非零交流系数熵编码,In为第n个图像块熵编码中非零交流系数熵编码的个数;将第一个至第N个图像块非零交流熵编码集A1,A2,...,An,...,AN,依次拼接组成原始比特流J的非零交流熵编码序列A,即A={A1,A2,...,An,...,AN};A2、基于直方图平移的加密密钥自适应生成A2.1、交流系数熵编码预处理用户根据直方图平移方法,计算原始比特流J的最大隐写容量Cmax,根据用户密钥Key选取隐写容量Ce使得Ce∈(0,Cmax);然后,基于用户密钥Key生成长度为F的伪随机序列Z,Z={z1,z2,...,zf,...,zF},其中zf伪随机序列Z中的第f个伪随机的整数,且zf∈(1,N);找出非零交流熵编码序列A中的第n=zf个非零交流熵编码集
并提取出第zf个非零交流熵编码集
中的最后一个非零交流系数熵编码Bf,
将将所有的非零交流熵编码集
中的最后一个非零交流系数熵编码Bf依次拼接,组成长度为Ls的待隐藏比特流B,![]()
其中Ls≤Ce;使用用户密钥Key加密待隐藏比特流B,得到的秘密信息S,
Ls为秘密信息S的长度;同时,得到预处理交流熵编码序列![]()
![]()
A2.2、秘密信息隐藏:用户采用直方图平移隐藏方法将长度为Ls的秘密信息S隐藏至预处理交流熵编码序列
中,得到待加密交流熵编码序列![]()
并将待加密交流熵编码序列
中隐藏秘密信息S所需要的交流熵编码集
的个数记为Ns;A2.3、交流系数统计特征生成:将第n个待加密交流熵编码集
中的非零交流系数熵编码的个数记为![]()
并将所有的待加密交流熵编码集
的非零交流系数熵编码的个数
依次拼接,得到待加密交流系数熵编码个数序列![]()
然后,根据下式生成交流系数统计特征T,T={t0,t1,t2,...,tx,...,t63},其中,tx为交流系数熵编码个数
的值为x的统计特征值,
其中sum(.)为在待加密交流系数熵编码个数序列
中,满足条件
的交流系数熵编码个数
的总数;A2.4、直流系数和交流系数加密密钥生成:将用户密钥Key和交流系数统计特征T,分别作为混沌序列的种子和初值,由混沌序列生成自适应图像内容的直流加密密钥K1和交流加密密钥K2;A3、直流加密用户将所有图像块熵编码ECSn中的直流差分熵编码C1,C2,...,Cn,...,CN组成原始比特流J的直流差分熵编码序列C,即:C={C1,C2,...,Cn,...,CN};A3.1、计算直流系数序列:根据JPEG解码标准,解码每个直流差分熵编码Cn,得到直流差分系数dfn,并将所有的直流差分系数dfn依次拼接,组成直流差分序列DF,即:DF={df1,df2,...,dfn,...,dfN},根据直流差分系数dfn,由下式计算得到直流系数dn,
然后将所有的直流系数dn依次拼接得到原始比特流J中的直流系数序列D={d1,d2,...,dN},A3.2、直流系数分组置乱按照从左至右的顺序,将直流系数序列D分成H(H=H0/8)组,得到直流系数分组序列
其中,Dh为直流系数分组序列
中的第h个直流系数分组,h=1,2,...,H;第h个直流系数分组Dh包含W(W=W0/8)个直流系数,分别为d(h‑1)×W+1,d(h‑1)×W+2,...,dh×W,即Dh={d(h‑1)×W+1,d(h‑1)×W+2,...,dh×W};其中w={1,2,3,...,W},h={1,2,3,...,H};采用A2步生成的直流系数加密密钥K1,对直流系数分组序列
进行置乱,得到置乱直流系数分组序列![]()
其中,
置乱直流系数分组序列
中的第h’个置乱直流系数分组;将置乱直流系数分组序列
中的所有置乱直流系数分组
依次拼接,得到,
其中,
为置乱直流系数序列
中的第n个置乱直流系数;对置乱直流系数分组序列
中的第n个置乱直流系数
按下式进行计算,得到第n个置乱直流差分系数df′n,
将所有的置乱直流差分系数df′n,依次拼接得到分组置乱直流差分系数序列DF’,DF’={df′1,df′2,…,df′n,…,df′N}A3.3、差分编码迭代置乱:根据直流系数加密密钥K1,对分组置乱直流系数差分序列DF’采用差分编码迭代置乱的加密方法进行加密,得到加密直流差分系数序列DF*,
其中
为加密直流差分系数序列DF*中的第n个加密直流差分系数;A3.4、加密的直流系数加密图像块熵编码序列生成:根据JPEG编码标准对加密的直流差分序列DF*中的第n个加密直流差分系数
进行编码,得到第n个图像块熵编码ECSn的直流系数加密熵编码
然后,将所有的直流系数加密熵编码
依次拼接,得到直流系数加密熵编码序列C*,
A4、交流系数加密A4.1、块内置乱:在A2.2步骤中生成的待加密交流熵编码序列
的,
中,如果
采用交流系数加密密钥K2,置乱第n个待加密交流熵编码集
中的
个交流系数编码
得到块内置乱交流熵编码集A′n,
其中
为第n个块内置乱交流熵编码集A′n中的第i个块内置乱交流系数编码
否则,将待加密交流熵编码集
记为第n个块内置乱交流熵编码集A′n,即
最后,按序拼接所有的块内置乱交流熵编码集A′n,得到原始比特流J的块内置乱交流熵编码序列A′,A′={A′1,A′2,…,A′n,…,A′N};A4.2、块间置乱:根据交流系数加密密钥K2,对原始比特流J的块内置乱交流熵编码序列A′进行伪随机置乱,得到加密交流熵编码序列A*,
其中
为第n个加密交流系数熵编码集;A5、加密比特流生成:用户将A3步骤得到的直流系数加密熵编码序列C*中第n个直流系数熵编码
A4步骤得到的加密交流熵编码序列A*中第n个加密交流熵编码集
和图像块结束熵编码结束标记符EOB,依次拼接,得到加密图像块熵编码![]()
然后,将图像开始标记代码SOI,JPEG头文件JH,所有加密图像块熵编码
以及图像结束标记代码EOI依次拼接,得到加密比特流J*,
最后,用户将用户密钥Key,秘密信息S的长度Ls,隐藏秘密信息S所需要的交流熵编码集合的个数记Ns,依次拼接,记为密钥信息Ke,Ke=(Key||Ls||Ns),并将密钥信息Ke,以及加密比特流J*发送给接收者,其中||为串联符号;B、JPEG比特流解密B1、加密密钥提取:接收者提取接收到的加密比特流J*中的第n个加密图像块熵编码
进而提取出第n个加密图像块熵编码
中的第n个加密交流熵编码集
令第n个加密交流熵编码集
并从密钥信息Ke中提取出用户密钥Key,然后进行A2.3、A2.4中的操作,得到直流系数加密密钥K1和交流系数加密密钥K2;B2、交流系数解密B2.1、块间置乱恢复:将所有的加密交流熵编码集
依次拼接,得到加密交流熵编码序列A*,
根据交流系数加密密钥K2,对加密交流熵编码序列A*进行置乱恢复,得到原始比特流J的块内置乱交流熵编码序列A′,A′={A′1,A′2,…,A′n,…,A′N};B2.2、块内置乱恢复:在原始比特流J的块内置乱交流熵编码序列A′中,对每个块内置乱交流熵编码集A′n,
如果I′n>1,用交流系数加密密钥K2置乱恢复块内置乱交流熵编码集A′n中的I′n个交流系数编码,得到待加密交流熵编码集![]()
否则,待加密交流熵编码集
最后,按序拼接所有的待加密交流熵编码集
得到待加密交流熵编码序列![]()
B2.3、秘密信息提取:接收者从密钥信息Ke中提取出秘密信息长度Ls,隐藏秘密信息S所需要的图像块熵编码个数Ns;接收者对待加密交流熵编码序列
的前Ns个待加密交流熵编码集
采用直方图平移方法依次提取出二进制长度为Ls的秘密信息S,并得到预处理交流熵编码序列![]()
然后,使用用户密钥Key解密秘密信息S,得到隐藏信息B;B2.4、图像块交流系数恢复:将隐藏信息B根据JPEG标准进行交流系数解码,得到F个待隐藏交流熵编码B1,B2,…,Bf,…BF;根据用户密钥Key生成长度为F的伪随机序列Z,Z={z1,z2,…,zf,…,zF},按照下式,对预处理交流熵编码序列![]()
进行处理,得到非零交流熵编码集An;
依次拼接第n个图像块交流熵编码集An,组成非零交流熵编码序列A,即A={A1,A2,…,An,…,AN};B3、直流系数解密B3.1、直流系数差分编码迭代置乱恢复:接收者提取加密比特流J*中的第n个加密图像块熵编码
并提取第n个加密图像块熵编码
中的直流系数加密熵编码
然后,将所有的直流系数加密熵编码
依次拼接,得到直流系数加密熵编码序列C*,即![]()
对直流系数加密熵编码序列C*进行JPEG解码,得到加密直流差分系数序列DF*,
对加密直流差分系数序列DF*采用差分编码迭代置乱恢复的解密方法进行置乱恢复,得到分组置乱直流系数差分序列DF’,即DF’={df′1,df′2,…,df′n,…,df′N};B3.2、直流系数分组:对于分组置乱直流系数差分序列DF’,由下式计算得到置乱直流系数![]()
然后将所有的置乱直流系数
依次拼接得到原始比特流J中的直流系数置乱分组序列
按照从左至右的顺序,将直流系数置乱分组序列
分成H(H=H0/8)个置乱直流系数分组![]()
其中W=W0/8;进而得到置乱直流系数分组序列![]()
![]()
为置乱直流系数分组序列
中的第h个置乱直流系数分组;B3.3、直流系数组间置乱恢复:根据直流加密密钥K1,以置乱直流系数分组
为单位,对置乱直流系数分组序列
进行伪随机置乱恢复,得到直流系数分组序列![]()
其中,Dh为直流系数分组序列
中的第h个直流系数分组,将所有直流系数分组Dh依次拼接,得到直流系数序列D,D={d1,d2,…,dn,…,dN};B3.4、直流系数解密图像块熵编码序列生成:将直流系数序列D中的第n个的直流系数dn,根据下式进行运算,并得到第n个图像块熵编码ECSn的直流差分系数dfn,
根据JPEG编码标准对第n个图像块熵编码ECSn的直流差分系数dfn进行编码,得到第n个图像块熵编码ECSn的直流系数解密熵编码Cn;B4、原始比特流恢复:接收者将B2步骤得到的第n个图像块熵编码的直流差分熵编码Cn、B3步骤得到的第n个图像块的非零交流系数熵编码集An和图像块熵编码结束标记符EOB,依次拼接为原始比特流J中的第n个图像块熵编码ECSn,即ECSn={Cn,An,EOB},并将图像开始标记代码SOI,JPEG头文件JH,第n个图像块熵编码ECSn以及图像结束标记代码EOI依次拼接,得到原始比特流J,J={SOI,JH,ECS1,ECS2,...,ECSn,...,ECSN,EOI}。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西南交通大学,未经西南交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910089778.7/,转载请声明来源钻瓜专利网。





