陆诗依, 高 勇
(四川大学 电子信息学院,四川 成都 610065)
隐蔽信息嵌入到数字音频信号中的算法主要分为两种:时域嵌入和变换域嵌入。时域是将隐蔽信息嵌入到音频采样信号中。变换域嵌入是先将采样的音频信号在变换域处理,然后将隐蔽信息嵌入到处理后的音频信号中。在变换域算法中,文献[1]给出了离散傅里叶变换(discrete Fourier transform,DFT)的信息隐藏算法,主要用于版权保护。文献[2]提出了一种结合奇异值分解(singular value decomposition,SVD)和离散小波变换(discrete wavelet transform,DWT)的隐藏算法,主要是在小波包系数中修改特征矩阵的值。文献[3]给出了扩频信息隐藏算法,主要对扩频后的性能进行一些描述。文献[4]提出了离散傅里叶变换和离散小波变换相结合的隐藏算法。文献[5~10]提出了提升小波变换(lifting wavelet transform,LWT)-SVD算法,这些文章算法的共同点都是把秘密信息转换为二进制比特,通过改变奇异矩阵的某些值进行嵌入。以往的LWT-SVD算法,都存在隐藏容量不够大、嵌入点固定等问题。其中隐藏容量不够大一直是语音隐藏算法中较难解决的问题,本文的算法可以进一步地提高隐藏容量,并且能灵活决定嵌入秘密语音的位置。
首先把隐藏信息进行Logistic一维变换,再将输出的数据流经过里所(Reed-Solomon,RS)编码,得到两层加密的秘密语音。同时载体语音经过提升小波变换,得到两个系数,即近似系数和细节系数。本文在近似系数中藏入秘密语音,在细节系数中藏入嵌入点的位置,经过SVD的变换来更新近似系数,用更新后的近似系数和细节系数形成含密语音。
通过实验测试,本文算法显著地提升了语音的透明度,隐藏容量和抗干扰能力,可以实现嵌入语音位置的动态化。
在文献[10]中,Islam M提出了一种不依赖于傅里叶变换的新的小波构造的方法,即提升小波变换法。提升小波变换可以实现系数的整数化,使其在运算中减小了计算冗余度。提升小波变换即Harr,其具有如下特性:1)任一函数均可由其位移函数组成;2)任意函数都可以由常函数,以及其位移函数组成;3)具有正交性等。
Logistic变换,其序列映射之后的信号具有混沌特性,很难预测。表达式为
Bk+1=μBk(1-Bk),-1≤Bk≤1,0<μ≤4
(1)
式中μ为控制参数,Bk为第k个语音数据。根据不断的累计迭代,最终序列的值与初始值B0以及控制参数μ有关。通常,可以用Lyapunov指数来判别一个系统是否具有混沌特性,当系统的Lyapunov指数为正时,系统才呈现出混沌状态。文献[8]中指出,只有当控制参数μ∈[3.75,4]时,Logistic序列才呈现出混沌状态。本文置乱采用的Logistic序列初始值为B0为0.61,μ为3.90。
一种特殊的BCH码,且其码元和生成多项式g(x)都在伽罗华域GF(qm)(qm≠2)上。其能够纠正信号在信道中传输时引入的随机错误与突发错误。RS(n,k)编码的一些基本性质如下:
n=2m-1表示码字的长度,r=n-k=2t为监督码元,其能够纠正t个错误。
RS编码生成多项式的表达式为g(x)=(x-α)(x-α2)…(x-α2t),其中α为多项式g(x)的根,生成多项式的定义如下:在码元RS(n,k)中,存在唯一的n-k次多项式g(x),使得每一个码字多项式c(x)都是g(x)的倍式。
RS码的校验多项式为h(x)=(xn-1)/g(x),其阶数为k,满足
g0h1+g1hi-1+…+gn-khi-(n-k)=0,i=1,2,…,n-1
(2)
生成矩阵G=[Ikpz],其中Ik为k×k阶的单位方阵,表示码字多项式c(x)中的第n-1~n-k次的系数,这些系数是信息位,其余位置是监督位。具体有
Pz=[xn-1(modg(x))xn-2(modg(x))…
xn-k(modg(x))]T
(3)
(4)
式中 mod为模二运算。
RS码的校验矩阵H为
(5)
RS的编码主要解决一个除法问题,以生成多项式为模,而RS的解码比编码要更加复杂,其主要是从接收多项式r(x)中找出错误图样e(x),其中错误图样可以表示为
(6)
式中Yi∈GF(2m)为错误值,xi=αli为错误位置。RS解码分为时域解码和频域解码两种方法,由于频域解码实现开销大,一般采用时域解码方法,解码步骤如下:
1)根据接收码字计算伴随式,计算第i个伴随式为
=r0(αi)0+r1(αi)1+r2(αi)2+…+rn-1(αi)n-1
(7)
(8)
将式(8)写成矩阵形式,得
(9)
2)采用BM算法[11]计算错误位置多项式。
BM算法就是用伴随式计算错误位置多项式的一种迭代算法,错误位置多项式为
(10)
式中σi为错误位置多项式的系数,t为实际发生错误的符号的总数。
将式(10)展开并变形,写成矩阵的形式为
(11)
根据式(11),利用BM迭代算法可求出错误位置σi。
3)求解错误位置多项式的根,错误位置为多项式的根的导数;亦即检验r(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0中有几处错误,钱氏搜索法[8]就是依次对每一个rn-i(i=1,2,…,n)检验,从而求出σ(x)=0的根。
4)计算错误符号的值,表达式为
(12)
5)译码输出等于接收码字减去错误图样。
本文采用RS(15,7)编码。RS编码的输入为经过置乱之后的秘密信息w2(n),输出为s(n)。
1)将载体语音C先进行一维小波变换,得两个系数。
2)秘密语音S(二进制比特流)进行Logistic一维变换,再经过RS编码,得到加密的秘密语音。
3)在小波变换的低频系数中嵌入秘密信息,高频系数中嵌入秘密语音的位置,C的长度大于S。
嵌入方式如下:
先将C进行小波变换,按照式(13)~式(15)的公式隐藏信息
CL=UPVT
(13)
D=CL+KS
(14)
(15)
式中CL为C经过小波变换的低频系数(近似系数),经过SVD变换得到右特征矩阵V、奇异值矩阵P、左特征矩阵U,式(14)中0 4)将式(14)中的秘密语音的嵌入点q(嵌入系数CL中的第q个点)转换为二进制比特流{ai}(i=1,…,n),取载体语音高频系数CH前面n(n为偶数)个数值嵌入,并将其按照降序排列,每隔n个数值嵌入一个信息位,具体嵌入方式为 (16) 式中CHt为原始的第t(t=q+n)个高频系数,CH′为更新之后的第i个高频系数值,K为语音嵌入强度,藏好信息位将CH的位置还原。 经过反小波变换,把{CL′,CH′ }重新组合为新的含密语音C′。 1)传递的密匙为{U1,V1,P,K},得到含密语音C′,将含密语音进行小波变换,分别取出来CL′和CH′。 2)取CH′中的前n项值,将其按照降序排列,按照式(17)取秘密语音位置隐藏点 (17) (18) 3)按照如下公式进行SVD构造和分解 CL′=UP1V (19) U1P1V1=D (20) UPV=CL (21) 式中 先将CL′进行SVD变换,将奇异值矩阵P1、密匙中的左特征矩阵U1、右特征矩阵V1进行SVD反变换,构成式(20)中的融合语音D,再经一次SVD反变换构成式(21)中的CL。 4)提取的秘密语音为 (22) 5)判断门限值 (23) 式中S(i)为S中的第i个值。 6)提取出来的比特流进行RS译码,经过逆Logistic变换,得到秘密语音 实验均采用8 kHz采样,16 bits量化的语音,取一段4.2 s 载体语音C,取1.54 s秘密语音S,C的长度大于S,分解出来的细节系数CL的长度要大于S的长度,每帧嵌入点随意,在CL的一部分中隐藏信息,灵活的嵌入点让信息隐藏更加安全。实验结果如图1所示。 图1 实验结果 1)在客观上,用信噪比(SNR)来衡量嵌入秘密语音后载体的失真,定义为 (24) 式中C(m)为原始载体语音,C′(m)为含有秘密语音的载体语音,h为秘密语音的长度。 2)用归一化相关系数(NC)来衡量恢复出的秘密语音的失真,定义为 (25) 式中s(m)为原始的秘密语音,s′(m)为恢复出的秘密语音。SNR与NC的值越大,说明算法的透明性越好。由该算法计算出的载体信息的SNR为36.96 dB,密语音的NC值为0.996 8。这些数据从客观上说明该算法的透明性好,而且恢复出的秘密语音几乎与原始的秘密语音失真很小,语音的舒适度较好。 本文采用RS对秘密语音进行编码,对比了未进行RS编码的算法,经过取MIMIT语音库中的300条语音的测试,得出信噪比与误码率的关系如图2。 图2 提取之后的秘密语音 可以看出,未加RS编码的误码率明显高于有RS编码的情况,并且信噪比在20 dB以上时,误码率很少,在一定地程度上可以抵抗噪声,在实验中还发现,只要误码率小于或者等于4 %,恢复出的秘密语音虽然夹杂着噪声,但有一定地可懂度,人耳能够分辨出语音的内容 取MIMIT语音库中300条纯净语音进行对比实验,对不同算法的含密语音结果测量其SNR值,进行透明性打分:采用MOS[12]评价标准进行音质主观性打分;测量隐藏量(秘密语音/载体语音长度)。结果如表1~表4。 表1 鲁棒性分析(误码率) % 表2 不同载体音乐的SNR值 dB 表3 不同算法的透明程度MOS打分 表4 隐藏量 % 把所选取的300条纯净语音作为载体语音,嵌入秘密信息后,对含密语音进行了各种攻击,攻击实验如下:1)带通滤波。截止频率为800 Hz和5 kHz;2)加高斯白噪声,信噪比为20 dB;3)重采样。将待测音频先下采样的方法到44.1 kHz,再上采样到96 kHz;4)重量化。将音频从16 bit量化到8 bit再量化为16 bit;5)MP3压缩。将音频信号进行比特率为64 kbp的压缩,再解压缩;6)MP4压缩。将音频信号进行比特率为 128 kbps的压缩,再解压缩。对被攻击的含密语音进行水印提取,并统计信息误码率的平均值,得到表1数据,可以看出本文算法有较好的鲁棒性。 在表3中不同算法使用了不同的载体对含秘密语音进行了MOS打分,评分接近5表示语量优质,使用本文算法之后的含密语音,在一定程度的信噪比中,仍然具有可听性,在表4中,进行了隐藏量的对比,对于隐藏一段秘密语音,有时候情况并不允许传输很长的载体,所以隐藏容量一直是算法的一个重点,经过测试,本文算法的隐藏容量有一定程度提高。 本文所采用的隐藏算法结合了LWT和SVD两种变换,考虑到含密语音在传输过程中的抗噪声干扰问题,在秘密语音中加入了RS编码,可以纠正一定的错误码元,降低了传输的误码率,提高了算法的鲁棒性。在传统LWT-SVD算法中,秘密语音的嵌入点不能动态地变化,导致了透明性不高,在本文的算法中,将秘密语音隐藏位置点量化进入细节系数中,可以做到秘密语音的动态嵌入,提高了算法透明性。隐藏容量一直都是隐藏算法中重视的问题,本文的算法使得隐藏容量较以前的算法有明显的提高,本文算法在鲁棒性、透明性、隐藏容量上都有极大的改善。1.5 秘密语音提取
2 仿真实验与结果分析
2.1 算法实验结果
2.2 RS编码对比实验
2.3 算法性能的对比实验
3 结束语