王莹莹,杨 忠
(金陵科技学院智能科学与控制工程学院,江苏 南京 211169)
矢量地理数据是地理信息表达的主要数据结构之一,是国家重要的基础性和战略性资源,其安全性直接关系到国家的经济建设和社会发展。因此,保护矢量地理数据的安全对维护国家主权、安全和发展利益至关重要。数字水印技术作为数据保护的一种重要方法,可以应用于保障矢量地理数据的安全。它是指在数字化的数据内容中嵌入秘密水印信息,通过水印与源数据的紧密结合并隐藏其中,成为源数据不可分离的一部分。数字水印技术可以确定版权拥有者,认证所有权,跟踪侵权行为,鉴别数字内容来源的真实性,识别购买者,提供数字内容其他附加信息等[1]。许多学者已参与到数字水印技术的研究中,并获得了大量的研究成果[2-9]。
目前多重数字水印算法主要集中在以栅格地理数据和数字图像为嵌入对象的研究中,而对于矢量地理数据的研究较少。多重数字水印算法实现的方法主要包括:多种水印算法融合[10-12](即将空间域和频率域算法中某2个或者3个算法有效结合嵌入到载体数据中)、分块嵌入不同水印信息[13-15](即将载体数据按一定规则分块,在不同分块中嵌入不同的水印信息)、合并多个水印信息[16-17](即在多个已知水印信息的前提下,将这些水印信息合并为一个信息,直接借用单一水印信息的算法将合并后的信息作为一个水印信息嵌入到载体数据中)。但其中有些方法在针对栅格地理数据时,无法直接移植到矢量地理数据中;有些方法在针对矢量地理数据时,经常会遇到数据裁剪,导致部分水印信息可能会被删除,从而无法提取所有的水印信息。针对这些问题,本文提出了基于叠加嵌入机制的矢量地理数字多重水印算法,可以适应矢量地理数据的特点,且对于矢量地理数据在应用过程中经常遇到的数据删减攻击具有较好的鲁棒性。
叠加嵌入机制的原理为:将多个水印信息相应的水印信息位嵌入载体矢量地理数据的同一个数据单元中,在具体嵌入过程中,首先选取部分数据嵌入第一个水印,接着根据加性法则嵌入第二个、第三个……第m个水印,在嵌入多个水印时可通过相关检测技术解决水印信息间覆盖的问题,这样就可以在载体数据中包含多个水印信息,同时也可以解决在对载体数据进行分区时数据量小的问题。
多重数字水印是在应用需求的牵引下,在载体数据中嵌入两个或者两个以上水印信息的一种算法。根据在嵌入下一个水印信息之前是否已经掌握嵌入水印信息的全部内容和数量,将多重数字水印算法分为动态和静态两种;根据载体数据的类型将算法分为矢量地理数据和栅格地理数据多重水印算法[18]。相较于单水印信息算法,多重水印信息算法还需要面临多个水印信息间干扰的问题。为解决多个水印信息同时存在于载体数据中可能出现相互覆盖的问题,在嵌入前整合多个水印信息,或先将载体数据按照一定的方法进行分区,再在不同的分区中嵌入不同的水印信息(图1)。但叠加嵌入多重水印信息机制并不对载体数据进行分区,而是先根据相关检测方法对载体数据中的水印信息进行预判,在不覆盖原水印信息的
图1 水印信息位和矢量地理数据单元间的映射关系
情况下再继续嵌入新的水印信息。为此,本文采用了无意义水印信息,即将伪随机码作为待嵌入的水印信息,根据水印信息位与矢量地理数据单元间的“多对一”映射关系,将多个水印信息嵌入载体数据中。
矢量地理数据结构是计算机表达地理数据的一种方法,借助这种数据结构可将地理现象简化成计算机数据库中的编码形式,并通过记录坐标的方式,将地理实体通过点与点连接成直线的方式来表达[19]。矢量地理数据中常常会出现小数据量,为在有限的数据量中嵌入尽可能多的水印信息,本文算法采用无意义水印信息作为待嵌入的水印信息,基于叠加机制的多重水印算法首先随机选取一定数量的数据点,在选取的数据点中嵌入第一个水印信息;接着在同样的数据点中根据加性法则嵌入第二个水印信息;再嵌入第三个水印信息……直到根据需要将所有待嵌入的水印信息全部嵌入到载体矢量地理数据中。在水印信息嵌入过程中,被嵌入水印信息的数据点为随机选取,被选取的数据点数量要大于水印信息的长度且为水印信息长度的整数倍,不受载体矢量地理数据量的限制。
数字水印算法一般包括水印信息的生成、水印信息的嵌入、水印信息的提取和检测三个步骤。
2.2.1 水印信息的生成
根据水印信息是否有明确的意义,可以将水印信息分为有意义和无意义两种。相较于有意义水印信息,无意义水印信息的长度较短,在嵌入过程中占用的数据量较小。为了在较少数据量的数据中尽可能嵌入数量较多的水印信息,本文算法选用无意义水印信息中的伪随机二值序列作为待嵌入水印信息。
图2 水印信息、水印信息位和水印信息位索引之间的对应关系
2.2.2 水印信息的嵌入
在载体矢量地理数据中随机选择待嵌入水印信息的数据点,并设此数据点集合为D={d[j],0≤j
D⊕Wm={d[j].x+wm[j%n]}
(1)
其中,D表示被随机选取待嵌入水印信息的数据点集合;⊕表示加性嵌入法则;Wm表示嵌入的第m个水印信息;d[j].x表示数据点d[j]的x坐标,即是将水印信息嵌入载体数据的x坐标中;%为求余操作,通过j%n构建水印信息位索引i和数据点之间的一一对应关系,随之将多个水印信息嵌入载体数据中。
图3 水印信息、水印信息位索引和载体数据之间的对应关系
2.2.3 水印信息的提取和检测
水印信息提取过程是水印信息嵌入的逆过程,设待提取水印信息载体数据的集合为D′,D′={d′[j],0≤j 第一步:令j=0,W′={w′[i]=0,0≤i 第二步:w′[j%n]=w′[j%n]+(d′[j].x-d[j].x); 第三步:令j=j+1,如果j 第四步:令W′=W′/r,即w′[i]=w′[i]/r,水印信息W′提取完毕。 在水印信息提取时,待测数据受到水印攻击,致使待测的矢量地理数据可能已经被裁剪或者被删减部分数据点,最终造成集合D′与D中的数据点无法一一对应。在提取过程第二步中随机使用1或者-1来代替这类待测数据中d′[j].x-d[j].x的结果,如果待测载体数据中含有水印信息且未被水印攻击,则 (2) 公式(2)表示提取到的所有水印信息之和,但无法根据此式判断出原水印信息,需要进一步进行水印信息检测,具体步骤如下: 第一步:计算提取出的水印信息W′的统计特性,并判断M的值; 第二步:根据公式(3)计算相关系数c; (3) 其中,W表示原始水印信息。 第三步:当待测载体矢量地理数据中含有或者不含有水印信息时,水印信息检测结果的统计特性则分布不同,为进一步判断水印信息的具体内容,下面分情况进行讨论: 第一种,当待测载体矢量地理数据中含有水印信息时,即提取的W′中包含了W,设W=Wk,则相关系数c的计算方法如下: (4) 根据公式(4)和无意义水印信息的统计特性可以得出: (5) 即相关检测结果符合公式(5)的正态分布。 第二种,当待测载体矢量地理数据中不含有水印信息时,可以根据无意义水印信息的统计特性和公式(4)得出: (6) 第四步:根据第三步中有无水印信息时相关系数分布特点的不同,利用判别分析,综合公式(5)和公式(6),计算出水印信息检测阈值T,计算方法为: (7) 第五步:判断相关系数c和水印信息检测阈值T的关系。当c≥T时,表示提取的结果中含有水印信息;当c 本文提出的多重数字水印算法是一种矢量地理数据的多重水印算法,采用叠加机制将多个水印信息嵌入到载体数据中,避免了水印信息嵌入前的分区操作,有效利用了矢量地理数据的数据量,适用于不同数据量的矢量地理数据,同时对于裁剪和删减攻击具有较强的鲁棒性。为验证算法的实用性,进行了两个部分的实验:第一部分验证算法的鲁棒性,即算法抗数据压缩攻击、数据点增删攻击、要素删减攻击和数据裁剪攻击的性能;第二部分验证算法对于小数据量矢量地理数据的适应性。实验数据为20幅比例尺为1∶100万、坐标单位为米的矢量地理数据,包括点状、线状和面状数据。图4为水系的线状数据和面状数据,图5为数据量很小(数据点数量小于1 000个)的居民点的点状数据。 (a)线状数据 根据多重数字水印信息算法,在实验数据中随机选取部分数据点,在其中依次嵌入3个水印信息W1、W2和W3;对嵌入所有水印信息的载体数据分别进行不同程度的攻击,如数据裁剪、数据压缩、随机增加数据点、随机删除数据点和随机删除要素;对被攻击后的载体数据进行水印信息检测,判断是否仍然含有被嵌入的水印信息。其中数据裁剪攻击中裁剪的区域和裁剪的数据量都有变化,裁剪区域示意图如图6所示。若采用普通的分区域嵌入多重水印的方法,被裁减的区域中可能包含被嵌入的多个水印信息中的某个水印信息,或者多个水印信息,导致水印受到攻击,无法被检测到,基于叠加机制的多重数字水印算法能有效地避免这种情况,其实验结果如表1和表2所示。数据裁剪、数据压缩、随机删除数据点、随机删除要素的攻击强度表示为攻击后数据量占原载体数据量的百分比,其数值越小表示攻击强度越大;随机增加数据点表示在数据中随机增加坐标点,其攻击强度表示为增加的坐标点数量与原始载体数据点数量的比值,其数值越大表示攻击强度越大。 (a)规则的实验数据裁剪区域 表1 数据裁剪及数据压缩攻击的实验结果 表2 数据增删攻击的实验结果 从表1和表2可以看出,本文提出的多重数字水印算法能够较好地抵抗数据裁剪、数据压缩、随机增删数据点和随机删除要素攻击对于水印检测的影响,但是对于较强的攻击则不能检测到水印信息,究其原因,主要是较大的数据删减会删除数据中较多含有水印信息的数据,导致水印信息无法正常检测。实验结果还表明,增加数据点的攻击不会影响水印的检测效果,这是因为增加数据点不会影响数据载体中含有水印信息的数据点。 本文提出的基于叠加机制的矢量地理数据多重水印算法在嵌入多个水印信息时无需进行数据分块处理,因此理论上能够较好地适用于小数据量矢量地理数据的分析。为了验证本文提出的算法对于小数据量矢量地理数据的适应性,选择部分点状小数据量数据进行鲁棒性实验,实验方法为:首先选取较小数据量的矢量地理数据为实验载体数据,根据本文提出的多重数字水印算法将其嵌入多个水印信息,每幅载体数据每次实验嵌入的水印信息个数不同,且嵌入的水印信息个数是随机的(在2、3、4、5之间随机);接着进行水印信息的检测,验证是否可以提取,从而检测出嵌入的多个原水印信息。实验选取了2个小数据量矢量地理数据为载体数据,数据点个数分别为837和694,共进行8次实验,结果如表3所示。 表3 小数据量矢量地理数据的适应性分析结果 从表3可以看出,利用本文提出的多重数字水印算法,在较小数据量的矢量地理数据中嵌入多个水印信息后,依然可以将嵌入的多个水印信息检测出来,表明本文提出的多重数字水印算法能够较好地适用于小数据量矢量地理数据。 本文提出了一种基于叠加嵌入机制的矢量地理数据多重数字水印算法,并对算法的鲁棒性和小数据量矢量地理数据的适应性进行了实验分析。实验结果表明:本文提出的多重数字水印算法对于矢量地理数据处理中常见的数据裁剪、数据压缩、随机增删数据点和随机删除要素均具有较好的鲁棒性,有效解决了小数据量矢量地理数据难以嵌入多重水印的问题,具有一定的应用价值和研究意义。但由于算法检测需要原始数据参与,属于非盲多重水印算法,所以存在一定的局限性,需要在后续的研究中进一步加以改进。3 实验结果与分析
3.1 实验概况
3.2 鲁棒性分析
3.3 小数据量矢量地理数据的适应性分析
4 结 语