频道栏目
读书频道 > 安全 > 软件加密与解密
1.6 软件水印
2012-08-25 16:25:09     我来说两句
收藏   我要投稿

本文所属图书 > 软件加密与解密

本书介绍了如何利用混淆、水印和防篡改等技术,来保护软件免受盗版、篡改和恶意逆向工程的危害,主要内容包括攻击者和防御者用来分析程序的各种主流方法,如何使用代码混淆技术使程序更难以被分析和理解,如何在...  立即去当当网订购
在很多种情况下,你都需要在自己的东西上做上标记以表明你对它拥有某种权利。其中,大家最熟悉的莫过于政府在纸币上做的水印了。这些水印往往是嵌入在纸币中的,因此也很难被破坏或者复制。比如,要是别人找给你一张破旧的纸币,你往往会把它举起来,对着光亮处检查纸币中的水印,以此来确认纸币的真伪。同样,如果有人想要使用复印机印制伪钞的话,那它制作出来的伪钞就肯定没有水印,很容易被人识破。

数字水印也是很有用的。我们通常需要在电子出版物(比如图片、文本、视频或音频)中嵌入一个唯一的标识。比方说,Doris是个网上音像店的老板,当Axel去她的店里买一首歌时,Doris会在卖出去的这份副本中嵌入两个标记,一个是版权声明A(在Doris卖出去的每一份副本中都有这个标记),它表明Doris拥有这份副本的版权,另一个是客户标识B(这个是专门针对Axel),它是用来防止Axel非法复制这首歌,并把非法复制品转手再卖出去的。如图1-25所示。





图 1-25
要是Doris发现了一份这首歌的非法副本,她就可以通过从非法副本中提取到的客户标识B(B有时也被称为指纹)找到Axel并把他告上法庭。要是Axel还嘴硬:“老子才是原创!”。Doris就可以继续提取出版权声明A,驳倒Axel。

数字水印算法一般都要利用人类感知系统的局限性。假如要在一段音乐中嵌入水印,我们就要在这段音乐中加入一些对于人耳来说难以察觉的短促回声。可以用相对而言更短些的回声表示0,而用相对而言较长的回声来表示1。又比如在PDF文件中,我们可以通过调整文本中各行的行距来嵌入水印,如用12磅行距来表示0,用12.1磅行距来表示1。而对于一个图片来说,我们可以通过调整(一组)像素的亮度方法来嵌入水印。从上面几个例子中可以看出:要加入水印,就必须对原始文件进行必要的修改。一般会使用一个伪随机数发生器从原始文件中挑选出一系列位置,用以承载水印。而用来产生伪随机数的种子就是提取水印的密钥,没有它是不可能从文件中提取出水印的。所以典型的水印系统都至少由两个函数组成:嵌入函数和提取函数。如图1-26所示。




图 1-26
这两个函数都要输入密钥,嵌入函数还要把原始对象[又称为载体(cover object)]和水印[又称载荷(payload)]作为输入,最终生成一个添加了水印的对象[又称为隐秘对象(stego object)[1]]输出。而提取函数,顾名思义,则是以隐秘对象和密钥作为输入(用来将水印提取出来的函数)。上面介绍的就是一个基本的数字水印系统,其他更复杂的数字水印系统将在第8章中讨论。

根据以往的经验,我们也绝不能低估Axel的本事。Axel盗版Doris的电子出版物的时候必须要确认他已经干掉了Doris嵌入的所有水印。更准确地来说,他必须要以某种方式干扰数字水印的提取过程,使得Doris即使输入了正确的密钥也休想从中提取出水印来。在这类攻击中,Axel通常都会往隐秘对象中掺入大量干扰信息,这些干扰虽然还是很小,令人无法察觉(否则就不会有人去买Axel制作的盗版了),但是已经足以使Doris再也无法提取水印了。比如Axel可以随机地调整PDF文件中各行的行距,在音频中混入大量人耳不易察觉的回声,或者把图片中所有像素的最低有效位全部设为0。数字水印技术的研究就像是好人和坏蛋之间的一场游戏,好人们想方设法地研发出稳定、健壮的水印算法,而坏蛋们则千方百计地要破坏这些水印。同时,不论是好人还是坏蛋都必须尽力使他们的行为不至于影响到大众对电子出版物的阅读

当然,本书中我们关心的是软件水印而非数字水印。但是它们之间许多原理是一致的。比如对于给定的程序P,水印w和密钥k。将它们输入到嵌入函数中去之后,产生一个新的程序Pw。我们希望Pw在功能上与等价P(拥有相同的输入/输出行为),只是比P的个头稍微大点,运行起来略微慢点而已。当然P中还要包含水印w,即把Pw和密钥输入到提取函数中去之后,能够返回水印


[1]“隐秘对象”这个单词很容易被望文生义地理解成是“隐秘的对象”的意思,其实它是“隐藏了秘密的对象”的简称。希望读者,特别是初学者注意。
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.5.2 防篡改技术的例子
下一篇:1.6.1 软件水印的例子
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站