最近做隐写分析,一开始接触这一块就得从新开始overview,看得文章比较老,但都算比较经典,以此记录学习的过程。
Ref:KangL C, Pieprzyk J. Estimating Hidden Message Length in Binary ImageEmbedded by Using Boundary Pixels Steganography[C]// Ares '10International Conference on Availability, Reliability, and Security.IEEE, 2010:683-688.
隐写方法:检测思路:估计嵌入在二进制图像中的隐藏消息的长度。过程:首先从边界像素中得到512个图案直方图作为区分统计量,然后计算直方图的差异,确定嵌入操作引起的512个图案直方图的变化,最后是提出直方图商估计嵌入消息的长度。
第一部分.简介。主要介绍信息隐藏的意义应用等,同时隐写中的嵌入操作需要数字媒体,比如图像等,不同类型的隐写方法采用不同类型的图像,通常用到的三种图像分别是:彩色图像,灰度图,二值图像。
隐写术主要有两个方面:第一个涉及设计高效安全的信息隐藏方法,第二方面也称为隐写分析没尝试从媒介中发现隐藏的数据。
第二部分.边界像素隐写。边界像素隐写术沿着白色像素和黑色像素相遇的边缘隐藏消息,这些像素被称为边界像素。为了获得更高的不可察觉性,用于嵌入的像素的位置被置换分布在整个图像上,消息比特的分配由伪随机数发生器控制,其种子是由发送者和接收者隐藏的消息共享的秘密。由于信息位被嵌入在图像的边界像素上,所以重要的是明确地识别边界像素和它们的顺序。一旦给出边界像素的序列,则伪随机数生成器用于确定消息位应隐藏的位置。边界像素定义为具有不同强度的至少一个相邻像素的边界像素。同时会出现这样一种情况:一个位嵌入任意的边界像素可以将其转换为非边界像素。发证这种情况说明提取过程会发生错误,不可能恢复原来的信息,因此并不是所有边界像素都适和于携带消息位。这段话主要表达两个意思:什么是边界像素,边界像素携带信息有几率会发生什么错误情况?
因此本文作者提出两种条件增加对嵌入边界像素选择的限制:
1)在四个相邻像素中,存在至少两个未标记的相邻像素,并且他们必须为两个不同的像素值。2)对于每一个被标记的像素块中,其相邻每个像素块必须满足第一个标准。
第三部分.提出的方案。首先如何分辨图像是否为载体或者已经隐写过的图像。解决方案就是从给定的图像中提取一些有用的特征。通过测量图像中的凹凸和突起的数量来定义统计量,这个统计量反应图像的失真程度,接着定义与该统计量相关联的某个数值,最后通过这个数值与嵌入消息的大小成正比的关系来估算嵌入消息的长度。
A.512图案区分统计
对每一个边界像素,我们可以形成与其八个相邻像素的像素图案。统计每个像素图案出现的频率,具体公式参考文献。在这种模式下,观察到对于覆盖图像,存在一些高频频段以及一些低频频段,当进行嵌入操作后,图像直方图倾向于变平,因为嵌入期间,一些图像的像素被翻转以携带消息位,因此像素间相关性被扰乱并反应在图案变换中。
消息嵌入的越长,直方图就越平坦。从这个观察,我们建议计算直方图差异来捕捉512个图形直方图的“平坦度”。直方图差异是两个图像的512个图案直方图之间的二进制绝对差。第一个直方图来自给定的二进制图像,第二个直方图来自与最大长度(100%)的随机消息重新嵌入的相同图像。
用这种方法也会存在着缺陷,具体参考该论文
B.矩阵右分区
为了允许直方图差异有效地测量已经嵌入的消息的长度,我们建议使用矩阵右分割。矩阵右分割可以被认为是将直方图转换为数值(一维度量)。或者,矩阵右分割可以被看作是求解一个适当的线性方程组的尝试。矩阵右分割定义如下:(MATLAB)
IfA is a non-singular and square matrix and B is
arow vector, then x = B/A is the solution to the
systemof linear equations x × A = B computed
byGaussian elimination with partial pivoting.
Ifx × A = B is an overdetermined system of
linearequations, then x = B/A is the solution
inthe least squares sense of the overdetermined
system.
C.消息长度估计
第四部分.实验以及结果分析。