图片保密传输
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图片保密传输的数学模型
摘要:
在当前信息量如此膨胀的通信时代,如何保证信息传输的安全已经越来越重要,而密码学也逐渐从单纯的数学问题慢慢渗透进了其他各个行业,变为了一门具有特色性的学科。密码在图片保密传输中已经有很多的应用,本文通过Matlab软件应用LSB算法对图片进行加密,并以另一张图片作为载体进行传输,并再次利用LSB算法对图片进行解密并提取出原图,整个过程较为简单,且具有较大的负载量,但是由于负载量的增大也导致安全性的降低,本文最后给出了提高安全性的随机算法,来加强保密性。
关键字:图片保密传输、LSB、数学建模、Matlab
一、问题重述
下面是两幅图片:
为了保密,需要将图片(1)隐藏在图片(2)中进行传输,并且要求在信息传输过程中信息被破译的概率小于5%。
(1)试建立信息加密的数学模型与方法;
(2)试建立信息解密的数学模型与方法;
(3)对上面二幅图片完成加密-传送-接收-解密的全过程,并进一步设计程序,给出良好的界面;
(4)试对加密图和解密图进行比较和检测,给出检测效率的定量估计方法。
二、模型假设
1.假设图片的变动在人眼无法辨别的情况下视为安全。
2.假设传输过程中只有指定对象得到密钥。
三、符号说明
LSB:Least Significant Bit最低有效位
cj:载体像素
mi:密文0、1信息量
A:安全性
K:还原效率
dt: 灰度像素数值总差值
total: 像素数值和
四、模型的分析及建立
为了将一张图片隐藏到另一张图片中,首先需要了解图像在matlab中的工作原理。一个彩色图像就是一个三维矩阵,如果使用matlab的话,可以使用imread来读取一副图像,在workspace中就可以看到矩阵了,但是三维矩阵不能直接显示。三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度值。设所得矩阵为X三维矩阵(256,256,3) ,X(:,:,1)代表红颜色的2维矩阵 X(:,:,2)代表绿颜色的2维矩阵, X(:,:,3)代表蓝颜色的2维矩阵,第一第二维取值在0-255(2^8 1byte),第三维是1-3。
欲将图面进行隐藏即是将图片的矩阵信息进行隐藏,一般隐藏信息的技术分为:1.空间域隐秘技术
LSB方法
拼凑方法
文档结构微调方法
2.变换域隐秘技术
DCT变换,小波变换,傅立叶变换,Fourier-Mellin变换或其它变换
通过观察图片可以看出图像信息量较大,所以比较适合采用LSB方法,LSB替换:嵌入过程包括选择一个载体元素的子集{cj1,…,cjl(m)},然后在子集上执行替换操作cji←→mi,即把cji的LSB与mi进行交换(mi可以是1或0)。
这是一种典型的空间域数据隐藏算法,L. F. Tumer 与R. G. Van Schyadel等先后利用此方法将特定的标记隐藏于数字音频和数字图像,该方法是利用原始数据的最低几位来隐藏信息(具体取多少位,以人的听觉或视觉系统无法察觉为原则) ,LSB 方法的优点是有较大的信息隐藏量,但采用此方法实现的数字水印是很脆弱的,无法经受一些无损和有损的信息处理,而且如果确切地知道水印隐藏在几位LSB 中,数字水印很容易被擦除或绕过【1】。
因为只是要求在信息传输过程中信息被破译的概率小于5%,所以LSB方法还是基本可以满足的。
我们通过程序可以进一步判断此方法的合理性,首先将需要加密的图片保存为
1.jpg,将载体图片保存为
2.jpg,运行程序W = imread('1.jpg');size(W) Z=imread('2.jpg');size(Z),可以得到ans =304 404 3 ans =436 292 3,计算可得需要加密的图像像素点有122816个,而载体图像像素点有127312个。如此之大的隐藏信息量,又为了确保安全性,可见必须舍弃精密度来保证信息量和保密性,从而LSB方法是较为合理的选择。
五、模型的求解
1.图片的信息化
由于LSB算法适合将数字信息进行插入保密,所以我们需要将需要被隐藏的图片数字信息话,并保存到文件中,这里可以利用Matlab中的imread函数迅速的将图片信息转化为数字信息,但是为了保证载体的安全性,又能保证密文的可加密和可解读性,imread函数显然不能独立完成信息化。
考虑到图片的载体一般为像素点,所以可以通过改变其像素点的值来进行加密,为了使其变化不被人眼所示,所以可以将变动限制为0和1。这里利用文件将图片信息转化为0、1可读的文本文件,从而将图片加密转化为密文加密,降低了加密的难度。
但是通过计算,如果将隐藏图片转化为0、1的二进制信号,则数据量暴增为11790336,远远超过了载体的像素点127312,为解决此问题,则要么增大载体,要么缩减数据量,这里由于密文实为图像,而图像具有可缩放的性质,于是采用缩减数据量的方法,具体实现函数见附录的%information.m。
2.信息的加密和解密
要将图片信息进行加密,首先要能够将一个数字信息量加密,对于用LSB的方法来加密,主要是在较小量的情况下改变图片的像素点,从而来判断其隐含信息。
这里利用Matlab程序ste_cover(f1, f2,f3) = ste_cover(f1, f2,f3) -
mod(ste_cover(f1, f2,f3),2) + msg(p, 1);来建立顺序的奇偶关系。我们都知道任意的数字信息都可以转化成0、1,那么要想加密数字信息,即是要加密0、1。用上述办法可以将需要加密的信息量转化为0、1并保存于顺序的像素点中,同时这样还不会明显的破坏图片信息,使人视觉上无法察觉。
在解密信息时同样用Matlab程序判断其加密像素点的奇偶,从而判断其原值是0
还是1。具体实现如下:
if mod(ste_cover(f1, f2,f3), 2) == 1
result(p, 1) = 1; fwrite(frr, result(p, 1), 'bit1');