软件水印(
软件 WaterMarking)是数字水印技术的一种,主要用于软件产品的版权保护。它可以用于标识软件的作者、发行商、所有者以及使用者等信息,并包含版权保护信息和身份认证信息。当软件被
非法复制或盗用时,软件水印能够帮助鉴别其合法性。
技术分类
静态水印
静态水印是一种常见的软件水印类型,它通常被嵌入在可执行程序代码中。具体实现方式包括但不限于将水印信息放置在安装模块、指令代码或调试信息的符号部分。对于Java程序,水印信息还可以隐藏在类文件的不同部分,如常量池表、方法表和行号表。
静态数据水印
静态数据水印是静态水印的一种形式,它侧重于在程序代码中嵌入数据。
静态代码水印
另一种静态水印的形式是静态代码水印,它强调将水印信息嵌入在程序的代码中。
动态水印
动态水印则是指那些存在于程序执行状态中的水印,而非直接嵌入在程序源代码中。这类水印可以通过特定的输入触发程序进入特定的状态,这些状态即构成了水印的信息。动态水印主要包括三种类型:Easter Egg水印、
数据结构水印和执行状态水印。
评价标准
评估软件水印技术的有效性和安全性,需要考虑三个关键指标:
- **隐藏信息量**(adatote),即程序代码中嵌入的水印数据量。
- **隐蔽性**(staeh),指的是嵌入数据对于外部观察者的不可察觉程度。
- **弹性**(resilecn),即嵌入数据对各种攻击的抵抗能力。
针对软件水印的攻击行为包括四种常见的方式:
- **去除攻击**(subtractive attack),旨在从软件中移除水印信息。
- **变形攻击**(disotrtive attack),通过对水印程序进行模糊变换,使得攻击后软件中的水印难以提取或失去版权证明的作用。
- **添加攻击**(additive attack),向软件中添加新水印,干扰原有水印的提取或使其失去版权证明的作用。
- **共谋攻击**(collusive attack),通过对比多个不同的软件版本,识别并破坏嵌入的水印。
应用与发展
软件水印技术作为一个新兴的研究领域,自国际学术界开始关注以来,一直处于快速发展阶段。