可完全分离的二维矢量图加密域鲁棒可逆水印算法(一)
摘要
随着云制造技术的兴起,加密域可逆水印技术逐渐受到了较多的关注。然而,现有的大部分算法不仅只能应用于图像、视频等冗余性较大的载体,而且难以抵御常见的攻击,甚至只能在单一的域中提取水印。为此,本文针对冗余性较小的二维矢量图提出了一种可完全分离的二维矢量图加密域鲁棒可逆水印算法。首先,内容拥有者在极坐标系下利用加密密钥置乱顶点的极角以加密图形。随后,水印嵌入者在嵌入密钥以及哈希函数的控制下,把编码后的水印比特映射到不同顶点,再轻微调整顶点极角从而嵌入水印。由于解密操作不会影响已嵌入的水印,算法可以分别在明文域或密文域提取水印。实验结果与分析表明,算法不仅具有较好的不可见性,而且能有效抵御旋转、平移、缩放(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编码为冗余的加密信号分配新的特征,并通过修改这些特征来实现可逆数据隐藏。然而,当加密信号的冗余性较低时,算法容量较小。在这些方法中,由于嵌入的数据只能在密文域中提取,因此拥有数据隐藏密钥的合法接收者无法从标记的解密载体中提取嵌入数据,其应用场景存在进一步拓展的可能。
双域提取算法
预备知识
基于最小包围圆的极坐标系
基于HMAC的水印映射方法
纠删码
算法描述
图形加密
水印嵌入
文章篇幅较长,请关注后续更新……
(原创文章,转载需注明出处。)
可完全分离的二维矢量图加密域鲁棒可逆水印算法(一)相关推荐
- 矢量切片_数据粒度均衡的二维矢量瓦片构建方法
作 者 信 息 应 申1,2,王子豪1,杜志强3,丁火平4, 李翔翔4 (1. 武汉大学 资源与环境科学学院,湖北 武汉 430079:2. 自然资源部城市国土资源监测与仿真重点实验室,广东 深圳 5 ...
- matlab 平面 偶极子 声场,二维矢量声强的误差分析
摘 要:为便于识别和定位平面内噪声源,依据双传声器互谱声强法原理,建立二维矢量声强探头的物理模型,推导了二维声强的计算公式,分别在单极子和偶极子声场条件下,利用该探头测量二维声强及定位误差.结果表明: ...
- R语言绘制二维密度图
R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...
- R语言ggplot2可视化2d密度图:可视化二维密度图并将两个二维密度图重叠起来、Overlay two ggplot2 stat_density2d plots
R语言ggplot2可视化2D密度图:可视化二维密度图并将两个二维密度图重叠起来.Overlay two ggplot2 stat_density2d plots 目录
- Leetcode 1559二维网格图中探测环 技巧DFS|剪枝
二维网格图中探测环 给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在 相同值 形成的环. 一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径.对 ...
- 密度图的密度估计_不同类型的二维密度图小教程
R相关小教程链接: 用R构建气泡图案例小教程 [小教程]散点图.饼图怎么在我的文章中完美展示小教程 热图在论文发表中完美呈现小教程 R与密度.函数.变量的微妙关系 北京市计算中心医用数据库建设解决方案 ...
- node 无脑生成小程序二维码图
RT 新建createwxaqrcode.js: const request = require('request') const fs = require('fs')// eg:生成购物车列表圆形二 ...
- MATLAB 各类二维渐变图
0.试验效果 1. 函数映射 要构造二维渐变图,我们首先需要一个将[0,1]之间数值映射到相对应RGB数值的函数,这个函数可以用以下生成器生成: function colorFunc=colorFun ...
- Matlab 二维网格图pcolor和imagesc区别
Matlab 二维网格图pcolor和imagesc区别 在速度或者衰减层析成像反演之后会得到地下介质每个网格点的速度/衰减值,在进行呈现的时候可以使用maltab的pcolor和imagesc进行二 ...
最新文章
- 对应生成树的基本回路_数据结构与算法——最小生成树
- ASP.NET MVC 视图
- Office 365 系列之九:配置和体验 Exchange 和 Lync
- 台式计算机总是重启,台式电脑经常自动重启怎么修复
- 使用ZeroTier搭建大局域网利用VNC远程桌面
- git学习(三)分支管理
- 常熟计算机专业工资多少,常熟学计算机,常熟学计算机哪里好,常熟学计算机一般工资能拿多少 - IT教育频道...
- ES6阮一峰读书笔记第一章let和const命令
- C++ cin.get用法(详解版)
- java: 程序包com.zyt.hm.VO不存在
- 东方博宜OJ 1863 - 【入门】特殊的数字四十
- js实现时间戳转化为自定义格式的年月日时分秒(yyyy-MM-dd HH:mm:ss)
- 计算机网络 一、 IP地址,域名,DNS
- Windows系统下如何截屏
- aps软件在十大科技趋势中出现
- c语言上机实验指导西南交通大学,操作系统原理与应用实验指导书-西南交通大学.doc...
- 《巴菲特的护城河》书中的精髓:如何识别有投资价值的公司,让你投资的钱不再打水漂?
- 波士顿房价分析作业总结
- 家用平价洗地机哪款好?国产性价比高的品牌
- android百度地图附近的poi,Android百度地图poi范围搜索
热门文章
- 摩纳哥编辑器 monaco editor 中文示范 react 版本
- 11.4.9 MONTH(date)函数
- 服务器开机自动运行批处理,服务器开机后自动运行vmware虚拟机方法
- QT编程之区分点击和双击事件
- 中国商业地产投资专业展览会6月在京举办
- 看看中意的工作要求吧。。。
- 固件(Firmware)与硬件(Hardware)
- 一个用了再也回不去的插件,内置chatgpt3.5可免费使用
- python删除文件一行数据、不使用临时文件_python删除临时文件
- 制作Flink的Parcel包和csd文件