徐志伟,高 勇
(四川大学,四川 成都 610065)
隐蔽通信是一种能在通信过程中保护秘密信息不被通信双方之外的第三方察觉的通信方式。相比传统信息加密技术,隐蔽通信隐藏了秘密信息的存在性[1]。
隐蔽通信有透明性、容量、鲁棒性3 个性能指标[2-3]。它们相互制约,很难同时达到很好的效果。在不同的应用场景,对不同指标的需求也是不同的。
透明性是隐蔽通信中非常重要的参数。实际应用场景中,有的场景对容量要求不高,但对鲁棒性要求较高,如音频水印。在信道质量很高的数字通信中,鲁棒性需求相对低一些,而对含密音频的透明性和秘密信息的安全性要求相对高一些。
目前音频隐写技术在变换域上取得了不错的成绩。变换域算法需要先将时域上的音频信号变换到相应域,然后将秘密信息嵌入到这些变换域系数上。经典的方案基于各种不同的变换,如离散余弦变换(Discrete Cosine Transform,DCT)[4]、离散小波变换(Discrete Wavelet Transform,DWT)[5-6]、奇异值分解(Singular Value Decomposition,SVD)[7-8]和小波包分解(Wavelet Packet Decomposition,WPD)[9]等。这类算法在鲁棒性上相较于时域方案[10-12]有更好的效果,但是算法复杂度较高,容量也较低。
文献[7]提出了一种基于奇异值分解(Singular Value Decomposition,SVD)和指数-对数运 算(Exponential Operation-Logarithm Operation,EOLO)的变换域盲水印音频隐藏算法,并针对版权保护的应用场景提出了一种数字水印方案;文献[8]提出了一种基于离散小波变换(Discrete Wavelet Transformation,DWT)和奇异值分解并利用人耳听觉系统(Human Audio System,HAS)特性的音频数字水印算法。这种方案对不同攻击具有良好的鲁棒性,还具有较好的透明性;文献[9]提出了一种基于小波包分解(Wavelet Packet Decomposition,WPD)和指数-对数运算(Exponential Operation-Logarithm Operation,EO-LO)的变换域盲水印音频隐藏算法,相比文献[7]进一步优化了鲁棒性。文献[7-9]在透明性、鲁棒性上都取得了较好的效果,但其容量都比较有限,算法复杂度也比较高。文献[13]将深度学习与音频隐写相结合,取得了较好的容量与透明性。
音频隐写术在变换域上研究较多,但是在时域上的研究相对较少。本文在时域上针对需要透明性和容量这两个指标的应用场景提出了一种透明性较高、容量较大的音频时域隐写算法。本文的算法有以下优点:(1)算法是时域上的,算法复杂度低、容量大;(2)能自适应隐藏到载体音频极值采样点,具有较高的透明性;(3)对秘密音频幅值进行拆分-合并运算和扩频编码,提高了秘密音频的安全性。
WAV 是常见的声音文件格式之一。音频WAV文件是按固定采样频率对时域音频进行采样得到的幅值序列,其中,幅值极值点是音频幅值序列的特征。判定自适应定位音频幅值采样点是否为极大值的算法步骤如下:
(1)先求幅值序列的一阶差分,然后取符号得到序列K(正数取为1,负数取为-1),再求一阶差分,若该幅值采样点为极大值,则该采样点前一个采样点和后一个采样点都应该小于该采样点,于是该采样点位置与前后采样点的幅值的一阶差分应该为正数和负数,即原幅值序列的一阶差分序列取符号后为+1 和-1。因此,序列K再求一阶差分后,极大值采样点处应该为-2。
(2)当在极小值采样点时,该采样点的前一个和后一个采样点都应该大于该采样点,于是该采样点位置与前后幅值采样点的一阶差分取符号后为-1、+1,此时,序列K再求一阶差分后,极大值采样点处应该为2。
本文结合拆分发送与接收的思想对秘密音频进行处理,即在发送端对秘密音频先进行拆分运算后分成两组数据,接收端进行合并运算。本文按二进制位拆分秘密音频,秘密音频采样位数是8 位,在发送的时候将这8 位数据按一定的方法分成两组4位的数据分别发送,且将这两组数据的4 位数据打乱顺序,这是由于只用一组数据很难恢复秘密信息,接收方只有得到这两组数据再进行合并运算才能得到秘密信息。因此,秘密音频的拆分与合并运算能提高秘密音频的安全性。
扩频编码是将传输信号的频谱(spectrum)分散到较其原始带宽更宽的一种通信技术,其特点是传输信息所用的带宽远大于信息本身带宽。扩频编码对于音频信号中的数据隐藏非常有效。
本文对秘密音频比特流进行简单扩频编码,以增强其安全性与鲁棒性。扩频和解扩的公式分别为:
式中:D0 表示原信息流的各个数据;PN为扩频码;D为扩频编码后的相应数据。
载体音频与秘密音频参数选取如表1 所示。
表1 算法音频参数
音频隐写算法如图1 所示,其详细步骤如下:
图1 音频隐写嵌入过程
(1)假设载体音频序列表示为:
式中:K为采样点序号,用于记录采样点位置;D0为采样点幅值,因为载体音频是16 位的,所以 -215 式中:floor函数表示对序列元素向下取整。8 位有效位包含1 位符号位和7 位数值位,此操作的目的是解决后续低有效位嵌入数据后对音频序列排序顺序的影响。 然后得到冗余序列: (2)求出音频信号(K,D2)所有的采样点极值位置(包含极大值与极小值)。为了求载体音频D2 时域的极值位置,先对序列D2求差分,再取其符号,然后再求差分得到新序列D': 式中:diff函数表示对序列求差分;sign函数表示对序列求符号。 当D'=-2 时,表示该位置为极大值;当D'=2 时,该位置为极小值。极大值和极小值采样点与其对应的序号分别为: (3)对二进制8 位有效位的极大值采样点按Dmax值的大小进行排序,得到新的序列为: 对二进制8 位有效位的极小值采样点按Dmin值的大小进行排序,得新的序列: (4)假设秘密音频为: Ks=1,2,3,…为采样点序号,Ks为8 位采样点量化值,对每个采样点数据Ds,拆分成Ds1和Ds2两部分,每部分由4 位二进制数据组成,其中Ds1的第1~4位分别为Ds的第5、4、1、7位,Ds2的第1~4位分别为Ds的第6、3、2、8 位。得到两组数据: (5)对两组数据DS1,DS2 扩频编码得到: 式中:PNI,PN2 为扩频码,本算法中为设定的任意4 位二进制数。 (6)将DS1',DS2'分别嵌入载体音频极大值采样点Dmax 和Dmin 的不重要位,先对极值采样点的不重要位进行数据清洗运算: 然后将DS1',DS2'相加嵌入: 式中:floor函数表示对序列元素向下取整。D0(K)表示序列D0 的K序号对应的值。得到含密音频(K,D0)。 音频提取算法如图2 所示,其详细步骤如下: 图2 音频的提取过程 (1)根据2.1 节音频隐写算法的步骤(1)~(3)得到排序后的极值采样点序列为: (2)按顺序将极大值采样点和极小值采样点中不重要位的两组数据提取出来得到: 式中:PNI,PN2 为扩频码,为隐藏算法中设定的二进制数。 (3)用提取的两组数据Ds1,Ds2合并得到秘密音频幅值序列Ds后,可得秘密音频DS: 式中:Ks=1,2,3,…为采样点序号。其中,Ds的第5,4,1,7 位分别为Ds1的第1~4 位,Ds的第6,3,2,8 位分别为Ds2的第1~4 位。 测试实验中,秘密音频选取人声录音,载体音频分别选取了摇滚音乐、流行音乐、民谣、钢琴曲、欧美音乐分别测试算法,并从容量、透明性和鲁棒性这3 个指标来分析算法性能。 隐蔽通信中嵌入容量(Cap)通常用单位时间内可以嵌入的秘密信息比特数(bit/s)来衡量: 本文方案在保证透明性的前提下选取了更多的不重要位,因此具有可观的容量。但本文方案嵌入容量和具体载体音频有关,使用不同载体音频测试结果如表2 所示,它们的容量均值为14 829 bit/s。相比文献[7-9]的方案大幅提升。表3 展示了本文方案隐藏容量的测试结果。 表2 不同载体音频信号的容量 表3 与其他文献的容量比较 表2 测试数据中,算法对不同载体音频容量表现不一致,但可以发现,在柔和的音乐中容量差一些,在摇滚音乐中表现较佳。 表3 展示了本文方案隐藏容量的测试结果与相关文献的隐藏容量对比。 图3 显示了秘密音频在含密音频的嵌入位置,每个位置嵌入4 bit 数据。其中载体选择的是人声录音的一段,从隐藏位置也可以发现,秘密音频的嵌入在极值位置,因此保证了方案较好的透明性。 图3 含密音频隐写位置 透明性也称不可感知性,是衡量含密音频不能被感知到包含秘密音频的指标。对于一个多媒体媒介,嵌入秘密信息必然会改变其原有信号特征,因此隐藏方案不应导致原媒体质量的明显下降,也不能对载体的正常使用产生影响。隐蔽通信中通常用信噪比(Signal Noise Ratio,SNR)来衡量,其计算公式为: 使用不同载体音频测试的结果如表4 所示,它们的信噪比平均值为39.97 dB。表5 展示了本文方法与其他相关文献所提方法的透明性对比。 表4 不同载体音频信号的信噪比 表5 与其他文献算法的信噪比比较 图4 展示了载体音频与含密音频的时域对比,可以看出,两者差值非常小,且在实际听觉感受上也几乎没有差异。 图4 载体音频与含密音频对比 本文提出了一种先对秘密音频进行拆分-合并运算,然后扩频自适应嵌入到载体音频时域极值采样点的音频隐写算法。算法主要通过在极值位置的不重要位嵌入与提取秘密音频,并结合秘密信息拆分发送与接收的思路,有效提高了隐蔽通信的透明性和安全性。实验结果表明,算法透明性和对比文献所提算法相比最少提高了10 dB,容量相比对比文献最少提升了84 倍,但对多种攻击鲁棒性表现较差。因此,本文算法很适合音频文件端对端的秘密通信应用场景。以后的工作中,还将就提高算法的鲁棒性作进一步研究。2.2 音频提取算法
3 实验结果与分析
3.1 音频隐写算法容量测试
3.2 音频隐写算法透明性测试
4 结语