信息隐藏实验十一LSB信息隐藏的RS分析文档格式.docx
《信息隐藏实验十一LSB信息隐藏的RS分析文档格式.docx》由会员分享,可在线阅读,更多相关《信息隐藏实验十一LSB信息隐藏的RS分析文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
函数使得每一个集合都对应一个实数。
中的噪声越大,函数的值越大。
的值越小,说明图像相邻像素之间的起伏越小,而图像块的空间相关性越强。
然后,定义集合上的3个函数:
(1)交换函数:
。
(2)偏移函数:
(3)恒等变换:
复杂度分辨函数和三种变换函数定义以下三种类型的元素组。
(1)Regular:
,也就是说对中的元素进行
变换之后增大了元素之间的差别程度,表示正则组。
(2)Singular:
变换之后减小了元素之间的差别程度,表示奇异组。
(3)Unusable:
,也就是对中的元素进行变
换之后元素之间的差别程度不变,表示无用组。
引入伪装,它的取值范围是-1、0、1。
对应着、、三个变换函数。
记对于伪装的组的数量为,类似的组记为。
例如=(27,28,26,25),=(1,0,1,0),则-=(-1,0,-1,0)。
于是就得到=(26,28,27,25),=(28,28,25,25)。
对于一个原始不包含隐藏信息的载体来说具有下面的规律:
(2)
但是当在载体中嵌入了秘密信息,就会有下面的式子成立:
(3)
也就是说对于一个待检测的载体,只需要得到上述的统计量,然后通过对比这四个统计参数之间的大小关系就能够判断出载体中是否含有秘密信息。
RS算法不但能够判断载体是否含有秘密信息,RS隐写分析算法还能够估计出隐写容量。
上面算出的一组、、、是在比例为(为隐写率)的样点值已经作了一次变换情况下得到的。
将该隐写体的所有样点值应用变换,相对于原始载体则有比例为(1-)的样点值作了变换,计算此时的、、、值。
如下图1所示,得到的是两组统计量的数据。
图1RS曲线与像素更改比率间的关系示意图
具体步骤如下:
将待检测图像分成若干大小相等的图像块,通常定义=4,对每个小图像块定义一个掩膜算法函数,通常为(0,1,1,0),即,判断此图像小块属于Regular或Singular,遍历整幅图像,得到,。
,定义为:
(4)
(5)
改变掩膜算法函数,令为(0,-1,-1,0)重复上一步操作得到和。
将图像数据的lSB位取反,用获得的数据重复上述操作得到,以及,。
结合如下方程:
(6)
其中:
解方程式(6),取绝对值较小的,计算嵌入概率为:
2.S-Tools工具简介
S-Tools是一个时(空)域数字水印软件,支持WAV格式的音频文件、GIF和BMP格式的图像文件,下面介绍基于音频文件的隐藏原理和使用方法。
WAV格式的音频文件在Windows中存储为8位或16位值,对于8位样本,这意味着取值范围介于0和255之间。
16位的样本取值范围介于0和65535之间。
S-Tools在WAV格式的音频文件中隐藏信息时,首先用密码加密,然后根据密码决定要嵌入信息的位置,采用LSB(leastsignificantbits)方法,把秘密信息代替载体音频文件的最不重要比特位。
例如,假设一个音频文件有以下8个字节的信息,分别为
1321341371411211017438
二进制表示为
10000100100001101000100110001101011001010100101000100110
如果要隐藏二进制字节11010101(213)在这个序列里。
简单地取代了音频文件的LSB(最低有效位)进行信息隐藏。
因此上述顺序将变更为
1331351361411201017439
用二进制表示为
10000101100001111000100010001101011110000100101000100111
这样,秘密信息就隐藏在载体音频文件中,音频文件在听觉效果上和原始文件几乎没有区别。
四,实验分析
1.隐藏信息并分析
源代码RS.m如下:
clc,clearall
org=imread('
lena.bmp'
);
org=double(org);
org=org(:
)'
;
[rowsample_len]=size(org);
rs=zeros(2,4);
cor=zeros(1,3);
m=floor(sample_len/4);
M=randsrc(4,1,[01]);
tmp=zeros(4,1);
%使用LSB,准备待检测图像,隐写率为40%
msg_len=floor(sample_len*0.4);
msg=randsrc(msg_len,1,[01;
0.50.5]);
stg=org;
fori=1:
msg_len
stg(i)=bitset(stg(i),1,msg(i));
end
%对待检测图像应用非负和非正翻转,统计翻转前后的空间相关性
i=1;
forj=1:
m
tmp=stg((j-1)*4+1:
j*4);
%把图像分为四个像素一组
cor
(1)=SpaceCor(tmp);
cor
(2)=SpaceCor(fpos(tmp,M));
cor(3)=SpaceCor(fneg(tmp,M));
ifcor
(2)>
cor
(1)
%Rm
rs(i,1)=rs(i,1)+1;
end
ifcor
(2)<
%Sm
rs(i,2)=rs(i,2)+1;
ifcor(3)>
%R-m
rs(i,3)=rs(i,3)+1;
ifcor(3)<
%S-m
rs(i,4)=rs(i,4)+1;
%对待检测图像所有像素应用正翻转
stg=fpos(stg,ones(sample_len,1));
i=2;
end;
end;
rs=rs/m;
%J.Fridrih方法计算隐写率,并判断待检测图像lena.bmp是否经过LSB替换隐写
%d0=Rm(p/2)-Sm(p/2),d1=Rm(1-p/2)-Sm(1-p/2)
dpz=rs(1,1)-rs(1,2);
dpo=rs(2,1)-rs(2,2);
%d-0=R-m(p/2)-S-m(p/2),d-1=R-m(1-p/2)-S-m(1-p/2)
dnz=rs(1,3)-rs(1,4);
dno=rs(2,3)-rs(2,4);
%判定待检测图像lena.bmp是否经过LSB替换隐写
P=2.5*1e-2;
%设定门限值,对于RS分析一般为2%-3%
ifdnz>
0&
&
dpo>
0%用于判断Rm是否大于Sm,R-m是否大于S-m
disp('
待检测图像lena.bmp中没有经过LSB替换隐写!
'
ifdnz-dpo>
P%用于判定R-m-S-m>
Rm-Sm
待检测图像lena.bmp经过LSB替换隐写!
%getrootsofpolynomial
C=[2*(dpo+dpz),(dnz-dno-dpo-3*dpz),(dpz-dnz)];
z=roots(C);
p=z./(z-0.5);
fprintf(1,'
FridrihAlgorithm:
expectiveembeddingrateis%f\n'
p
(2));
运行上述代码,得到隐写率为0.476476。
由于模板是随机产生的,对此可以采取多次执行代码,依据所得结果计算平均隐写率。
具体结果如下表1所示。
图7代码执行结果
表1多次执行代码后的隐写率估算值与误差分析
执行
次数
初始设定
隐写率值
隐写率
估算值
相对误差(%)
平均误差(%)
平均隐写率
1
0.4
0.476476
19.12
19.80
0.479207
2
0.495983
24.00
3
0.443685
10.92
4
0.502263
25.57
5
0.472975
18.24
6
0.483857
20.96
依据表1所示结果,可以发现:
经过多次执行代码后,运用RS分析方法对载体隐写率进行估算的平均误差约为19.80%,即估算正确率为80.20%,近似达到了估算准确度要求。
这也就表明RS方法在分析低隐写率的载体图像时,其检测误差较大,所得结果的可靠性较低。
为进一步研究RS分析方法能否比较正确地判断载体是否进行LSB替换隐写,在实验中继续修改原设定的隐写率(分别设定隐写率为3%、5%、10%、20%、30%、40%、50%、60%、70%、80%、90%、100%),分析不同设定隐写率下利用RS方法所估算的载体嵌入率误差,所得结果如下表2、图8所示。
表2不同设定隐写率下利用RS方法得到的隐写率估算值与误差分析
初始设定隐写率值
隐写率估算值
相
对误差(%)
0.03
0.040786
35.95