随着互联网的普及与信息媒体技术的发展,以二进制数为编码形式的逻辑媒体的复制和传播十分便捷,但存在的突出问题是如何确保在此过程中的安全性,所以寻找一种理想的安全防护方法十分关键.随着研究的深入,倍受学者亲睐的数字水印技术发展日趋成熟和完善[1].目前,在应用数字水印技术进行图像认证方面,国内外提出了各种各样的手段和方法[2].其中,文献[3]提出了一种图像自嵌入与自恢复的水印算法,不仅能检测和定位恶意篡改,而且能恢复被损坏的图像内容,但该算法并非完全可逆,不能完全恢复原始图像.文献[4]提出了一种基于水印的可逆图像认证方案,能够检测篡改且可以实现篡改定位;但该算法将认证水印直接嵌入到像素最不重要位,鲁棒性较差.文献[5]利用插值扩展和纠错编码,实现了一种能够定位篡改图像块的可逆图像认证方案;但纠错编码并不能完全保证水印提取的正确性.文献[6]将图像分块后进行压缩传感随机投影,并将投影值作为零水印注册保存,不仅不改变图像像素值,而且能够检测定位篡改;由于注册所需的零水印数据库容量有限,该算法具有一定的局限性.以上提出的一些图像认证算法虽然能够较好地利用水印技术进行图像的认证,但是却不能在提取水印后完全地对图像进行复原,但医学影像、法庭证据图片等具有特殊要求的影集资料,在使用时绝对不能有所变化[7-10].针对上述问题,本文在充分发挥可逆水印技术优良性能的基础上,提出了一种基于分块的可逆认证算法,将图像分为可逆块与不可逆块,不可逆块用来提取图像特征,可逆块则利用差值扩展算法嵌入自身块的特征和其他分块的特征信息,该算法不仅能精确恢复原始图像,还能够对恶意篡改攻击进行精确定位.1水印嵌入算法1.1可逆水印算法对嵌入水印的图像进行水印提取后,多数都不能精确地完全恢复图像[11-12],而借助于可逆水印算法,却不仅能够从含有水印的图像中提取水印,而且还可以对提取水印后的图像进行精确还原,因此该算法可以推广在精密图像等安全性要求较高的应用领域.算法步骤如下:(1)对于一对象素点的值,计算其平均值和差值l=x+y2,h=x-y(1)(2)计算新的差值h=2h+w(2)其中,w是为0或者是1的水印值.该过程把差值h向左移动一位的同时,把1bit的水印信息w嵌入了空缺出来的重要性最次的位上,该过程即为差数扩展.(3)按照下列公式修改该对象素点的象素值为x=l+h+12,y=l-h2(3)(4)对所有的象素对重复(1),(2)和(3),即可完成对图像的可逆水印嵌入.由于灰度图像的象素值都介于0和255之间,所以上述公式成立的条件是0l+h+12255,0l-h2255(4)图1子块象素排列图1.2可逆图像认证算法为方便起见,本文以灰度为256色灰度、分辨率为256256的图像为例,具体实现方法如下:1)将图像分为1024个88的互相不重叠的子块.各子块像素排列图如图1所示.2)对如图1所示的每一个子块进行下列条件的判断,如果象素对(b1,b10),(b19,b28),(b37,b46)和(b55,b64)都同时是能够进行二次差数扩展的,即进行一次差数扩展后,仍然能够进行第二次差数扩展,那么该块的标志设置为1,否则为0,即当该子块4个象素对中的任何一个象素对是不能进行二次差数扩展的.将所有子块的标志字组成1024个比特的密钥.3)将所有分块划分为2个部分,其中一部分是可以进行二次可逆数据嵌入的(标志字为1),不妨记该类子块的个数为M1;而另外一个部分则是不能进行可逆嵌入的(标志字为0),记其个数为M0.一般情形下,M1M0.4)对于可以进行可逆嵌入的子块,首先取各个子块的