✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
一、背景
(一)图像信息安全的重要性
在数字化时代,图像作为信息的重要载体,广泛应用于各个领域,如医疗、军事、金融等。这些图像可能包含敏感信息,如医疗影像中的患者隐私、军事图像中的战略情报等。确保图像在存储、传输过程中的安全性至关重要,以防止信息泄露、篡改等安全威胁。
(二)传统图像加密方法的局限性
传统的图像加密方法,如基于置换和扩散的方法,在面对日益强大的攻击手段时,安全性逐渐难以满足需求。这些方法的密钥空间相对较小,容易受到暴力破解攻击。而且,随着计算能力的提升,攻击者能够在较短时间内尝试大量可能的密钥,从而破解加密图像。
(三)椭圆曲线 Diffie - Hellman 和希尔密码结合的优势
椭圆曲线 Diffie - Hellman(ECDH)是一种基于椭圆曲线密码学的密钥交换协议,具有较高的安全性和较小的密钥长度。希尔密码是一种多字母替换密码,通过矩阵运算对明文进行加密。将两者结合,可以充分发挥各自的优势。ECDH 用于安全地生成共享密钥,为加密过程提供高强度的密钥基础,而希尔密码基于矩阵运算的特性可以对图像像素进行复杂的变换,增强加密效果,共同为图像加密提供更强大的安全保障。
二、原理
(一)椭圆曲线 Diffie - Hellman(ECDH)
(三)基于 ECDH 和希尔密码的图像加密和解密流程
- 图像预处理:将彩色图像转换为灰度图像(如果是彩色图像),以便简化加密过程。然后将图像的像素值进行归一化处理,例如将像素值映射到 0 到 255 的范围。
- 密钥生成:通信双方通过 ECDH 协议生成共享密钥。这个共享密钥可以用于生成希尔密码的加密矩阵 K。例如,可以将共享密钥作为种子,通过某种伪随机数生成算法生成加密矩阵 K 的元素值。
- 图像加密:将预处理后的图像按一定规则分块,每块作为一个明文块。对每个明文块,使用生成的加密矩阵 K 进行希尔密码加密,得到相应的密文块。将所有密文块组合起来,得到加密后的图像。
- 图像解密:接收方使用相同的 ECDH 协议生成共享密钥,并基于此生成与发送方相同的加密矩阵 K 及其逆矩阵 K−1。对加密后的图像分块,对每个密文块使用 K−1 进行希尔密码解密,得到明文块。将所有明文块组合起来,并进行逆归一化处理,恢复原始图像。
⛳️ 运行结果
📣 部分代码
clc
clear
q = 100049; % large prime number
n=1;
a = 1;
b = 3;
result=myprime(q);
%disp("Checking number "+(result));
if (4*(a^3))+ (27*(b^2)) ~= 0
if(result==1)
Eq_a_b = generate_elliptic_curve(a,b,q,0,10000);
G_x = Eq_a_b(n,1);
G_y = Eq_a_b(n,2);
% alice
private_alice = 41; % alice's private key
p_alice_x = G_x; % alice's public key= 289*G
p_alice_y = G_y;
% multiply private_alice times
for i = 2:private_alice
P1 = elliptic_curve_add(G_x,G_y,p_alice_x,p_alice_y,a,b,q);
p_alice_x = P1(1);
p_alice_y = P1(2);
end
end
end