欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

菜鸟也能懂!详解隐写术(盲水印)初学者指南

最编程 2024-01-13 09:54:32
...

应用场景:

  1. 版权识别。数字水印可以提供所有权证据。
  2. 用户识别或指纹。合法用户的身份嵌入水印,用于识别非法复制。
  3. 保证图像不被篡改。如果水印设计成,对图像任何修改将破坏水印。
  4. 自动监视。

从算法效果分类

可见水印 f w = ( 1 − a ) f + a w f_w=(1-a)f+aw fw=(1a)f+aw
其中,f是原图,w是水印。a是水印透明度,如果a=1,水印不透明
可见水印的技术发展目标是使水印更难被移除。例如,方案之一是用密钥随机确定水印亮度。

(可见水印不是本主题的重点,下面就不涉及了)

易碎不可见水印:主要应用场景是识别图像在某个传输环节被篡改,用来做图像认证
一个例子是LSB水印

鲁棒水印:对以下攻击鲁棒

  • 无意攻击:有损压缩、线性和非线性滤波、修剪、旋转、重取样
  • 故意攻击:打印、重扫描、添加水印、添加噪声

鲁棒水印的应用非常广,例如版权保护、盗版跟踪

从加密方式分类

算法分为私钥系统、公钥系统

从解密方式分类

算法分为需要原件才能解密、不需要原件就可以解密

历史上的隐写术

  • 不可见墨水:被万用显影剂破解了。万用显影剂可以检测纤维表面,确定那一部分被加湿过。
  • 纸币防伪技术,紫外线荧光。
  • 微缩胶片,粘到无关杂志的标点符号上。
  • 用正/斜体编码,把二进制编码隐藏在印刷文字里。

从嵌入的通道分类

  • 替换:用秘密信息替换载体的冗余部分,典型算法是 LSB(下文详细介绍)
  • 变换域:例如把密文信息写入频域,典型算法是基于 DCT 的隐写术(下文详细介绍)
  • 扩展频谱技术
  • 统计方法:更改载体的若干统计特征,在提取时使用假设检验。
    • 用来嵌入1个比特,找到某个统计特征,如果要嵌入1,就显著改变统计特征;如果要嵌入0,就不修改。
    • 解码过程就是一个假设检验函数。
    • 此方法通常应用场景很窄
  • 失真技术:使信号失真来保存信息,解码时测量与原始载体的偏差
    • 例子1:在 html 中插入不可见的字符,这些字符在web浏览器中被忽略,但查看 html 源码可以发现
    • 例子2:在印刷品中,单词(或句子,或整行),做微小的上下移动,可以用来嵌入比特。
    • 例子3:在印刷物中,单词之前的空格,也可以有大小,用来嵌入比特。
  • 载体生成:直接把信息编码成伪装载体
    • 算法1:直接做文本/字母的替换等,如“与佛说禅”
    • 把信息隐藏在字母出现的频率(Huffman树上)。步骤是:首先根据秘文生成 Huffman 树,然后根据 Huffman 树生成一段文字。