APP下载

基于魔方密码的图像加密解密技术

2021-08-05孙光民

北京工业大学学报 2021年8期
关键词:密文密钥魔方

孙光民,王 皓

(1.北京工业大学信息学部,北京 100124;2.北京工业大学信息化建设与管理中心,北京 100124)

图像加密与解密技术经过多年的发展已经有了较为可靠的算法,如动态DNA序列加密方法[1]、多重混沌映射法[2]、椭圆曲线密码方法[3]、斜帐篷映射方法[4]等,这些方法的特征是破解难度较高,但是算法复杂,计算资源消耗较多,在互联网产品进行实时计算的过程中都会有较大的延时问题.基于传统的像素排序变换方法,如混沌图像置乱法[5],虽然在B/S架构下容易实现实时加密解密,但是对于不经过访问控制的互联网应用,极其容易遭受暴力破解.通常情况下基于混沌理论加密系统的原理是将人工设定的初值作为密钥,刘向东等[5]、耿彬彬等[6]的方法是通过n次Logistic函数迭代后可将待加密的像素信息形成非周期离散数据.实验结果表明,u值越接近4时,离散程度越高,因为其加密的密码取值范围非常确定,Logistic系数常常集中于(3.57,4.00].该方法的执行效率很高,但在已知其中任意明文密码的基础上最多通过1.2×106次嗅探即可获取设定值,从而导致整个加密系统的失效,因为在64位Web服务器下,浮点运算有效位数为7,这就造成了密码位数具备较强的局限性,导致该加密理论在互联网应用的可靠性降低.

本文对2个方面进行了研究:一方面是对像素信息进行动态密码加密,其特征是打破计算机浮点运算位数的限制,初值最大可扩展至135个字符,并且不需要手动设定初值或密码,算法将密码转化为8位二进制与图像的某一通道进行换位;另一方面,引入魔方密码(Rubik’s cube and dynamic password,RCDP)算法,将图像的3个通道和密码组成6个矩阵,即模拟六面体结构,按照魔方原理旋转各个通道的数据组成新矩阵.因为在图像中注入了冗余的像素信息,并且进行了通道数据转置,所以图像尺寸和内容均发生变化.此方法有助于增加纹理解密难度,旨在保障速度的前提下提升加密解密算法的安全性,杜绝了传统算法由于存在位置序列与像素具有一一对应的关系而被破解.

1 动态密码实现方法

动态密码的核心是生成随机密文,即同一明文在不同时刻对应不同密文,在验证阶段,密文与明文进行真假校验,其校验过程如图1所示.

图1 动态密文原理图Fig.1 Schematic diagram of dynamic ciphertext

1.1 密钥生成方法

为了减少遍历时间,需要对图像中的有效像素和密码信息进行区分,将“$”开头的数据标记为密码.

1.1.1 密码哈希优化

经MD5运算后的密文为64位,为了能够使密文扩展至135位,将密文进行分段处理,密文取自16位字符型数组,字符取值为0~9和A~Z组成的随机集合记为P.算法过程记为Phash(input,count),流程如图2所示.其中:simplify过程代表手动设定迭代频率的取值范围,虚线部分为P集合取值后与μs时间戳的二进制位的连接过程(符号为“.+”);uniqid取(0,1)的7位小数.

图2 Phash算法流程图Fig.2 Phash algorithm flow chart

Pkey为私钥,是生成的uniqid经过MD5函数散列后的二进制count次取值输出的集合.该私钥用于加密过程且密文可通过simplify参数设定位长,密码开始位在(3,32/2)的随机位置.

1.1.2 编码字符化

为了增加服务器的密文长度,方便密码与像素拟合后的调试,也为了数据能够在浏览器中按Json格式输出,需要将二进制码转换成字符串形式,与base64算法不同,本算法具备数据混淆功能,函数记为en64(input,count),如图3所示.

图3 en64算法流程图Fig.3 Flow chart of en64 algorithm

算法要求输入input和计数值count,如果input长度大于count值则返回,k为循环次数,每次自加,“|”代表并操作,“&”代表与操作,“≪”代表向左移位,hashpass是初值进行混淆后的字符化编码.

1.1.3 河豚加密算法

河豚加密法(blowfish algorithm)是密码专家Bruce Schneier开发的可变长度分组密码算法,速度是数据加密标准(data encryption standard,DES)加密算法的20倍,本文将该算法的对称密钥通过Pkey进行加密,保证速度没有明显降低的同时增加破解难度,这种方法可以降低信息被加密后出现重复密文的概率,并且不浪费额外的字节熵.河豚加密法的指针无法兼容奇数字节,参考bcrypt算法[7],将数据末尾右移至偶数位,最后1个字节单独运算,前4位为校验位,后4位为结束位.算法函数记为bf_salt(x),设输入为input,与河豚算法产生的数据相加,再进行m次MD5运算,得到的字节序列反转后和input经过en64函数产生的字节序列进行与操作而后再反转,不断迭代直到输出$0或$3开头的密文值,此时m值分别记为mx和mu.

该算法密文内部保留原始密钥信息,密码起始位置处于密文3至16位,由simplify控制.

1.2 加密

设输入明文为pwd,随机数指针为random,count=6.

1.2.1 自适应加盐性能

设random=Phash(pwd,count),Rblowfish=bf_salt(random),此时系统可以自定义加盐效率:如果环境开启了CRYPT_BLOWFISH功能,将明文pwd与Rblowfish做一次crypt[8]运算,散列值长度为60;如果环境未开启该功能,则对Rblowfish进行count次MD5操作,输出散列值的性能可随系统环境变量自适应变化.

1.2.2 私有化椒盐密钥

如果random长度小于6,则Rsalt=Phash(random,6),设输出output默认值为0x2A 0x00(*0),如果Rsalt的第0~2位也为0x2A 0x00,则output的值改为0x2A 0x01,此时,密钥id设为Rsalt的第0~3位,当id不等于0x24 0x00且不等于0x24 0x03时,直接输出output值,进程结束.

在P中查找Rsalt的第4个字符,并设该字符为log2(count),如果log2(count)小于7或者大于30,直接输出此时的output值,否则,log2(count)向左移动一位,生成新的count.

此时复制Rsalt中的第4~8位到参量salt中,如果salt非零长度大于8位,输出output,如图4所示.

图4 椒盐密钥私有化过程Fig.4 Salt-pepper keys privatization process

为了兼容运行环境版本,实验中算法使用MD5散列方法,在生产环境应采用更高级别的方法,位长要求为[32,448].将salt与pwd连接,公式为

pwd′=(salt≪length)+pwd

(1)

式中length为密码的位长.pwd′进行一次MD5运算,得到的值再进行count次MD5运算,得到散列值Rhash,抽取Rsalt的0~12位存入output,将Rhash作为input,设置count值为6,带入en64(input,count),其结果与output连接成Rout并输出,得到最终密文.

1.3 解密

利用Rsalt对明文和密文进行椒盐私有化运算,得到一组值T,如果T0为“*”,pwd和密文进行crypt[9]操作,若得到的散列值等于密文,返回真,否则为假.

2 图像加密与还原

传统图像加密通常是对像素信息进行有规律的混淆,将可逆信息隐藏在明文图像中[10],这类方法可以抵抗人眼识别,但基于像素特征的识别算法依然可以提取图像内容.本文提出的RCDP算法是将密码转换为像素数据,参与图像通道矩阵置换,即可解决传统图像加密易被破解的问题,并且只要通过密码校验,还原图像过程与传统方法相比并未增加复杂程度.

2.1 像素置乱方法

像素置乱方法主要是将图像中的像素以位置信息为基础,按照一定规律进行重新排列以达到混淆图像内容的目的.

2.1.1 Logistic单通道置乱方法

根据映射公式[11]

xt+1=uxt(1-xt)

(2)

可知,给定t=0时的值,可进行迭代运算,t=h-1后,形成数组X,进行冒泡法排序,得到数组,X→映射记作的键作为的键,的值作为的值.

图5 Logistic置乱算法Fig.5 Logistic reorder algorithm

2.1.2 魔方算法

魔方算法是在像素置乱算法基础上,加入魔方控制理论,对多维矩阵进行关联性位移,26块体魔方分为角色块、楞色块、朝向元,理论组合为4.3×1019种.由于矩阵元素丢失了位置信息,无校验的还原会导致数码转换错误,从而无法完全输出图像特征.进行魔方算法的步骤如下:

图6 图像三围变换及区域补齐Fig.6 Three channel transformation and region complement of image

2)手动或自动设置一个初值x0,通过动态密码方法得到密文,每8位二进制为一组,从(0,w)坐标开始向(w,w)方向排列,完成密码面置数,其他通道同理.

3)采用Logistic映射排序,经过t轮迭代,形成无序数组.

5)t次旋转后,形成新的立方体数据,参照步骤1)还原图像,尺寸变成2w×w,如图7所示.

在信息熵公式中,mi表示像素值,p(mi)表示其出现的概率,H(m)为

(3)

图中天空的像素L=0x065DCE的理论熵值为:原图像6.642,加密后的图像7.990.这说明加密算法可以有效掩盖图像特征信息.

2.2 面与位的复原方法

将加密后的图像分割成2个w×w的图像,左边图片的(0,0)点作为立方体零点(0,0,0),按照魔方算法的步骤1)进行展开,图像展开后形成立方体,将该立方体按魔方的基本定律分7个步骤进行还原[12],如图8所示.

图8 魔方还原过程示意图Fig.8 Schematic diagram of Rubik’s cube restoration process

2.3 图像中的密码与密码矩阵

图9 L、U、F三面的密码分布Fig.9 Cipher distribution of faces L,U,and F

2.4 图像还原

(4)

(5)

式中:r越接近1,说明2个像素的相关性就越强;若r<0.5,则进行过滤处理,跳过相关性验证.

魔方密码算法一般会增加图像尺寸,将原图像填充为1∶1或2∶1,算法的主要目的是高效地隐藏和还原图像隐私,如果在解密后还原尺寸,计算资源将无法得到有效控制,故算法舍弃了尺寸还原步骤,得到了尺寸增加的图像,如图10所示.

图10 图像解密Fig.10 Image decryption

被还原的图像所在区域几乎包含所有原图像特征,只有少许高斯噪声,如图11所示.这些噪声是在通道转换时进行了余数取整和反转一次B通道产生的,通过像素对齐可解决这个问题,方法是将图像奇数行列补0变为偶数.

图11 还原后的图像与原图像对比Fig.11 Comparison between decrypted image and original image

3 性能分析

3.1 椒盐迭代次数性能对比

设初值密文mx=$0,mu=$3,密文中根据头信息(HEADER)判断输入的位置.iteration为Phash()中设置的迭代次数,当前椒盐信号在P中的取值为

椒盐输出salt为第i次遍历P[si]的序列与en64(input,count)函数输出值的数码位连接,实验结果表明count最佳取值为6,迭代取值见表1.

表1 椒盐密钥迭代的次数与性能关系Table 1 Relationship between iterations and performance of salt-pepper keys

3.2 密码生成性能测试

在线模拟密码生成过程如图12所示,每轮迭代可手动输入密码明文和迭代次数,接口地址为/apis/images/testForPassword,注入参数为password=123和loop=10 000.计算结果符合严格雪崩性准则(strict avalanche criterion,SAC)[14],密文输出序列的比特有一半以上发生改变.

图12 在线密码生成器测试Fig.12 Online password generator test

在不同处理器上对同明文和不同明文分别进行10 000轮测试,Intel i3处理器生成密码平均2.495 ms/次,Intel i7处理器为1.343 ms/次,如表2所示.

表2 密码生成性能对比Table 2 Performance comparison of password generation

实验表明,算法可自适应计算机算力,运行效率和cpu性能不是正比关系.

3.3 密码解密性能测试

安全性要求一般是针对密文的特性而言[15],将加密模型生成的密文输入至解码接口,在线解密过程如图13所示,每轮迭代10 000次,接口地址为/apis/images/testFordecrypt,注入参数password=123&hash=file和密文文件存储地址.

图13 在线密码解码器测试Fig.13 Online password decoder test

Intel i3和i7处理器分别进行10万轮解码测试,平均解码时间分别为2.4、1.4 ms/次,与加密性能结论一致.

3.4 密码性能对比

用魔方密码、Logistic、椭圆曲线、斜帐篷4种加密方法进行1 000轮对比实验,结果如图14所示.图像大于180×180像素、小于730×560像素时,魔方密码、Logistic两种算法的效率最高且性能相似,椭圆曲线算法没有明显性能优势,斜帐篷算法性能最差;大于800×600像素时魔方密码算法和椭圆曲线算法性能急剧降低,Logistic和斜帐篷算法相对稳定.

图14 Logistic与魔方密码算法的加密性能对比Fig.14 Comparison of encryption performance between logistic and RCDP algorithm

在180×180像素到730×560像素图像尺寸区间内魔方密码算法和Logistic算法加密性能接近,并且高出另外2种算法2倍.为了不影响互联网应用的用户体验,不采用性能较低的加密算法,故只对魔方密码算法和Logistic算法做图像还原性能对比.由图15可知,图像小于1 000×1 000像素时魔方密码算法和Logistic算法还原性能无明显差异.

图15 Logistic与魔方密码算法还原图像性能对比Fig.15 Comparison of restoration performance between logistic and RCDP algorithm

因此,图像尺寸在180×180像素到730×560像素时,加密还原性能和破解难度综合对比表明,魔方密码算法性能最佳.

3.5 神经网络攻击性能测试

在深度学习环境下,通常可以利用BP神经网络辅以语义分割对像素信息进行预测和重组.假设所有网络输入均是未知,初始权值和阈值均是随机给定,参考头脑风暴优化(brain storm optimization,BSO)算法[16]构建破解网络对加密图像进行还原.

Logistic输入破解神经网络后,可以在5 s内提取主要信息,如建筑物和植物,虽然楼宇和树木的位置与原始图像有所差异,但肉眼已经可以识别,如图16所示,说明加密算法失效.

图16 传统像素置乱算法的破解结果Fig.16 Cracking result of traditional pixel chaos algorithm

当密钥与正确密钥值发生非常微小的变化时,将解密出完全错误的图像,说明该算法对密钥具有高度敏感性,从而具有很强的抵御攻击的能力[17].经魔方密码算法加密过的图像输入网络后,无法得到真实的图像,破解网络只是将图像存在较多的天空元素输出于显著区域,其余信息均匀地向图像边缘分布,肉眼依然无法识别图像内容,如图17所示,说明魔方密码算法可有效地抵抗神经网络破解.

图17 魔方密码算法的破解结果Fig.17 Cracking result of RCDP algorithm

4 结论

1)本文算法可以显著提升图像加密后的破解难度.

2)本文算法在分辨率180×180像素至730×560像素时性能最佳,可以有效防止图像被滥用,授权后可以快速在线还原图像.

3)所有实验的算法均通过互联网程序开发和验证,可以直接应用于B/S架构,互联网尚未有此类在线应用,该算法通过集成RESTful和Oauth2.0接口,可以无缝对接任何系统.

猜你喜欢

密文密钥魔方
一种支持动态更新的可排名密文搜索方案
幻中邂逅之金色密钥
幻中邂逅之金色密钥
嵌入式异构物联网密文数据动态捕获方法
一种新的密文策略的属性基加密方案研究
一种抗攻击的网络加密算法研究
成语魔方
Android密钥库简析
楼房魔方
小魔方