软件水印是近年来出现的软件产品版权保护技术,可以用来标识作者、发行者、所有者、使用者等,并携
带有版权保护信息和身份认证信息,可以鉴别出非法复制和盗用的软件产品.目前在软件版权保护方面,人们主要是通过加密的方式进行,比如:软件狗、Vbox、SoftSENTRY、SecuROM 和SafeDISC 等.最近出现的软件水印则是另一种全新的软件保护措施.
所谓的软件水印就是把程序的版权信息和用户身份信息嵌入到程序中.
软件水印分类
根据水印的加入位置,软件水印可以分为代码水印和数据水印.代码水印隐藏在程序的指令部分中,而数据
水印则隐藏在包括头文件、字符串和调试信息等数据中.根据水印被加载的时刻,软件水印可分为静态水印和
动态水印.静态水印存储在可执行程序代码中,比较典型的是把水印信息放在安装模块部分,或者是指令代码
中,或者是调试信息的符号部分.对于Java 程序,水印信息也可以隐藏在类文件(包括常量池表、方法表、行号表)
的任何部分中.静态水印又可以进一步分为静态数据水印和静态代码水印.区别于静态水印,动态水印则保存在
程序的执行状态中,而不是程序源代码本身.这种水印可用于证明程序是否经过了迷乱变换处理.动态水印主要
有3 类:Easter Egg 水印、数据结构水印和执行状态水印.其中,每种情况都需要有预先输入,然后根据输入,程序
会运行到某种状态,这些状态就代表水印.
1.1 静态数据水印
数据水印很容易产生和识别,是一种常见的水印.这种水印可以在程序中的一些数据中体现出来,因而很容
易被迷乱攻击破坏.比如把所有的数据分解成一系列数据,然后散布到整个程序中,这样代表水印信息的数据也
被分解,增加了水印检测的难度;或者用一个产生这些数据的子程序来代替这些数据,这样在程序中就找不到该
数据的原型,也就无法检测水印.
1.2 静态代码水印
利用人类视觉和听觉的不敏感性,多媒体水印通常是加在载体上的冗余部分.也可以用相同的方式来构造
代码水印,因为目标代码也包含了冗余信息.比如通过调整两条无依赖关系指令的顺序可以嵌入1bit 的水印信
息.IBM 提出了一种把寄存器出入栈的顺序作为水印的方法,同样可以通过排列有m 个分支的case 语句的顺序
来编码log(m!) 比特信息.Davidson[3]描述一种类似的代码水印,它在程序的控制流图的一个基本模块中对软件
的序列号进行编码.
许多代码水印都经不起一些简单的水印攻击(比如,调整指令的顺序).既然交换指令的顺序不影响原程序,
那么就可以把源代码中所有满足这个条件的指令都交换位置,这样就无法检测到先前加入的水印了.
很多代码迷乱技术能够破坏代码水印.对于Davidson 的方法,只要能够准确地找到控制流图的基本模块.我
们很容易通过插入一个布尔值始终为TRUE 的条件分支破坏这个基本模块,使水印无法检测.通过迷乱变换,所
有静态结构水印都会被破坏.内嵌、循环变换和代码都是常见的优化技术,这些技术也很容易破坏静态代码水
印.Moslkowitz[4]提出了一种具有防篡改的水印算法,其基本思想是把关键代码的一部分隐藏在软件的资源(如
图标、声音)中,并且程序会不时地从资源中提取出这段代码执行,如果资源被破坏,那么程序就会出错.
静态代码水印更难抵抗语义保持变换攻击.出于安全考虑,Java 程序不能检测自己的代码,比如语句if
(instruction #100!="add" ) exit()在Java 语法中是不允许的,虽然在其他语言如C 中是可能的.但是由于这种语句的特殊性,它要检查指令,而不是可执行程序数据段中的数据,所以很容易找到这种语句在程序中的位置.
总之,尽管静态水印比较简单,但是由于它容易遭到破坏、鲁棒性不好,因而不能得到广泛应用.
1.3 Easter Egg水印
这种水印无须检测,它通过一个输入产生一个输出.比如输入一个字符串,然后屏幕上就显示出版权信息或
一幅图像.Easter Egg 水印的主要问题是水印在程序中的位置容易找到,一旦输入正确信息,用softice 这样的标
准调试软件就可以跟踪程序执行情况,进而找到水印的位置,所以这种水印不是很安全。
1.4 动态数据结构水印
这种水印的机制是:输入特定信息激发程序把水印信息隐藏在堆、栈或者全局变量域等程序状态中.当所
有信息都输完之后,通过检测程序变量的当前值来进行水印提取.可以安排一个提取水印信息的进程或在调试
器下运行程序查看变量取值.
与Easter Egg 水印不同的是,动态数据水印没有输出,而且水印的提取过程不是封装在应用程序中,因而不
容易找到水印在程序中的位置,但是这种水印也经不住迷乱变换的攻击.
1.5 动态执行过程水印
当程序在特定的输入下运行时,对程序中指令的执行顺序或内存地址走向进行编码生成水印.水印检测则
通过控制地址和操作码顺序的统计特性来进行.
分享到:
相关推荐
利用小波变换产生的水印具有良好的视觉效果和抵抗多种攻击的能力,因此基于 DWT的数字水印技术是目前的主要研究方向。本案例围绕基于小波的数字水印技术,对数字水印的原理、算法、流程进行讲解,并对数字水印攻击...
视频去水印"是指将视频文件中嵌入的水印(通常是文字、图片、或者Logo等标识)从视频中去除或者模糊处理的过程。水印通常被添加到视频中,以...使用人工智能技术: 一些深度学习模型和人工智能技术可以用于检测和去除
Apowersoft Watermark Remover 是香港 Apowersoft 公司开发的一款专业的一键清除图片/视频的水印和瑕疵,让您轻松摆脱任何水印、污渍、标志等软件,完美去除各种水印瑕疵,自由选择需要清除范围,支持批量去除水印。...
TSR Watermark Image Pro 是获取照片水印的简单快捷的方法,易用性使其可以快速学习,即使对于非技术人员也是如此。如果您的员工需要在网上上传照片之前添加水印,TSR Watermark Image Pro 软件是一个很好的选择。您...
本文介绍了如何使用JAVA实现数字水印,主要用到了java.awt包中的AlphaComposite类,需要学习制作水印的朋友可以参考下
《系统架构设计师教程》作为全国计算机技术与软件专业技术资格(水平)考试指定用书,系统地介绍了系统架构设计师的基本要求和应掌握的重点内容。《系统架构设计师教程》共分21章,对计算机网络基础、信息系统基础、...
2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能...
合肥工业大学数据结构课程设计-二值图像数字水印技术的实现C++源码+文档说明 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分...
毕业设计:基于小波变换的数字水印技术研究与实现(源码 + 数据库 + 说明文档)
基于盲水印及区块链技术的图片版权存证源码+全部资料(毕业设计).zip基于盲水印及区块链技术的图片版权存证源码+全部资料(毕业设计).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传...
2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能...
2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能...
MATLAB GUI设计的程序设计,实现内容如标题所示。可以导入MATLAB界面GUI,不同按钮,axes等布局,可以根据自己需求进行改进和...适合人群:小白,入门者,初入职场技术人员,进阶者,课程设计教程辅助等等。学习愉快!
[图片动画]强少爷多功能图片随机显示...1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
MATLAB GUI设计的程序设计,实现内容如标题所示。可以导入MATLAB界面GUI,不同按钮,axes等布局,可以根据自己需求进行改进和...适合人群:小白,入门者,初入职场技术人员,进阶者,课程设计教程辅助等等。学习愉快!
MATLAB GUI设计的程序设计,实现内容如标题所示。可以导入MATLAB界面GUI,不同按钮,axes等布局,可以根据自己需求进行改进和...适合人群:小白,入门者,初入职场技术人员,进阶者,课程设计教程辅助等等。学习愉快!
MATLAB GUI设计的程序设计,实现内容如标题所示。可以导入MATLAB界面GUI,不同按钮,axes等布局,可以根据自己需求进行改进和...适合人群:小白,入门者,初入职场技术人员,进阶者,课程设计教程辅助等等。学习愉快!
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
为此,我们为您带来了Umi-OCR——一款基于PaddleOCR技术的开源OCR图片转文字识别软件。它能够将图片中的文字快速、准确地转换为可编辑的文本,为您的工作和学习提供极大的便利。 推荐理由: 开源且免费:Umi-OCR是...
这一版是非扫描文字版,质量很高,非常清晰,并且添加了完整的书签目录,方便大家阅读,我上传的资源基本都是自己整理过书签或者去除水印的,主要与C++,设计模式,架构,QT等有关系,更多的可以去我的资源页看看。...