潘晓勇 王龙
摘要:文章针对利用格式化文本进行数据隐藏较为困难的问题,提出了一种基于RTF文档中控制命令字符对大小写不敏感进行编码而达到数据隐藏目的的数据隐藏方法。首先,搜素RTF文档中所有控制命令字符;其次,按照对控制命令字符第一个字母和前两个字母大写分别编码成“0”和“l”的规则进行编码;最后,按此规则将密文信息按位进行编码并写入RTF文档;提取密文的解码过程按规则反向进行。该方法不改变原文档大小,编码简单,实现方便。
关键词:数据隐藏;加密;RTF;编码
随着互联网的发展和互联网应用的日益增多,互联网在人们生活中的作用越来越强,我们的工作、学习和生活的各个方面都被互联网所渗透。在这样一个互联网无处不在的环境下,我们有意无意地向互联网或互联网上的设备或者人提供者各种各样的数据,各种各样的个人信息。这些信息可能包括上网账号、密码、身高、体重、年龄,性别等个人信息,也可能包括家庭、朋友、同学、同事、所在单位等社交信息。这么多私密信息的传送势必带来或多或少的信息安全问题,私密信息的泄露或非法信息的传递都属于信息安全的范畴。整个互联网发展到今天,和现代加密技术的发展是密不可分的,几乎每一次加密技术的重大研究成果出现都会立刻被应用到互联网中来,被用来保证互联网的信息安全。
信息隐藏技术是信息安全的一个重要分支,在人们的互联网生活以及日常生活中扮演着重要的作用。它也随着这些年信息安全方面的研究和互联网应用的发展受到越来越多人的重视。所谓的信息隐藏技术,更确切地来说应该称为信息伪装技术,是将被隐藏的敏感信息隐藏于另一份非机密的信息载体中。信息隐藏技术的载体可以是图片、视音频、文档等。信息隐藏要尽量减少载体变化,特别是可被人直接感知的变化,比如外观、形状、颜色、大小或声音等,这些变化越小,越不容易引起人的警觉。同时,也要尽量向计算机隐藏这种变化,至少让计算机可以正确识别,而攻击者却不能轻易提取[l]。
在常用的信息隐藏技术中,视频、音频、图像和文档常被用来作为隐藏的载体。本文主要介绍了一种基于RTF文档的数据隐藏技术,所以在这里先列举几种常见的文档数据隐藏方法。常见文档数据隐藏方法有:利用文档中人眼对字符大小的微小变化不敏感而采用调整字符的大小进行编码来实现数据隐藏,利用文档中人眼对字符颜色的微小变化不敏感而采用微调字符颜色进行编码来实现数据隐藏,利用文档中人眼对标点符号左右是否有空格不敏感而通过在文档中标点符号左右添加空格来进行编码来实现数据隐藏[2]。本文提出了一种针对富文本格式(Rich Text Format,RTF)文档对格式控制命令字符大小写不敏感进行编码实现数据隐藏的技术。该方法不改变原始文档大小和呈现,完全不影响计算机显示和人的阅读。
1 隐藏算法
RTF是由美国微软公司开发的跨平台文档格式。大多数的文字处理软件都能读取和保存RTF文档,特别地,WINDOWS自带的“写字板”软件就可以直接读取和编辑RTF文档。
以如图1所示的一个RTF文档为例,在这篇RTF文档里,命令符用“\”加上命令控制字符的格式进行保存。比如:“\colortbl”表示颜色表,“\red255”表示“红色值为255”等。对于RTF文档编辑器来说,“\red255”和“\Red255”、“\REd255”是等价的,都被解释成“红色值为255”,即RTF丈档对命令格式控制字符大小写不敏感。
(\colortbl. \redl28\greenlOO\bluel62, \redl55\greenO\blue211. \red250\gr eenOkblue0;){\:#\generator Riched20 10.0.15063}
(\viewkind4\ucl\pard\sa200\s L276\slmultl\fO\fs22\lang2002
aff\Cf0f\cFO fffff\cfo f\CFO ffffff\cfo b\cfO\fs44 c\ul\fs22 d\ulnone\i e\iO\strikef\strikeO\fs144 g\par\fs22\par)
基于这个原则,可以将“\”后面跟一个大写字母的命令编码为0,将“\”后面跟两个大写字母的命令编码为1,来进行二进制编码。RTF文档中还存在“\”加其他非命令字符的情况,对非命令字符进行转换将影响文档的呈现,这种情况要排除。先建立一个RTF命令字典mdict0存储所有RTF文档命令,再进行加密运算。隐藏算法如下:(l)将待隐藏密文转换为“01”比特流,读取第一个比特位。(2)从头搜索RTF文件,比对命令字典mdict0,遇到“\”和命令字典mdict()中命令匹配字符,按“0”转换为命令第一个字符大写,“l”转换为命令第一、二个字符都大写的规则进行转换。(3)重复步骤(2)直至密文转换完毕。
以上面文档为例,将信息“01111110”隐藏后得到的RTF文档如图2所示。从中可以看到,密文和明文仅仅在某些命令的头两个字幕的大小写上有变化,对于其他内容,特别是文档的具体内容没有进行任何改变,文档的大小也没有发生变化,达到了隐藏真实信息的目的。并且,这种算法的编码过程非常简单,算法实现复杂度小,易于推广使用。
2解隐藏算法
接收方接收到了隐藏了密文信息的RTF文档后,进行解码处理。解隐藏算法如下:(1)从头扫描接收的RTF文档。(2)比对命令字典mdict(),按命令第一个字符大写转换为比特“0”,命令第一、二個字符大写转换为比特“1”的规则进行解码。(3)重复步骤(2)直至文档结束。(4)将解码后的“0”“l”比特流生成为解密文件。不难看出,这种算法的解隐藏非常简单,使用起来很方便。
3分析
上述算法可以达到RTF中每个命令符号隐藏一个比特信息的隐藏容量。为进一步提高隐藏容量,可以尝试一个命令中更改3个大写字符来隐藏两个甚至更多比特密文信息的方法。本文提出的方法所用的隐秘载体是公开的,通信的安全性完全依赖于对该方法本身的保密性,这就违背了Kerckhoffs原理[3]。解决这个问题的解决途径有两个:(l)对所传输的秘密信息进行加密,这样即使信息被截获,只要没有正确密钥第三方就无法破译。(2)隐藏时用一个密钥控制隐藏过程,如利用长度为L的二进制随机序列K作为密钥,双方同时持有该密钥。隐藏时,密文H的某一位信息H (I) K(I%L)为1进行大写转换,为0不转换。这样检测者必须知道密钥K才能解码,提高了传输的安全性。为防止RTF被更改,对密文信息先进行纠错交织编码后再进行信息隐藏,接收端解码后再解交织和解纠错。当解隐藏误码率较低时,能得到完全正确的有效密文信息。
4结语
本文提出了一种基于RTF文档的信息隐藏的算法。由于算法利用RTF文档中命令控制符的大写个数来代替相应的秘闻“0”“1”比特流,因此,在视觉效果上RTF文档的呈现没有任何改变,并且RTF文档的文件大小也没有任何变化。因此很难引起检测者的怀疑。这种算法中,一个RTF文档命令控制符可以隐藏一个比特的信息,而RTF文档中的命令控制符是很多的,因此隐藏容量可以达到比较好的水平;同时这种算法的编解码过程非常简单,因此算法实现复杂度小,易于推广使用;另外,由于这种方法解码过程并不需要原始的文档提供任何位置参考,因此使用方便。
[参考文献]
[1]张松,冯祺.通信信息隐藏技术研究[J]舰船电子工程,2016 (10):11-15.
[2]谭瑛.基于文本排版格式的信息隐藏方法比较研究[J]计算机与现代化,2013 (6):52-56
[3]孙权.加密算法安全强度及发展趋势分析[J]软件产业与工程,2016(3):29-32,51