尉爽生,楊忠良,江旻宇,黃永峰
1.清華大學(xué)電子工程系,北京100084
2.萊斯大學(xué)計算機科學(xué)系, 美國得克薩斯州77005
Shannon 在1949 發(fā)表的《保密系統(tǒng)的通信理論》中描述了解決安全問題的3 種技術(shù)方案:加密系統(tǒng)、隱私系統(tǒng)和隱藏系統(tǒng)[1].雖然加密系統(tǒng)和隱私系統(tǒng)至今依然是網(wǎng)絡(luò)系統(tǒng)中的主要安全方案,但它們在保護信息安全的同時也暴露了信息的重要性和存在性,因此容易遭受各種針對性攻擊.信息隱藏利用載體數(shù)據(jù)的信息冗余空間[5]進行秘密信息嵌入,掩蓋了信息的存在性,從而減少被攻擊的風(fēng)險.
自然語言文本是人們?nèi)粘I钪惺褂米顝V泛的信息載體,基于文本的信息隱藏存在廣闊的應(yīng)用空間.文本信息隱藏的方法主要有基于文本格式[2-4]、基于文本語法、語義[5-6]和基于文本生成[7-11]的方法.基于文本格式的方法主要是通過修改文本文件的一些格式屬性實現(xiàn)信息的嵌入,例如使用不可見字符(空格、制表符等)在單詞間增刪[2],還有對格式化文本(WORD 等)通過行移編碼和字移編碼[3-4]對文本的行間距或字符間距做微小改變來進行信息嵌入.這類方法主要出現(xiàn)在早期的研究中,魯棒性較差,重新排版或者清除格式后隱藏的秘密信息也會丟失.基于語法、語義的信息隱藏方法結(jié)合語言學(xué)、統(tǒng)計學(xué)理論以自然語言處理(natural language processing, NLP)技術(shù)為基礎(chǔ),通過對文本進行詞匯、語法、語義變換來實現(xiàn)秘密信息的嵌入,在這類方法中相對成熟的有同義詞替換算法[5-6].
基于自然語言文本生成方法的目標(biāo)是利用自然語言處理技術(shù)生成符合自然語言統(tǒng)計特征的載密文本.文獻[7]提出了一種基于馬爾可夫鏈模型和DES(data encryption standard)的文本信息隱藏系統(tǒng),通過計算語料庫訓(xùn)練集中單詞出現(xiàn)的頻率得到轉(zhuǎn)移概率,利用轉(zhuǎn)移概率對單詞進行編碼,然后在文本生成過程實現(xiàn)秘密信息的嵌入.文獻[8]利用一階馬爾可夫模型構(gòu)建生成宋詞的語言模型,提出了將信息隱藏融入到宋詞生成過程的方法.近年來,深度學(xué)習(xí)在自然語言處理領(lǐng)域得到廣泛應(yīng)用,使自然語言處理能力得到了較大的提升,隨之出現(xiàn)了較多的基于神經(jīng)網(wǎng)絡(luò)模型的文本隱寫方法.文獻[9]以神經(jīng)網(wǎng)絡(luò)模型為基礎(chǔ)設(shè)計了基于中文古詩生成的信息隱藏方法,并通過模版約束的生成方法以及依據(jù)互信息的大小排序候選詞的方法提高含秘詩詞語句的質(zhì)量.文獻[10]使用長短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM)模型在生成的tweets 和emails文本中嵌入秘密信息.文獻[11]提出一種基于RNN 的文本信息隱藏方法,根據(jù)需要隱藏的秘密信息生成高質(zhì)量的載密文本,并對單詞的條件概率分布進行定長編碼和變長編碼處理,在隱蔽性和信息嵌入率方面都表現(xiàn)了良好的性能.然而這些方法只在生成較短文本或?qū)υ挄r具有較好的性能,難以生成主題明確且語義完整的長文本.
當(dāng)今NLP 技術(shù)能力快速提升,基于文本生成的信息隱藏方法取得了不錯的成果,表現(xiàn)出了巨大的潛力.機器翻譯可以根據(jù)源語言文本來生成同樣意義的目標(biāo)語言文本,因此本文通過研究機器翻譯的技術(shù)特點,提出了一種基于神經(jīng)機器翻譯的文本信息隱藏方法.
統(tǒng)計機器翻譯模型在預(yù)測翻譯結(jié)果的過程中通常會為每個源語句翻譯出多個候選語句.通過對該候選語句進行編碼,并根據(jù)待嵌入秘密信息選取其中一個候選語句作為翻譯語句輸出,便可以將秘密信息嵌入到翻譯語句中.文獻[12]首次提出這種思路并設(shè)計了Lost in Translation(LiT)算法,LiT 算法使用多臺翻譯機對載體文本中的句子進行翻譯,則每個語句可獲得不同的翻譯結(jié)果.對不同的翻譯機進行Huffman 編碼,根據(jù)需要隱藏的信息位選取對應(yīng)編碼的翻譯機所產(chǎn)生的翻譯文本,從而實現(xiàn)信息隱藏.文獻[13]針對文獻[12]存在的安全性問題,提出了不需要傳輸載體文本的改進算法LiJtT(Lost in Just the Translation).該算法使用通信雙方共享的密鑰和散列函數(shù)計算不同翻譯結(jié)果的哈希值,指定每個哈希值的某些位(稱為隱藏信息位)表示其對應(yīng)的翻譯結(jié)果的攜帶信息,選取哈希值中隱藏信息位與當(dāng)前需要隱藏的信息相同的翻譯結(jié)果作為載密文本.信息接收方計算出載密文本的哈希值即可提取隱秘信息,但該方法實現(xiàn)起來較為復(fù)雜,信息嵌入率很低.文獻[14]提出了改進的方案Lost in n-best List(LinL),與其他使用多個翻譯模型的方法相比,該方法只使用一個統(tǒng)計機器翻譯模型,因此產(chǎn)生的候選結(jié)果差異小,使得該方法具有更好的抗隱寫分析能力.但是上述方法都存在信息隱藏容量較低以及算法過于復(fù)雜的問題,因而實用性較差.
使用神經(jīng)網(wǎng)絡(luò)模型來完成機器翻譯任務(wù)的神經(jīng)機器翻譯(neural machine translation,NMT)是2013年以后快速發(fā)展起來的.Google 在2014年提出了編碼器-解碼器(Encoder-Decoder)模型框架[15],該模型框架包括2 個循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN),分別作為Encoder 和Decoder,主流的NMT 模型都以這種框架為基礎(chǔ).之后文獻[16]提出了在NMT 中引入注意力(Attention)機制,進一步提升了翻譯質(zhì)量.目前,NMT 的很多性能都超過了統(tǒng)計機器翻譯模型(statistical machine translation, SMT),已成為主流的機器翻譯技術(shù).
典型的編碼器-解碼器框架如圖1所示,假設(shè)輸入序列為X={x1,x2,···,xt},在時間步t,RNN 根據(jù)當(dāng)前時刻的輸入向量xt和上一時間步的隱藏狀態(tài)ht?1得到當(dāng)前的隱藏狀態(tài)ht=f(xt,ht?1),隨后編碼器將各時間步的隱藏狀態(tài)變換為表示輸入序列語義編碼的向量c=q({h1,···,ht}),其中的f和q被稱為激活函數(shù),它們對編碼器中相應(yīng)層的輸入進行非線性的映射.
圖1 編碼器-解碼器框架Figure 1 Encoder-decoder framework
解碼器在解碼過程中的時間步根據(jù)語義編碼的向量c和已經(jīng)生成的單詞y1來預(yù)測單詞,最終生成整個輸出序列Y={y1,y2,···,yt},輸出序列的概率可以表示為
解碼器最終目標(biāo)是得到最大概率的序列,也就是使用搜索算法求解arg maxp(Y).通常不使用窮舉搜索法,因為它復(fù)雜度太高,效率很低.更常用的是Beam Search.
Beam Search 的主要策略是在每個時間步都選取條件概率最大的K個候選序列,最終得到K個候選語句并從中選擇最佳語句作為輸出結(jié)果.這里K稱為集束寬度(Beam Size).在第1 個時間步選取了條件概率最大的K個單詞,分別作為K個候選序列的首位.之后每一時間步都基于上一步的K個候選序列,分別找出條件概率最大的K個,得到K*K個候選序列,然后分別計算其評分,只保留評分最高的K個單詞.
序列的評分計算式如下:
對于機器翻譯,不同的候選序列長度可能不一樣,因此評分需要進行歸一化處理
Beam Search 具有更加豐富的搜索空間,可以得到較好的結(jié)果.當(dāng)然K越大,得到全局最優(yōu)的可能性就越大,但是計算代價也會很大.通常選擇合適的大小滿足實際需要即可.
神經(jīng)機器翻譯模型通過編碼器對源語言文本進行編碼得到語義向量,然后通過解碼器生成目標(biāo)文本.本文設(shè)計的信息隱藏方法利用這種翻譯機制在Beam Search 解碼器中添加信息隱藏模塊,在解碼輸出目標(biāo)語言文本的過程中實現(xiàn)信息隱藏.
信息隱藏模塊的結(jié)構(gòu)如圖2所示,翻譯模型的解碼器使用Beam Search 搜索算法可以得到每一步輸出的候選單詞.首先對當(dāng)前位置進行可嵌入性檢測以減少信息嵌入對文本生成質(zhì)量的影響,對于可嵌入信息的位置,依據(jù)候選詞的概率排序進行編碼,然后根據(jù)需要嵌入的信息選擇對應(yīng)編碼的單詞作為輸出.
圖2 信息隱藏模塊Figure 2 Information hiding module
本文設(shè)計了一種依據(jù)候選詞概率的“自適應(yīng)”的判別方法,可用來評判當(dāng)前位置是否適合信息嵌入.每個單詞生成位置的候選詞概率分布都會有差異,首先將當(dāng)前位置的候選單詞按概率大小進行排序,然后計算前兩個候選單詞概率的比值,當(dāng)這個比值大于一定的閾值(閾值大小可根據(jù)實驗效果進行調(diào)整)時,就可以判斷該位置不適合信息嵌入.如果限定每個位置只嵌入0 或者1,那么只檢測前兩個單詞的概率比值即可.如果希望盡可能嵌入更多的信息,那么可繼續(xù)依照概率排序檢測相鄰單詞概率的比值是否大于閾值,在不超過Beam Search 搜索寬度的前提下,得到當(dāng)前位置最多可選的候選詞.
候選單詞需要先按照一定的規(guī)則進行編碼,只有這樣信息隱藏模塊才能根據(jù)需要嵌入的二進制比特流來選擇對應(yīng)編碼的候選詞.在進行信息隱藏與信息提取時,也需要根據(jù)同樣的編碼規(guī)則解碼出單詞對應(yīng)的編碼.在通信系統(tǒng)中,典型的編碼方式有定長編碼和變長編碼.定長編碼可用滿二叉樹的葉子節(jié)點來表示,需要當(dāng)前候選單詞至少有2n個,假設(shè)當(dāng)前位置有5 個可用的候選詞,那么可以根據(jù)概率大小排序取前4 個編碼為{00、01、10、11}.變長編碼實際是依據(jù)候選詞的概率排序,使用哈夫曼樹(Huffman tree)的葉子節(jié)點進行編碼.變長編碼依據(jù)當(dāng)前可用候選詞的概率排序依次編碼為{0,10,110,111,···}.
對于相同數(shù)量的候選詞來說,變長編碼可以有更長的編碼長度,使得在單個位置嵌入的信息位數(shù)更多.然而,長編碼意味著所選單詞概率較低,生成文本質(zhì)量較差.文本質(zhì)量應(yīng)該優(yōu)先于信息嵌入率考慮,因此本文使用定長編碼方式.
信息嵌入過程如圖3所示,神經(jīng)機器翻譯模型使用Beam Search 解碼器.在目標(biāo)文本逐詞解碼過程中,對Beam Search 搜索的候選單詞進行編碼,然后根據(jù)需要嵌入的bit stream 選擇對應(yīng)編碼的單詞.
圖3 神經(jīng)機器翻譯及隱寫模型Figure 3 Neural machine translation and steganography model
在翻譯過程中,解碼器在某些位置會輸出占位符ε,它會在整個目標(biāo)語句生成后清除,這種占位符所在的位置是不可進行信息隱藏處理的.還有一些位置上候選詞空間中相鄰排序的候選詞概率差異較大,這些位置通常只有概率最大的那個候選單詞是唯一合適的選擇,如圖3中的lauter.這個位置就不能進行信息嵌入,因為只有一個有效的候選單詞而未達到本算法的編碼要求.這些檢查工作由可嵌入性檢測單元執(zhí)行.
隱藏算法具體步驟描述如下:
步驟1輸入源語言序列X={x1,x2,···,xt},以及完成二進制編碼的秘密信息序列B={b1,b2,···,bn},例如{1,0,···,1}.
步驟2翻譯模型開始執(zhí)行翻譯任務(wù).
步驟3產(chǎn)生目標(biāo)語句的第1 個詞語y1時使用貪婪搜索選取目標(biāo)候選詞中最大概率的單詞,第1 個單詞位不能嵌入信息.
步驟4產(chǎn)生通過Beam Search 算法搜索目標(biāo)語句序列的下一個單詞yt,得到目標(biāo)單詞的候選詞空間P(yt?1,yt|xt).每一步都根據(jù)目標(biāo)語句序列的概率評分進行排序,保留Beam Size 個評分最優(yōu)的結(jié)果.本文暫存目標(biāo)詞語的候選單詞及對應(yīng)的概率Ci={c1i,c2i,···,cmi},然后生成下一個目標(biāo)單詞.
步驟5重復(fù)步驟4 直至目標(biāo)語言生成完,并得到Beam Size 個評分最優(yōu)的候選翻譯,選取一個評分最高的翻譯序列并提取其搜索路徑上各時間步上的候選單詞及對應(yīng)概率的集合,按照候選單詞的概率排序得到整個目標(biāo)語句的候選詞集合C={C1,C2,···,Ci}.
步驟6根據(jù)步驟5 得到的候選單詞及對應(yīng)概率的集合,依次對序列各位置的候選單詞進行可嵌入性檢測并完成候選單詞編碼.在可嵌入信息位,根據(jù)秘密信息序列B中的二進制位流選取候選單詞中對應(yīng)編碼的單詞進行解碼輸出,不可嵌入位則直接使用最大概率的候選單詞解碼輸出,最終得到目標(biāo)語句單詞序列的輸出
二進制秘密信息全部嵌入完成后,剩余文本將繼續(xù)翻譯但不進行信息嵌入.秘密信息的長度以及信息嵌入的開始和結(jié)束位置等信息統(tǒng)一編碼在二進制比特流中.
秘密信息的提取過程如圖4所示,信息提取時采用與信息嵌入相同的模型及模型參數(shù).對源語言文本執(zhí)行翻譯,獲取最大概率的目標(biāo)語句序列及其搜索路徑上的候選詞集合C={C1,C2,···,Ci}.接著對各位置的候選詞使用與信息嵌入方法一致的可嵌入性檢測并對候選單詞進行編碼.最后查找隱寫文本中各單詞所對應(yīng)候選詞中的編碼,這些編碼即為嵌入的二進制序列.
圖4 秘密信息提取Figure 4 Secret information extraction
隱藏信息提取算法可用如下步驟來描述:
步驟1輸入源語言序列X={x1,x2,···,xt},及待提取信息的隱寫文本
步驟2使用翻譯模型對源語言序列X進行翻譯得到概率評分最大的目標(biāo)語言序列Y={y1,y2,···,yt},提取其搜索路徑上各位置的候選單詞及概率集合C={C1,C2,···,Ci}.
步驟3對候選詞集合中各位置上的單詞進行可嵌入性檢測并進行編碼.
步驟4對隱寫文本中的每個單詞位yt重新進行信息提取,查找yt對應(yīng)的候選詞編碼,這個編碼即為嵌入的隱藏信息bi.
步驟5重復(fù)步驟4 直至遇到隱寫語句的結(jié)束符.
本文設(shè)計的信息隱藏模塊可以很方便地集成到神經(jīng)機器翻譯模型中,雖然當(dāng)前使用Attention 機制的神經(jīng)翻譯模型較為普遍,但是Attention 機制需要較大的內(nèi)存和計算開銷.文獻[17]通過與統(tǒng)計機器翻譯的對比總結(jié)了當(dāng)前神經(jīng)機器翻譯的一些不足之處,指出了Attention 機制對于長語句翻譯的作用有限,同時指出了Attention 機制和統(tǒng)計機器翻譯中詞對齊的相關(guān)性.
文獻[18]提出了一種不使用注意力機制的即時翻譯模型,以文獻[16]的研究為基礎(chǔ)來移除Attention 機制,并且使用多層LSTM網(wǎng)絡(luò)實現(xiàn)編碼和解碼的功能,其翻譯質(zhì)量與參考模型相近,并且在長語句翻譯時效果更好.于是本文以這種模型為基礎(chǔ)進行實驗,在解碼器中添加本文的信息隱藏模塊.
實驗中使用WMT 2014 數(shù)據(jù)集進行模型訓(xùn)練,該數(shù)據(jù)集包含450 萬行英語/德語的平行文本.用于訓(xùn)練的平行語料庫按照文獻[18]的方式進行預(yù)處理,首先使用文獻[19]提出的fast_align 方法進行對齊處理,然后在目標(biāo)語句和源語句中插入占位符使它們長度相同.測試數(shù)據(jù)選用WMT newstest 2014.
在隱寫實驗中使用隨機序列作為秘密信息,設(shè)定“自適應(yīng)”信息可嵌入性檢測的閾值t=0.5.為了評估本方法的最小信息嵌入率,各信息嵌入位只選擇概率最大的兩個候選單詞進行編碼,編碼長度為1 bit.經(jīng)過多次重復(fù)實驗得到了不同隱寫序列對應(yīng)的隱寫文本,測試集中的一行測試語句實驗結(jié)果如表1所示.
表1 隱寫實驗樣本Table 1 Steganography experiment samples
在機器翻譯領(lǐng)域評價翻譯質(zhì)量時通常會用文獻[20]提出的BLEU(bilingual evaluation understudy)評價指標(biāo),BLEU 值越高,表示文本翻譯質(zhì)量越高.對于實驗所用的NMT 模型,當(dāng)不嵌入隱蔽信息時,其生成的翻譯文本的BLEU 均值為16;當(dāng)嵌入隱蔽信息時,其生成的翻譯文本的BLEU 均值為9.6.考慮到BLEU 指標(biāo)的結(jié)果表示翻譯結(jié)果與參考翻譯的相似程度,評價方法主要是計算N 元模型(N-gram)的匹配數(shù)量.對于參考翻譯中的同義詞或相似的翻譯結(jié)果,可能得到較低的評分,而隱寫文本會經(jīng)常出現(xiàn)同義詞,因此該指標(biāo)對于評估隱寫文本的質(zhì)量有一定的局限性.本文抽取部分隱寫結(jié)果進行了人工分析,在信息嵌入率適中的情況下,語義及語句的流暢性較好,如表1中的實驗樣本.
隱藏容量(embedding rate)是評估隱寫算法性能的一個重要指標(biāo),它用于衡量在文本中嵌入信息的多少.隱藏容量Re的計算方法是將實際嵌入的比特數(shù)除以整個生成文本的比特數(shù),其表達式為
式中,N為語句的總數(shù),Li表示第i行語句的長度,k表示每個單詞嵌入的信息編碼位數(shù),B(si)表示在第i行語句的總位數(shù),本文的原英文語句中單詞的每個字母在計算機系統(tǒng)中占8 bit,因此其中mi,j表示第i行語句中第j個單詞所包含的字母總數(shù).和分別為語句的平均長度和每個單詞包含的平均字母數(shù),λ為可嵌入信息位置的比例.
評估相對嵌入率(bits per sentence)時只需把前文計算的隱藏容量Re與語句的平均比特位數(shù)相乘即可,即
實驗產(chǎn)生的隱寫文本,統(tǒng)計實驗產(chǎn)生的隱寫文本中不同長度語句的平均信息嵌入位數(shù),結(jié)果如表2所示.其中,整個測試集共2 737 條語句,平均每條語句包含17 個單詞,信息嵌入位數(shù)均值10.5 bit,隱藏容量均值1.32%.
表2 隱藏容量統(tǒng)計結(jié)果Table 2 Hide capacity statistics
實驗數(shù)據(jù)表明本文的隱寫算法在不同的語句長度下都有穩(wěn)定的隱藏容量.實驗中每個可嵌入信息的位置嵌入信息編碼長度為1 bit,即k=1,語句信息嵌入能力達到了10.5 bit/sentence.文獻[9]提出的LiJiT 算法取得的最大信息嵌入率為0.33%,達到2.2 bit/sentence.文獻[10]中的LinL 算法信息嵌入率比LiJiT提高了20%,約為2.8 bit/sentence.對比數(shù)據(jù)如表3所示.
表3 相關(guān)算法隱藏容量對比Table 3 Comparison of hidden capacity by related algorithms
文本隱寫分析的實質(zhì)是區(qū)分隱寫文本和正常文本的二分類問題,主要方法包括針對特定信息隱藏算法的方法和盲檢測方法.文獻[21]提出了針對基于機器翻譯模型的信息隱藏的檢測方法,并指出該檢測方法有以下缺點:一是需要了解隱藏算法的一些私密信息,而這些信息事實上第3 方很難竊??;二是需要對檢測文本做大量的機器翻譯,檢測效率較低.因此針對性的檢測方法難以實用,當(dāng)前隱寫分析主要研究通用性的盲檢測方法.盲檢測方法不需要了解信息隱藏系統(tǒng)的詳細信息,只需根據(jù)載體特征來判斷是否包含隱藏信息.文獻[22]提取文本的單詞頻率和二元組頻率特征后使用支持向量機(support vector machine, SVM)進行文本分類,該方法本質(zhì)是區(qū)分不同翻譯機的翻譯特征,而對只使用一臺翻譯機的方法無效.
文獻[23]提取文本中單詞的相關(guān)性特征后使用Softmax 分類器設(shè)計了一種高效的文本隱寫分析方法,該方法表現(xiàn)出比其他檢測方法更高的檢測效率和準(zhǔn)確率.本文使用該檢測方法進行隱寫檢測實驗,首先在隱寫文本和非隱寫文本中分別隨機抽取80%作為訓(xùn)練樣本,其余的作為測試樣本.實驗測試對隱寫樣本檢測的正確率只有0.57,精度只有0.68,并且召回率只有0.26.
實驗結(jié)果中的正確率和召回率說明該隱寫檢測方法難以區(qū)分正常文本和隱寫文本,表明本文的隱寫方法具有較高的抗隱寫檢測能力.
在當(dāng)前的互聯(lián)網(wǎng)中,網(wǎng)絡(luò)用戶發(fā)布多語種文本的現(xiàn)象比較普遍,因此網(wǎng)絡(luò)空間中多語言文本的數(shù)量急劇增大.無論進行自動的隱寫分析檢測還是僅篩選可疑文本,均大大增加了檢測時間和計算量.如果利用人工跨語言分析來進行隱寫檢測,將會面臨難以想象的工作量和難度.更進一步地,如果進行秘密信息傳遞的雙方靈活地約定傳輸形式,如在極端的時間段、載體文本語種的切換或者發(fā)布渠道的切換等,那么檢測方就更難以搜集到足夠的含秘樣本來進行隱寫分析.
需要注意的是使用本文所提算法進行秘密信息傳輸?shù)碾p方共享模型參數(shù),因此模型及參數(shù)的分發(fā)和更新都需要通過可信信道完成.綜合以上分析,本文的方法具有一定的安全優(yōu)勢.
本文提出了一種基于神經(jīng)機器翻譯模型的文本信息隱藏方法,根據(jù)神經(jīng)機器翻譯模型的工作原理和技術(shù)特點選擇Beam Search 解碼器,在解碼器中添加信息隱藏模塊.依據(jù)相鄰候選詞概率比值關(guān)系設(shè)計了“自適應(yīng)”的可嵌入性監(jiān)測單元,在信息嵌入之前先對各候選詞集合進行可嵌入性檢測,然后對候選詞進行編碼,有效降低了信息嵌入對目標(biāo)語言文本質(zhì)量的影響.實驗結(jié)果表明,本文方法在隱藏容量和抗隱寫檢測性方面均表現(xiàn)良好.在接下來的研究中,我們將使用更為先進的神經(jīng)機器翻譯模型和預(yù)訓(xùn)練模型進行實驗,并且通過進一步研究文本翻譯的特點尋找更適合的信息隱藏位置,優(yōu)化隱寫算法,提高隱寫文本質(zhì)量.