首页> 中国专利> 一种基于ChaCha20和CCSDS的选择性卫星图像压缩加密方法

一种基于ChaCha20和CCSDS的选择性卫星图像压缩加密方法

摘要

本发明提供一种基于ChaCha20和CCSDS的选择性卫星图像压缩加密方法,针对卫星图像特点,首先利用CCSDS图像压缩算法中9/7整型小波对图像进行三级二维离散小波变换,得到变换后的DC系数和AC系数。其次,通过编码选项中的头信息与512位初始密钥,采用ChaCha20哈希运算产生ChaCha20初始字节流;混沌初始密钥和明文图像归一化均值,通过分段线性混沌映射(Piecewise Linear Chaotic Map,PWLCM)迭代产生的字节流与ChaCha20初始字节流求和取模生成ChaCha20字节流。然后,将ChaCha20字节流与DC系数和部分AC系数(每个block中的父、子系数)、所有AC系数符号位进行异或加密。最后,将加密过的DC、AC系数编码压缩,完成卫星图像压缩加密。ChaCha20字节流的产生与待加密卫星图像、压缩编码参数相关,可增强加密的自适应性。

著录项

  • 公开/公告号CN105704499A

    专利类型发明专利

  • 公开/公告日2016-06-22

    原文格式PDF

  • 申请/专利权人 西北工业大学;

    申请/专利号CN201610048076.0

  • 发明设计人 张绍武;宋金林;梁颖;

    申请日2016-01-25

  • 分类号H04N19/63;H04N19/46;H04N19/122;

  • 代理机构

  • 代理人

  • 地址 710072 陕西省西安市碑林区友谊西路127号

  • 入库时间 2023-12-18 15:37:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-10

    未缴年费专利权终止 IPC(主分类):H04N19/63 授权公告日:20181019 终止日期:20190125 申请日:20160125

    专利权的终止

  • 2018-10-19

    授权

    授权

  • 2016-07-20

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

    实质审查的生效

  • 2016-06-22

    公开

    公开

说明书

技术领域

本发明涉及一种图像处理方法,主要是卫星图像压缩加密方法。

背景技术

卫星图像不受国界、地域限制,包含了丰富的观测数据和情报信息,对全球经济、政治、军事等产生深远影响,但在存储、传输和使用过程中存在一定的泄密隐患,因而寻求高效的卫星图像加密技术具有重要的理论意义和工程应用价值。相对于一般数字图像压缩加密,卫星图像数据量较大,且受传输带宽限制,需要先对卫星图像压缩形成编码数据流再进行传输和存储,因而传统的图像压缩加密算法推广到卫星图像并不能达到最佳压缩加密效果。另外,现有的一些卫星图像加密技术一般通过传统加密算法或者安全协议进行端对端传输,未充分考虑卫星图像分辨率高、容量大、信息量丰富、图像价值高等特点,存在加密时间长、实时性处理差、安全性不高、自适应性差等局限性。

发明内容

为克服现有技术不足,本发明提供一种基于ChaCha20和CCSDS的选择性卫星图像压缩加密方法(简称为SECC加密方法)。

本发明目的在于针对卫星图像数据量大、价值高且难以再次获取、加密强度要求高,现有加密算法自适应差、加密效率低等问题,提出一种基于ChaCha20和CCSDS的选择性卫星图像压缩加密方法,实现卫星图像加密效果好、自适应性强、且对压缩性能影响小的效果。

为实现上述目的,本发明技术方案的基本思想为:针对卫星图像特点,首先利用CCSDS图像压缩算法中9/7整型小波对图像进行三级二维离散小波变换,得到变换后的DC系数和AC系数。其次,通过编码选项中的头信息与512位初始密钥,采用ChaCha20流密码运算产生ChaCha20初始字节流;混沌迭代初始密钥和明文图像归一化均值,通过分段线性混沌映射(PiecewiseLinearChaoticMap,PWLCM)迭代产生的字节流与ChaCha20初始字节流求和取模生成ChaCha20字节流。然后,将ChaCha20字节流与DC系数和部分AC系数(每个block中的父、子系数)、所有AC系数符号进行异或加密。DC系数加密以segment为单位,前一个加密过的系数反馈作用到当前系数的加密,并且每个segment中最后一个已加密DC系数会作用到下一个segment中的第一个DC系数,使得一个segment中系数的变化扩散到以后所有segment的系数中;AC系数以block为单位和ChaCha20字节流进行异或加密,AC系数符号位与ChaCha20字节流转化成的比特流进行异或加密。最后,将加密过的DC、AC系数以segment为单位进行编码压缩,完成卫星图像压缩加密。ChaCha20字节流的产生与待加密卫星图像、压缩编码参数相关,增强加密的自适应性。

本发明基于ChaCha20和CCSDS的选择性卫星图像压缩加密SECC方法包括如下步骤:

步骤1:小波变换

对大小为M×N的输入图像进行三级二维整型9/7离散小波变换,产生与输入图像像素数量相同的变换系数,其中DC系数占总系数的1/64,AC系数占总系数的63/64;

步骤2:ChaCha20字节流生成

ChaCha20的每个状态(state)共16个状态字(stateword),每个32位,分别为4个常数constant,8个输入密钥key,2个块计数器counter,2个随机数nonce,ChaCha20状态的排列方式如公式(1)所示;本发明将原始的ChaCha20密钥略加修改,使ChaCha20的256位密钥key扩充到512位,即把密钥key与constant、counter、nonce共同作为ChaCha20的输入密钥(外部密钥),扩充后状态的排列方式如公式(2)所示。为了增强图像加密的自适应性,SECC加密方法采用ChaCha20流密码结合图像明文像素总和、编码选项参数头信息(即,子带加权系数、一个segment容许的最大字节数SegByteLimit)产生初始字节流,再与PWLCM映射共同作用生成ChaCha20字节流。

1)输入512位外部密钥,按照w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15顺序,依次将外部密钥以小端字节序方式,赋给ChaCha20状态字作为初始值,每个32位,得到ChaCha20初始态(Initialstate);将子带加权系数组s[i],i=0,1,...9按照公式(3)合并成20比特的整数number;

2)为增强加密方法的自适应性,将ChaCha20初始态中的w12与明文图像像素总和sum(P)、number、SegByteLimit进行异或,如公式(4)所示。异或处理后的初始态称为基准状态,作为扩散操作的起点;

式中,表示异或操作;

3)以基准状态为基础进行20轮ChaCha20扩散操作,产生ChaCha20最终状态。从上到下逐行读取最终状态的每个状态字,依据小端字节序方式将其转换成字节流,连接成512位哈希密钥流;8位一组(单字节整数∈[0~255])分割成长度为64的ChaCha20初始字节流key0。每次将上一次的状态字w12加1,其它状态字保持不变,进行20轮扩散过程,每次产生64个字节,如此重复M*N/256次,拼接产生长度为M*N/4的初始字节流bytestream0

4)计算明文图像归一化均值x0=mean(P)/256,mean(P)表示对明文图像P中的像素求均值,将归一化均值x0和输入初值l0作为公式(5)中PWLCM映射参数xn,l的初值,迭代k1+M*N/4次,产生长度为k1+M*N/4的混沌序列,舍弃前k1项(避免暂态效应),生成长度为M*N/4的混沌序列c;

5)采用公式(6)将序列c转换成整数序列O={o1,…,ov,…oM*N/4},ov∈[0,255],

ov=floor(mod(cv*1015,256)),v=1,2,…M*N/4(6)

根据公式(7)构建ChaCha20字节流bytestream;

bytestream(i)=mod(bytestream0(i)+O(i),256),i=1,2,…M*N/4(7)

其中,mod(x,y)表示x对y取模;

步骤3:加密小波变换系数

设一个segment由S个block组成,即一个segment中包含S个DC系数。

1)加密DC系数

第t个segment的DC系数序列表示为DCbytest(j),j=1,2,…S。图像变换后的DC系数占全部系数总数的1/64,而且8位深度图像变换后的系数值基本上为(0,255)之间的整数。SECC加密方法将生成的ChaCha20字节流bytestream的前M*N/64个字节与DC系数逐个进行异或操作,并且使用明文图像像素值总和加密首个segment的第一个DC系数。为了增强DC系数间的扩散性能,将前一个加密后的DC系数作为反馈来影响当前DC系数加密。同时,为了增强segment间的扩散性能,将一个segment中最后一个已加密DC系数反馈到下一个segment中的第一个DC系数加密过程。

(1)获得异或初值a0;初值a0=mod(sum(P),256),sum(P)表示明文图像像素总和。a0用来加密第一个segment中的第一个DC系数,如公式(8)所示,得到加密后的第一个DC系数DCbytes1'(1);

(2)加密第t个segment的DC系数;如公式(9)、(10)所示,得到第t个segment加密后的DC系数DCbytest'(j),j=1,2,…S;

2)加密AC系数

AC系数子带的最大值和平均值均远小于DC系数,如果直接加密所有的AC系数将大幅度增加编码码流。AC系数在编码过程中,一个block中含有的父、子系数共占当前block中AC系数的15/64,而孙系数占到AC系数的3/4;另外,虽然孙系数数量众多,但是其平均幅值和能量百分比均非常小。因此,在对AC系数的加密中选取每个block中的父系数和子系数作为加密对象,并根据所在block的最大幅值对父、子系数进行自适应处理,避免系数因加密而导致编码压缩性能大幅度下降。此外,将ChaCha20字节流转换为比特流来加密AC系数的符号位,进一步保障图像的安全性。

(1)AC系数中父、子系数加密

本部分的系数加密均是对幅值进行操作。以第t个segment中第r个block的父、子系数加密为例。

设当前block中的父系数幅值序列为Parent0(m),m=1,2,3,子系数幅值序列为Son0(n),n=1,2,…12。求出父系数序列中最大幅值Pmax=max(Parent0(m)),m=1,2,3,子系数序列中最大幅值Sonmax=max(Son0(n)),n=1,2,…12,其中max表示求最大值。将父系数、子系数与ChaCha20字节流bytestream逐个进行异或操作,并对相应的最大系数幅值取模,得到加密后的父系数序列Parent、子系数序列Son,如公式(11)、(12)所示。

式(11)(12)中,S表示组成一个segment的block数量。

按照如上方式对每个block中的父、子系数进行加密处理。

(2)AC系数符号位加密

用二进制数“0”表示AC系数中的正号“+”,二进制数“1”表示将负号“-”,0的符号位表示为二进制“0”,以父、子、孙系数顺序对AC系数按行进行扫描得到符号位序列Sign0(l),l=1,2,…M*N*63/64。取ChaCha20字节流bytestream的前M*N*63/512个字节,将每个字节转换为8比特的二进制数,拼接形成长度为M*N*63/64的比特流bitstream。将符号位序列Sign0与比特流bitstream进行异或,得到加密后的符号位序列Sign,如公式(13)所示。

步骤4:压缩编码

在对每个segment进行编码时,编码选项的头信息中包含了编码需要的各种选项字段参数值,本加密方法需要的选项参数包括:每个segment中最大的字节容量SegByteLimit,各子带加权系数组s[i],i=0,1,…9。另外,S表示组成一个segment的block数量,DCStop、BitPlaneStop、StageStop这三个参数表示对编码质量进行控制,当DCStop=0、BitPlaneStop=0、StageStop=3时,表示对图像进行无损编码。设置好以上选项参数后,以segment为单位对加密后的系数进行编码,然后将每个segment编码后的码流组合起来,形成明文图像的加密编码码流,该码流解码后进行小波逆变换后得到加密图像。

步骤5:解密过程

图像解密是加密的逆过程。为了实现正确解密,解密过程除了需要密钥l0,k1k2…k512,另外还需要明文图像大小及像素总和、编码选项头信息中参数(SegByteLimit,s[i],i=0,1,…9)。

本发明具有如下有益效果:

1、利用ChaCha20流密码运算、PWLCM映射与明文图像信息、编码选项参数相结合,生成了均匀的ChaCha20字节流,加密DC系数和部分AC系数,加密强度大,加密效率高,并且字节流的生成与明文信息、编码选项参数密切相关,增强了SECC方法对明文和密钥的敏感性、加密的自适应性。

2、将图像加密与压缩编码同步进行,增加了加密效率和安全性,并且对小波变换系数进行选择性加密,即选取DC系数、部分AC系数(每个block中的父、子系数)和全部AC系数符号作为加密对象。加密DC系数时,前一个已加密系数反馈到当前DC系数加密过程,增强了DC系数间的扩散性能;加密AC系数时,根据父、子系数在block中相应的最大幅值对其进行自适应处理,最大限度地减小了对压缩性能的影响,保证了加密效果。

附图说明

图1是SECC加密方法流程图。

图2是6幅卫星图像marstest、lunar、coastal_b1、coastal_b2、coastal_b7、coastal_b8的加/解密结果,(a1)~(f1)是原图像,(a2)~(f2)是加密图像,(a3)~(f3)是解密图像。

图3是SECC加密方法密钥敏感性测试结果。(a1)、(b1)为原图,(a2)、(b2)是k1k2…k512改变一位后的解密图,(a3)、(b3)是l0改变10-16后的解密图,(a4)(b4)是k1k2…k512,l0的解密图。

具体实施方式

下面结合附图和具体实例对本发明作进一步说明。

基于微软VisualStudio2010集成开发环境,在Intel(R)core(TM)i5-34703.20GHz、4GB内存的台式计算机上进行编程开发。选取CCSDS_BPE位平面编码器以segment为单位进行压缩编码,编码选项设置为:BitPlaneStop=0,StageStop=3,SegByteLimit=0,S=256,子带加权系数设置为标准系数。本实例选用六幅卫星图像进行加密仿真实验,其中marstest、lunar二图像大小为512×512,coastal_b1、coastal_b2、coastal_b7三幅图像大小为1024×1024,coastal_b8图像大小为2048×2048。用MATLAB2010b画出图形。

选取大小为512×512的marstest图像为例,阐述具体加密步骤。

步骤1:小波变换

首先对marstest图像进行3级二维9/7整型小波变换,产生10个子带,一个低频子带LL3,9个高频子带HH1、HL1、LH1、HH2、HL2、LH2、HH3、HL3、LH3,分别计算各子带系数的最大幅值、平均幅值和能量百分比(%),如表1所示。其中最大幅值是每个子带系数幅值的最大值,平均幅值指的是每个子带系数幅值的平均值,能量百分比指的是子带系数平方和与所有系数平方和的比值。

表1marstest图像变换后各子带系数的统计特征

步骤2:ChaCha20字节流生成

设加密密钥为[k1k2…k512,l0]=[“000102030405060708090a0b0c0d0e0f00010203040506071234567890123456”,0.321123],k1k2…k512为512位二进制比特,使用64个字节(每个8比特)表示,对公式(2)的16个状态字赋值;l0∈(0,1),是一个双精度浮点型实数,作为公式(5)中参数l的迭代初值。

1)将k1k2…k512=“000102030405060708090a0b0c0d0e0f00010203040506071234567890123456”,按照w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15顺序依次以小端字节序方式赋值,赋值后得到ChaCha20的初始态,用十六进制表示,如公式(14)所示。标准子带加权系数组s[i]={1,2,2,2,4,4,4,8,8,8},i=0,1,...9,则根据公式(3)计算可得number=2774185(十六进制表示为0x2A54A9)。

2)marstest图像像素总和sum(P)=23766667(0x16AA68B),根据公式(4),生成的ChaCha20基准状态如公式(15)所示。

3)以公式(15)的基准状态为基础,进行20轮ChaCha20扩散操作,生成ChaCha20的最终状态,如公式(16)所示。

从上到下逐行读取公式(16)中的每个状态字,依据小端字节序方式将其转换成字节流,连接成512位哈希密钥流,用十六进制表示为0x4af8622e143d47f3…be2798ad。每8个比特一组,组成长度为64的ChaCha20初始字节流key0,用十进制表示为key0={74,248,98,46,20,61,71,243……190,39,152,173}。第n次将上一次的状态字w12加1,其它状态字保持不变,如公式(17)所示,按照如上方式进行20轮扩散过程,产生初始字节流keyn,重复执行M*N/256次,拼接产生长度为M*N/4的初始字节流bytestream0

4)marstest图像像素归一化均值x0=mean(P)/256=0.354150936007500,输入的初始密钥l0=0.321123,将x0、l0作为公式(5)中的PWLCM映射参数xn、l的初值,迭代1000+512*512/4次,舍弃掉前1000项,生成长度为512*512/4的混沌序列c={0.536186631381500,0.797701038246951,0.629973442428755,……}。

5)将序列c通过公式(6)转换成整数序列O={252,39,82……},长度为M*N/4,具体操作为:

然后通过公式(7)构建ChaCha20字节流bytestream={70,31,180……},长度为M*N/4,具体操作为:

步骤3:加密变换系数

采用CCSDS图像压缩算法将变换系数按block进行分块,每个block包含1个DC系数和63个AC系数,S个block组成一个segment,然后以segment为单位进行编码压缩。第一个segment中的第1、2个block分别如矩阵A、B所示,其中粗斜体为DC系数,斜体、粗体分别为每个block中的父系数、子系数,其它的为孙系数。

1)加密DC系数

以第一个segment为例。

(1)使用marstest图像像素总和产生一个异或初值a0=mod(sum(P),256)=139。利用步骤2产生的ChaCha20字节流bytestream、异或初值a0,通过公式(8)对第1个DC系数进行加密,即

(2)利用上一个已加密的DC系数、bytestream和当前系数通过公式(10)进行加密,例如第2个DC系数的加密方式为使用当前segment中的最后一个已加密DC系数通过公式(9)对下一个segment中的第1个系数进行反馈操作,进而通过公式(10)对下一个segment的其他系数进行加密。

2)加密AC系数

(1)以第一个segment的第1、2个block(即矩阵A、B)为例进行说明。矩阵A中父系数序列的最大幅值Pmax=55,子系数序列最大幅值Sonmax=54;矩阵B中父系数幅值序列最大值Pmax=61,子系数幅值序列最大值Sonmax=20;然后将M*N/64=512*512/64=4096,t=1,S=256,r=1,Pmax=55,Sonmax=54代入到公式(11)、(12)中,分别对第1个block的父、子系数进行加密;将M*N/64=4096,t=1,S=256,r=2,Pmax=61,Sonmax=20代入到公式(11)、(12)中,分别对第2个block的父、子系数进行加密。

(2)以父、子、孙系数顺序对所有AC系数按行进行扫描,得到符号序列Sign0(l)={0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,0,……},长度为512*512*63/64;将ChaCha20字节流bytestream的前512*63个字节按序转化为比特流bitstream={0,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1……},长度为512*512*63/64,把Sign0(l)和bitstream的值代入到公式(13)中,对AC系数的所有符号进行异或加密。然后将加密后的符号按扫描顺序赋给相应AC系数。

步骤4:压缩编码

加密完成后,结合编码选项参数S、SegByteLimit、s[i],i=0,1,…9以及DCStop、BitPlaneStop、StageStop,以segment为单位对加密后的系数值采用CCSDS_BPE编码器进行编码,然后将每个segment编码后的码流组合拼接起来,形成明文图像的加密编码码流。该码流解码后进行小波逆变换后得到加密图像。

步骤5:解密过程

图像解密是加密的逆过程。为了实现正确解密,解密过程除了需要密钥l0,k1k2…k512,另外还需要明文图像大小、像素总和、编码选项参数值S、SegByteLimit、s[i],i=0,1,…9。

在压缩加密过程中,统计六幅卫星图像压缩编码产生的码流和加密编码所用时间,并与非加密情形下的码流和所用时间进行对比。非加密、加密两种情形下,六幅图像产生的码流大小和增加量(%)如表2所示,所用时间和增加量(%)如表3所示。

表2加密/非加密编码压缩码流对比

表3加密编码时间对比

从表2、表3可以看出,采用SECC加密方法加密六幅卫星图像,虽然使码流最多增加了7.27%,加密编码时间最多增加了13.12%,但对卫星图像的压缩性能影响较小,完全在可接受范围内。

图2为六幅卫星图像按照上述实验平台及加密步骤实验仿真所得的加密和解密结果。由图2可以看出,加密后呈现的是类似随机噪声的图像,无法辨认出原图的任何信息,表明SECC加密方法对图像的视觉内容具有很好的加密效果。

图3为分别对密钥k1k2…k512任意改变一位、密钥l0改变10-16时,marstest、lunar图像解密实验结果。由图3可以看出,当解密密钥随机改变一位或有10-16的微小变化时,解密结果仍是一幅杂乱无章的图像,可见,SECC加密方法对密钥的敏感性非常好。

以上结果表明,SECC加密方法具有较强的自适应性,对密钥敏感性高,密钥空间大,完全掩盖了明文像素统计信息,可以很好抵御穷举攻击、已知明文攻击/选择明文攻击、统计攻击等。由于SECC加密方法选择性地加密变换系数,因此,在保障卫星图像安全性的同时,该加密方法仍然有较高的压缩性能和较短的加密编码时间,可有效提高图像存储和传输效率。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号