基于位運(yùn)算的圖象加密技術(shù)

圖像加密就是對(duì)圖像進(jìn)行某種變換,使得變換后的圖像與原始圖像存在顏色、亮度或輪廓等定性或定量的視覺(jué)差異。圖像置亂包含兩方面的內(nèi)容,一個(gè)是打亂圖像中每個(gè)象素的位置,另一個(gè)是改變每個(gè)象素的值。

一、利用位運(yùn)算加密圖像的基本思想

位運(yùn)算加密網(wǎng)像的思想就是利用某種方法得到一系列的隨機(jī)或偽隨機(jī)的以字節(jié)為單位的數(shù)據(jù),然后把他們和一幅圖像的數(shù)據(jù)逐字節(jié)進(jìn)行特定的位運(yùn)算,以改變?cè)袌D像的數(shù)據(jù)信息。這樣處理后的圖像顯示出來(lái)的效果將是“面目全非”,掩蓋了原來(lái)的圖像信息,達(dá)到加密的目地。此外,加密的圖像應(yīng)該在一定的條件下可以恢復(fù)出原來(lái)的圖像,所以設(shè)計(jì)的加密算法中用于加密的隨機(jī)或偽隨機(jī)的以字節(jié)為單位的數(shù)據(jù)應(yīng)具有可再生性,加密的位運(yùn)算應(yīng)具有可逆性。這時(shí),若發(fā)送端與接收端采用同樣的隨機(jī)序列發(fā)生器,那么序列的取值只取決于種子,因此發(fā)送端只需傳遞種子,在接收端用同樣的種子產(chǎn)生的序列對(duì)加密用像進(jìn)行與發(fā)送端加密同樣的異或運(yùn)算,就能得到解密后的圖像。

二、利用位運(yùn)算加密圖像的方法

基于位運(yùn)算的加密算法主要有2種方法,一種是采用流密碼加密,即生成與圖像數(shù)據(jù)相同大小的偽隨機(jī)序列進(jìn)行加密;這種方法由于偽隨機(jī)序列的隨機(jī)性大并且無(wú)規(guī)律,因而加密效果均勻、理想。但由于參與運(yùn)算的數(shù)據(jù)量大,因此加密速度受到限制,實(shí)時(shí)性差;另一種是采用分組密碼加密,下面將分別介紹這兩種加密方法。

密碼學(xué)以研究秘密通信為目的.以防止第三者對(duì)信息的截取。在密碼學(xué)中,需要變換的原消息稱為明文消息,明文經(jīng)過(guò)變換成為另一種隱蔽的形式,稱為密文消息。完成交換的過(guò)程稱作加密,其逆過(guò)程(即由密丈恢復(fù)出明文的過(guò)程)稱作解密。對(duì)明文進(jìn)行加密時(shí)所采用的一組規(guī)則稱作加密算法。對(duì)密文進(jìn)行解密時(shí)所采用的一組規(guī)則稱作解密算法。加密和解密操作通常在密鑰的控制下進(jìn)行,并有加密密鑰和解密密鑰之分。因?yàn)閿?shù)據(jù)以密文的形式存儲(chǔ)在計(jì)算機(jī)文件中,或在數(shù)據(jù)通信網(wǎng)絡(luò)中傳輸,因此即使數(shù)據(jù)被末授權(quán)者非法竊取,或因系統(tǒng)故障和操作人員誤操作而造成數(shù)據(jù)泄露,未授權(quán)者也不能理解它的真正含義,從而達(dá)到數(shù)據(jù)保密的目的。同樣,未授權(quán)者也不能偽造合理的密文,因而不能篡改數(shù)據(jù),從而達(dá)到確保數(shù)據(jù)真實(shí)性的目的。

基于密鑰的算法通常有兩類:對(duì)稱算法和公開密鑰算法。

對(duì)稱算法有時(shí)又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推算出來(lái),反過(guò)來(lái)也成立。在大多數(shù)對(duì)稱算法中,加密/解密密鑰是相同的。這些算法也叫秘密密鑰算法或單密鑰算法,它要求發(fā)送者和接收者在安全通信之前,商定一個(gè)密鑰。對(duì)稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都能對(duì)消息進(jìn)行加密/解密。只要通信需要保密,密鑰就必須保密。

然而,對(duì)稱算法又可分為兩類。一次只對(duì)明文中的單個(gè)比特(有時(shí)對(duì)字節(jié))運(yùn)算的算法稱為序列算法或序列密碼(流密碼)。另一類算法是對(duì)明文的一組比特亞行運(yùn)算,這些比特組稱為分組,相應(yīng)的算法稱為分組算法或分組密碼?,F(xiàn)代計(jì)算機(jī)密碼算法的典型分組長(zhǎng)度為64比特,這個(gè)長(zhǎng)度大到足以防止分析破譯,但又小到足以方便使用(在計(jì)算機(jī)出現(xiàn)前,算法普遍地每次只對(duì)明文的:一個(gè)字符運(yùn)算,可認(rèn)為是序列密碼對(duì)字符序列的運(yùn)算)。

(1)流密碼

流密碼是密碼學(xué)中最重要的加密方式之一。流密碼的優(yōu)點(diǎn)是錯(cuò)誤擴(kuò)展小,速度快,利于同步,安全程度高。流密碼的保密性完全取決于密鑰的隨機(jī)性。如果密鑰是真正的隨機(jī)數(shù),則這種體制在理論上就是不可破譯的。但這種方式所需的密鑰量大得驚人,在實(shí)際中是不可行的。因此,目前一般采用偽隨機(jī)序列來(lái)代替隨機(jī)序列作為密鑰序列,也就是序列存在著一定的循環(huán)周期。這樣序列周期的長(zhǎng)短就成為保密性的關(guān)鍵。如果周期足夠長(zhǎng),就會(huì)有比較好的保密性?,F(xiàn)在周期小于1010的序列很少被采用,周期長(zhǎng)達(dá)1050的序列也并不少見(jiàn)。

(2)分組密碼

分組密碼即對(duì)固定長(zhǎng)度的一組明文進(jìn)行加密的算法。它將明文按一定的位長(zhǎng)分組,明文組和密鑰組的全部經(jīng)過(guò)加密運(yùn)算得到密文組。解密時(shí)密文組和密鑰組經(jīng)過(guò)解密運(yùn)算(加密運(yùn)算的逆運(yùn)算),還原成明文組。

分組密碼的特點(diǎn)是:密鑰可以在一定時(shí)間內(nèi)固定,不必每次變換,因此給密鑰配發(fā)帶來(lái)了方便。但是,由于分組密碼存在著密文傳輸錯(cuò)誤在明文中擴(kuò)散的問(wèn)題,因此在信道質(zhì)量較差的情況下無(wú)法使用。

分組密碼其中最著名的兩個(gè)分組密碼即DES(Data Encryption Srandanl)數(shù)據(jù)加密標(biāo)準(zhǔn)和IDEA(lnternational Data Encryption Algo-rithm)國(guó)際數(shù)據(jù)加密算法。

設(shè)計(jì)分組密碼算法的核心技術(shù)是:在相信復(fù)雜函數(shù)可以通過(guò)簡(jiǎn)單函數(shù)迭代若干圈得到的原則下,利用簡(jiǎn)單圈函數(shù)及對(duì)合等運(yùn)算,充分利用非線性運(yùn)算。DES算法采用美國(guó)國(guó)家安全局精心設(shè)計(jì)的8個(gè)S-Box和P-置換,經(jīng)過(guò)16圈迭代,最終產(chǎn)生64比特密文,每罔迭代使用的48比特子密鑰是南原始的56比特產(chǎn)生的。

DES加密算法輸入的是64比特的明文,在64比特密鑰的控制下產(chǎn)生64比特的密文;反之輸入64比特的密丈,輸出64比特的明文。64比特的密鑰中含有8個(gè)比特的奇偶校驗(yàn)位,所以實(shí)際有效密鑰長(zhǎng)度為56比特。

DES加密算法加密時(shí)把明文以64bit為單位分成塊,而后用密鑰把每一塊明文轉(zhuǎn)化成同樣64bit的密文塊。DES提供72,000,000,000.000.000個(gè)密鑰,用每微秒可進(jìn)行一次DES加密的機(jī)器來(lái)破譯密碼需兩千年。

(3)流密碼與分組密碼的區(qū)別

流密碼:將明文M分割成字符串和比特串:M=m0,m1,….mj,…,并逐字符或逐位進(jìn)行加密:Ek(M)=EkO(m0),Ek1(m1),“...,Ekj(mj),”...,其中:密鑰流是K=k0,kl,...,kj,…。

分組密碼:將明文消息編碼表示后的數(shù)字(通常是0與1)序列x1,x2,…劃分成長(zhǎng)為m的組x=(x1,x2,…,xm),各組(長(zhǎng)為m的向量)分別在密鑰k=(k1,k2,…,kt)的控制下變換成等長(zhǎng)的輸出數(shù)字序列y=(yl,y2,...,yn)(長(zhǎng)為n的向量)。

分組密碼是現(xiàn)代密碼學(xué)中的一個(gè)重要研究分支,其誕生和發(fā)展有著廣泛的實(shí)用背景和重要的理論價(jià)值。分組密碼有其自身的優(yōu)點(diǎn)。首先,分組密碼容易被標(biāo)準(zhǔn)化,因?yàn)樵诮裉斓臄?shù)據(jù)網(wǎng)絡(luò)通倍中,信息通常是被成塊地處理和傳輸?shù)?。其次,使用分組密碼容易實(shí)現(xiàn)同步,因?yàn)橐粋€(gè)密文組的傳輸錯(cuò)誤不會(huì)影響其他組,丟失一個(gè)明密文組不會(huì)對(duì)其隨后的組的解密的正確性產(chǎn)生影響。分組密碼的主要缺陷表現(xiàn)在兩個(gè)方面,一是分組加密不能隱蔽數(shù)據(jù)模式,即相同的密文組蘊(yùn)含著相同的明文組:二是分組加密不能抵抗組的重放、嵌入和刪除等攻擊。但分組密碼的上述缺陷可以通過(guò)在加密處理中引入少量的記憶來(lái)克服。例如可以通過(guò)密碼分組鏈接(CBC)模型來(lái)克服這些缺陷。

a、有時(shí)分組密碼和序列密碼的界限并不是十分清楚,如:一次對(duì)一個(gè)字符進(jìn)行明文交換的密碼系統(tǒng),即可以視作對(duì)字符流進(jìn)行操作的流密碼,也可以視為一次對(duì)8位長(zhǎng)的位組進(jìn)行明文交換的分組密碼。通常,我們將短周期的流密碼視為分組密碼,而把長(zhǎng)周期的流密碼仍然視為流密碼。

b、從另外一種觀點(diǎn)來(lái)看,他們之間又有明顯的區(qū)別。流密碼確定一個(gè)內(nèi)部記憶裝置,即用一個(gè)依賴于種子密鑰I以及流密碼在時(shí)刻j的內(nèi)部狀態(tài)Oj的函數(shù)f生成密鑰流,即f(l,Oj)=Kj,然后將明文序列的第i個(gè)字符mj轉(zhuǎn)換為密文序列的第j個(gè)字符Cj:Cj=Ekj(mj)與此相反,分組密碼確定一個(gè)無(wú)記憶裝置,他在密鑰K的參與下,將成組明文信息M=(m0,…,mL-1)轉(zhuǎn)換為成組密文信息C=(CO,...,CN-1)。

c、記憶性。由于流密碼中密鑰流元素的產(chǎn)生由其內(nèi)部狀態(tài)和密鑰決定,流密碼中明文的重復(fù)部分是用密鑰流的不同部分加密的,而分組密碼中相同的明文組對(duì)應(yīng)相同的密文組,流密碼似乎比分組密碼更安全。

三、基于位運(yùn)算的圖像加密算法在BMP圖像中的運(yùn)用

位圖文件(Bitmap-File.BMP)格式是Windows采用的圖像文件存儲(chǔ)格式,在Windows環(huán)境下運(yùn)行的所有圖像處理軟件都支持這種格式。WindOW8 3.O以前的BMP位圖文件格式與顯示設(shè)備有關(guān),因此把它稱為設(shè)備相關(guān)位圖(device-dependent birrnap,DDB)文件格式。WindOW8 3.0以后的BMP位網(wǎng)文件格式與顯示設(shè)備無(wú)關(guān),因此把這種BMP位圖文件格式稱為設(shè)備無(wú)關(guān)位圖(device-indepen.dent bitmap,DIB)格式,目的是為了讓W(xué)indows能夠在任何類型的顯示設(shè)備上顯示BMP位圖文件。BMP位閣文件默認(rèn)的文件擴(kuò)展名是BMP或bmpo。

位圖文件可看成由4個(gè)部分組成:位圖文件頭(bitmap-fdeheader)、位圖信息頭(bitmap-information header)、彩色表(colortable)和定義位圖的字節(jié)陣列,它們的名稱和符號(hào)如表1所示。

基于位運(yùn)算的圖象加密技術(shù)

基于位運(yùn)算的加密算法思想在數(shù)字網(wǎng)像文件中存儲(chǔ)的主要是圖像的顏色和灰度信息。常用的BMP格式圖像文件由表頭、調(diào)色板和圖像數(shù)據(jù)3部分組成。表頭長(zhǎng)度固定為54個(gè)字節(jié),其中保留了有關(guān)圖像的參數(shù)信息,如:使用的顏色、圖像尺寸、文件大小,壓縮標(biāo)志等。調(diào)色板代表BMP圖像的顏色信息,他將圖像象素的數(shù)值映射為相應(yīng)的顏色6圖像數(shù)據(jù)區(qū)存儲(chǔ)著所有象素的數(shù)值,但BMP格式中每個(gè)象素的字節(jié)數(shù)是不同的。比如8位、24位的BMP圖像分別代表每個(gè)象素包含1個(gè)字節(jié)或3個(gè)字節(jié)。并且分組密碼長(zhǎng)度和密碼多樣性的選取不同,對(duì)加密BMF彩色圖像的影響程度也不同.在分組密碼長(zhǎng)度與BMP圖像的長(zhǎng)寬尺寸成倍數(shù)關(guān)系的情況下,BMF圖像加密效果會(huì)呈現(xiàn)極其不理想的規(guī)律和現(xiàn)象。

小知識(shí)之位運(yùn)算

程序中的所有數(shù)在計(jì)算機(jī)內(nèi)存中都是以二進(jìn)制的形式儲(chǔ)存的。位運(yùn)算說(shuō)穿了,就是直接對(duì)整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作。