您好, 访客   登录/注册

云平台中软件水印的应用研究

来源:用户上传      作者:

  摘要:为了能在云平台上保护软件版权,研究了软件水印算法的类型,对静态水印算法和动态水印算法的优缺点进行了分析。研究-常见的攻击软件水印的方式,提出了相应的防御措施。分析了软件水印算法的评价指标,并阐述了如何选择适用于云平台的软件水印算法。并在前面研究的基础上提出了如何在云平台中应用软件水印的方法和步骤。
  关键词:软件版权;软件水印;云平台
  中图分类号:TP312 文献标识码:A
  文章编号:1009-3044(2020)20-0098-02
  Research on the Application of Soft,vare Watermark in Cloud Platform
  YAN Hui
  (Guangdong Baiyun University, Guangzhou 510450,China )
  Abstract:ln order to protect software copyright on cloud platform, the types of software watermarking algorithms are studied. and theadvantages and disadvantages of static and dynamic watermarking algorithms are analyzed. This paper studies the common ways ofattacking software ,~'atermark, and puts fonvard the corresponding defense measures. This paper analyzes the evaluation index ofsoftware watermarking algorithm, and expounds how to select software watermarking algorithm suitahle for cloud platform. And onthe basis of the previous research. the method and steps of how to apply software watermark in cloud platform are proposed.Key words:software copyright; software watermark; cloud platform
  1背景
  軟件是计算机系统的重要组成部分,软件由计算机程序和相关的文档来组成。软件是一种智力产品,记录在相应的介质上,软件很容易被复制,这种特点使得软件侵权现象非常严重。软件侵权会损害软件企业的切身利益,对分销商和服务商也会产生相应的损害,甚至会危害到政府的税收。
  对计算机软件的侵权行为一般有两种形式:一种是复制程序的基本要素或结构;另一种是按一定的规则、顺序只复制软件的部分代码。这两种行为都构成了软件的侵权。
  目前主要从法律和技术两个方面对软件版权进行保护。法律方面,制定相应的法律法规,加强相关的法律监管,如我国修订了《中华人民共和国著作权法》、制定了《计算机软件保护条例》来保护软件版权。技术方面,一般通过加密、序列号等方式来防止软件盗版、阻止非法软件运行。
  软件水印是近年来兴起的一种软件保护技术,可以用来标识作者、开发时间、使用者等相关信息,携带有版权保护信息和身份认证信息,可以鉴别出非法复制和盗用的软件产品。目前对水印的研究多以理论研究为主,集中在研究软件水印算法并比较算法的优劣等方面,较少应用于实践。如果能研究出应用型较强的软件水印算法,通过在软件中嵌入水印,在使用时提取出水印,即可鉴别该软件的版权归属,防止软件侵害行为的发生。
  随着云计算的发展,很多软件转移到云平台上存储和运行,而云平台上的安全威胁也会影响到软件的版权保护。软件水印技术作为信息安全领域的重要组成部分,研究如何在云平台应用软件水印技术来保护软件版权具有积极的意义。
  2软件水印算法
  2.1软件水印算法的类型
  近年来,国内外研究人员对软件水印展开了广泛的研究,包括软件水印算法的研究、软件水印在软件版权保护、软件安全运行方面的研究。目前对软件水印算法的研究结果包括各类软件水印算法的设计、实现和改进,根据是否需要执行程序,可将软件水印算法分为静态水印算法和动态水印两大类。
  静态水印算法的主要思路是直接将水印信息隐藏在程序中,不需要运行程序即可提取出水印信息。根据软件水印嵌入到程序中的位置,又可以分为数据水印和代码水印两种。数据水印通常做法是将水印信息转换为字符串之后嵌入到程序中的某个位置,插入的水印信息即可用来识别软件的版权。数据水印算法比较容易实现,但是容易被攻击者识别,被删除之后就起不到版权保护的作用了。代码水印通常是通过特定的程序结构来嵌入软件水印,例如在函数名中嵌入水印片段,通过特定的函数调用次序,来生成软件水印。这种方法也比较容易被攻击者识别,如果攻击者改变了函数名或者改变了函数调用次序,那么软件水印就会失效。综合来说,静态水印算法的实现比较简单,也比较容易提取软件水印,但是容易被攻击者识别并破解,鲁棒性不强。
  动态水印算法将水印信息通过特定的算法结合密钥嵌入在程序代码中,需要运行程序,在程序执行的过程中动态地生水印,通过水印提取算法,才能将水印信息提取出来。动态水印算法常见的有基于动态图的、基于改进动态图的、基于R-Tree的等等。动态图软件水印,将水印信息隐藏在某种拓扑结构中,通过代码的执行来表示水印信息,需要对程序的行为或者状态进行分析来识别水印。动态路径算法是利用程序执行路径来嵌入水印,通过程序的分支结构来表示水印的片段。动态水印算法的实现相对复杂,抗攻击性较强,但是通用性较差。   2.2对软件水印的攻击及防御措施
  对软件水印的攻击类型主要有以下几种:
  1)删除水印:攻击者发现软件水印之后,在不影响软件运行的情况下将其删除,则软件版权失去保护,无法证明软件的版权;
  2)添加水印:攻击者将白己的水印信息嵌入软件中,在软件中存在两种水印,从而混淆了软件的版权信息;
  3)水印扭曲:攻击者通过在不影响软件运行的情况下,对程序进行修改,从而使得软件水印失效。
  针对软件水印的攻击,目前常见的防御措施有代码混淆技术和防篡改技术来对抗攻击。
  2.3软件水印算法的评价指标
  用来评价软件水印算法的指标主要有隐蔽性、可靠性、性能等方面。在程序中嵌入的软件水印应该能够被正确提取和识别,不容易被攻击者发现并修改,并且算法不应该太复杂,要求容易实现且时间复杂度不能太高,否则会降低软件的性能。
  2.4选择适用于云平台的软件水印算法
  现在,云平台的发展很迅速,许多应用程序都存储、运行在云平台中。怎么保护云环境中的软件、识别非法软件及阻止非法软件的运行是目前亟待解决的问题。而Java技术在云计算中的应用是比较广泛的,常见的应用于Java程序的软件水印算法有基于字节码的水印算法、基于函数调用的水印算法、基于虚方法的水印算法等。在选择适用于Java程序的软件水印算法时,除了要考虑软件水印算法的可靠性、隐蔽性、性能等指标之外,还需要考虑在云平台上如何验证软件版权及阻止非法软件运行。因此,构建能够对软件水印进行检测的JVM组件也是一个重要的研究方向。
  3在云平台中应用软件水印
  要在云平台中应用软件水印,其实施过程主要包括嵌入软件水印、提取软件水印、验證软件水印等过程,如图1所示。
  3.1嵌入水印信息
  首先确定原始水印信息,可包括厂商名、作者名、版本号、日期等版权信息。然后通过加密算法将原始水印信息进行加密,成为加密后的水印信息。再通过嵌入算法将加密后的水印信息嵌入到原始程序P中,得到嵌入水印后的程序P’。嵌入水印的过程可使用以下公式来表示:embed(P,W,K)->P’。其中,P代表原始程序,W代表水印信息,K代表密钥。
  3.2部署
  将程序P’部署在云平台中,由相应的JVM组件支持软件水印的提取和识别。
  3.3提取水印信息
  云平台上运行程序P’时,通过提取算法将嵌入在程序P’中的加密水印信息进行提取,然后通过解密算法对其进行解密,得到解密后的水印信息。提取水印的过程可使用以下公式来表示:recognize(P’,K)->P。其中,P’表示嵌入水印后的程序,K表示密钥,P表示提取水印后的程序。
  3.4验证水印信息
  在云平台上,将解密后的水印信息与软件的版权信息进行对比,看信息是否一致。如果两者信息一致,则该软件的版权明确;如果两者信息不一致,则该软件的版权不明确,可在云平台中暂停该软件的使用,达到保护软件版权的目的。
  4结束语
  本文研究在云平台中软件水印的关键技术,包括软件水印算法的研究、如何在软件中嵌入水印、在云平台中提取软件水印并验证等这几个方面的内容。通过软件水印的应用,对于保护软件版权、促进软件行业的健康发展、保护国家经济利益等方面具有具有一定的应用价值及社会意义。
  参考文献:
  [1]贺国盛.云平台下基于软件水印的Java安全运行技术研究[D].成都:电子科技大学,2018.
  [2]余志伟.云平台中水印感知的Java安全运行环境关键技术研究[D].北京:清华大学,2013.
  [3]王叶茂,车生兵.软件水印及其研究现状概述[J].计算机应用与软件,2015,32(4): 6-10.
  [4]孙光,樊晓平,蒋望东,等.云计算环境约束下的软件水印方案[J].网络与信息安全学报,2016,2(9): 12-21.
  [5].李宏宇.云环境下的软件保护方案[J].电脑开发与应用,2013, 26(3): 49-52.
  [6]李奎,陈建平,施佺,等.一种Java软件水印植入虚方法的永假式构造[J].计算机科学,2013,40(12): 211-214.
  [7]刘嘉怡,燕雪峰.一种基于动态图编码的软件水印方案[J].计算机科学,2017,44(9): 131-135.
  [8]余志伟.云平台中水印感知的Java安全运行环境关键技术研究[D].北京:清华大学,2013.
  【通联编辑:谢媛媛】
  收稿日期:2020-05-08
  基金项目:2019年度广东白云学院校级科研项目(项目编号:2019BYKYK02)
  作者简介:颜慧(1979-),女,广西横县人,讲师,硕士,主要研究方向为软件工程。
转载注明来源:https://www.xzbu.com/8/view-15299972.htm