趙 健
四川大學(xué)計(jì)算機(jī)學(xué)院,四川 成都 610064
信息隱藏技術(shù)是20世紀(jì)90年代中期從國外興起的,集多學(xué)科理論與技術(shù)于一身的新興技術(shù)。它利用人類感覺器官的不敏感,以及多媒體數(shù)字信號(hào)本身存在的冗余,將秘密信息隱藏在一個(gè)宿主信號(hào)中,不被人的感知系統(tǒng)察覺或不被注意到,而且不影響宿主信號(hào)的感覺效果和使用價(jià)值[1]。與密碼術(shù)相比,信息隱藏不僅隱藏了信息的內(nèi)容,而且隱藏了信息的存在,因而在信息安全領(lǐng)域顯示出更為優(yōu)良的特性。信息隱藏技術(shù)主要的性能指標(biāo)包括隱蔽性、嵌入量和穩(wěn)健性[2]。
信息隱藏的載體多種多樣,但目前人們主要用圖像、音視頻等多媒體文件來作為隱藏載體,目前研究多媒體文件的隱寫分析算法以及研究對(duì)其進(jìn)行隱藏攻擊的算法越來越多,再加上多媒體文件種類眾多且相互之間的轉(zhuǎn)換較為頻繁,在轉(zhuǎn)換過程中很有可能會(huì)導(dǎo)致嵌入信息全部或部分的丟失。相對(duì)而言,PE格式的EXE文件結(jié)構(gòu)盡管比較復(fù)雜,但格式相對(duì)單一,沒有不同文件格式間的相互轉(zhuǎn)化。故將PE格式的文件作為隱藏載體可較好的解決部分信息丟失的問題。目前以PE文件作為信息隱藏的載體的相關(guān)研究還較少,更鮮有相關(guān)商品化的軟件推出。
PE(Portable Executable)文件格式是Microsoft制定的一種文件標(biāo)準(zhǔn)。它是Win32環(huán)境自身所帶的執(zhí)行體文件格式。它由DOS部首、PE文件頭、節(jié)表、節(jié)數(shù)據(jù)、調(diào)試信息5部分組成。其總體層次分布[3]如圖1所示:
圖1 PE文件結(jié)構(gòu)
經(jīng)分析,在PE格式文件中,有些成員變量的值不影響程序的正常加載和運(yùn)行,還有一些未經(jīng)利用的空閑區(qū)域,它們都可以用來嵌入信息。經(jīng)總結(jié),PE文件中的冗余空間大致可有以下幾類:
1)改變其值不影響程序正常運(yùn)行的一些成員變量;
2)PE文件頭和DOS部首之間的空閑區(qū)域;
3)磁盤偏移最小的節(jié)和PE文件頭之間的空閑區(qū)域;
4)PE文件的每個(gè)節(jié)中未被利用的空間;
5)文件末尾最后一個(gè)節(jié)除去實(shí)際占用的空間所剩下的空閑區(qū)域;
6)資源節(jié)中存在的4種冗余[5]。
AES即Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn)。是NIST(National Institute of Standards Technology)于1997年開始向世界范圍內(nèi)征集的加密算法,用于替代DES成為新一代的加密標(biāo)準(zhǔn)。這個(gè)加密算法是分組加密算法,信息的內(nèi)容是以128位長度的分組為加密單元,加密密匙長度有128,192和256位3種選擇,分別稱作AES-128、AES-192AES-256。下面提到的AES,如無特別聲明,專指FIPS-197中規(guī)定的AES算法。
AES算法的基本處理單元叫做字節(jié),它由8比特序列組成,被看成一個(gè)整體。在AES中,這些字節(jié)以有限域上的多項(xiàng)式來表示:
其中,bi(i≤i≤7)分別代表了一個(gè)字節(jié)的8個(gè)比特位。
AES的所有操作都是在一個(gè)稱作狀態(tài)矩陣的二維字節(jié)數(shù)組上進(jìn)行的。該結(jié)構(gòu)具有4個(gè)行,每行包括Nb個(gè)字節(jié),它的值是由分組長度除以32得到的。在AES算法中,輸入輸出分組和狀態(tài)矩陣的長度都是128比特,則Nb=4。密鑰K的長度為128、192、256比特,用Nk=4、6或者8來表示。加密或者解密函數(shù)需執(zhí)行的輪數(shù)取決于密鑰的長度。輪數(shù)用Nr表示,當(dāng)Nk=4時(shí),Nr=10;當(dāng)Nk=6時(shí),Nr=12;Nk=10時(shí),Nr=14。
不管是AES的加密還是解密操作,都要反復(fù)用到輪函數(shù)操作。輪函數(shù)由4部分相對(duì)獨(dú)立的變換組成:
1)字節(jié)代換操作(SubBytes)。實(shí)際上是一個(gè)簡單的查表操作,AES定義了一個(gè)16×16的轉(zhuǎn)換表(S-box),通過查表狀態(tài)矩陣中的元素映射為一個(gè)新的字節(jié);
2)行移位操作(ShiftRow)。對(duì)狀態(tài)矩陣每行的元素進(jìn)行不同偏移量的移位。其規(guī)則是:狀態(tài)矩陣第一行保持不變,第二、三、四行分別循環(huán)左移1個(gè)、2個(gè)、3個(gè)字節(jié);
3)列混淆操作(MixColumn)。它把狀態(tài)矩陣中的每一列當(dāng)成一個(gè)在GF(28)上的多項(xiàng)式,然后乘以一個(gè)固定的多項(xiàng)式a( x),再對(duì)多項(xiàng)式(x4+1)取模。其中a( x)定義如下:
4)輪密鑰加操作(AddRoundKey)。輪密鑰加操作是將狀態(tài)矩陣中的元素同輪密鑰進(jìn)行的簡單的異或運(yùn)算。這里的輪密鑰是由用戶輸入的密鑰通過密鑰擴(kuò)展后生成的,它同樣可以看作一個(gè)狀態(tài)矩陣。
開始加密時(shí),首先將輸入按時(shí)間順序填入狀態(tài)矩陣,先進(jìn)行一個(gè)初始的輪密鑰加操作,然后根據(jù)密鑰長度執(zhí)行相應(yīng)的Nr次輪函數(shù)對(duì)狀態(tài)矩陣進(jìn)行變換。其中最后一輪操作稍許不同,沒有列混淆操作。最終得到的狀態(tài)矩陣按順序?qū)⒃厝〕?,就是最后的密文。整個(gè)加密過程可用偽代碼表示如下[4]:
AES算法的解密算法是加密算法的逆過程。它也要執(zhí)行輪函數(shù)變換,只不過這個(gè)輪函數(shù)的每一個(gè)組成變換都是加密過程的逆運(yùn)算:“字節(jié)代換逆變換操作InvSubBytes()、行移位逆變換操作InvShiftRows()、列混淆逆變換操作InvMixColumns()、和輪密鑰加逆變換操作AddRoundKey()”等四個(gè)變換。
目前,流行的信息隱藏的一般模型如圖2所示:
圖2 信息隱藏的一般模型
隱藏過程:為加強(qiáng)整個(gè)系統(tǒng)的安全性,首先對(duì)消息M做加密或者置亂等預(yù)處理,這樣形成消息M1,然后用一個(gè)隱藏嵌入算法和密鑰Kl把預(yù)處理后的消息M,隱藏到載體C中,從而得到隱蔽載體S。
提取過程:用提取算法和密鑰K2從隱蔽載體S中提取消息M1,,然后使用相應(yīng)的解密或重置等處理方法由M1恢復(fù)出真正的消息M。如果Kl=K2,那么可以說這個(gè)隱藏嵌入算法是對(duì)稱隱藏算法,否則稱這個(gè)算法為非對(duì)稱隱藏算法。
載體C可以是文本、聲音、圖像和視頻,隱藏嵌入算法可以是空域方法及變換域方法。
在我們的系統(tǒng)中,載體文件C采用PE文件,預(yù)處理中的加密算法采用AES算法。其加密和的流程圖如圖3。
信息的提取過程是嵌入過程的逆過程,采用提取算法將隱藏信息提取出來之后,再對(duì)其進(jìn)行解密。
圖3 加密流程圖
在基于PE文件實(shí)現(xiàn)信息隱藏方案的基礎(chǔ)上,本文在VC6.O中進(jìn)行模擬實(shí)現(xiàn)。本方案以Windows XP下的系統(tǒng)文件“freecell.exe”為例進(jìn)行分析,在下圖4的“PE文件”中通過瀏覽讀取PE文件,程序會(huì)自動(dòng)分析出該文件的結(jié)構(gòu)信息。
圖4 PE文件分析后的系統(tǒng)界面
本文選用文本文件test.txt作為實(shí)驗(yàn)用的隱藏文件,通過上圖的“導(dǎo)入文件”,程序要先對(duì)文本文件text.txt進(jìn)行加密,然后嵌入到PE文件中,通過“導(dǎo)出文件”,可提出所隱藏的信息并對(duì)之進(jìn)行解密。
運(yùn)行隱藏信息之后的freecell.exe,可以看到,它可以正常運(yùn)行,和隱藏信息之前的運(yùn)行結(jié)果并無區(qū)別。這說明隱藏的信息不影響源文件的正常執(zhí)行。
在本模型中,應(yīng)用了高級(jí)加密標(biāo)準(zhǔn)AES對(duì)隱藏的信息進(jìn)行了預(yù)處理。相較DES算法,AES無論在速度還是在保密性方面都具有優(yōu)越性。
PE格式是當(dāng)今個(gè)人電腦上最普及的文件格式之一,本文首先分析了Win32 PE文件的基本結(jié)構(gòu),分析結(jié)果表明了PE格式文件具有大量的冗余空間。在此基礎(chǔ)上,根據(jù)信息隱藏的一般模型,本文提出了基于PE文件的信息隱藏模型,模型中采用了AES對(duì)嵌入信息進(jìn)行加密和解密,以進(jìn)一步提高其安全性。經(jīng)試驗(yàn)證明該模型可以保證信息的隱藏和提取,且嵌入后的載體文件可以正常運(yùn)行,具有較好的隱藏效果。
[1]王炳錫,彭天強(qiáng).信息隱藏技術(shù)[M].國防工業(yè)出版社,2007:1-2.
[2]王朔中,張新鵬,張開文.數(shù)字密寫和密寫分析[M].北京:清華大學(xué)出版社,2005,10-11.
[3]Microsoft Corporation.Microsoft Portable Exeeutable and Common Objeet File Format Specification,Revision6.0[EB/OL],1999,2.
[4]Ntional Institute of Standards and Technology(NIST).Advanced Encryption Standard(AES).Federal Information Processing Standards(FIPS) Publication 197,2001,11.
[5]徐曉靜,徐向陽,梁海華,黃友榮.PE文件資源節(jié)的信息隱藏研究與方案實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2007,27(3):621-623.