文/林翔
互聯(lián)網(wǎng)的發(fā)展,打破了時(shí)空障礙,使得信息的傳遞變得越來越快,范圍越來越廣。由于網(wǎng)絡(luò)協(xié)議存在安全漏洞,因此信息在傳輸過程中有可能被篡改、偽造和泄漏等,這也給有心之人留下了可乘之機(jī),他們通過網(wǎng)絡(luò)實(shí)施詐騙、竊取公民隱私、進(jìn)行網(wǎng)上非法交易等等犯罪行為。為了更好地保護(hù)通信過程中信息的安全和隱私權(quán),實(shí)現(xiàn)保密通信,防止敏感信息被竊取或泄漏,需要對(duì)傳輸?shù)男畔⑦M(jìn)行預(yù)先處理,主要從信息源和信息傳輸途徑兩個(gè)方面考慮。
在信息源上采取加密技術(shù),通過加密隱藏明文數(shù)據(jù)的內(nèi)容,來實(shí)現(xiàn)對(duì)真實(shí)信息的掩蓋,常用的算法有AES算法、MD5加密算法、RSA算法和CCEP算法等。在傳輸途徑上可采用信息隱藏技術(shù),利用人類視覺有限性的特點(diǎn),將信息偽裝在正常的載體上,載體可以是文件、視頻、音頻、圖像等等,常見的方法有隱寫術(shù)、數(shù)字水印、視覺密碼、潛信道、隱匿協(xié)議等。目前,這些技術(shù)被分別應(yīng)用在身份認(rèn)證、數(shù)字版權(quán)保護(hù)、數(shù)據(jù)保密等方面。
本文設(shè)計(jì)的軟件將這兩類技術(shù)結(jié)合應(yīng)用,各取所長(zhǎng),對(duì)通信過程中的信息進(jìn)行加密和偽裝,實(shí)現(xiàn)信息的保密通信。由于在加密技術(shù)中,AES高級(jí)加密標(biāo)準(zhǔn)屬于對(duì)稱密碼體制中的分組密碼技術(shù),其算法設(shè)計(jì)簡(jiǎn)潔、高效、安全性高。而在信息隱藏載體中,圖像的可藏容量較大,人的視覺系統(tǒng)又對(duì)圖像的某些信息具有一定的掩蔽效應(yīng),圖像是比較理想的偽裝載體。因此,設(shè)計(jì)將AES加密算法和LSB圖像隱寫技術(shù)結(jié)合應(yīng)用,利用無壓縮的BMP圖像為載體,對(duì)信息進(jìn)行保密處理。
高級(jí)加密標(biāo)準(zhǔn)AES算法是一種對(duì)稱分組算法,它的輸入分組、輸出分組以及加/解密過程中的中間分組都是128位,支持的密鑰長(zhǎng)度可為:128位、192位、256位,迭代輪數(shù)分別為10輪、12輪、14輪。AES算法的核心包含三個(gè)部分:密鑰擴(kuò)展、數(shù)據(jù)加密和數(shù)據(jù)解密。
2.1.1 密鑰擴(kuò)展
本方案實(shí)現(xiàn)的是AES-128算法,迭代數(shù)為10輪,因此需要擴(kuò)展出10個(gè)子密鑰,每個(gè)密鑰長(zhǎng)度為128位。首先將用戶輸入的密鑰作為初始密鑰,按列排成一個(gè)4×4的矩陣,每一列記為w[i],此時(shí)的i=0,1,2,3。而擴(kuò)展子密鑰w[4,43]按照公式(1)求解獲得,其中逢4倍數(shù)的列需要特別處理。
圖1:AES算法加密實(shí)現(xiàn)流程示意圖
以求解w[4]為例,首先由w[3]列的數(shù)據(jù)(d0,d1,d2,d3)左移一個(gè)字節(jié)變成(d1,d2,d3,d0),再按照AES算法的S盒進(jìn)行查表置換,獲得新的數(shù)據(jù)(e1,e2,e3,e4),最后與AES算法32位常量(RC[i/4],0,0,0)進(jìn)行異或運(yùn)算,即w[4]=(e1,e2,e3,e4)XOR(1,0,0,0),RC={01,0 2,04,08,10,20,40,80,1B,36}。
2.1.2 數(shù)據(jù)加密
AES加密過程涉及到4種操作:字節(jié)替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。加密流程示意圖如圖1所示,首先對(duì)明文消息進(jìn)行128位分組,前9次的加密過程是一樣的,需要經(jīng)過S盒變換(字節(jié)替代)、行移位、列混淆和輪密鑰加,而第10次的加密過程沒有列混淆,列混淆的加密運(yùn)算見公式(2),s(i,j)是第i行,第j列的字節(jié)數(shù)據(jù)。
2.1.3 數(shù)據(jù)解密
AES算法加密實(shí)現(xiàn)流程示意圖如圖1所示。解密過程是加密的逆過程,加密的四個(gè)操作都是可逆的,通過相反的過程進(jìn)行解密就能恢復(fù)明文。加/解密過程的時(shí)候,每一輪操作的密鑰分別由第一次的密鑰的遞歸計(jì)算所得到,每一個(gè)運(yùn)算都由經(jīng)過轉(zhuǎn)換的矩陣進(jìn)行,此時(shí)列混淆的解密運(yùn)算見公式(3)。
表1:24位BMP圖像文件結(jié)構(gòu)簡(jiǎn)明表
圖2:文件安全傳輸流程
圖3:基于Qt開發(fā)的軟件圖像界面
LSB(最低有效位)信息隱藏算法是圖像空間域算法,它通過修改每個(gè)像素二進(jìn)制位的最低位,將信息隱藏在像素字節(jié)的奇偶性中。數(shù)字圖像經(jīng)過采樣量化后,每個(gè)像素由8位的二進(jìn)制數(shù)表示,按照顏色劃分不同的色階,通過修改像素字節(jié)的最低位,使得每個(gè)像素能夠至少隱藏1bit的信息,由此引起圖片在色彩、明亮度上的改變是微乎其微的,由于對(duì)于人眼來說無法覺察,因此能夠?qū)崿F(xiàn)對(duì)加密信息的偽裝,這便是LSB算法的核心思想。
具體嵌入信息的過程:首先,計(jì)算圖像內(nèi)容中每個(gè)像素字節(jié)的奇偶性,再和待隱藏信息的字節(jié)數(shù)據(jù)進(jìn)行異或運(yùn)算,最后將異或的結(jié)果寫入每個(gè)像素字節(jié)數(shù)據(jù)的最低位。提取被隱藏信息的過程和嵌入過程是互逆的,因此不再重復(fù)描述。
本設(shè)計(jì)基于QT開發(fā)平臺(tái),利用AES算法對(duì)待保護(hù)信息進(jìn)行加密,再將加密后的密文隱寫在24位的BMP彩色圖像中進(jìn)行傳輸,應(yīng)用的流程如圖2所示。Qt開發(fā)平臺(tái)是一個(gè)跨平臺(tái)的圖形用戶界面應(yīng)用程序,具有完善的C++圖像庫,十分便利,因此選擇Qt creater作為圖形界面設(shè)計(jì)的開發(fā)平臺(tái)。
通過QT Creater(mingw編譯器)軟件搭建圖形界面,如圖3所示,窗口上設(shè)置了AES加/解密、密鑰的輸入、明文的輸入、清空明文、清空密文、清空輸入、讀取BMP圖片、保存BMP圖片、隱寫加密、隱寫解密的功能。
基于QT平臺(tái),使用C++語言實(shí)現(xiàn)AES算法。首先從圖形界面獲得輸入的key,作為初始密碼,不足128位的部分填充0,按照密鑰擴(kuò)展的方法求解出10個(gè)子密鑰,按照?qǐng)D1所示流程進(jìn)行字節(jié)替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)的9輪運(yùn)算,最后第10輪不進(jìn)行列混淆,于是得到密文。解密時(shí),首先需要獲得LSB算法從圖像中提取的密文,而后再由AES解密算法破解,獲得明文。
圖4:加密隱寫成功界面
圖5:隱寫解密成功界面
BMP位圖由于是無壓縮的,因此可以精準(zhǔn)的控制像素值,24位BMP彩色位圖的文件結(jié)構(gòu)如表1所示。
BMP文件頭(bitmap-file header)(14字節(jié))包含了圖像類型、圖像大小、圖像數(shù)據(jù)存放地址和兩個(gè)保留未使用的字段。位圖信息頭(bitmap-information header)(40字節(jié))包含有BMP圖像的寬、高、壓縮方法,以及顏色定義等信息。位圖數(shù)據(jù)(bitmap-data)的大小由BMP位圖使用的位數(shù)決定,在24位圖中直接使用RGB(紅、綠、藍(lán)三色)表示,三種顏色各用8個(gè)bit,每個(gè)像素需要3個(gè)字節(jié)才能表示完全。因此,按照LSB算法思想,每個(gè)像素可以至少隱藏3bit的信息。同時(shí),由表1可知,為不改變BMP圖像的文件格式,使其能夠被系統(tǒng)正常識(shí)別和顯示,需從第55個(gè)字節(jié)開始進(jìn)行信息隱寫。隱寫時(shí),首先構(gòu)造密文的字節(jié)流,而后按照LSB算法,先計(jì)算BMP圖像像素的RGB各字節(jié)的奇偶性,再將密文字節(jié)流和獲得的奇偶性字節(jié)流進(jìn)行異或運(yùn)算,將運(yùn)算結(jié)果逐個(gè)寫入圖像從第55字節(jié)開始的位置。結(jié)果如圖4所示,例子中載體圖像分辨率為884×842像素,大小約為16Mbit,按照一個(gè)像素嵌入3個(gè)bit的藏量,最大可藏入約2Mbit的信息。按照算法的逆過程,可以得到圖5所示的對(duì)載體圖像的解密結(jié)果。
安全性方面,由于對(duì)稱性加密算法安全性依賴與分組長(zhǎng)度、密鑰長(zhǎng)度,而AES算法的密鑰長(zhǎng)度可為128、192、256,輪密鑰加的隨機(jī)性強(qiáng),有效密鑰空間大,所以安全性較好,通過改變密鑰的長(zhǎng)度,也可提高算法的靈活性。
另外,由于AES加密后的信息顯示為亂碼,容易引起注意,遭受對(duì)抗攻擊,因此,本設(shè)計(jì)在加密之后對(duì)其再進(jìn)行圖像隱寫,將密文隱藏在正常圖像中,從而躲避了視覺觀察,避免引起注意和遭受攻擊,給信息加上了多重保障,增強(qiáng)了信息的安全性。
從圖像隱寫前和隱寫后對(duì)比,肉眼上看不出區(qū)別,實(shí)現(xiàn)了安全隱藏,但由于LSB算法的防篡改性能不佳,因此當(dāng)圖像遭受破壞時(shí),密文也將無法提取。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,信息安全問題關(guān)系到個(gè)人、企業(yè)和國(guó)家,越來越多的企業(yè)花重金購買安全通信系統(tǒng)或產(chǎn)品,以維護(hù)自身權(quán)益或保護(hù)商業(yè)機(jī)密,而對(duì)于個(gè)人來說,在安全通信產(chǎn)品的價(jià)格和日益增長(zhǎng)的個(gè)人隱私保護(hù)需求不匹配的情況下,為了幫助解決目前大多數(shù)信息“裸奔”的情況,本文提出并實(shí)現(xiàn)了一種結(jié)合加密和圖像隱寫技術(shù)的信息安全加密軟件,為信息的安全傳輸提供了一種手段,通過測(cè)試,該方法能實(shí)現(xiàn)對(duì)信息的有效加密隱藏,具有偽裝性和安全性,但隨著加密技術(shù)和隱寫技術(shù)的改進(jìn)和發(fā)展,可以借鑒的算法越來越多,今后,還將繼續(xù)對(duì)算法的改進(jìn)做研究,以期提高該設(shè)計(jì)中算法的抗攻擊能力。