频道栏目
读书频道 > 安全 > 软件加密与解密
1.6.2 攻击水印系统
2012-08-25 16:30:36     我来说两句
收藏   我要投稿

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

本书介绍了如何利用混淆、水印和防篡改等技术,来保护软件免受盗版、篡改和恶意逆向工程的危害,主要内容包括攻击者和防御者用来分析程序的各种主流方法,如何使用代码混淆技术使程序更难以被分析和理解,如何在...  立即去当当网订购
和在其他各类安全场景中一样,你必须把各种可能用来攻击水印系统的方法都考虑到。Doris现在理所当然要假设Axel在销售盗版软件之前一定会尽力去抹掉软件中嵌入的水印。而且很不幸的是,有一种百试百灵的攻击方法,总能抹掉软件中的水印。你能想到它是什么吗?为了确保盗版软件中不包含水印,Axel只要重写一遍这个程序就可以了![1]我们把这称为重写攻击。如图1-29所示。



图 1-29
Axel也可以把自己的水印加入程序中,我们称这一方法为掺假攻击(additive attack),如图1-30所示。



图 1-30
掺假攻击可能会糊弄Doris的识别器。但更重要的是,由于程序中有多个水印,那怎么在法庭上证明确实是Doris而不是其他什么人拥有软件的版权呢?
扭曲攻击则是对程序中的代码进行保持语义不变的转换(比如对程序进行代码优化,代码混淆等),以此搞晕Doris的识别器。如图1-31所示。



图 1-31
最后,Axel还可以使用一种专门针对客户指纹的比对攻击[2]。即Axel分别购买同一个软件的两份副本,然后把这两份副本进行比对,找出其中不同的部分,这些不同的部分就很可能是嵌入客户指纹的位置。如图1-32所示。






图 1-32
针对这种攻击方法,Doris可以对同一个程序的各个副本使用不同的代码混淆技术,以此确保即使比对使同一程序的不同副本也得不到什么有用的信息。

还有一种并不直接攻击水印本身的巧妙方法。程序还是Doris加了水印的程序P’,但是Axel可以假装说程序中包含有他的水印。比如Axel可以自己写一个识别器,让这个识别器识别出程序P’中包含有Axel的水印。如果Axel成功地写出了这样一个识别器的话,我们就不能分辨哪个识别器是真的,哪个是假的。而Doris也就拿不出软件版权属于她的证据来了。

在第8章和第9章中,将会介绍很多水印算法。这些算法中,有些必须水印整个应用程序,而有的则可以只水印程序的某个部分。有的适用于二进制可执行文件,而有的则专为字节码而设计。有的能嵌入隐秘的水印,而有的则能嵌入大量相互冗余的水印。有的嵌入的水印很难被擦除,而有的会使因嵌入水印导致的程序性能开销很小。但就是没有一种算法能够满足用户的所有需求。因为(设计一种能满足所有各种不同需求的水印算法,)这对于软件水印的研究者们来说实在是个不小的挑战。


[1]呃……你不是开玩笑吧!真的要全部重写一遍?——作者注
 
[2]有文献称之为“共谋攻击”这个术语容易引起误会,同一软件的两份副本并不是Axel的共谋者,只是被利用了而已。故此这里译为比对攻击,我认为这样更能反映出这一攻击的本质

 
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.6.1 软件水印的例子
下一篇:1.7 软件相似性比对
相关文章
图文推荐
排行
热门
最新书评
特别推荐

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

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