1. 引言
随着互联网的发展,电子商务和电子政务随之兴起,重要文件资料、经济合同、电子发票等更多文本图像需要网络传送。这些文件一旦出现恶意篡改而无法证明真伪,就会造成严重后果。因此,研究文本图像认证方法,对电子政务和电子商务具有重要作用 [1] [2] 。文本图像特点:前后景区域对比鲜明,隐藏噪声易于显现,隐藏冗余非常有限,所以在文本图像中隐藏信息的难度较大 [3] [4] 。脆弱水印技术,由于其极容易被破坏的特性,非常适合用于图像内容的认证,可以有效检测篡改和篡改定位。文献 [5] 提出利用混沌算法将水印嵌入的最不重要像素块中,视觉质量比较好,但是定位能力比较差;文献 [6] 将水印嵌入文本空白处,定位效果比较好,但是视觉效果不理想。本文提出一种基于Hash函数的脆弱水印算法,利用Hash函数对输入值的高敏感性,来实现脆弱水印在文本图像的嵌入及篡改定位。
2. Hash函数
Hash函数在现代密码学中起着重要作用。其有主要性质:1) 易计算:对于任意给定的消息,容易计算其哈希值;2) 压缩性:任意长度的数据,算出的摘要长度固定;3) 敏感性:对数据进行任何改动,甚至只修改1个字节,所得到的摘要会有很大区别;4) 抗碰撞性:对于给定的消息M1,要发现另一个消息M2,满足H(M1) = H(M2)在计算上是不可行的;找一对不同的消息M1,M2,使H(M1) = H(M2)在计算上是不可行的。
Hash函数主要有MDx系列和SHA系列。MDx系列包括MD5、HAVAL、RIPEMD一128等;SHA系列包括SHA0、SHA1、SHA256等。MD5和SHAl应用最广,MD5产生的摘要信息为128位,SHA产生的摘要信息为160位。
单向散列算法,即信息-摘要算法(Message-Digest Algorithm 5, MD5),在20世纪90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Rbnald L. Rivest开发,经MD2、MD3和MD4发展而来。MD5以512位分组处理输入文本,每个分组又划分为16个32位子分组。算法的输出由4个32位分组组成,级联成一个128位散列值 [4] 。虽然2004年王小云教授在国际密码学会议公布了MD系列算法的破解,但在一般的应用场合,可以认为MD5算法是足够安全的。MD5有良好的压缩性和抗碰撞性等,通过对一段信息产生信息摘要以保证信息的安全性。
MD5摘要生成流程如图1。
第一步填充:若输入信息长度(bit)对512求余的结果不等于448,则需要填充。填充一个1和n个0,使得求余结果等于448。填充完后,信息长度为N × 512 + 448;
第二步记录:用64位来存储填充前信息长度。这样信息长度就变为N × 512 + 448 + 64 = (N + 1) × 512位。
第三步装入:装入标准幻数,物理顺序是A = (01234567)16,B = (89ABCDEF)16,C = (FEDCBA98)16,D = (76543210)16。
第四步循环:循环运算,循环次数是分组的个数(N + 1) [7] [8] [9] 。
3. 水印算法的设计及实现
3.1. 水印的生成与嵌入
3.1.1. 水印生成
1) 原始文本图像分块:分成3 m × 3 n大小的块,每块标记为Ai,即每块中含有m × n个3 × 3的小块;
2) 可翻转像素点确定:根据MinWu提出的可翻转像素准则 [10] ,统计每块中可翻转像素点以及不可翻转像素点;
3) Hash摘要生成:将每块中不可翻转像素作为MD5算法的输入,生成长度为L的二值序列,作为水印Wi;
4) 将水印Wi加密保存:用logistic混沌生成混沌序列W1,Wi与W1异或生成加密水印。存储Hash摘要要比存储原始文本图像更有效。
以分块A1为例,MD5摘要生成如表1所示。
3.1.2. 水印的嵌入
1) 将原始文本图像分成3 m × 3 n大小的分块,每块标记为Ai;
2) 用logistic混沌映射生成一个混沌序列W2,用W2来选定与Ai相对应的块Bi;
3) 将水印信息Wi嵌入到Ai中对应的可翻转像素中,即得到嵌入水印的文本图像。
用混沌序列指引水印嵌入块,保密水印的嵌入位置,提高水印的抗攻击能力 [11] 。对可翻转像素进行翻转,对图像的视觉影响很小,所以将水印嵌入到可翻转像素中的视觉隐蔽性很高 [10] 。在保证图像视觉质量的前提下,将水印均匀的嵌入到每个分块中,实现水印的脆弱性 [12] 。这样含水印图像如果遭到恶意篡改,
就会导致水印发生相应的变化,根据水印的变化可以确定篡改位置。
水印嵌入流程如图2所示。
3.2. 水印提取与篡改检测
3.2.1. 水印提取
1) 把待检测文本图像分成3 m × 3 n大小的分块;
2) 用logistic混沌映射确定分块Bi';
3) 从映射块Bi´中可翻转像素点提取Wi'。
3.2.2. 水印篡改检测
1) 篡改检测:可以通过计算提取水印和原始水印的归一化系数(NC)判断图像是否被篡改,NC越接近于1,说明提取的水印与原始水印越接近。理论上,当NC为1时,图像未被篡改,当NC不为1时,说明图像被篡改。
。
2) 篡改定位:如果Wi ≠ Wi'则A_flag(x, y) = 1,可以判定图像被篡改;如果Wi = Wi',则A_flag(x, y) = 0,则图像未被篡改,从而实现篡改区域的认证和定位。
水印提取与检测流程如图3所示。
4. 算法仿真
建立图像库,现存50幅文本图像。在MATLAB环境下,对该算法进行仿真实验,验证算法的有效性。
4.1. 不可见性
图4为原始文本图像示例。图5为对应嵌入水印的文本图像示例。对50幅文本图像进行仿真,视觉

Figure 2. Watermark embedding flow diagram
图2. 水印嵌入流程框图

Figure 3. Watermark extraction flow diagram
图3. 水印提取流程框图


(a)(b) (c)
Figure 4. Watermark extraction flow diagram: (a) Text; (b) Medical documents; (c) Electronic invoice
图4. 水印提取流程框图:(a)文字文本;(b) 医学单据;(c) 电子发票


(a)(b) (c)
Figure 5. Examples of watermarked images: (a) Watermarked text; (b) Watermarked medical documents; (c) Watermarked electronic invoice
图5. 含水印图像示例:(a) 含水印文字文本;(b) 含水印医学单据;(c) 含水印电子发票
不可见性良好。客观评定用峰值信噪比PSNR,其值越高,不可见性越好。它的临界值一般取为30 dB,峰值信噪比超过30 dB,就说明含水印的图像的透明性较好。50幅文本图像的PSNR都在45 dB以上,从而证明该算法有良好的不可见性。在含水印图像中提取水印信息并计算对应的归一化系数,NC及PSNR如表2所示。
4.2. 篡改定位
对含水印文本图像进行局部的篡改。图5(a)第6行中下午篡改为上午,第15行中静音改为震动;图5(b)第3行数据27.67篡改为45.36,第10行数据0.95改为3.08;图5(c)将单价2480改为4560,将合计金额2180篡改为4260。篡改定位仿真示例如图6所示。计算每种篡改图像的归一化系数、虚检率及漏检率,如表3所示。
仿真实验结果表明,该算法具有很好的视觉不可见性,同时对水印图像的篡改具有很高的敏感性,可以鉴别文本图像的正确性和完整性。

Table 3. Pfa and Pfr of tampering and positioning
表3. 篡改定位虚检率及漏检率

Figure 6. Examples of tampering and positioning
图6. 篡改定位示例
5. 结束语
本文提出了一种针对于文本图像认证的脆弱水印算法。通过利用Hash函数对输入值的高敏感性,来实现脆弱水印在文本图像的嵌入及篡改定位。通过将文本图像分块,然后计算出每个块中不可翻转像素和可翻转像素,然后将不可翻转像素利用Hash函数的MD5算法加密生成含有图像内容的水印信息,然后将其嵌入到不可翻转像素中就得到了嵌入水印的文本图像,此算法通过实验证明有很好的水印不可见性和篡改定位能力。
致谢
在此感谢导师的指导和帮助,在我有问题不能解答的时候对我细心的指导,也感谢实验室同学和朋友的帮助,在我遇到困难的时候帮助我解决问题并给予关心,并对给予转载和引用权的资料、图片、文献、研究思想和设想的所有者,表示感谢。