基于路径的防篡改动态软件水印算法(1)(2)
2013-12-02 02:02
导读:; 拓扑图嵌入原始程序: ; 从载体程序中提取拓扑图: ; 图结构映射为水印数字: 。3 基于路径的防篡改动态水印算法 一个完整的软件水印算法应包含水印拓扑

; 拓扑图嵌入原始程序:

; 从载体程序中提取拓扑图:

; 图结构映射为水印数字:

。3 基于路径的防篡改动态水印算法 一个完整的软件水印算法应包含水印拓扑图构造、水印嵌入和水印提取三个部分。3.1 水印的拓扑图映射 将水印数字编码为拓扑图已经提出了多种编码方案[1],例如PPCT编码、基数-k编码、父指针树编码和排列编码。几种编码方式各有优缺点,实际应用时应根据软件水印系统的需求决定。比如,PPCT树的比特率比较低但纠错能力较强,而基数编码具有较高的比特率但纠错能力太差。 由于要嵌入的水印数字会是一个相当大的值,无论运用上述任何一种编码方式,它对应的拓扑图
g的规模都会很大,如果将一个完整的
g的构建代码全部嵌入程序中的某个位置,会使水印的隐秘性减弱而容易引起攻击者的注意,从而遭到破坏。随后Collberg 和Thomborson提出将拓扑图
g分解为多个水印子图 ,并分别嵌入程序的不同执行路径中。该方法必须考虑水印图应如何分解才能保证在水印提取时添加最少的边连通所有的子图,而且对拓扑图进行分割,存在算法复杂度高、均匀分割困难以及分割后连通子图更困难的问题。 针对动态图分割存在的问题,本文给出了一种基于中国剩余定理的分割方法。3.1.1中国剩余定理 设ZN 表示集合{0,1,…,N-1}, [M]N表示
M除以
N的余数。 定理1 令

是两两互素的整数,且

,则存在唯一的整数

,且
M的编码

是一个
k元组