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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

2、Steg是一種采用JPEG圖像作為載體的隱寫軟件,其算法實際上就是將空域LSB替換隱寫應用到JPEG圖像上。主要思想是:將一個二進制位的隱秘信息嵌入到量化后的DCT系數(shù)的LSB上,但對原始值為1、0、1的DCT系數(shù)例外,提取隱秘信息時,只需將載密圖像中不等于1、O、l的量化DCT系數(shù)的LSB逐一取出即可。JSteg算法雖然簡單易用,但由于其會引起系數(shù)直方圖出現(xiàn)值對區(qū)域相等的特點,用卡方分析可以很容易的檢測到秘密信息的存在,因此其安全性較差。關鍵詞:JPEG DCT JSteg 實數(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 二、引言作為信息安全的分支,隱寫技術主要是針對圖片等外在特征較為明顯的載體寫入想要隱藏的信息,用以達到信息隱藏的目的。而JPEG是互聯(lián)網(wǎng)上最為常見的一種圖

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

8、隱寫,F(xiàn)5隱寫,OutGuess隱寫和MB隱寫等等。本文對JSteg的隱寫做著重的分析和研究。三、JSteg隱寫 JSteg簡介ISO和前CCITT于1986年底成立“聯(lián)合圖像專家組”,研究靜止圖像壓縮算法的標準化,至1992年正式完成了用于各種分辨率和格式的連續(xù)色調(diào)圖像的ISO標準(ITUTT81建議),簡稱JPEG標準。JPEG壓縮一般要經(jīng)過四個步驟:顏色模式轉(zhuǎn)換及采樣、DCT、量化、編碼,其中,DCT作為其中的一部分,是其重要的技術之一。它又包含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ù)不進行嵌入。提取秘密消息時,只需將載密圖像中不等于0、l的量化DcT系數(shù)的LSB取出即可。如圖所示: 圖 秘密消息嵌入位置的選擇方法有順序嵌入法和隨機間隔法。順序嵌入的JSteg算法簡單,易實現(xiàn),但是有嚴重的安全問題,這是因為載體圖像中修改了的部分和未修改的部分,具有不同的統(tǒng)計特性,很容易被檢測出含有秘密消息。隨機間隔法,首先要生成一個偽隨機序列作為嵌入間隔,調(diào)整偽隨機序列的均值,可以使得秘密消息隨機地散布在整幅圖像中,進而提高了安全性。其具

10、體算法步驟如下:(1) 選擇掩護圖像,并將圖像區(qū)分成不重迭的8*8區(qū)塊(2) 將每個區(qū)塊利用離散余弦轉(zhuǎn)換成頻率域系數(shù)(3) 利用用戶選定的量化表對頻率域進行量化(4) 對秘密信息進行Z字性掃描,并對除了0和1之外的DCT系數(shù)的最低位加以替換(5) 進行熵編碼,產(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、入達到最大容量時,有 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ù)直方圖中會出現(xiàn)值對現(xiàn)象,與載體圖像的直方圖形成了明顯的差異。利用這種特性,就可以很容易地檢測出秘密消息的存在。 JSteg隱寫過程JSteg的具體嵌入過程如下: (1)部分解碼JPEG圖像,得到二進制存儲的AC系數(shù),判斷該AC系數(shù)是否等于1或0,若等于則跳過該AC系數(shù),否則,執(zhí)行下一步。 (2)判斷二進制存儲的AC系數(shù)的LSB是否與要嵌入的秘密信息

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

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

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

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

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

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

18、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 王朔中,張新鵬,張開文. 數(shù)字密寫和密寫分析: 互聯(lián)網(wǎng)時代的信息戰(zhàn)技術M. 北京: 清華大學出版社, 2005 7 吳秋新,楊義先.信息隱藏技術隱寫術與數(shù)字水印M.人民郵電出版社,2001,9:3-8 8王炳錫,陳琦,鄧峰森.數(shù)字

19、水印技術M.西安電子科技大學出版社,2003. 9Stefan Katzenbeisser,Fabien A.P. Peticolas編.吳秋新,鈕心忻,楊義先,羅守山,楊曉兵,譯.信息隱藏技術)隱寫術與數(shù)字水印=Ml.北京:人民郵電出版社,2001. 10丁瑋,齊東旭.數(shù)字圖像變換及信息隱藏與偽裝技術IJ.計算機學報,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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論