吳國華,龔禮春,袁理鋒,姚曄
(杭州電子科技大學網絡空間安全學院,浙江 杭州 310018)
信息隱藏技術是信息安全領域的一個熱門研究方向。國際上信息隱藏研究起步較早,而國內的信息隱藏研究是在1999 年全國信息隱藏暨多媒體信息安全學術大會(CIHW,China Information Hiding Workshop)之后興起的[1]。經過多年的發展,在國內外眾多學者的努力下,以視頻和圖像為載體的信息隱藏研究取得了不少的成果[2]。目前,以圖像、視頻和音頻為載體的信息隱藏研究成果在數量上大大超過以文本為載體的研究成果[3]。文本的數據量較小,存在的冗余信息也較少,較難將秘密信息嵌入其中[4]。在文本信息隱藏研究的初級階段,大多數方法是將文本視為文本圖像,通過圖像信息隱藏方法嵌入待隱藏信息[5]。然而,將文本數據當成圖像來處理,沒有利用文本數據具有的屬性[6],不能取得較好的信息隱藏效果。
文本是信息交流與信息傳遞的重要載體。由于互聯網的開放性及信息傳播的不確定性,文本被惡意偽造和非法篡改的事件時常發生[7-8]。通過文本信息隱藏技術保障文本內容安全是信息安全領域亟待解決的重要任務[9]。本文總結已有的中文文本信息隱藏的研究成果,根據算法的線索,將已有的算法歸為3 類,分別對其進行分析和總結,并給出展望,以便該領域的研究者了解其研究進展。
文本文檔包含文本內容和文本格式兩部分。文本內容是文檔中需要傳遞的明文信息。文本格式是對文本內容進行組織的方式。文本內容經過字符編碼,然后保存成wrod、pdf、xml 等文檔格式。
針對文本信息隱藏,研究人員通過借鑒視頻圖像的隱寫算法,或基于文本的格式與內容,提出了多種適用于文本信息隱藏的算法[10]。本文在廣泛調研現有算法的基礎上,根據隱藏信息算法的線索,將文本信息隱藏算法劃分為3 類,如圖1 所示。

圖1 文本信息隱藏分類
通過掃描儀、數碼相機、截屏等方式,紙質文件或電子文檔被存儲為圖像格式,稱為文本圖像。圖像文件在內容與格式上有較多的冗余空間,便于將秘密信息嵌入其中。文本圖像與人物、景物圖像相比,其圖像紋理分布更均勻、區域邊緣特征更明顯[11]。因此,可以借助文本圖像的特征隱藏信息。圖像隱寫技術為文本圖像信息隱藏提供了可靠的技術支持。基于文本圖像的信息隱藏算法,可以應用于普通文本的信息隱藏場景中,或者紙質文本的抗打印掃描場景中,具有較強的實用性。
2.1.1 普通文本應用
Ding 等[12]通過調整單詞之間的細微間距,使文本圖像中行與行之間的平均單詞間距表現出正弦曲線的特征,以此把水印信息編碼在正弦曲線內。該算法的穩健性較高,在非盲檢測與盲檢測中效果較佳。但是,該算法僅在英文文本中具有較好的效果,且嵌入容量較小。
Kim 等[13]提出適用于中文、英文、韓文這3 種語言的文本圖像信息隱藏算法。算法將文本圖像轉換為灰度圖像,然后用Sobel 算子提取文本圖像邊緣,統計圖像中每行文本在16 個方向上的直方圖。實驗表明,3 種語言各自構成的文本圖像在16 個方向上擁有不同的統計特征,并且每種語言構成的文本圖像每行的統計特征基本相同,如圖2 所示。文中將此現象命名為“sub-image consistency”。根據行直方圖特征一致性規律,嵌入時將前三行直方圖特征作為參考,改變后面行直方柱的長短來嵌入0 bit和1 bit。該算法穩健性不強,如果參考行文本圖像特征被破壞,隱藏信息將全部無法提取。同時,算法嵌入容量低,每行僅能嵌入1 bit。

圖2 行子圖特征一致性
趙星陽等[14]通過調整中文、英文二值文本圖像中單個字符除水平、豎直筆畫外的階梯邊沿,改變每行文本圖像中上下兩半部分黑色像素之和的比值,利用比值之間的關系嵌入水印信息。水印檢測時,只需要根據算法識別出比值關系就能成功恢復水印信息。與文獻[13]比較,該算法在水印提取時不依賴參考行,增強了水印的穩健性,且能較好地抵抗文本圖像縮放攻擊。然而,該算法嵌入容量受限于文本行數量,若文本圖像受到噪聲污染,水印信息將無法準確地提取。
Behrooz 等[15]提出了一種針對兩端對齊文本的隱寫算法。該算法使用光學字符識別(OCR,optical character recognition)技術獲取文本圖像中的主行(HL,host line)(包含至少3 個add space 與9 個normal space),然后通過事先設定的嵌入規則,在HL 先嵌入密鑰信息,再嵌入秘密信息中的字符頻數,最后以將normal space 替換為add space 的方式嵌入經過Huffman 編碼的碼字信息。該算法在每個HL 嵌入4 bit 信息,單行嵌入容量比文獻[14]高,但是HL 具有不確定性,使算法只有對長文本才具有較好的嵌入效果。
2.1.2 打印掃描應用
與普通文本水印嵌入算法比較,抗打印掃描的文本信息隱藏算法不僅需要較高的嵌入容量,而且需要具備較高的穩健性,才能抵抗針對打印掃描的紙質文本的攻擊。
亓文法等[16]針對打印掃描文本水印無法在保持理想的視覺效果下實現盲提取這一缺陷,提出一種隱蔽性較高的文本圖像水印算法。該算法切割文本圖像中字符,統計每個字符圖像黑色點的個數與文本圖像中所有字符圖像黑色點總數,發現兩者的比值在打印前后基本保持不變。基于此發現,該算法在嵌入時翻轉字符圖像的黑色點數,翻轉部分黑色點來補償嵌入部分的修改,從而保證整篇文檔字符的平均黑色點數不變,達到嵌入水印的目的。該算法具有較高的不可見性,但嵌入容量低,且使用的特征在打印掃描后不穩定,使算法針對二次復印件的檢測不夠理想。
Tan 等[17]從單個字符圖像的筆畫著手,提出一種大容量的抗打印掃描的文本水印算法。算法提取出字符圖像筆畫及筆畫之間的交叉點,并篩選出適合旋轉的筆畫(如撇、捺),通過筆畫的相對旋轉嵌入水印信息。為了使筆畫繞交叉點旋轉后盡可能不被肉眼發現,筆畫可旋轉的角度被限定在某個區間內。水印提取時通過檢測單個字符筆畫旋轉方向判斷嵌入的比特信息。該算法以單個字符筆畫為基本嵌入單位,相較于文獻[16]水印提取時不受其他部分或整體因素的影響,算法嵌入容量較大,但是實現起來相對困難。
雷敏等[18]經過大量的實驗研究發現,文本中相鄰字符高度并不相同,并且字符之間高度的相對關系經過打印掃描處理后基本保持不變。因此,在秘密信息嵌入的過程中,通過定義的復雜度函數調整字符的高度,使相鄰字符圖像的高度關系在打印掃描前后不發生變化,從而根據2 個相鄰字符圖像的高度相對關系來嵌入水印信息。該算法在2 個字符圖像中嵌入1 bit 信息,嵌入容量較文獻[17]低,但算法利用的字符特征較為穩定,能夠較好地抵抗打印掃描攻擊,適用于對穩健性要求較高的應用場合。
將文本轉換為文本圖像嵌入信息,是文本信息隱藏算法的常見處理方式。無論算法使用文本圖像行表現出的整體特征,或是字符圖像的局部特征,這些特征均是人眼無法直接發現的,必須經過大量的實驗與統計分析得出。與此同時,當載體受到如文本污損、圖像噪聲污染、OCR 攻擊等外部因素干擾時,算法的穩健性和可行性都會受到一定程度的影響。
文本格式是組織文本內容的方式。文本內容可以被不同的文本格式組織、封裝、存儲,并通過終端屏幕呈現在人們眼前。基于文本格式的信息隱藏算法利用文本的排版方式、字符編碼特征、文本封裝格式等屬性隱藏信息。
2.2.1 文本間距
為了方便人們閱讀文本,不論是何種語言形成的文本,都是由字組成行、經行排成段、段落構成文章。這種按照順序組織文本的方式能作為文本中隱藏信息的自然屬性。因此,通過修改字、行和段在文本中的排版間距是一種常用的信息嵌入方法。
Low 等[19]提出了字移編碼和行移編碼算法。字移編碼是指以某字符的相鄰字符為參照,在人眼不可感知的前提下,將該字符向左或向右移動一定的距離,達到嵌入信息的目的。行移編碼選取待嵌入信息行的相鄰兩行作為參考行。在不移動參考行前提下,用待嵌入信息行上移或下移來表示嵌入0 或1。行移編碼算法嵌入容量小,字移編碼算法雖能提高嵌入容量,但其穩健性較低。2 種算法提取水印時均是采用非盲方式,需要原始文本作為隱藏信息提取的參照。
文獻[20]改進了上述算法,提出將行移編碼與字移編碼方法相互結合的信息嵌入算法。算法在文本行水平方向使用字移編碼,垂直方向使用行移編碼。該算法結合2 種方法的優勢,既保證水印的穩健性,又能提高嵌入容量,并且實現了水印的盲提取,簡化了秘密通信的成本,具有較好的適用性。
調整文本間距的算法在對抗一定強度的伸縮攻擊上有較好的效果。但是需要嚴格遵守人眼視覺特點對文本字符間距、行間距和段間距進行調整。如果間距調整程度過大,會導致可視性嚴重降低,秘密信息的嵌入位置也易被人眼識別出來。
2.2.2 字符編碼
字符通過編碼形成二進制數據并存儲于計算機中。已有算法通過字符編碼的奇偶性嵌入秘密信息,或者將字符編碼表中的不可見字符插入文本中隱藏信息,甚至通過改變字符顏色的編碼值來嵌入信息。
Unicode 編碼集集成了大多數語言的字符編碼,是基于字符編碼隱藏算法的首選編碼方式。文獻[21]提出用Unicode 編碼的奇偶性隱藏秘密信息。該算法將文本字符用十進制的Unicode 編碼表示,把隱藏信息視為二進制比特串,然后將每比特隱藏信息與單個字符Unicode 編碼的奇偶性對比:若兩者均為奇數則嵌入1;兩者均為偶數則嵌入0;兩者奇偶性不一致,則修改字符藍色分量或字符下劃線顏色中一種屬性的最低位值,使算法能夠對嵌入位置進行標記。該算法的嵌入位置默認從文本第一個字符開始,若提取隱藏信息從其他字符位置開始,將無法提取完整的秘密信息。
陸綠等[22]為了解決上述非順序提取水印信息導致秘密信息不能復原的問題,提出一種擴展水印信息,并在組間插入分隔符作為區分標志的嵌入算法。在水印提取時,即使某部分載體被破壞,在分隔符的作用下,依然可以從未被破壞的載體中獲得完整的水印信息,具有較好的穩健性。
文獻[21-22]中提出的算法均是利用單個字符編碼隱藏信息,沒有利用詞語之間的相關性嵌入信息。文獻[23]將字符編碼擴展到詞編碼,提出基于詞平臺漢字編碼的文本信息隱藏算法。文本中的詞根據其詞性被劃分為不同的詞典詞,每個詞典詞使用4 個字節編碼成詞典碼,然后通過分詞與詞擴展方式嵌入信息。該算法不對字符的屬性進行修改,因此具有較好的隱蔽性。但是,用4 個字節編碼一個詞,會造成較多的冗余。
字符屬性還包括字符顏色。基于人眼錐狀細胞對藍色不敏感這一特點,劉豪等[24]通過修改字符的藍色分量編碼值嵌入水印信息,該算法能在一個字符中嵌入1 bit 信息。Tang 等[25]改進上述算法,通過修改每個字符顏色屬性RGB 的3 個通道最低位值的嵌入信息,使改進后的算法嵌入容量是文獻[24]的3 倍。修改字符顏色屬性編碼的算法不適用于對隱蔽性要求較高的應用場合,過度修改字符顏色編碼值會降低隱蔽通信的安全性。
通過研究文本字符編碼表,領域內的學者發現雖然字符編碼表中有不少字符被賦予編碼,但是將它們插入文本中卻不能被人眼感知。此類型的字符被稱為“不可見字符”,ASCII 編碼表中部分不可見字符舉例如表1 所示。

表1 ASCII 碼中部分不可見字符
利用上述不可見字符,Liu 等[26]提出一種基于Hash 函數與不可見ASCII 字符替換的信息隱藏算法。該算法使用“SOH”這一不可見字符,替換文本分段中的空格。對替換后的分段文本進行Hash運算,將Hash 值與隱藏信息比較,根據設定規則嵌入信息。文獻[27]根據約束函數確定嵌入位置。若秘密信息為0,載體對應位置加入空格,否則,添加“SOH”字符。該算法的嵌入能力取決于約束函數在文本中獲取嵌入位置的數量。
相比于文獻[26-27],文獻[28]擴展了不可見字符編碼的方式,提出基于Unicode 編碼的不可見字符水印嵌入算法。該算法將Unicode 不可見字符編碼兩兩組合,形成一組映射規則插入文本每個句子的句號前。為了提高安全性,算法中使用了16 位循環冗余校驗。在水印未嵌入載體前對每個句子做散列計算,并將計算的結果根據映射規則轉為不可見水印編碼,附加到嵌入的水印編碼句子的尾部,使算法的穩健性得到進一步提升。
利用人眼視覺的不敏感性,文獻[29]提出一種同形字符替換的文本水印算法。為區分Unicode 編碼不同而人眼看似相同的字符,作者整理出一份同形字符表。算法對同形字進行編碼,從而通過文本中同形字的編碼替換來嵌入信息。提取水印時檢測相應字符的編碼,與編碼映射表作對比,進而獲得水印信息。該算法的隱蔽性與嵌入容量都較好,但是水印的穩健性差,嵌入位置一旦被其他字符替換,水印不能被完整提取。
目前,出于對安全性與隱蔽性的考慮,在實際應用中使用不可見字符和視覺不可區分算法嵌入信息的應用較多。然而,這些應用中大多數被用于結構化文本中。非結構化的文本中基本不存在冗余空間,無法實現信息嵌入。基于字符編碼屬性的信息隱藏算法,絕大多數以字符為基本嵌入單位,因而該類算法的嵌入容量普遍要高于基于文本間距的算法。
2.2.3 文件格式
文本文件的格式多樣(常見文檔格式包括word、pdf、xml 等),利用文本格式隱藏信息的算法對載體文本的文件格式具有很強的針對性。已有算法使用文件格式內部未使用空間嵌入信息,或者利用文件格式自身的特殊性隱藏信息。
文獻[30]分析word 文檔的數據結構,提出一種使用word 文檔空間中控制結構數據、嵌入式對象等屬性隱藏信息的算法。該算法利用word 文檔格式中未使用的空間嵌入數據,從而在抵抗文本復制攻擊方面具有較高的穩健性。然而不同版本的word文檔內部數據結構不相同,因此提取隱藏信息時使用的word 文檔格式必須和嵌入信息時一致。
文獻[31]提出一種使用pdf 文檔結構嵌入水印的算法。該算法根據pdf 文檔行末標識符不顯示的特殊性,獲取交叉引用表中每行的行末標識符,通過水印信息控制行末標識符的修改方式,從而間接嵌入水印信息。該算法能抵抗文本復制攻擊,且文檔中的標識符被替換后不改變文檔的大小,因而能較好抵抗統計攻擊。
文獻[32]提出一種在xml 文檔中嵌入水印的算法。該算法根據xml 文檔結構中屬于同一層次標簽的先后排列順序不影響文檔內容展示的特點,將不同層次與同一層次的標簽進行組合與排列,構建秘密信息與標簽組合排列之間的對應關系,通過映射函數實現秘密信息的嵌入與提取,使算法具有較好的隱蔽性和抵抗復制攻擊的能力。
由此可見,基于文本格式的算法使用word、pdf、xml 文檔格式的內部結構或特殊屬性來隱藏信息,能較好地抵抗文檔的復制攻擊,并且具有較高的隱蔽性。然而,該類算法僅針對某一指定文件格式或者特定版本的文檔來設計,算法不具有通用性。此外,該類算法嵌入信息之后,可能引起文件大小的改變,易引起攻擊者懷疑。在對文件大小敏感的基于文本格式的信息隱藏應用中,可以研究文件格式自身的特點來使得隱藏信息后的文件尺寸保持不變。
基于文本內容的信息隱藏算法重點分析文本內容,挖掘文本內容特征,構造合適的算法將秘密信息嵌入其中。該類方法近些年來備受學者關注,這是因為自然語言處理技術的成熟是文本內容研究的重要基礎,基于文本內容的信息隱藏方法在不改變文本語義(或不修改載體內容)的前提下,通過等價信息替換(或從文本中提取特征)能夠較好地隱藏秘密信息。根據所選文本內容的差異,基于文本內容的文本信息隱藏算法分為基于語法的方法、基于語義的方法、基于漢語特征的方法。其中,基于語法的方法和基于語義的方法以自然語言處理技術為支撐,而基于漢語特征的方法利用漢語言特點嵌入信息。為了提高基于文本內容算法的隱蔽性,在嵌入過程中可以使用零水印與無載體的嵌入方法。
2.3.1 基于語法方法
基于語法的信息隱藏技術以自然語言語法結構為依據,利用句中詞語的依賴關系,或者句式變換(如主動變被動、移動附加語)等語法規則,構造算法嵌入秘密信息。
文獻[33]以漢語助詞“的”為典型代表,提出一種基于虛詞變換的隱寫算法。算法從文本中找出含有“的”字的句子,在不影響文本原意的前提下,以增加或刪除句中“的”字方式嵌入1 bit 信息。該算法通過定義模板作為增刪“的”字的依據,具有較好的靈活性。但是,其嵌入容量不高,修改后的文本易被察覺。
文獻[34]提出了一種基于句子長度的文本信息隱藏算法。該算法以不改變句子原意為前提,對句子進行句式變換,通過改變句子的長度嵌入水印信息。為了能夠抵抗增加、刪除、句子變換對文本的攻擊,算法對嵌入位置進行選取。在提取水印時引入了投票機制,使算法的穩健性被提高。
文獻[35]給文本中的每個句子分配序號,用整篇文本中詞語出現的頻率,定量的計算每個句子的熵。將句子熵大于設定閾值的句子當成是文本的重要句子。把篩選出句子的序號作為零水印信息,發送到第三方認證機構,實現文本內容的版權保護。
2.3.2 基于語義方法
基于語法的文本信息隱藏方法一般是在句子級別嵌入秘密信息,因此,隱藏信息的容量相對較低。基于語義信息隱藏方法細化了文本內容研究粒度,從字詞層面嵌入以提高文本的隱藏容量[36]。語言學中廣泛存在的同義詞被基于同義詞替換的隱寫方法作為嵌入依據。該類算法需要構造同義詞庫,對同義詞集內的同義詞進行編碼,在不改變句子原意下,通過同義詞的相互替換隱藏信息。
Chiang 等[37]將基于同義詞替換的方法用于中文文本。水印在嵌入的過程中用二次剩余理論先選取適合替換的句子,再選擇句中需要被替換的同義詞。該算法運行復雜,且一個同義詞只能嵌入1 bit信息。經過該算法替換生成的句子不可避免地產生同義詞替換不當導致句子出現歧義的問題。
文獻[38]提出一種改進的中文同義詞替換信息隱藏算法。該算法依據《同義詞詞林》等對同義詞分類。若同義詞屬于完全可替換類,則直接替換;若屬于不完全可替換的類,則需要根據詞性來判斷是否替換;若屬于歧義詞類,則根據上下文搭配詞計算同義詞被替換的概率。經過劃分后,算法篩選出適合替換的同義詞,降低替換后的語義失真程度。
為了進一步量化同義詞替換評價標準,姜傳賢等[39]定義了同義詞替換評價模型,提出基于文本重要內容的穩健水印算法。算法對文本分詞處理后,統計主題詞(文本中權重較高的一些詞),提取包含主題詞的句子以及句子中的同義詞集。在完全知道句中同義詞上下文搭配詞的條件下,通過依存句法分析,選取同義詞集中與上下文搭配最合適的同義詞替換原來的詞。
Chang 等[40]針對同義詞替換后的隱蔽性問題及同義詞集交叉現象,對同義詞替換算法提出兩點改進。其中,通過機器學習算法,利用大型語料庫訓練好的n-gram 模型剔除模棱兩可的同義詞,之后對同義詞集進行評估,從而提高同義詞替換后的隱蔽性。再者,利用圖論的思想,將同義詞作為圖的頂點,詞與詞之間用邊連接。使用頂點著色算法,使出現在不同同義詞集內的某個詞的編碼一致,從而解決了同義詞編碼不一致在解碼時導致的歧義問題。
文獻[41-42]從信息論角度出發,利用信息編碼方法提高同義詞嵌入效率。文獻[41]設計了一種基于矩陣編碼的同義詞替換方法。文獻[42]在將秘密信息嵌入前,先用串表壓縮(LZW,lempel ziv welch)算法對秘密信息壓縮。秘密信息經過壓縮后其長度減小。相對不壓縮而言,同樣載體文本能夠隱藏更多的信息。
目前,同義詞替換隱寫算法是詞語級別嵌入信息較成熟的方法。然而,中文的語義環境較為復雜,算法需要耗費大量的時間通過語義分析來消除同義詞替換的歧義。
文獻[43]使用詞階(文本集/文本中詞語按詞頻排序的序號)圖實現文本無載體信息隱藏。算法需要構建一個包含大量文本的數據集,信息隱藏者與接收者選擇一個文本子集計算整個文本子集、子集中單個文本、子集中每個詞語的詞階圖。待傳遞的秘密信息以詞為基本單位,在轉換協議和密鑰共同作用下,秘密信息被轉為文本子集中的常見詞,通過設計好的標簽定位協議為轉換后的每個詞分配一個詞階。依據詞語的詞階圖與文本的映射關系,用文本表示秘密信息中的詞,將文本載體按照秘密信息中詞語出現的先后順序發送給接收方。
文本無載體以秘密信息為驅動,且不對載體修改,因而在信息隱藏容量與隱蔽性方面,其比一般的嵌入式文本信息隱藏方法占據更大的優勢。但當隱藏的信息量較少時,使用無載體的方法可能會帶來較大的通信開銷。少量秘密信息需要多篇文本來傳遞,使通信效率大幅度降低。
2.3.3 基于漢語特征方法
漢語文字具有中國特色,具有幾千年的演變歷史。面向漢語的文本信息隱藏算法利用漢字偏旁、漢語拼音、漢字筆畫、漢字字體等特點在中文文本內嵌入秘密信息。
Sun 等[44]提出基于漢字偏旁的水印嵌入算法。該算法依據《信息處理用GB13000.1 字符集漢字部件規范》定義了構成漢字的6 種空間結構,如圖3所示。其中,A 和B 表示漢字的基本偏旁,lr 表示左右結構,ud 表示上下結構,we 表示包圍結構,lu 表示左上結構,ld 表示左下結構,ru 表示右上結構,將漢字基本偏旁用唯一數字標識。每個漢字均可以由一個或多個基本偏旁按照6 種空間結構組合而成。算法篩選出具有左右結構的漢字,作為信息嵌入的載體。將水印信息轉為二進制流,在滿足能夠完全嵌入水印信息的前提下,依次從文本中讀取一個漢字:若獲取的漢字非左右結構,那么將其完整輸出;若獲取的漢字具有左右結構且待嵌入為0 bit,同樣也完整輸出該漢字;如果當前漢字是左右結構且待嵌入為1 bit,那么將該漢字拆成最基本偏旁輸出;重復上述過程直至水印嵌完為止。該算法僅用了6 種空間結構中的一種,文本整體嵌入能力受限于文本中左右結構漢字數量。

圖3 漢字6 種空間結構
Wang 等[45]基于上述算法,在原來僅使用左右結構漢字嵌入信息的基礎上又增加了上下結構的漢字,相比于文獻[44]同樣的一篇文本,水印的嵌入容量得到提高。不僅如此,該算法還引入了可逆的嵌入思想,即在水印信息被提取后,載體文本依舊可以保持原樣,當水印信息被提取出后,載體能夠被重復利用。
Fei 等[46]根據漢字一字多音的現象,提出一種基于多音字的中文文本水印算法。算法統計相鄰2個多音字間漢字的個數與漢語拼音字母數記為十進制,然后將每位十進制轉為8 位二進制,同時還統計前一個多音字讀音的個數與其拼音字母個數,同樣轉成8 位二進制數。將兩組16 bit 數相與生成一組新的16 bit 數,將該數作為水印信息保存。雖然該算法在2 個多音字之間可以嵌入16 bit 數據,嵌入容量大,但是其在抵抗文本多音字插入、刪除、替換攻擊上表現較弱。
文獻[47]提出一種使用漢語拼音聲韻母特征構造零水印的算法。該算法根據聲韻母編號,統計文本中所有漢字的音數值(聲母、韻母編號值之和)作為零水印,并按照設定的閾值選取出部分音數值作為用戶提取水印時的密鑰,將零水印與密鑰一起保存。由于算法提取的特征不依賴于某一漢字或者拼音,因此算法的穩健性較高。
文獻[48]提出一種基于漢字筆畫的文本信息隱藏算法。對中文漢字的筆畫數統計發現所有漢字中8 筆畫漢字最多。算法以8 筆畫漢字為嵌入點,統計其左右相鄰漢字的筆畫數。將2 位十進制的筆畫數轉化為16 位二進制,從而將一個用Unicode 編碼的漢字嵌入其中。該算法的嵌入容量取決于文本中8 筆畫漢字的數量,且很難抵抗對文本中8 筆畫漢字及其左右漢字的攻擊。
文獻[49]提出一種基于筆畫的中文文本零水印算法。該算法統計文本中每個漢字出現的頻率,篩選出頻度較高的漢字。將這些漢字的筆畫數作為文本的特征與水印信息進行位運算。運算結果作為用戶的注冊碼,發送到第三方認證中心保存。
孫新梅等[50]針對漢字中的繁體字與簡體字混用現象,提出一種基于字體的中文信息隱藏算法。算法執行前需要構建一個簡/繁體字對應的字典,執行中可選用3 種替換方法中的一種實現信息隱藏。1)簡單替換算法:若文本中的字在字典中,則根據待隱藏信息的二進制數來替換,待隱藏信息為0 則保持簡體字不變,為1 則用相應的繁體字替換簡體字;若文本中的字不在字典中,則保持不變。2)高效替換算法:將待隱藏信息分為長度相同的組,將每組二進制數轉為對應的十進制數D,替換D個字后的簡體字。該方法一個字符可以嵌入多個比特,且隱蔽性較好。3)基于模板替換算法:其能夠在多個字符中嵌入多個比特信息。文獻[43]算法可選用3種替換方法中的一種,能夠較好地平衡載體嵌入能力與隱蔽性之間的矛盾。
基于漢語特征的信息隱藏算法,無論是利用漢字的偏旁部首、漢語拼音和字體筆畫嵌入水印信息,還是使用這些特征構造零水印實現信息內容安全,都能充分獲得較為穩定的漢語特征。因此,該類算法能夠較好地適用于中文文本信息隱藏,具有一定的研究價值和應用前景。
本文在詳細介紹文本信息隱藏算法的基礎之上,選取了其中部分論文,分類整理成表2 所示的結果。從表2 可以看出,文本信息隱藏算法隱寫過程中依賴的文本屬性及算法的嵌入能力具有顯著差異,具體分析如下。
1)基于文本圖像的算法
該類算法多以文本圖像行處理后表現的整體特性出發嵌入信息[12-15],或者利用單個字符圖像的統計特征隱藏信息[16-18]。從算法的應用場合上看,抗打印掃描攻擊的嵌入算法的穩健性通常要高于普通文本嵌入算法。該類算法大多對圖像噪聲敏感,一旦受到噪聲攻擊,信息提取的精度將受到嚴重的挑戰。
2)基于文本格式的算法
該類算法目前研究較為成熟,相應的成果較多,在信息隱藏的過程中可依賴的載體屬性較多,不同算法的嵌入能力也有較大的差異,且多數算法只針對某一屬性提出。例如,基于字符編碼的算法以每字符嵌入1 bit 居多[21-22,24,26]。如果將字編碼擴展到詞編碼[23],單顏色編碼擴展到多顏色編碼[25],或者使用規則映射方法[29]可以提高嵌入容量。但是,該類算法只對某種字符編碼方式生效。基于文本格式的算法[30-32]僅適用于某一特定格式的文本,文本格式的改變會導致算法失效。此外,修改文本間距的算法與修改字符編碼的算法均存在隱蔽性與嵌入容量之間的矛盾。然而,基于文本格式的算法在文件格式內尋找冗余空間,能夠較好地避開這一問題。

表2 文本信息隱藏算法對比
3)基于文本內容的算法
該類算法以修改文本內容和提取文本特征為主,研究成果也相對較多。對于修改文本內容的語法方法[33-35]與語義方法[37-43]而言,雖然在嵌入級別上有差別,但是絕大多數算法在嵌入信息前均需要對文本進行分詞,使用自然語言處理技術分析句子,因此會產生較為復雜的計算過程。然而,基于漢語特征的方法[44-50]以字符為處理對象,可以省去較為煩瑣的自然語言分析,并且獲取的文本特征能夠用于構造零水印[46-49],提高隱蔽性。無論是基于語義、語法,還是漢語特征的算法,嵌入信息都容易受到對文本內容的增加、刪除、替換攻擊。這些攻擊一旦發生必定嚴重影響隱藏信息提取的精確性。因此,為了提高算法的安全性與隱蔽性,此類算法在改進的過程中,要么盡量保持內容修改過后與原文的一致性,要么盡可能地挖掘文本中的特征,使其嵌入之后不易被人察覺。
表2 還進一步給出了不同類文本信息隱藏算法在抵抗攻擊能力上的表現。基于文本圖像的算法抗圖像噪聲攻擊能力弱,但其能夠抵抗文本格式變換攻擊。基于字符編碼與文本格式的算法對文本內容的復制攻擊具有較好的穩健性,但很難抵抗文本格式攻擊。基于文本內容的算法具有很強的抵抗噪聲與文本格式攻擊的能力,但是文本內容上的增刪、替換都會破壞隱藏信息。
歸納起來,現階段的中文文本信息隱藏仍然存在以下幾個主要問題。
1)嵌入容量較小
文本的嵌入容量主要受到兩方面因素的制約:文本載體冗余空間較少;研究者設計的任何嵌入算法,只要其使用修改載體的方式以達到嵌入水印的目的,那么在水印嵌入的過程中都要考慮嵌入容量過大是否會造成載體被修改后的隱蔽性降低。考慮到這些問題將會使嵌入算法具有嵌入容量上限,從而導致信息嵌入容量較小。
2)穩健性較差
已有算法的局限中,穩健性不高是多數算法所具有的一致問題。該問題表現在當文本圖像局部受噪聲污染、文件格式整體被替換、文本內容部分被篡改等情況下,隱藏信息無法完整提取或者全部被破壞。
3)漢語結構復雜
英文字母書寫簡單,26 個字母可組成所有單詞。而漢字字庫龐大,漢字筆畫構詞漢字的方式多樣。利用字符圖像與漢語特征嵌入信息的算法,需要對漢字的筆畫結構、偏旁結構、字體結構進行較為復雜的分析后,才能發現合適的嵌入條件。基于漢語語法和語義的隱藏算法,也需要分析漢語句子結構與詞語依賴等問題。
4)算法通用性不高
從已有算法的分類對比來看,算法的通用性較弱不僅表現在不同語言的信息隱藏算法不能共用外,還表現在大部分論文中提出的算法,要么以某一特點的文件格式嵌入,要么針對文本中的某一特定屬性,或者著眼于文本中某一內容特征上。將文本圖像、文本格式、文本內容算法相互融合的方法不多,不同類別方法相互遷移的研究成果也較少。因此,在中文文本信息隱藏算法的通用性研究上還有更大的提升空間。
相應地,未來本領域的研究預計將重點圍繞以下幾個方向展開。
1)提高信息隱藏容量
信息隱藏容量是隱寫算法始終關注的問題。如何在文本冗余空間十分有限、嵌入盡量減少失真的條件下,盡可能嵌入更多的信息是研究的重點。對于文本圖像而言,除行特征與統計特征外,可以進一步挖掘字符圖像的連通域、孔洞數、骨架等特征[51-52],利用這些特征來隱藏信息。針對結構化與非結構化文本冗余空間不足的問題,可以在文本中尋找更多潛在的冗余空間,或者將同樣內容的文本用其他文件格式存儲,從而提高嵌入的相對容量。另外,在文本信息隱藏過程中引入壓縮編碼的方法對嵌入信息處理,減少嵌入信息需要的相對空間,提高嵌入效率。這些都是未來提高信息隱藏容量值得深入思考和研究的方法。
2)增強穩健性
算法的穩健性直接關系到嵌入信息的完整性,一個較好的信息隱藏算法必定具有較好的穩健性。在提高信息嵌入算法的穩健性上,對于局部被攻擊產生的信息缺失問題,可以引入冗余嵌入或者數據編碼校驗機制。針對整體被攻擊信息完全無法提取問題,應該加強隱蔽通信研究。例如,將深度學習方法與無載體的信息隱藏方法結合[53],從而不修改文本載體嵌入信息;或者對嵌入信息后的文本、文本圖像、文本內容進行加密處理,防止未經授權的用戶對嵌入信息后的載體進行修改,從而在保證載體信息安全性的前提下提高穩健性。
3)挖掘漢語特點
漢語在語法結構、語義表達上豐富多彩,且漢字在音、形、意方面各有特色。針對嵌入式信息隱藏方法在語言分析方面較為復雜,將來可以建立在對漢語言科學研究的基礎上,更加充分地挖掘漢語語法、語義、漢字中的特征,將這些特征用于零水印的構造。對于漢字編碼復雜問題,通過研究編碼映射方法,用該方法降低算法處理漢字的復雜程度。此外,修改漢字字體、構建漢字字庫并對漢字進行微小的變形[54],均是中文信息隱藏未來在應用上的研究方向。
4)設計通用性算法
算法通用性弱不僅會制約算法嵌入容量,使算法的抗攻擊能力較差,還會導致不同類算法之間較難融合的問題。未來的研究可能會更加關注多方法融合的問題,包括將多種算法結合起來,在各自的優勢上設計新的算法;或者使用多種載體的混合隱寫方法;或者將文本、文本圖像載體兩者有機結合,嵌入信息在文本載體中完成,檢測隱藏信息用圖像識別的方法。此外,還可以借鑒其他語言的隱寫方法,將方法與中文信息隱藏融會貫通;或者借助其他方向的信息隱藏方法,以及其他領域的知識來推動文本信息隱藏發展。將來如果能夠在通用性算法研究上取得一定進展,那么文本信息隱藏研究領域將會向前邁進一大步。
隨著人們的信息安全意識不斷增強,企業、家庭和個人在網絡中傳遞文本信息時均會關注信息內容的安全性。文本信息隱藏技術必定會引起廣泛的關注,其相關的理論研究也會趨于完善與成熟,研究成果也將投入實際的應用中[55],從而更好地應對中文文本的信息安全問題。