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