没有合适的资源?快使用搜索试试~ 我知道了~
一种软件水印算法研究.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 67 浏览量
2022-07-11
04:03:43
上传
评论
收藏 284KB PDF 举报
温馨提示
试读
54页
一种软件水印算法研究.pdf
资源推荐
资源详情
资源评论
摘要
软件水印是一种新型的软件保护方式,与传统的软件保护方法不同,它不仅仅
依赖于加密技术,而是通过在软件代码中嵌入某些特定的秘密信息,在必要的时候,
可以通过从软件中提取出这些特定的秘密信息以证明对软件的版权。
根据软件水印的加载时机,软件水印通常被分成静态软件水印和动态软件水印
两大类:静态软件水印存储在可执行程序代码中,动态软件水印存储在程序的执行
状态中。通常认为,静态软件水印的生成和检测比较简单,抗水印攻击的能力较差,
所以很少在实际软件保护中获得应用,而动态软件水印更有可能获得实际应用。
主要工作是:总结归纳了软件水印的理论及相关技术,并对现有软件水印算法
进行了详细的总结分类,在研究现有软件水印算法的基础上,给出了一种新型的动
态软件水印算法并且实现了一个简单的原型系统,该算法主要分成两个部分:水印
嵌入和水印检测。水印嵌入的过程是:首先将两个大质数的乘积采用中国剩余定理
划分成 n 个自然数,然后再将这 n 个自然数编码进 n 个平面环路树 PPCT(Planted
Plane Cubic Tree)结构中,将这些结构的构建代码嵌入软件代码中。水印的检测可以
通过调试软件来实现,让调试软件监视嵌入水印的受保护程序的执行,当检测到全
部 n 个 PPCT 结构后,将它们全部解码为 n 个自然数,最后利用中国剩余定理将这
n 个自然数还原出最初的两个大质数的乘积亦即最初的水印信息。最后对未来的工
作进行了展望。
关键词: 软件水印,动态图水印,平面环路树,中国剩余定理,抗攻击性
Abstract
Software watermarking is a new method used to protect the copyright of software.
Unlike traditional software-protecting methods dependent only on encryption techniques,
software watermarking embeds certain secret information into host software codes and
the embedded secret information can be extracted from the software when needed.
Software watermark can be divided into static software watermark and dynamic
software watermark. Static software watermark is stored in the executive codes while
dynamic software watermark in the executive state, it is easier to build and extract static
software watermark, and static software watermark is also more frangible to
dewatermarking attacks comparing with dynamic software watermark, in other words,
dynamic software is more robust than static software watermark.
This paper classifies existing algorithms for software watermarking and proposes a
new dynamic watermarking algorithm including embedding watermark and extracting
watermark and implements a prototype. In this algorithm, the product of two huge primes
is the secret information, which is further converted into n natural numbers and then
encoded into planted plane cubic tree structures which are embedded into the software
codes as software watermark. Debugging software is needed in the recognizing phase, it
is used to watch the execution state, when all planted plane cubic tree structures are
detected, they will be decoded into n natural numbers, and the original product of two
prime numbers will be got through Chinese Remaining Theory. At last, future work and
conclusion are given.
Key words: Software watermark Dynamic graph watermark
PPCT Chinese Remaining Theory Tamper-proof
1
1 绪论
1.1 课题背景
软件是一种比较典型的数字产品,与其他类型的数字产品类似,软件也存在非
常严重的盗版问题。Curtis 将软件盗版定义为非法地传播、复制、使用和出售软件
产品,而这些产品是被版权法保护或者是拥有使用许可的。近年来,软件盗版问题
越来越严重,IDC 在由商业软件联盟(BSA)委托进行的一项调查报告中说,2005 年
全球软件盗版率约为 35%,只比 2004 年的 36%下降了 1%,研究指出,如果全球软
件盗版率能够降低 10 个百分点,将能够创造 240 万个工作岗位和 4000 亿美元的经
济增长,软件盗版减少了开发商的收入,降低了软件厂商投资开发新产品的能力,
从而对整个软件产业造成了严重的损害和挑战
[1]
。
另外一方面,伴随着计算机技术的进步尤其是近年来网络技术的飞速发展,数
字产品的传播变得越来越便捷,一方面这有助于知识和技术的共享,但同时也带来
了一系列的负面效应,特别是对软件版权的保护造成了很大的隐患,从网络下载软
件是如此简单,很多互联网使用者往往在没有得到软件版权拥有者同意的情况下上
传或者下载受版权保护的软件,使软件开发商蒙受了无可估量的经济损失。
在这种情况下,人们开始探讨各种各样软件版权保护的技术,软件版权保护技
术现在正成为信息技术领域大家普遍关心的研究课题,由于受到商业利益驱动,并
得到了工业界的大力支持,软件版权保护技术成了计算机科学家们研究的热点问题,
遗憾的是,迄今为止,对于软件版权保护技术的研究并未获得突破性的进展。一般
认为,对软件产品版权的保护可以从两个方面入手:事前保护和事后保护。事前保
护指的是防止非法拷贝的问题,按照目前的技术手段,想要做到防止非法拷贝难度
很大,不太现实;而事后保护指的是如果软件的版权受到了侵犯,如何证明其版权
归属的问题,这是一个亟待解决的课题,而且在现有条件下相对容易达到。当前关
于软件版权保护技术的研究基本属于后一种即事后保护技术。
目前大多数软件版权保护方法主要是通过加密技术来进行的,这些方法通常又
分为软件方式加密和硬件方式加密。硬件方式加密指在软件安装和运行时需要特定
2
的硬件,比如软件狗,Vbox,SoftSENTRY,SecuROM 和 SafeDISC
[2]
等等;软件方
式加密不需要特定的硬件装置,所以相对成本比较低,但安全性比硬件加密稍差。
而当前的软件盗版主要分作两种形式:一种是简单的蓄意复制和分发软件拷贝,另
一种是在未经版权所有者同意的情况下,把软件的部分或者全部代码嵌入自己开发
的程序中。对于第一种即简单盗版方式,加密技术基本可以阻止盗版者使用软件,
对于第二种盗版方式,加密技术则无能为力,尤其是面对一些破解能力很强的盗版
者更是如此。因此需要新的技术来阻止这种威胁,软件水印技术应运而生,软件水
印技术也是属于事后追查方式的一种,它并不能完全阻止盗版,但是可以对盗版软
件有破坏作用并且对盗版行为提供证据。
1.2 国内外概况
1.2.1 软件水印技术的发展概况
软件水印是密码学、软件工程、算法设计、图论、程序设计等学科的交叉研究
领域,目前新西兰的 Auckland 大学、美国的 Arizona 大学、日本的 Osaka 大学在该
领域处于领先位置。在美国,软件水印研究方面的成果颇为显著,已经具备多项专
利
[3-6]
。迄今为止,比较著名的软件水印算法有 Davidson 水印算法、Moskowitz 水印
算法、 Stern 水印算法
[7]
、 Arboit 水印算法
[8]
、 Monden 水印算法
[9-10]
、
Collberg-Thomborson 算法等等。国内的浙江大学的吴建军等人提出了基于指令统计
分布
[11]
的软件水印。总体来说,国内对软件水印技术的研究尚刚刚起步。
1.2.2 当前有影响力的两个软件水印系统
1.SandMark 软件水印系统
SandMark
[12]
系统是 Arizona 大学的 Collberg 和 Townsend 基于 Collberg 和
Thomborson 在
[13]
中的理论基础构造的。它的目标程序语言是 Java。SandMark 不仅
可以为软件加水印,还可以用来研究软件混淆技术和防篡改技术。SandMark 系统的
第一个版本是使用 Java、Perl 和 Icon 语言写的,并且源代码现在是免费发布的,它
的最新版本是完全用 Java 构造的。SandMark 系统对 jar 文件进行操作。最近更新的
3
SandMark 系统中包括三个编码解码器,分别是基数k ,排列链表和 PPCT
[14]
编码解
码器。
SandMark 系统自动地选择该在哪里插入水印代码。系统将会找到所有可能的插
入水印源代码的位置,然后决定使用哪一个。但是,这种“自动”也是需要一定的人
工辅助的。在它的示例中,首先在一个源程序中选择一些位置,在这些位置增加了
访问标记程序的代码,然后在程序以某个特殊输入序列运行时,跟踪这些位置,选
择合适的嵌入点。其次,水印图的不同部分在程序的不同段中被构造,并且在程序
执行时的不同时间构造。这就需要更为复杂的机制来发现插入的位置。水印结构将
被分为很多的片断,这些片断在程序获得一个特殊输入序列时将被分别单独地构造。
当这个特定输入序列被全部接受后,所有水印结构的片段都将被构造,然后整个的
水印结构将被创建,从而分析程序的堆内存中的数据结构就可以识别出水印。这个
算法在 SandMark 系统中被实现了。最后,水印只有当一个预先定义的秘密输入序
列出现时才被构造,如果这个输入没有出现,那么水印结构中的一部分甚至是全部
都不会被构造。这项技术隐藏水印代码免于攻击者的注意,从而简单的动态数据分
析和执行跟踪分析将不能轻易地发现水印结构。嵌入过程是按照下面的步骤进行的。
(1)注释(Annotation)。这一个步骤用来发现在一个候选程序中哪里可以插入一
个水印代码片段。在所有可能的位置调用 SandMark 的标记程序,SandMark 将决定
哪些位置被用来嵌入水印。
(2)跟踪(Tracing)。这一个步骤用来发现哪些标记过的潜在位置与预先定义的
秘密输入序列有关。在程序以这个秘密输入序列执行的过程中,一些标记过的地方
将被选中,这些选中的地方将用来添加水印代码。
(3)嵌入(Embedding)。这是真正的嵌入步骤。在这个步骤中,将产生一个与给
定的水印数字(或者字符串)对应的图结构,并且根据选中的位置的数目,水印图将
被分解为一定数量的片段,创建这些片断的代码被插入到候选程序中那些选中的位
置。关于所有片断的根结点的信息同时被存储,以便将这些片断合并成一个整体的
水印结构。通过以预先定义的秘密输入序列来运行程序,所有的水印片断将被构造
并且最后将被合并,检查堆内存,水印图结构将被发现,水印被提取。
2.JavaWiz 软件水印系统
剩余53页未读,继续阅读
资源评论
- dianxin20232023-05-31感谢资源主的分享,很值得参考学习,资源价值较高,支持!
老帽爬新坡
- 粉丝: 79
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功