实验目的
理解图像原始快速匹配分析(Raw Quick Pair, RQP)[1]的原理,并采用其攻击彩色空域图像的最低比特位替换(LSBR)隐写算法。
原理说明
图像原始快速匹配分析能够有效检测基于彩色空域图像的 $LSBR$ 隐写算法,其原理如下。
对于彩色空域图像而言,一幅图像中出现的实际颜色数目为 $U$,而图像像素总数 $MN$ 代表中图像中可能出现的颜色数上限,定义 $\frac{U}{MN}$ 为颜色复杂度。由于空域隐写通常使得图像中出现的颜色数目 $U$ 增多,根据颜色复杂度特征,可以判断一幅图像是否隐写。 该方法具体计算过程如下:
- 计算相邻颜色对的归一化值。若两个颜色值 $(R_1,G_1,B_1)$ 和 $(R_2,G_2,B_2)$ 满足 $\mid R_1-R_2\mid \le1$ , $\mid G_1-G_2\mid \le1$, $\mid B_1-B_2\mid \le1$. 则称它们为相邻颜色对。对于待分析的彩色图像𝐼,设其所含相邻颜色对的数量为 $P$,对 $P$ 进行归一化 $Q=P/{n \choose 2}$ . 其中,$n \choose 2$代表该图像的所有颜色对组合数。一般使用 $LSB$ 空域隐写方法在图像中嵌入隐蔽信息会导致 $Q$ 值增加,当图像中已含有隐蔽信息时,再次嵌入新的隐蔽信息后 $Q$ 值的增量小于在不含隐蔽信息的图像中首次嵌入的情况。
- 进行基于 $RGB$ 分量的 $LSB$ 二次嵌入。首先,计算待分析图像的 $Q$ 值,记为 $Q_1$。接着,使用基于 $RGB$ 分量的 $LSBR$ 隐写算法在待测图像中嵌入 $3\alpha MN$ 比特的测试数据,其中,$MN$ 为图像的像素总数,$\alpha$ 代表嵌入率。计算二次嵌入后的隐写图像 $𝑄$ 值,记为$Q_2$。
- 计算二次嵌入前后 $Q$ 值比例值。计算二次嵌入前后 $Q$ 值的比例 $R=Q_2/Q_1$, 并与某个分析阈值 $T$ 进行比较。当 $R<T$ 时判定为有隐写,当 $R\ge T$ 时判定为未见隐写。
实验步骤
进行分析参数配置:设置 $RQP$ 分析的消息嵌入率,以及检测窗口的大小和位置;
进行 $RQP$ 分析:对于彩色空域图像的 $LSBR$ 隐写算法产生的载体和某种嵌入率的隐写样本,先随机选取其中的一部分图像计算 $RQP$ 分析值,并得到最佳判断阈值,再根据此阈值对剩余图像进行隐写分类判决,记录该嵌入率下的 $RQP$ 判断阈值和隐写分析的真阳性率、真阴性率和正确率。
说明:根据试验结果,当嵌入率在 $0.04$ 左右,width 和 height 为50时,未隐写的图片R值不为1,其它的载密图片得到的R值均为1。已经达到十分优异的区分效果,但是由于单一的阈值无法达到完全区分的效果,故实际试验采用SVM方法进行试验
实验要求
- 实验报告必须包含对 $RQP$ 的原理说明;
- 实验报告必须包含详细的实验步骤描述,并配有相应的截图;
- 实验报告必须详实记录 $RQP$ 的具体配置参数、每组隐写分析实验的训练集、测试集配置、判断阈值和分析结果;
- 最终上传的压缩包中,除实验报告外,还应包含:实验过程中所编写的所有源代码。
试验结果
试验设置
$R$ 值提取方式同 $RQP$ 方法,每张图片将提取两个特征值。每个嵌入位置如下所示,其中嵌入率设置每组配置不同,后续再进行说明。
var01 = struct('startX',1,'startY',1,'width',50,'height',50,'rate','xxx');
var02 = struct('startX',51,'startY',51,'width',50,'height',50,'rate','xxx');
共设置了六组分类试验,分别为:
- 第一大组: (LSBR000-LSBR100),(LSBR000-LSBR300),(LSBR000-LSBR500)
- 第二大组: (LSBR100-LSBR300),(LSBR100-LSBR500)
- 第三大组: (LSBR300-LSBR500)
每组试验共200对图片,各类别一张图片。实验时随机选用150对作为训练集,剩下50对作为测试集。
SVM分类器采用高斯核,具体参数配置如下:
SVM_Model = fitcsvm(data(1:train_num,:), label(1:train_num), 'Standardize',true,...
'KernelFunction','rbf',KernelScale='auto');
结果
- LSBR000-LSBR100(rate1=0,rate1=0.1)
- LSBR100-LSBR300(rate1=0.1,rate1=0.3)
- LSBR100-LSBR500(rate1=0.1,rate2=0.5)
- LSBR300-LSBR500(rate1=0.3,rate2=0.5)
LSBR000-LSBR300 和 LSBR000-LSBR500与LSBR000-LSBR100情况完全相同,故在此不进行展示。
由试验结果可发现,通过使用SVM进行分类比简单的使用阈值分类(在一般情况下,相对于别的同学的试验)能够达到更好的效果。
所有试验的真阳性率、真阴性率和正确率:
\[TP=FP=ACC=1\]且通过两两分类,最终能够完美的达到四分类的效果。
实验提示
- samples.rar 包含本次实验所需的全部样本,其中共有 4 个文件夹,文件 夹命名格式为“BOSS_LSBR_EmbedRate”EmbedRate 代表嵌入率,例如,文件夹“BOSS_LSBR_300”包含的是采用彩色空域图像的 $LSBR$ 隐写算法,在 0.3bpp 的嵌入率下制备的隐写样本;
- $RQP$ 分析的 matlab 函数接口为 R = analysis(imgPath, var),其中,imgPath 表示待分析图像的路径,var 代表配置数,其为结构体变量,成员包括 rate,width,height,startX,startY,它们依次表示:对待测图像进行二次嵌入的嵌入率(该值一般很小,建议取值区间为[0.01, 0.05]),检测窗口的宽度、高度(不宜过大,否则影响算法执行时间,一般小于 100 像素),检测窗口在图像中的水平、垂直偏移(以像素为单位)。