孟令國
【關(guān)鍵詞】數(shù)字圖像;安全;泄露;篡改;Rijndael 算法
(一)研究背景及意義
21世紀(jì)的今天“Digitizing”、“Informatization”不斷發(fā)展,并逐漸深入到人們的生活中。數(shù)字圖像的普及應(yīng)運而生,它以快速、便捷等優(yōu)勢深受人們的喜愛,也是人們溝通交流不可或缺的一部分。運用頻率的提升人們,也關(guān)心其安全性[1]。
圖像數(shù)據(jù)的可靠安全處理是當(dāng)前研究的重要方向之一,它具有保證圖像信息的安全、拓展加密技術(shù)的研究領(lǐng)域等意義。
(二)技術(shù)算法
1、Rijndael算法的詳細(xì)描述
(1)算法簡介
Rijndael算法是美國政府取代早期的數(shù)據(jù)加密標(biāo)準(zhǔn)而使用的標(biāo)準(zhǔn)加密算法。它是基于置換和代替的,主要優(yōu)勢便是允許數(shù)據(jù)區(qū)塊以及密鑰的長度獨立變化。
2、偽隨機(jī)數(shù)
(1)動力系統(tǒng)生成偽隨機(jī)數(shù)序列
偽隨機(jī)數(shù)是密碼學(xué)中最重要的一項技術(shù),它是密碼系統(tǒng)安全性的重要保障?;煦缧蛄斜闶莻坞S機(jī)數(shù)的產(chǎn)物[2]?;煦缧蛄挟a(chǎn)生公式:
(2) 二進(jìn)制混沌偽隨機(jī)序列
表達(dá)式: = f( )
非周期、不收斂、非線性是改隨機(jī)數(shù)列的特點,選取初始值,通過反復(fù)迭代產(chǎn)生混沌序列 ,在通過f( )產(chǎn)生二進(jìn)制混沌偽隨機(jī)序列做密鑰。
(一)數(shù)字圖像置亂
隨著電腦、智能手機(jī)的普及,越來越多的人選擇在線互動,隨之而生的便是圖像的安全性和有效性得不到全面保障,因為圖像信息的泄露導(dǎo)致巨大損失的事情比比皆是。
通過結(jié)合圖像加密和圖像隱藏生成了兩種解決方案:圖像置亂處理;信息隱藏和偽裝。圖像置亂變換是通過改變像素的位置或顏色而形成的一種保護(hù)技術(shù)。
圖像置亂方法主要有三種[3]:
1、基于Arnold變換的置亂方法;
2、用分形圖形的方法填充空間曲線;
3、運用數(shù)學(xué)知識和奇異現(xiàn)象。
(二)基于Rijndael的圖像置亂算法分析
數(shù)字矩陣是人們常用的方法之一,矩陣的數(shù)值即為灰度值。本結(jié)采用的是基于Rijndael的圖像置亂算法。
該算法主要由三部分組成:
(1)通過偽隨機(jī)數(shù)發(fā)生器實現(xiàn)灰度值的變換
(2)S-盒變換
(3)行位移和列混合
1、基于Rijndael算法的圖像置亂算法描述
step1:取出前4行的種子密鑰,按字節(jié)與待加密圖像子塊中的像素異或得到新的像素。
Step2:利用查表進(jìn)行S-盒變換;
step3:行置換,將矩陣中的行按照不同的偏移量進(jìn)行左循環(huán)移位。
step4:列混亂,將矩陣中每個列上的像素看作為GF(28)上的3次多項式的系數(shù),進(jìn)行運算,計算出新的像素值
step5:按順序取出像素灰度值
step6:回到step1,進(jìn)行多次閉環(huán)加密。
2、置亂算法算例
本小結(jié)通過Aradar圖像為例,說明Rijnael算法的有效性[4]。
step1:通過偽隨機(jī)數(shù)得到新的像素;
step2:利用查表進(jìn)行S-盒變換,得到新的像素灰度值;
step3:行置換,行進(jìn)行移位;
step4:在列置換中,計算出新的像素灰度值;
step5:像素灰度值與輪密鑰異或;
step6:回到step3,實現(xiàn)閉環(huán)加密。
最后得到置亂后的圖像置亂算法算例如圖1所示:
(三)實驗結(jié)果分析
通過以上比較我們不難得出這樣的結(jié)論:輪變換部分是整個算法中耗時最多的。這也是算法優(yōu)化的重點,而S-盒運算和列混合運算有非平凡的代數(shù)運算,因此值得考慮它們的快速實現(xiàn)。
(1)S-盒運算/逆S-盒運算可以用兩個表來實現(xiàn),而且查表法非常有效,還能抗定時分析攻擊。
(2)在列混合運算中通過查表的方式,不僅很快,而且還能夠減少定時分析攻擊的危險。
解密矩陣等于加密矩陣和一個矩陣的相乘。
三、彩色圖像加密
(一)圖像加密算法
1、關(guān)于位圖文件的數(shù)據(jù)結(jié)構(gòu)
通過Windows系統(tǒng)運行該加密系統(tǒng),我們必須明白一點,即圖像顯示時必須轉(zhuǎn)換為DIB或者DDB位圖。文件頭、位圖信息和位圖像素數(shù)據(jù),組成了位圖文件,以下便依次介紹這三部分。
(1)位圖文件頭:文件頭的主要功能是識別位圖文件,該部分包含了文件件類型和大小等信息
(2)位圖信息:內(nèi)存的分配、調(diào)色板信息的設(shè)置、像素值的讀取都是由位圖信息所決定的。
(3)位圖數(shù)據(jù):位圖數(shù)據(jù)是位圖的主體部分,位圖上的每一個點都表示了一個像素值,位圖的大小和顏色決定了位圖陣列的大小。
2、基于Rijndael算法和混沌序列的圖像置亂算法描述
step1:按順序取待加密圖像中的像素;
step2:利用查表進(jìn)行S-盒變換;
step3:用偽隨機(jī)數(shù)發(fā)生器生成一個序列;
step4:將圖像的每列像素依次向下循環(huán)移動位置;
step5:回到step1,實現(xiàn)多次閉環(huán)加密。
四、圖像加密系統(tǒng)的實現(xiàn)
(一)系統(tǒng)的功能目標(biāo)
本系統(tǒng)的主要功能便是對圖像進(jìn)行加密保護(hù),它也是本系統(tǒng)最重要的功能。除此外,考慮到系統(tǒng)的友好性,力求系統(tǒng)用戶界面操作簡單。同時,考慮的后期需求完善和拓展,要求本系統(tǒng)具有一定的可擴(kuò)展性。作為一個圖像安全加密系統(tǒng),系統(tǒng)本身的安全性也要可靠。圖像形式多樣,系統(tǒng)應(yīng)支持多種圖像形式。
(二)原型系統(tǒng)總體功能本系統(tǒng)包括以下幾個部分:
(1)輸入/輸出接口單元
(2)偽隨機(jī)數(shù)發(fā)生器
(3)加密/解密單元④圖像文件顯示
對于整理框架結(jié)構(gòu)的設(shè)計是系統(tǒng)研究中不可獲取的一步,也是非常重要的一步。在這一步要確定系統(tǒng)的模塊組成、模塊間的聯(lián)系。又要考慮到每個模塊的獨立性,力求做到“高內(nèi)聚,低耦合”的一款系統(tǒng)。
根據(jù)前期的研究,分別設(shè)置了4個子模塊:接口模塊;偽隨機(jī)數(shù)發(fā)生器模塊;加解密運算模塊;圖像文件顯示模塊。
整個系統(tǒng)的總體框圖如圖2所示:
(三)原型系統(tǒng)功能分析
借助于面向?qū)ο缶幊谭椒ㄖ械睦^承機(jī)制設(shè)計了Rijndael類的派生類Rijnd ,用于實現(xiàn)基于Rijndael和混沌序列的圖像加密算法。
Rijnd類的方法有以下幾種分類:
(1)像素值變換:繼承父類Rijndael中定義的有關(guān)對像素值異或的方法AddRoundKey()和重新定義了密鑰擴(kuò)展的方法KeyExpansion()。
(2)像素值替代:繼承父類Rij n d a e l中的方法BuildSbox()和BuildInvSbox ()來初始化替換表Sbox[][]和iSbox[][];SubBytes()和InvSubBytes()通過替換表實現(xiàn)像素值變換。
(3)行列置換:定義的自身類方法:RowsShift (),InvRowsShift (),ColumsShift()和Inv ColumsShift(),實現(xiàn)行列的循環(huán)移位操作。
(四)原型系統(tǒng)的實現(xiàn)
以對BMP格式圖像加密為例來部分介紹該原型系統(tǒng)的運行過程:用戶點擊圖像加密界面中的“瀏覽”,選擇待加密的文件;輸入隨機(jī)數(shù)發(fā)生器的初始條件,將用于隨機(jī)數(shù)發(fā)生器初始條件輸入的對話框定義為一個Initializtion類,只要系統(tǒng)中需要輸入隨機(jī)數(shù)發(fā)生器的初始條件,就創(chuàng)建一個該類的對象來獲取輸入的初始條件值。
在圖像文件進(jìn)行加密的這段時間,系統(tǒng)會有提示信息同時在改頁面上其他功能暫時失效,只有完成加密后才會恢復(fù)正常。
Displaydlg用于顯示圖像文件,隨后系統(tǒng)根據(jù)用戶需求完成了圖像文件的加解密操作。
在圖像解密時,通過Initializtion類獲取隨機(jī)數(shù)發(fā)生器初始條件值,再通過RandomNumber,加密后的圖像進(jìn)行解密操作。