基于宋词韵律的无载体文本隐写方法
2021-09-10邹孜逸王开西
邹孜逸 王开西
摘要:针对目前利用宋词进行生成式隐写方法词典库过大,载密文本安全性不高和隐写成功率低的问题,提出了一种利用宋词韵律中“中平仄”出现频率的奇偶性进行检索的无载体文本隐写方法。与现有利用宋词进行信息隐写的方法相比,该方法不需要建立庞大的词典库,载密文本也不会出现语义问题和连贯性问题,提高了安全性和隐写成功率,隐写成功率为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.