毕业设计论文基于DCT的JSteg隐写及分析

上传人:痛*** 文档编号:135741619 上传时间:2022-08-15 格式:DOC 页数:26 大小:430KB
收藏 版权申诉 举报 下载
毕业设计论文基于DCT的JSteg隐写及分析_第1页
第1页 / 共26页
毕业设计论文基于DCT的JSteg隐写及分析_第2页
第2页 / 共26页
毕业设计论文基于DCT的JSteg隐写及分析_第3页
第3页 / 共26页
资源描述:

《毕业设计论文基于DCT的JSteg隐写及分析》由会员分享,可在线阅读,更多相关《毕业设计论文基于DCT的JSteg隐写及分析(26页珍藏版)》请在装配图网上搜索。

1、基于DCT的JSteg隐写及分析 一、摘要1二、引言3三、JSteg隐写43.1 JSteg简介43.2 JSteg算法43.3 JSteg隐写过程6四、JSteg隐写检测741基于小波特征函数统计矩的隐写分析74.2基于支持向量机的多特征盲检测算法9五、总结10【参考文献】10附录11JSteg隐写代码(matlab)11一、摘要JPEG是互联网上最为常见的一种图像格式,而DCT变换是JPEG压缩采用的重要技术之一,在DCT变换系数(DCT域)上隐藏信息是常见的数字隐写方式。DCT(Discrete Cosine Transform,离散余弦变换)是一种实数域变换,其变换核为实数余弦函数。作

2、为DCT变换的方法之一,JSteg是一种采用JPEG图像作为载体的隐写软件,其算法实际上就是将空域LSB替换隐写应用到JPEG图像上。主要思想是:将一个二进制位的隐秘信息嵌入到量化后的DCT系数的LSB上,但对原始值为1、0、1的DCT系数例外,提取隐秘信息时,只需将载密图像中不等于1、O、l的量化DCT系数的LSB逐一取出即可。JSteg算法虽然简单易用,但由于其会引起系数直方图出现值对区域相等的特点,用卡方分析可以很容易的检测到秘密信息的存在,因此其安全性较差。关键词:JPEG DCT JSteg 实数余弦函数Based on the analysis of DCT steganograp

3、hy AbstractJPEG is the Internets most common image format, JPEG compression and the DCT is one of the key technology used in the DCT coefficients (DCT domain) on the hidden information is a common digital steganography way. DCT (Discrete Cosine Transform, Discrete Cosine Transform) is a real domain

4、transform, which is a real number cosine transform kernel functions. As one method of DCT, JSteg a JPEG image using steganography software as a carrier, the algorithm will actually replace airspace LSB steganography applied to JPEG images. The main idea is: to embed a bit of secret information to th

5、e LSB of quantized DCT coefficients, but the original value. 1,0,1 DCT coefficients exception when extracting hidden information, simply stego image is not equal. 1, LSB O, l quantized DCT coefficients can be taken out one by one. JSteg algorithm is simple and easy to use, but because it will cause

6、the value of the coefficient equal to the regional characteristics of the histogram appears chi-square analysis can easily detect the presence of secret information, so the security is poor.Keywords: JPEG DCT JSteg real cosine function 二、引言作为信息安全的分支,隐写技术主要是针对图片等外在特征较为明显的载体写入想要隐藏的信息,用以达到信息隐藏的目的。而JPEG

7、是互联网上最为常见的一种图像格式,而DCT变换是JPEG压缩采用的重要技术之一,在DCT变换系数(DCT域)上隐藏信息是常见的数字隐写方式。DCT(Discrete Cosine Transform,离散余弦变换)是一种实数域变换,其变换核为实数余弦函数。对一幅图像进行离散余弦变换后,许多有关图像的重要可视信息都集中在DTC变换的一小部分系数中。因此,DTC是有损图像压缩JPEG的核心,同时也是所谓的“变换域信息隐藏算法”的主要“变换域”之一。因此图像处理运用二维离散余弦变换,所以直接介绍二维DCT变换。JSteg是最早在JPEG图像中进行隐写的方法之一,由于该方法使得系数直方图有明显的改变,

8、随后即出现了F3隐写,F4隐写,F5隐写,OutGuess隐写和MB隐写等等。本文对JSteg的隐写做着重的分析和研究。三、JSteg隐写3.1 JSteg简介ISO和前CCITT于1986年底成立“联合图像专家组”,研究静止图像压缩算法的标准化,至1992年正式完成了用于各种分辨率和格式的连续色调图像的ISOIEC.10918标准(ITUTT81建议),简称JPEG标准。JPEG压缩一般要经过四个步骤:颜色模式转换及采样、DCT、量化、编码,其中,DCT作为其中的一部分,是其重要的技术之一。它又包含JSteg隐写,F3隐写,F4隐写,F5隐写等等,JSteg是最早用于JPEG图像的隐写工具,

9、该算法是由D。Upam提出的,是指将空域上LSB替换隐写到JPEG图像上。3.2 JSteg算法JSteg的算法,或称其主要思想是将秘密消息嵌入在量化后的DcT系数的最低比特位上,但对原始值为O、1的DCT系数不进行嵌入。提取秘密消息时,只需将载密图像中不等于0、l的量化DcT系数的LSB取出即可。如图1.1所示: 图 1.1秘密消息嵌入位置的选择方法有顺序嵌入法和随机间隔法。顺序嵌入的JSteg算法简单,易实现,但是有严重的安全问题,这是因为载体图像中修改了的部分和未修改的部分,具有不同的统计特性,很容易被检测出含有秘密消息。随机间隔法,首先要生成一个伪随机序列作为嵌入间隔,调整伪随机序列的

10、均值,可以使得秘密消息随机地散布在整幅图像中,进而提高了安全性。其具体算法步骤如下:(1) 选择掩护图像,并将图像区分成不重迭的8*8区块(2) 将每个区块利用离散余弦转换成频率域系数(3) 利用用户选定的量化表对频率域进行量化(4) 对秘密信息进行Z字性扫描,并对除了0和1之外的DCT系数的最低位加以替换(5) 进行熵编码,产生JPEG隐写图像或者这样说,定义H为载体图像中DCT系数的数目,定义h(X=x)为载体图像中DCT系数等于x的数目。由算法的描述可知,两种Jsteg算法的最大容量均为H-h(x=0)-h(x=1)比特。定义h(Y=y)为载密图像中DCT系数等于y的数目。由于嵌入的秘密

11、信息一般为密文,其O、l比特出现的概率近似相等,都为O5左右,那么嵌入达到最大容量时,有 h(Y=2)=0.5h(X=3)=h(Y=3) 也就是说载密图像中DCT系数为2的数目约等于DCT系数为3的数目,同理DCT系数为2i(i !=0)的数目与DCT系数为2i+1(i !=0)的数目也是大约相等的,所以载密图像的DcT系数直方图中会出现值对现象,与载体图像的直方图形成了明显的差异。利用这种特性,就可以很容易地检测出秘密消息的存在。3.3 JSteg隐写过程JSteg的具体嵌入过程如下: (1)部分解码JPEG图像,得到二进制存储的AC系数,判断该AC系数是否等于1或0,若等于则跳过该AC系数

12、,否则,执行下一步。 (2)判断二进制存储的AC系数的LSB是否与要嵌入的秘密信息比特相同,若相同,则不对其进行修改,否则执行下一步。 (3)用秘密信息比特替换二进制存储的AC系数的LSB,将修改后的AC系数重新编码得到隐秘JPEG图像。JSteg的提取过程如下: 部分解码JPEG图像,得到二进制存储的AC系数,取出不等于1和0的AC系数的LSB,排列后组成秘密信息。在JSteg中,关于DCT系数中0和1的处理 (1)DCT系数中“0”的比例最大(一般可达到60%以上,取决于图像质量和压缩因子),压缩编码是利用大量出现连零实现的,如果改变DCT系数中“0”的话,不能很好的实现压缩。 (2)DC

13、T系数中的“1”若变成“0”,由于接受端无法区分未使用的“0”和嵌入消息后得到的“0”,从而无法实现秘密信息的提取。四、JSteg隐写检测 通用隐写分析算法的关键在于寻找对隐秘信息嵌入敏感的统计特征,设计合适的判别方案来区分载体图像和载密图像。JPEG图像具有两个基本统计特性:直方图特性和分块效应,大多针对JPEG图像的隐写分析算法都是利用这两个特性来设计的。研究者已提出了几种较有效的基于JPEG图像的通用隐写分析技术算法,下面我们主要研究讨论两种。41基于小波特征函数统计矩的隐写分析基于小波特征函数统计矩的隐写分析方法f62】是由Shi等提出的,是一种通用型隐写分析方法,它将小波子带的特征函

14、数统计矩作为隐写分析的特征。该隐写分析系统涉及到两个主要问题:(1)特征向量的确定。首先对待检测图像进行两层Haar小波变换,包括图像本身在内(这里看做子带LLo),将获得13个子带:然后计算每个子带对应直方图的DFT,即得到了特征函数。最后根据下列式子得到一阶、二阶和三阶矩: 其中,表示第j个频率成分的幅值,n取1,2,3。这样就构建了一个39维的特征向量。(2)分类器的选择。 Bayes分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。由于嵌入的隐秘信息一般服从高斯分布或近似于高斯分布,因此选用Ba

15、yes分类器。 用表示第i幅图像的39维特征向量,分别表示原始图像集和隐秘图像集,其均值向量和协方差矩阵分别由和表示, Bayes分类描述如下:A最大后验概率其中,N表示标准高斯分布B.决策函数 大量实验证明,基于小波特征函数统计矩的隐写分析方法很有效,检测率很高。4.2基于支持向量机的多特征盲检测算法 我们知道,现在研究的隐写分析都是唯载密攻击,即载体图像未知的检测,所以我们要构造一近似于载体图像的图像。由于JPEG图像在进行压缩时,其DCT变换和量化都是在sxs的子块上进行的,所以块与块之间存在一定的不连续性,即所谓的分块效应,枝准图像的获得:首先将载密图像J1解压到空域,然后在每个方向上

16、裁剪掉4个像素点,最后用与原图像相同的的量化矩阵重新压缩图像得到图像如J2,如图3.1所示,J2近似为原载体图像,称为校准图像。 图 3.1 标准图像的产生定义图像的特征函数为F(如直方图函数,共生矩阵函数等),则特征值f由下式产生: 其中Ll范数定义为一个向量(或矩阵)所有元素的绝对值总和。当然,最简单的还是基于JSteg的卡方检测,因为JSteg的隐藏本身就是和LSB隐写的构造差不多,只不过隐写的方法不一样而已,既然LSB隐写可以用卡方检测,JSteg当然也可以,因为在前面提到过,所以在此就不再赘述。五、总结 JSteg隐写算法是一种较为简单的算法,其主要是基于DCT系数的变换进行数字隐写

17、,具有简单,易于实现,且其隐藏容量相当客观,其相对容量(嵌入容量与文件自身的大小比值)与空域LSB方法相当,很适合初学者使用。不过,对于其检测而言,由于其DCT系数在隐写前后统计直方图的异常,可以很容易的被卡方攻击方法检测出秘密信息的存在,因此,安全不具有一定的保障性,对于初学者而言,因为不会用其隐藏较为秘密的信息,故仍然可以采用JSteg来对DCT隐写来进行学习,掌握了这一种方法后,就可以向更高级的隐写方法跳转学习。【参考文献】1王丽娜,张焕国.信息隐藏技术与应用.武汉:武汉大学出版社,2003,1-13 2Jan J K,Tseng Y MOn the security of image

18、encryption methodInformation Processing Letters,1996,60(2):261265 3 李健乾. 图像隐藏信息检测D. 中山大学,2005 4 谢剑锋. 信息隐藏的算法研究D. 复旦大学,2004 5 Bender W, Gruhl D, Morimoto N, et al. Techniques for data hidingJ. IBM System Journal, 1996, 35 (3&4): 313-336 6 王朔中,张新鹏,张开文. 数字密写和密写分析: 互联网时代的信息战技术M. 北京: 清华大学出版社, 2005 7 吴秋新,

19、杨义先.信息隐藏技术隐写术与数字水印M.人民邮电出版社,2001,9:3-8 8王炳锡,陈琦,邓峰森.数字水印技术M.西安电子科技大学出版社,2003. 9Stefan Katzenbeisser,Fabien A.P. Peticolas编.吴秋新,钮心忻,杨义先,罗守山,杨晓兵,译.信息隐藏技术)隐写术与数字水印=Ml.北京:人民邮电出版社,2001. 10丁玮,齐东旭.数字图像变换及信息隐藏与伪装技术IJ.计算机学报,1998,21(9):839843 附录 JSteg隐写代码(matlab)clcclear all;% clear all variables from previous

20、 sessionsclose all;covername = input(Enter image file name with extension: , s);messagename = input(Enter message image file name with extension: , s);cover = imread(covername);sz = size(cover);rows = sz(1,1); cols = sz(1,2);colors = max(max(cover); %r=1;%for i=1:rows% for j=1:3:cols% rgb(r,1)=cover

21、(i,j);% rgb(r,2)=cover(i,j+1);% rgb(r,3)=cover(i,j+2);% r=r+1;% end%end%gray=rgb2gray(rgb);%cover=gray;fd = fopen (messagename, r);message = fgetl(fd);messagelength = length(message);figure(1), imshow(cover); title(Original Image (Cover Image);%disp(message);%cover=double(cover);%message=double(mess

22、age);message = uint8(message);coverzero = cover;%disp(coverzero);%coverzero=imread(GrayScale.bmp);quant_multiple = 1; blocksize = 8; DCT_quantizer = . 16 11 10 16 24 40 51 61; . 12 12 14 19 26 58 60 55; . 14 13 16 24 40 57 69 56; . 14 17 22 29 51 87 80 62; . 18 22 37 56 68 109 103 77; . 24 35 55 64

23、81 104 113 92; . 49 64 78 87 103 121 120 101; . 72 92 95 98 112 100 103 99 ;%figure(1)%image(coverzero)figure(2);imshow(coverzero);%colormap(map)title(Original image);%figure(2)%coverzero = coverzero - ceil(colors/2);%figure(2);imshow(coverzero);pad_cols = (1 - (cols/blocksize - floor(cols/blocksize

24、) * blocksize;if pad_cols = blocksize, pad_cols = 0; endpad_rows = (1 - (rows/blocksize - floor(rows/blocksize) * blocksize;if pad_rows = blocksize, pad_rows = 0; endfor extra_cols = 1:pad_cols coverzero(1:rows, cols+extra_cols) = coverzero(1:rows, cols);endcols = cols + pad_cols; % coverzero is now

25、 pad_cols widerfor extra_rows = 1:pad_rows coverzero(rows+extra_rows, 1:cols) = coverzero(rows, 1:cols);endrows = rows + pad_rows; % coverzero is now pad_rows tallerfor row = 1: blocksize: rows for col = 1: blocksize: cols DCT_matrix = coverzero(row: row + blocksize-1, col: col + blocksize-1); DCT_m

26、atrix = DCT2(DCT_matrix); % quantize it (levels stored in DCT_quantizer matrix): %DCT_matrix = floor (DCT_matrix . % ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple) + 0.5); DCT_matrix = round(DCT_matrix . ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple); %DCT_matrix=round(

27、DCT_matrix); % place it into the compressed-image matrix: jpeg_img(row: row + blocksize-1, col: col + blocksize-1) = DCT_matrix; endendfigure(3);hist(jpeg_img);figure(4);imshow(jpeg_img);bitlength=1;%messagebit=zeros(messagelength*8);for i=1:messagelength%imbed=7;for imbed=1:8messageshift=bitshift(m

28、essage(i),8-imbed);showmess=uint8(messageshift);showmess=bitshift(showmess,-7);messagebit(bitlength)=showmess;bitlength=bitlength+1;%coverindex = coverindex+1;endend%embeddingi=1; for row=1:rows for col=1:cols x=jpeg_img(row,col); if (x=0) & (x=1) r=mod(x,2); if r=0 % if messagebit(i)=1 x=x+1; end e

29、lse if messagebit(i)=0 x=x-1; end end i=i+1; end jpeg_img(row,col)=x; if i=bitlength break; end end if i=bitlength break; end endfigure(5);hist(jpeg_img);% Reconstructing imagerecon_img = coverzero - coverzero; % zero the matrix for the reconstructed imagefor row = 1: blocksize: rows for col = 1: bl

30、ocksize: cols IDCT_matrix = jpeg_img(row: row + blocksize-1, col: col + blocksize-1); %IDCT_matrix = floor(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple)-0.5); %IDCT_matrix = floor(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple); IDCT_

31、matrix = round(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple); recon_img(row: row + blocksize-1, col: col + blocksize-1) = IDCT_matrix; endend%recon_img = recon_img + ceil(colors/2);%coverzero = coverzero + ceil(colors/2);% Clip off padded rows and columnsrows = rows

32、 - pad_rows;cols = cols - pad_cols;recon_img = recon_img(1:rows, 1:cols);figure(6);imshow(recon_img);%disp(recon_img);%recon_img = recon_img - ceil(colors/2);pad_cols = (1 - (cols/blocksize - floor(cols/blocksize) * blocksize;if pad_cols = blocksize, pad_cols = 0; endpad_rows = (1 - (rows/blocksize

33、- floor(rows/blocksize) * blocksize;if pad_rows = blocksize, pad_rows = 0; endfor extra_cols = 1:pad_cols recon_img(1:rows, cols+extra_cols) = recon_img(1:rows, cols);endcols = cols + pad_cols; % coverzero is now pad_cols widerfor extra_rows = 1:pad_rows recon_img(rows+extra_rows, 1:cols) = recon_im

34、g(rows, 1:cols);endrows = rows + pad_rows; % coverzero is now pad_rows tallerjpeg_img=jpeg_img-jpeg_img;for row = 1: blocksize: rows for col = 1: blocksize: cols DCT_matrix = recon_img(row: row + blocksize-1, col: col + blocksize-1); DCT_matrix = DCT2(DCT_matrix); % quantize it (levels stored in DCT

35、_quantizer matrix): %DCT_matrix = floor (DCT_matrix . % ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple) + 0.5); DCT_matrix = round (DCT_matrix . ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple); %DCT_matrix=round(DCT_matrix); % place it into the compressed-image matrix: jp

36、eg_img(row: row + blocksize-1, col: col + blocksize-1) = DCT_matrix; %disp(jpeg_img(row: row + blocksize-1, col: col + blocksize-1); endendstego=jpeg_img;%stego = uint8(jpeg_img);%stego = int8(jpeg_img);%disp(stego(1:8,1:8);%stego = uint8(jpeg_img);%disp(stego(1:8,1:8);stegoindex=1;imbed=1;messagech

37、ar=0;messageindex=1;%for i=1:(messagelength*8)for row=1:rows for col=1:cols stegomessage = stego(row,col); if (stegomessage=0)&(stegomessage=1) r=mod(stegomessage,2); if (r=0) showmess=0; else showmess=1; end showmess=uint8(showmess); %showmess=bitshift(stegomessage,7); showmess=bitshift(showmess,(i

38、mbed-1); messagechar=uint8(messagechar+showmess); stegoindex = stegoindex+1; imbed=imbed+1; if (imbed=9) messagestring(messageindex)=messagechar; messageindex=messageindex+1; messagechar=0; imbed=1; end end if (stegoindex=messagelength*8) break; end end if (stegoindex=messagelength*8) break; endend %enddisp(messagestring);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!