孔軍輝+趙冬梅+宋陽(yáng)
摘 要:分析了目前比較流行的Arnold 算法和騎士巡游算法各自的特點(diǎn),利用兩種算法之間的互補(bǔ)性,設(shè)計(jì)了基于Arnold變換和騎士巡游變換相結(jié)合的復(fù)合置亂算法,并對(duì)數(shù)字圖像進(jìn)行加密。該設(shè)計(jì)以Altera公司的NIOSⅡ嵌入式軟核處理器為核心,創(chuàng)建了用戶自己的數(shù)字圖像處理芯片。
關(guān)鍵詞:Arnold 算法;騎士巡游算法;復(fù)合置亂;圖像加密
DOIDOI:10.11907/rjdk.171332
中圖分類(lèi)號(hào):TP309.7
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):1672-7800(2017)008-0179-03
0 引言
隨著網(wǎng)絡(luò)和多媒體技術(shù)的發(fā)展及應(yīng)用,以數(shù)字圖像信號(hào)為主要載體的數(shù)據(jù)應(yīng)用已逐漸成為人們生活的主旋律。它雖然給人們生活帶來(lái)了便利,但同時(shí)也存在著安全隱患。據(jù)統(tǒng)計(jì),全世界幾乎每20s就會(huì)發(fā)生黑客入侵事件。不法者經(jīng)常會(huì)在數(shù)字圖像信號(hào)傳輸或存儲(chǔ)過(guò)程中竊取信息。因此,保護(hù)這些圖像信息的安全尤為重要。目前,對(duì)數(shù)字圖像進(jìn)行加密處理是解決這類(lèi)問(wèn)題的主要手段之一[1]。
1 加密算法選擇
對(duì)數(shù)字圖像進(jìn)行隱藏和偽裝有很多種算法,主要有數(shù)字圖像置亂技術(shù)、數(shù)字圖像信息隱藏技術(shù)、數(shù)字圖像水印技術(shù)和數(shù)字圖像分存技術(shù)[2]。本文采用的是數(shù)字圖像置亂技術(shù),這種技術(shù)主要利用數(shù)字圖像的矩陣性,對(duì)圖像中像素的位置或顏色進(jìn)行擾亂,從而解決數(shù)字圖像的安全問(wèn)題。目前,比較流行的置亂技術(shù)有Arnold置亂算法和騎士巡游置亂算法。
1.1 Arnold置亂算法
Arnold 變換是在遍歷理論研究中提出的一種變換,俗稱(chēng)貓臉變換[3],具體變換公式如式(1)。 定義:設(shè)有單位正方形上的點(diǎn)( x,y ),將點(diǎn)( x,y) 變到另一點(diǎn)( x′,y′)的變換為:
x′y′=1 11 2xy(mod1)
(1)
由式(1)可知,Arnold 變換實(shí)際上就是將數(shù)字圖像中代表像素的顏色值或灰度值的坐標(biāo)點(diǎn)進(jìn)行位置移動(dòng)的過(guò)程,雖然一次移動(dòng)不能解決問(wèn)題,但一直重復(fù)下去,每一次的最后輸出作為下一次的輸入,經(jīng)過(guò)N次迭代后,就會(huì)出現(xiàn)無(wú)法辨認(rèn)的圖像。值得注意的是,隨著迭代次數(shù)的增加,迭代到一定數(shù)值后數(shù)字圖像就會(huì)被還原,這說(shuō)明Arnold變換具有一定的周期性,合理利用此特點(diǎn),可以幫助人們完成數(shù)字圖像的解密工作。
1.2 騎士巡游算法
騎士巡游算法,就是讓一個(gè)騎士從數(shù)字圖像上任意一點(diǎn)像素出發(fā),按照國(guó)際象棋“日”字的規(guī)則走動(dòng),走動(dòng)過(guò)程中要求騎士不重復(fù)地走遍n×m棋盤(pán)上的每個(gè)小方格。騎士巡游路徑不是唯一的,可以用矩陣來(lái)表示,此矩陣稱(chēng)為巡游矩陣。例如在一個(gè)8×8的棋盤(pán)中,一個(gè)騎士從起點(diǎn)1出發(fā),按照式(2)所示矩陣規(guī)則進(jìn)行巡游,直到走完矩陣中的每一點(diǎn)??梢钥闯?,這種算法的密鑰就是巡游矩陣,路徑的數(shù)量就是加密的密鑰量。密鑰量的數(shù)量在一定程度上決定了圖像加密的安全性,騎士巡游算法的密鑰量足夠保證加密安全。例如:一個(gè)8×8棋盤(pán)可以有1.305×1035個(gè)不同的巡游路徑[4]。
1.3 復(fù)合置亂算法
綜上可知,Arnold變換和騎士巡游變換在對(duì)數(shù)字圖像進(jìn)行加密處理上有著各自的特點(diǎn)。Arnold變換處理速度快,短時(shí)間內(nèi)置亂效果好,但密鑰量小、安全性不高。騎士巡游算法密鑰量大、安全性高,但速度慢,適合對(duì)細(xì)節(jié)的處理。由于兩種算法之間具有很強(qiáng)的互補(bǔ)性,因此本次設(shè)計(jì)選擇基于Arnold變換和騎士巡游變換相結(jié)合的復(fù)合置亂算法,這樣可以做到揚(yáng)長(zhǎng)避短,對(duì)數(shù)字圖像有著更好的加密效果。
2 系統(tǒng)硬件設(shè)計(jì)
本文采用嵌入式系統(tǒng)SOPC作為圖像加密的硬件平臺(tái),以美國(guó)Altera公司Nios II軟核處理器為核心,對(duì)數(shù)字圖像進(jìn)行加密設(shè)計(jì)。外界影像首先通過(guò)傳感器轉(zhuǎn)換為符合CCIR656 協(xié)議的圖像信號(hào),再通過(guò)EP2C35開(kāi)發(fā)板上的I/O接口,以DMA方式存儲(chǔ)在SDRAM 中,等待Flash 中的加密程序?qū)ζ涮幚?。加密后的圖像數(shù)據(jù)通過(guò)液晶屏接口程序,由數(shù)字液晶屏接收并進(jìn)行顯示。具體過(guò)程如圖1所示。
3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)的主要任務(wù)是對(duì)存儲(chǔ)在SDRAM中的圖像數(shù)據(jù)進(jìn)行加密處理。首先為了防止在讀取圖像數(shù)據(jù)時(shí)發(fā)生沖突,要在SDRAM 中申請(qǐng)一個(gè)用來(lái)采集輸入,一個(gè)用來(lái)顯示輸出的兩個(gè)幀緩存區(qū)(640×480×2×8=4.915 2M幀)。當(dāng)圖像數(shù)據(jù)讀入后,由保存在Nios II 軟核處理器中的加密算法對(duì)其進(jìn)行加密,接到輸出指令后,進(jìn)行輸出,在液晶屏上顯示密圖。整個(gè)過(guò)程只要有圖像數(shù)據(jù)輸入就會(huì)不斷進(jìn)行下去。
在Nios II IDE下編輯的基于Arnold變換和騎士巡游變換相結(jié)合的復(fù)合置亂算法關(guān)鍵加密代碼如下:
void Arntranst(int m-Times) //Arnold 變換置亂函數(shù)
{
……//變量定義及賦值過(guò)程
for(k=1;k<=_Times;k++)
{ for(i=0; i { for(j=0;j { IpSrc = (uint8*)p_data+wide*i+j; //IpSrc為源位圖中待加密象素指針 //P_data為指向源位圖數(shù)據(jù)區(qū)首象素的指針 m=i+j; n=i+2*j; if(m>=wide) m=m%wide; if(n>=height) n=n%height; IpDst=(uint8 *)temp+wide*m+n; //IpDst 為IpSrc 所指向的象素經(jīng)過(guò)復(fù)合置亂算法映射后在緩沖區(qū)中的指針
*IpDst=*IpSrc;}}
memcpy(p_data,temp,wide*height);}}
void Knight8(int m_Times1) //8*8騎士巡游置亂函數(shù)
{
……//變量定義及賦值過(guò)程
for ( k=1;k<=m_Times1;k++)
{ for (m=0;m { for(n=0;n { x=8*m; y=8*n; for (i=x;i { for (j=y; j { u=findrow(T,64); v=findcolum(T,64); x1=x+u; y1=y+v; *(uint8*)(temp+i*wide+j)=*(uint8*)(p_data+x1*wide+y1) } } } } memcpy(p_data,temp,wide*height); }} 4 實(shí)驗(yàn)比較 由于受目標(biāo)板存儲(chǔ)空間的限制,本次加密只是針對(duì)256×256像素的8位灰度圖進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)通過(guò)改變迭帶值進(jìn)行幾種置亂技術(shù)加密效果的比較。圖2是對(duì)原始圖像分別進(jìn)行0、1、5、8、10次Arnold 算法的實(shí)驗(yàn)結(jié)果,圖3是對(duì)原始圖像進(jìn)行0、2、5、8、48次騎士巡游算法的實(shí)驗(yàn)結(jié)果,圖4是對(duì)原始圖像進(jìn)行0+0、1+2、5+5、8+8、10+48次復(fù)合算法的實(shí)驗(yàn)結(jié)果。 從實(shí)驗(yàn)效果可以看出,基于Arnold變換和騎士巡游變換相結(jié)合的復(fù)合置亂算法對(duì)圖像加密效果良好。 5 結(jié)語(yǔ) 本文將Arnold變換和騎士巡游變換相結(jié)合,提出一 種新的復(fù)合圖像置亂加密算法,并用目標(biāo)板實(shí)現(xiàn)了相應(yīng)的功能。在設(shè)計(jì)過(guò)程中將3種置亂算法在加密效果上進(jìn)行了分析比較,結(jié)果表明,復(fù)合置亂算法無(wú)論在加密效果上還是在安全性上都得到了很大提升。但也存在一些問(wèn)題亟待解決,例如彩色圖像加密、圖像解密的復(fù)雜性等問(wèn)題,都有待進(jìn)一步研究。 參考文獻(xiàn): [1] 張志剛.FPGA與SOPC設(shè)計(jì)教程[M].西安:電子科技大學(xué)出版社,2007. [2] 王麗娜.網(wǎng)絡(luò)多媒體信息安全保密技術(shù)[M].武漢:武漢大學(xué)出版社,2003. [3] 鄒建成,鐵小勻.數(shù)字圖像的二維 Arnold 變換及其周期性[J].北方工業(yè)大學(xué)學(xué)報(bào),2000(1):10-14. [4] GL CHIA,SIEW-HUI ONG.Generalized knight's tours on rectangular chessboards[J].Discrete Applied Mathematics,2005(5):80-98. [5] 王建校,危建國(guó).SOPC基礎(chǔ)與實(shí)踐[M].西安:電子科技大學(xué)出版社,2006.