吳少華,宋致虎,胡 勇
(四川大學 電子信息學院,四川 成都610064)
隨著互聯網技術的飛速發展,互聯網已成為人們最重要的通信手段。特別是大數據時代,海量數據廣泛分布,隨之而來的個人信息安全也越來越引起人們的重視,如何加強個人信息安全和隱私保護是擺在我們面前的一個重要課題。信息加密和信息隱藏是保護私密信息安全的兩種基本方法。信息加密是指對私密信息內容加密,由于加密后的信息無法直接讀取,因此易引起攻擊者的注意,截獲并破解,甚至破壞加密信息,信息的完整性很容易遭到破壞[1]。信息隱藏技術主要是指將特定的信息嵌入數字化宿主信息(如文本,數字化的聲音、圖像、視頻信號等)中,信息隱藏保證隱藏的信息不引起監控者的注意和重視,從而減少被攻擊的可能性。如在此基礎上再使用密碼技術可以極大地加強隱藏信息的安全性。文獻[2]研究了信息隱藏的分類和技術特征,并根據信息隱藏的宿主信息形式進行了分析。由于圖像文件本身占用空間較大,存在較大的可用空間,再加上人眼對圖像存在視覺冗余,因此,圖像數字圖像文件就成為了信息隱載體的最佳選擇。基于BMP圖像的LSB算法是最具代表性的信息隱藏算法。文獻[3]對LSB算法進行了仿真和分析,驗證了LSB算法的特性,引入偽裝密鑰增強了算法的魯棒性和安全性。為了提高在非授權情況下提取信息的難度與信息隱藏的效率,文中實現了改進的LSB算法:一是將控制信息也當作信息嵌入到BMP文件的圖像數據區,而不是放到位圖文件的保留字節;二是在信息隱藏前對私密信息進行了信息分割、RSA加密預處理;三是實現了改進的LSB算法。
BMP文件是Windows操作系統中標準的圖像文件格式,它將內存或顯示器的圖像數據直接按位存存儲到磁盤文件中,擴展名為BMP,稱為BMP位圖。BMP圖像文件包括4部分:位圖文件頭、位圖信息頭、顏色表和位圖數據[4]。
24位BMP圖像文件的結構特點:
1)文件頭由54個字節的數據段組成,包含圖像文件頭和圖像信息頭兩部分,文件頭表明了該圖像文件的類型、大小、圖像及打印格式等信息。
2)圖像數據部分從第55個字節開始,以圖像的左下角為起點,每個像素點用連續的3個字節表示,分別代表藍、綠、紅三基色在該像素中的亮度。
此外,還需要注的是Windows系統規定每個掃描行所占的字節數必須位4的整數倍,不足4的倍數的則要對其進行擴充。比如有一個W×H大小的位圖,其中W為位圖的寬度、H為位圖的高,每像素占N個比特,則掃描行所占的真實字節數為:
DataSizePerLine=(W×N/8+3)/4×4
在不壓縮情況下位圖數據的大小為:
biSizeImage=DataSizePerLine ×H1.2 BMP 文件中LSB應用
LSB(Least Significant Bit,最低比特位嵌入技術)是將私密信息嵌入BMP圖像文件的像素值的最低的1~3 bit,當嵌入的比特數不大于3時對載體圖像的品質影響最小,圖像質量不會明顯下降。在信息還原時只需知道嵌入比特數和具體比特位置便可將信息還原出來。對于BMP位圖文件,在不改變圖像的質量的情況下,根據亮度公式I=0.299R+0.587G+0.114B,以及人眼視網膜細胞對綠色最敏感,對藍色最不敏感的理論。對于每個BMP位圖像素,如果改變一個字節的最低有效位,其誤差率≤1/255。根據亮度公式,分別改變R、G、B各分量的最低2位、1位、3位,人眼仍不能明顯感覺到圖像的變化。因此,對于一幅24位位圖,其每像素可隱藏6 bit的信息。
信息分割的主要目的是為了增加信息隱藏技術的不可逆性,將私密信息隨機分割,記錄下分割順序后,將分割后的文件名通過MD5加密算法進行加密,私密信息分割后用信息接收方的公鑰進行RSA加密,信息只有接收方才能解密,因此大大增加了系統的安全性。信息分割流程如圖1所示。

圖1 文件分割流程Fig.1 Document segmentation procedure
2.2.1 RAS 加密算法流程
1)選兩個保密的大素數 p和 q[5]。
2)計算 n=pq,m=(p-1)(q-1),其中 m 是 n的歐拉函數值。
3)選一整數 e,滿足1<e<m,且 gcd(m,e)=1。
4)計算 d,滿足 de≡1modm。
5)以{e,n}為公鑰,{d,n}為私鑰。
6)將明文P,加密為密文C,計算方法為:c≡P^emodn。
7)將密文C解密為明文P,計算方法為:P≡C^dmodn。
2.2.2 私密信息RSA加密算法描述


通常LSB算法是采用直接轉換載體圖像的最低位方法來隱藏私密信息。比如利用LSB算法置最低k位實現在一個M×N大小的載體圖像中隱藏私密信息,則私密信息的提取公式為:

其中,m為提取的私密信息值,x'為按照LSB算法置換后的該像素點的值。根據模的性質,假設A mod B=C,且 A≥B,則(A-B)mod B=C。基于這一性質,文獻[1]對傳統的LSB算法進行了改進。
設x表示置換前該點的像素值,d為置換前后像素值的變化量,則:

d的范圍可分為如下三個區間:

對于第一種條件下,當x'<256-2k時,令x'=x'+2k,其余情況 x'不變。
對于第二種條件,x'保持不變。
對于第三種條件,當x'≥2k時,令 x'=x'-2k,其余情況x'不變。
流程圖如圖2所示。

圖2 LSB算法流程Fig.2 Procedure of LSB algorithm
比如當x=247時,其二進制代碼為11110111,待隱藏的私密信息的二進制代碼為001,采用LSB算法置換低三位,那么 x'=241,二進制代碼為11110001。此時d=6,k=3,屬于第一種條件,將x'的值重新置為249,二進制代碼為11111001,由此可見,采用改進的LSB算法相對于原像素的值僅改變了2個單位,而提取私密信息的結果并不會改變。
如圖3所示,系統設計流程如下:
加密過程如下:
1)首先讀取隱藏信息獲取隱藏信息的大小,將隱藏信息進行分割處理,分割數量根據秘密文件的大小以及載體文件的最大隱藏值決定,不論隱藏信息大小如何,其分割數量不得小于5個,另外分割后的文件需要按進行序號標注,序號采用MD5進行加密。
2)將分割后的秘密文件分別運用RSA加密算法進行加密。
3)根據分割文件數量載入掩護BMP圖像文件,將每個隱藏信息塊分別隱藏到相應的掩護BMP圖像文件中。
4)將所有已加密隱藏后的圖像文件生成一個統一的壓縮包,壓縮包內是所有的隱藏圖像文件。
解密過程正好與之相反。

圖3 系統流程Fig.3 System procedure
程序運行界面如圖4所示,首先點擊“瀏覽”按鈕選擇待加密的私密文件,然后再選擇所使用密鑰,最后點擊加密按鈕,程序即按照文中所闡述的原理對私密文件進行加密和隱藏。

圖4 程序運行界面Fig.4 Program interface
相對于傳統的LSB算法,實現了一種改進的算法,使得文中的信息隱藏具有更好的隱藏效果,具體體現在以下幾點:
改進LSB算法復雜度低,僅對信息進行加或減運算,提高了信息隱藏效率;
對于24位BMP圖像文件,每個像素用3個字節來表示,其中的6個比特可以用作隱藏信息,而文中改進后LSB算法可以利用其中的8個比特隱藏信息,擴充了可隱藏信息的容量,提高了隱藏效率,而載體圖像質量并沒有明顯改變。
通過信息分割、RSA加密預處理,大大提高了在非授權情況下提取信息的難度。
[1]馮雪峰.改進 LSB算法及其在 BMP圖像中的應用[J].信息技術,2006(01):30 -32.FENG Xue-feng.An Improved LSB Algorithm for BMP Files[J].Information Technology,2006(01):30 - 32.
[2]王衍波,張凱澤,端木慶峰,等.廣義信息隱藏技術分類研究[J].軍事通信技術,2007,28(04):45-50.WANG Yan-bo,ZHANG Kai-ze,DUANMU Qingfen,WANG Jing-yu.Classification of Generalized Information Hiding Technology[J].Journal of Military Communications Technology,2007,28(04):45 -50.
[3]趙曼,張衛黨.基于圖像的信息隱藏技術的實現[J].通信技術,2008,41(05):128-129.ZHAO Man,ZHANG Wei- dang.Realization Based on Images Information Hiding Technology[J].Communications Technology.2008,41(05):128 -129.
[4]張維谷.圖像文件格式(上)windows編程[M].北京:清華大學出版社,1996:40-82.ZANG Wei-gu.Image File Format Windows Programming[M].BeiJing,Tsinghua University Press,1996:40 -82.
[5]斯托林斯.密碼編碼學與網絡安全[M].北京:電子工業出版社,2011:266-300.William Stallings.Cryptography and Network Security[M].BeiJing,Pulishing House of Electronics Industry,2011:266-300.