摘要

随着云制造技术的兴起,加密域可逆水印技术逐渐受到了较多的关注。然而,现有的大部分算法不仅只能应用于图像、视频等冗余性较大的载体,而且难以抵御常见的攻击,甚至只能在单一的域中提取水印。为此,本文针对冗余性较小的二维矢量图提出了一种可完全分离的二维矢量图加密域鲁棒可逆水印算法。首先,内容拥有者在极坐标系下利用加密密钥置乱顶点的极角以加密图形。随后,水印嵌入者在嵌入密钥以及哈希函数的控制下,把编码后的水印比特映射到不同顶点,再轻微调整顶点极角从而嵌入水印。由于解密操作不会影响已嵌入的水印,算法可以分别在明文域或密文域提取水印。实验结果与分析表明,算法不仅具有较好的不可见性,而且能有效抵御旋转、平移、缩放(RST)、实体重排序等常见的操作,甚至还能抵御顶点或实体的增加、删除等恶意攻击。

引言

近年来,随着计算机辅助设计/计算机辅助制造技术(CAD/CAM)的普及,二维矢量图在机械行业、建筑行业、服装业等诸多领域的设计行业中得到了广泛应用。二维矢量图作为一种重要的制造数据,其知识产权保护和内容完整性认证极其重要。虽然现有的水印方法[1]- [9]能对明文状态的二维矢量图进行一定程度的保护,但它们要么不可逆[1]-[3],要么不够鲁棒[4]-[9],更重要的是无法适应当前云制造发展的应用需要。由于存储在云端的二维矢量图完全暴露给第三方,数据易被泄密,故通常采用数据加密的方式对二维矢量图的内容进行保护。与此同时,为便于云端加密数据的管理,管理者还希望在加密的二维矢量图中以可逆的方式添加一些额外的信息,如:源信息、身份验证数据或版权信息等。为解决这一问题,加密域可逆信息隐藏技术在近几年受到了广泛关注。该技术首先对载体进行加密以确保数据的安全性,然后通过可逆水印技术把水印信息嵌入到载体中以实现版权保护、秘密信息传递等功能。
当前,针对加密域可逆信息隐藏的研究主要集中于栅格图像[10]-[20],针对于二维矢量图的研究还相对较少[21]。此外,现有加密域可逆水印算法大多不具有水印提取的鲁棒性,即对解密后的载体进行一定程度的修改后,无法正确提取水印,无法满足版权认证、载体溯源等应用场景的需要。因此,如何提高加密域可逆水印算法中水印提取的鲁棒性已成为加密域可逆信息隐藏领域需要解决的一个重要问题。为此,本文提出了一个可完全分离的二维矢量图加密域鲁棒可逆水印算法。本文的贡献主要包括:
1、提出了一个可完全分离的二维矢量图加密域鲁棒可逆水印方案。据公开文献,该方案是首个能分别在明文域或密文域中鲁棒提取隐藏信息的矢量图水印方案。
2、提出了一种基于图形极坐标系统、哈希消息认证码和纠删编码的水印映射方法。分析了水印冗余度与水印满射概率的关系。实验证明,与现有同类算法相比,该水印映射方法对一些常见的操作和恶意攻击都具有良好的鲁棒性。
3、从理论上分析了二维矢量图形水印的最大失真与平均失真的界限,实验结果也验证了理论分析的正确性。此外,对所提出的算法的实验与分析表明,所提出算法不仅可逆且具有良好的不可见性。

文章的剩余部分组织如下:第2部分对现有加密域可逆水印的相关工作进行了介绍和分析;第3部分介绍了本文用到的相关技术;第4部分提出一个二维矢量图加密域可逆水印算法;第5部分是实验结果与分析;第6部分是结论。

相关工作

加密域信息隐藏在早期研究阶段,只是简单地把加密和信息隐藏结合,把载体数据的一部分用来加密,而把其余部分则用于嵌入信息。比如,Lian S等人提出的面向视频压缩的可交换加密和水印算法[22]。算法只对帧内预测模式、运动矢量差和DCT系数的符号进行加密,而将水印嵌入到DCT系数的幅值中。由于该类方法只加密了部分载体,当载体的数据相关度较高时存在信息泄露的风险。目前,现有研究均有机地结合两种技术,已有方法根据在加密前后腾出嵌入空间的不同可分为两大类:加密前腾空间(VRBE)以及加密后腾空间(VRAE)[23]。

加密前腾空间

VRBE类的算法需要在加密之前执行额外的预处理操作,以此为待嵌入的信息腾出空间。Kede Ma等人率先提出了第一个VRBE方法[10],在该方法中,内容拥有者通过传统的可逆信息隐藏方法[24]将特定像素的最低有效位(LSB)嵌入到其他像素中从而腾出空间。预处理后的图像经加密后传送给数据隐藏者。数据隐藏者可以直接在这些特定像素的LSB中隐藏信息。Yi等人提出了一个基于二进制块嵌入(BBE)方法的加密图像可逆信息隐藏方法[11]。该方法通过BBE腾出空间并加密图像后,即可以把秘密信息嵌入其中。Cao等人提出了一个基于稀疏块表示形式的大容量加密图像可逆信息隐藏方法[12]。该方法通过稀疏块表示形式产生了具有更小信息熵的预测误差序列从而腾出了更大的空间,使算法具有更高的容量。然而,由于此类方法中要求内容拥有者与数据隐藏者进行协商,存在信息泄露的风险。

加密后腾空间

VRAE与前一种方法相比,原始载体在加密前无需经受额外的预处理。基于提取隐藏信息的时机,VRAE方法又可以进一步划分为三个基本类别:明文域提取算法,密文域提取算法,以及双域提取算法。

明文域提取算法

张新鹏提出了第一个明文域提取算法[13]。该算法对图像进行流加密之后,图像被分成若干大小相同不重叠的块,在密钥的控制下分块图像的像素分成两个集合,再根据水印翻转其中一个集合中像素的3 LSB将1比特嵌入到每个块中。在接收端,算法先对图像进行解密,再根据密钥对像素进行相同的集合划分,最后基于原始像素平滑的先验知识,利用波动函数比较两个像素集合的平滑度以提取水印与还原图像。该算法在纹理复杂的区域会出现较多错误。随后,Wien Hong等人提出了一个改进方法[14]。该方法通过先恢复出错概率较低的块,再利用已恢复块来辅助恢复其他块,从而降低了错误率。蒋瑞琪等人提出了一个基于加密3D网格模型的信息隐藏算法[25]。该算法通过整数化3D网格模型顶点坐标以用于流加密,随后根据三角面片的约束关系把顶点集分为调整集与不变集,再基于[13]中的方法来修改调整集中的顶点坐标以隐藏信息,最后利用角缺失曲率、三角形边长约束等先验知识提取水印与还原图形。由于上述算法都需要解密后才能提取信息,应用场景有限。

密文域提取算法

与明文域提取算法不同,密文域提取算法在解密前提取数据。W. Puech等人提出了一个加密图像可逆信息隐藏方法[15]。在这个方案中,内容所有者通过高级加密标准(AES)对原始图像进行加密,而数据嵌入者则在每个包含n像素的块中嵌入1比特。在接收端,用户可在密钥的参与下直接提取隐藏信息,并通过分析局部标准差在明文域恢复原始图像。随后,张进一步提出了一种可分离的加密图像可逆信息隐藏方法[16]。在流加密图像后,算法把一些参数嵌入到少量的加密像素中,并压缩其他加密像素的M LSB,最后在腾出的空间中隐藏信息。根据所拥有的密钥,用户可以分别获得隐藏的信息、近似的图像,以及完全恢复的图形。随后,Mustafa S. Abdul Karim等人提出了一个用于加密域的通用可逆数据隐藏算法[26]。该方法利用Golomb-Rice编码为冗余的加密信号分配新的特征,并通过修改这些特征来实现可逆数据隐藏。然而,当加密信号的冗余性较低时,算法容量较小。在这些方法中,由于嵌入的数据只能在密文域中提取,因此拥有数据隐藏密钥的合法接收者无法从标记的解密载体中提取嵌入数据,其应用场景存在进一步拓展的可能。

双域提取算法

imgimgimgimg

预备知识

img

基于最小包围圆的极坐标系

imgimgimgimg

基于HMAC的水印映射方法

img imgimg

纠删码

img
img

算法描述

img

图形加密

imgimgimg

水印嵌入

imgimg