信息隐藏技术在HTML标签中的应用

2011-01-29 02:26陈莉莉
苏州市职业大学学报 2011年3期
关键词:奇偶性空格首字母

陈莉莉

(苏州工业职业技术学院 信息工程系,江苏 苏州 215104)

1 研究现状及意义

信息隐藏是信息安全领域,一个新兴的也是非常重要的研究领域.信息隐藏技术是一种“隐匿秘密通信存在”的信息安全保护方式.在网络飞速发展的今天,信息隐藏技术的研究更具有现实性.它的应用范围包括:电子商务中的电子交易保护、版权保护、保密通信、拷贝控制和操作跟踪、签名和认证等各个方面[1].自从20世纪90年代以来,世界各地开始研究数字媒体信息隐藏技术,至今已有相当数量的研究成果问世.在网络飞速发展的今天,信息隐藏技术的研究更具有现实意义.在隐藏技术方面,由于图像、声音等数字载体自身具有信息冗余度高、隐藏容量大等特点,目前的研究也主要是利用图像、声音等载体来进行隐藏.不过,近年来人们也着手研究秘密信息在文字数据(如文本、超文本等)中的隐藏.

网页信息隐藏技术是将网页作为载体的信息隐藏,在其中加载秘密信息可以更方便地通过因特网进行传递.与图像、视频、音频信息隐藏方法相比,网页信息隐藏所用的算法截然不同.

HTML信息隐藏模型[2]可用图1来表示.待隐藏的信息M称为隐秘信息,它可以是秘密数据或版权信息,也可以是一个序列号;而公开信息H则称为载体信息,这里采用HTML文档.这种信息的隐藏过程一般由密钥来控制,即通过嵌入算法将秘密信息隐递,然后检测器利用提取算法及密钥从隐秘载体中检测/提取出藏于公开信息中的隐秘信息,而隐秘载体则通过Internet传递信息.

图1 基于HTML标签的网页信息隐藏模型

2 基于HTML标签信息隐藏方法的分析

网页信息隐藏技术是将信息隐藏到网页文件中,隐藏的信息与网页原始文件数据紧密结合,同时要求隐藏的信息不破坏原始文件的结构及质量,不使文件的表征内容的视觉特性产生异常[3].

基于HTML标签的网页信息隐藏方法主要归结为以下3种:

1) 基于不可见字符的方法:早在2001年,就有研究人员提出通过在每行行末加入不可见字符如Space键和Tab键,可以将信息隐藏在网页中而又不影响网页在浏览器中的显示效果,如已经商品化的网页信息隐藏软件Invisible Secret、Wbstego、FFencode[3]等都是利用这种方法来隐藏信息的.

2) 基于标记中字母大小写变化的方法:Zhao和Lu[4]提出了基于主成分分析的网页信息隐藏方案,他们首先使用主成分分析方法提取出网页的摘要信息,然后利用网页中标签的大小写无关字符插入隐藏信息.

3) 基于属性对顺序的方法:孙星明[5]等人提出了一种基于等价标记的网页信息隐藏算法.该方法将待隐藏的秘密信息转变为一个大整数,按照嵌入规则,采用等价标记置换原标记的方法将大整数隐藏在网页中.该算法没有增加网页文件的长度,能够隐藏较大的秘密信息,且具有较高的隐蔽性和安全性.

通过大量的实验,表1给出了基于不可见字符方法、标记大小写方法、属性对顺序的3种方法的性能参数,主要从隐蔽性和鲁棒性两方面对上述3种方法进行比较.

表1 现有网页信息隐藏技术优缺点分析

2.1 基于不可见字符和字母大小写的信息隐藏方法

常用的基于HTML标签的信息隐藏方法,比较适合隐藏量较少的情况,由于算法相对简单,所以比较容易遭到攻击和破解.因此,提出一种基于不可见字符和字母大小写相结合的信息隐藏方法.该方法是结合两种信息隐藏的思路而实现的,解决了目前已有的一些算法简单和信息隐藏量较少的问题.

2.1.1 算法思想

经过对HTML4.0的深入研究发现:标签、属性、属性值三者之间可有多个空格;右界定符“>”左边可增加若干空格;属性值引号前后可增加若干空格;标签、属性、属性值等字符不区分大小写.

本信息隐藏方法,主要是基于上述HTML的特点形成的.通过对已有的一些算法的分析,发现存在一些不足,因此对本算法有如下要求:保证HTML文档的显示效果不变;提高隐匿性;提高信息的隐藏量.

为了使对HTML文档的修改具有更好的隐匿性以及提取隐藏信息的便利性,主要选择标签名、属性名、属性值这些位置作为嵌入点来隐藏信息.因为HTML文档主要是由标签、属性和属性值组成的,这样可以充分利用这些标签和属性来增加信息隐藏的容量.

本文的隐藏算法主要是判断每个标签字符个数的奇偶性、属性字符个数的奇偶性和属性值字符个数奇偶性以及检测标签、属性和属性值首字母的大小写情况.由于检测的指标有两个,一个是字符个数的奇偶性,还有一个是嵌入点位置字符的首字母大小写,因此可以组合成4种情况.根据这个特点,以两个bit作为隐藏的最小单位,也就是说每个标签里可以隐藏2 bit的信息,每次隐藏的信息有以下4种情况:00,01,10,11.

根据隐藏对象的不同,可分成以下3种情况:①标签字符个数的奇偶性;②属性字符个数的奇偶性;③属性值字符个数奇偶性(如果属性值上有引号,引号也包含在内).

为了便于说明,设定以下函数:LetterSum(ch)用于统计上述3种情况的字符总数,函数IsCapital(ch)用于判断标签、属性或属性值的首字母是否大写.其中“ch”表示某一个标签、属性或属性值.

因此需检测以下信息:①上述3种情况的字符个数为奇数还是偶数.②标签、属性或属性值首字母是否大写.

根据前面的分析,约定隐藏信息的规则为

规则1:LetterSum(ch)为奇数,并且Is Capital(ch)为大写,可以隐藏00.

规则2:LetterSum(ch)为奇数,并且Is Capital(ch)为小写,可以隐藏01.

规则3:LetterSum(ch)为偶数,并且Is Capital(ch)为大写,可以隐藏10.

规则4:LetterSum(ch)为偶数,并且Is Capital(ch)为小写,可以隐藏11.

表达式为

式(1)—式(4)分别对应于上述的规则1—规则4.

2.1.2 算法描述

根据隐藏的bit信息分别为00、01、10、11四种情况,根据嵌入规则,需要针对上述4种情况作不同的处理.以隐藏00为例来描述本算法.

检测HTML文档中标签名、属性名、属性值位置字符个数的奇偶性和首字母大小写情况:

1)如果当前检测到的HTML标签或者属性、属性值满足式(1),即LetterSum(ch)%2=1 Is Capital(ch)=True,则完全符合隐藏规则,不需要作任何处理,就可以将00隐藏到嵌入点位置,因为式(1)就是隐藏00的条件.

2) 如果当前检测到的HTML标签或者属性、属性值满足LetterSum(ch)%2=1 Is Capital(ch)=False由于隐藏00的要求是式(1),所以只需要将标签、属性、属性值的首字母改成大写字母,便可以满足嵌入规则.

3) 如果当前检测到的HTML标签或者属性、属性值满足LetterSum(ch)%2=0 Is Capital(ch)=Talse由于隐藏00的要求是式(1),所以需要将改成奇数,也就是需要在合适的位置添加空格.而根据隐藏对象的不同,对以下3种情况进行讨论.

情况1:修改标签字符个数的奇偶性.在标签的右侧添加一个空格,如〈table〉改成〈table○〉(○表示增加的空格),这样既可以使其变成奇数,而且也不会改变页面在浏览器中的显示效果.

情况2:修改属性字符个数的奇偶性.在属性和“=”之间添加一个空格,这样便可以使其变成奇数.如〈table align=”center”〉改成〈table align○=”center”〉.

情况3:修改属性值字符个数奇偶性.如果属性值上有引号,引号也包含在内;如果属性值是数值,或者有多个属性值,则跳过该嵌入点.在属性值的右侧增加一个空格,这样便可以使LetterSum(ch)变成奇数.如〈table align=”center”〉改成〈table align=”center”○〉.

4) 如果当前检测到的HTML标签或者属性、属性值满足LetterSum(ch)%2=0 Is Capital(ch)=False.由于隐藏00的要求是式(1),即嵌入点位置的字符个数是奇数且首字母为大写字母,而当前检测的嵌入点位置的字符个数为偶数且首字母为小写字母,所以需要把嵌入点位置的字符个数变成奇数,且将首字母变成大写.因此需要参照上文2.1.2算法描述提到的2)和3)两个操作完成.

至于隐藏信息01、10、11,方法与此大体相同,不再赘述.

2.1.3 算法实施过程

一般而言,信息隐藏分为4个阶段:预处理阶段、嵌入阶段、传输阶段和提取阶段.为了使每个阶段都比较安全,所以必须在预处理阶段引入加密术中的加密算法.嵌入和提取流程如图2所示.

图2 嵌入和提取流程图

如果容量够的话,在嵌入之前,要复制1份纠错编码后的数据,即使得最后嵌入的数据是2份.在嵌入阶段,使用隐藏信息的算法;在传输阶段,进行隐蔽通信,从而使传输阶段也是安全的.所以这套信息隐藏的处理方案,将形成一个安全的体系,既能够隐藏秘密信息的内容,也能隐蔽通信的接收方和发送方,从而建立隐藏通信.

为了便于实施和描述嵌入规则,定义如下几个比较重要的函数.

1) 嵌入点选择函数FindPosition(P) 就是基于HTML文档特点构造的函数,用于寻找HTML文档中可隐藏信息的位置.从中提取隐藏信息准确方便的角度出发,约定:对于标签只提取起始标签作为嵌入点位置;如果属性值是数字,则跳过该位置.

2) 字符个数统计函数LetterSum(ch)用来统计每个嵌入点位置的字符的个数.

3) 判断字符首字母大小写函数IsCapital(ch)来判断嵌入点位置的首字母大小写情况.

4) 更改首字母大小写函数ChgCapital(ch),当通过FindPosition(P)函数找到嵌入点位置后,结合嵌入规则,在适当的时候利用ChgCapital(ch)更改首字母大小写.

5) SpaceSum(ch)函数用于计算嵌入点位置增加的空格.

6) 隐藏信息编码函数EnCode(I).

为了保证只有合法接收者能够提取到隐藏信息,可以根据安全性的需求选用经典的或目前广泛使用的加密技术对待隐藏信息进行加密处理.

实施的过程描述如下:

Step1:初始化.将HTML页面文档H中所有的非默认状态下的空格去除.特别是标签和属性之间的空格、属性和“=”之间的空格,以及属性值右侧的空格.初始化的目的是保证隐藏信息和提取信息的正确性.因此这一步至关重要,是实施嵌入规则的前提条件.

Step2:利用隐藏信息编码函数EnCode(I)对待隐藏信息进行编码,若编码后的长度大于嵌入点的最大数n-5(n表示最大嵌入点数)则报错.减去5的原因是,至少要预留5个嵌入点来隐藏结束标识位.

Step3:用FindPosition(P)函数找出HTML文档中所有可隐藏信息的嵌入点位置,得到位置序列T,即t1,t2,t3,…,tn.n为可嵌入位置的最大数.

Step4:从第一个嵌入位置开始,根据前面的嵌入规则的描述,对隐藏信息I'逐两位的进行隐藏.具体的嵌入方法,前面有详细的描述,不再赘述.

Step5:嵌入结束后,进行隐藏信息的结束标识位的处理.处理的方法是:把紧跟着最后一个隐藏信息位置后面的标签、属性或属性值的首字母和末字母全部改成大写.为了确保结束标识的准确性,将连续改变3个标签或属性、属性值的大小写.为了确保结束标识的隐蔽性,这3个被修改的标签或属性、属性值是一隔一地修改.之所以要进行结束标识位的处理,主要是为了能够进行隐藏信息的提取.

2.1.4 算法实现与应用

根据以上提出的嵌入算法,将一个比特流01100011嵌入到以下HTML代码中,图3是隐藏信息嵌入前后的HTML代码和预览结果.信息隐藏前后的浏览器预览效果如图4所示.

经实验发现信息隐藏前后的页面显示效果没有任何的改变,浏览器也没有报任何的错误.在使用记事本等软件打开标记HTML代码时,由于对标记、属性和属性值只是做了很小的改变,很不容易察觉异常,具有较好的隐蔽性.而且一般来讲,标记属性和标记属性值的修改比标记名称的修改较不容易引起注意.另外由于本算法是在HTML文档的标签、属性、属性值之间嵌入信息的,而标签、属性和属性值又是网页中使用频率最高的信息,因此本算法的信息隐藏容量较高.

3 结 论

本算法对现有的基于不可见字符的算法进行了改进,主要利用在合适的位置添加空格以及修改标签或者属性的大小写不影响网页的显示效果来隐藏信息.在本文中,通过给出具体的嵌入规则,经实例证实了本算法的可行性和较强的可操作性,保证HTML文档的显示效果不变的基础上.较强的可操作性的基础上能够顺利地隐藏给出的隐藏信息.

目前信息隐藏技术的研究主要还集中于图形图像、音频和普通文本上面,对基于网页的信息隐藏研究还很少,还处于起步的阶段,尽管本文提出的基于不可见字符和字母大小写的信息隐藏方法具有较好的隐蔽性和较大的信息隐藏容量,但仍有很多值得改进的地方.

[1] 张学锋.浅析数字水印在电子商务环境中的应用[J].计算机安全,2009(3):76-78.

[2] 王长征,刘建辉.基于网页标记的信息隐藏技术研究与实现[J].科技广场,2007(5):104-105.

[3] 胡岚,尤新刚.现有的超文本(HTML)信息隐藏技术分析[C]//全国第三届信息隐藏学术会议论文集.西安:西安电子科技大学出版社,2001:62-67.

[4] 姜楠,王健,杨义先.新的唯秘密载体信息隐藏分析方法[J].北京邮电大学学报:自然科学版,2006,29(2):1-4.

[5] 张彤,王育民.信息隐藏技术及其在信息安全中的应用[J].中兴通信,2002,8(2):42-45.

猜你喜欢
奇偶性空格首字母
函数的图象、单调性和奇偶性
趣填成语
空格填数
函数的单调性和奇偶性
你来补缺的数
函数的奇偶性常见形式及应用
例析函数奇偶性的应用
新目标英语八年级(上)Unit5 STEP BY STEP随堂通
新目标英语八年级(上)Unit4 STEP BY STEP随堂通
Unit 12 STEP BY STEP 随堂通