一种利用软件水印限制非法java软件运行的方法

文档序号:6341231阅读:205来源:国知局
专利名称:一种利用软件水印限制非法java软件运行的方法
技术领域
本发明涉及一种利用软件水印限制非法JAVA软件运行的方法,属于软件保护技 术领域。
背景技术
在开放式网络环境下,软件运行环境面临非法程序入侵、系统平台多样异构等问 题,而JAVA软件由于其良好的移植性而得到了广泛的应用,因此,保证JAVA软件运行系统 安全,具有重要的现实意义。为了保护JAVA软件运行系统安全,“沙箱”模型已经得到了广泛的应用。在JAVA“沙 箱”模型中,JAVA软件的执行环境被严格划分为两个部分本地代码可以访问计算机的所有 资源;而远端代码(主要是从网络中下载的Applet)只能运行在严格限制的沙箱里面。安 全管理器(Security Manager)作为“沙箱”的组件之一,用于定义系统中允许沙箱中程序 访问的资源,阻止恶意程序非法访问和篡改数据,从而保证系统安全。然而该方案对于本地 中的JAVA软件缺乏验证,存在被恶意软件攻击的可能性。软件水印是指隐秘嵌入在软件中的具有标识意义的信息,包括两个重要步骤,即 软件水印的添加和提取。软件水印的提出,最初是用于标识软件版权信息,从而打击盗版活 动。本文所提及的软件水印用于标识软件的合法性。软件水印技术是软件保护技术之一。

发明内容
本发明的目的是提出一种利用软件水印限制非法JAVA软件运行的方法,通过构 建基于软件水印的可信JAVA软件运行环境,使得只有合法的软件才能运行,以限制非法软 件的运行。本发明提出的利用软件水印限制非法JAVA软件运行的方法,包括以下各步骤(1)在用户提交的JAVA软件中嵌入水印,嵌入过程包括以下步骤(1-1)构建一个JAVA软件水印生成模块,根据提交JAVA软件的用户的身份生成 JAVA软件水印;(1-2)构建一个包括多种水印嵌入方法的JAVA软件水印嵌入模块。这些水印嵌入 方法包括不确定谓词水印嵌入方法,局部变量表水印嵌入方法,矢量统计水印嵌入方法,图 理论水印嵌入方法以及半动态多次水印嵌入方法等。(1-3)根据提交JAVA软件用户的要求,从JAVA软件水印嵌入模块中选择一种软件 水印嵌入方法,具体过程如下(1-3-1)若用户要求软件水印具有较强的鲁棒性,则选择动态水印嵌入方法;(1-3-2)若用户要求在较短时间内完成软件水印的嵌入和提取,则选择静态水印 嵌入方法;(1-3-3)若用户同时要求软件水印具有较强的鲁棒性及在较短时间内完成软件水 印的嵌入和提取,则选择半动态水印嵌入方法;
(1-4)根据JAVA软件用户选择的水印嵌入方法,在用户提交的JAVA软件中添加步 骤(1-1)生成的JAVA软件水印,得到带有JAVA软件水印的JAVA软件,并输出一个水印存 根,将该水印存根存放到JAVA软件运行系统的指定目录中。水印存根中包括以下信息用 户身份、嵌入水印前的JAVA文件的文件名、嵌入水印后的JAVA文件的文件名、水印嵌入时 间、水印嵌入方法名称、水印提取方法名称以及水印和密钥;(2)根据上述水印存根中的提取水印方法名称,构建一个JAVA软件水印提取模 块;(3)构建一个JAVA软件水印验证模块,包括以下步骤(3-1)从JAVA软件运行系统的指定目录中读取上述水印存根,若读取成功,则转 步骤(3-2),若读取不成功,则转步骤(3-5);(3-2)对读取的水印存根中的水印提取方法进行验证,若JAVA软件水印提取模 块中存在一个与水印存根中的水印提取方法相对应的水印提取方法,则转步骤(3-3),若 JAVA软件水印提取模块中不存在一个与水印存根中的水印提取方法相对应的水印提取方 法,则提示找不到合适的水印提取方法,转步骤(3-5);(3-3)采用上述读取的水印提取方法,读取水印存根中的密钥,从JAVA软件中提 取水印,若提取水印成功,则转步骤(3-4),若提取失败,则提示找不到水印,转步骤(3-5);(3-4)对提取的水印进行验证,若提取的水印与水印存根中的水印相一致,则允 许JAVA软件运行,若提取的水印与水印存根中的水印不一致,则提示水印错误,转步骤 (3-5);(3-5)水印验证失败,JAVA软件停止运行。发明提出的利用软件水印限制非法JAVA软件运行的方法,具有以下优点1、本发明的保护JAVA软件运行系统安全的方法,隐秘性好,安全性高,对于恶意 软件对JAVA软件运行系统的攻击有很好的抗攻击能力。2、本发明方法中,在JAVA软件运行系统中对软件水印进行提取和验证的方法,软 件水印的提取时间短,嵌入水印后的软件仍能保持良好的运行性能。3、本发明的保护JAVA软件运行系统安全的方法,具有良好的移植性,即一次编 译后可供多种JAVA软件运行系统使用。4、本发明的保护JAVA软件运行系统安全的方法中,提出建立水印方法与用户需 求的对应关系,能够根据用户需求来选择水印方法,因此可以更好地满足用户对JAVA软件 运行安全性和运行效率的需求。


图1是本发明方法的流程框图。
具体实施例方式本发明提出的利用软件水印限制非法JAVA软件运行的方法,其流程框图如图1所 示,包括以下各步骤(1)在用户提交的JAVA软件中嵌入水印,嵌入过程包括以下步骤(1-1)构建一个JAVA软件水印生成模块,根据提交JAVA软件的用户的身份生成JAVA软件水印;(1-2)构建一个包括多种水印嵌入方法的JAVA软件水印嵌入模块;(1-3)根据提交JAVA软件用户的要求,从JAVA软件水印嵌入模块中选择一种软件 水印嵌入方法,具体过程如下(1-3-1)若用户要求软件水印具有较强的鲁棒性,则选择动态水印嵌入方法;(1-3-2)若用户要求在较短时间内完成软件水印的嵌入和提取,则选择静态水印 嵌入方法;(1-3-3)若用户同时要求软件水印具有较强的鲁棒性及在较短时间内完成软件水 印的嵌入和提取,则选择半动态水印嵌入方法;(1-4)根据JAVA软件用户选择的水印嵌入方法,在用户提交的JAVA软件中添加步 骤(1-1)生成的JAVA软件水印,得到带有JAVA软件水印的JAVA软件,并输出一个水印存 根,将该水印存根存放到JAVA软件运行系统的指定目录中,水印存根中包括以下信息用 户身份、嵌入水印前的JAVA文件的文件名、嵌入水印后的JAVA文件的文件名、水印嵌入时 间、水印嵌入方法名称、水印提取方法名称以及水印和密钥;(2)根据上述水印存根中的提取水印方法名称,构建一个JAVA软件水印提取模 块;(3)构建一个JAVA软件水印验证模块,包括以下步骤(3-1)从JAVA软件运行系统的指定目录中读取上述水印存根,若读取成功,则转 步骤(3-2),若读取不成功,则转步骤(3-5);(3-2)对读取的水印存根中的水印提取方法进行验证,若JAVA软件水印提取模 块中存在一个与水印存根中的水印提取方法相对应的水印提取方法,则转步骤(3-3),若 JAVA软件水印提取模块中不存在一个与水印存根中的水印提取方法相对应的水印提取方 法,则转步骤(3-5);(3-3)采用上述读取的水印提取方法,读取水印存根中的密钥,从JAVA软件中提 取水印,若提取水印成功,则转步骤(3-4),若提取失败,则转步骤(3-5);(3-4)对提取的水印进行验证,若提取的水印与水印存根中的水印相一致,则允许 JAVA软件运行,若提取的水印与水印存根中的水印不一致,则转步骤(3-5);(3-5)水印验证失败,JAVA软件停止运行。为了使本发明提出的利用软件水印限制非法JAVA软件运行的方法能够在JAVA软 件运行系统运行,必需在JAVA软件运行系统中添加软件水印提取和验证模块,具体过程如 下1、从互联网上获取用于形成JAVA软件运行系统的源代码(版本为jdkl. 7);2、从JAVA软件运行系统源代码的JAVA命令执行过程中找到JAVA文件的入口 ;3、将本发明方法构建的JAVA软件水印提取模块和本发明构建的JAVA软件水印验 证模块添加到JAVA文件的入口处,其过程为首先将本发明构建的JAVA软件水印提取模块和本发明构建的JAVA软件水印验证 模块放在JAVA软件运行系统的扩展类加载目录下;然后采用JAVA语言与本地语言交互的方式在上述JAVA文件的入口处添加本发明 构建的水印提取模块和软件水印验证模块代码。
其次,在需要编译带有软件水印的提取与验证模块的JAVA软件运行系统的计算 机上安装软件openjdkl. 6及其相关依赖软件(例如make、gcc、ant、freetype),并设置软 件的使用环境;再次,执行make sanity命令,确保满足编译条件;最后,执行make命令,完成重编译过程。
权利要求
1. 一种利用软件水印限制非法JAVA软件运行的方法,其特征在于该方法包括以下各 步骤(1)在用户提交的JAVA软件中嵌入水印,嵌入过程包括以下步骤(1-1)构建一个JAVA软件水印生成模块,根据提交JAVA软件的用户的身份生成JAVA 软件水印;(1-2)构建一个包括多种水印嵌入方法的JAVA软件水印嵌入模块; (1-3)根据提交JAVA软件用户的要求,从JAVA软件水印嵌入模块中选择一种软件水印 嵌入方法,具体过程如下(1-3-1)若用户要求软件水印具有较强的鲁棒性,则选择动态水印嵌入方法; (1-3-2)若用户要求在较短时间内完成软件水印的嵌入和提取,则选择静态水印嵌入 方法;(1-3-3)若用户同时要求软件水印具有较强的鲁棒性及在较短时间内完成软件水印的 嵌入和提取,则选择半动态水印嵌入方法;(1-4)根据JAVA软件用户选择的水印嵌入方法,在用户提交的JAVA软件中添加步骤 (1-1)生成的JAVA软件水印,得到带有JAVA软件水印的JAVA软件,并输出一个水印存根, 将该水印存根存放到JAVA软件运行系统的指定目录中,水印存根中包括以下信息用户身 份、嵌入水印前的JAVA文件的文件名、嵌入水印后的JAVA文件的文件名、嵌入水印时间、嵌 入水印方法名称、提取水印方法名称以及水印和密钥;(2)根据上述水印存根中的提取水印方法名称,构建一个JAVA软件水印提取模块;(3)构建一个JAVA软件水印验证模块,包括以下步骤(3-1)从JAVA软件运行系统的指定目录中读取上述水印存根,若读取成功,则转步骤 (3-2),若读取不成功,则转步骤(3-5);(3-2)对读取的水印存根中的水印提取方法进行验证,若JAVA软件水印提取模块中存 在一个与水印存根中的水印提取方法相对应的水印提取方法,则转步骤(3-3),若JAVA软 件水印提取模块中不存在一个与水印存根中的水印提取方法相对应的水印提取方法,则转 步骤(3-5);(3-3)采用上述读取的水印提取方法,读取水印存根中的密钥,从JAVA软件中提取水 印,若提取水印成功,则转步骤(3-4),若提取失败,则转步骤(3-5);(3-4)对提取的水印进行验证,若提取的水印与水印存根中的水印相一致,则允许 JAVA软件运行,若提取的水印与水印存根中的水印不一致,则转步骤(3-5); (3-5)水印验证失败,JAVA软件停止运行。
全文摘要
本发明涉及一种利用软件水印限制非法JAVA软件运行的方法,属于软件保护技术领域。首先在用户提交的JAVA软件中嵌入水印,然后在JAVA软件运行系统中构建一个JAVA软件水印提取模块和一个JAVA软件水印验证模块,利用水印提取模块中的水印提取方法,从用户提交的JAVA软件中提取水印,对提取的水印进行验证,以确定用户提交的JAVA软件的合法性。本发明方法隐秘性好,安全性高,对于恶意软件的攻击有很好的抗攻击能力;本方法中软件水印的提取时间短,嵌入水印后的软件仍能保持良好的运行性能;本方法具有良好的移植性,能够根据用户需求来选择水印方法,因此可以更好地满足用户对JAVA软件运行安全性和运行效率的需求。
文档编号G06F21/22GK102122335SQ20101062177
公开日2011年7月13日 申请日期2010年12月24日 优先权日2010年12月24日
发明者余志伟, 戴鹏飞, 王建民, 王朝坤 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1