信息隐藏 实验十一 LSB信息隐藏的RS分析 - 图文

更新时间:2023-03-09 21:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

LSB信息隐藏的RS分析

一,

实验目的:

了解RS隐写分析的原理,掌握一种图像LSB隐写算法的分析方法,设计并实现一种基于图像的LSB隐写的RS隐写分析算法。 二,

实验环境

(1)Windows 7操作系统; (2)MATLAB R2012b版本软件; (3)图像文件lena.bmp; (4)S-Tools工具; 三,

实验原理

1. RS隐写分析原理

RS主要是针对采用伪随机LSB嵌入算法进行攻击的一种方法。RS方法不但能检测出图像是否隐藏信息,而且还能比较准确地估算出隐藏的信息长度。

RS隐写分析算法考虑图像各个位平面之间具有一定的非线性相关性,当利用LSB隐写算法隐藏秘密信息后,这种相关性就会破坏。只要能找出衡量这一相关性的方法,并对隐藏秘密信息前后的情况加以对比,就有可能设计出隐写分析方法。

RS隐写分析方法的理论核心是:任何经过LSB隐写的图像,其最低比特位分布满足随机性,即0、1的取值概率均为1/2,而未经过隐写的图像不存在此特性。对于一个M?N像素的图片,设各个像素的值取自集合P,例如一个8bit的灰度图像,P?{0,1,2,?,255}。将这些像素分为有着n个相邻像素的子集,例如n可以取值为4,记为G?(x1,x2,x3,x4)。进一步利用如下函数表示图像块的空间相关性,即

f(x1,x2,x3,?,xn)??xi?1?xii?1n?1 (1)

函数f使得每一个集合G都对应一个实数。G中的噪声越大,函数f的值越大。f的值越小,说明图像相邻像素之间的起伏越小,而图像块的空间相关性越强。然后,定义集合P上的3个函数:

(1)交换函数F1:2n?2n?1,0?1,2?3,?,254?255。 (2)偏移函数F?1:2n?2n?1,?1?0,1?2,?,255?256。 (3)恒等变换F0:F0(x)?x,x?P。

复杂度分辨函数f和三种变换函数F定义以下三种类型的元素组R,S,U。 (1)Regular G:G?R?f(F(G))?f(G),也就是说对G中的元素进行 变换之后增大了元素之间的差别程度,R表示正则组。

(2)Singular G:G?S?f(F(G))?f(G),也就是说对G中的元素进行 变换之后减小了元素之间的差别程度,S表示奇异组。

(3)Unusable G:G?U?f(F(G))?f(G),也就是对G中的元素进行变

换之后元素之间的差别程度不变,G表示无用组。

引入伪装M,它的取值范围是-1、0、1。对应着F?1、F0、F1三个变换函数。记对于伪装M的R组的数量为RM,类似的S组记为SM。例如G=(27,28,26,25),M=(1,0,1,0),则-M=(-1,0,-1,0)。于是就得到FM(G)=(26,28,27,25),F?M(G)=(28,28,25,25)。

对于一个原始不包含隐藏信息的载体来说具有下面的规律:

RM?R?M?SM?S?M?S?M?RM?SM (2)

但是当在载体中嵌入了秘密信息,就会有下面的式子成立: R?M (3)

也就是说对于一个待检测的载体,只需要得到上述的统计量,然后通过对比这四个统计参数之间的大小关系就能够判断出载体中是否含有秘密信息。

RS算法不但能够判断载体是否含有秘密信息,RS隐写分析算法还能够估计出隐写容量。上面算出的一组RM、SM、R?M、S?M是在比例为p/2(p为隐写率)的样点值已经作了一次F1变换情况下得到的。将该隐写体的所有样点值应用

F1变换,相对于原始载体则有比例为(1-p/2)的样点值作了F1变换,计算此时的RM、SM、R?M、S?M值。如下图1所示,得到的是两组统计量的数据。

图 1 RS曲线与像素更改比率间的关系示意图

具体步骤如下:

将待检测图像分成若干大小相等的图像块,通常定义n = 4,对每个小图像块定义一个掩膜算法函数,通常为M(0,1,1,0),即判断此图像小块属于Regular或Singular,FM(G)?(F0(x1),F1(x2),F1(x3),F0(x4)),

遍历整幅图像,得到RM(p/2),SM(p/2)。RM(p/2),SM(p/2)定义为:

RM(p/2)?RM (4)

bufsize/4SM SM(p/2)? (5)

bufsize/4改变掩膜算法函数,令M为(0,-1,-1,0)重复上一步操作得到R?M(p/2)和S?M(p/2)。

将图像数据的lSB位取反,用获得的数据重复上述操作得到RM(1?p/2),

SM(1?p/2)以及R?M(1?p/2),S?M(1?p/2)。

结合如下方程:

2(d1?d0)x其中:

2?d?0?d?1?3d0x?d0?d?1?0(6)

d0?RM(p/2)?SM(p/2),d1?RM(1?p/2)?SM(1?p/2)d?0?R?M(p/2)?S?M(p/2),d?1?R?M(1?p/2)?S?M(1?p/2)

解方程式(6),取绝对值较小的x,计算嵌入概率p为:p?x/(x?1/2)。 2. S-Tools工具简介

S-Tools是一个时(空)域数字水印软件,支持WAV格式的音频文件、GIF和BMP格式的图像文件,下面介绍基于音频文件的隐藏原理和使用方法。

WAV格式的音频文件在Windows中存储为8位或16位值,对于8位样本,这意味着取值范围介于0和255之间。16位的样本取值范围介于0和65535之间。S-Tools在WAV格式的音频文件中隐藏信息时,首先用密码加密,然后根据密码决定要嵌入信息的位置,采用LSB(least significant bits)方法,把秘密信息代替载体音频文件的最不重要比特位。

例如,假设一个音频文件有以下8个字节的信息,分别为 132 134 137 141 121 101 74 38 二进制表示为

10000100 10000110 10001001 10001101 01100101 01001010 00100110

如果要隐藏二进制字节11010101(213)在这个序列里。简单地取代了音频文件的LSB(最低有效位)进行信息隐藏。因此上述顺序将变更为

133 135 136 141 120 101 74 39 用二进制表示为

10000101 10000111 10001000 10001101 01111000 01001010 00100111

这样,秘密信息就隐藏在载体音频文件中,音频文件在听觉效果上和原始文件几乎没有区别。

四, 实验分析 1. 隐藏信息并分析

源代码RS.m如下:

clc,clear all

org = imread('lena.bmp'); org = double(org); org = org(:)';

[row sample_len] = size(org); rs = zeros(2, 4); cor = zeros(1, 3); m = floor(sample_len / 4); M = randsrc(4, 1, [0 1]); tmp = zeros(4, 1);

% 使用LSB,准备待检测图像,隐写率为40% msg_len = floor(sample_len * 0.4); msg = randsrc(msg_len, 1, [0 1; 0.5 0.5]); stg =org; for i = 1 : msg_len

stg(i) = bitset(stg(i), 1, msg(i)); end

% 对待检测图像应用非负和非正翻转,统计翻转前后的空间相关性 i = 1; for j = 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)); if cor(2) > cor(1) % Rm

rs(i, 1) = rs(i, 1) + 1; end

if cor(2) < cor(1) % Sm rs(i, 2) = rs(i, 2) + 1;

end

if cor(3) > cor(1) % R-m rs(i, 3) = rs(i, 3) + 1; end

if cor(3) < cor(1) % S-m rs(i, 4) = rs(i, 4) + 1; end end

% 对待检测图像所有像素应用正翻转 stg = fpos(stg, ones(sample_len, 1));

% 对待检测图像应用非负和非正翻转,统计翻转前后的空间相关性 i = 2; for j = 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)); if cor(2) > cor(1) % Rm

rs(i, 1) = rs(i, 1) + 1; end;

if cor(2) < cor(1) % Sm rs(i, 2) = rs(i, 2) + 1; end;

if cor(3) > cor(1) % R-m rs(i, 3) = rs(i, 3) + 1; end;

if cor(3) < cor(1) % S-m rs(i, 4) = rs(i, 4) + 1;

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%

if dnz > 0 && dpo > 0 %用于判断Rm是否大于Sm,R-m是否大于S-m disp('待检测图像lena.bmp中没有经过LSB替换隐写!'); end

if dnz - dpo > P %用于判定R-m - S-m > Rm - Sm disp('待检测图像lena.bmp经过LSB替换隐写!'); end

% get roots of polynomial

C = [2 * (dpo + dpz), (dnz - dno - dpo - 3 * dpz), (dpz - dnz)]; z = roots(C); p = z ./ (z - 0.5);

fprintf(1, 'Fridrih Algorithm:expective embedding rate is %f\\n', p(2));

运行上述代码,得到隐写率p为0.476476。由于模板M是随机产生的,对此可以采取多次执行代码,依据所得结果计算平均隐写率。具体结果如下表1所示。

判定待检测图像

是否经过LSB替换隐写

图 7 代码执行结果

表 1 多次执行代码后的隐写率估算值与误差分析

执行 次数 1 2 3 4 5 6 初始设定 隐写率p值 0.4 0.4 0.4 0.4 0.4 0.4 隐写率p 估算值 0.476476 0.495983 0.443685 0.502263 0.472975 0.483857 相对误差(%) 19.12 24.00 10.92 25.57 18.24 20.96 19.80 0.479207 平均误差(%) 平均隐写率p 依据表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方法得到的隐写率估算值与误差分析

初始设定隐写率p值 0.03 0.05 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.00 隐写率p估算值 0.040786 0.067405 0.107802 0.217188 0.359715 0.476476 0.521529 0.599674 0.715560 0.702172 0.811252 0.996865 相 对误差(%) 35.95 34.81 7.80 8.59 19.91 19.12 4.31 -0.05 2.22 -12.23 -9.86 -0.31 9.19 平均误差(%) 2. 利用S-Tools工具在原始载体中隐藏秘密信息

隐藏的秘密信息文件为hidden.txt,载体图像为Lena.bmp。

(1)把载体图像拖入S-Tools界面,并隐藏秘密信息(图9所示)。

图 9 利用S-Tools工具隐藏秘密信息

(2)隐藏后,出现原始图片(图10示)和携密图像(图11示),将携密图像另存为Lenahidden.bmp。

图 10 原始图片 图 11 携密图片

由上图10与图11,可以发现:利用S-Tools工具在载体图像文件中加载隐秘信息后,携密图片在视觉上和原始图片几乎无差别。

通过查看携密图片文件信息,将隐秘信息提出出来,保存为LenaHidden.txt,利用

UltraCompare工具比较隐秘信息文件hidden.txt和提取的含有隐秘信息的文件LenaHidden.txt,所得结果如下图12所示。

表明两个文件相同,无差异

图 12 原始隐秘信息文件与提取的含有隐秘信息文件的比较

3. 利用上述算法估计隐写率

源代码RS1.m如下: clc,clear all;

org=imread('lenahidden.bmp'); org=double(org); org=org(:)';

[row sample_len]=size(org); stg =org; rs = zeros(2, 4); cor = zeros(1, 3); m = floor(sample_len / 4); M = randsrc(4, 1, [0 1]); tmp = zeros(4, 1);

% 对待检测图像应用非负和非正翻转,统计翻转前后的空间相关性 i = 1;

for j = 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)); if cor(2) > cor(1) % Rm

rs(i, 1) = rs(i, 1) + 1; end;

if cor(2) < cor(1) % Sm rs(i, 2) = rs(i, 2) + 1; end;

if cor(3) > cor(1) % R-m rs(i, 3) = rs(i, 3) + 1; end;

if cor(3) < cor(1) % S-m rs(i, 4) = rs(i, 4) + 1; end; end;

% 对待检测图像所有像素应用正翻转 stg = fpos(stg, ones(sample_len, 1));

% 对待检测图像应用非负和非正翻转,统计翻转前后的空间相关性 i = 2; for j = 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)); if cor(2) > cor(1) % Rm

rs(i, 1) = rs(i, 1) + 1;

end;

if cor(2) < cor(1) % Sm rs(i, 2) = rs(i, 2) + 1; end;

if cor(3) > cor(1) % R-m rs(i, 3) = rs(i, 3) + 1; end;

if cor(3) < cor(1) % S-m rs(i, 4) = rs(i, 4) + 1; end; end; rs = rs / m; % J. Fridrih方法

% 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%

if dnz > 0 && dpo > 0 %用于判断Rm是否大于Sm,R-m是否大于S-m disp('待检测图像lenahidden.bmp中没有经过LSB替换隐写!'); end

判断待检测图像if dnz - dpo > P %用于判定R-m - S-m > Rm - Sm 是否经过LSB替换隐 disp('待检测图像lenahidden.bmp经过LSB替换隐写!'); 写 end

% get roots of polynomial

C = [2 * (dpo + dpz), (dnz - dno - dpo - 3 * dpz), (dpz - dnz)]; z = roots(C); p = z ./ (z - 0.5);

fprintf(1, 'Fridrih Algorithm:expective embedding rate is %f\\n', p(2));

运行上述代码,可以得到载体图像lenahidden.bmp的隐写率为0.048006。

图 13 代码执行结果

为降低模板M的随机性对检测结果的影响,本次实验采取多次执行代码,计算隐写率的平均值并将此作为RS方法的分析结果。

表 3 多次执行代码后的隐写率估算值与误差分析

执行次数 1 2 3 4 5 6 7 8 9 10 隐写率p估算值 0.048006 0.037661 0.048006 0.049173 0.061232 0.054336 0.049748 0.049173 0.045173 0.049173

五,

实验结果

平均隐写率p 0.049168 完成实验之后,可以得出如下结论:

1. RS隐写分析算法可以用来分析在LSB位嵌入隐秘信息的图像文件,判断图像中是否嵌入了隐秘信息,并可据此计算图像文件的隐写率。

2. 利用S-Tools工具可以很方便地在WAV格式的音频文件、BMP格式和GIF格式的图像文件中加载隐秘信息,并可通过查看携密图片的文件信息,提取出所加载的隐秘信息。

本文来源:https://www.bwwdw.com/article/nx8a.html

Top