李瑞民
(上海风格信息技术股份有限公司,上海 201804)
数字水印擦除技术的研究
李瑞民
(上海风格信息技术股份有限公司,上海 201804)
数字水印的嵌入和识别技术已有大量研究,然而数字水印的擦除算法却鲜有研究。数字水印的擦除技术是利用一定的算法和技术,对含有或未含水印的文件进行水印发现、水印清除和水印破坏的操作。从上述角度提出了逆向工程法、协议规范编码法、异构协议互斥法、转码互换法、二次水印法等五种方法和数据模型,并对每种方法的鲁棒性进行了分析。
数字水印;水印擦除;水印发现;水印清除;水印破坏
数字信息的制作者为了保护自己的版权,会在不影响原有载体使用价值的前提下,将一些标识信息通过一定的技术嵌入数字载体当中[1],所嵌入的标识被称为数字水印(Digital Water-print)。目前与数字水印相关的技术主要有:数字水印的“嵌入”(Embed)技术和“识别”(Read)技术,其中的嵌入主要是通过算法将特定的数字信息加入到某一类载体中,这类算法绝大多数都是基于算法保密的;而识别则是通过算法识别某一载体中是否含有该水印或直接读出水印的内容,其算法有些是保密的(便于自己识别),有些则是公开的(便于第三方进行识别)。结合二者,可以判断一个载体是否合法,或判断载体是否被篡改。
然而在一些特殊情况下,除了能判断一个文件中是否有水印之外,还需要一定的技术将其中的水印擦除掉。如水印版权已过期,但嵌有水印的文件仍然存在,而此时水印的设计单位已不再提供技术支持以及对数字水印擦除技术纯粹的科学研究;再如水印的鲁棒性测试。这就催生出另一个分支,即数字水印的擦除技术,目前还没有这方面的专项研究。
所谓水印“擦除”(Erase)就是采用通用的数据水印常识修改载体,使原有的水印识别技术无法确认文件是否含有该水印。由概念进行分析,所修改的载体可以确定含有某水印,也可以不含某水印;水印识别技术从擦除后的载体中,可以是识别不出水印,也可以是识别为非预定的信息,如乱码或无关的信息。
通常情况下,数字水印的截体可以是文件格式区域(如图片文件的文件头)、文件内容区域(如图片本身)、通信中数据包(如TCP/IP数据包的包头和内容中)、音视频数据流(如音视频压缩数据区)等各种场合。考虑到将数字水印的载体视为文件时,既不影响对技术的理解,也方便说明和验证,所以后文在说明数字水印的擦除技术时,都以文件中嵌入水印进行阐述。
数字水印嵌入的原理很简单,其所有的算法都无一例外的要找一个协议、一个算法、一种文件数据格式(以下统称为“协议”)中存在不敏感性的地方,在允许的偏差阈值内进行重新编码,而编码的从而将水印信息嵌入其中;数字的水印识别技术则是利用既定的算法,对这些不敏感的地方进行检测,以验证其中是否嵌入水印,或读出水印内容。
根据数据格式不敏感的位置,可以将数字水印技术分为其于格式的水印和基于内容的水印两大类。例如,很多格式文件由文件头和数据区组成,或者所有TCP/IP通信的数据包由包头和数据区组成,前者是将水印嵌入到文件头或包头中,后者是将数据嵌入到数据区中。二者的本质相同,但在具体应用中,则差异巨大。
基于格式的水印主要是利用格式中协议的宽泛性和二义性,在嵌入时将要隐藏的消息作为参数进行格式的生成,最终实现水印的嵌入。例如有些基于脚本和明文的源码,协议本身的规定具有宽泛性。例如在HTML语法中,规定HTML标签关键字不区分大小写,这时可以通过将标签关键字的中,每一个字母的大小写按一定的编码规则进行调整,这个编码规则正是要嵌入的水印信息。
基于内容的水印,常常应用在诸如图像、音视频领域[2]等数据允许“失真”的环境中,如计算机中的像素颜色采用RGB模式表示,3个表示颜色的值如果有少量变化,人的视觉很难觉察得到,为此可以先将每个值都调整无法区分的下限,然后根据水印内容作向上浮动,以不到上限为浮动的范围,则整幅图会在无法觉察的情况下,悄悄地嵌入水印信息。
对于嵌入水印的文件,假设所使用的嵌入算法为函数f,另一个同类型的嵌入算法为函数g,未嵌入水印前的内容为x,嵌入的水印内容为y,水印本身为w,并约定w=0表示使用协议的默认值,则水印嵌入和识别的数学模型为
y=f(x,w)或y=g(x,w)
(1)
式中:y和g为已知;x为未知;f和w则视具体消除算法而定。
要实现水印的擦除,通常根据要达到的目的可以分为水印清除技术和水印破坏技术。
水印清除技术是通过协议发现存在水印,然后清除掉水印,使水印的文件恢复到无水印的状态。这可以分为逆向工程法和协议规范编码法2种技术。可见,要实现水印的清除,无疑要对水印的算法和原理进行详细了解。
水印破坏技术则是在不确定对方是否使用水印,或不知道对方采用的哪种水印技术的情况下,在不影响原有文件使用的前提下,直接加入干扰因素,从而导致对方的水印识别技术失效,从而达到破坏的作用。相比于水印的清除技术,水印的破坏技术更多,常用的水印破坏技术有异构协议互斥法、转码互换和二次水印法等3种技术。
2.1 逆向工程法
清除水印最有效的方法是逆向工程法。顾名思义,就是采用与正向工程相反的流程,或相反的思维方式,分析或检测出水印嵌入算法的原理、步骤,然后按照与嵌入相反的步骤将数据恢复为嵌入前的状态。通过逆向,可以获得水印内容w和函数f的反函数f-1,则逆向工程的数据模型为
y′=f(f-1(y,w),0)
(2)
例如,在ICMP协议中,详细规定了该协议所支持的所有网络状态信息数据包的包头,但作为TCP/IP应用时,却对其中数据包的内容部分不作要求。为此,在实现ping程序的时候,Windows操作系统填写的内容固定为32个字节的字符串“abcdefghijklmnopqrstuvwabcdefghi”;而基于UNIX的多数操作系统,如Linux及其变种、苹果(Mactonish),以及近几年风靡全国手机市场的安卓(Android)操作系统则都固定为0x08~0x37这48个字节。既然没有规定,用户如果将其改为水印信息也无可厚非。当然,对于这种水印的清除,只要根据协议恢复为系统默认值即可。
逆向工程法针对性强,非常有效,但是费时费力,可操作性差。在实际应用中,水印嵌入算法很难获得,甚至连加水印的可执行程序都难获得到,有的只是加了水印后的文件,所以只是在理论上可行。
2.2 协议规范编码法
既然水印算法多是基于协议的宽泛性而设计的,那么利用一个严格的编码器重新对文件重新编码,则可以在不知哪里有水印有前提下,对格式进行整体“规范化”,其效果间接地将水印进行了清除。协议规范编码法中,水印内容w无从得知,但嵌入函数f是知道的,故其数据模型为
y′=f(y,0)
(3)
如JPG图片格式分为JPG文件头和图像数据区,在JPG的文件头中,有2个字段明确指定图像的宽度和高度,结合每个像素所点的字节数就可以算出图像数据区的总长度。几乎所有的JPG图片显示程序都不对图像数据区之后是否有数据,以及数据的格式和意义进行检查,这就给数字水印的嵌入带来了可能。如果人为地在图像数据区的后面再附加一些信息,则这些信息可以安全地嵌入到JPG文件中,如命令行“copy/b a.jpg+b.txt c.jpg”即可将b.txt文件的内容(就是要嵌入的水印信息)附加在a.jpg文件图像数据区之后,并且生成新的c.jpg文件。要清除这样的水印,只要在JPG图像编码器(如Windows自带的“画图”程序)打开c.jpg文件,然后通过“另存为”的方式保存为d.jpg文件,则重新编码的d.jpg文件就消除掉了所附加的水印信息b.txt。
规范编码本身并不需要准确地知道水印的嵌入算法,只要通过重新编码(如上文的“另存为”操作)则可以方便地清除水印,由于方式只依赖于编码器,具有一定的通用性,因而具有实战效果。
2.3 异构协议互斥法
即使是相似的应用,由于不同的算法对同一方面的关注程度不同,会出现一方认为是重要机制,而另一方则完全忽视。利用这一异构算法的差异,可以通过简单的方法破坏已有的数字水印。如同为文字编辑软件,WORD和“记事本”功能迥异,前者关注的是“所见即所得”的格式效果,后者则只关注文字内容,毫无格式可言,利用这一差异,可以做到对格式类水印的破坏。异构协议互斥法完全是利用了两套方法之间的互斥关系进行破坏,假设另有一个水印w′(后同),其数据模型为
y′=g-1(y,w′)
(4)
如某基于WORD的水印嵌入算法(此算法对PDF文件同样适用),其原理是利用人们对汉字间只有1个像素的汉字不敏感,因而将一些作为水印的汉字或标点设置为1个像素,并夹杂在原文之中。可以根据数字水印的编码规则将WORD文件中的汉字行间距或字间距做出微调,然后将水印信息隐藏于微调的差异中;而无论是什么字体字型,到了记事本中,都将被还原为默认大小。这种设计上的“异构”可以用于水印的破坏,届时只要将WORD中的全部内容“复制/粘贴”到记事本中,然后通过二者的对比,则可以很容易地找到水印的位置。
2.4 转码互换法
前面的方式注重的是利用协议格式的宽泛性调整水印信息,而不对数据本身进行修改;转码互换法则是通过对数据进行修改的方式去掉水印。其原理就是将原数据在多个允许失真的编码方式之间进行转换,借助于不同编码方式在适度“失真”的前提下,在对数据修改的同时破坏水印信息。转码互换法的妙处在于根本不考虑原有水印嵌入算法,只是用新方法操作,其数据模型为
y′=g(y,w′)
(5)
假设一个BMP文件已用前面RGB像素微调的方式嵌入了水印,则如果将该BMP格式先转换为JPG格式,然后再回转BMP格式,则前后两个BMP格式会因JPG转换是失真压缩而有所不同,借助这一操作,也同时破坏了其中的水印信息。
2.5 二次水印法
二次水印法,简单地讲就是利用同一水印嵌入算法,在已加水印的文件上再加一次水印。当然,第二次水印可以设置为随机数或乱码。转码互换法可以简化为老算法的新参数,其数据模型为
y′=f(y,w′)
(6)
例如,有一种基于纯文本的英文数字水印嵌入算法,利用人们在读英文时,对2个单词之间的空格数不敏感的特点,适当地将部分单个空格调整为2个甚至3个空格,而这些空格数的组合正是要嵌入的水印信息。对这种水印嵌入算法的破坏,只是如法炮制,通过任意调整已有的空格数破坏原有水印信息。
二次水印技术操作简单,缺点是需要知道加水印嵌入算法或是有水印嵌入程序,因而应用受限。
当进行性能分析的时候,水印的嵌入算法和识别算法是一体的,共同决定其隐藏性能的优劣。在水印的擦除算法中,水印的清除和破坏也是一体的,共同决定其破坏性能的优劣。
水印嵌入和识别技术的鲁棒性[3]是指嵌入了水印的文件能否抵抗在数字作品应用过程中的各种恶意或非恶意的操作,鲁棒性的强弱直接决定了水印信息能否恢复及其恢复程度。而水印擦除技术还没有鲁棒性的定义,只是不妨反其意而用之,定义数字水印擦除技术的鲁棒性定义为:对含有水印的文件实施擦除操作后,使用原有的识别技术进行识别,识别其正确性程度。其鲁棒性的强弱决定了擦除算法对数字水印完整性的破坏程度。
对鲁棒性的测试操作可以通过数字水印的识别系统进行验证,但在实际操作中,可以对多份水印文件或一份文件的多处水印文件进行识别,然后根据能恢复识别和不能恢复识别的比例进行判断。各擦除算法的鲁棒性如表1所示。
表1 数字水印擦除技术的鲁棒性对比
仅从字面上看,数字水印的擦除技术是一种与维护版权背道而驰的技术,然而事实上,任何一种技术的提升都是螺旋式的上升,互促式的发展。如果将数字水印的识别算法和擦除算法从技术上进行对比,不难发现二者难度相当,同是一种新规则的编码方式。借助于水印擦除技术,可以实现对水印的清除和破坏,并且从另一角度检验水印识别算法的鲁棒性,借以抛砖引玉,共同促进水印技术的提高和完善。
[1]李勇.用于流媒体版权保护的视频水印技术[J].电视技术,2012,36(8):41-43.
[2]阳溢,柏森,郭雨,等.基于帧离散余弦变换的鲁棒视频水印算法[J].电视技术,2013,37(19):57-60.
[3]丁瑶,于志强.一种用于视频流的强鲁棒性数字水印方案[J].计算机仿真,2012(6):128-131.
Research of Erase Technology of Digital Water-print
LI Ruimin
(ShanghaiFigureInformationTechnologyCo.Ltd.,Shanghai201804,China)
Digital water-print embedding and recognition technology is developed by a number of digital watermarking algorithms, however digital water-print erase technology has rarely researched. Erase the technique of digital water-print is to use some algorithms and techniques,for water-print discovery,water-print erase,and water-print destruction in containing or not containing water-print file. This paper presents the reverse engineering method,protocol specification coding method, heterogeneous protocol mutual exclusion method,transcoding exchange method,secondary processing of water-print method and data model from this point of view,meanwhile analysis the robustness of each method.
digital water-print;erase;discovery;recover;destruction
TN919.83
A
10.16280/j.videoe.2015.01.003
2014-05-04
【本文献信息】李瑞民.数字水印擦除技术的研究[J].电视技术,2015,39(1).
李瑞民(1973— ),博士,高级工程师,主要从事广电领域内的计算机安全技术、网络设备与信号监控等领域的研究与应用。
责任编辑:时 雯