LSB通道
LSB(最低有效位)通道,一种将秘密信息隐藏到数字图像(最常见的是位图BMP或PNG)中的方法,其原理是修改像素颜色值中“最不重要”的比特位,从而嵌入信息,同时使人眼几乎察觉不到图像的改变。
解题:Stegsolve
1. 像素是如何表示颜色的?
一张数字图像由成千上万个像素(Pixel) 组成。每个像素的颜色通常由几种通道(Channels) 混合而成,最常见的是红(R)、绿(G)、蓝(B) 三个通道。
每个通道的强度通常用一个 8比特(bit) 的数字来表示,范围是 0 到 255(因为 2⁸ = 256)。
例如:
- 纯红色:
(255, 0, 0) - 纯白色:
(255, 255, 255) - 深灰色:
(34, 34, 34)
2. 什么是“有效位”?
一个 8 位的二进制数,例如 11001011,其每一位的“重要性”是不同的。
- 最高有效位(MSB - Most Significant Bit):最左边的位(在这个例子中是第一个
1)。改变它会极大地改变数值。比如,将11001011(203) 改为01001011(75),变化非常大。 - 最低有效位(LSB - Least Significant Bit):最右边的位(在这个例子中是最后一个
1)。改变它只会让数值变化1。比如,将11001011(203) 改为11001010(202),变化微乎其微。
结论:修改最低有效位对数值的整体影响最小。
3. 应用到图像上
现在,我们将这个概念应用到图像的像素上:
- 一个像素的红色通道值
203的二进制是11001011。 - 如果我们把它的最低有效位(LSB) 从
1改为0,它就变成了11001010,即202。 - 从**
**203**的红色变成**202****的红色,人眼根本无法分辨这两种颜色的差异!
LSB隐写就是利用了这个原理:我们牺牲掉图像中每个通道最后一位的精度(这点精度损失人眼看不到),用它们来存储我们的秘密信息。
三、工作原理:如何隐藏信息?
假设我们想隐藏字母 A。
- 将秘密信息转换为二进制
- 字母
A的 ASCII 码是65。 65的二进制是01000001。
- 字母
- 获取载体图像的像素
- 我们取一串连续的像素,例如前 8 个通道(可能来自3个像素:Pixel1(R,G,B), Pixel2(R,G,B), Pixel3(R,G,B) -> 这已经9个通道了,我们只需要前8个)。
- 假设前8个通道的LSB分别是:
1, 0, 1, 1, 0, 0, 1, 1
- 替换LSB
- 我们将载体图像这8个通道的最低有效位,替换为我们秘密信息
A的二进制位01000001。
- 我们将载体图像这8个通道的最低有效位,替换为我们秘密信息
| 通道原值 (二进制) | 原LSB | 秘密信息位 | 新通道值 (二进制) | 新十进制值 |
|---|---|---|---|---|
1100101**1** |
1 | 0 | 1100101**0** |
202 |
0011010**0** |
0 | 1 | 0011010**1** |
53 |
1111111**1** |
1 | 0 | 1111111**0** |
254 |
0000000**1** |
1 | 0 | 0000000**0** |
0 |
1010101**0** |
0 | 0 | 1010101**0** |
170 |
0101010**0** |
0 | 0 | 0101010**0** |
84 |
1110001**1** |
1 | 0 | 1110001**0** |
226 |
0001110**1** |
1 | 1 | 0001110**1** |
29 |
- 完成隐藏
- 经过上述修改后,字母
A的信息就被成功地隐藏在了图像的前8个通道中。 - 由于每个通道只改变了最低的1位,整张图片看起来和原来几乎没有任何区别。
- 经过上述修改后,字母
- 提取信息
- 接收方只需要知道信息是从哪个像素开始隐藏的(这通常由算法或密钥约定),然后按顺序读取这些通道的最低有效位,每8位组合成一个字节,再转换成字符,就能还原出隐藏的信息
A。
- 接收方只需要知道信息是从哪个像素开始隐藏的(这通常由算法或密钥约定),然后按顺序读取这些通道的最低有效位,每8位组合成一个字节,再转换成字符,就能还原出隐藏的信息
四、优缺点
优点:
- 实现简单:算法原理和编程实现都相对简单。
- 隐蔽性高:对图像视觉质量影响极小,难以被肉眼察觉。
- 容量大:一张图片有数百万像素,理论上有巨大的隐藏空间(像素数 × 3通道 ≈ 可隐藏的比特数)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 琉璃幻彩的博客!
评论

