简单信息隐藏技术的实现与讨论_第1页
简单信息隐藏技术的实现与讨论_第2页
简单信息隐藏技术的实现与讨论_第3页
简单信息隐藏技术的实现与讨论_第4页
简单信息隐藏技术的实现与讨论_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像的信息隐藏技术的实现与讨论1. 引言数字图像的信息隐藏技术是数字图像处理领域中最具挑战性、最为活跃的研究课题z-0本 文概述了数字图像的信息隐藏技术,并给出了一个新的基于彩色静止数字图像的信息隐藏算法。数字图像可分为静止图像和动态图像两种,后者一般称为视频图像。视频图像的每一帧均可 看作是一幅静止图像,但是这些静止图像z间并不是相互孤立的,而是存在时间轴上的相关性。 静止图像是像索(pixel)的集合,和邻像素点所对应的实际距离称为图像的空间分辨率。根据 像索颜色信息的不同,数字图像可分为二值图像、灰度图像以及彩色图像。数字图像的最终感受 者是人的眼睛,人眼感受到的两幅质量非常相同的数字图

2、像的像索值可能存在很人的差别。这样, 依赖于人的视觉系统(human visual system, hvs)的不完善性,就为数字图像的失真压缩和信 息隐藏提供了非常巨大的施展空间。信息隐藏9信息加密是不尽相同的,信息加密是隐藏信息的内容,而信息隐藏是隐藏信息的 存在性,信息隐藏比信息加密更为安全,因为它不容易引起攻击者的注意。2. 信息隐藏技术综述2. 1信息隐藏简介信息隐藏(information hiding),也称作数据隐藏(data hiding),或称作数字水卬(digital watermarking)o简单来讲,信息隐藏是指将某一信号(一般称z为签字信号,signature si

3、gnal ) 嵌入(embedding)另一信号(一般称z为主信号,host signal,或称z为掩护媒体,cover-media) 的过程,掩护媒体经嵌入信息后变成一个伪装媒体(stegano-media)o这一嵌入过程需要满足下 列条件:签字信号的不可感知性(imperceptibility).换句话讲,签字信号嵌入后,主信号的感 知特性没有明显的改变,签字信号被主信号隐藏了起来。签字信号的鲁棒性(robustness)。签字信号对主信号的各种失真变换,如失真信号压缩、 仿射变换、加噪、a/d或d/a转换等,以及各种恶意性攻击(malicious attack),都应体现出 一定的鲁棒性

4、。除非主信号的感知特性被明显的破坏,签字信号将很难被去除。一般来讲,签字信号的嵌入不增加主信号的存储空间和传输带宽。也就是说,签字信号嵌 入后,表而上很难觉察到信息的改变。信息隐藏的发展历史可以一宜追溯到匿形术(steganography) 的使用。匿形术一词来 源于古希腊文屮邙急藏的和图形两个词语的组合。虽然匿形术"与"密码术(cryptography) ” 都是致力于信息的保密技术,但是,两者的设计思想却完全不同。密码术主要通过设计加密技 术,使保密信息不可读,但是对于非授权者来讲,虽然他无法获知保密信息的具体内容,却能意 识到保密信息的存在。而匿形术则致力于通过设计粘

5、妙的方法,使得非授权者根本无从得知保 密信息的存在与否。相对于现代密码学来讲,信息隐藏的最大优势在于它并不限制对主信号的存 取和访问,而是致力于签字信号的安全保密性。2.2信息隐藏的关键技术信息隐藏技术的关键在于如何处理签字信号的鲁棒性、不可感知性、以及所嵌入的数据量这 三者之间的关系。判断信息隐藏算法优劣的一般衡量准则为:1) .对于主信号发生的部分失真,签字信号是否具备一定的鲁棒性。2) .对于有意或无意的窃取、干扰或去除操作,签字信号是否具备一定的抵抗能力,从而 保证隐藏信息的安全可靠和完整性。3) .签字信号的嵌入是否严重降低了主信号的感知效果。4) .数据嵌入量的大小。对于某一特定的

6、信息隐藏算法來讲,它不可能在上述的衡量准则下同时达到最优。显然,数 据的嵌入量越大,签字信号对原始主信号感知效果的影响也会越大;而签字信号的鲁棒性越好, 其不可感知性也会就随z降低,反z亦然。由于信息隐藏的应用领域十分宽广,不同的应用背景 対莫技术要求也不尽相同。因此,有必耍从不同的应川背景出发对信息隐藏技术进行分类,进而 分别研究它们的技术需求。根据应用背景的不同,信息隐藏技术大致可分为三类:(1) 版权保护(copyright protection)到口前为止,信息隐藏技术的绝大部分研究成果都是在这一应用领域中取得的。信息隐藏技 术在应用于版权保护时,所嵌入的签字信号通常被称作数字水印(d

7、igital watermark) 版 权保护所需恢入的数据量最小,但対签字信号的安全性和鲁棒性要求也最高,甚至是十分苛刻的。 为明确起见,应用于版权保护的信息隐藏技术-般称作鲁棒型水卬技术,而所嵌入的签字信号 则相应的称作鲁棒型水印(robust watennark) ”,从而与下文将要提到的脆弱型水印区别开 来。而一般所提到的数字水印则多指鲁棒型水印。由于鲁棒型数字水印用于确认主信号的原作者或版权的合法拥冇者,它必须保证对原始版权 的准确无谋的标识。因为数字水印时刻面临着用户或侵权者右意或恶意的破坏,因此,鲁棒型水 印技术必须保证在主信号可能发生的各种失真变换下,以及各种恶意攻击下都具备很

8、高的抵抗能 力。与此同时,由于耍求保证原始信号的感知效果尽可能不被破坏,因此对鲁棒型水印的不可见 性也有很髙的要求。如何设计一套完美的数字水印算法,并伴随以制订相应的安全体系结构和标 准,从而实现真正实用的版权保护方案,是信息隐藏技术最具挑战性也最具吸引力的一个课题。(2) 数据完整性鉴定(integrity authentication)数据完整性鉴定,又称作数据篡改验证(tamper proof),是指对某一信号的真伪或完整性 的判别,并进一步需要指出该信号与原始真实信号的差别,即提供冇关证据指明真实信号町能经 历的篡改操作7。更形式化的讲,假定接收到一多媒体信号g (图像、音频或视频信号

9、),初步 判断它很可能是某一原始真实信号f的修改版本。数据篡改验证的任务就是在对原始信号f的具 体内容不可知的情况下,以最大的可能判断是否萨心一般的数据篡改验证过程如图3所示。图3数据篡改验证一般过程实用的数据篡改验证方法应致力于满足以下要求:以最大的可能指岀是否有某种形式的篡改操作发生;提供对篡改后信号失真程度的度量方法;在无从得知原始真实信号的内容或其他与真实信号内容相关的信息的条件卜,判断可能 发牛的篡改操作的具体类别,如判别是滤波、压缩,还是替代操作等;与此同时,应根据具体的 应用背景,对经篡改后的信号给出和应的可信度;无需维护和同步操作任何与原始信号相分离的其它附加数据,即可恢复重建

10、原始真实信 号。脆弱型水印(fragile watermark) 技术为数据篡改验证提供了一种新的解决途径。该水 印技术在原始真实信号中嵌入某种标记信息,通过鉴别这些标记信息的改动,达到对原始数据完 整性检验的h的。因此,与鲁棒型水卬不同的是,脆弱型水卬应随着主信号的变动而做出相应的 改变,即体现出脆弱性。但是,脆弱型水印的脆弱性并不是绝对的。对主信号的某些必要性操作, 如修剪或压缩,脆弱型水印也应体现出一能的鲁棒性,从而将这些不影响主信号最终可侍度的操 作与那些蓄意破坏操作区分开來。另一方面,对脆弱型水印的不可见性和所嵌入数据量的要求与 鲁棒型水印是近似的。(3) 扩充数据的嵌入(augme

11、ntation data embedding)扩充数据包拾对主信号的描述或参考信息、控制信息以及其它媒体信号等等。描述信息町以 是特征定位信息、标题或内容注释信息筹,而控制信息的嵌入则可实现对主信号的存取控制和监 测。例如,一方面针对不同所有权级别的用户,可以分别授予不同的存取权限。另一方面,也可 通过嵌入一类通常被称作时间印章(time stamp) 的信息,以跟踪某一特定内容对象的创建、 行为以及被修改的历史。这样,利用信息隐藏技术可实现对这一对彖历史使用操作信息的记录, 而无需在原信号上附加头文件或历史文件,因为使用附加文件,一来容易被改动或丢失,二来需 要更多的传输带宽和存储空间。与此

12、同时,在给定的主信号中还可嵌入其它完整而有意义的媒体 信号,例如在给定视频序列中嵌入另一视频序列。因此,信息隐藏技术提供了这样一种非常有意 义而极具魅力的应用前景,它允许用八将多媒体信息剪裁成他们所需耍的形式和内容8。例 如,在某一频道内收看电视,町以通过信息隐藏方法在所播放的同一个电视节h中嵌入更多的镜 头以及多种语言跟踪,使用八能够按照个人的喜好和指定的语言方式播放。这在一楚意义上实现 了视频点播(video on demand, v0d)的功能,而英最人的优点在于它减少了一般v0d服务所需 的传输带宽利存储空间。显然,相对丁数字水卬來讲,扩充数据的嵌入所需隐藏的数据量较人,人量数据的嵌入

13、对签 字信号的不可见性提出了挑战。另一方面,由于扩充数据本身的可利用价值,签字信号一般不会 受到蓄意攻击的困扰。但是,对于主信号的尺度变换、剪切或对比度增强等操作,特别是失真编 码,扩充数据嵌入技术也要具备一定的鲁棒性。2. 3彩色图像的bmp文件格式bmp图像文件格式,是微软公司为其wtxdows环境设置的标准图像格式,并且内含了-套图 像处理的api函数。随着windows在世界范囤内的普及,bmp文件格式越来越多地被各种应用 软件所支持。bmp图像文件是位图文件,位图表示的是将一幅图像分割成栅格,栅格的每一点称 为像素,每一个像素具有自己的rgb值,即一幅图像是由一系列像素点构成的点阵。

14、位图文件格 式支持4位rle (行程长度编码)以及8位和24位编码。在本文屮我们只处理24位格式。24位bmp图像文件的结构特点为: 每个文件只能非 压缩地存放一幅彩色图像;文件头由54个字节的数据段组成,莫中包含有该位图文件的类型、 大小、图像尺寸及打印格式等;从第55个字节开始,是该文件的图像数据部分,数据的排列 顺序以图像的左下角为起点,从左到右、从下到上,每连续3个字节便描述图像一个像索点的颜 色信息,这三个字节分别代表蓝、绿、红三基色在此像素中的亮度,若某连续三个字节为:00h, ooh, ffh,则表示该像素的颜色为纯红色。以下我们详细讨论位图文件的具体结构。br> 2. 4

15、.1位图文件的标头标头包倉位图文件的类型大小信息和版面信息。结构如下2:typedef struct tagbitmapfileheader uint bftype;dword bfsize;uint bfreserved1;uint bfreserved2;dword bfoffbits;bitmapfileheader;下面是对这个清单屮的代码元素的说明:bftype:指定文件类型,其值始终为bm。bfsize:指定整个文件的人小(以字节为单位)。bfreservedl:保留般为 0。bfreserved2:保留- 一,般为 0。bfoffbits:指定从bitmapfilelleader

16、到图像首部的字节偏移量。现在我们已经知道位图标头的川途就是标识位图文件。读取位图文件的每个程序都使川位图 标头來进行文件验证。2. 4. 2位图信息标头随后的标头称为信息标头,其中包含图像木身的属性。下面说明如何指定windows 3. 0 (或 更高版木)设备独立位图(dib)的大小和颜色格式:typedef struct tagbitmapinfoheader dword bisize; /bi top infoheader 结构所需的字节数long biwidth; 位图的宽度(以象素为单位)long biheight; 位图的高度(以彖素为单位)word biplanes; /目标设备

17、的位面数。这个成员变量的值必须为1word bibitcount; 每个彖素的位数。其值必须为1、4、8或24dword bicompression; /丿衣缩位图的爪缩类型。在24位格式中,该变量被设置为0dword bisizeimage; /图像字肖大小。如果位图的格式是bi_rgb,则将此成员变量设置为 0是有效的long bixpelspermeter;/为位图指定目标设备水平分辨率(以彖素/米为单位)。程序町用该值从最符合当前设备 特征的资源群组中选择一个位图long biypelspermeter; /为位图指定h标设备的垂肓分辨率(以象素/米为单位)dword biclruse

18、d;/指定位图实际所用的颜色表中的颜色索引数。如果bibitcount设为24,则biclrused指 定用來优化windows调色板性能的参考颜色表dword biclrimportant; 指定对位图的显示有重要影响的颜色索引数。如果此值为0,则 所有颜色都很重要 bitmapinfoheader;现在已定义了创建图像所需的全部信息。2. 4. 3图像数据在24位格式中,图像中的每个彖素都山存储为三字节的rgb序列表示。每个扫描行都被补 足到4位。图像是自底而上存储的,即笫一个扫描行是图像中的最后一个扫描行。下图显示了位 图文件的标头(bitmapheader)和位图信息标头(bitmap

19、infoheader)以及部分图像数据:图4位图文件局部示例2. 5基于彩色静止数字图像的信息隐藏算法在分析了信息隐藏算法的基木框架和彩色图像的bmp文件格式后,本文提出一种基于彩色静 止数字图像的信息隐藏算法,分别如图5和图6所示。算法4.1 (基丁彩色静止数字图像的信息隐藏恢入算法)1)将待隐藏信息(以下称签字信号)的字节长度写入b1p文件标头部分的保留字节屮;2)将签字信号转化为二进制数据码流;3)将bhp文件图像数据部分的每个字节的髙7位依次异或后再与上述二进制数码流异或后 的结果写入最低位;s7$6s5s4s3s2s1s0签字信号流位图数据流图5基丁彩色静止数字图像的信息隐藏嵌入过程

20、算法4. 2 (基于彩色静止数字图像的信息隐藏提取算法)1)读bmp文件标头部分的保留字节值,设为l,若为0则没有隐藏信息,终止算法;若不 为0则其值为隐藏信息的字节长度;2)将bmp文件图像数据部分的每个字节8位依次异或,并保存其结果;3)重复第(2)步,使每8个bmp文件图像数据部分字节经过运算后组成一个隐藏信息字节;4)重复(2)、(3)直到隐藏信息字节长度为1“位图墩据流签字信号硫x7 x6 x5 x4 x3 x2 xi x0图6基于彩色静止数字图像的信息隐藏提取过程可以证明,提取后的信息就是嵌入的签字信号。以签字信号的一个位s为例,设对应的一个 位图数据字节为x7x6x5x4x3x2

21、x1x0,陨入签字信号后的位图数据字节为x7x6x5x4x3x2x1x0',其 中:x0' = x7 © x6 © x5 © x4 © x3 ® x2 © xi © s设提取后的签字信号为s',则,s' =x7 ® x6 ® x5 ® x4 ® x3 © x2 xi © x0j= (x7®x6®x5®x4 ®x3©x2®x1 x7) © (x6 © x5

22、© x4 © x3 ® x2 © xi ©s)=(x7 © x6 ® x5 © x4 © x3 © x2 ® x1 ® x7) © (x6 © x5 © x4 © x3 ® x2 © xi)=s证毕。3. 算法实现1、hideinfo. cpp:/*l. bmp 文件头bmp文件头数据结构含有bmp文件的类型、文件人小和位图起始位置等信息。其结构定义如下:*/typedef struct tagbi tmapfi1

23、eheaderbyte bftype2; /位图文件的类型,必须为"bm"byte bfsize4; /位图文件的大小,以字节为单位byte bfreservedl2; /位图文件保留字,必须为0byte bfreserved22; /位图文件保留字,必须为0bytebfoffbitsm; /位图数据的起始位置,以和对于位图文件头的偏移量衣示,以字节为单 位 *bitmap; /该结构占据14个字节。/*功能:返回图像的长度*/int getvalue(byte*a, int num)int result = 0;for (int i 二 num-1;i>0;i)re

24、sult+=ai;result = result<<8;result+=a0;return result;/*功能:将信息隐藏到图片中*/void hidelnfoofile* fp;char datamax;char pathmax;bitoperate operate;string pathl ="请输入图片路径(如:c:picsl. bmp) ”;cout « pathl « endl;char temp3100;cin. getline (temp3, 100, ' n');cin. getline(path, sizeof (

25、path), ' n');if(fp = fopen(path, "r+")=null)cout<打开文件的时候出现错误! <return;bitmap map = /存放文件头信息;(bitmap)malloc(sizeof(struct tagbitmapfileheader );fread(map, sizeof(struct t agb i t mapf i1el leader ),1,fp);printf (z,请输入您要隐藏的信息:n");ciru getline(data, max, ' n');int d

26、atalength = strlen(data);int maplength = getvalue(map->bfsize, 4);int databegin = getvalue(map->bfoffbits, 4);if(datalength*8)>(maplength-databegin)printf r隐藏信息太长!请选择一个更大的图片或者将信息分块隐藏n); return;/首先将文件的长度隐藏起来;byte temp32;fseek(fp, databegin, seek_set) ;/定位到数据块的起点;fread(temp, sizeof(char)*32,

27、1, fp);int copy = data!ength;for(int i = 31;i>=0;i-)bool v = (bool)(copy%2);tempi = operatebitset(tempi, 1, v);copy = copy/2;fseek(fp, databegin, seek_set) ; /定位到数据块的起点;fwrite(temp, sizeof (byte)*32, 1, fp);/以下将数据信息隐藏到图像中;int times = 0;byte ch8;while (times/加上隐藏的文件长度信息;fseek(fp, databegin+32+time

28、s*& seek_set) ;/立位到数据块的起点;fread (ch, sizeof (byte), 8, fp) ; /读出8个字节;for(int i = 7;i>=0;i)chi = operate. bitset (chi, 1, operate. bitat (datatimes, 8i);fseek(fp, databegin+32+times*& seek_set); 定位到数据块的起点; fwrite(ch, sizeof (byte), 8, fp); 写入8个字节;times+;fclose(fp);cout « "隐藏成功,按任

29、意键退出" endl;/*将图片中隐藏的信息提取出来*/void getlnfo ()file* fp;byte datamax;bitoperate operate;char pathmax;cout « "请输入图片路径(如:c: picsl. bmp) " « endl;char temp3100;cin. getline(temp3, 100, ' n');cin. getline(path, sizeof (path), ' n');if(fp = fopen(path, "r+")

30、=null) cout<打开文件的时候出现错误! <return;bitmap map = 存放文件头信息;(bitmap)malloc(sizeof(struct tagbitmapfileheader );fread(map, sizeof(struct tagbitmapfi1eheader ),1,fp);int databegin = getvalue (map->bfoffbits, 4); /得到数据块开始的偏移地址;获取文件的长度;int datalength = 0;首先将隐藏文件的长度读出來;byte temp32;fseek(fp, databegin,

31、 seek_set); 定位到数据块的起点; fread(temp, sizeof (char)*32, 1, fp);for(int i = 0;i<31;i+)datalength += (int)operate. bitat(tempi, 1);datalength = dataleng th«l;datalength += (int)operate. bitat(temp31, 1); /printf (z,nndatalength = %dn,?, datalength);int times = 0;byte ch8;while(times/加上隐藏的文件长度信息;f

32、seek(fp, databegin+32+times*8, seek_set);fread (ch, sizeof (byte),& fp) ; /读出8个字节;/printf (z/nch = %sn", ch);datatimes = 0;for(int i = 0;i7;i+)datatimes+二(int)operate. bitat(chi, 1); datatimes = datatimes*2;datatimes+二(int)operate. bitat(ch7, 1);printf (z/%cz/, data times);times+;fclose(fp)

33、;2、bitoperate. cpp/*功能:把ch从右数的第position位设置为value; */byte bitoperate:bitset(byte ch, short position, bool value)byte temp = ch;if(position>8|position<l)cout<<z/0ut of bound! position must be a number between 18 "<return ch;bool bit = bitat(temp, position);if (bivalue)/如果不相同的话if(bit = 0)byte m = (byte)value;for(int i = 1;im = m<<l;ch+=m;return ch;elsebyte m = (byte)bit;for(int i = 1;im = m<&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论