论文部分内容阅读
由于数字产品的复制和传播变得越来越经济和方便,软件安全和盗版的问题也日益变得突出。据统计,到2001年软件盗版业已经有大约16亿美元的产值,而且正在快速增长。现在,软件产品已经渗透到工农业生产、商业活动和日常生活的各个方面。所以各种软件版权保护技术成为了研究热点。目前的软件版权保护技术主要有基于加密方法和信息隐藏技术两种。在信息隐藏领域,主要有三种软件版权保护技术,分别是代码迷乱、软件水印和篡改验证技术,本文主要关注软件水印技术。 软件水印从嵌入和提取方式分为静态软件水印和动态软件水印。静态软件水印具有嵌入提取方便的优点,但是抗攻击性能较差,无法应用于对水印强度要求高的场合。相反,动态软件水印技术具有抗攻击性能强的特点,因此具有广阔的应用前景,也成为这一领域的研究重点。动态图软件水印技术是目前最好的动态软件水印技术之一,核心思想是将水印信息编码成拓扑图结构,从而使对拓扑图进行变换的保持语义攻击难以实现。提取过程是在用户输入提取密钥后在内存中建立拓扑图,然后用解码算法将图结构恢复成水印信息,其鲁棒性更高,隐蔽性更强。 动态图软件水印技术的核心部分就是图的编解码问题。在目前基本的编码方式中,PPCT枚举编码由于其结构上的优势,鲁棒性是最好的,但是缺点是编码效率较低。为了克服这一缺点,本文提出一种结合排列图和PPCT的混合编码方案,该方案充分利用了PPCT在结构上的优势,又结合了排列图编码效率高的特点。 针对这种混合编码方案,本文在Java语言中用两种方法做了实现,一种是交换叶节点混合枚举编码,另一种是增加指针混合枚举编码。前者是通过将PPCT的叶节点交换位置的方式来完成排列图编码,其结构完全与PPCT相同,具有很好的鲁棒性。后者是用PPCT的叶节点之间增加指针的方式来完成排列图编码,编码过程简单,时间开销较少。