论文部分内容阅读
随着信息技术的迅猛发展,软件产业迎来了新的机遇,然而软件产品的恶意盗版、非法使用正日益严峻,软件版权保护成为人们亟待解决的问题。软件水印技术是近年来一种很有前景的软件版权保护技术,其通过将版权信息和用户身份信息隐藏到软件中,以此来证明版权和追踪盗版,为软件版权保护提供了新颖的思路。本文根据扩频通信的思想提出了基于栈分配的软件水印算法。通过对动态图编码的研究发现其存在两大缺陷:一方面编码效率低下;另一方面水印拓扑图与宿主间无依赖关系。针对编码效率问题,提出改良的PPCT结构即ExtendPPCT,针对水印拓扑图与宿主间无依赖性的问题,提出了基于ExtendPPCT的防篡改方案。本文主要工作如下:(1)提出基于栈分配的静态软件水印算法,并给出选择特征矢量的三大原则。该算法通过修改栈大小来嵌入水印信息,嵌入后采用栈访问混淆技术使得水印信息与宿主程序之间产生紧密的依赖关系,提取时采用栈访问过滤技术过滤攻击者对栈的修改。分析表明该算法具有较强的鲁棒性和隐蔽性,尤其适用于保护规模较大的软件产品。(2)提出改良的PPCT结构即ExtendPPCT。针对PPCT编码效率低下问题,在IPPCT编码的启发下,提出将某种固定的逻辑序列看作是链表的思想,并基于此给出了一种能够充分挖掘PPCT中每个节点潜力的ExtendPPCT结构,基于该结构又提出了两种混合编码方案。研究表明改良的PPCT结构在数据率以及鲁棒性方面较传统的动态图有明显的优势,此外基于ExtendPPCT结构的水印方案中的每个水印数都可以有多种不同的表示形式,因此能够有效抵抗共谋攻击。(3)提出基于ExtendPPCT的防篡改软件水印方案。针对无论采用哪种编码方式其生成的水印拓扑图与宿主之间都是相对独立的、无紧密依赖关系这一缺陷,提出了将常量信息编码进ExtendPPCT的叶节点的右指针中去的思想,实现了将水印与防篡改信息编码在同一个拓扑结构中,使得水印与宿主之间高度依赖,获得良好的防篡改能力。(4)在SandMark实验平台上实现了ExtendPPCT与基数k链表、ExtendPPCT与排列图的两种混合编码方案,以及基于ExtendPPCT的防篡改软件水印方案。此外在SandMark平台上对本文提出的方案进行了详细的性能评估。