一、信息隐藏的基本概念
1.1 信息隐藏的基本模型
隐写术:
数字水印:
1.2 信息隐藏的分类
按载体类型分类:包括基于文本,图像,声音和视频的信息隐藏技术
按密钥分类:无密钥隐藏算法,私钥隐藏算法,公钥隐藏算法
按嵌入域分类:主要可分为空域(或时域)方法及变换域方法
按提取的要求分类:若在提取隐藏信息时不需要利用原始载体C,则称为盲隐藏;否则称为非盲隐藏。
按可逆性分类:可逆信息隐藏和不可逆信息隐藏
按鲁棒性分类:鲁棒性信息隐藏、半脆弱性信息隐藏和脆弱性信息隐藏
二、隐写术
隐写术分为文本隐写术、音频隐写术、图像隐写术、视频隐写术等四部分。
2.1 隐写术的性能评价
- 不可感知性
- 鲁棒性
- 隐写容量
- 是否可逆
- 是否盲水印
- 复杂度
2.2 文本隐写术
行移编码
- 在这种方法中,信息嵌入是通过将文本的某一整行垂直移动。通常,当一行被上移(嵌入0)或下移(嵌入1)时,与其相邻的两行或其中的一行保持不动。不动的相邻行被看作是解码过程中的参考位置。
- 不可感知性不好:是否有信息隐藏可以通过机器分析行间距来判断
- 鲁棒性一般:文档格式调整
- 隐藏容量一般:最大隐藏容量2行1bit
- 盲水印:不需要任何有关这个文档信息
字移编码
- 通过将文本的某一行中的一个单词水平移位。通常在编码过程中,某一个单词左移(嵌入0)或右移(嵌入1),而与其相邻的单词并不移动。这些单词被看作是解码过程中的参考位置。
- 不可感知性不好:是否有信息隐藏可以通过机器分析行单词偏移来判断
- 鲁棒性一般:文档格式调整
- 嵌入容量:较好,优于行移
- 盲水印:不需要任何有关这个文档信息
标点编码
- 通过将文本的某些标点符号进行修改。通常在编码过程中,某标点符号设为全角(嵌入0)或符号设为半角(嵌入1)。
- 不可感知性不好
- 鲁棒性一般
- 隐藏容量一般
- 盲水印
特征编码
- 特征编码是一种通过改变某个单个字母的某一特殊特征来插入标记的技术。可能的字母特征改变例子包括改变它的加粗,颜色等。同样,总有一些字母特征未作改变以帮助解码。
- 在文本中插入不易辨认的标记必须非常细心,以不改变该字母和上下文的结合关系。一个读者很容易便认出字母的变化。
- 不可感知性一般
- 嵌入容量一般
- 鲁棒性一般
- 盲水印
同义词替换
- 在文本中选择不同的同一词如“我们”,“咱们”;“动画”,“卡通”来嵌入隐藏信息。
- 使用绝对同义词
- 注意上下文语境
- 不可感知较好
- 嵌入容量较差
- 鲁棒性较好
- 盲水印
句法替换
- 在文本中选择不同的句法如主动句(嵌入0)和被动句(嵌入1);主语前置(嵌入0)和后置(嵌入1)等。
- 注意上下文语境
- 不可感知较好
- 嵌入容量一般(看脸)
- 鲁棒性较好
- 盲水印
2.3 音频隐写术
2.3.1 性能要求
- 不可感知性
- 鲁棒性
- 隐藏容量
- 同步要求
- 盲水印
2.3.2 最低有效位方法(LSB)
将一位或者多位的最低有效位直接替换为秘密信息。它具有以下优点:
- 不可感知性好
- 嵌入容量大
- 嵌入和提取算法简单,速度快
- 安全差,易被去除,改进,通过密钥决定随机的嵌入位置
- 鲁棒性差
- 信号同步
- 音频隐写术
2.3.3 回声隐藏
优点:
- 基于掩蔽效应,具有非常好的隐藏效果,并且具有较好的抗攻击能力,对于一般的数字信号处理如加入随机噪声、滤波、重采样和失真压缩等均具有较好鲁棒性
弱点:
- 嵌入容量较小,计算量较大
- 要求信号同步
2.3.4 量化索引调制算法(QIM)
QIM算法的嵌入方法是根据隐藏信息 0 或者 1 的不同,选择相应的量化器,使用量化器对载体信息进行量化。提取时对嵌入过隐藏信息的载体数据进行重新量化,使用重新量化的结果与两个量化器相应的距离进行判决,与量化器1 距离近,嵌入信息则为1。
假定待嵌入的隐藏信息表示为$m\in {0,1}$,$s$代表载体信号,该技术将会产生两个量化器$Q_i(s), i=0,1$,定义如下:
其中,$Q(s) =Δ×round(s/Δ), d_0=0, d_1=Δ/2$(改动可控), $Δ$ 是量化步长,$round(x)$是就近取整操作。
进行隐藏信息嵌入时,宿主信号按照下述原则修改:
$s’=\begin{cases}Q_0(s),m=0\ Q_1(s),m=1\end{cases}$
隐藏信息提取时,假设接收到的信号为$y$,则隐含的信息$m’$可以通过解决下述优化问题提取:
$m’=arg ;\mathop{min}\limits_{m\in {0,1}}||y-Q_m(y)||$
通过上述嵌入过程可以看出,该嵌入方法引入的最大误差为$Δ/2$
量化步长越大,引入的失真也就越大,但算法的鲁棒性越强
可以通过调整量化步长的大小实现算法不可见性和鲁棒性之间的权衡
半盲
2.3.5 离散小波变换(DWT)域算法
DWT全称Discrete Wavelet Transform。
嵌入:
- 选择适当的小波基对原始语音信号进行L级分解,在第L级的小波细节分量中隐藏信息
- 修改后的细节分量和没有修改的其他分量一起IDWT变换
提取:
选择相同的小波基对接受的语音信号进行L级分解,对L级分解的细节分量,利用原始语音信号找到隐藏位置,提取信息。
$x’(i)=(d’_L(i)/d_L(i)-1)/\alpha$
此算法是非盲的。
2.3.6 离散余弦变换(DCT)域算法
DCT全称Discrete Cosine Transform。
嵌入:
- 对原始语音信号进行DCT变换
- 改变DCT变换的高频系数,可以对高频系数进行QIM等算法进行嵌入隐藏信息
- IDCT变换
提取:
- 对接受到原始语音信号进行DCT变换
- 对高频系数进行QIM等算法提取隐藏信息
[例]假设待嵌入DCT域高频系数为14.235,QIM步长为4,
(1)QIM嵌入0后,DCT域高频系数为?
(2)QIM嵌入1后,DCT域高频系数为?
2.3.6 压缩域隐写术
MP3音频信号:
MP3的全称应为MPEG1 Layer-3音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。
- 在音频编码器中嵌入,这种方法稳健性较高,但需要复杂的编码和解码过程,运算量大,实时性不好,有错误扩散效应;
- 在压缩后的音频数据流中直接嵌入,这种方法避免了复杂的编解码过程,但稳健性不高,而且能够嵌入的水印容量不大,有错误扩散效应(雪崩效应)。
2.4 图像隐写术
2.4.1 图像质量评价
对一个系统中输入和输出的图像信号做处理和分析,一般是从图像中提取一些特征参量作为研究分析对象,处理并作比较,从总体上反映了图像间的差别。
常用的有:均方误差(MSE),峰值信噪比(PSNR)。
图像的基本表示:
- 像素点组成的矩阵
- 灰度图像:灰度值
- 彩色图像:三个矩阵,分别代表RGB三种颜色的大小
- 调色板图像:单独保存一个调色板(如256色调色板,每一个序号代表一个颜色),图像矩阵由这些序号组成
2.4.2 文件格式法
在图像文件格式中隐藏信息(BMP,GIF,TIF)
- 图像文件都有一定的存贮格式
- 文件头主要描述图像文件的格式、文件大小、数据起始偏移地址、图像数据大小等关键信息
- 利用图像文件的这种特性,可以在图像文件中隐藏秘密数据
在HTML文件中隐藏信息
HTML文件是文本文件,在浏览器端仅能显示ASCII码中的可见字符。 利用这一特点,可以在HTML的标记之间插入隐藏的数据
比如,如果要隐藏的二进制比特值为1,在选定的HTML标记后插入ASCII码值为9的字符;如果要隐藏的二进制比特值为0,则在选定的HTML标记后插入ASCII码值为20的字符
ASCII控制字符 0-31
ASCII可见字符 32-126
嵌入容量理论上无穷大,不可见性与鲁棒性都存在前提
2.4.3 空间域算法
- 多媒体信息在数字化时,会产生物理随机噪声,一般在数据 低位,而人的感观系统对这些数据低位的随机噪声是不敏感的
- 替换技术就是利用这个原理,试图用秘密信息比特替换掉数 据低位的随机噪声,以达到隐藏秘密信息的目的
图像的位平面概念:
去掉第1-6个位平面的Lena图像和第1-6个位平面,低频可嵌入隐藏信息:
2.4.3.1 LSB替换算法
$C_i$:载体对象的取样值
$L(c) $:载体的长度
$m$:秘密信息
$L(m)$ :秘密信息的长度
$S_i$:伪装对象的取样值
$K$:伪装密钥
LSB替换算法的执行过程为:
嵌入:选择一个载体元素的子集${j_1, j_2 ,…, j_{L(m)}}$,其中共有$L(m)$个元素,用以隐藏秘密信息的$L(m)$个比特。然后在这个子集上执行替换操作,把$C_{ji}$的最低比特用$m_i$来替换
提取:找到嵌入信息的伪装元素的子集${j_1, j_2 ,…, j_{L(m)}}$,从这些伪装对象中抽出它们的最低比特位,排列之后组成秘密信息
隐藏位置选取
顺序选取
- 视觉效果好,但是已嵌和未嵌部分数据特征不同, 易被察 觉,安全性能较差,已有多种分析方法。
随机间隔法:用伪装密钥$k$作为伪随机数发生器的种子,生成一个伪随机序列,嵌入位置为:
$\begin{cases}j_1=k_1\j_i=j_{i-1}+k_i(i\geq 2)\end{cases}$
- 修改量很小,视觉效果好,与图像内容无关,安全性能较好
- 非满嵌
现在采用的做法一般是:图像打乱->还原->顺序选取
2.4.3.2 利用奇偶校验位的方法
把载体划分成几个不相重叠的区域,在一个载体区域中存储 一比特信息
嵌入:
选择$L(m)$个不重叠区域,计算出每一区域的所有最低 比特的奇偶性,并选择一个载体元素的最低比特位存放这个 区域的奇偶校验位。隐藏信息时,在对应区域的奇偶校验位上嵌入信息比特$m_i$,如果奇偶校验位与$m_i$不匹配,则将该区域中所有元素的最低比特位进行翻转,使得奇偶校验位与$m_i$相同
提取:
用同样的方法划分载体区域,计算出奇偶校验位,构成秘密信息
2.4.3.3 Patchwork算法
2.4.4 二值图像中的信息隐藏
嵌入:
把一个二值图像分成$L(m)$个矩形图像区域$B_i$,如果其中黑色像素的个数大于一半,则表示嵌入0;如果白色像素的个数大于一半,则表示嵌入1
当需要嵌入的比特与所选区域的黑白像素的比例不一致时, 为了达到希望的像素关系,则需修改一些像素的颜色
修改应遵循一定的规则,原则是不引起感观察觉
修改应在黑白区域的边缘进行(以保证黑白均匀)
确定两个阈值$R_1>50%$和$R_0<50%$,以及一个性能参数$\lambda$。
隐藏0时,该块的黑色象素的个数应属于$[R_1,R_1+\lambda]$ ;隐藏1时,该块的黑色象素的个数应属于$[R_0-\lambda,R_0]$
如果为了适应所嵌入的比特,目标块必须修改太多的像素,就把该块设为无效,该块不做修改,即黑色象素的百分比大于$R_1+3\lambda$或者小于$R_1-3\lambda$
提取:
判断每一个图像块黑色像素的百分比,如果大于$R_1+3\lambda$或小于$R_0-3\lambda$,则跳过这样的无效块;
如果在$[R_1,R_1+\lambda]$或者$[R_0-\lambda,R_0]$的范围内,则能正确提取出秘密信息0或1。
在载体的显著区域隐藏信息,比LSB方法能够更好地抵抗攻击,而且还保持了对人类感观的不可察觉性。