论文部分内容阅读
随着IT行业的发展,软件版权保护问题日益突出,由此需求而发展起来的软件版权保护技术也越来越受到人们的关注。其中的一款保护手段是基于软件水印的。软件水印技术是将拥有者的身份标识信息以水印的形式嵌入在软件中,再对外进行发布,当发生纠纷时从软件中提取出来用以证明自己的版权。近些年的软件水印技术大体分为静态和动态两大类。静态水印是将水印信息嵌入在程序的代码中,而动态水印是将水印信息嵌入在程序的执行状态中。其技术基础有密码学、图论、数论、软件工程、算法、数字水印技术等。本文提出一种软件水印嵌入方案——HSVN水印算法,将水印信息嵌入在程序的局部变量名称里,具有很高的隐蔽性。在嵌入前,对水印数据基于GCRT (Generalized Chinese Remainder Theorem)方案进行分割,这样只要被篡改的子水印不超过嵌入的子水印的一半,就能通过中国剩余定理将水印信息进行还原,水印的鲁棒性很强。并且,在选取局部变量时,采用随机算法生成伪随机序列来定位局部变量的位置,这种方式增加了水印的隐蔽性,同时水印信息的存在也不会增加程序的大小,不会对程序的运行性能造成影响。本文对基于局部变量的水印方案的拓展性也作了分析,可以将水印信息以相同的方式嵌入在函数名、形式参数或其它程序成分中,增加水印算法的多变性和可嵌入的数据量。实现了基于局部变量的水印方案的一个原型系统——HSVN原型系统。该原型系统是用C++开发的,也是本文研究成果的部分体现。系统主要有水印嵌入和提取两大功能,由控制器、水印处理、代码扫描器、随机序列生成器、子水印嵌入器、子水印提取和还原等子模块组成,并通过控制器模块来实现内部各个子模块的协调运作。在系统实现的基础上,通过实验对比,分析了本文提出的软件水印方案与已有的几种软件水印技术在鲁棒性、对原程序性能影响、数据率等各方面的性能,并对几种算法在隐藏性和扩展性上的性能作了理论分析。