基于DCT的JSteg隱寫及分析_第1頁
基于DCT的JSteg隱寫及分析_第2頁
基于DCT的JSteg隱寫及分析_第3頁
基于DCT的JSteg隱寫及分析_第4頁
基于DCT的JSteg隱寫及分析_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于DCT的JSteg隱寫及分析一、摘要1二、引言3三、JSteg隱寫4 JSteg簡介4 JSteg算法4 JSteg隱寫過程6四、JSteg隱寫檢測741基于小波特征函數(shù)統(tǒng)計(jì)矩的隱寫分析7基于支持向量機(jī)的多特征盲檢測算法9五、總結(jié)10【參考文獻(xiàn)】10附錄11JSteg隱寫代碼(matlab)11一、摘要JPEG是互聯(lián)網(wǎng)上最為常見的一種圖像格式,而DCT變換是JPEG壓縮采用的重要技術(shù)之一,在DCT變換系數(shù)(DCT域)上隱藏信息是常見的數(shù)字隱寫方式。DCT(Discrete Cosine Transform,離散余弦變換)是一種實(shí)數(shù)域變換,其變換核為實(shí)數(shù)余弦函數(shù)。作為DCT變換的方法之一,J

2、Steg是一種采用JPEG圖像作為載體的隱寫軟件,其算法實(shí)際上就是將空域LSB替換隱寫應(yīng)用到JPEG圖像上。主要思想是:將一個(gè)二進(jìn)制位的隱秘信息嵌入到量化后的DCT系數(shù)的LSB上,但對原始值為1、0、1的DCT系數(shù)例外,提取隱秘信息時(shí),只需將載密圖像中不等于1、O、l的量化DCT系數(shù)的LSB逐一取出即可。JSteg算法雖然簡單易用,但由于其會(huì)引起系數(shù)直方圖出現(xiàn)值對區(qū)域相等的特點(diǎn),用卡方分析可以很容易的檢測到秘密信息的存在,因此其安全性較差。關(guān)鍵詞:JPEG DCT JSteg 實(shí)數(shù)余弦函數(shù)Based on the analysis of DCT steganography AbstractJP

3、EG 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 transform, wh

4、ich 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 the LSB of quan

5、tized 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 the value of

6、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 二、引言作為信息安全的分支,隱寫技術(shù)主要是針對圖片等外在特征較為明顯的載體寫入想要隱藏的信息,用以達(dá)到信息隱藏的目的。而JPEG是互聯(lián)網(wǎng)上最為常見的一種圖

7、像格式,而DCT變換是JPEG壓縮采用的重要技術(shù)之一,在DCT變換系數(shù)(DCT域)上隱藏信息是常見的數(shù)字隱寫方式。DCT(Discrete Cosine Transform,離散余弦變換)是一種實(shí)數(shù)域變換,其變換核為實(shí)數(shù)余弦函數(shù)。對一幅圖像進(jìn)行離散余弦變換后,許多有關(guān)圖像的重要可視信息都集中在DTC變換的一小部分系數(shù)中。因此,DTC是有損圖像壓縮JPEG的核心,同時(shí)也是所謂的“變換域信息隱藏算法”的主要“變換域”之一。因此圖像處理運(yùn)用二維離散余弦變換,所以直接介紹二維DCT變換。JSteg是最早在JPEG圖像中進(jìn)行隱寫的方法之一,由于該方法使得系數(shù)直方圖有明顯的改變,隨后即出現(xiàn)了F3隱寫,F(xiàn)4

8、隱寫,F(xiàn)5隱寫,OutGuess隱寫和MB隱寫等等。本文對JSteg的隱寫做著重的分析和研究。三、JSteg隱寫 JSteg簡介ISO和前CCITT于1986年底成立“聯(lián)合圖像專家組”,研究靜止圖像壓縮算法的標(biāo)準(zhǔn)化,至1992年正式完成了用于各種分辨率和格式的連續(xù)色調(diào)圖像的ISO標(biāo)準(zhǔn)(ITUTT81建議),簡稱JPEG標(biāo)準(zhǔn)。JPEG壓縮一般要經(jīng)過四個(gè)步驟:顏色模式轉(zhuǎn)換及采樣、DCT、量化、編碼,其中,DCT作為其中的一部分,是其重要的技術(shù)之一。它又包含JSteg隱寫,F(xiàn)3隱寫,F(xiàn)4隱寫,F(xiàn)5隱寫等等,JSteg是最早用于JPEG圖像的隱寫工具,該算法是由D。Upam提出的,是指將空域上LSB替

9、換隱寫到JPEG圖像上。 JSteg算法JSteg的算法,或稱其主要思想是將秘密消息嵌入在量化后的DcT系數(shù)的最低比特位上,但對原始值為O、1的DCT系數(shù)不進(jìn)行嵌入。提取秘密消息時(shí),只需將載密圖像中不等于0、l的量化DcT系數(shù)的LSB取出即可。如圖所示: 圖 秘密消息嵌入位置的選擇方法有順序嵌入法和隨機(jī)間隔法。順序嵌入的JSteg算法簡單,易實(shí)現(xiàn),但是有嚴(yán)重的安全問題,這是因?yàn)檩d體圖像中修改了的部分和未修改的部分,具有不同的統(tǒng)計(jì)特性,很容易被檢測出含有秘密消息。隨機(jī)間隔法,首先要生成一個(gè)偽隨機(jī)序列作為嵌入間隔,調(diào)整偽隨機(jī)序列的均值,可以使得秘密消息隨機(jī)地散布在整幅圖像中,進(jìn)而提高了安全性。其具

10、體算法步驟如下:(1) 選擇掩護(hù)圖像,并將圖像區(qū)分成不重迭的8*8區(qū)塊(2) 將每個(gè)區(qū)塊利用離散余弦轉(zhuǎn)換成頻率域系數(shù)(3) 利用用戶選定的量化表對頻率域進(jìn)行量化(4) 對秘密信息進(jìn)行Z字性掃描,并對除了0和1之外的DCT系數(shù)的最低位加以替換(5) 進(jìn)行熵編碼,產(chǎn)生JPEG隱寫圖像或者這樣說,定義H為載體圖像中DCT系數(shù)的數(shù)目,定義h(X=x)為載體圖像中DCT系數(shù)等于x的數(shù)目。由算法的描述可知,兩種Jsteg算法的最大容量均為H-h(x=0)-h(x=1)比特。定義h(Y=y)為載密圖像中DCT系數(shù)等于y的數(shù)目。由于嵌入的秘密信息一般為密文,其O、l比特出現(xiàn)的概率近似相等,都為O5左右,那么嵌

11、入達(dá)到最大容量時(shí),有 h(Y=2)=(X=3)=h(Y=3) 也就是說載密圖像中DCT系數(shù)為2的數(shù)目約等于DCT系數(shù)為3的數(shù)目,同理DCT系數(shù)為2i(i !=0)的數(shù)目與DCT系數(shù)為2i+1(i !=0)的數(shù)目也是大約相等的,所以載密圖像的DcT系數(shù)直方圖中會(huì)出現(xiàn)值對現(xiàn)象,與載體圖像的直方圖形成了明顯的差異。利用這種特性,就可以很容易地檢測出秘密消息的存在。 JSteg隱寫過程JSteg的具體嵌入過程如下: (1)部分解碼JPEG圖像,得到二進(jìn)制存儲(chǔ)的AC系數(shù),判斷該AC系數(shù)是否等于1或0,若等于則跳過該AC系數(shù),否則,執(zhí)行下一步。 (2)判斷二進(jìn)制存儲(chǔ)的AC系數(shù)的LSB是否與要嵌入的秘密信息

12、比特相同,若相同,則不對其進(jìn)行修改,否則執(zhí)行下一步。 (3)用秘密信息比特替換二進(jìn)制存儲(chǔ)的AC系數(shù)的LSB,將修改后的AC系數(shù)重新編碼得到隱秘JPEG圖像。JSteg的提取過程如下: 部分解碼JPEG圖像,得到二進(jìn)制存儲(chǔ)的AC系數(shù),取出不等于1和0的AC系數(shù)的LSB,排列后組成秘密信息。在JSteg中,關(guān)于DCT系數(shù)中0和1的處理 (1)DCT系數(shù)中“0”的比例最大(一般可達(dá)到60%以上,取決于圖像質(zhì)量和壓縮因子),壓縮編碼是利用大量出現(xiàn)連零實(shí)現(xiàn)的,如果改變DCT系數(shù)中“0”的話,不能很好的實(shí)現(xiàn)壓縮。 (2)DCT系數(shù)中的“1”若變成“0”,由于接受端無法區(qū)分未使用的“0”和嵌入消息后得到的“

13、0”,從而無法實(shí)現(xiàn)秘密信息的提取。四、JSteg隱寫檢測 通用隱寫分析算法的關(guān)鍵在于尋找對隱秘信息嵌入敏感的統(tǒng)計(jì)特征,設(shè)計(jì)合適的判別方案來區(qū)分載體圖像和載密圖像。JPEG圖像具有兩個(gè)基本統(tǒng)計(jì)特性:直方圖特性和分塊效應(yīng),大多針對JPEG圖像的隱寫分析算法都是利用這兩個(gè)特性來設(shè)計(jì)的。研究者已提出了幾種較有效的基于JPEG圖像的通用隱寫分析技術(shù)算法,下面我們主要研究討論兩種。41基于小波特征函數(shù)統(tǒng)計(jì)矩的隱寫分析基于小波特征函數(shù)統(tǒng)計(jì)矩的隱寫分析方法f62】是由Shi等提出的,是一種通用型隱寫分析方法,它將小波子帶的特征函數(shù)統(tǒng)計(jì)矩作為隱寫分析的特征。該隱寫分析系統(tǒng)涉及到兩個(gè)主要問題:(1)特征向量的確定

14、。首先對待檢測圖像進(jìn)行兩層Haar小波變換,包括圖像本身在內(nèi)(這里看做子帶LLo),將獲得13個(gè)子帶:然后計(jì)算每個(gè)子帶對應(yīng)直方圖的DFT,即得到了特征函數(shù)。最后根據(jù)下列式子得到一階、二階和三階矩:其中,表示第j個(gè)頻率成分的幅值,n取1,2,3。這樣就構(gòu)建了一個(gè)39維的特征向量。(2)分類器的選擇。 Bayes分類器的分類原理是通過某對象的先驗(yàn)概率,利用貝葉斯公式計(jì)算出其后驗(yàn)概率,即該對象屬于某一類的概率,選擇具有最大后驗(yàn)概率的類作為該對象所屬的類。由于嵌入的隱秘信息一般服從高斯分布或近似于高斯分布,因此選用Bayes分類器。 用表示第i幅圖像的39維特征向量,分別表示原始圖像集和隱秘圖像集,其

15、均值向量和協(xié)方差矩陣分別由和表示, Bayes分類描述如下:A最大后驗(yàn)概率其中,N表示標(biāo)準(zhǔn)高斯分布B.決策函數(shù) 大量實(shí)驗(yàn)證明,基于小波特征函數(shù)統(tǒng)計(jì)矩的隱寫分析方法很有效,檢測率很高?;谥С窒蛄繖C(jī)的多特征盲檢測算法 我們知道,現(xiàn)在研究的隱寫分析都是唯載密攻擊,即載體圖像未知的檢測,所以我們要構(gòu)造一近似于載體圖像的圖像。由于JPEG圖像在進(jìn)行壓縮時(shí),其DCT變換和量化都是在sxs的子塊上進(jìn)行的,所以塊與塊之間存在一定的不連續(xù)性,即所謂的分塊效應(yīng),枝準(zhǔn)圖像的獲得:首先將載密圖像J1解壓到空域,然后在每個(gè)方向上裁剪掉4個(gè)像素點(diǎn),最后用與原圖像相同的的量化矩陣重新壓縮圖像得到圖像如J2,如圖所示,J2

16、近似為原載體圖像,稱為校準(zhǔn)圖像。 圖 標(biāo)準(zhǔn)圖像的產(chǎn)生定義圖像的特征函數(shù)為F(如直方圖函數(shù),共生矩陣函數(shù)等),則特征值f由下式產(chǎn)生:其中Ll范數(shù)定義為一個(gè)向量(或矩陣)所有元素的絕對值總和。當(dāng)然,最簡單的還是基于JSteg的卡方檢測,因?yàn)镴Steg的隱藏本身就是和LSB隱寫的構(gòu)造差不多,只不過隱寫的方法不一樣而已,既然LSB隱寫可以用卡方檢測,JSteg當(dāng)然也可以,因?yàn)樵谇懊嫣岬竭^,所以在此就不再贅述。五、總結(jié) JSteg隱寫算法是一種較為簡單的算法,其主要是基于DCT系數(shù)的變換進(jìn)行數(shù)字隱寫,具有簡單,易于實(shí)現(xiàn),且其隱藏容量相當(dāng)客觀,其相對容量(嵌入容量與文件自身的大小比值)與空域LSB方法相當(dāng)

17、,很適合初學(xué)者使用。不過,對于其檢測而言,由于其DCT系數(shù)在隱寫前后統(tǒng)計(jì)直方圖的異常,可以很容易的被卡方攻擊方法檢測出秘密信息的存在,因此,安全不具有一定的保障性,對于初學(xué)者而言,因?yàn)椴粫?huì)用其隱藏較為秘密的信息,故仍然可以采用JSteg來對DCT隱寫來進(jìn)行學(xué)習(xí),掌握了這一種方法后,就可以向更高級(jí)的隱寫方法跳轉(zhuǎn)學(xué)習(xí)。【參考文獻(xiàn)】1王麗娜,張煥國.信息隱藏技術(shù)與應(yīng)用.武漢:武漢大學(xué)出版社,2003,1-13 2Jan J K,Tseng Y MOn the security of image encryption methodInformation Processing Letters,1996,

18、60(2):261265 3 李健乾. 圖像隱藏信息檢測D. 中山大學(xué),2005 4 謝劍鋒. 信息隱藏的算法研究D. 復(fù)旦大學(xué),2004 5 Bender W, Gruhl D, Morimoto N, et al. Techniques for data hidingJ. IBM System Journal, 1996, 35 (3&4): 313-336 6 王朔中,張新鵬,張開文. 數(shù)字密寫和密寫分析: 互聯(lián)網(wǎng)時(shí)代的信息戰(zhàn)技術(shù)M. 北京: 清華大學(xué)出版社, 2005 7 吳秋新,楊義先.信息隱藏技術(shù)隱寫術(shù)與數(shù)字水印M.人民郵電出版社,2001,9:3-8 8王炳錫,陳琦,鄧峰森.數(shù)字

19、水印技術(shù)M.西安電子科技大學(xué)出版社,2003. 9Stefan Katzenbeisser,Fabien A.P. Peticolas編.吳秋新,鈕心忻,楊義先,羅守山,楊曉兵,譯.信息隱藏技術(shù))隱寫術(shù)與數(shù)字水印=Ml.北京:人民郵電出版社,2001. 10丁瑋,齊東旭.數(shù)字圖像變換及信息隱藏與偽裝技術(shù)IJ.計(jì)算機(jī)學(xué)報(bào),1998,21(9):839843 附錄 JSteg隱寫代碼(matlab)clcclear all;% clear all variables from previous sessionsclose all;covername = input(Enter image file

20、 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(i,j);% rgb(r,2)=cover(i,j+1);% rgb(r,3)=cover(i,j+2)

21、;% 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(message);message = uint8(message);coverzero = cover;%disp

22、(coverzero);%coverzero=imread();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 81 104 113 92; . 49 64 78 87 103 121 120 101; . 72 92 95 98 112 10

23、0 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) * blocksize;if pad_cols = blocksize, pad_cols = 0; endpad_rows =

24、 (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 pad_cols widerfor extra_rows = 1:pad_rows coverzero(rows+extra_ro

25、ws, 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_matrix = DCT2(DCT_matrix); % quantize it (levels stored in DCT_quan

26、tizer matrix): %DCT_matrix = floor (DCT_matrix . % ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple) + ; 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: jpeg_img(row

27、: 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(message(i),8-imbed);showmess=uint8(messageshift);showmess=bitshift(show

28、mess,-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 else if messagebit(i)=0 x=x-1; end end i=i+1; end jpeg_img(row,col)=x;

29、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: blocksize: cols IDCT_matrix = jpeg_img(row: row + blocksize-1, col: col

30、+ blocksize-1); %IDCT_matrix = floor(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple); %IDCT_matrix = floor(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple); IDCT_matrix = round(idct2(IDCT_matrix .* (DCT_quantizer(1:blocksize, 1:blocksize

31、) * 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 - pad_rows;cols = cols - pad_cols;recon_img = recon_img(1:rows, 1:cols);fi

32、gure(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 - floor(rows/blocksize) * blocksize;if pad_rows = blocksize, pad_rows = 0;

33、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_img(rows, 1:cols);endrows = rows + pad_rows; % coverzero is now pad_rows tall

34、erjpeg_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_quantizer matrix): %DCT_matrix = floor (DCT_matrix . % ./ (DCT_quantizer(1:blocksize

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論