近年来基于混沌系统的图像加密技术受到广泛研究,Henon映射具有伪随机性、确定性和对初始条件与系统参数的敏感性、符合Kerck—hoffs准则,用Henon映射对图像像素值扩散、像素位置置乱及将像素值扩散和像素位置置乱相结合等方式实现对图像文件加密,可以达到较好的加密效果。
下面我们将介绍一种基于LDPC码和 Henon映射相结合的图像加密方法,同时解决图像传输的鲁棒性和安全性问题。
一、加密算法描述
1、位平面分解
数字图像的灰度值可以用8位比特序列表示,若将各像素值的第i个位取出来,得到一幅称为位平面的二值图像。高位位平面代表图像轮廓信息,集中了图像大部分信息,对像素值的影响较大,中间位位平面代表图像的背景信息,低位位平面代表图像的细节信息。
将一幅M×N的灰度图像从高位到低位依次分解为8个M×N的二值位平面,用于编码加密。
2、LDPC编码加密
LDPC码是一种性能接近 shannon限的好码,与 turbo码相比,编译码方法更简单。
LDPC码是线性分组纠错码,可以由检验矩阵H唯一定义。由于
所以构造校验矩阵H是编码的关键,LDPC码的校验矩阵H是一个几乎都是由0组成的,称为稀疏矩阵。Gallager定义的(n,j,k)LDPC码是码长为n,列重为j,行重为k的码字,在有限域 GF中,每个校验式均为二元异或运算。
(1)LDPC码加密原理
将大小为M×N的高两位二值位平面沿行方向拼接成2M×N的二值矩阵K。
构造大小为N×2N的LDPC码的校验矩阵H并消去短环,然后对H通过高斯消元转换为
从而得到生成矩阵
针对2M×N大小的矩阵K,其LDPC编码为
K的每一行为一组信息节点,CK的大小为2M×2N,其每一行为K对应行的LDPC码系统编码,根据高斯消元的变换顺序对CK进行逆排序,变成非系统码。
将CK分解为4个M×N的二值矩阵,与原图像其他 6个位平面进行重构,得到 10比特灰度图。
(3)LDPC译码原理
采用和积迭代译码算法,按照如下译码步骤 对CK每一行进行译码。
初始化、对信息比特的先验概率赋初值并设置迭代次数。
水平迭代、按置信传播算法由信息节点的先验概率计算校验节点的后验概率。
垂直迭代、由校验节点的后验概率计算出信息节点的后验概率。
对信息节点的后验概率进行硬判决,得到译码结果C,如果C×HT=0,则译码结束。否则跳至水平迭代重复迭代,直到满足条件或达到最大迭代次数,得出最终译码结果K。
3、Henon映射加密
Henon映射在非线性动力学系统中出现的确定性、伪随机的过程,这种过程对初始条件的高度敏感性和高度随机性,符合Kerck—hoffs准则等特性,具有良好的密码学特性。
Henon映射是二次方型非线性的二维映射,定义为:
为了适合本文预处理图像的特点,在算法中使用改进的Henon映射,具体形式为:
其中参数a、b满足 1.1≤a≤ 1.5,0.2≤ b≤0.4
并与初值X0和Y0构成密钥。
设定初值X0和Y0为了提高算法对明文的敏感度,计算经LDPC编码后的图像矩阵的偏差,除以1024后作为内部密钥k,并将其与Henon映射初值相加对初值进行修正。根据改进的Henon映射迭代M×N次得到x1和y1,然后以x1和y1作为初值生成长度为M×N的混沌序列Xn和Yn,从Xn和Yn中任选长度为M和N的序列分别进行排序,根据排序值生成行/列置乱矩阵,用于图像像素位置置乱。令:
并将其转换为M×N的矩阵形式,与经过预处理的像素值按位异或进行扩散加密。
二、加密和解密步骤
1、加密步骤
(1)将输入图像进行位平面分割得到8个M×N的二值位平面。
(2)对高两位位平面进行IDPC码编码,得到4个M×N的二值矩阵。
(3)进行位平面重构,得到10比特灰度图像。
(4)计算图像标准差对Henon映射初值进行修正,然后利用Henon映射进行置乱和扩散加密。
(5)分离出高两位位平面作为内部密钥输出,剩余8位位平面构成的密文图像输出。
2、解密步骤
(1)将内部密钥和密文图像经过位平面重构,得到10比特图像。
(2)利用Henon映射得到的扩散矩阵和置乱矩阵分别进行解密。
(3)利用解密后图像的高4位位平面,通过LDPC译码得到2个解码后的位平面。
(4)将解码得到的2个位平面与其他6个位平面重构得到解密图像。
目前,基于LDPC码的加密算法研究主要集中在对数字水印的保护方面,本文采用LDPC码和Henon映射相结合的加密方法对图像进行复合加密,同时解决了图像传输的安全性和鲁棒性问题。
针对数字图像信息主要集中在高位位平面的特点,利用LDPC对高位位平面数据进行编码加密,实现了高位位平面数据传输的高可靠性,同时由于截取者不知道密文和密钥内部的分离传输关系,不能准确得到内部密钥的编码,并且不知道加密者所采用的LDPC码生成矩阵G和校验矩阵H,因而不能解密得到K,从而不能正确解密。
小知识之LDPC码
LDPC码是通过校验矩阵定义的一类线性码,为使译码可行,在码长较长时需要校验矩阵满足“稀疏性”,即校验矩阵中1的密度比较低,也就是要求校验矩阵中1的个数远小于0的个数,并且码长越长,密度就要越低。