徐 治
(安徽师范大学物理与电子信息学院,安徽芜湖 241000)
信息隐藏是以某种方式在一段宿主信息中嵌入另一段信息,从而产生一种复合信息。由于嵌入的信息给宿主信息带来的干扰被控制在不易察觉的程度,其可隐藏在复合信息中公开地传输或存储,在收端再将隐藏的信息提取出来,从而实现信息的隐蔽存储或保密通信。信息隐藏是信息安全的重要方法,例如将信息隐藏在视频或音频码流中能起到良好的伪装作用,因通常人工审查或软件过滤会将其当成普通的影音信息忽略过去。将加密后的信息隐藏在以GB计的视频或音频信息中,其安全性比单纯的加密更高,因此其在情报、军事及安全领域有重要的意义,在民用领域的应用包括数字水印版权保护、互联网身份认证、报文纂改检测等。
信息隐藏技术是在1994年的国际图像处理会议(ICIP 94D)上首先提出的[1],早期用在静态图像中,后来扩展到音频视频信号[2]。本文研究以音频信号作为宿主来隐藏信息,音频的数据量较大,审查和过滤更困难,而可隐藏的信息却更多。音频信号是实时信号,若其中隐藏信息的密度足够大,则隐藏信息也可作为实时信号传输,这可实现在一个宿主通信的掩护下同时进行另一个隐藏的保密通信。
目前在数字音频信号中隐藏信息的方法主要分时域和变换域两大类。时域隐藏主要是最低有效位算法和回声隐藏法,但其鲁棒性较差[3]。本文采用基于DCT谱的频域变换方法,将信息嵌入到音频信号的频谱中去,其基本过程如图1所示。
首先将音频序列分段成一定长度的帧,并用DCT变换计算出该帧的频谱。同时将隐藏信息置乱或交织后串行化为bit流,一个bit的隐藏信息通过改写一个音频帧的频谱,使其符合相应的特征而被嵌入其中,然后对改写了的频谱作IDCT反变换得到复合音频序列。信息提取过程是计算出音频帧的DCT频谱,然后根据其频谱特征决定该帧的隐藏bit是0还是1。
信息隐藏按提取方式分为盲检测和非盲检测两类,盲检测只需要复合信息即可提取出隐藏信息,而非盲检测需要同时获得原始的宿主信息,通过比对宿主信息和复合信息来提取[4]。盲检测方案的应用价值更高。本文的算法在信息提取时无需宿主信息,从而实现了盲检测。
图1 信息的隐藏和提取
本文设计的频域信息隐藏的嵌入和提取算法如图2所示。
图2 隐藏信息的嵌入和提取
DCT变换是多媒体信息处理中求频谱的常用算法[5]。本文选择DCT而不是DFT有两个原因:(1)DCT不涉及复数运算。由于作为多媒体信息的音频序列可看成一个实偶序列,而实偶函数的傅里叶变换只包含余弦项,因此DFT的复数变换核 e-j2πNn就退化为DCT的实数变换核cos。(2)DCT更加有效。N点实序列的DFT谱是共轭对称的,因此N点的DFT谱相当于只有条谱线,而N点DCT谱没有这个性质。因此同样的帧长,DCT谱可操作的谱线数量是DFT谱的2倍,同时DCT谱的频率分辨率也比DFT谱高2倍,因而在遭受攻击时鲁棒性更强。
本文通过一帧DCT谱中m个特定频点的谱线的极性来表达1 bit的隐藏信息:如果隐藏信息位是1,则m个谱线的极性都必须为正,对其中原来是负极性的谱线,则改写为正的,而绝对值大小保持不变;如果隐藏信息位是0,则m个谱线的极性均必须为负,改写方法相同。改变DCT谱线的极性,相当于将对应的谐波分量作了180°倒相处理,由于人耳对声音的相位信息不敏感,因此其透明性应该优于改写幅度的算法。从数值变化大小的角度看,极性翻转的数值变化要远大于幅度修正,因此抗攻击的性能也应优于改写幅度。
极性特征编码在m个谱线上,这种重复冗余的方式是为了提高抗攻击能力。在信息提取时采用等增益合并方式进行判决:即将特定的m个谱线直接累加,若和为正,则隐藏信息位判为1;反之为0。根据测试,m约取10即可,过小会降低鲁棒性,但过大无意义。
为了兼顾透明性和鲁棒性,m个频点的位置是按帧动态选择的。首先频点选择范围限制于1 000 Hz~3 000 Hz的中频段内。因为除非对复合音频进行破坏性处理,否则中频段的谱线不受正常滤波的影响,也不会全部被压缩算法删除。接着对中频段的谱线按其幅度绝对值的大小进行排序,然后回避最大的b个谱线,从第b+1的位置开始的m个谱线就是该帧的特征频点。b的取值是平衡透明性和鲁棒性的关键参数:b过大,对宿主音频的干扰比较大,但鲁棒性会较好;b过小则效果相反。测试发现b约取20较为合适。
某些音频序列中存在采样值全部为0的帧,其DCT谱也全部为0,无法嵌入和提取。若某些帧能量较小,DCT谱线的抗噪能力会很差。算法会计算每帧的能量,若小于一定的门限,则随机选取多个位置,将谱线幅度修正为适当大小的随机值。
衡量声音失真度的指标分主观和客观两种[6]。本文使用MOS等级评分来衡量,因为客观指标有时与听觉感受并不一致。本算法的MOS测试结果为:多数声音样本评分为良(失真刚有察觉,但不讨厌),少数评分为优(失真无察觉),只有个别的样本评分为中(有察觉,且有点讨厌)。实际上,实验对象均认为复合声音无异常,只有通过复合声音与宿主声音的对比才能觉察到失真。图3(a)的波形是汉语“北”的原始语音,图3(b)是嵌入9 bit的隐藏信息后的波形。
图3 嵌入隐藏信息前后声音波形对比
由于有限字长效应,即使未受到攻击,提取的信息也可能有误差,可以用误码率来衡量。目前的音频传输或存储格式,字长多是16 bit或8 bit[7],这低于 DCT变换要求的计算精度。具体来说,发端IDCT的结果应该是实数精度的,但实际传输或存储时只有16 bit,这就带来了一定的量化噪声。本算法对此有良好的鲁棒性,经测试,有1/2的样本误码率为零,其余样本平均误码率在10-4以下。因此,只要加入纠错编码完全可实现无差错提取。
由于每帧嵌入1 bit,则帧长越短,信息容量越大。但帧越短其DCT谱也越短,由于算法采用了中频截取、大谱线回避和多频点重复,帧长在技术上存在一个下限。通过对帧补0延长的办法可以提高频谱序列的长度,但由于频域有效分辨率并没有提高,该方法效果有限。经测试,对于44 kHz宿主音频,要保持误码率在10-4数量级,最小帧长在8~10 ms之间,即码率约为125~100 bit·s-1。但若不考虑滤波攻击,就可省略中频截取步骤,只保留回避和多频点重复,则最小帧长缩短约为1 ms,即隐藏信息的码率约是1 kbit·s-1。这已经接近目前语音压缩编码的极限码率1.5 kbit·s-1了[7]。
表1所示是本算法经受几种常见攻击后提取的图像,实验中的宿主音频为44 kHz采样,16 bit。
表1 部分鲁棒性测试结果
由表可见算法对于ADPCM压缩、MP3压缩具有良好的鲁棒性,对加性噪声有较好的鲁棒性。但对GSM压缩比较敏感。其原因在于ADPCM和MP3并不改变中频段主要谱线的结构,而GSM声码器在压缩时主要记录极点位置以及声门波激励等参数[8],解压缩后还原的频谱结构有一定的偏差,从而误码率较大。对于重采样攻击,在2倍率重采样时,本算法的鲁棒性较好,但3倍率以上重采样会使隐藏信息基本丢失。
表1也比较了置乱前后误码分布的变化,由于能量偏低的帧其抗噪性比较弱,不置乱时误码呈突发分布。若隐藏信息是实时的,则可使用交织编码方式。虽然置乱或交织本身并不改变误码率,但如果以后加上纠错编码,则效果会有较大的不同。
本文所设计的隐藏算法基于常用的DCT变换,实现起来简单快速,盲检测的提取方式具有较高的实用性,性能方面透明性和鲁棒性较好,结合简单的纠错编码可以在多种攻击下实现无差错提取。不考虑滤波攻击时信息容量可以达到比较高的水平,但不足之处在于对某些类型的攻击比较敏感。
[1] Shyndel R G Van,Tirkel A Z,Osborne C F.A digital watermark[C].Austin:Proceeding of ICIP'94,1994.
[2] 陈昕.语音水印技术的研究与应用[D].北京:北京邮电大学,2010.
[3] 项世军.稳健音频水印研究[D].广州:中山大学,2006.
[4] 陈亮,张雄伟.语音保密通信中的信息隐藏算法研究[J].解放军理工大学学报:自然科学版,2002,3(6):1-5.
[5] 门爱东.数字信号处理[M].北京:科学出版社,2009.
[6] 王继祥,刘贵忠,刘广健,等.基于小波谱失真测度的语音质量评估[J].兵工学报,2008,29(1):33 -36.
[7] 郭立,王妙锋,刘璐,等.1.6Kb/s类MELP语音压缩编码器的FPGA实现[J].小型微型计算机系统,2008,29(8):1553-1556.
[8] 韩纪庆,张磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2005.