论文部分内容阅读
传统的软件保护大多依赖于加密技术,对于加密技术来说,密码的不可破译度是靠不断增加密钥的长度来提高的,然而随着计算机计算能力的迅速增长,密码的安全度始终面临着新的挑战。软件水印技术的出现和发展,为软件安全的研究和应用拓展了一个新的领域。该技术是在软件中嵌入某些特定的秘密信息,在必要的时候,这些秘密信息可以被提取出来证明软件所有者的版权。根据水印被加载的时刻,可以将软件水印分为静态水印和动态水印。静态水印存储在可执行程序代码中,动态水印则保存在程序的执行状态中。动态图水印是一种较新的动态软件水印技术,这种技术是在程序运行时动态生成一个图结构,用这个图的拓扑来表示一个水印数字。因为分析动态数据的困难性,所以这种动态水印对水印攻击具有较强的抵抗能力。论文在动态图水印理论的基础上,提出基于Asmuth-Bloom体系的动态图软件水印算法(简称AB算法),该算法将密码学中的密钥共享思想引入到软件水印中,将水印信息w分成n份,各份之间没有包含关系,任何t(t≤n))份可以计算出w,而任何t-1份则不能。实现了基于AB算法的ABMark1.0系统,ABMark1.0系统是一个基于Java字节码文件的综合软件水印系统,主要包括静态数据软件水印和AB算法软件水印两个子系统。以ABMark1.0系统为平台做了一系列的实验,对AB算法的数据率、鲁棒性、隐蔽性以及水印加载所带来的性能过载进行了评估和实验分析,结果表明,AB算法能够基于部分内容提取水印,具有较强的鲁棒性,但该算法的不足之处是将水印数据扩张,相对减少了程序可容纳的水印信息量,水印恢复时涉及到模数逆的运算,增大了计算量和计算时间。