吳國華,龔禮春,袁理鋒,姚曄
(杭州電子科技大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,浙江 杭州 310018)
信息隱藏技術(shù)是信息安全領(lǐng)域的一個熱門研究方向。國際上信息隱藏研究起步較早,而國內(nèi)的信息隱藏研究是在1999 年全國信息隱藏暨多媒體信息安全學(xué)術(shù)大會(CIHW,China Information Hiding Workshop)之后興起的[1]。經(jīng)過多年的發(fā)展,在國內(nèi)外眾多學(xué)者的努力下,以視頻和圖像為載體的信息隱藏研究取得了不少的成果[2]。目前,以圖像、視頻和音頻為載體的信息隱藏研究成果在數(shù)量上大大超過以文本為載體的研究成果[3]。文本的數(shù)據(jù)量較小,存在的冗余信息也較少,較難將秘密信息嵌入其中[4]。在文本信息隱藏研究的初級階段,大多數(shù)方法是將文本視為文本圖像,通過圖像信息隱藏方法嵌入待隱藏信息[5]。然而,將文本數(shù)據(jù)當(dāng)成圖像來處理,沒有利用文本數(shù)據(jù)具有的屬性[6],不能取得較好的信息隱藏效果。
文本是信息交流與信息傳遞的重要載體。由于互聯(lián)網(wǎng)的開放性及信息傳播的不確定性,文本被惡意偽造和非法篡改的事件時常發(fā)生[7-8]。通過文本信息隱藏技術(shù)保障文本內(nèi)容安全是信息安全領(lǐng)域亟待解決的重要任務(wù)[9]。本文總結(jié)已有的中文文本信息隱藏的研究成果,根據(jù)算法的線索,將已有的算法歸為3 類,分別對其進(jìn)行分析和總結(jié),并給出展望,以便該領(lǐng)域的研究者了解其研究進(jìn)展。
文本文檔包含文本內(nèi)容和文本格式兩部分。文本內(nèi)容是文檔中需要傳遞的明文信息。文本格式是對文本內(nèi)容進(jìn)行組織的方式。文本內(nèi)容經(jīng)過字符編碼,然后保存成wrod、pdf、xml 等文檔格式。
針對文本信息隱藏,研究人員通過借鑒視頻圖像的隱寫算法,或基于文本的格式與內(nèi)容,提出了多種適用于文本信息隱藏的算法[10]。本文在廣泛調(diào)研現(xiàn)有算法的基礎(chǔ)上,根據(jù)隱藏信息算法的線索,將文本信息隱藏算法劃分為3 類,如圖1 所示。
圖1 文本信息隱藏分類
通過掃描儀、數(shù)碼相機(jī)、截屏等方式,紙質(zhì)文件或電子文檔被存儲為圖像格式,稱為文本圖像。圖像文件在內(nèi)容與格式上有較多的冗余空間,便于將秘密信息嵌入其中。文本圖像與人物、景物圖像相比,其圖像紋理分布更均勻、區(qū)域邊緣特征更明顯[11]。因此,可以借助文本圖像的特征隱藏信息。圖像隱寫技術(shù)為文本圖像信息隱藏提供了可靠的技術(shù)支持?;谖谋緢D像的信息隱藏算法,可以應(yīng)用于普通文本的信息隱藏場景中,或者紙質(zhì)文本的抗打印掃描場景中,具有較強(qiáng)的實用性。
2.1.1 普通文本應(yīng)用
Ding 等[12]通過調(diào)整單詞之間的細(xì)微間距,使文本圖像中行與行之間的平均單詞間距表現(xiàn)出正弦曲線的特征,以此把水印信息編碼在正弦曲線內(nèi)。該算法的穩(wěn)健性較高,在非盲檢測與盲檢測中效果較佳。但是,該算法僅在英文文本中具有較好的效果,且嵌入容量較小。
Kim 等[13]提出適用于中文、英文、韓文這3 種語言的文本圖像信息隱藏算法。算法將文本圖像轉(zhuǎn)換為灰度圖像,然后用Sobel 算子提取文本圖像邊緣,統(tǒng)計圖像中每行文本在16 個方向上的直方圖。實驗表明,3 種語言各自構(gòu)成的文本圖像在16 個方向上擁有不同的統(tǒng)計特征,并且每種語言構(gòu)成的文本圖像每行的統(tǒng)計特征基本相同,如圖2 所示。文中將此現(xiàn)象命名為“sub-image consistency”。根據(jù)行直方圖特征一致性規(guī)律,嵌入時將前三行直方圖特征作為參考,改變后面行直方柱的長短來嵌入0 bit和1 bit。該算法穩(wěn)健性不強(qiáng),如果參考行文本圖像特征被破壞,隱藏信息將全部無法提取。同時,算法嵌入容量低,每行僅能嵌入1 bit。
圖2 行子圖特征一致性
趙星陽等[14]通過調(diào)整中文、英文二值文本圖像中單個字符除水平、豎直筆畫外的階梯邊沿,改變每行文本圖像中上下兩半部分黑色像素之和的比值,利用比值之間的關(guān)系嵌入水印信息。水印檢測時,只需要根據(jù)算法識別出比值關(guān)系就能成功恢復(fù)水印信息。與文獻(xiàn)[13]比較,該算法在水印提取時不依賴參考行,增強(qiáng)了水印的穩(wěn)健性,且能較好地抵抗文本圖像縮放攻擊。然而,該算法嵌入容量受限于文本行數(shù)量,若文本圖像受到噪聲污染,水印信息將無法準(zhǔn)確地提取。
Behrooz 等[15]提出了一種針對兩端對齊文本的隱寫算法。該算法使用光學(xué)字符識別(OCR,optical character recognition)技術(shù)獲取文本圖像中的主行(HL,host line)(包含至少3 個add space 與9 個normal space),然后通過事先設(shè)定的嵌入規(guī)則,在HL 先嵌入密鑰信息,再嵌入秘密信息中的字符頻數(shù),最后以將normal space 替換為add space 的方式嵌入經(jīng)過Huffman 編碼的碼字信息。該算法在每個HL 嵌入4 bit 信息,單行嵌入容量比文獻(xiàn)[14]高,但是HL 具有不確定性,使算法只有對長文本才具有較好的嵌入效果。
2.1.2 打印掃描應(yīng)用
與普通文本水印嵌入算法比較,抗打印掃描的文本信息隱藏算法不僅需要較高的嵌入容量,而且需要具備較高的穩(wěn)健性,才能抵抗針對打印掃描的紙質(zhì)文本的攻擊。
亓文法等[16]針對打印掃描文本水印無法在保持理想的視覺效果下實現(xiàn)盲提取這一缺陷,提出一種隱蔽性較高的文本圖像水印算法。該算法切割文本圖像中字符,統(tǒng)計每個字符圖像黑色點的個數(shù)與文本圖像中所有字符圖像黑色點總數(shù),發(fā)現(xiàn)兩者的比值在打印前后基本保持不變?;诖税l(fā)現(xiàn),該算法在嵌入時翻轉(zhuǎn)字符圖像的黑色點數(shù),翻轉(zhuǎn)部分黑色點來補(bǔ)償嵌入部分的修改,從而保證整篇文檔字符的平均黑色點數(shù)不變,達(dá)到嵌入水印的目的。該算法具有較高的不可見性,但嵌入容量低,且使用的特征在打印掃描后不穩(wěn)定,使算法針對二次復(fù)印件的檢測不夠理想。
Tan 等[17]從單個字符圖像的筆畫著手,提出一種大容量的抗打印掃描的文本水印算法。算法提取出字符圖像筆畫及筆畫之間的交叉點,并篩選出適合旋轉(zhuǎn)的筆畫(如撇、捺),通過筆畫的相對旋轉(zhuǎn)嵌入水印信息。為了使筆畫繞交叉點旋轉(zhuǎn)后盡可能不被肉眼發(fā)現(xiàn),筆畫可旋轉(zhuǎn)的角度被限定在某個區(qū)間內(nèi)。水印提取時通過檢測單個字符筆畫旋轉(zhuǎn)方向判斷嵌入的比特信息。該算法以單個字符筆畫為基本嵌入單位,相較于文獻(xiàn)[16]水印提取時不受其他部分或整體因素的影響,算法嵌入容量較大,但是實現(xiàn)起來相對困難。
雷敏等[18]經(jīng)過大量的實驗研究發(fā)現(xiàn),文本中相鄰字符高度并不相同,并且字符之間高度的相對關(guān)系經(jīng)過打印掃描處理后基本保持不變。因此,在秘密信息嵌入的過程中,通過定義的復(fù)雜度函數(shù)調(diào)整字符的高度,使相鄰字符圖像的高度關(guān)系在打印掃描前后不發(fā)生變化,從而根據(jù)2 個相鄰字符圖像的高度相對關(guān)系來嵌入水印信息。該算法在2 個字符圖像中嵌入1 bit 信息,嵌入容量較文獻(xiàn)[17]低,但算法利用的字符特征較為穩(wěn)定,能夠較好地抵抗打印掃描攻擊,適用于對穩(wěn)健性要求較高的應(yīng)用場合。
將文本轉(zhuǎn)換為文本圖像嵌入信息,是文本信息隱藏算法的常見處理方式。無論算法使用文本圖像行表現(xiàn)出的整體特征,或是字符圖像的局部特征,這些特征均是人眼無法直接發(fā)現(xiàn)的,必須經(jīng)過大量的實驗與統(tǒng)計分析得出。與此同時,當(dāng)載體受到如文本污損、圖像噪聲污染、OCR 攻擊等外部因素干擾時,算法的穩(wěn)健性和可行性都會受到一定程度的影響。
文本格式是組織文本內(nèi)容的方式。文本內(nèi)容可以被不同的文本格式組織、封裝、存儲,并通過終端屏幕呈現(xiàn)在人們眼前。基于文本格式的信息隱藏算法利用文本的排版方式、字符編碼特征、文本封裝格式等屬性隱藏信息。
2.2.1 文本間距
為了方便人們閱讀文本,不論是何種語言形成的文本,都是由字組成行、經(jīng)行排成段、段落構(gòu)成文章。這種按照順序組織文本的方式能作為文本中隱藏信息的自然屬性。因此,通過修改字、行和段在文本中的排版間距是一種常用的信息嵌入方法。
Low 等[19]提出了字移編碼和行移編碼算法。字移編碼是指以某字符的相鄰字符為參照,在人眼不可感知的前提下,將該字符向左或向右移動一定的距離,達(dá)到嵌入信息的目的。行移編碼選取待嵌入信息行的相鄰兩行作為參考行。在不移動參考行前提下,用待嵌入信息行上移或下移來表示嵌入0 或1。行移編碼算法嵌入容量小,字移編碼算法雖能提高嵌入容量,但其穩(wěn)健性較低。2 種算法提取水印時均是采用非盲方式,需要原始文本作為隱藏信息提取的參照。
文獻(xiàn)[20]改進(jìn)了上述算法,提出將行移編碼與字移編碼方法相互結(jié)合的信息嵌入算法。算法在文本行水平方向使用字移編碼,垂直方向使用行移編碼。該算法結(jié)合2 種方法的優(yōu)勢,既保證水印的穩(wěn)健性,又能提高嵌入容量,并且實現(xiàn)了水印的盲提取,簡化了秘密通信的成本,具有較好的適用性。
調(diào)整文本間距的算法在對抗一定強(qiáng)度的伸縮攻擊上有較好的效果。但是需要嚴(yán)格遵守人眼視覺特點對文本字符間距、行間距和段間距進(jìn)行調(diào)整。如果間距調(diào)整程度過大,會導(dǎo)致可視性嚴(yán)重降低,秘密信息的嵌入位置也易被人眼識別出來。
2.2.2 字符編碼
字符通過編碼形成二進(jìn)制數(shù)據(jù)并存儲于計算機(jī)中。已有算法通過字符編碼的奇偶性嵌入秘密信息,或者將字符編碼表中的不可見字符插入文本中隱藏信息,甚至通過改變字符顏色的編碼值來嵌入信息。
Unicode 編碼集集成了大多數(shù)語言的字符編碼,是基于字符編碼隱藏算法的首選編碼方式。文獻(xiàn)[21]提出用Unicode 編碼的奇偶性隱藏秘密信息。該算法將文本字符用十進(jìn)制的Unicode 編碼表示,把隱藏信息視為二進(jìn)制比特串,然后將每比特隱藏信息與單個字符Unicode 編碼的奇偶性對比:若兩者均為奇數(shù)則嵌入1;兩者均為偶數(shù)則嵌入0;兩者奇偶性不一致,則修改字符藍(lán)色分量或字符下劃線顏色中一種屬性的最低位值,使算法能夠?qū)η度胛恢眠M(jìn)行標(biāo)記。該算法的嵌入位置默認(rèn)從文本第一個字符開始,若提取隱藏信息從其他字符位置開始,將無法提取完整的秘密信息。
陸綠等[22]為了解決上述非順序提取水印信息導(dǎo)致秘密信息不能復(fù)原的問題,提出一種擴(kuò)展水印信息,并在組間插入分隔符作為區(qū)分標(biāo)志的嵌入算法。在水印提取時,即使某部分載體被破壞,在分隔符的作用下,依然可以從未被破壞的載體中獲得完整的水印信息,具有較好的穩(wěn)健性。
文獻(xiàn)[21-22]中提出的算法均是利用單個字符編碼隱藏信息,沒有利用詞語之間的相關(guān)性嵌入信息。文獻(xiàn)[23]將字符編碼擴(kuò)展到詞編碼,提出基于詞平臺漢字編碼的文本信息隱藏算法。文本中的詞根據(jù)其詞性被劃分為不同的詞典詞,每個詞典詞使用4 個字節(jié)編碼成詞典碼,然后通過分詞與詞擴(kuò)展方式嵌入信息。該算法不對字符的屬性進(jìn)行修改,因此具有較好的隱蔽性。但是,用4 個字節(jié)編碼一個詞,會造成較多的冗余。
字符屬性還包括字符顏色?;谌搜坼F狀細(xì)胞對藍(lán)色不敏感這一特點,劉豪等[24]通過修改字符的藍(lán)色分量編碼值嵌入水印信息,該算法能在一個字符中嵌入1 bit 信息。Tang 等[25]改進(jìn)上述算法,通過修改每個字符顏色屬性RGB 的3 個通道最低位值的嵌入信息,使改進(jìn)后的算法嵌入容量是文獻(xiàn)[24]的3 倍。修改字符顏色屬性編碼的算法不適用于對隱蔽性要求較高的應(yīng)用場合,過度修改字符顏色編碼值會降低隱蔽通信的安全性。
通過研究文本字符編碼表,領(lǐng)域內(nèi)的學(xué)者發(fā)現(xiàn)雖然字符編碼表中有不少字符被賦予編碼,但是將它們插入文本中卻不能被人眼感知。此類型的字符被稱為“不可見字符”,ASCII 編碼表中部分不可見字符舉例如表1 所示。
表1 ASCII 碼中部分不可見字符
利用上述不可見字符,Liu 等[26]提出一種基于Hash 函數(shù)與不可見ASCII 字符替換的信息隱藏算法。該算法使用“SOH”這一不可見字符,替換文本分段中的空格。對替換后的分段文本進(jìn)行Hash運(yùn)算,將Hash 值與隱藏信息比較,根據(jù)設(shè)定規(guī)則嵌入信息。文獻(xiàn)[27]根據(jù)約束函數(shù)確定嵌入位置。若秘密信息為0,載體對應(yīng)位置加入空格,否則,添加“SOH”字符。該算法的嵌入能力取決于約束函數(shù)在文本中獲取嵌入位置的數(shù)量。
相比于文獻(xiàn)[26-27],文獻(xiàn)[28]擴(kuò)展了不可見字符編碼的方式,提出基于Unicode 編碼的不可見字符水印嵌入算法。該算法將Unicode 不可見字符編碼兩兩組合,形成一組映射規(guī)則插入文本每個句子的句號前。為了提高安全性,算法中使用了16 位循環(huán)冗余校驗。在水印未嵌入載體前對每個句子做散列計算,并將計算的結(jié)果根據(jù)映射規(guī)則轉(zhuǎn)為不可見水印編碼,附加到嵌入的水印編碼句子的尾部,使算法的穩(wěn)健性得到進(jìn)一步提升。
利用人眼視覺的不敏感性,文獻(xiàn)[29]提出一種同形字符替換的文本水印算法。為區(qū)分Unicode 編碼不同而人眼看似相同的字符,作者整理出一份同形字符表。算法對同形字進(jìn)行編碼,從而通過文本中同形字的編碼替換來嵌入信息。提取水印時檢測相應(yīng)字符的編碼,與編碼映射表作對比,進(jìn)而獲得水印信息。該算法的隱蔽性與嵌入容量都較好,但是水印的穩(wěn)健性差,嵌入位置一旦被其他字符替換,水印不能被完整提取。
目前,出于對安全性與隱蔽性的考慮,在實際應(yīng)用中使用不可見字符和視覺不可區(qū)分算法嵌入信息的應(yīng)用較多。然而,這些應(yīng)用中大多數(shù)被用于結(jié)構(gòu)化文本中。非結(jié)構(gòu)化的文本中基本不存在冗余空間,無法實現(xiàn)信息嵌入。基于字符編碼屬性的信息隱藏算法,絕大多數(shù)以字符為基本嵌入單位,因而該類算法的嵌入容量普遍要高于基于文本間距的算法。
2.2.3 文件格式
文本文件的格式多樣(常見文檔格式包括word、pdf、xml 等),利用文本格式隱藏信息的算法對載體文本的文件格式具有很強(qiáng)的針對性。已有算法使用文件格式內(nèi)部未使用空間嵌入信息,或者利用文件格式自身的特殊性隱藏信息。
文獻(xiàn)[30]分析word 文檔的數(shù)據(jù)結(jié)構(gòu),提出一種使用word 文檔空間中控制結(jié)構(gòu)數(shù)據(jù)、嵌入式對象等屬性隱藏信息的算法。該算法利用word 文檔格式中未使用的空間嵌入數(shù)據(jù),從而在抵抗文本復(fù)制攻擊方面具有較高的穩(wěn)健性。然而不同版本的word文檔內(nèi)部數(shù)據(jù)結(jié)構(gòu)不相同,因此提取隱藏信息時使用的word 文檔格式必須和嵌入信息時一致。
文獻(xiàn)[31]提出一種使用pdf 文檔結(jié)構(gòu)嵌入水印的算法。該算法根據(jù)pdf 文檔行末標(biāo)識符不顯示的特殊性,獲取交叉引用表中每行的行末標(biāo)識符,通過水印信息控制行末標(biāo)識符的修改方式,從而間接嵌入水印信息。該算法能抵抗文本復(fù)制攻擊,且文檔中的標(biāo)識符被替換后不改變文檔的大小,因而能較好抵抗統(tǒng)計攻擊。
文獻(xiàn)[32]提出一種在xml 文檔中嵌入水印的算法。該算法根據(jù)xml 文檔結(jié)構(gòu)中屬于同一層次標(biāo)簽的先后排列順序不影響文檔內(nèi)容展示的特點,將不同層次與同一層次的標(biāo)簽進(jìn)行組合與排列,構(gòu)建秘密信息與標(biāo)簽組合排列之間的對應(yīng)關(guān)系,通過映射函數(shù)實現(xiàn)秘密信息的嵌入與提取,使算法具有較好的隱蔽性和抵抗復(fù)制攻擊的能力。
由此可見,基于文本格式的算法使用word、pdf、xml 文檔格式的內(nèi)部結(jié)構(gòu)或特殊屬性來隱藏信息,能較好地抵抗文檔的復(fù)制攻擊,并且具有較高的隱蔽性。然而,該類算法僅針對某一指定文件格式或者特定版本的文檔來設(shè)計,算法不具有通用性。此外,該類算法嵌入信息之后,可能引起文件大小的改變,易引起攻擊者懷疑。在對文件大小敏感的基于文本格式的信息隱藏應(yīng)用中,可以研究文件格式自身的特點來使得隱藏信息后的文件尺寸保持不變。
基于文本內(nèi)容的信息隱藏算法重點分析文本內(nèi)容,挖掘文本內(nèi)容特征,構(gòu)造合適的算法將秘密信息嵌入其中。該類方法近些年來備受學(xué)者關(guān)注,這是因為自然語言處理技術(shù)的成熟是文本內(nèi)容研究的重要基礎(chǔ),基于文本內(nèi)容的信息隱藏方法在不改變文本語義(或不修改載體內(nèi)容)的前提下,通過等價信息替換(或從文本中提取特征)能夠較好地隱藏秘密信息。根據(jù)所選文本內(nèi)容的差異,基于文本內(nèi)容的文本信息隱藏算法分為基于語法的方法、基于語義的方法、基于漢語特征的方法。其中,基于語法的方法和基于語義的方法以自然語言處理技術(shù)為支撐,而基于漢語特征的方法利用漢語言特點嵌入信息。為了提高基于文本內(nèi)容算法的隱蔽性,在嵌入過程中可以使用零水印與無載體的嵌入方法。
2.3.1 基于語法方法
基于語法的信息隱藏技術(shù)以自然語言語法結(jié)構(gòu)為依據(jù),利用句中詞語的依賴關(guān)系,或者句式變換(如主動變被動、移動附加語)等語法規(guī)則,構(gòu)造算法嵌入秘密信息。
文獻(xiàn)[33]以漢語助詞“的”為典型代表,提出一種基于虛詞變換的隱寫算法。算法從文本中找出含有“的”字的句子,在不影響文本原意的前提下,以增加或刪除句中“的”字方式嵌入1 bit 信息。該算法通過定義模板作為增刪“的”字的依據(jù),具有較好的靈活性。但是,其嵌入容量不高,修改后的文本易被察覺。
文獻(xiàn)[34]提出了一種基于句子長度的文本信息隱藏算法。該算法以不改變句子原意為前提,對句子進(jìn)行句式變換,通過改變句子的長度嵌入水印信息。為了能夠抵抗增加、刪除、句子變換對文本的攻擊,算法對嵌入位置進(jìn)行選取。在提取水印時引入了投票機(jī)制,使算法的穩(wěn)健性被提高。
文獻(xiàn)[35]給文本中的每個句子分配序號,用整篇文本中詞語出現(xiàn)的頻率,定量的計算每個句子的熵。將句子熵大于設(shè)定閾值的句子當(dāng)成是文本的重要句子。把篩選出句子的序號作為零水印信息,發(fā)送到第三方認(rèn)證機(jī)構(gòu),實現(xiàn)文本內(nèi)容的版權(quán)保護(hù)。
2.3.2 基于語義方法
基于語法的文本信息隱藏方法一般是在句子級別嵌入秘密信息,因此,隱藏信息的容量相對較低?;谡Z義信息隱藏方法細(xì)化了文本內(nèi)容研究粒度,從字詞層面嵌入以提高文本的隱藏容量[36]。語言學(xué)中廣泛存在的同義詞被基于同義詞替換的隱寫方法作為嵌入依據(jù)。該類算法需要構(gòu)造同義詞庫,對同義詞集內(nèi)的同義詞進(jìn)行編碼,在不改變句子原意下,通過同義詞的相互替換隱藏信息。
Chiang 等[37]將基于同義詞替換的方法用于中文文本。水印在嵌入的過程中用二次剩余理論先選取適合替換的句子,再選擇句中需要被替換的同義詞。該算法運(yùn)行復(fù)雜,且一個同義詞只能嵌入1 bit信息。經(jīng)過該算法替換生成的句子不可避免地產(chǎn)生同義詞替換不當(dāng)導(dǎo)致句子出現(xiàn)歧義的問題。
文獻(xiàn)[38]提出一種改進(jìn)的中文同義詞替換信息隱藏算法。該算法依據(jù)《同義詞詞林》等對同義詞分類。若同義詞屬于完全可替換類,則直接替換;若屬于不完全可替換的類,則需要根據(jù)詞性來判斷是否替換;若屬于歧義詞類,則根據(jù)上下文搭配詞計算同義詞被替換的概率。經(jīng)過劃分后,算法篩選出適合替換的同義詞,降低替換后的語義失真程度。
為了進(jìn)一步量化同義詞替換評價標(biāo)準(zhǔn),姜傳賢等[39]定義了同義詞替換評價模型,提出基于文本重要內(nèi)容的穩(wěn)健水印算法。算法對文本分詞處理后,統(tǒng)計主題詞(文本中權(quán)重較高的一些詞),提取包含主題詞的句子以及句子中的同義詞集。在完全知道句中同義詞上下文搭配詞的條件下,通過依存句法分析,選取同義詞集中與上下文搭配最合適的同義詞替換原來的詞。
Chang 等[40]針對同義詞替換后的隱蔽性問題及同義詞集交叉現(xiàn)象,對同義詞替換算法提出兩點改進(jìn)。其中,通過機(jī)器學(xué)習(xí)算法,利用大型語料庫訓(xùn)練好的n-gram 模型剔除模棱兩可的同義詞,之后對同義詞集進(jìn)行評估,從而提高同義詞替換后的隱蔽性。再者,利用圖論的思想,將同義詞作為圖的頂點,詞與詞之間用邊連接。使用頂點著色算法,使出現(xiàn)在不同同義詞集內(nèi)的某個詞的編碼一致,從而解決了同義詞編碼不一致在解碼時導(dǎo)致的歧義問題。
文獻(xiàn)[41-42]從信息論角度出發(fā),利用信息編碼方法提高同義詞嵌入效率。文獻(xiàn)[41]設(shè)計了一種基于矩陣編碼的同義詞替換方法。文獻(xiàn)[42]在將秘密信息嵌入前,先用串表壓縮(LZW,lempel ziv welch)算法對秘密信息壓縮。秘密信息經(jīng)過壓縮后其長度減小。相對不壓縮而言,同樣載體文本能夠隱藏更多的信息。
目前,同義詞替換隱寫算法是詞語級別嵌入信息較成熟的方法。然而,中文的語義環(huán)境較為復(fù)雜,算法需要耗費(fèi)大量的時間通過語義分析來消除同義詞替換的歧義。
文獻(xiàn)[43]使用詞階(文本集/文本中詞語按詞頻排序的序號)圖實現(xiàn)文本無載體信息隱藏。算法需要構(gòu)建一個包含大量文本的數(shù)據(jù)集,信息隱藏者與接收者選擇一個文本子集計算整個文本子集、子集中單個文本、子集中每個詞語的詞階圖。待傳遞的秘密信息以詞為基本單位,在轉(zhuǎn)換協(xié)議和密鑰共同作用下,秘密信息被轉(zhuǎn)為文本子集中的常見詞,通過設(shè)計好的標(biāo)簽定位協(xié)議為轉(zhuǎn)換后的每個詞分配一個詞階。依據(jù)詞語的詞階圖與文本的映射關(guān)系,用文本表示秘密信息中的詞,將文本載體按照秘密信息中詞語出現(xiàn)的先后順序發(fā)送給接收方。
文本無載體以秘密信息為驅(qū)動,且不對載體修改,因而在信息隱藏容量與隱蔽性方面,其比一般的嵌入式文本信息隱藏方法占據(jù)更大的優(yōu)勢。但當(dāng)隱藏的信息量較少時,使用無載體的方法可能會帶來較大的通信開銷。少量秘密信息需要多篇文本來傳遞,使通信效率大幅度降低。
2.3.3 基于漢語特征方法
漢語文字具有中國特色,具有幾千年的演變歷史。面向漢語的文本信息隱藏算法利用漢字偏旁、漢語拼音、漢字筆畫、漢字字體等特點在中文文本內(nèi)嵌入秘密信息。
Sun 等[44]提出基于漢字偏旁的水印嵌入算法。該算法依據(jù)《信息處理用GB13000.1 字符集漢字部件規(guī)范》定義了構(gòu)成漢字的6 種空間結(jié)構(gòu),如圖3所示。其中,A 和B 表示漢字的基本偏旁,lr 表示左右結(jié)構(gòu),ud 表示上下結(jié)構(gòu),we 表示包圍結(jié)構(gòu),lu 表示左上結(jié)構(gòu),ld 表示左下結(jié)構(gòu),ru 表示右上結(jié)構(gòu),將漢字基本偏旁用唯一數(shù)字標(biāo)識。每個漢字均可以由一個或多個基本偏旁按照6 種空間結(jié)構(gòu)組合而成。算法篩選出具有左右結(jié)構(gòu)的漢字,作為信息嵌入的載體。將水印信息轉(zhuǎn)為二進(jìn)制流,在滿足能夠完全嵌入水印信息的前提下,依次從文本中讀取一個漢字:若獲取的漢字非左右結(jié)構(gòu),那么將其完整輸出;若獲取的漢字具有左右結(jié)構(gòu)且待嵌入為0 bit,同樣也完整輸出該漢字;如果當(dāng)前漢字是左右結(jié)構(gòu)且待嵌入為1 bit,那么將該漢字拆成最基本偏旁輸出;重復(fù)上述過程直至水印嵌完為止。該算法僅用了6 種空間結(jié)構(gòu)中的一種,文本整體嵌入能力受限于文本中左右結(jié)構(gòu)漢字?jǐn)?shù)量。
圖3 漢字6 種空間結(jié)構(gòu)
Wang 等[45]基于上述算法,在原來僅使用左右結(jié)構(gòu)漢字嵌入信息的基礎(chǔ)上又增加了上下結(jié)構(gòu)的漢字,相比于文獻(xiàn)[44]同樣的一篇文本,水印的嵌入容量得到提高。不僅如此,該算法還引入了可逆的嵌入思想,即在水印信息被提取后,載體文本依舊可以保持原樣,當(dāng)水印信息被提取出后,載體能夠被重復(fù)利用。
Fei 等[46]根據(jù)漢字一字多音的現(xiàn)象,提出一種基于多音字的中文文本水印算法。算法統(tǒng)計相鄰2個多音字間漢字的個數(shù)與漢語拼音字母數(shù)記為十進(jìn)制,然后將每位十進(jìn)制轉(zhuǎn)為8 位二進(jìn)制,同時還統(tǒng)計前一個多音字讀音的個數(shù)與其拼音字母個數(shù),同樣轉(zhuǎn)成8 位二進(jìn)制數(shù)。將兩組16 bit 數(shù)相與生成一組新的16 bit 數(shù),將該數(shù)作為水印信息保存。雖然該算法在2 個多音字之間可以嵌入16 bit 數(shù)據(jù),嵌入容量大,但是其在抵抗文本多音字插入、刪除、替換攻擊上表現(xiàn)較弱。
文獻(xiàn)[47]提出一種使用漢語拼音聲韻母特征構(gòu)造零水印的算法。該算法根據(jù)聲韻母編號,統(tǒng)計文本中所有漢字的音數(shù)值(聲母、韻母編號值之和)作為零水印,并按照設(shè)定的閾值選取出部分音數(shù)值作為用戶提取水印時的密鑰,將零水印與密鑰一起保存。由于算法提取的特征不依賴于某一漢字或者拼音,因此算法的穩(wěn)健性較高。
文獻(xiàn)[48]提出一種基于漢字筆畫的文本信息隱藏算法。對中文漢字的筆畫數(shù)統(tǒng)計發(fā)現(xiàn)所有漢字中8 筆畫漢字最多。算法以8 筆畫漢字為嵌入點,統(tǒng)計其左右相鄰漢字的筆畫數(shù)。將2 位十進(jìn)制的筆畫數(shù)轉(zhuǎn)化為16 位二進(jìn)制,從而將一個用Unicode 編碼的漢字嵌入其中。該算法的嵌入容量取決于文本中8 筆畫漢字的數(shù)量,且很難抵抗對文本中8 筆畫漢字及其左右漢字的攻擊。
文獻(xiàn)[49]提出一種基于筆畫的中文文本零水印算法。該算法統(tǒng)計文本中每個漢字出現(xiàn)的頻率,篩選出頻度較高的漢字。將這些漢字的筆畫數(shù)作為文本的特征與水印信息進(jìn)行位運(yùn)算。運(yùn)算結(jié)果作為用戶的注冊碼,發(fā)送到第三方認(rèn)證中心保存。
孫新梅等[50]針對漢字中的繁體字與簡體字混用現(xiàn)象,提出一種基于字體的中文信息隱藏算法。算法執(zhí)行前需要構(gòu)建一個簡/繁體字對應(yīng)的字典,執(zhí)行中可選用3 種替換方法中的一種實現(xiàn)信息隱藏。1)簡單替換算法:若文本中的字在字典中,則根據(jù)待隱藏信息的二進(jìn)制數(shù)來替換,待隱藏信息為0 則保持簡體字不變,為1 則用相應(yīng)的繁體字替換簡體字;若文本中的字不在字典中,則保持不變。2)高效替換算法:將待隱藏信息分為長度相同的組,將每組二進(jìn)制數(shù)轉(zhuǎn)為對應(yīng)的十進(jìn)制數(shù)D,替換D個字后的簡體字。該方法一個字符可以嵌入多個比特,且隱蔽性較好。3)基于模板替換算法:其能夠在多個字符中嵌入多個比特信息。文獻(xiàn)[43]算法可選用3種替換方法中的一種,能夠較好地平衡載體嵌入能力與隱蔽性之間的矛盾。
基于漢語特征的信息隱藏算法,無論是利用漢字的偏旁部首、漢語拼音和字體筆畫嵌入水印信息,還是使用這些特征構(gòu)造零水印實現(xiàn)信息內(nèi)容安全,都能充分獲得較為穩(wěn)定的漢語特征。因此,該類算法能夠較好地適用于中文文本信息隱藏,具有一定的研究價值和應(yīng)用前景。
本文在詳細(xì)介紹文本信息隱藏算法的基礎(chǔ)之上,選取了其中部分論文,分類整理成表2 所示的結(jié)果。從表2 可以看出,文本信息隱藏算法隱寫過程中依賴的文本屬性及算法的嵌入能力具有顯著差異,具體分析如下。
1)基于文本圖像的算法
該類算法多以文本圖像行處理后表現(xiàn)的整體特性出發(fā)嵌入信息[12-15],或者利用單個字符圖像的統(tǒng)計特征隱藏信息[16-18]。從算法的應(yīng)用場合上看,抗打印掃描攻擊的嵌入算法的穩(wěn)健性通常要高于普通文本嵌入算法。該類算法大多對圖像噪聲敏感,一旦受到噪聲攻擊,信息提取的精度將受到嚴(yán)重的挑戰(zhàn)。
2)基于文本格式的算法
該類算法目前研究較為成熟,相應(yīng)的成果較多,在信息隱藏的過程中可依賴的載體屬性較多,不同算法的嵌入能力也有較大的差異,且多數(shù)算法只針對某一屬性提出。例如,基于字符編碼的算法以每字符嵌入1 bit 居多[21-22,24,26]。如果將字編碼擴(kuò)展到詞編碼[23],單顏色編碼擴(kuò)展到多顏色編碼[25],或者使用規(guī)則映射方法[29]可以提高嵌入容量。但是,該類算法只對某種字符編碼方式生效?;谖谋靖袷降乃惴╗30-32]僅適用于某一特定格式的文本,文本格式的改變會導(dǎo)致算法失效。此外,修改文本間距的算法與修改字符編碼的算法均存在隱蔽性與嵌入容量之間的矛盾。然而,基于文本格式的算法在文件格式內(nèi)尋找冗余空間,能夠較好地避開這一問題。
表2 文本信息隱藏算法對比
3)基于文本內(nèi)容的算法
該類算法以修改文本內(nèi)容和提取文本特征為主,研究成果也相對較多。對于修改文本內(nèi)容的語法方法[33-35]與語義方法[37-43]而言,雖然在嵌入級別上有差別,但是絕大多數(shù)算法在嵌入信息前均需要對文本進(jìn)行分詞,使用自然語言處理技術(shù)分析句子,因此會產(chǎn)生較為復(fù)雜的計算過程。然而,基于漢語特征的方法[44-50]以字符為處理對象,可以省去較為煩瑣的自然語言分析,并且獲取的文本特征能夠用于構(gòu)造零水印[46-49],提高隱蔽性。無論是基于語義、語法,還是漢語特征的算法,嵌入信息都容易受到對文本內(nèi)容的增加、刪除、替換攻擊。這些攻擊一旦發(fā)生必定嚴(yán)重影響隱藏信息提取的精確性。因此,為了提高算法的安全性與隱蔽性,此類算法在改進(jìn)的過程中,要么盡量保持內(nèi)容修改過后與原文的一致性,要么盡可能地挖掘文本中的特征,使其嵌入之后不易被人察覺。
表2 還進(jìn)一步給出了不同類文本信息隱藏算法在抵抗攻擊能力上的表現(xiàn)?;谖谋緢D像的算法抗圖像噪聲攻擊能力弱,但其能夠抵抗文本格式變換攻擊?;谧址幋a與文本格式的算法對文本內(nèi)容的復(fù)制攻擊具有較好的穩(wěn)健性,但很難抵抗文本格式攻擊。基于文本內(nèi)容的算法具有很強(qiáng)的抵抗噪聲與文本格式攻擊的能力,但是文本內(nèi)容上的增刪、替換都會破壞隱藏信息。
歸納起來,現(xiàn)階段的中文文本信息隱藏仍然存在以下幾個主要問題。
1)嵌入容量較小
文本的嵌入容量主要受到兩方面因素的制約:文本載體冗余空間較少;研究者設(shè)計的任何嵌入算法,只要其使用修改載體的方式以達(dá)到嵌入水印的目的,那么在水印嵌入的過程中都要考慮嵌入容量過大是否會造成載體被修改后的隱蔽性降低??紤]到這些問題將會使嵌入算法具有嵌入容量上限,從而導(dǎo)致信息嵌入容量較小。
2)穩(wěn)健性較差
已有算法的局限中,穩(wěn)健性不高是多數(shù)算法所具有的一致問題。該問題表現(xiàn)在當(dāng)文本圖像局部受噪聲污染、文件格式整體被替換、文本內(nèi)容部分被篡改等情況下,隱藏信息無法完整提取或者全部被破壞。
3)漢語結(jié)構(gòu)復(fù)雜
英文字母書寫簡單,26 個字母可組成所有單詞。而漢字字庫龐大,漢字筆畫構(gòu)詞漢字的方式多樣。利用字符圖像與漢語特征嵌入信息的算法,需要對漢字的筆畫結(jié)構(gòu)、偏旁結(jié)構(gòu)、字體結(jié)構(gòu)進(jìn)行較為復(fù)雜的分析后,才能發(fā)現(xiàn)合適的嵌入條件?;跐h語語法和語義的隱藏算法,也需要分析漢語句子結(jié)構(gòu)與詞語依賴等問題。
4)算法通用性不高
從已有算法的分類對比來看,算法的通用性較弱不僅表現(xiàn)在不同語言的信息隱藏算法不能共用外,還表現(xiàn)在大部分論文中提出的算法,要么以某一特點的文件格式嵌入,要么針對文本中的某一特定屬性,或者著眼于文本中某一內(nèi)容特征上。將文本圖像、文本格式、文本內(nèi)容算法相互融合的方法不多,不同類別方法相互遷移的研究成果也較少。因此,在中文文本信息隱藏算法的通用性研究上還有更大的提升空間。
相應(yīng)地,未來本領(lǐng)域的研究預(yù)計將重點圍繞以下幾個方向展開。
1)提高信息隱藏容量
信息隱藏容量是隱寫算法始終關(guān)注的問題。如何在文本冗余空間十分有限、嵌入盡量減少失真的條件下,盡可能嵌入更多的信息是研究的重點。對于文本圖像而言,除行特征與統(tǒng)計特征外,可以進(jìn)一步挖掘字符圖像的連通域、孔洞數(shù)、骨架等特征[51-52],利用這些特征來隱藏信息。針對結(jié)構(gòu)化與非結(jié)構(gòu)化文本冗余空間不足的問題,可以在文本中尋找更多潛在的冗余空間,或者將同樣內(nèi)容的文本用其他文件格式存儲,從而提高嵌入的相對容量。另外,在文本信息隱藏過程中引入壓縮編碼的方法對嵌入信息處理,減少嵌入信息需要的相對空間,提高嵌入效率。這些都是未來提高信息隱藏容量值得深入思考和研究的方法。
2)增強(qiáng)穩(wěn)健性
算法的穩(wěn)健性直接關(guān)系到嵌入信息的完整性,一個較好的信息隱藏算法必定具有較好的穩(wěn)健性。在提高信息嵌入算法的穩(wěn)健性上,對于局部被攻擊產(chǎn)生的信息缺失問題,可以引入冗余嵌入或者數(shù)據(jù)編碼校驗機(jī)制。針對整體被攻擊信息完全無法提取問題,應(yīng)該加強(qiáng)隱蔽通信研究。例如,將深度學(xué)習(xí)方法與無載體的信息隱藏方法結(jié)合[53],從而不修改文本載體嵌入信息;或者對嵌入信息后的文本、文本圖像、文本內(nèi)容進(jìn)行加密處理,防止未經(jīng)授權(quán)的用戶對嵌入信息后的載體進(jìn)行修改,從而在保證載體信息安全性的前提下提高穩(wěn)健性。
3)挖掘漢語特點
漢語在語法結(jié)構(gòu)、語義表達(dá)上豐富多彩,且漢字在音、形、意方面各有特色。針對嵌入式信息隱藏方法在語言分析方面較為復(fù)雜,將來可以建立在對漢語言科學(xué)研究的基礎(chǔ)上,更加充分地挖掘漢語語法、語義、漢字中的特征,將這些特征用于零水印的構(gòu)造。對于漢字編碼復(fù)雜問題,通過研究編碼映射方法,用該方法降低算法處理漢字的復(fù)雜程度。此外,修改漢字字體、構(gòu)建漢字字庫并對漢字進(jìn)行微小的變形[54],均是中文信息隱藏未來在應(yīng)用上的研究方向。
4)設(shè)計通用性算法
算法通用性弱不僅會制約算法嵌入容量,使算法的抗攻擊能力較差,還會導(dǎo)致不同類算法之間較難融合的問題。未來的研究可能會更加關(guān)注多方法融合的問題,包括將多種算法結(jié)合起來,在各自的優(yōu)勢上設(shè)計新的算法;或者使用多種載體的混合隱寫方法;或者將文本、文本圖像載體兩者有機(jī)結(jié)合,嵌入信息在文本載體中完成,檢測隱藏信息用圖像識別的方法。此外,還可以借鑒其他語言的隱寫方法,將方法與中文信息隱藏融會貫通;或者借助其他方向的信息隱藏方法,以及其他領(lǐng)域的知識來推動文本信息隱藏發(fā)展。將來如果能夠在通用性算法研究上取得一定進(jìn)展,那么文本信息隱藏研究領(lǐng)域?qū)蚯斑~進(jìn)一大步。
隨著人們的信息安全意識不斷增強(qiáng),企業(yè)、家庭和個人在網(wǎng)絡(luò)中傳遞文本信息時均會關(guān)注信息內(nèi)容的安全性。文本信息隱藏技術(shù)必定會引起廣泛的關(guān)注,其相關(guān)的理論研究也會趨于完善與成熟,研究成果也將投入實際的應(yīng)用中[55],從而更好地應(yīng)對中文文本的信息安全問題。