鄒孜逸 王開西






摘要:針對目前利用宋詞進行生成式隱寫方法詞典庫過大,載密文本安全性不高和隱寫成功率低的問題,提出了一種利用宋詞韻律中“中平仄”出現頻率的奇偶性進行檢索的無載體文本隱寫方法。與現有利用宋詞進行信息隱寫的方法相比,該方法不需要建立龐大的詞典庫,載密文本也不會出現語義問題和連貫性問題,提高了安全性和隱寫成功率,隱寫成功率為100%,隱藏容量為3 bits/詞牌。
關鍵詞:宋詞;韻律;無載體;安全性;成功率
中圖分類號:TP309.7
文獻標志碼:A
文章編號:1006-1037(2021)01-0007-06
基金項目:國家自然科學基金(批準號:U1536113)資助。
通信作者:王開西,男,博士,副教授,主要研究方向為信息隱藏等。E-mail: kxwang@qdu.edu.cn
如今,信息技術飛速發展,信息隱藏對信息的安全傳輸具有重大意義。現有的信息隱藏載體主要有文本、圖像、視頻、音頻、網絡流量[1]等。由于文本在網絡和生活中的應用最為廣泛,因此基于文本的信息隱藏有著更加廣闊的應用前景,主要應用于以下3個方面:秘密信息的傳送、文本版權的保護、消息來源的確認。目前文本隱寫主要分為修改載體和無載體的方法。其中修改載體的方法主要分為兩類:不基于語義的方法——利用人類視覺上的不可感知性,如通過修改排版[2]、變換字體顏色[3]、修改字體格式[4]、利用文件格式[5]、添加不可見字符[6]等方式;基于語義的方法——利用機器對語法和語義的不可感知性,如通過修改句子結構[7]、進行同義詞替換[8]、基于虛詞變換[9]等方式。但隨著機器學習的發展,修改載體的方法可以通過機器檢測的方式檢測出來,已經無法滿足人們的需求,因此無載體隱寫受到越來越多的關注。因為無載體隱寫法不對載體文本進行修改,因此提高了安全性。無載體隱寫法又分為生成法和檢索法。生成法中具有代表性的有宋詞生成法[10-12],基于單位規則的生成法[13]等。檢索法有基于漢字筆畫矩陣法[14],基于漢字數學表達式法[15]等。針對目前利用宋詞進行生成式隱寫法存在詞典庫過大,載密文本安全性不高和隱藏成功率低的問題,本文提出了一種利用宋詞韻律中“中平仄”出現頻率的奇偶性進行檢索的無載體文本隱寫方法,該方法不需要建立詞典庫,載密文本也不會出現語義問題和連貫性問題,提高了安全性和隱寫成功率。
1 宋詞載體隱寫介紹
宋詞是中國古代的一種常見文體,其極富韻律和格式的文本特點為信息隱藏技術提供了良好的載體[16]。目前利用宋詞進行信息隱寫也取得了一些成果。
余振山等[10]第一次提出利用宋詞韻律進行隱寫,通過對韻律塊中含有的詞語進行分詞組成詞典,然后進行編碼,隱藏秘密消息的時候,根據秘密消息的二進制串在宋詞模板中填入從詞典中查詢得到的可以表示對應二進制的詞語,以此來隱藏秘密消息。屈琪峰等[11]提出了一種基于句式控制的宋詞載體文本隱寫方法,通過分析宋詞韻律模板中韻律與詞性的關系,設計針對宋詞詞典的詞性提取算法,生成處理后的“韻律-詞性”詞典,隱藏秘密消息時通過設計基于句式控制的信息隱寫與提取算法,生成與原來宋詞格律、句式和詞性完全相同的隱寫載體。劉彥辰等[12]提出了一種利用宋詞韻律進行隱寫的方法,主要思想是將整首詞的韻律分為固定的韻律塊,然后提取出所有宋詞的詞語組成詞典,根據每個韻律含有的詞語個數進行編碼,隱藏秘密消息的時候就按照之前的編碼和隨機選擇模板算法生成新的宋詞,將新生成的宋詞發送給接收方。
總的來說,現在利用宋詞進行隱寫已經取得了一定的成果,但都是通過構造詞典并生成宋詞進行隱寫的方法,生成的隱寫宋詞與非隱寫宋詞仍存在不小的區別,因此安全性不高,很容易被懷疑隱藏了秘密消息,并且通信雙方需要共享一個較大的詞典庫來進行秘密消息的隱寫與提取,這提高了雙方通信的成本。本文提出了一種利用宋詞韻律的無載體文本隱寫方法,通過對“中平仄”出現頻率的奇偶性進行編碼,不生成詞典,使用原始的宋詞進行隱寫,不對宋詞做任何更改,發送的時候通過檢索的方式獲得載密文本,既可以發送完整的宋詞,也可以只發送詞牌名,大大提高了方法的安全性,并且降低了通信成本,隱寫成功率為100%。
2 利用宋詞韻律進行無載體隱寫的方法
2.1 宋詞知識介紹
2.1.1 詞牌 每首宋詞都必須有詞牌名,已知的詞牌有1 000多個。
2.1.2 平仄韻律 平仄是聲調的概念,簡單來說,現代漢語普通話中的一聲和二聲屬于“平聲”,三聲和四聲屬于“仄聲”,詞譜中出現的“中”,則代表該處用字可以不計較讀音,用任何聲調的字都可以。由于古代漢語體系和現代漢語體系不完全相同,古代漢語中的“入聲”字在現代漢語普通話以及大部分北方方言中消失了,有些字就不適用以上的判斷方法。具體的韻律需要就固定的詞牌來定,一個詞牌的韻律是固定的,但是有可能出現兩種及以上不同的韻律。
2.2 利用宋詞韻律對詞牌編碼
對于宋詞中任意一個字的韻律都可以分為4類:平聲、仄聲、本仄可平和本平可仄。其中,本仄可平和本平可仄可以不計較一個字的讀音,因此統稱為“中聲”。對于任意一個詞牌,都可以得到它的韻律模板,以《滿江紅》為例,韻律如下:
中仄平平,平中仄、中平中仄。
平仄仄、仄平平仄,仄平中仄。
中仄中平平仄仄,中平中仄平平仄。
中中中、中仄仄平平,平平仄。
中中仄,平仄仄。平仄仄,平平仄。
仄平平中仄,仄平平仄。
中仄中平平仄仄,中平中仄平平仄。
中中中、中仄仄平平,平平仄。
有些詞牌會有變格的存在,變格往往使詞或曲在句式、平仄等方面發生增減變化,變格有時形成新的詞牌或曲牌。詩詞中完全符合“平仄兩兩交替”規則的聯句稱為“正格”,不完全符合的稱為“變格”。
本文收集了《唐宋詞格律》[17]中的152個詞牌的韻律, 只取其中所有的詞牌第一個出現的韻律作為隱寫韻律。因為每個詞牌中的字數不相同,所以每篇宋詞中“中平仄”三種韻律出現的頻率也不相同。具體如圖1所示(編號為詞牌在《唐宋詞格律》[15]中出現的順序)。
2.3 隱寫算法
2.3.1 隱寫流程圖 本文方法的主要思想是利用詞牌韻律中“中平仄”的出現頻率對2取余數后的值對詞牌進行編碼,不同的詞牌因為韻律中“中平仄”出現頻率的不同就對應了不同的編碼段,利用“中平仄”的奇偶性就可以找到秘密消息二進制編碼段與宋詞詞牌之間的映射關系。發送秘密消息時將秘密消息轉換為二進制,分段后根據秘密消息二進制段與詞牌編碼進行匹配,就可以搜索到編碼與其相同的宋詞詞牌集合,隨機選擇該詞牌集合中的一個詞牌下的一首宋詞,將所有的二進制段都匹配成功以后可以得到一個包含全部被選宋詞的序列,通過公共信道展示該序列中的宋詞即可供接收方提取秘密消息,隱寫流程如圖2所示。
2.3.2 隱寫過程 預處理時統計詞牌韻律中“中平仄”的個數對2取余數得到每個詞牌可以代表的二進制編碼,將其組成詞牌庫D。生成一個空的宋詞序列L,用來存放搜索獲得的宋詞。
3 實驗
本文選取的詞牌和韻律為《唐宋詞格律》[17]中的全部詞牌及部分韻律。全本共包含了152個詞牌,對于所有的詞牌只選取其第一個出現的韻律。經過統計,在常見的152個詞牌中,每個編碼的詞牌個數如圖3所示。
假設發送的秘密消息為“你好”,其Unicode碼對應二進制為0100111101100000 0101100101111101,因其位數不是3的整倍數,末尾補“0”變為0100111101100000 01011001011111010,按照每3 bits為一段的分段規則將其分段,得到二進制子串序列010,011,110,110,000,001,011,001,011,111,010。根據二進制子串搜索出編碼與其相同的詞牌集合,從每個詞牌集合中隨機選取一個詞牌,得到最終的詞牌集合{玉蝴蝶,朝中措,南歌子,少年游,臨江仙,鷓鴣天,行香子,金人捧露盤,雪梅香,六州歌頭,傷春怨},根據詞牌集合選取每個詞牌下的一首宋詞發送到公共信道、供接收方提取秘密消息,如網頁,微信公眾號等。
接收方首先將公共信道展示的宋詞按照順序添加到宋詞序列,然后按順序獲取宋詞序列中的詞牌組成新的詞牌序列{玉蝴蝶,朝中措,南歌子,少年游,臨江仙,鷓鴣天,行香子,金人捧露盤,雪梅香,六州歌頭,傷春怨}。根據每個詞牌中“中平仄”的奇偶性對詞牌進行編碼,得到編碼序列{010,011,110,110,000,001,011,001,011,111,010},進而得到有補“0”位的二進制秘密消息010011110110000001011001011111010,因為秘密消息轉換二進制使用的是Unicode碼,所以二進制秘密消息的位數應為16的整倍數,去掉補“0”位得到二進制秘密消息01001111011000000101100101111101,對其做解碼操作得到秘密消息“你好”。
4 性能分析
(1) 隱寫成功率。宋詞詞牌的數量多達1 000多個,有些詞牌的韻律還存在變格的情況導致“中平仄”的奇偶性發生變化,統計分析也證明了對于每一個3位的編碼段都存在足夠多的詞牌。因此,基于宋詞韻律的隱寫方法隱寫成功率為100%。
(2) 隱藏容量。因為利用的是宋詞韻律中“中平仄”出現頻率的奇偶性,所以每個詞牌可以隱藏3 bits秘密消息,隱藏容量為3 bits/詞牌。
(3) 安全性。由搜索得到的宋詞與原始秘密消息無任何關聯,并且是使用原始的宋詞進行隱寫,沒有生成宋詞,因此在可讀性上要遠超生成的宋詞。因為沒有對宋詞文本進行更改,所以語義檢測和統計檢測都無法檢測到秘密消息的存在,安全性高。
(4) 魯棒性。該方法具有良好的魯棒性,因為宋詞詞牌的特殊性,一旦詞牌確定,其韻律就被確定,并且詞牌的數量是固定的,無法隨便生成新的詞牌,即使修改宋詞文本的內容,也需要符合韻律規則,不會影響秘密消息的提取。
5 方法對比
目前文本隱寫主要分為修改載體和無載體的方法,其中修改載體法可以分為不基于語義的和基于語義的方法,無載體隱寫可分為生成法和檢索法。
文獻[4]中的SSE方法是一種不基于語義的修改載體法,通過修改字體的繁簡體進行隱寫,當文章中的文字無法進行修改時會導致嵌入失敗,隱藏容量為1 bit一字。此方法會導致同一個字在同一篇文章中出現不同的繁簡體,很容易被懷疑,因此安全性低,并且對文本進行“繁簡體轉換”操作就可以破壞其隱藏的秘密消息,魯棒性差。
文獻[9]是一種基于語義的修改載體法,通過修改句子中“的”的個數進行隱寫,當文章句子中沒有可以修改的“的”時嵌入失敗,隱藏容量為1 bit一句。因修改后的載體與原載體差別不明顯,所以安全性要比SSE方法[4]高,但通過統計分析仍能發現其進行了秘密消息的隱寫,而且進行句式變換就可能導致秘密消息丟失,魯棒性差。
文獻[10]和文獻[12]屬于生成法,都是利用宋詞模板和字典庫生成新的宋詞來隱藏秘密消息,當宋詞模板與秘密消息的二進制無法匹配時嵌入失敗,隱藏容量因方法不同而不同,文獻[10]的隱藏容量為1.32 bits/字節,文獻[12]的隱藏容量為1.6~2.3 bits/字節。這兩種方法生成的宋詞雖然符合宋詞模板的韻律,但是用詞僵硬,可讀性差,很容易被懷疑,因此安全性不高。一旦內容被修改,就會導致秘密消息提取失敗,魯棒性差。
本文提出的方法屬于檢索法,通過利用詞牌中“中平仄”出現頻率的奇偶性進行隱寫,未對載體進行修改,隱藏容量為3 bits/詞牌。利用已有的宋詞作為載密文本,可讀性好,不會被懷疑,安全性高。即使修改了文本內容也不會對秘密消息的提取造成影響,魯棒性強。
本文的方法與其他方法的對比情況如表1所示。
6 結論
本文利用宋詞韻律中“中平仄”出現頻率的奇偶性實現了一種無載體文本隱寫方法。通過詞牌韻律中“中平仄”出現頻率的奇偶性對詞牌進行編碼,并通過搜索的方式找出載密宋詞。與現有方法相比具有隱寫成功率高,安全性好,魯棒性強,不需要詞典庫的特點。下一步的研究方向著重提高方法的隱藏容量,如利用分闕或分句的方式,或者是韻律之間的組合關系,或者將待選文本擴大到唐詩,楚辭和現代詩歌從而提高隱藏容量。
參考文獻
[1]吳國華,龔禮春,袁理鋒,等.中文文本信息隱藏研究進展[J].通信學報,2019,40(9):145-156.
[2]譚瑛.基于文本排版格式的信息隱藏方法比較研究[J].計算機與現代化,2013(6):52-56.
[3]MALIK A, SIKKA G, VERMA H K. A high capacity text steganography scheme based on huffman compression and color coding[J]. Journal of Information and Optimization Sciences,2017,38(5):647-664.
[4]孫新梅,孟朋,黃劉生.基于字體的中文信息隱藏算法[J].計算機工程與設計,2013,34(9):3063-3067.
[5]戴林洪.一種基于CSS屬性符號標記的信息隱藏技術[J].信息與電腦(理論版),2019(15):43-44+47.
[6]崔光明,洪星,袁翔,等.基于不可見字符替換的信息隱藏方法研究[J].計算機應用與軟件,2016,33(4):277-280.
[7]MURPHY B, VOGEL C. The syntax of concealment: Reliable methods for plain text information hiding[C]// 9th Conference on Security, Steganigraphy, and Watermarking of Multimedia Contents, San Jose, 2007.
[8]甘燦,孫星明,劉玉玲,等.一種改進的基于同義詞替換的中文文本信息隱藏方法[J].東南大學學報(自然科學版),2007(S1):137-140.
[9]趙敏之,孫星明,向華政.基于虛詞變換的自然語言信息隱藏算法研究[J].計算機工程與應用,2006(3):158-160.
[10] 余振山,黃劉生,陳志立,等.用宋詞實現高嵌入率文本信息隱藏[J].中文信息學報,2009,23(4):55-62.
[11] 屈琪鋒,劉彥辰,王箭,等.基于句式控制的宋詞載體文本信息隱藏技術研究[J].計算機與現代化,2017(8):91-97.
[12] 劉彥辰,王箭,屈琪鋒.混合加密的宋詞載體文本信息隱藏技術[J].計算機技術與發展,2018,28(1):138-143.
[13] WU N, SHANG P L, FAN J, et al. Research on coverless text steganography based on single Bit Rules[J]. Journal of Physics: Conference Series. 2019, 1237(2) :022077.
[14] 于翔美,王開西.基于漢字筆畫編碼矩陣的文本隱寫方法[J].青島大學學報(自然科學版),2019,32(2):43-47+54.
[15] 王建業,郭振波,王開西.基于漢字數學表達式的無載體文本隱寫方法[J].青島大學學報(自然科學版),2019,32(1):81-86.
[16] 白璐.基于“唐詩宋詞”文本為載體的信息隱藏技術[J].計算機產品與流通,2018(6):93.
[17] 龍榆生.唐宋詞格律[M].上海:上海古籍出版社,2010.