读龙银香的《基于HTML标记的信息隐藏方法》笔记
HTML即超文本标识语言,它是用来构造超文本文件的工具语言。超文本文件是一种纯文本文件,由标记和数据两部分组成,数据即是文件中包含的能够在浏览器上显示出来的文字、图片和动画等多媒体次料,标记是用于控制数据显示格式和效果的、由浏览器解析执行的命令。
在超文本文件中隐藏信息有两种策略
1、 基于数据元素的信息隐藏,即将信息隐藏在数据元素中
其依赖于数据的类型是文字、图像、声音等而不同,如果元素类型是文本的话,则可应用基于普通纯文本的隐藏方法和数字水印技术,如格式替换法
2、 基于HTML的信息隐藏
HTML虽然是纯文本,但由于是程序指令,有固定的诸多语法规则和约束,不能随便照搬基于普通纯文本的隐藏方法,而是需要特殊考虑。如果能基于HTML标记隐藏信息,其隐蔽性将会比较好。
已提出的基于HTML的隐藏方法:
1、 在网页结束标记</html>后或者在每行的行尾插入空格或Tab键隐藏信息,插入一个空格代表0,插入一个Tab代表1.
原理:利用浏览器在解析HTML程序时会忽略掉行尾或HTML结束标记后的空白符号,从而不会影响浏览器的显示结果。
优点:可通过连续插入任意多个符号使得隐藏的容量可以任意大
缺点:每插入一个字节的信息,文件大小需增加8个字节。另外,虽然隐藏信息后的文件浏览的结果不会改变,用记事本这样的编辑软件打开也不容易看出差别,但是当文件以二进制格式打开时其多余的空格符号一览无遗,且经不起“网页减肥茶”之类软件的处理。
2、 修改标记名称字符的大小写,用大写表示1,小写表示0来隐藏信息。
如用大写标记名称<HTML>代表1,以小写的标记名称<html>代表0。这样,一个标记名称可隐藏1bit信息。可服了1的缺点,具有较好的隐蔽性和抗攻击性,但隐藏容量较小。
本文提出的几种新的HTML标记的信息隐藏方法
1、 修改标记属性名称的大小写来隐藏信息,因为标记属性名称对大小写不敏感。
如,用标记名称字母全部大写代表1,全部小写代表0。这样一个属性名称可隐藏1bit信息。
2、 修改属性值字符串的大小写来隐藏信息,因为属性值字符串对大小写不敏感。
如,用属性字母的大写代表1,小写代表0,
3、将属性值外面的双引号“”,单引号‘’替换来隐藏信息,因属性值用单引号和用双引号括起来是等价的。如,用双引号代表1,单引号代表0
4、在符号“>”的左边插入空格来隐藏信息,因为符号“>”的一个或多个空格会被浏览器忽略。如,用“>”左边有空格代表1,无空格代表0
5、调整标记名称和标记属性之间的空格或标记属性之间的空格数来隐藏信息,因符号之间的多个空格会被当成一个空格对待。如,用多个空格代表1,1个空格代表0。因此一个HTML标记有n个属性,则一个标记能隐藏n个bit的信息。
6、利用标记中属性赋值号“=”左右添加空格来隐藏信息。以左右都无空格表示00,左无右有空格表示01,左有右无空格表示10,左右均有空格表示11,则一个属性赋值可隐藏2bit信息。
7、利用属性左引号“后添加空格和右引号前添加空格来隐藏信息。以空格代表1,无空格代表0。则,一结属性值引号可隐藏2bit信息。
8、利用有些标记的结束标记可以省略来隐藏信息。如:<P>(抱页标记)、<L1>(清单项目标记)、<TD>(表格单元格标记)、<DT>(定义条目标记)、<DD>(定义内容标记)、<Form>、<Input>等。则一结这样的标记可隐藏1bit信息。
9、某空元素标记具有两种等价格式,如标记<BR>可以写成<BR/>。我们可以用一种格式代表1,另一种格式代表0。这样的标记还有<HR>=<HR/>,<IMG>=<IMG/>等。则一结这样的标记可隐藏1bit信息。
给出两个定义:
1、 算法隐藏比:
指应用该算法的隐藏容量C与载体网页文件大小F的比值,即C/F.
2、 综合隐藏比:
指综合应用多种算法后隐藏容量C’ 与载体网页文件大小F的比值,即C’/F/
算法实现
1) 选择载体HTML文件
2) 输入待隐藏信息
3) 选择隐藏方法
4) 计算该隐藏方法的容量
5) 如果隐藏容量>待隐藏的信息量+16,则进入下一步开始隐藏,否则显示提示信息,要求选择其它隐藏方法。
6) 将等隐藏的数据长度转换成16比特长的2进制数,将等隐藏的信息转 换成2进制表示,形成待隐藏的数据帧,帧的格式是:数据长度(16bit)+数据。
7) 找到下一个隐藏位置,按顺序从待隐藏数据帧中提取1bit或2bit(对于本文方法6,一次可隐藏2bit),按指定的方法进行隐藏。
8) 重复第7步,直到全部bit隐藏完为止。
从HTML网页文件中提取隐藏的信息的过程正好相反。
实验结果:
隐藏性较好,若能综合运用各种隐藏方法,则可使隐藏比起码达到千分之十左右,即一个普通的10K字节大小的网页文件中可隐藏约100个字符。