一种以文本内容为载体的信息隐藏技术*

2010-06-13 11:32钟尚平
微处理机 2010年3期
关键词:字符秘密载体

张 浩,钟尚平

(福州大学数学与计算机科学学院,福州350108)

1 背景概述

信息隐藏是将有意义的信息隐藏在另一个载体信息中得到隐蔽载体,未授权用户不知道一个普通信息中是否隐藏了其他信息,即使知道也难以提取或去除隐藏的信息[1]。所用的载体可以是文字、图像、声音及视频等。当前使用和研究的信息隐藏技术,多以多媒体数据为载体。其具有很大的冗余性,隐藏信息后对多媒体自身的影响很小;而且由于人眼或人耳的分辨能力有限,使得隐藏信息完全不被察觉[1]。但多媒体、图像等信息的使用范围具有一定的局限性,文本的应用使其具有显而易见的广泛性。造字法字库的修改,不利于信息的传递。文中将重点讨论以文本内容为载体的隐藏技术。

2 以文本内容为载体的隐藏信息技术

2.1 主要分类[2]

插入法:在文本内容载体中寻找被文本软件忽略或不显示的文件位置,插入秘密信息后文件大小增加了,而不影响软件对文件的读取和人眼的识别。只增加数据,不修改现有内容。

替代法:修改文本内容载体中的某些信息,不显著影响载体对信息的表达或对用户阅读透明。

直接生成法:秘密信息直接生成文本载体信息,文本载体没有任何实际意义,它就是秘密信息本身。

2.2 现有的隐藏技术

采用符号的冗余编码[3],实现秘密信息在文本隐秘载体中的隐藏。将原来的字符编码,从一个字符对应一个编码转换为一个字符对应多个编码。根据编码的不同确定该字符当前携带的秘密信息。如A的编码原本为0x0041,现在定义为A字符对应三种编码:0x0041,0xE410,0xE411,三种编码分别表示不携带秘密信息、携带秘密信息的二进制为’0’、携带秘密信息的二进制为’1’。这种信息隐藏技术,必须使用特定的软件以实现文本的编辑和阅读,在通用的文本编辑和阅读软件中不能通用。

字归类与节归类法[4],采用相邻单词间字母个数或者相邻字符内码的大小关系来存储隐秘信息。由于文本内容载体是固定的,所以存储的秘密信息其实也是随载体而固定,必须采用其他方法如文本格式或颜色进行辅助,才能准确的隐藏信息。或者直接根据秘密信息直接生成一段文本信息。

中英文标点编码算法[5],根据中英文标点符号的相似性,结合标点前后插入的空格,实现信息的隐藏。标点符号在隐秘载体中个数有限且固定,每个标点只能隐藏1、2个比特的秘密信息,其隐藏容量小;依照隐秘信息插入情况,各个标点的显示细节仍能通过肉眼区分,隐蔽性较差。类似的方法还有插入制表符。

同义词隐藏算法[6],根据预先建立的同义词库,通过对隐秘载体中的同义词进行替换,而得到信息隐藏的空间。这种方式中,每个同义词的替换代表一个隐藏的比特,隐藏容量小;在提取隐秘信息时,必须提供隐秘载体的原文,不能实现盲隐藏。

以文本内容为载体的信息隐藏技术,优点在于通用性依赖于文字信息,只要有文字的地方都能隐藏信息,通用性极强;安全性也依赖于文字信息本身,不受文件格式影响。已有的各类算法主要存在的缺点是透明性差和隐藏容量小。理论上相同的技术中,透明性和隐藏容量呈反比,即透明性降低则隐藏容量提升;透明性提高则隐藏容量减少。本设计提出一种新的以文本内容为载体的信息隐藏技术,不仅在透明性上进行了提升,同时增大了隐藏容量。

3 插入透明字符的信息隐藏

3.1 几个定义[7]

为了便于描述,引入几个定义。

秘密信息:任何可以通过二进制比特串表示的,需要隐藏在文本内容中进行传输的数据信息。

文本内容载体:任何只包含字符编码标准中正常可见字符的文本内容,并用该文本内容来隐藏数据进行传输。在信息隐藏技术中,通称为隐秘载体。

隐秘对象:将秘密信息重新编码后,嵌入到文本内容载体中,而得到的新文本内容。

3.2 编码知识

ANSI编码和Unicode编码均可采用windows的记事本软件进行相互转换,通过UltaEdit工具可直接查看各种编码的二进制表示。ANSI中以8bit表示ASCII码,Unicode则统一使用16bit。这两种编码均可表示216个字符,共计217(128KB)个字节。这些编码数字以整数形式固定下来,数字即使发生1位的变化,也会导致相关的文本处理程序不能正确表示出原始文字,引起文字错误,所以编码替换或修改是不可能的。换个角度采用插入方式,这些字符并没有完全在编码中被使用,而是预留了大量的字符,实验证明这些字符在各类文本文档中均不显示,这类字符可作为存储信息的隐蔽信道。例如:Unicode编码0xE4C6,在ANSI标准中编码0x40A1,该字符在记事本、Adobe Acrobat、OFFICE等文本软件中均不显示。由于ANSI编码标准是Windows预设标准,以ANSI为例进行描述隐藏方法,与基于Unicode编码标准的实现基本相同。

3.3 实现步骤

主要流程如图1所示,分为5个步骤:

图1 主要流程

(1)定义预留编码集合,在常用编码库中选择不可见字符编码的集合,假设集合中元素个数为L,L是2的r次幂;

(2)定义L进制编码,根据L的值来定义L进制编码;

(3)定义L进制编码到预留编码集合的双射函数,L个L进制编码和预留编码集合中的L个预留编码实现一一对应;

(4)定义字符嵌入方法,根据实际应用环境和要求,选择字符嵌入位置和方法;

(5)秘密信息嵌入与提取,根据自定义的预留编码集合、L进制编码、L进制编码和预留编码集合的双射关系、字符嵌入方法,实现在隐秘载体中隐藏秘密信息,或者从隐秘对象中获取秘密信息。

该技术遵循Kerckhoffs原则,双射关系f、预留编码集合、嵌入方法共同组成隐藏密钥K,构成对称隐藏算法。

3.4 具体实现与实例说明

3.4.1 定义预留编码集合

在ANSI编码标准所有的216个编码中,筛选出不同文本软件中不可见字符编码的交集,剔除特殊用途的不可见编码。通常一种文本软件中的不可见字符编码,在其他文本软件中具有相同的不可见显示特性,所以可操作性较强。将ANSI编码标准中的不可见字符编码,转换为Unicode编码格式后,通常仍具有相同的不可见显示特性。以ANSI编码标准为例,从ANSI编码中筛选了1024个不可见字符编码,并为每个编码分配一个序号,构成预留编码集合。

如图2所示,预留编码集合中,所有预留编码并无规律,在建立预留编码集合的同时为每个预留编码分配一个整数型序号,以便检索和标识。

图2 L进制编码和预留编码集合

3.4.2 定义L进制编码

预留编码集合基数为1024,是2的r=10次幂。建立L进制编码,采用r位比特串进行1024进制编码。如图2所示,L进制编码采用整数和二进制编码两种方式表示。

3.4.3 定义双射函数

L进制编码的整数表示到预留编码集合的整数型序号的双射函数可任意选择,以选择f(x)=x函数为例,其逆函数 f-1(x)=x。

3.4.4 定义字符嵌入方法

在文本内容中可选择的嵌入位置中有:单引号前后1个字符、双引号前后1个字符、其他标点后1个字符、段落后若干个字符、段首2个字符、文章结束后若干个字符等不显眼位置。具体位置选择,需根据实际情况选择。选择以下嵌入位置为例:

(1)逗号后1个字符、分号后1个字符、句号后1个字符。

(2)文章结束后若干个字符。

具体实现时还需注意:若位置(1)数量超过需要插入预留编码字符串的长度,则在剩余的位置中填充空格;若位置(1)数量小于需要嵌入预留编码字符串的长度,则在位置(2)中插入剩余的预留编码字符。

3.4.5 秘密信息的嵌入与提取过程

嵌入过程,如图3所示,首先秘密信息表示为比特串形式,以r(r=10)位为单位进行划分,转换为L进制编码串;根据双射函数f和预留编码集合,将L进制编码串映射为预留编码字符串;根据字符在文本内容中的嵌入方法,将预留编码字符串嵌入到信息载体中,形成隐秘对象,得到的隐秘对象就可以通过各种方式进行传输。

图3 秘密信息的嵌入与提取

秘密信息:“信息隐藏方法”

隐秘载体:“沿着荷塘,是一条曲折的小煤屑路。这是一条幽僻的路;白天也少人走,夜晚更加寂寞。荷塘四周,长着许多树,蓊蓊郁郁的。路的一旁,是些杨柳,和一些不知道名字的树。没有月光的晚上,这路上阴森森的,有些怕人。今晚却很好,虽然月光也还是淡淡的。”

秘密信息的ANSI编码串16进制表示为:D0 C5 CF A2 D2 FE B2 D8 B7 BD B7 A8

秘密信息的ANSI编码串2进制表示,以r位为单位进行划分得到的就是L进制二进制表示,$符号为分隔符,最后不足r位部分以0补足,括号中为补足的0:$1101000011$0001011100

$1111101000$1011010010$1111111010

$1100101101$1000101101$1110111101

$1011011110$101000(0000)

秘密信息的L进制编码整数表示:[835][92][1000][722][1018][813][557][957][734][640]

根据双射函数f计算每个L进制编码整数对应的预留编码集合的整数型序号。

秘密信息的预留编码集合的整数序号序列为:[835][92][1000][722][1018][813][557][957][734][640]

通过查找预留编码集合得出整数型序号对应的预留编码。

秘密信息的预留编码字符串的16进制表示:[ABE5][A19D][ADCE][AAD2][ADE0][ABCF][A68D][ADA3][AADE][A780],其中每16位表示一个字符,这里就有10个字符需要插入到隐秘载体中。

根据预留编码字符串在文本内容中嵌入的方法,在隐秘载体中找出嵌入位置。

插入后得到的隐秘对象:“沿着荷塘,是一条曲折的小煤屑路。这是一条幽僻的路;白天也少人走,夜晚更加寂寞。荷塘四周,长着许多树,蓊蓊郁郁的。路的一旁,是些杨柳,和一些不知道名字的树。没有月光的晚上,这路上阴森森的,有些怕人。今晚却很好,虽然月光也还是淡淡的。”

从隐秘对象中提取秘密信息是嵌入过程的逆过程:

从传输系统得到隐秘对象,根据字符在文本内容中的嵌入方法,从隐秘对象中分别提取出隐秘载体和预留编码字符串,根据预留编码集合和双射函数f-1,将预留编码字符串映射为L进制编码串,将L进制编码串转换为二进制比特串形式就是需要得到的秘密信息。

实现过程主要采用移位操作,r位L进制仍使用双字节表示,高位补零。L进制编码中,需r位对齐,尾部填充0;提取信息时要去除。

4 性能分析与特点

对照现有的以文本为载体的信息隐藏技术,提出的隐藏方法有以下特点:

(1)透明性与隐藏容量:用于存储秘密信息的编码,是ANSI编码或Unicode编码中的预留编码。这些编码不仅数量多(3k字节以上),而且完全不影响文本的正常显示。秘密信息隐藏前后的编码利用率高,本例中采用了16比特编码表示r比特信息。较强的透明性,也使得隐藏容量大,且不受隐秘载体内容多少的限制。

(2)安全性:本技术采用插入法,在文本内容中直接增加冗余空间。对文件格式的修改、文本排版的修改、以及文本内容在不同格式文件中的拷贝,都不会影响到隐秘信息,具有较强的安全性。

(3)鲁棒性:鲁棒性弱是基于文本载体的信息隐藏技术不可避免的问题。当文本内容中的不可见字符遭到删除或篡改攻击,都会影响到隐秘信息的恢复。该方法适合应用于实现易损水印来保护隐秘载体C,在特定条件下适合作为隐秘通道。

(4)通用性:本方法能以任何文本文件格式为载体,如.txt、.doc、.pdf等格式。即便有个别差异,只需要对不可见预留编码集合重新筛选。秘密信息可为任何类型数据,如各种格式的文本信息、图片信息、音视频信息等,只需转换为二进制编码进行插入即可。本方法具有很强的通用性和兼容性。

5 结束语

提出的信息隐藏方法,是以文本内容为载体,着眼于文字本身的编码,完全独立于文件格式之上。能够在任何文本文件格式中,在文本内容的数据中隐藏不限制大小和类型的秘密数据。可以提供一种易损的盲隐藏技术,其中未包含对秘密信息的加密,可通过其他加密算法加强。结合非对称加密算法,可实现文本内容的不可抵赖性和完整性,主要应用领域是电子签章。也可以在特定环境下,结合加密算法,用作隐蔽通道。本技术已申请国家发明专利。

[1]王丽娜,张焕国.信息隐藏技术与应用[M].武昌:武汉大学出版社,2003.

[2]徐迎晖.文本载体信息隐藏技术研究[D].北京:北京邮电大学,2006.

[3]刘东.以符号的冗余编码携带隐藏信息的文本数字水印技术[P]:中国:200410040307.0,2005-3-23.

[4]耿红琴.基于文本的信息隐藏技术研究[J].科学技术与工程,2007,7(6):1070 -1073.

[5]张学锋.基于文本载体的数字水印算法探究[J].计算机与现代化,2009(3):84-87.

[6]眭新光,罗慧.一种安全的基于文本的信息隐藏技术[J].计算机工程,2004,30(19):104 -105.

[7]戴跃伟.信息隐藏技术的理论与应用研究[D].南京:南京理工大学,2002.

猜你喜欢
字符秘密载体
创新举措强载体 为侨服务加速跑
坚持以活动为载体有效拓展港澳台海外统战工作
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
HBM电子称与西门子S7-200系列PLC自由口通讯
愿望树的秘密(二)
TiO_2包覆Al_2O_3载体的制备及表征
我心中的秘密
第十三章 进化的秘密!