✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
一、引言:图像加密的刚需与技术破局
1.1 数字化时代的图像安全困境
在当今数字化浪潮中,互联网与多媒体技术蓬勃发展,图像数据已成为信息传播和存储的重要载体,广泛应用于医疗、军事、金融等诸多关键领域。在医疗领域,电子病历中的医学影像包含患者的关键诊断信息,从 X 光片到核磁共振成像,这些图像的安全直接关系到患者隐私与医疗诊断的准确性;军事领域,卫星侦察图像、无人机拍摄影像等关乎国防安全,一旦泄露或被篡改,后果不堪设想;金融行业里,用于身份验证的人脸图像、交易凭证图像等,对保障金融交易的安全与合规起着关键作用 。
然而,图像数据自身特性给安全防护带来巨大挑战。图像数据量庞大,一张普通的高清照片可能包含数百万个像素点,大量的数据在传输和存储过程中需要占用较多资源,这使得传统加密算法(如数据加密标准 DES、高级加密标准 AES)在处理图像时效率低下,难以满足实时性要求。并且,图像数据存在较高的冗余度,像素之间存在较强的相关性,这为攻击者提供了可乘之机,他们可以利用这些冗余信息进行分析和破解。同时,图像的易篡改性也是一大难题,通过简单的图像处理软件,恶意攻击者就能对图像内容进行修改,而人眼往往难以察觉,这严重威胁到图像数据的真实性和完整性 。
传统加密算法虽然在文本加密等领域表现出色,但面对图像加密时却显得力不从心。DES 算法密钥长度较短,在现代计算能力下已容易被暴力破解;AES 算法虽安全性较高,但由于图像数据的特殊结构,其加密过程复杂,计算开销大,无法高效处理海量图像数据。而单纯的混沌置乱算法,虽然利用混沌系统的初值敏感性、遍历性等特性对图像像素位置进行重新排列,实现一定程度的加密效果,但其密钥空间有限,初值容易被推测,导致加密安全性不足,难以抵御复杂的攻击手段。因此,开发一种更安全、高效的图像加密方案迫在眉睫。
1.2 SHA256 + 混沌置乱:技术融合的创新思路
为了突破现有图像加密技术的瓶颈,本文创新性地提出将 SHA256 哈希算法与混沌置乱技术相结合的图像加密方案。SHA256 算法作为一种安全哈希算法,具有卓越的特性。它能够将任意长度的消息映射为一个固定长度(256 位)的哈希值,具有高度的抗碰撞性,即几乎不可能找到两个不同的消息产生相同的哈希值;同时具备不可逆性,从哈希值无法反向推导出原始消息内容。这些特性使得 SHA256 在密钥生成环节具有极高的安全性,能够有效强化混沌系统的密钥生成过程 。
混沌置乱技术则利用混沌系统对初始条件的极端敏感性,通过生成伪随机序列对图像像素位置进行置乱,打乱图像的原有结构,使图像变得杂乱无章,从而隐藏图像的原始信息。但如前文所述,其自身存在密钥相关的缺陷。将两者结合,正是取长补短。利用 SHA256 算法对输入的密钥或其他关键信息进行哈希计算,生成的哈希值作为混沌系统的初始值或控制参数,极大地扩大了混沌系统的密钥空间,降低了密钥被破解的风险;而混沌系统的初值敏感性又能进一步提升图像置乱和扩散的效果,使得加密后的图像具有更好的随机性和抗攻击性 。
在具体实现过程中,首先通过 SHA256 算法对用户输入的密钥进行哈希处理,得到一个 256 位的哈希值。这个哈希值被精确地转化为混沌系统所需的初始条件,如 Logistic 映射中的初始值 x0 和控制参数 μ。随后,混沌系统依据这些初始条件进行迭代运算,生成一系列具有高度随机性的混沌序列。这些混沌序列被巧妙地应用于图像的置乱操作,根据混沌序列的值对图像的像素位置进行重新排列,实现第一次加密。紧接着,为了进一步增强加密效果,对置乱后的图像进行扩散操作,利用混沌序列将每个像素的值与相邻像素的值进行混合,使得图像的统计特性更加均匀,进一步隐藏图像的原始信息,完成二次加密。
本文后续将详细阐述该加密方案的具体原理、实现步骤,并通过严谨的实验对其性能进行全面评估,包括安全性分析(如密钥空间分析、抗攻击能力测试)、加密效率测试以及图像质量评估等,以充分验证该方案在图像加密领域的有效性和优越性,为数字图像的安全传输与存储提供坚实可靠的技术支持。
二、核心技术拆解:混沌置乱与 SHA256 密钥的底层逻辑
2.1 混沌置乱图像加密技术:从无序到安全
2.1.1 混沌置乱的核心原理
2.1.3 单纯混沌置乱的技术短板
尽管混沌置乱技术在图像加密领域展现出诸多优势,如对初始条件的敏感性带来的高安全性、计算复杂度相对较低带来的高效率等,但单纯的混沌置乱技术仍存在一些不容忽视的短板。
密钥空间不足:混沌置乱主要依赖混沌系统的初始参数(如初始值和控制参数)作为加密密钥,然而这些参数的取值范围通常是有限的。以常见的 Logistic 映射为例,其初始值
x0∈[0,1]
,控制参数r
在混沌区间也有一定的范围限制。在实际应用中,有限的密钥空间使得攻击者有可能通过暴力破解的方式,尝试所有可能的密钥组合来恢复原始图像。虽然混沌系统对初始条件敏感,理论上微小的密钥差异会导致加密结果截然不同,但随着计算能力的不断提升,暴力破解的风险依然存在,这对混沌置乱的安全性构成了严重威胁。混沌序列周期性退化:混沌系统在实际计算过程中,由于计算机的有限精度,生成的混沌序列可能会出现周期性退化现象。计算机在存储和计算数值时,存在一定的精度限制,例如浮点数的表示存在有效数字的限制。随着混沌系统迭代次数的增加,这种精度误差会逐渐积累,导致原本具有良好随机性的混沌序列出现周期性,不再满足加密所需的伪随机性要求。一旦混沌序列出现周期性,攻击者就有可能利用这一规律,通过分析加密图像的统计特性或进行相关性分析,找到混沌序列的周期,进而推测出密钥,破解加密图像,大大降低了加密的安全性 。
对统计攻击的抵抗能力有限:单纯的混沌置乱虽然能够打乱图像的像素位置和值,但对于一些高级的统计攻击手段,其抵抗能力相对有限。例如,攻击者可以通过对加密图像进行直方图分析,观察像素值的分布情况,尝试找出与原始图像或混沌系统相关的统计特征。尽管混沌置乱旨在破坏图像的统计特性,但由于混沌系统本身的确定性和加密算法的固定性,在某些情况下,加密图像的直方图可能仍然存在一些可被利用的规律,使得攻击者能够通过统计分析方法逐步还原出原始图像的部分信息,甚至完全破解加密图像。
综上所述,单纯的混沌置乱技术在图像加密中存在一定的局限性,为了满足日益增长的图像安全需求,需要引入其他技术进行补充和强化,以提升加密方案的整体安全性和可靠性。
2.2 SHA256 密钥技术:哈希特性赋能加密安全
2.2.1 SHA256 的核心特性与原理
SHA256(Secure Hash Algorithm 256 - bit)作为安全哈希算法家族中的重要成员,在信息安全领域扮演着举足轻重的角色,其核心特性和原理为数据的完整性验证与加密安全提供了坚实保障 。
固定长度哈希值与不可逆性:SHA256 能够将任意长度的输入数据,无论是一段简短的文本、一个庞大的文件还是复杂的图像数据,都精确地映射为一个固定长度为 256 位的哈希值,通常用长度为 64 的十六进制字符串来表示。这就如同为每个数据生成了一个独一无二的 “数字指纹”,无论原始数据的大小和内容如何变化,其对应的哈希值长度始终保持不变 。并且,SHA256 具有严格的不可逆性,从生成的哈希值几乎不可能反向推导出原始输入数据。例如,对于字符串 “Hello World”,经过 SHA256 计算后得到的哈希值为 “b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9” ,但无法通过这个哈希值还原出 “Hello World” 这个原始字符串,这种不可逆性在保护数据隐私和防止数据泄露方面具有重要意义。
高抗碰撞性:抗碰撞性是 SHA256 的关键特性之一,意味着几乎不可能找到两个不同的输入数据,使得它们经过 SHA256 计算后产生相同的哈希值。在数学概率上,找到两个碰撞哈希值的可能性极低,约为
2−256
,这种极低的碰撞概率保证了哈希值的唯一性和数据的完整性。即使输入数据只有微小的差异,比如仅仅改变一个字符或一位二进制数,SHA256 计算出的哈希值也会截然不同,呈现出所谓的 “雪崩效应”。例如,字符串 “Hello World” 和 “Hello World!” ,仅仅相差一个感叹号,但它们的 SHA256 哈希值却完全不同,分别为上述提到的 “b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9” 和 “65a8e27d8879283831b664bd8b7f0ad4e5728e65a44de82896748da061c30335” ,这使得攻击者难以通过构造相似数据来伪造相同的哈希值,有效防止了数据篡改和伪造。算法原理与计算流程:SHA256 的计算过程较为复杂,主要包括信息预处理、常量初始化、分块迭代运算等步骤 。在信息预处理阶段,首先对输入数据进行填充,使其长度在对 512 取模以后的余数是 448,填充方式是先补一个比特为 1,然后其余补 0,最多补 512 位;接着附加原始数据的长度信息,用一个 64 位的数据表示,将其补到填充后的消息后面 。常量初始化时,准备 8 个哈希初值和 64 个哈希常量,其中 8 个哈希初值是对自然数中前 8 个质数(2、3、5、7、11、13、17、19)的平方根的小数部分取前 32 位得到;64 个哈希常量是对自然数中前 64 个质数的立方根的小数部分取前 32 位得到 。在分块迭代运算中,将预处理后的消息分解成 512 - bit 大小的块,对每个块进行 64 轮压缩函数运算,每一轮运算都涉及消息调度、工作变量更新等操作,使用到前面初始化的哈希初值、哈希常量以及一系列逻辑运算,最终经过多轮迭代后,将得到的中间变量连接起来,形成 256 位的哈希值,即完成了 SHA256 的计算过程。凭借这些特性和复杂的计算原理,SHA256 广泛应用于数字签名验证、SSL 握手、密码保护以及区块链交易等众多对数据安全性和完整性要求极高的场景中。
⛳️ 运行结果
📣 部分代码
%for each chunk (512 bit)
str=['running...',num2str(ii/wb*100),'%'];
waitbar(ii/wb,waitb, str)
chunk = im_bin2(ii,:);
%get 1~16th word from chunk
w = reshape(chunk,[32,16])';
%calculate 17~60th word
for wordappend = 17:64
s0 = xor(circshift(w(wordappend-15,:),7),circshift(w(wordappend-15,:),18));
t = circshift(w(wordappend-15,:),3);
t(1:3) = [0 0 0];
s0 = xor(s0,t);
s1 = xor(circshift(w(wordappend-2,:),17),circshift(w(wordappend-2,:),19));
t = circshift(w(wordappend-2,:),10);
t(1:10) = [0 0 0 0 0 0 0 0 0 0];
s1 = xor(s1,t);
sw_1 = bin2dec(num2str(w(wordappend-16,:)));
sw_2 = bin2dec(num2str(s0));
sw_3 = bin2dec(num2str(w(wordappend-7,:)));
sw_4 = bin2dec(num2str(s1));
sw = sw_1 + sw_2 + sw_3 + sw_4;
sw = mod(sw,2^32);
sw = de2bi(sw,32,'left-msb');
w = [w;sw];
end
a = H(1,:);
b = H(2,:);
c = H(3,:);
d = H(4,:);
e = H(5,:);
f = H(6,:);
g = H(7,:);
h = H(8,:);
%for each word
for i = 1:64
tmps1 = xor(circshift(a,2),circshift(a,13));
tmps1 = xor(circshift(a,22),tmps1);
tmps2 = xor((a & b),(a & c));
tmps2 = xor((b & c),tmps2);
tp_1 = bin2dec(num2str(tmps1));
tp_2 = bin2dec(num2str(tmps2));
fin2 =mod(tp_1+tp_2, 2^32);
tmps3 = xor(circshift(e,6),circshift(e,25));
tmps3 = xor(circshift(e,11),tmps3);
tmps4 = xor((e & f),(~e & g));
tp_3 = bin2dec(num2str(tmps3));
tp_4 = bin2dec(num2str(tmps4));
w_i = bin2dec(num2str(w(i,:)));
hh = bin2dec(num2str(h));
fin1 = hh + tp_3 + tp_4 + double(const(i)) + w_i;
fin1 = mod(fin1,2^32);
%update a~h
h = g;
g = f;
f = e;
e_d = bin2dec(num2str(d));
e = mod(e_d + fin1,2^32);
e = de2bi(e,32,'left-msb');
d = c;
c = b;
b = a;
a = mod(fin2 + fin1,2^32);
a = de2bi(a,32,'left-msb');
end
%update h0~h7
all_hash = [a;b;c;d;e;f;g;h];
hash_i = bin2dec(num2str(all_hash));
hash_h = bin2dec(num2str(H));
hash_res = hash_i + hash_h;
H = de2bi(mod(hash_res,2^32),32,'left-msb');
end
close(waitb);
H = binaryVectorToHex(H);
end
🔗 参考文献
[1]范延军,孙燮华,阎晓东,等.一种基于混合混沌序列的图像置乱加密算法[J].中国图象图形学报, 2006, 11(3):7.DOI:CNKI:SUN:ZGTB.0.2006-03-014.
🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:
🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类