信息隐藏与内容安全实践报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息隐藏与内容安全实践报告
目录
第1章基于LSB算法的空域数字水印设计与分析 (2)
1.1 实验原理 (2)
1.2 matlab实现 (3)
1.3 健壮性分析 (3)
1.3.1 旋转攻击 (3)
1.3.2 高斯滤波攻击 (4)
1.4 小结 (4)
第2章基于拼凑算法的空域数字水印设计与分析 (5)
2.1 实验原理 (5)
2.2 matlab实现 (5)
2.3 健壮性分析 (6)
2.3.1 旋转攻击 (6)
2.3.2 剪切攻击 (7)
2.4 小结 (8)
第3章源程序 (9)
3.1 基于LSB的空域数字水印源程序 (9)
3.2 基于拼凑算法的空域数字水印源程序 (12)
第1章基于LSB算法的空域数字水印设计与分析
1.1 实验原理
本节主要介绍实验原理之LSB算法。
1)载体空间:{ j1, j2, …, j L(c) },L(c)是载体长度。
2)嵌入信息空间:{ m1,m2,…,m L(m)},L(m)是数字水印长度。
′},L(c’)是载体长度。
3)伪装载体空间:{j1′,j2′,… ,j L(c′)
图1.1 LSB嵌入基本原理
如图1.1所示,就要把图像的所有图像点的像素值的最低比特位用图像水印的像素点的每一个比特所代替。
图1.2 水印嵌入过程
如图1.2所示,此为水印嵌入框架。
图1.3 水印提取过程
如图1.3所示,此为水印提取框架。
算法具体描述如下:
本文算法首先计算载体C能嵌入水印的最大比特容量,根据此容量选择水印的长度。如本实验载体为480*480真彩色图像,最大容量为C max= 480*480*3=691200bit。若嵌入灰度图像,选择嵌入最大容量,则尺寸可以选择360*240,C max= 360*240*8。
选取好水印图像后,将载体所有像素点的RGB和水印图像的每个像素点的灰度值都转换为8位二进制数据,然后将水印图像的每个像素点的8位二进制灰度值全部嵌入到载体所有像素点的RGB的8位二进制像素值的最后一个比特位。
这样就实现了数字水印的嵌入。
水印提取时,通过把嵌入水印后的彩色图像的每个像素点的RGB值都转换为8位二进制像素值,然后通过提取最后一位比特信息,最后进行图像重组。这样就实现了数字水印的提取。
1.2 matlab实现
本节主要通过matlab编程实现基于LSB算法的数字水印。
图1.4 水印嵌入与提取
从图中,可以看出水印的嵌入并不影响载体的可视效果,并能准确从载体中提取水印。
1.3 健壮性分析
上一节中,我们主要讨论了理想条件下的数字水印嵌入与提取,本节主要对嵌入水印的图片进行常见的数字水印攻击,如压缩、加噪、旋转等,观察提取水印的变化,分析在LSB算法下,数字水印的健壮性。本实验以旋转、加噪为例1.3.1 旋转攻击
图1.5 旋转攻击
如图1.5所示,将加载水印后的载体进行旋转1°攻击,然后提出水印,可以从图中清晰看到,虽然只旋转了1°,图像只有微小变化,但水印已经严重被破坏,根本检测不到水印。
1.3.2 高斯滤波攻击
图1.6 高斯滤波攻击
如图1.6所示,进行高斯滤波攻击后,水印被破坏了,提取出来的水印是噪声,失去了标志载体的作用。
1.4 小结
本节主要基于以上分析,对LSB 数字水印算法进行总结,指明其优缺点。 从以上分析可以看出,基于LSB 的空域数字水印实现简单,且可以达到标志载体的作用,但通过常见的旋转和滤波后,水印很容易就被破坏了,健壮性非常差。
第2章基于拼凑算法的空域数字水印设计与分析
2.1 实验原理
本节主要介绍拼凑算法。
假设算法针对256级线性量化系统,其初始值为0,所有亮度等级均匀分布,各点相互独立。算法描述如下:
在拼凑算法中,一个密钥用来初始化一个伪随机数发生器,而这个伪随机数发生器将产生载体中放置水印的位置;基本思想是:在嵌入过程中,版权所有者根据密钥Ks伪随机地选择n个像素对(ai,bi),将另ai’=ai+δ,bi’=bi-δ,提取时,根据密钥确定更改的像素对位置,再做将每一个i做ai’-bi’,并对i求和,如果这个载体确实包含了水印,则可以预计和为2nδ,否则它将近似等于0;
本实验n = 28800,通过求∑(a i−b i)/(2δ)
i
,若结果接近于n,则表明图像中嵌入水印,若结果接近0,则表明图像中未嵌入水印。另外,还可以通过计算
∑(a i−b i)/(2δ) i ,得出∑(a i−b i)/(2δ)
i
与n比值,如果这个比值约等于1,则认
为图像中嵌入了水印,若比值远小于1则说明未嵌入水印。
2.2 matlab实现
本节主要通过matlab编程实现基于拼凑算法的数字水印。
图2.1 水印嵌入前后
由图2.1可以看出嵌入水印前后,载体的可视效果依然很好。
图2.2 有无密钥检测是否嵌入水印
由图2.2可以看出,当有密钥时,∑(a i−b i)/(2δ)
接近接近n,与n的比值也约
i
等于1,可以正确检测出水印;而未知密钥,检测时随意选取像素对,则计算得的值远小于n,与n的比值也远小于1。
到∑(a i−b i)/(2δ)
i
2.3 健壮性分析
本节主要对嵌入水印的图片进行常见的数字水印攻击,如压缩、加噪、旋转、剪切等,观察提取水印的变化,分析在拼凑算法下,数字水印的健壮性。本实验以旋转攻击和剪切攻击为例。
2.3.1 旋转攻击
图2.3 将嵌入水印后的图像进行旋转
图2.3显示了将嵌入水印后的载体进行旋转后的图像。
图2.4 旋转不同角度对∑(a i−b i)/(2δ)
与n比值的影响
i