当前位置: 首页 > 专利查询>清华大学专利>正文

一种在计算机程序中嵌入和提取水印的方法技术

技术编号:2820561 阅读:361 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种在计算机程序中嵌入和提取水印的方法,属于软件版权保护技术领域。本发明专利技术方法中,嵌入水印的过程为:将水印和密钥分别转化为大整数w和k,并将w和k分别转换成具有n个元素的单调非递减的整数数组W[]和K[],在W[]和K[]的每一对相应的元素之间建立m个映射关系,然后从计算机程序中选择待嵌入水印的方法,创建映射关系代码并分别嵌入到与选定的待嵌入水印的方法控制流图的割点处;提取水印的过程为:依次读入计算机程序中的每一个方法控制流图中的割点并进行判断,若满足提取条件,则从该割点处提取出映射关系代码,根据提取出来的所有映射关系代码创建一个提取辅助类,读入提取密钥,运行提取辅助类,显示提取结果。

【技术实现步骤摘要】

本专利技术涉及,尤其涉及一种在Java二进制代码程序中嵌入和提取水印的方法,属于软件版权保护

技术介绍
随着计算机网络、分布式系统以及网络化的嵌入式设备的发展,对软件的平台无关性和可移植性有了比以往更高、更迫切的要求,但也带来了安全方面的问题,其中,软件知识产权保护问题一直是个热点问题。研究软件版权保护技术,对于保护计算机软件著作权人的权益、鼓励计算机软件的开发与应用、促进软件产业和国民经济信息化的发展都有着非常重要的意义。 软件水印是指不被感知地嵌入在软件中的一段具有标识意义的信息,可用于证明软件的知识产权归属。在一些特定情形下,软件水印也能用于跟踪非法盗用。软件水印技术属于一种典型的软件版权保护技术。
技术实现思路
本专利技术的目的是提出,该方法基于计算机程序控制流图的特征点——割点以及程序的语义。不同于以往的水印方法,在本方法中,通过在水印和密钥之间建立设定个数的映射关系,并将这些映射关系以代码的形式嵌入在与程序控制流图割点相对应的基本块处。 本专利技术提出的在计算机程序中嵌入和提取水印的方法,包括以下步骤 嵌入水印的过程为 (1)将计算机程序版权人的版权信息和密钥信息分别转化为一个整型数字字符串,分别记为w和k,w和k是大整数; (2)将上述w和k分别转换成具有n个元素的单调非递减的整数数组W,n是水印嵌入者设定的整数,1≤i≤n-1,具体的转换过程为 (2-1)任意设定一个大于1的整数q,求出满足不等式的整数l,以及满足不等式的整数p; (2-2)根据等式分别求出系数v0,v1,...,vn-2和u0,u1,...,un-2,其中,对于0≤j≤n-2,系数vj为整数且满足0≤vj<ql,系数uj为整数且满足0≤uj<qp; (2-3)令W=l-1,K=p-1,对1≤i≤n-1,得到W=W+vi-1,K=K+ui-1; (3)在上述转换得到的版权信息整数数组W的每一对相对应的元素之间建立m个映射关系,m是水印嵌入者设定的另一整数,得到一个具有m×n个映射关系的集合; (4)从计算机程序中选择待嵌入水印的方法,其过程为 (4-1)建立一个待嵌入水印的方法集合,从计算机程序中读入一个方法; (4-1-1)根据该方法的控制流构建该方法的控制流图,并得到控制流图的基本图,求出该基本图中所有割点的集合; (4-1-2)对上述割点集合进行判断,若为空集,则转入步骤(4-1-5),若不为空集,则读取上述割点集合中的一个割点; (4-1-3)对上述读取的割点进行判断,若符合与该割点对应的控制流图中的基本块能被拆分成两个基本块,且在两个基本块之间插入一个新的基本块之后,两个基本块在新的控制流图中成为相邻割点,则该读取的割点为可嵌入水印的割点,记录与该可嵌入水印的割点相对应的基本块的入口位置,并将上述读入的方法加入到待嵌入水印的方法集合中,转入步骤(4-1-5),若不符合,转入步骤(4-1-4); (4-1-4)对上述割点集合进行判断,若该割点集合的所有割点遍历结束,则转入步骤(4-1-5),否则,读取该割点集合中的下一个割点,转入步骤(4-1-3); (4-1-5)若计算机程序中的所有方法遍历结束,则转入步骤(4-2),否则,读入计算机程序中的下一方法,重复步骤(4-1-1)至步骤(4-1-4),直至遍历计算机程序中的所有方法; (4-2)判断上述可嵌入水印的割点个数,若少于m×n,则从计算机程序中任意选择一个不在待嵌入水印的方法集合中的方法,在与该选择方法相对应的控制流图中添加新的分支,使得该控制流图含有可嵌入水印的割点,记录与该可嵌入水印的割点相对应的基本块的入口位置,并将该修改后的选择方法加入到上述待嵌入水印的方法集合中,重复以上步骤直至遍历计算机程序中所有不在待嵌入水印的方法集合中的方法; (4-3)判断上述可嵌入水印的割点个数,若仍然少于m×n,则从上述待嵌入水印的方法集合中随机选择一个方法,按照上述步骤(4-1)中的过程读入另一割点,找到一个可嵌入水印的割点,并记录与该新的可嵌入水印的割点相对应的基本块的入口位置,若没有找到可嵌入水印的割点,则在该方法体中添加改变该方法控制流的辅助代码,使得该方法的控制流图中含有新的可嵌入水印的割点,并记录与该新的可嵌入水印的割点相对应的基本块的入口位置,重复以上步骤,直至可嵌入水印的割点个数达到m×n; (5)将上述映射关系嵌入到上述选定的待嵌入水印的方法中,其过程为 (5-1)从上述映射关系集合中选择一个映射关系,从上述待嵌入水印的方法集合中选择一个方法,并读取方法中的一个可嵌入水印的割点; (5-2)为上述选择方法增加多个整型局部变量,使新增加的局部变量中编号最小的局部变量对应于映射关系中的自变量,编号最大的局部变量对应于映射关系中的变量,创建局部变量初始化指令以及与映射关系相关的操作指令,并将操作指令与局部变量相关联,得到映射关系代码; (5-3)将与上述读取的割点相对应的基本块拆分成两个基本块b1、b2,并将构建的映射关系代码以一个基本块b3插入到b1和b2之间,使得基本块b1、b2、b3满足基本块b1跳向基本块b2和b3,基本块b3跳向基本块b2; (5-4)读取下一个映射关系,判断该方法中是否有新的可嵌入水印的割点,若有,则读取该方法中下一个可嵌入水印的割点,并重复步骤(5-2)和步骤(5-3),完成映射关系代码的嵌入;若没有,则读取下一个待嵌入水印的方法,读取该方法中一个可嵌入水印的割点,并重复以上步骤(5-2)和(5-3),完成映射关系代码的嵌入; (5-5)重复步骤(5-4),直至所有映射关系代码嵌入到计算机程序中; 提取水印的过程为 (6)建立一个待提取水印的方法集合,读入计算机程序中的一个方法,根据该方法的控制流构建与该方法相对应的控制流图,得到相应的基本图,求出基本图的所有割点,得到一个割点集合,依次读取割点集合中的割点并进行判断,若与读取割点相对应的控制流图中的基本块b4满足b4的跳转目标为两个基本块b5和b6,且基本块b5也为割点而b6不为割点,同时基本块b5为基本块b6的跳转目标,或基本块b6也为割点而b5不为割点,同时基本块b6为基本块b5的跳转目标,则对不为割点基本块作进一步判断,若满足该基本块中含有的局部变量个数和类型与上述构建的映射关系代码中局部变量个数和类型相一致,则从计算机程序中提取该基本块中包含的操作指令以及所有局部变量的初始值,并根据操作指令和局部变量的初始值构建一个新的方法,具体构建过程如下对按大小次序编号的上述基本块中的局部变量重新从0开始编号,使编号最小的局部变量为新方法的输入参数,编号最大的局部变量的值为新方法的返回值,使提取的操作指令作为新方法的操作指令; (7)将上述新方法加入到上述待提取水印的方法集合中; (8)重复上述步骤(6)和(7),直至计算机程序中的所有方法遍历结束; (9)根据上述待提取水印的方法集合,创建提取辅助类,提取密钥,并解析出版权信息; (10)使用与上述步骤(1)和(2)相同的方法,将用户的密钥信息转换成具有n个元素的单调非递减的整数数组g中的每本文档来自技高网...

【技术保护点】
一种在计算机程序中嵌入和提取水印的方法,其特征在于该方法包括以下步骤: 嵌入水印的过程为: (1)将计算机程序版权人的版权信息和密钥信息分别转化为一个整型数字字符串,分别记为w和k,w和k是大整数; (2)将上述w和k分别转换成具有n个元素的单调非递减的整数数组W[]和K[],n是水印嵌入者设定的整数,1≤i≤n-1,具体的转换过程为: (2-1)任意设定一个大于1的整数q,求出满足不等式w≤(q↑[l]-1)∑↓[j=0]↑[n-2]q↑[jl]的整数l,以及满足不等式k≤(q↑[p]-1)∑↓[j=0]↑[n-2]q↑[jp]的整数p; (2-2)根据等式w=∑↓[j=0]↑[n-2]v↓[j]q↑[jl],k=∑↓[j=0]↑[n-2]u↓[j]q↑[jp]分别求出系数v↓[0],v↓[1],…,v↓[n-2]和u↓[0],u↓[1],…,u↓[n-2],其中,对于0≤j≤n-2,系数v↓[j]为整数且满足:0≤v↓[j]<q↑[l],系数u↓[j]为整数且满足:0≤u↓[j]<q↑[p]; (2-3)令W[0]=l-1,K[0]=p-1,对1≤i≤n-1,得到W[i]=W[i-1]+v↓[i-1],K[i]=K[i-1]+u↓[i-1]; (3)在上述转换得到的版权信息整数数组W[]与密钥信息整数数组K[]的每一对相对应的元素之间建立m个映射关系,m是水印嵌入者设定的另一整数,得到一个具有m×n个映射关系的集合; (4)从计算机程序中选择待嵌入水印的方法,其过程为: (4-1)建立一个待嵌入水印的方法集合,从计算机程序中读入一个方法; (4-1-1)根据该方法的控制流构建该方法的控制流图,并得到控制流图的基本图,求出该基本图中所有割点的集合; (4-1-2)对上述割点集合进行判断,若为空集,则转入步骤(4-1-5),若不为空集,则读取上述割点集合中的一个割点; (4-1-3)对上述读取的割点进行判断,若符合:与该割点对应的控制流图中的基本块能被拆分成两个基本块,且在两个基本块之间插入一个新的基本块之后,两个基本块在新的控制流图中成为相邻割点,则该读取的割点为可嵌入水印的割点,记录与该可嵌入水印的割点相对应的基本块的入口位置,并将上述读入的方法加入到待嵌入水印的方法集合中,转入步骤(4-1-5),若不符合,转入步骤(4-1-4); (4-1-4)对上述割点集合进行判断,若该割点集合的所有割点遍历结束,则转...

【技术特征摘要】

【专利技术属性】
技术研发人员:王建民张长江王朝坤李德毅
申请(专利权)人:清华大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1