数字水印

数字水印(Digital Watermark)是一种应用计算机算法嵌入载体文件的保护信息,数字水印技术是一种基于内容的、非密码机制的计算机信息隐藏技术,它是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改,但可以被生产方识别和辨认。

LSB是其中一种简单的隐写算法。

LSB简介

LSB全称为 Least Significant Bit(最低有效位),是一种常被用做图片隐写的算法。LSB是将信息嵌入到图像点中像素位的最低位,以保证嵌入的信息是不可见的。

概念性内容

像素和分辨率

如果将一幅图像放大,我们可以看到它是由一个个的小格子组成的,每个小格子就是一个色块。

如果我们用不同的数字来表示不同的颜色,图像就可以表示为一个由数字组成的矩阵(matrix),这样就可以在计算机中存储。

这个小格子就是像素(pixel),矩阵的行数与列数,就是分辨率(resolution)

我们常说某张图像的分辨率是1280*720,指的就是这张图像是由1280行,720列的像素组成。

RGB

PNG和BMP图片中的图像像素一般是由RGB(RED红 GREEN绿 BLUE蓝)三原色组成,每一种颜色占用8位,取值范围为0x00~0xFF(0—256)。即1677多万种颜色

RGB的值代表的实际上是亮度

数字越大,则代表颜色亮度越高;数字越小,则代表颜色亮度越低

而人类的眼睛可以区分约1000万种不同的颜色,人类眼睛无法区分的颜色还有600多万。

当仅仅更改颜色分量的最低两位时,人类的眼睛不能区分这前后的变化,LSB就是在该位置存放信息。

图像通道

RGB的亮度各有256个级别。即从0到255,合计为256个。从数字0到255的逐渐增高,我们人眼观察到的就是亮度越来越大,红色、绿色或蓝色越来越亮。

一个像素点由8个比特组成,每个比特的值为一个通道(Bit Plane),所以能看见下图的7~0,一共8个通道

整个图像分解为8个位平面,从LSB(最低有效位0)到MSB(最高有效位7)随着从位平面0到位平面7,位平面图像的特征逐渐变得复杂,细节不断增加。(一般我们的图片如果是RGB那么就是24位,3(R,G,B这三个)*8=24,如下图该png图片即为24位深度)

LSB原理总结_LSB

LSB原理总结_LSB_02

如果在第n个位平面上的一比特设定为1,而这位平面是在一个m-bit的数据集合上,那么该比特贡献的价值就是2(m-n),否则那就没有贡献值。因此位平面的贡献值是它撒谎能够一个位平面贡献值的一半。例如一个8-bit的数值10110101的位平面如下工作

LSB原理总结_数字水印_03

实现要求

首先来讲png图片,png图片是一种无损压缩的位图片形格式,也只有在无损压缩或者无压缩的图片(BMP)上才能实现lsb隐写。

如果图像是jpg图片的话,就没法使用lsb隐写了,原因是jpg图片对像数进行了有损压缩,我们修改的信息就可能会在压缩的过程中被破坏。

实现步骤

将图像文件中的所有像素点以RGB形式分隔开,并将各个颜色分量转换成二进制表示

信息嵌入:将水印字符转化为二进制字符串,并将这些信息依次填入颜色分量的最低位上,即可完成信息的嵌入

信息提取:将图像像素的最低位依次提取出来,并进行拼接转码,即可得到原始信息

如下图:

LSB原理总结_图片隐写_04

Stegsolve

选项介绍

File Format:文件格式

Data Extract:数据提取

Steregram Solve:立体试图 可以左右控制偏移

Frame Browser:帧浏览器

Image Combiner:拼图,图片拼接

Data Extract

1)Extract By(提取):分为row(行)和column(纵)

每个像素用R,G,B三个分量表示,那么一张图片就像一个矩阵,矩阵的每个单位就是(0255,0255,0~255)

也就会有是纵排列和行排列了,一般事先访问行再访问列(如果相反会引起ve使用方法)

2)Bit Order(位顺序):MSB是一串数据的最高位,LSB是一串数据的最低位。

3)Bit Plane Order(位平面的顺序):一般图片是24位,也就是3个8,如下图位深度。大家可以想像成三明治 比如RGB就是R为三明治第一层 G为第二层 B为第三层。