灰度图像隐写分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
'exp1_ encode _ multi.m ' 、 ' stego exp eriment1_1.m '
在 matlab 命令行中输入: exp1_ encode _ multi ( ratio) ,其中的 ratio 表示嵌入率, 比如我们选择 0.4,然后回车,程序运行,如下图所示:
RM S M , R M S M ;
2. 如果图像是经过了 LSB 替换隐写的,那么应用非负翻转和非正翻转之后的结果就会 有明显差别,即有 R M S M RM S M 成立。 在本实验中,在分别得到两种翻转后,正则块与奇异块的数量后,计算 ,即如果计 R M S M RM SM 的值,并设置一个阈值(实验中设置的阈值为 1000) 算出的结果小于 1000,那么,就判断此图像是未经过隐写的,如果大于 1000,则判断此图 像是经过了隐写的。 三.实验结果 (此部分我将用图示展示) 1. 连续 LSB 替换隐写的实现: 代码包中,此部分用到的函数为
1 1 0 1 1 0 0 1 0 0
原始载体图像( 8 8 )
消息矩阵
中国科学技术大学电子工程与信息科学系——信息安全专业
实验报告——灰度图像隐写分析
5
嵌入了消息后的载密图像
4. RS 检测 RS 检测是基于隐写前后图像平滑度的变化来检测秘密信息的。具体方法如下: 首先,我们定义几个概念: 假设一幅载体图像的像素个数为 n 个,其像素值在一个集合 P 内(对于本实验, 。用 G x1 , x2 , , xn 来表示像素组,用函数 f x1 , x2 , , xn 来描述 P 0,1, , 255 ) 其平滑度,定义为:
1 , 那么, 可以统计图像中不同灰度值的直方图 (比如灰度值为 j 的像素个数为 h j , 2
中国科学技术大学电子工程与信息科学系——信息安全专业
实验报告——灰度图像隐写分析
3
即此灰度值的直方图大小为 h j ) ,那么,如果秘密信息完全替换了载体图像像素的最低位, 则 h2i 与 h2i 1 的值会比较接近,即便没有完全替换,两者的值也会有一定的相等性,而如果 图像未经信息的嵌入, h2i 与 h2i 1 的值相差的会大些。 基于以上对问题的讨论,根据概率论中的定理,定义统计量 r :
8
户 选 择 的 .txt 文 件 为 空 , 那 么 程 序 中 默 认 嵌 入 率 为 0.4 。 之 后 , 又 会 出 现 如 下 框 图 :
这步要选择一个初始位置,以便于消息的嵌入会从此位置开始。默认位置为 (1,1) 。 程序运行结束后,会显示:
然后可在新生成的 stego 文件夹中看到以’ stego _ ’开头, 后面是原载体图像名字的载密 图像。 以上是实现用户选择单一图像进行连续 LSB 替换隐写。除此之外,也可以实现批量的操 作。所用到的函数为
r
i 1
k
* 2 (h2i h2 i) ~ k21 * h2i
(1)
其中 h2i
*
即, r 服从自由度为 k 1 的卡方分布。 之后,结合卡方分布的密度函数,设 P 是 h2i 与 h2i 1 相等的概率,则有:
h2i h2i 1 2
P 1 2
1
k 1 2
k 1 2
79 79 78 81
78 77 79 76
78 78 80 75
77 76 78 75
图示 1
隐 写
79 79 78 81
78 76 79 76
78 78 80 75
77 77 79 74
连续 LSB 隐写
由上图可以看出连续 LSB 隐写的大致过程。在此不过分赘述。 2. 卡方检测 卡方检测是专门针对连续 LSB 替换而产生的一种隐写分析方法。 连续 LSB 隐写的最大问 题是“值对效应” ,即当用消息比特改变图像像素最低比特位时,像素值之间的翻转总是这 样的: 2i 2i 1 。而嵌入的消息,我们可以看作是随机的 0 1 比特流,而且 0 与 1 出现的 概率都为
F1 或 F0 ) ,然后计算每个块原始与翻转后的平滑度。用 RM 表示翻转作用后正则图像块在所
有图像块中所占的比例;用 S M 表示翻转作用后奇异图像块在所有图像块中所占的比例。类 似地,应用非正翻转(随机用 F1 或 F0 )后,可定义相应的 R M 与 S M 。 那么,如何判断图像是否经过了隐写呢?它是基于以下事实的: 1. 如果图像没有经过 LSB 替换隐写,那么无论应用非负翻转还是非正翻转,从统计规 律来看,会同等地增加图像块的混乱程度,也就是说, RM R M , S M S M ,并且有
7
注意用红线画出的,它可以提示用户选择什么。可以选择 cov er 文件夹中的图像,选 择后单击 Open ,之后又会出现如下框图:
选择一个 .txt 文件去得到想要的嵌入率 payload ,在 payloads 文件夹中选择。如果用
中国科学技术大学电子工程与信息科学系——信息安全专业
实验报告——灰度图像隐写分析
实验报告——灰度图像隐写分析
2
一.实验内容
简介:本次实验,共分两个实验。第一个是实现图像的连续 LSB 替换,即在载体图像中 一块连续的区域进行 LSB 隐写嵌入, 而采用的方法就是简单的替换——用消息比特来替换图 像像素最低比特位(即 LSB 位) 。此部分,我实现了能让用户自己选择图像进行嵌入以及能 进行图像的批量嵌入这两种方式。 第一个实验的另一部分是隐写分析, 利用卡方检测进行隐 写分析,自然图像具有某种统计特性,进行了连续 LSB 替换后的图像会打破这种统计特性, 卡方检测就是利用了这种统计特性而产生的隐写分析方法(后面详述) ;第二个实验是随机 LSB 替换,它与连续 LSB 替换不同的是,它不在载体图像中一块连续的区域进行 LSB 隐写嵌 入,而是根据某种方法生成一系列的随机数,利用这些随机数,对应到载体图像中的每个像 素点进行隐写嵌入, 它种方法较连续 LSB 替换隐写的优点是它修改的像素点是随机分布在载 体图像中的,那么较前者就更难以察觉,安全性更高。在此部分,我同样实现了两种方式, 即用户自己选择某一幅图像进行嵌入和批量对指定文件夹中的图像进行嵌入。 不同的是, 在 用户可自己选择这一种方式下,我没有采用模拟,而是实际嵌入,即用户可以指定一段想隐 藏的消息嵌入指定的图像中, 然后可以用另一程序将其恢复出来, 我这样做的原因是觉得这 样会更实用一些。在第二个实验的第二部分是针对随机 LSB 替换的隐写分析方法——RS 检 测,它是基于隐写前后图像平滑度的变化来检测秘密信息的。 二.实验所用理论与方法 1. 连续 LSB 替换 LSB 替换是一种很古老的隐写术,它是将秘密消息比特位替换指定图像像素值的最低比 特位来实现的。而连续 LSB 替换就是此种替换发现在图像中一块连续的区域。 灰度图像在计算机中是以 0~255 这 256 个数值存储的, 一段 0 1 比特的消息, 经连续 LSB 替换是如下图所示的形式: 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0
F (G ) 的平滑度: f G 和 f F G ;若:
I. 若 f F G f G ,则称 G 是正则的;
中国科学技术大学电子工程与信息科学系——信息安全专业
实验报告——灰度图像隐写分析
6
II. 若 f F G f G ,则称 G 是奇异的; III. 若 f F G f G ,则称 G 是不变的。 基于以上讨论,在实验中,RS 检测是这样进行的:首先将一幅图像分成大小相等的像 素块(在本实验中,我分的像素块的尺寸为: 4 4 ) ,对每个小块先应用非负翻转(随机用
18 10 10
(3)
中国科学技术大学电子工程与信息科学系——信息安全专业
实验报告——灰度图像隐写分析
4
否则,随机序列一直处于单调递增的趋势,安全性不高) ; ii. 选择 97,是因为它是一个素数,在(3)式中,与 K i 1 相乘的数必须与 2 互素,否 则会产生对不同的 i 与 j ,有可能有 K i K j ,这样,嵌入消息时,会产生覆盖,之后就不 能正确解密了。注意到这一点,此位置的数可以有多种选择,只要与 2 互素就可以了。 (在“中期检查报告”中,已经证明过对任意 i 、 j i j ,都有 K i K j ,这里就不再赘 述了) 那么, 在本次实验中, 随机 LSB 替换我是如何做的呢?以下的图示可以清晰的表示出来: (以一个 8 8 大小的图像为例,而实际在实验中所用到的图像均为 512 512 的。消息长度 假设为 10) 用户需要在 1 ~ 64 之间选择一个整数作为初始的密钥值, 假设用户选择了 7 , 即:Key 7 , 那么由下述伪代码:
' first \ part1\ exp1_ encode.m ' 、 ' first \ part1\ stego exp eriment1_1.m '
当用户打开 matlab ,并在命令行中输入 exp1_ encode 时,会出现以下框图:
中国科学技术大学电子工程与信息科学系——信息安全专业
实验报告——灰度图像隐写分析
f x1 , x2 , , xn xi 1 xi
i 1
n 1
(5)
其次,定义翻转函数:
F1 : 0 1, 2 3, , 254 255
用函数表示即为:
F1 ( x) x 1 2 ( x mod 2)
并且易知,本实验中用到的 LSB 翻转 FLSB ( x) F1 ( x) 。 然后,定义其对偶函数,叫做移位 LSB 翻转函数:
18 18
for (i 2 to 10) K i mod(13 K i 1 , 64)
end
(4)
(注: (4)式只是为了说明此问题,实际在代码中所用的式子为上面的(3)式) 那么生成的随机序列为:
Key : 7 27 31 19 55 11 15 3 39 59
假设消息为
message : 0 1 1 0 0 1 0 1 0 1
2 xk 1
0
e x
wenku.baidu.com
x 2
k 1 1 2
dx
(2)
在程序中,不可能用代码去写(2)式,而是调用 matlab 中自带的函数 chi2cdf,调用方 法是:p(j) = 1 - chi2cdf(r,127); 然后将 j 加 1,再循环此过程,直到将 p 都计算出来。 具体判断时,如果对某些 j,有 p(j)约为 1,那么,此图像是经过了隐写,而如果对所有 的 j,p(j)都近似为 0,那么此图像就是一幅未经隐写的自然图像。 3. 随机 LSB 替换 随机 LSB 替换中一个重要的问题是生成随机嵌入序列问题, 即要找到一个好的方式生成 互不相同的随机,并且其范围应该在 1 到图像像素个数之间,这样才能保证正确的隐写,不 会溢出也不会产生覆盖。 在此部分中,我选择了一个数论中用到的方法来产生随机序列: (注:默认图像大小为 512 512 ,即图像中的像素总个数为 2 个)
18
K 是随机序列,其长度等于消息的长度,接下来,有:
K1 Key ,其中 Key 为初始密钥值,由用户选择输入; for (i 2 to length(message))
K i mod(210 97 K i 1 , 218 )
end
在上面的伪代码中, (3)式中的 2 与 97 的选择是基于以下情况考虑: i. 如果用户输入的数字过小 (比如 100 以内) ,2 的作用是使生成的随机序列能快速的 增加以至于有周期的作用,即到某一个随机数后,后一个数比前一个数小(由于模了 2 ,
(6)
F1 : 1 0,1 2,3 4, , 253 254, 255 256
用函数表示即为:
F1 ( x) F1 ( x 1) 1
同时,为了完整性,我们定义自身置换 F0 :
(7)
F0 ( x) x
(8)
对于像素组 G 来说,当将三种翻转函数 F 作用于 G 后,得到 F (G ) ,并分别计算 G 与