張禎,倪嘉銘,姚曄,龔禮春,王玉娟,吳國華
(杭州電子科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,浙江 杭州 310018)
信息技術(shù)和移動(dòng)通信的應(yīng)用普及,使人們越來越依賴各種數(shù)字媒體來完成日常的通信和交流任務(wù)。然而,信息的數(shù)字化也使其面臨惡意攻擊、非授權(quán)訪問、竊聽和偽造等風(fēng)險(xiǎn)。保障信息安全的主要技術(shù)有信息隱藏和信息加密。區(qū)別于信息加密技術(shù),信息隱藏技術(shù)將秘密信息嵌入公開載體中,以實(shí)現(xiàn)秘密信息的安全通信,保證了傳輸過程的隱蔽性。
傳統(tǒng)的信息隱藏技術(shù)大多通過對載體(數(shù)字文本、數(shù)字圖像、音視頻)內(nèi)容進(jìn)行細(xì)微改動(dòng),嵌入秘密信息并生成含密載體[1]。其中,文本作為日常生活中使用最頻繁的載體之一,已成為信息隱藏的重要載體之一。但是,與其他載體相比,文本的數(shù)據(jù)量較小,包含的冗余信息量也較少,導(dǎo)致秘密信息嵌入相對困難[2]。同時(shí),針對文本信息隱藏的檢測算法[3]也日漸成熟。因此,如何在實(shí)現(xiàn)高容量的文本信息隱藏的同時(shí)提高秘密信息的抗檢測性已成為當(dāng)前的研究熱點(diǎn)。
2014 年5 月,在全國信息隱藏暨多媒體信息安全大會(huì)上,國內(nèi)的多位學(xué)者首次提出“無載體信息隱藏”的概念,開辟了一個(gè)全新的、富有挑戰(zhàn)性的研究領(lǐng)域。“無載體信息隱藏”并不是不需要載體,而是采用不修改載體或直接生成含密載體的方法傳遞秘密信息。
Chen 等[4]提出了第一個(gè)文本無載體信息隱藏方法——基于漢字?jǐn)?shù)學(xué)表達(dá)式的文本無載體隱藏方法。該方法將漢字分割為漢字部件,并以此作為隱秘標(biāo)簽,以一個(gè)隱秘標(biāo)簽和一個(gè)加密關(guān)鍵詞的組合為單位從文本庫中匹配合適的文本載體實(shí)現(xiàn)信息隱藏。Zhou 等[5]在此基礎(chǔ)上按順序?qū)γ恳淮伟础半[秘標(biāo)簽+關(guān)鍵詞”檢索得到的所有文本集合求交集,以提升文本隱藏容量。由于在建立索引時(shí),每篇文本只選取第一次隱秘標(biāo)簽的位置,因此交集不為空的情況很少,對隱藏容量的提升很有限。Chen等[6]使用漢字Unicode編碼的奇偶性設(shè)計(jì)定位標(biāo)簽,保證了每種標(biāo)簽在單篇文本中分布均勻,進(jìn)而提高關(guān)鍵詞的隱藏成功率。Long 等[7]在“標(biāo)簽+關(guān)鍵詞”組合檢索失敗的情況下,利用Word2Vec 匹配相似的關(guān)鍵詞,將原有關(guān)鍵詞替換為相似關(guān)鍵詞后,加上標(biāo)簽繼續(xù)進(jìn)行檢索,進(jìn)一步提高了關(guān)鍵詞的隱藏成功率。除上述方法外,還有相關(guān)研究者根據(jù)漢字結(jié)構(gòu)[8]、漢字筆順[9]、漢字拼音[10]、漢字聲調(diào)[11]特征對文本進(jìn)行編碼,以尋求新的突破。但上述方法都只針對標(biāo)簽形式進(jìn)行探索,在單篇載體文本中不同的標(biāo)簽只能出現(xiàn)一次,載體中依然存在大量冗余信息未被使用。
2017 年后,基于深度學(xué)習(xí)的生成式無載體信息隱藏方法引起了學(xué)者的關(guān)注。與上述依賴定位標(biāo)簽隱藏和提取秘密信息的方法相比,生成式方法直接以秘密信息生成含密載體,不需要構(gòu)建、維護(hù)大型的文本數(shù)據(jù)庫。生成式方法的核心是使用語言模型在文本生成的過程中對單詞進(jìn)行編碼,以實(shí)現(xiàn)信息隱藏。目前,廣泛應(yīng)用于生成式無載體信息隱藏的語言模型包括馬爾可夫鏈[12]、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN,recurrent neural network)[13]、長短期記憶網(wǎng)絡(luò)(LSTM,long short term memory)[14]、生成式對抗網(wǎng)絡(luò)(GAN,generative adversarial network)[15]、Transformer[16]等。
上述方法中,基于定位標(biāo)簽的搜索式隱藏方法雖然具有很好的隱蔽性,但隱藏容量較低,無法實(shí)現(xiàn)高效的秘密信息通信;基于深度學(xué)習(xí)語言模型的生成式方法可以實(shí)現(xiàn)高容量的秘密信息嵌入,但是當(dāng)秘密信息的長度較大時(shí),生成的文本大概率會(huì)出現(xiàn)上下文語義不連貫、語義錯(cuò)誤等情況,因此很難抵抗隱寫檢測。
本文主要的創(chuàng)新點(diǎn)介紹如下。
1) 提出一種標(biāo)簽傳遞機(jī)制,實(shí)現(xiàn)一個(gè)標(biāo)簽對應(yīng)多個(gè)關(guān)鍵詞,充分利用單篇文本載體中的冗余信息。在秘密通信的過程中使用生成式方法傳遞定位標(biāo)簽和關(guān)鍵詞位置參數(shù),再結(jié)合搜索式方法用參數(shù)從自然文本中提取秘密信息。與傳統(tǒng)搜索式方法不同的是,最終傳遞的載體文本除了多篇自然文本,還包括一篇生成文本。
2) 利用基于知網(wǎng)的詞匯相似度計(jì)算方法對分詞后的秘密關(guān)鍵詞進(jìn)行同義詞擴(kuò)展,選擇包含多個(gè)關(guān)鍵詞或其同義詞的自然文本作為載體文本,并定義參數(shù)格式,以實(shí)現(xiàn)秘密信息的正確提取。
實(shí)驗(yàn)結(jié)果表明,本文方法融合了搜索式和生成式無載體信息隱藏方法的優(yōu)點(diǎn),不僅隱藏容量和隱藏成功率優(yōu)于文獻(xiàn)[5-7]提出的方法,而且在一定程度上解決了秘密信息過長導(dǎo)致生成文本質(zhì)量下降的問題。
基于Unicode 編碼的定位標(biāo)簽由Chen 等[6]提出。Unicode 編碼實(shí)際上是一種字符集,所有的字符都可以用 16 位二進(jìn)制數(shù)來表示。漢字在Unicode 編碼中的范圍為0x4E00~0x9FA5。Chen等根據(jù)漢字Unicode 編碼的奇偶性,將文本轉(zhuǎn)換成0-1 比特流,如表1 所示,然后使用n位0-1比特流作為定位標(biāo)簽。這樣設(shè)計(jì)的好處在于所有的定位標(biāo)簽在文本中的分布很均勻,從而能夠保證信息隱藏的成功率。
表1 漢字轉(zhuǎn)0-1 比特流
在執(zhí)行秘密信息嵌入的操作時(shí),需要在文本大數(shù)據(jù)中搜索同時(shí)包含“定位標(biāo)簽”和“關(guān)鍵詞”的載體文本。為了快速從海量文本中檢索出滿足條件的所有文本,需要構(gòu)建倒排索引。在索引結(jié)構(gòu)中應(yīng)包含3 個(gè)參數(shù),分別是“定位標(biāo)簽”“關(guān)鍵詞”“文本路徑”。在信息隱藏的檢索過程中,首先考慮的應(yīng)該是文本庫中某篇文本是否包含當(dāng)前的定位標(biāo)簽,然后判斷該定位標(biāo)簽后的4個(gè)漢字分詞后的第一個(gè)詞是否是要隱藏的關(guān)鍵詞。因此,三級倒排索引的結(jié)構(gòu)如圖1 所示。
圖1 倒排索引結(jié)構(gòu)
知網(wǎng)[17]是董振東先生建設(shè)的一個(gè)大型中英文知識(shí)庫,目前依然在不斷發(fā)展中。其有2 個(gè)主要概念:義項(xiàng)(又稱概念)和義原。義項(xiàng)是對詞匯語義的一種描述,義原是用來描述義項(xiàng)的基本單位。知網(wǎng)中描述了義原的8 種關(guān)系,其中最重要的是上下位關(guān)系。根據(jù)義原的上下位關(guān)系,所有的義原構(gòu)成了一個(gè)義原層次體系。
2002 年,劉群等[17]在基于知網(wǎng)的詞匯語義相似度計(jì)算的研究中,改進(jìn)了將詞匯相似度轉(zhuǎn)化成義項(xiàng)相似度的方法,根據(jù)語義表達(dá)式的特點(diǎn),將計(jì)算義項(xiàng)相似度更改為計(jì)算語義表達(dá)式相似度。通過計(jì)算4 種語義描述式相似度并加權(quán)求和,得到了2 個(gè)詞匯間的語義相似度計(jì)算式為
其中,βi(1≤i≤4)是 4 個(gè)調(diào)節(jié)參數(shù),滿足β1+β2+β3+β4=1且β1≤β2≤β3≤β4。在文獻(xiàn)[17]的方法中,4 個(gè)調(diào)節(jié)參數(shù)分別為β1=0.5,β2=0.2,β3=0.17,β4=0.13。
Simj(1≤j≤4)表示語義描述式中特定描述之間的相似度,分別是第一獨(dú)立義原描述式、其他獨(dú)立義原描述式、關(guān)系義原描述式和符號義原描述式。義原描述式是根據(jù)其中包含的義原之間的相似度計(jì)算得來,義原的相似度采用基于路徑的相似度算法,計(jì)算式為
其中,p1、p2是義原;d是p1、p2在義原層次體系中的最短路徑長度;a是一個(gè)可調(diào)節(jié)參數(shù),在文獻(xiàn)[17]中,a=1.6。
基于文本自動(dòng)生成的隱寫方法不需要構(gòu)建大型的載體文本庫,該類方法直接以秘密信息生成含密文本,適合用來傳遞長度較短的秘密信息。文獻(xiàn)[13]提出了一種基于RNN 和Huffman 編碼的文本自動(dòng)生成隱寫方法,其流程如圖2 所示。
圖2 基于RNN 和Huffman 編碼的文本自動(dòng)生成隱寫方法流程
該方法在執(zhí)行秘密信息嵌入過程前,首先訓(xùn)練包含多個(gè)隱藏層的RNN 模型來提取文本庫中的高維文本特征,最終得到滿足訓(xùn)練樣本統(tǒng)計(jì)特征的語言模型。在嵌入的過程中,根據(jù)已經(jīng)生成的單詞和訓(xùn)練好的RNN 模型,計(jì)算下一時(shí)刻生成單詞的概率分布;對所有候選單詞按概率降序排序,選擇前n(n=2m,m∈N)個(gè)單詞構(gòu)建候選池,對侯選池構(gòu)建Huffman 樹,并按照左0 右1 進(jìn)行編碼,最后根據(jù)秘密信息序列,從樹的根節(jié)點(diǎn)開始搜索,找到葉節(jié)點(diǎn)并輸出其對應(yīng)的候選詞。將候選詞作為下一次的輸入,重復(fù)上述步驟,直到秘密信息全部被嵌入。
提取操作是嵌入的逆過程。接收方在收到文本后,使用網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)相同的語言模型計(jì)算每個(gè)單詞在對應(yīng)時(shí)刻的條件概率分布,構(gòu)造與發(fā)送方相同的候選池,同樣采用Huffman 編碼對候選池中的單詞進(jìn)行編碼。最終根據(jù)文本中的每個(gè)單詞還原出部分秘密序列,拼接得到完整的秘密信息。
為了兼顧文本的隱藏容量和生成文本的質(zhì)量,本文提出了一種基于同義詞擴(kuò)展和標(biāo)簽傳遞機(jī)制的無載體信息隱藏方法,其流程架構(gòu)如圖3所示。
圖3 基于同義詞擴(kuò)展和標(biāo)簽傳遞機(jī)制的無載體信息隱藏流程架構(gòu)
本文方法在嵌入時(shí)包含以下2 個(gè)步驟:1) 使用原始的“定位標(biāo)簽+關(guān)鍵詞”的方法將秘密信息隱藏到載體文本中,同時(shí)記錄下所用的參數(shù);2) 將所有參數(shù)轉(zhuǎn)換成固定格式的二進(jìn)制比特,使用基于RNN和Huffman 編碼的文本自動(dòng)生成方法生成含密載體。步驟1)中,為了在原有模型的基礎(chǔ)上提高隱藏容量,本文方法對秘密信息分詞后,首先使用哈爾濱工業(yè)大學(xué)提供的同義詞詞林將每個(gè)關(guān)鍵詞擴(kuò)充為同義詞集合,接著使用劉群等[17]提出的詞匯語義相似度方法計(jì)算集合中所有同義詞與關(guān)鍵詞的相似度,選擇相似度大于0.5 的同義詞構(gòu)成最終的同義詞擴(kuò)展集合,如圖4 所示。其目的是將更多的關(guān)鍵詞或其同義詞隱藏在同一篇載體文本中,以提高隱藏容量。
圖4 同義詞擴(kuò)展實(shí)例
本文方法的具體步驟如下所述。
為了能在嵌入過程中快速找到滿足“定位標(biāo)簽+關(guān)鍵詞”的文本,本文方法首先需要?jiǎng)?chuàng)建索引文件,創(chuàng)建的具體過程如下所述。
1) 遍歷文本庫中的每一個(gè)文本T,從文本的起始位置IP 開始,取出n個(gè)漢字根據(jù)其Unicode 的奇偶性轉(zhuǎn)換成二進(jìn)制序列作為標(biāo)簽L。
2) 選取定位標(biāo)簽后的4 個(gè)漢字,對其進(jìn)行分詞操作,選取分詞結(jié)果的第一個(gè)詞或字作為關(guān)鍵詞K。
3) 創(chuàng)建名為L的索引文件并存儲(chǔ)步驟2) 得到的關(guān)鍵詞K和文本T的文本路徑。
4) 與之前方法不同的是,本文方法允許載體文本中定位標(biāo)簽重復(fù)出現(xiàn),因此只需要按順序遍歷文本,起始位置IP=IP+1,重復(fù)上述步驟,直到IP+n等于文本長度。
創(chuàng)建索引的偽代碼如算法1 所示。
算法1創(chuàng)建索引偽代碼
輸入文本庫中的所有文本,定位標(biāo)簽長度n
輸出以各標(biāo)簽命名的哈希表HashIndex=[IndexL1,IndexL2,…,IndexLn]
為了使自動(dòng)生成的文本與載體庫中的自然文本盡可能相似,本文使用文獻(xiàn)[13]提出的多層RNN模型提取文本庫中的文本特征。訓(xùn)練集中的每一個(gè)句子S可表示為w1,w2,…,wn。由于需要將文本轉(zhuǎn)化為神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)的語言,首先需要把單詞轉(zhuǎn)化為高維詞向量,以此來表征詞語深層的語義信息。本文方法假定一個(gè)句子中包含l個(gè)詞語,詞向量維度為300,句子S可表示為
多個(gè)隱藏層的RNN 模型包含多個(gè)隱藏層,每一個(gè)隱藏層又包含多個(gè)LSTM 單元,因此,第j個(gè)隱藏層的每一個(gè)單元在t時(shí)刻的輸出,可以通過式(4)計(jì)算。
其中,N表示訓(xùn)練集中不重復(fù)的單詞數(shù)。本文模型中采用損失函數(shù)反向傳播的方式更新參數(shù),損失函數(shù)的計(jì)算式為
在經(jīng)過數(shù)輪迭代更新后,當(dāng)損失函數(shù)最小化時(shí),可以得到滿足訓(xùn)練樣本統(tǒng)計(jì)特征的語言模型。
本文方法主體上采用“定位標(biāo)簽+關(guān)鍵詞”的形式完成信息隱藏,標(biāo)簽在隱藏和提取操作中都扮演著不可或缺的角色。與之前研究不同的是,本文方法允許在一篇載體文本中定位標(biāo)簽多次出現(xiàn),因此在隱藏過程中還需要記錄定位標(biāo)簽的位置,即使用“標(biāo)簽+標(biāo)簽位置”來確定一個(gè)關(guān)鍵詞。同時(shí),為了實(shí)現(xiàn)接收端完整還原秘密信息的要求,每個(gè)關(guān)鍵詞在原始秘密信息中的位置信息也需要被記錄。上述一系列位置信息參數(shù)都將轉(zhuǎn)變?yōu)楣潭ǜ袷降亩M(jìn)制參數(shù),嵌入生成文本中傳遞給接收方。具體隱藏方法如下。
1) 對秘密信息M進(jìn)行切分,對于切分后長度大于4 的關(guān)鍵詞繼續(xù)切分,直到每個(gè)關(guān)鍵詞長度不超過4,得到關(guān)鍵詞集合K={k1,k2,…,kn}(n為最終切分完成后的關(guān)鍵詞個(gè)數(shù))。
2) 使用哈爾濱工業(yè)大學(xué)提供的同義詞詞林將每個(gè)關(guān)鍵詞擴(kuò)展為同義詞集合S,接著使用劉群等[17]提出的詞匯語義相似度方法篩選集合中與原關(guān)鍵詞相似度大于0.5 的詞匯,構(gòu)成最終的同義詞擴(kuò)展集合S′={s1,s2,… ,sn}(si={w1,w2,…} 為最終擴(kuò)展的同義詞集合)。
3) 對于S′中的每個(gè)關(guān)鍵詞集合si,遍歷si中每個(gè)關(guān)鍵詞wj,在所有索引文件中檢索關(guān)鍵詞wj,獲得所有滿足條件的文本集合tj={txt1,txt2,…},并記錄索引文件名中的標(biāo)簽lj={tag1,tag2,…},以及定位標(biāo)簽的位置信息構(gòu)成位置信息集合cj={d1,d2,…}。
4) 當(dāng)上述過程中出現(xiàn)同一個(gè)關(guān)鍵詞擴(kuò)展集合si中不同關(guān)鍵詞在同一篇的文本中存在的情況時(shí),只記錄第一次出現(xiàn)的關(guān)鍵詞相關(guān)信息。最終得到每個(gè)si對應(yīng)文本集的集合T={t1,t2,…,tn}、對應(yīng)標(biāo)簽集的集合L={l1,l2,… ,ln}、對應(yīng)關(guān)鍵詞位置集的集合C={c1,c2,…,cn}。若在遍歷完si后,文本集的集合ti為空,則將原秘密關(guān)鍵詞切分成單個(gè)漢字繼續(xù)隱藏(此時(shí)不對單個(gè)漢字做同義詞擴(kuò)展)。
5) 對于文本集的集合T={t1,t2,…,tn},構(gòu)建詞袋模型,選出頻率最高的文本txti,記錄其中包含的所有關(guān)鍵詞在秘密信息中的位置m′=、標(biāo)簽集合L′=和標(biāo)簽位置d′=,將txti作為載體文本發(fā)送給接收方,m′、L′、d′按固定格式轉(zhuǎn)化成二進(jìn)制參數(shù)序列e存儲(chǔ)。
6) 剔除T中在步驟5)已經(jīng)隱藏的關(guān)鍵詞擴(kuò)展集合,再次執(zhí)行步驟5),直到所有關(guān)鍵詞都隱藏完成。
7) 使用RNN 模型計(jì)算候選池中單詞的概率分布,使用Huffman 編碼按條件概率對候選詞進(jìn)行編碼,根據(jù)二進(jìn)制參數(shù)e選擇合適的候選詞作為下一輪輸入,直到參數(shù)e完全被嵌入,最終生成文本txt′。
為了更直觀地了解隱藏過程,本文設(shè)計(jì)了如圖5所示的詳細(xì)流程和如算法2 所示的偽代碼。
圖5 秘密信息隱藏過程
算法2秘密信息隱藏方法
輸入定位標(biāo)簽長度n,秘密信息M
輸出載體文本集合{txt1,txt2,…} 和生成的參數(shù)文本txt′
上述二進(jìn)制參數(shù)格式如圖6 所示。
圖6 二進(jìn)制參數(shù)格式
最大隱藏?cái)?shù):選擇隱藏最多的文本,記錄隱藏的關(guān)鍵詞個(gè)數(shù)maxkws,計(jì)算最大隱藏?cái)?shù)c的值滿足2c-1≤maxkws≤2c,用固定5 bit 記錄最大隱藏?cái)?shù)c的值。
ki表示第i篇文本中隱藏的關(guān)鍵詞個(gè)數(shù),每個(gè)關(guān)鍵詞需要“標(biāo)簽、標(biāo)簽位置、秘密信息位置”3 個(gè)參數(shù)才能解密,因此每一篇文本載體,需要c+ki(5+6+a)長度的參數(shù)來提取其中的關(guān)鍵詞,而a和c作為2 個(gè)變量,分別用固定的6 bit 和5 bit 保存。
關(guān)鍵詞個(gè)數(shù):第i篇文本中關(guān)鍵詞的個(gè)數(shù),用cbit表示。
標(biāo)簽:定位標(biāo)簽,用5 bit 表示。
標(biāo)簽位置:與標(biāo)簽搭配使用,表示在該文本中取某標(biāo)簽下的第幾個(gè)關(guān)鍵詞,用6 bit 表示。
秘密信息位置:對應(yīng)關(guān)鍵詞在原秘密信息中的位置,用abit 表示。
秘密信息提取過程是隱藏的逆過程,接收方通過維護(hù)和發(fā)送方同樣的RNN 語言模型,從收到的生成文本中解出二進(jìn)制序列,按照固定格式解析得到每篇文本中所有關(guān)鍵詞的標(biāo)簽集合L′、關(guān)鍵詞在秘密信息中的位置集合m′和標(biāo)簽位置d′,接著使用L′+d′從載體文本中解出關(guān)鍵詞,使用m′將關(guān)鍵詞還原成原始秘密信息,具體提取過程如下所述。
1) 接收方維護(hù)與發(fā)送方相同的RNN 模型。對于收到的最后一個(gè)文本txt′,使用RNN 模型計(jì)算每個(gè)單詞在每個(gè)時(shí)刻的概率分布,根據(jù)計(jì)算出來的條件概率使用Huffman 編碼方法對文本中的詞語進(jìn)行編碼,解出二進(jìn)制參數(shù)e。
2) 對于參數(shù)e,按圖5 所示的格式解析,得到各篇文本中包含的關(guān)鍵詞個(gè)數(shù),以及每個(gè)關(guān)鍵詞對應(yīng)的標(biāo)簽tag、標(biāo)簽位置d和秘密信息位置m。
3) 根據(jù)標(biāo)簽tag 和標(biāo)簽位置d在對應(yīng)的文本中提取關(guān)鍵詞,最后根據(jù)秘密信息位置m將關(guān)鍵詞進(jìn)行排序組句,得到最終完整秘密信息。
為了更直觀地了解提取過程,本文設(shè)計(jì)了如圖7所示的詳細(xì)流程。提取過程的偽代碼如算法3 所示。
圖7 秘密信息提取過程
算法3秘密信息提取方法
輸入生成的參數(shù)文本txt′,載體文本集合{txt1,txt2,…}
輸出還原后的秘密信息M′
1) 使用與發(fā)送方相同參數(shù)訓(xùn)練RNN 模型;
2) 使用RNN 模型計(jì)算txt′中每個(gè)單詞在每個(gè)時(shí)刻的概率分布,根據(jù)計(jì)算出來的條件概率使用Huffman 編碼方法對文本中的詞語進(jìn)行編碼,解出二進(jìn)制參數(shù)e;
3) 按照固定格式解析e,得到每篇文本txt 中對應(yīng)的標(biāo)簽集合L′、標(biāo)簽位置d′和關(guān)鍵詞在秘密信息中的位置集合m′;
4) 根據(jù)L′+d′從載體文本txt 中解出關(guān)鍵詞,根據(jù)m′將關(guān)鍵詞還原成秘密信息M′;
5) returnM′。
實(shí)驗(yàn)中構(gòu)建索引所用的文本數(shù)據(jù)庫大小為422 MB,包含216 160 篇文本。這些文本分別來自不同的領(lǐng)域,包括古典文學(xué)、簡書文章、新聞、小說,按照1:1:1:1 的比例從網(wǎng)絡(luò)中隨機(jī)抽取。為了保證實(shí)驗(yàn)結(jié)果的可靠公正,測試數(shù)據(jù)集從搜狗實(shí)驗(yàn)室中隨機(jī)選取。
本文方法在隱藏過程中使用同義詞替換原始關(guān)鍵詞以提升隱藏容量,因此最終還原出的秘密信息有可能與原始秘密信息存在一定的差異。為了評估該差異對原始秘密信息語義表達(dá)的影響,本文首先進(jìn)行嵌入信息與原始秘密信息的相似度計(jì)算。
本文實(shí)驗(yàn)使用逆文本頻率(idf)和余弦相似度(cosine)來計(jì)算一個(gè)秘密信息的相似度。句子的含義通常都由其中的核心詞決定,因此在計(jì)算句子相似度時(shí),核心詞之間的相似度將占據(jù)很大的比重。idf 是衡量一個(gè)詞語普遍重要性的參數(shù),這樣可以將每個(gè)詞的idf 值視為權(quán)重來計(jì)算句向量。計(jì)算單個(gè)詞匯的idf 值和句向量的計(jì)算式為
其中,D為語料庫中文檔的數(shù)量,Dw為出現(xiàn)詞匯w的文檔的數(shù)量。
其中,v(wi)為句子第i個(gè)詞wi的向量,idf(wi)為詞wi的idf 值。2 個(gè)句向量之間的相似度可以用余弦相似度來衡量。余弦相似度通過計(jì)算2 個(gè)向量夾角的余弦值來度量它們之間的相似性。假設(shè)v1和v2是 2 個(gè)n維向量,即v2=(y1,y2,…,yn),它們夾角的余弦值的計(jì)算式為
當(dāng)2 個(gè)句子相似度越高時(shí),它們的向量余弦夾角越小,其余弦值越接近1;當(dāng)余弦值為負(fù)數(shù)時(shí),表示2 個(gè)向量負(fù)相關(guān)。
本文實(shí)驗(yàn)從搜狗實(shí)驗(yàn)室的新聞?wù)Z料庫中隨機(jī)挑選了4 組文本,第一組包含50 篇1 KB 文本,第二組包含50 篇2 KB 文本,第三組包含100 篇1 KB文本,第四組包含100 篇2 KB 文本。以每一篇文本作為秘密信息,計(jì)算每一組中的嵌入信息與原秘密信息的平均相似度β,其計(jì)算式為
其中,cos(θ)i表示每組中第i篇測試文本嵌入信息與原秘密信息的相似度,n表示該組文本的數(shù)量。實(shí)驗(yàn)結(jié)果如圖8 所示。
圖8 嵌入信息與原始信息相似度對比
上述實(shí)驗(yàn)結(jié)果表明,經(jīng)過同義詞替換后的秘密信息與原始的秘密信息在語義上依然保持較高的相似度。因此,同義詞替換操作對于原始秘密信息語義的表達(dá)幾乎沒有影響。
本文提出的方法需要發(fā)送多個(gè)載體文本,因此對隱藏容量的定義為被隱藏的關(guān)鍵詞總數(shù)和最終傳遞的文本數(shù)量(包含一個(gè)生成文本)的比值。計(jì)算式為
其中,τ為秘密信息傳遞過程中被隱藏的關(guān)鍵詞總數(shù),ρ為最終傳遞的文本數(shù)量。實(shí)驗(yàn)使用固定標(biāo)簽長度為5,測試集依然使用上述4 組文本集合,圖9是每一組文本的隱藏容量結(jié)果。
圖9 不同測試集的隱藏容量
根據(jù)圖9 可以發(fā)現(xiàn),對于不同的秘密信息,隱藏容量的波動(dòng)幅度很大,主要原因是本文實(shí)驗(yàn)構(gòu)建的文本數(shù)據(jù)庫較小,雖然可以滿足正常的隱藏和提取功能需求,但由于文本庫中的文本與不同的秘密信息的內(nèi)容相關(guān)度不同,導(dǎo)致某一種類的秘密信息在嵌入過程中達(dá)到非常高的隱藏容量。同時(shí),秘密信息的長度也影響了隱藏容量??梢钥吹?,實(shí)驗(yàn)中2 KB 文本測試集中絕大部分文本的隱藏容量都大于1 KB 文本測試集中文本的隱藏容量,由此推測出當(dāng)秘密信息長度越長,單篇文本的隱藏容量也會(huì)越高。
即使本文方法在嵌入容量上有較大波動(dòng),但與其他傳統(tǒng)的搜索式算法相比,本文方法在嵌入容量上有了較大的提升。本文實(shí)驗(yàn)的平均隱藏容量計(jì)算式為
其中,N為每一組測試文本的數(shù)量,γi為第i個(gè)測試文本的隱藏容量。表2 為本文方法與其他方法在平均隱藏容量上的對比情況。
表2 各方法隱藏容量對比
根據(jù)表2 可以看到,在使用相同文本數(shù)據(jù)庫的前提下,由于加入了同義詞擴(kuò)展以及不受位置約束的載體文本合并操作,本文方法的平均隱藏容量遠(yuǎn)大于對比方法。
在信息隱藏的過程中,難免會(huì)存在不常用的詞匯、漢字導(dǎo)致該關(guān)鍵詞隱藏失敗,因此本文實(shí)驗(yàn)定義隱藏成功率為σ,當(dāng)一篇測試文本中所有漢字都被成功隱藏才算隱藏成功,成功率計(jì)算式為
其中,x為一組文本中成功隱藏的文本數(shù)量,χ為一組文本中所有測試文本的數(shù)量(本文中χ=50,100)。表3 為本文方法與其他方法在隱藏成功率上的對比情況。
表3 各方法隱藏成功率對比
與其他方法相比,本文方法對文本庫的要求較低,在同樣使用小型文本庫的情況下,本文方法依然可以較好地實(shí)現(xiàn)秘密信息的嵌入和提取。但其他方法由于標(biāo)簽形式的限制,不能充分利用載體文本中的冗余信息,必須構(gòu)建并維護(hù)大型文本數(shù)據(jù)庫才能保證較高的隱藏成功率,因此通信所需的開銷也較昂貴。
基于文本的隱寫分析通常是使用基于統(tǒng)計(jì)的算法檢測文本的修改痕跡,但本文方法并未對文本本身進(jìn)行修改,使用自然文本實(shí)現(xiàn)秘密信息的傳遞,因此在通信過程中擁有較高的隱蔽性,主要可以體現(xiàn)在如下2 個(gè)方面。
1) 抗檢測。本文方法選取5 位0-1 比特流作為定位標(biāo)簽,在信息隱藏過程中使用檢索的方法挑選自然文本發(fā)送給接收方,最終再使用相關(guān)參數(shù)生成與文本庫相似的生成文本發(fā)送給接收方,整個(gè)過程中沒有對載體文本執(zhí)行任何修改操作,與普通文本并沒有差異,因此機(jī)器或人眼很難察覺秘密信息的存在。
2) 抗非法提取。要從接收到的多篇文本中準(zhǔn)確提取秘密信息,接收方首先要維護(hù)與發(fā)送方相同的RNN 語言模型來解碼生成文本,同時(shí)還需要了解參數(shù)格式才能解析關(guān)鍵詞的各項(xiàng)參數(shù),最終完成提取操作。
與之前基于搜索的無載體隱藏方法相比,本文提出的無載體隱藏方法具有較大的優(yōu)勢。借助文本自動(dòng)生成的方法,將標(biāo)簽信息嵌入新的生成文本中,在保證隱蔽性的同時(shí)也增加了可傳遞參數(shù)的數(shù)量,進(jìn)而有效地提升了自然文本載體的隱藏容量和信息傳遞的安全性。本文方法提出了搜索式無載體信息隱藏和生成式無載體信息隱藏方法相結(jié)合的思想,雖然隱藏容量有了很大的提升,但文本庫的差異會(huì)導(dǎo)致文本嵌入率有較大的波動(dòng)。另一方面,本文方法選取的標(biāo)簽形式在進(jìn)行復(fù)用的情況下抵抗針對文本的增加、刪除、修改攻擊能力較弱。因此,在未來的研究中主要集中在改進(jìn)嵌入算法,優(yōu)化同義詞匹配算法,探索合適的標(biāo)簽形式,從而降低對文本庫之間的差異對隱藏結(jié)果的影響,在保證穩(wěn)健性的前提下提高隱藏容量的穩(wěn)定性。