文/林翔
互聯網的發展,打破了時空障礙,使得信息的傳遞變得越來越快,范圍越來越廣。由于網絡協議存在安全漏洞,因此信息在傳輸過程中有可能被篡改、偽造和泄漏等,這也給有心之人留下了可乘之機,他們通過網絡實施詐騙、竊取公民隱私、進行網上非法交易等等犯罪行為。為了更好地保護通信過程中信息的安全和隱私權,實現保密通信,防止敏感信息被竊取或泄漏,需要對傳輸的信息進行預先處理,主要從信息源和信息傳輸途徑兩個方面考慮。
在信息源上采取加密技術,通過加密隱藏明文數據的內容,來實現對真實信息的掩蓋,常用的算法有AES算法、MD5加密算法、RSA算法和CCEP算法等。在傳輸途徑上可采用信息隱藏技術,利用人類視覺有限性的特點,將信息偽裝在正常的載體上,載體可以是文件、視頻、音頻、圖像等等,常見的方法有隱寫術、數字水印、視覺密碼、潛信道、隱匿協議等。目前,這些技術被分別應用在身份認證、數字版權保護、數據保密等方面。
本文設計的軟件將這兩類技術結合應用,各取所長,對通信過程中的信息進行加密和偽裝,實現信息的保密通信。由于在加密技術中,AES高級加密標準屬于對稱密碼體制中的分組密碼技術,其算法設計簡潔、高效、安全性高。而在信息隱藏載體中,圖像的可藏容量較大,人的視覺系統又對圖像的某些信息具有一定的掩蔽效應,圖像是比較理想的偽裝載體。因此,設計將AES加密算法和LSB圖像隱寫技術結合應用,利用無壓縮的BMP圖像為載體,對信息進行保密處理。
高級加密標準AES算法是一種對稱分組算法,它的輸入分組、輸出分組以及加/解密過程中的中間分組都是128位,支持的密鑰長度可為:128位、192位、256位,迭代輪數分別為10輪、12輪、14輪。AES算法的核心包含三個部分:密鑰擴展、數據加密和數據解密。
2.1.1 密鑰擴展
本方案實現的是AES-128算法,迭代數為10輪,因此需要擴展出10個子密鑰,每個密鑰長度為128位。首先將用戶輸入的密鑰作為初始密鑰,按列排成一個4×4的矩陣,每一列記為w[i],此時的i=0,1,2,3。而擴展子密鑰w[4,43]按照公式(1)求解獲得,其中逢4倍數的列需要特別處理。

圖1:AES算法加密實現流程示意圖
以求解w[4]為例,首先由w[3]列的數據(d0,d1,d2,d3)左移一個字節變成(d1,d2,d3,d0),再按照AES算法的S盒進行查表置換,獲得新的數據(e1,e2,e3,e4),最后與AES算法32位常量(RC[i/4],0,0,0)進行異或運算,即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 數據加密
AES加密過程涉及到4種操作:字節替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。加密流程示意圖如圖1所示,首先對明文消息進行128位分組,前9次的加密過程是一樣的,需要經過S盒變換(字節替代)、行移位、列混淆和輪密鑰加,而第10次的加密過程沒有列混淆,列混淆的加密運算見公式(2),s(i,j)是第i行,第j列的字節數據。

2.1.3 數據解密
AES算法加密實現流程示意圖如圖1所示。解密過程是加密的逆過程,加密的四個操作都是可逆的,通過相反的過程進行解密就能恢復明文。加/解密過程的時候,每一輪操作的密鑰分別由第一次的密鑰的遞歸計算所得到,每一個運算都由經過轉換的矩陣進行,此時列混淆的解密運算見公式(3)。



表1:24位BMP圖像文件結構簡明表

圖2:文件安全傳輸流程

圖3:基于Qt開發的軟件圖像界面
LSB(最低有效位)信息隱藏算法是圖像空間域算法,它通過修改每個像素二進制位的最低位,將信息隱藏在像素字節的奇偶性中。數字圖像經過采樣量化后,每個像素由8位的二進制數表示,按照顏色劃分不同的色階,通過修改像素字節的最低位,使得每個像素能夠至少隱藏1bit的信息,由此引起圖片在色彩、明亮度上的改變是微乎其微的,由于對于人眼來說無法覺察,因此能夠實現對加密信息的偽裝,這便是LSB算法的核心思想。
具體嵌入信息的過程:首先,計算圖像內容中每個像素字節的奇偶性,再和待隱藏信息的字節數據進行異或運算,最后將異或的結果寫入每個像素字節數據的最低位。提取被隱藏信息的過程和嵌入過程是互逆的,因此不再重復描述。
本設計基于QT開發平臺,利用AES算法對待保護信息進行加密,再將加密后的密文隱寫在24位的BMP彩色圖像中進行傳輸,應用的流程如圖2所示。Qt開發平臺是一個跨平臺的圖形用戶界面應用程序,具有完善的C++圖像庫,十分便利,因此選擇Qt creater作為圖形界面設計的開發平臺。
通過QT Creater(mingw編譯器)軟件搭建圖形界面,如圖3所示,窗口上設置了AES加/解密、密鑰的輸入、明文的輸入、清空明文、清空密文、清空輸入、讀取BMP圖片、保存BMP圖片、隱寫加密、隱寫解密的功能。
基于QT平臺,使用C++語言實現AES算法。首先從圖形界面獲得輸入的key,作為初始密碼,不足128位的部分填充0,按照密鑰擴展的方法求解出10個子密鑰,按照圖1所示流程進行字節替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)的9輪運算,最后第10輪不進行列混淆,于是得到密文。解密時,首先需要獲得LSB算法從圖像中提取的密文,而后再由AES解密算法破解,獲得明文。

圖4:加密隱寫成功界面

圖5:隱寫解密成功界面
BMP位圖由于是無壓縮的,因此可以精準的控制像素值,24位BMP彩色位圖的文件結構如表1所示。
BMP文件頭(bitmap-file header)(14字節)包含了圖像類型、圖像大小、圖像數據存放地址和兩個保留未使用的字段。位圖信息頭(bitmap-information header)(40字節)包含有BMP圖像的寬、高、壓縮方法,以及顏色定義等信息。位圖數據(bitmap-data)的大小由BMP位圖使用的位數決定,在24位圖中直接使用RGB(紅、綠、藍三色)表示,三種顏色各用8個bit,每個像素需要3個字節才能表示完全。因此,按照LSB算法思想,每個像素可以至少隱藏3bit的信息。同時,由表1可知,為不改變BMP圖像的文件格式,使其能夠被系統正常識別和顯示,需從第55個字節開始進行信息隱寫。隱寫時,首先構造密文的字節流,而后按照LSB算法,先計算BMP圖像像素的RGB各字節的奇偶性,再將密文字節流和獲得的奇偶性字節流進行異或運算,將運算結果逐個寫入圖像從第55字節開始的位置。結果如圖4所示,例子中載體圖像分辨率為884×842像素,大小約為16Mbit,按照一個像素嵌入3個bit的藏量,最大可藏入約2Mbit的信息。按照算法的逆過程,可以得到圖5所示的對載體圖像的解密結果。
安全性方面,由于對稱性加密算法安全性依賴與分組長度、密鑰長度,而AES算法的密鑰長度可為128、192、256,輪密鑰加的隨機性強,有效密鑰空間大,所以安全性較好,通過改變密鑰的長度,也可提高算法的靈活性。
另外,由于AES加密后的信息顯示為亂碼,容易引起注意,遭受對抗攻擊,因此,本設計在加密之后對其再進行圖像隱寫,將密文隱藏在正常圖像中,從而躲避了視覺觀察,避免引起注意和遭受攻擊,給信息加上了多重保障,增強了信息的安全性。
從圖像隱寫前和隱寫后對比,肉眼上看不出區別,實現了安全隱藏,但由于LSB算法的防篡改性能不佳,因此當圖像遭受破壞時,密文也將無法提取。
隨著互聯網技術的發展,信息安全問題關系到個人、企業和國家,越來越多的企業花重金購買安全通信系統或產品,以維護自身權益或保護商業機密,而對于個人來說,在安全通信產品的價格和日益增長的個人隱私保護需求不匹配的情況下,為了幫助解決目前大多數信息“裸奔”的情況,本文提出并實現了一種結合加密和圖像隱寫技術的信息安全加密軟件,為信息的安全傳輸提供了一種手段,通過測試,該方法能實現對信息的有效加密隱藏,具有偽裝性和安全性,但隨著加密技術和隱寫技術的改進和發展,可以借鑒的算法越來越多,今后,還將繼續對算法的改進做研究,以期提高該設計中算法的抗攻擊能力。