基于线程关系的软件水印信息处理方法

文档序号:6443170阅读:546来源:国知局
专利名称:基于线程关系的软件水印信息处理方法
技术领域
本发明涉及一种软件水印信息处理方法,尤其是涉及一种基于线程关系的软件水印信息处理方法。
背景技术
数字版权的保护一直是一项艰巨的任务,在网络时代,数字产品的分发变得愈加容易,版权保护的现状更是不容乐观。随着软件产品市场份额的增加,软件保护成为一个迫切的问题。软件水印技术是所有软件保护方式中重要的一种,它将标志版权的秘密信息嵌入到要保护的软件文件中达到保护的目的,这些秘密信息不易被察觉,并且难以清除,在需要的时候可以提取出来证明该文件的版权所有。由于软件水印能够在盗版发生后有效验证版权,并且软件水印有着高度不可察觉性,它的存在并不影响保护软件的使用感觉,因此适合软件推广、共享软件传播等许多使用情景。 软件水印的性能可以通过可信度、数据率、成本、隐蔽性、抵抗性等指标进行衡量。根据这些评价标准,目前的软件水印技术存在以下不足(I)软件水印技术的研究起步较晚,缺少完善的理论基础,软件水印方法在种类和数量上还不够丰富。(2)通用性不好,绝大多数算法需要在拥有源代码或java字节码的基础上进行,适用于市场上众多已编译的可执行文件的算法很少,能够同时在java字节码和本地代码中使用的更是缺乏。(3)软件水印和宿主程序结合不紧密,没有充分利用宿主程序中已有的内容,这一方面导致嵌入软件水印后的程序体积明显变大,另一方面使软件水印和载体程序之间产生一条明显的界线。如GTW算法中软件水印嵌入在不执行的代码中,容易通过统计方式查知。再如CT算法中,隐藏软件水印的图的生成过程和程序的正常流程缺少必要联系,很容易遭到逆向攻击者怀疑。(4)已有的软件水印算法往往只能应对某些特定的攻击,对许多正常程序变形缺少免疫力,例如优化、混淆以及压缩和加密等操作。(5)不少软件水印算法效率较低,不能嵌入较大的信息。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种数据率、隐蔽性和抵抗性高的基于线程关系的软件水印信息处理方法。本发明的目的可以通过以下技术方案来实现一种基于线程关系的软件水印信息处理方法,该方法包括软件水印的嵌入过程和提取过程,所述的嵌入过程包括以下步骤Al)预处理软件水印和宿主程序,将软件水印表示为矩阵的形式,生成软件水印矩阵;A2)监测宿主程序的执行过程,生成线程关系矩阵;A3)对步骤A2)生成的线程关系矩阵进行置乱处理,得到乱序线程关系矩阵;A4)将软件水印矩阵嵌入乱序线程关系矩阵中,并进行逆置乱处理,还原为顺序线程关系矩阵;A5)根据步骤A4)获取的顺序线程关系矩阵修改宿主程序的源代码,得到已嵌入软件水印的最终程序;所述的提取过程包括以下步骤BI)监测嵌入有软件水印的宿主程序的执行过程,获取包含软件水印矩阵的线程关系矩阵;B2)将包含软件水印矩阵的线程关系矩阵进行置乱处理,获取乱序线程关系矩阵;B3)根据嵌入过程中的对应关系从乱序线程关系矩阵中提取出软件水印矩阵;B4)从软件水印矩阵中提取软件水印。 所述的步骤A2)中通过调试器监测宿主程序的执行过程,记录宿主程序的线程关系,并对线程关系进行编号,再根据带有编号的线程关系生成线程关系矩阵。所述的置乱处理采用Arnold变换。所述的线程关系矩阵中的至少两个元素对应软件水印矩阵中的一个元素。与现有技术相比,本发明利用程序中已存在的线程之间的关系,通过添加少量线程或者不添加线程,修改利用这些线程间的关系来嵌入软件水印,并通过检测带软件水印的程序中线程关系来提取软件水印,包括以下几个优点(I)数据率高,方便嵌入图像等较大体积的软件水印。(2)隐蔽性好,软件水印嵌入前后程序大小变化不明显,程序的运行速度也基本影响不大。(3)高抵抗性能够抵抗市场上大部分软件分发过程中的变换,对针对线程的攻击方式也有很强的抵抗能力。


图I为本发明的软件水印嵌入过程示意图;图2为本发明的软件水印提取过程示意图。
具体实施例方式下面结合附图和具体实施例对本发明进行详细说明。实施例一种基于线程关系的软件水印信息处理方法,该方法包括了软件水印的嵌入过程和提取过程,其中嵌入过程如图I所示第一步,对软件水印和宿主程序进行预处理,将软件水印表示为矩阵的形式,生成软件水印矩阵。对于直接可以对应为一个矩阵的图像形式的软件水印来说,这一过程可以省略。第二步,由于本发明基于宿主软件的线程关系,而线程间关系有多种类型,在实际过程中可以根据宿主程序本身情况选择最合适的关系类型,如线程执行的先后顺序关系,线程执行过程中的主控制关系等等。为了利用并修改线程间的关系,需要获得宿主程序的现有线程关系,通过调试器监测宿主程序的执行过程,记录宿主程序的线程关系,并对线程关系进行编号,再根据带有编号的线程关系生成线程关系矩阵。第三步,对宿主程序运行后生成的线程关系矩阵进行置乱处理,本实施例中采用Arnold变换将线程关系矩阵进行置乱处理,打散线程关系矩阵。第四步,将软件水印矩阵嵌入乱序线程关系矩阵中,为了增加对于恶意攻击的抵抗性,使用量化技术使线程关系矩阵中的多个元素对应软件水印矩阵中的一个元素,从而线程关系矩阵中的元素即使被篡改,也不一定能够篡改软件水印数据。本实施例中,根据嵌入的软件水印一个元素的值对应的4个线程关系矩阵中元素的奇偶性。软件水印元素的值为O或为I的可能性相同,因此这四个元素有一半的可能不需要修改。同时由于线程关系矩阵多属于稀疏矩阵,即线程关系矩阵中大部分值为0,因此即使修改也只需要将这4个元素中的一个O修改为I即可。第五步,将嵌入有软件水印矩阵的乱序线程关系矩阵进行逆置乱,恢复成顺序线程关系矩阵。
第六步,由于在线程关系矩阵中嵌入了软件水印矩阵,对宿主程序进行修改以反映线程关系矩阵的改变,通过确定线程关系矩阵在嵌入软件水印前后变化的值的位置,确定它影响的两个线程,再根据选择的关系类型修改宿主程序源代码中对应线程处代码,完成所有变动元素对应的线程修改后,就可得到嵌入软件水印后的最终程序。由于软件传播过程中的各种常规变化不会对线程关系造成影响,同时软件使用者由于没有软件的源代码,因而不能够完全明确线程间的关系,贸然进行修改会造成软件不能正常使用,因而利用基于线程关系的软件水印有着较高的安全性。软件水印的提取过程如图2所示,该过程相对嵌入过程相对简单,包括以下几个步骤第一步,监测嵌入有软件水印的宿主程序的执行过程,获取包含软件水印矩阵的线程关系矩阵。第二步,将包含软件水印矩阵的线程关系矩阵进行置乱处理,获取乱序线程关系矩阵。第三步,根据嵌入过程中的对应关系从乱序线程关系矩阵中提取出软件水印矩阵;第四步,从软件水印矩阵中提取软件水印。
权利要求
1.一种基于线程关系的软件水印信息处理方法,其特征在于,该方法包括软件水印的嵌入过程和提取过程,所述的嵌入过程包括以下步骤 Al)预处理软件水印和宿主程序,将软件水印表示为矩阵的形式,生成软件水印矩阵; A2)监测宿主程序的执行过程,生成线程关系矩阵; A3)对步骤A2)生成的线程关系矩阵进行置乱处理,得到乱序线程关系矩阵; A4)将软件水印矩阵嵌入乱序线程关系矩阵中,并进行逆置乱处理,还原为顺序线程关系矩阵; A5)根据步骤A4)获取的顺序线程关系矩阵修改宿主程序的源代码,得到已嵌入软件水印的最终程序; 所述的提取过程包括以下步骤 BI)监测嵌入有软件水印的宿主程序的执行过程,获取包含软件水印矩阵的线程关系矩阵; B2)将包含软件水印矩阵的线程关系矩阵进行置乱处理,获取乱序线程关系矩阵; B3)根据嵌入过程中的对应关系从乱序线程关系矩阵中提取出软件水印矩阵; B4)从软件水印矩阵中提取软件水印。
2.根据权利要求I所述的一种基于线程关系的软件水印信息处理方法,其特征在于,所述的步骤A2)中通过调试器监测宿主程序的执行过程,记录宿主程序的线程关系,并对线程关系进行编号,再根据带有编号的线程关系生成线程关系矩阵。
3.根据权利要求I所述的一种基于线程关系的软件水印信息处理方法,其特征在于,所述的置乱处理采用Arnold变换。
4.根据权利要求I所述的一种基于线程关系的软件水印信息处理方法,其特征在于,所述的线程关系矩阵中的至少两个元素对应软件水印矩阵中的一个元素。
全文摘要
本发明涉及一种基于线程关系的软件水印信息处理方法,该方法包括软件水印的嵌入过程和提取过程,所述的嵌入过程包括以下步骤预处理软件水印和宿主程序,生成软件水印矩阵;监测宿主程序的执行过程,生成线程关系矩阵;置乱线程关系矩阵,得到乱序线程关系矩阵;将软件水印矩阵嵌入乱序线程关系矩阵中,并进行逆置乱处理,还原为顺序线程关系矩阵;根据顺序线程关系矩阵修改宿主程序的源代码,得到已嵌入软件水印的最终程序;所述的提取过程与提取过程相反,由嵌入有软件水印的宿主程序中提取的线程关系矩阵,进行置乱后提取出软件水印矩阵,再从软件水印矩阵中提取软件水印。与现有技术相比,本发明利用程序中已存在的线程之间的关系来嵌入软件水印,并通过检测带软件水印的程序中线程关系来提取软件水印,具有数据率、隐蔽性和抵抗性高的优点。
文档编号G06F21/16GK102890759SQ20111044051
公开日2013年1月23日 申请日期2011年12月23日 优先权日2011年12月23日
发明者曾国荪, 王伟, 许金超 申请人:同济大学, 上海红神信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1