2022年01-静态数据水印攻击 .pdf
实 验 报 告课程名称:计算机信息安全技术实验项目:静态数据水印攻击实验时间:2019.05.28 实验班级:16 计师 2 班指导教师:吕巨建计算机科学学院实验楼 310 实验室二一九年 05 月 28 日名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 广东技术师范大学实验报告学院:计算机学院专业:计算机科学与技术(职教师资 ) 班级:16 计师 2班成绩:姓名:周耀勇学号:2016035144104 组别:组员:实验地点:实验楼 310 实验日期:2019.05.28 指导教师签名:实验 4 项目名称:静态数据水印攻击4.1任务描述某人收到了自己定制的软件时,发现软件的数字水印有被篡改的痕迹,询问开发者后得知该软件使用的是静态数据水印,水印是如何被攻击的呢?4.2课程目标了解数字水印的概念。了解数字水印的分类。了解数字水印的特性。了解数字水印的应用。了解静态数字软件水印性能。了解数字水印的攻击。掌握静态数据水印攻击过程。4.3数字水印简介数字水印( Digital Watermarking )技术是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改。但可以被生产方识别和辨认。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、 传送隐秘信息或者判断载体是否被篡改等目的。 数字水印是保护信息安全、实现防伪溯源、版权保护的有效办法,是信息隐藏技术研究领域的重要分支和研究方向。4.4数字水印分类4.4.1按特性划分按水印的特性可以将数字水印分为鲁棒数字水印和脆弱数字水印两类。鲁棒水印(Robust Watermarking)主要用于在数字作品中标识著作权信息,利用这种水印技术在多媒体内容的数据中嵌入创建者、所有者的标示信息,或者嵌入购买者的标示(即序列号)。在发生版权纠纷时, 创建者或所有者的信息用于标示数据的版权所有者,而序列号用于追踪违反协议而为盗版提供多媒体数据的用户。用于版权保护的数字水印要求有很强的鲁棒性和安全性,除了要求在一般图像处理(如:滤波、加噪声、替换、压缩等)中生存外,还需能抵抗一些恶意攻击。预习情况操作情况考勤情况数据处理情况名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 脆弱水印( Fragile Watermarking ),与鲁棒水印的要求相反,脆弱数字水印主要用于完整性保护和认证,这种水印同样是在内容数据中嵌入不可见的信息。当内容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。根据脆弱水印的应用范围,脆弱水印又可分为选择性和非选择性脆弱水印。非选择性脆弱水印能够鉴别出比特位的任意变化, 选择性脆弱水印能够根据应用范围选择对某些变化敏感。例如, 图像的选择性脆弱水印可以实现对同一幅图像的不同格式转换不敏感,而对图像内容本身的处理(如: 滤波、加噪声、替换、压缩等)又有较强的敏感性,即:既允许一定程度的失真,又要能将特定的失真情况探测出来。4.4.2按附载媒体划分按水印所附载的媒体,我们可以将数字水印划分为图像水印、音频水印、视频水印、文本水印以及用于三维网格模型的网格水印等。随着数字技术的发展,会有更多种类的数字媒体出现,同时也会产生相应的水印技术。4.4.3按检测过程划分按水印的检测过程可以将数字水印划分为盲水印和非盲水印。非盲水印在检测过程中需要原始数据或者预留信息,而盲水印的检测不需要任何原始数据和辅助信息。一般来说, 非盲水印的鲁棒性比较强,但其应用需要原始数据的辅助而受到限制。盲水印的实用性强,应用范围广。 非盲水印中, 新出现的半盲水印能够以少量的存储代价换来更低的误检率、漏检率,提高水印算法的性能。目前学术界研究的数字水印大多数是盲水印或者半盲水印。4.4.4按内容划分按数字水印的内容可以将水印划分为有意义水印和无意义水印。有意义水印是指水印本身也是某个数字图像(如商标图像) 或数字音频片段的编码;无意义水印则只对应于一个序列。有意义水印的优势在于,如果由于受到攻击或其他原因致使解码后的水印破损,人们仍然可以通过视觉观察确认是否有水印。但对于无意义水印来说,如果解码后的水印序列有若干码元错误,则只能通过统计决策来确定信号中是否含有水印。4.4.5按用途划分不同的应用需求造就了不同的水印技术。按水印的用途, 我们可以将数字水印划分为票证防伪水印、版权保护水印、篡改提示水印和隐蔽标识水印。票证防伪水印是一类比较特殊的水印,主要用于打印票据和电子票据、各种证件的防伪。一般来说, 伪币的制造者不可能对票据图像进行过多的修改,所以, 诸如尺度变换等信号编辑操作是不用考虑的。但另一方面,人们必须考虑票据破损、图案模糊等情形,而且考虑到快速检测的要求,用于票证防伪的数字水印算法不能太复杂。版权保护水印是目前研究最多的一类数字水印。数字作品既是商品又是知识作品,这种双重性决定了版权标识水印主要强调隐蔽性和鲁棒性,而对数据量的要求相对较小。篡改提示水印是一种脆弱水印,其目的是标识原文件信号的完整性和真实性。隐蔽标识水印的目的是将保密数据的重要标注隐藏起来,限制非法用户对保密数据的使用。4.4.6按隐藏位置划分按数字水印的隐藏位置,我们可以将其划分为时(空)域数字水印、频域数字水印、时/ 频域数字水印和时间/ 尺度域数字水印。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 时(空)域数字水印是直接在信号空间上叠加水印信息,而频域数字水印、时/ 频域数字水印和时间 / 尺度域数字水印则分别是在DCT变换域、时/ 频变换域和小波变换域上隐藏水印。随着数字水印技术的发展,各种水印算法层出不穷,水印的隐藏位置也不再局限于上述四种。应该说,只要构成一种信号变换,就有可能在其变换空间上隐藏水印。4.4.7按透明性划分按数字水印是否透明的性质,可分为可见水印和不可见水印两种。可见水印就是人眼能看见的水印, 比如照片上标记的拍照的日期或者电视频道上的标识等。不可见水印就是人类视觉系统难以感知的,也是当前数字水印领域关注比较多的。4.5数字水印特性数字水印系统必须满足一些特定的条件才能使其在数字产品版权保护和完整性鉴定方面成为值得信赖的应用体系。一个安全可靠的水印系统一般应满足如下要求:1、隐蔽性也称不可感知性,即对于不可见水印处理系统,水印嵌入算法不应产生可感知的数据修改, 也就是水印在通常的视觉条件下应该是不可见的,水印的存在不会影响作品的视觉效果。2、鲁棒性水印必须很难去掉( 希望不可能去掉) ,当然在理论上任何水印都可以去掉,只要对水印的嵌入过程有足够的了解,但是如果对水印的嵌入只是部分了解的话,任何破坏或消除水印的企图都应导致载体严重的降质而不可用。3、抗篡改性与抗毁坏的鲁棒性不同,抗篡改性是指水印一旦嵌入到载体中,攻击者就很难改变或伪造。鲁棒性要求高的应用,通常也需要很强的抗篡改性。在版权保护中,要达到好的抗窜改性是比较困难的。4、水印容量嵌入的水印信息必须足以表示多媒体内容的创建者或所有者的标志信息,或是购买者的序列号。 这样在发生版权纠纷时,创建者或所有者的信息用于标示数据的版权所有者,而序列号用于标示违反协议而为盗版提供多媒体数据的用户。5、安全性应确保嵌入信息的保密性和较低的误检测率。水印可以是任何形式的数据,比如数值、文本、图像等。所有的水印都包含一个水印嵌入系统和水印恢复系统。6、低错误率即使在不受攻击或者无信号失真的情况下,也要求不能检测到水印( 漏检、 false -negative) 以及不存在水印的情况下,检测到水印( 虚检、 false - positive) 的概率必须非常小。4.6数字水印应用4.6.1数字作品的知识产权保护数字作品(如电脑美术、扫描图像、数字音乐、视频、三维动画)的版权保护是当前的热点问题。 由于数字作品的拷贝、修改非常容易,而且可以做到与原作完全相同,所以原创者不得不采用一些严重损害作品质量的办法来加上版权标志,而这种明显可见的标志很容易被篡改。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 15 页 - - - - - - - - - “数字水印” 利用数据隐藏原理使版权标志不可见或不可听,既不损害原作品,又达到了版权保护的目的。目前,用于版权保护的数字水印技术已经进入了初步实用化阶段,IBM公司在其 “数字图书馆” 软件中就提供了数字水印功能,Adobe公司也在其著名的Photoshop软件中集成了Digimarc公司的数字水印插件。然而实事求是地说,目前市场上的数字水印产品在技术上还不成熟,很容易被破坏或破解,距离真正的实用还有很长的路要走。4.6.2商务交易中的票据防伪随着高质量图像输入输出设备的发展,特别是精度超过1200dpi 的彩色喷墨、激光打印机和高精度彩色复印机的出现,使得货币、支票以及其他票据的伪造变得更加容易。另一方面, 在从传统商务向电子商务转化的过程中,会出现大量过度性的电子文件,如各种纸质票据的扫描图像等。即使在网络安全技术成熟以后,各种电子票据也还需要一些非密码的认证方式。 数字水印技术可以为各种票据提供不可见的认证标志,从而大大增加了伪造的难度。4.6.3证件真伪鉴别信息隐藏技术可以应用的范围很广,作为证件来讲, 每个人需要不只一个证件,证明个人身份的有:身份证、护照、驾驶证、出入证等;证明某种能力的有:各种学历证书、资格证书等。国内目前在证件防伪领域面临巨大的商机,由于缺少有效的措施,使得“造假”、“买假”、 “用假”成风,已经严重地干扰了正常的经济秩序,对国家的形像也有不良影响。通过水印技术可以确认该证件的真伪,使得该证件无法仿制和复制。4.6.4声像数据的隐藏标识和篡改提示数据的标识信息往往比数据本身更具有保密价值,如遥感图像的拍摄日期、经/ 纬度等。没有标识信息的数据有时甚至无法使用,但直接将这些重要信息标记在原始文件上又很危险。数字水印技术提供了一种隐藏标识的方法,标识信息在原始文件上是看不到的,只有通过特殊的阅读程序才可以读取。这种方法已经被国外一些公开的遥感图像数据库所采用。此外, 数据的篡改提示也是一项很重要的工作。现有的信号拼接和镶嵌技术可以做到“移花接木”而不为人知,因此,如何防范对图像、录音、录像数据的篡改攻击是重要的研究课题。基于数字水印的篡改提示是解决这一问题的理想技术途径,通过隐藏水印的状态可以判断声像信号是否被篡改。4.6.5隐蔽通信及其对抗数字水印所依赖的信息隐藏技术不仅提供了非密码的安全途径,更引发了信息战尤其是网络情报战的革命,产生了一系列新颖的作战方式,引起了许多国家的重视。网络情报战是信息战的重要组成部分,其核心内容是利用公用网络进行保密数据传送。迄今为止,学术界在这方面的研究思路一直未能突破“文件加密”的思维模式,然而,经过加密的文件往往是混乱无序的,容易引起攻击者的注意。网络多媒体技术的广泛应用使得利用公用网络进行保密通信有了新的思路,利用数字化声像信号相对于人的视觉、听觉冗余,可以进行各种时(空)域和变换域的信息隐藏,从而实现隐蔽通信。4.7软件水印4.7.1软件水印概念名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 软件水印是数字水印技术的分支,是近年来出现的软件产品版权保护技术。最近, 出现了几种保护软件版权的技术,一般情况下, 水印技术所用来嵌入的版权信息是以数字媒体形式表示的二进制数据。这种方法经常用于多媒体产品,例如图像, 音频和视频。该方法将版权信息嵌入到多媒体产品中,并在需要信息时识别插入的信息。如果这些产品的版权信息是不确定的,插入的版权可以是一个证据,通过识别先前插入的信息来验证产品的所有权。4.7.2静态软件水印静态软件水印是一种通过软件分析来识别嵌入到程序中的水印的无定向的方法。这种方法不需要通过执行程序来识别水印。因此, 它比动态的方法更方便,因为软件的执行需要额外的资源去应对各种各样的对执行环境所造成的影响。4.7.2.1静态数据水印数据水印是将水印嵌入到软件中的最简单的方法。这种方法将包含数据水印的信息插入软件中指定的位置。例如,可以在软件代码中插入版权信息如下:字符串水印 = “版权 ?2014. 水印信息 . ” ; 插入的版权信息可以被用来识别软件的所有权。这种简单的嵌入与识别水印的方法可以非常容易的应用到软件中。然而, 由于嵌入的水印信息很容易暴露,所以它很容易被开发者或用户发现并删除。4.7.2.2静态代码水印代码水印是通过在程序中添加额外的代码信息的方式来嵌入水印信息。依据程序结构分析的方法, 这种方式可以以各种形式被应用。作为这些方法的一个应用程序,可以通过采用分支指令来表示程序的版权信息,使用分支指令的基本块的顺序来表示。Davidson 等人提出了一种通过重新定位基本块的顺序嵌入水印的方法。插入的水印信息是按照字典顺序重新排序的基本块。水印信息可以通过对重新排序的基本块的解释来加以识别。 基本块的顺序仍保持在它的原始顺序,之前嵌入的水印可以被识别。这种类型的水印不是暴露在外部的程序。因此, 这种方法比前面描述的数据水印的隐蔽性要好。然而,这种插入水印信息的方法需要额外的添加程序代码。它还需要分析在一个程序中的基本块的顺序以识别嵌入式水印。4.8静态水印性能比较4.8.1可靠性在数据水印中, 水印被直接嵌入到软件本身的代码中,而不需要隐藏水印的存在。因此,它是软件版权的一个明显的证据。然而, 因为嵌入的水印是被公开的,所以通过代码分析软件很容易识别。 在代码水印中, 水印被嵌入到程序代码中。当一个嵌入了水印的程序被用户使用并改变后, 可能会使得嵌入的水印信息也被修改。在这种情况下, 代码水印可能无法成功识别。4.8.2数据率在数据水印中嵌入的水印是非常小的,因为在那里几乎对除其本身的水印数据外没有额外空间。然而,在代码水印中,它需要修改程序的代码,并插入额外的代码来嵌入水印。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 4.8.3隐蔽性在数据水印, 嵌入的水印可以很容易地通过分析程序代码被发现,因为嵌入的信息以其源码形式公开。 然而,在代码水印中,嵌入的水印被隐藏为软件代码内的一部分,因此它需要分析该程序代码来发现存在的水印。因此,代码水印比数据水印更加隐蔽。4.8.4水印的分散性在数据水印中, 由于水印是被嵌入到特定的局部区域中的,所以很难做到将水印信息分布到软件的整个区域中来保护软件版权。然而, 在代码水印中, 水印信息会通过修改源代码的方式将其嵌入到软件中,并且将其分布于软件的多个区域中。4.8.5开销在数据水印中, 在程序中嵌入和识别水印很难影响软件的执行能力,因为数据水印的嵌入不需要执行附加的软件操作。在代码水印中, 它需要执行附加操作以嵌入或识别水印。而且,水印的嵌入可能会影响软件的执行性能。所以, 代码水印的嵌入与识别只需要很少的开销。4.8.6弹性在数据水印中, 用户的修改或混淆可能会直接对水印产生影响,因为水印是直接暴露在外的, 并未加以隐藏。在代码水印中,水印被编码成隐藏的软件区域,并未直接暴露给用户或开发者。因此,代码水印的弹性比数据水印要好。4.9数字水印攻击对数据的各种编辑和修改常常导致信息损失,又由于水印与数据紧密结合,所以也会影响到水印的检测和提取,这些操作统称为攻击。数字水印的攻击技术可以用来评测数字水印的性能, 它是数字水印技术发展的个重要方面。如何提高水印的鲁棒性和抗攻击能力是水印设计者最为关注的问题。水印攻击与密码攻击一样,包括主动攻击和被动攻击。主动攻击的目的并不是破解数字水印, 而是篡改或破坏水印,使合法用户也不能读取水印信息。而被动攻击则试图破解数字水印算法。 相比之下,被动攻击的难度要大得多,但一旦成功,则所有经该水印算法加密的数据全都失去了安全性。主动攻击的危害虽然不如被动攻击的危害大,但其攻击方法往往十分简单,易于广泛传播。无论是密码学还是数字水印,主动攻击都是一个令人头疼的问题。对于数字水印来说,绝大多数攻击属于主动攻击。4.10 实验原理静态代码水印的攻击主要以自动化攻击为主,手动攻击较为困难。静态数据水印的攻击采用人工分析或以统计分析为代表的自动化攻击,因为静态数据水印通常保存在一些很少或从未被调用的变量或函数中,故对软件多次运行进行统计分析就可以确定绝大部分静态数据水印的位置。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 4.11 实验步骤首先在桌面 / 实验工具 / 中有 1.c 。图 1.1 实验工具双击 VC+6.0,打开 1.c 就可以看到相关代码,编译并运行程序可以看到实验结果。点击左上角的“文件”,在打开的菜单中点击“打开”。图 1.2 打开选择“实验工具”中的1.c ,点击“打开”。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 图 1.3 打开 1.c 其代码如下。 Switch 的表达式是2*n+1,因此真正有意义的常量表达式为1,3,5,7,可以在 0,2,4,6的位置嵌入水印。图 1.4 1.c部分代码依次点击“ Compile ”、“ Build ”和“ BuildExecute”。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 图 1.5 编译和运行运行结果如下。图 1.6 1.c运行结果输入 0,然后根据提示输入any。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 图 1.7 输入 0 输入 1,清除之前显示的信息。图 1.8 清除输入 2,显示操作系统版本。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 15 页 - - - - - - - - - 图 1.9 显示操作系统版本输入 3,显示当前目录(1.c 所在目录)下的文件。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 15 页 - - - - - - - - - 图 1.10 DIR 其中程序中用一个静态全局字符串来标识程序的版权,C程序的源代码如下:/a simple static software watermarking #include void main(void) static char* sw = “copyright 51ELAB isc”; printf(“Hello watermarking world!”); 针对静态数据水印的攻击一般直接采用人工分析或者以统计分析为代表的自动化攻击,因为静态数据水印通常保存在一些很少或者从未被调用的变量或函数中,故对软件多次运行进行统计分析就可以确定绝大部分静态数据水印的位置。另外,静态数据水印经常被用作“所有者标识水印” , 具有可见性, 因此利用字符串匹配和查找算法就能进行有目的分析和搜索,然后可对水印进行篡改或者破坏。另外,攻击者也可以在软件中加入自己的水印,使得作者无法申明原有水印的有效性,第三方也无法验证。例如,在例子中加入如下语句:static char * cw = “Copyright XXX”; 源代码变成:/a simple static software watermarking #include void main(void) static char* cw = “copyright lsc”; static char* sw = “copyright 51ELAB isc”; printf(“Hello watermarking world!”); 那么第三方就无法判断软件水印的真正版权拥有者。1.c 的水印信息为 “Copy Right By BUPTISC ” , 我们可以改变变量v 的赋值为“Copy Right By 51ELABISC”作为静态水印。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 13 页,共 15 页 - - - - - - - - - 图 1.11 变量 v 和数字水印2.c 利用永假式来构造不会执行到的死流程,死流程中包含版权信息。图 1.12 2.c的水印针对静态代码水印的攻击主要以自动化攻击为主,手动攻击较为困难。自动化攻击有如下几种方法。 Profiling攻击。 Profiling是 VC6中的分析功能,通过列举出所有函数的执行时间, 可以找到从未执行的函数。指令乱序攻击。 在不影响软件功能的情况下通过调整指令的顺序, 或者交换两条或者多条指令的顺序以达到攻击目的。统计分析攻击。 因为水印信息大都隐藏在不会被执行的序列中,通过对软件多次执行的时间分布信息进行统计,就可以有效猜测出水印的隐藏位置,进而加以破坏甚至篡改。静态软件水印信息一旦被检测出来,便可单纯地将水印信息部分截取(称为裁减攻击),而且还不会影响软件的功能。3.c 是去除水印后的1.c 。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 图 1.13 去除水印后的1.c 4.12 问题与讨论目前对水印的评估大都停留在人的主观感觉上,并没有一套完整实用的评估体系,所以数字水印应当具有对各种攻击尽可能强的抵抗能力。尽管现有水印算法对常见的图像处理具有一定的抵抗能力,但还没有哪一种水印算法对所有的攻击都具有很好的稳健性。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 15 页,共 15 页 - - - - - - - - -