數(shù)字圖像文件加密中真隨機(jī)數(shù)的應(yīng)用

針對(duì)偽隨機(jī)數(shù)在數(shù)字圖像加密中保密性不佳的缺點(diǎn),提出了利用真隨機(jī)數(shù)對(duì)數(shù)字圖像像素序列進(jìn)行異或的加密算法。加密前對(duì)原圖像進(jìn)行基于Arnold變換的圖像分塊置亂,在接收方進(jìn)行異或解密、Arnold變換周期還原獲得原圖像,加密過(guò)程簡(jiǎn)單,圖像置亂提高了保密性。

一、數(shù)字圖像文件加密過(guò)程

數(shù)字圖像文件是由模擬圖像數(shù)字化得到的,通常以二維數(shù)字組(行和列)形式表示,基本元素為像素,可以用計(jì)算機(jī)或數(shù)字電路來(lái)存儲(chǔ)和處理。像素是在模擬圖像數(shù)字化時(shí)對(duì)連續(xù)空間進(jìn)行離散化得到的,每個(gè)像素具有整數(shù)行和列位置坐標(biāo),同時(shí)具有整數(shù)灰度值或顏色值,常見(jiàn)的有灰度圖像和彩色圖像?;叶葓D像中每個(gè)像素可以由O(黑)一255(白)的亮度值表示,0—255之間表示不同的灰度級(jí),每幅彩色圖像是由紅綠藍(lán)3幅不同顏色的灰度圖像組合而成,因此數(shù)字圖像加密本質(zhì)上是對(duì)灰度圖像進(jìn)行的加密,即對(duì)灰色圖像的像素位置坐標(biāo)或灰度值的加密。

用真隨機(jī)數(shù)對(duì)灰色圖像進(jìn)行加密的過(guò)程如圖l所示, 首先對(duì)原始灰色圖像進(jìn)行基于Arnold變換的分塊圖像置亂,改變像素點(diǎn)的位置;然后將置亂圖像像素點(diǎn)的8 bit灰度值序列與真隨機(jī)序列相異或,改變?cè)认袼攸c(diǎn)的灰度值,得到最終的加密圖像。真隨機(jī)序列由真隨機(jī)數(shù)生成器產(chǎn)生,隨機(jī)統(tǒng)計(jì)特性滿足由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院( National Institute of Standards and Technology, NIST)指定的隨機(jī)數(shù)統(tǒng)計(jì)特性測(cè)試標(biāo)準(zhǔn),具有嚴(yán)格的獨(dú)立性和完全的可靠性,與灰度值序列異或后的序列同樣具有真隨機(jī)的特性,因此加密圖像具有很高的保密性。

1

1、圖像置亂

在Arnold變換基礎(chǔ)上提出一種分塊圖像置亂算法,如圖2所示。

1

先對(duì)原始圖像進(jìn)行分塊操作,再進(jìn)行圖像塊和塊內(nèi)像素點(diǎn)的Arnold變換置亂,獲得置亂圖像,該算法迭代次數(shù)少、置亂速度快、執(zhí)行效率高。Arnold變換具有周期性,即當(dāng)?shù)螖?shù)達(dá)到一定值三后,圖像的所有像素點(diǎn)又都回到初始位置,置換圖像恢復(fù)為原始圖像。這個(gè)最小定值L被稱為置亂周期L。當(dāng)發(fā)送方將置亂次數(shù)為m(m64)的圖像劃分成若干個(gè)大小為凡×凡的圖像塊,得到N2/n2個(gè)圖像塊,對(duì)圖像塊和塊內(nèi)像素點(diǎn)都進(jìn)行Arnold變換置亂,打亂圖像塊的排列順序和塊內(nèi)像素點(diǎn)的位置,完成了整幅圖像的置亂。二維Arnold變換公式可表示為:

1

當(dāng)a=l,b=l時(shí),得到標(biāo)準(zhǔn)的Arnold變換公式:

1

式中:當(dāng)M=N/n時(shí),(x,y)為圖像塊變換前的位置,(x',y’)為圖像塊變換后的位置;當(dāng)M=n時(shí),(x,y)為圖像塊內(nèi)像素點(diǎn)變換前的位置,(x',y’)為圖像塊內(nèi)像素點(diǎn)變換后的位置。

在數(shù)字圖像的接收方,仍然可依據(jù)Arnold變換的周期性將分塊的置亂圖像還原為原始圖像,假設(shè)圖像塊的Arnold變換置亂周期為L(zhǎng)i,圖像塊內(nèi)像素點(diǎn)的Arnold變換置亂周期為l2,發(fā)送方對(duì)圖像塊進(jìn)行S,次Arnold變換,對(duì)圖像塊內(nèi)像素點(diǎn)進(jìn)行S2次Arnold變換,接收方只需要再對(duì)圖像塊作Li - Si次Amold變換,對(duì)圖像塊內(nèi)像素點(diǎn)作Lz - S2次Amold變換,即可恢復(fù)出整幅圖像。

2、真隨機(jī)數(shù)的產(chǎn)生

用純數(shù)字電路的方式實(shí)現(xiàn)了真隨機(jī)數(shù)生成器(TRNG)的設(shè)計(jì),其核心思想是利用查找表(LUT)的方法設(shè)計(jì)RS觸發(fā)器,利用其亞穩(wěn)態(tài)作為隨機(jī)源,多組觸發(fā)器的輸出經(jīng)過(guò)異或和同步處理后得到隨機(jī)序列,PC機(jī)通過(guò)串口輸出模塊采集真隨機(jī)序列,該TRNG在XC3S400物理平臺(tái)上實(shí)現(xiàn)并進(jìn)行測(cè)試驗(yàn)證。

如圖3所示,RS觸發(fā)器的R、S端連接時(shí)鐘信號(hào)CLK,當(dāng)?shù)耿?0時(shí),觸發(fā)器的穩(wěn)定輸出為(Q,Q)=(1,l);當(dāng)CLK=:1時(shí),經(jīng)歷決斷時(shí)間后輸出穩(wěn)定在(Q,Q)=(1,O)or(0,1),更精確一些,在CLK上升沿到來(lái)時(shí),觸發(fā)器進(jìn)入亞穩(wěn)態(tài),經(jīng)過(guò)決斷時(shí)間輸出Q最終穩(wěn)定在0或1,輸出量Q具有隨機(jī)性,這就為隨機(jī)數(shù)的產(chǎn)生提供了熵源。

1

查找表(LUT)結(jié)構(gòu)本質(zhì)上是1個(gè)RAM,它類似于l塊有4個(gè)輸入、16個(gè)輸出的16位的存儲(chǔ)器。這個(gè)存儲(chǔ)器里面存儲(chǔ)了所有可能的結(jié)果,然后由輸入來(lái)選擇哪個(gè)結(jié)果應(yīng)該輸出。用戶通過(guò)原理圖或者HDL語(yǔ)言來(lái)描述1個(gè)邏輯電路時(shí),F(xiàn)PGA的綜合軟件和布局布線軟件會(huì)自動(dòng)計(jì)算邏輯電路中所有可能的結(jié)果,并且把結(jié)果事先寫(xiě)入RAM。這樣對(duì)輸入信號(hào)進(jìn)行邏輯運(yùn)算就相當(dāng)于輸入1個(gè)地址進(jìn)行查表,找出并輸出地址對(duì)應(yīng)的內(nèi)容。即可利用LUT實(shí)現(xiàn)FPGA器件的邏輯功能。

因此可以用基于查找表的原理實(shí)現(xiàn)RS觸發(fā)器的邏輯功能。如圖4所示,編制兩個(gè)可配置邏輯模塊( CLB)即可實(shí)現(xiàn)RS觸發(fā)器的邏輯功能,RS觸發(fā)器的2個(gè)與非門可由Slice中的LUT設(shè)計(jì)完成,把Slicel和Slice2的位置約束在左右相鄰的2個(gè)CLB中,并在前后加入2個(gè)內(nèi)嵌的D觸發(fā)器元件,分別稱為觸發(fā)器A和觸發(fā)器Bd觸發(fā)器A能減小輸入時(shí)鐘CLK的相位偏移,觸發(fā)器B能解耦Q端的容性負(fù)載,提高輸出序列的隨機(jī)性。把基于LUT設(shè)計(jì)完成的RS觸發(fā)器稱之為L(zhǎng)UT觸發(fā)器。

1

對(duì)多個(gè)同步的LUT觸發(fā)器的輸出進(jìn)行異或操作,可降低序列的相關(guān)性,使得產(chǎn)生的序列具有良好的隨機(jī)性。設(shè)計(jì)的隨機(jī)源模塊如圖5所示,對(duì)256個(gè)LUT觸發(fā)器的輸出進(jìn)行異或。最后由2個(gè)D觸發(fā)器以1個(gè)較低的時(shí)鐘頻率進(jìn)行采樣和同步,從而得到真隨機(jī)序列。

1

該TRNG在XC3S400物理平臺(tái)上實(shí)現(xiàn)并進(jìn)行了測(cè)試驗(yàn)證,系統(tǒng)時(shí)鐘頻率為100 MHz,PC機(jī)通過(guò)串口輸出模塊采集到速率為12.5 MHz的真隨機(jī)序列,其隨機(jī)統(tǒng)計(jì)特性滿足NIST指定的隨機(jī)數(shù)統(tǒng)計(jì)特性測(cè)試標(biāo)準(zhǔn),NIST測(cè)試結(jié)果如表1所示,15項(xiàng)指標(biāo)測(cè)試均通過(guò),說(shuō)明產(chǎn)生的真隨機(jī)數(shù)具有良好的隨機(jī)性和可靠性。

1

二、實(shí)驗(yàn)結(jié)果與分析

為驗(yàn)證基于Arnold變換的分塊圖像置亂算法、真隨機(jī)數(shù)加密的有效性和安全性,對(duì)其進(jìn)行仿真實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖6所示,將加密后的圖像再次與同一組真隨機(jī)數(shù)進(jìn)行異或,然后經(jīng)過(guò)Amold周期置亂可以還原為原始圖像。恢復(fù)后的圖像同原始圖像無(wú)明顯差異,說(shuō)明真隨機(jī)數(shù)對(duì)置亂后的圖像有很好的加密和解密作用,能應(yīng)用于數(shù)字圖像的加密中。

1

原始圖像先經(jīng)過(guò)分塊置亂,打亂像素點(diǎn)的位置,得到初步的安全加密;再經(jīng)過(guò)真隨機(jī)數(shù)異或加密,使得攻擊者恢復(fù)原圖像,竊取圖像信息的概率大大降低。

下面對(duì)該加密過(guò)程的抗攻擊性能進(jìn)行分析,檢驗(yàn)該加密過(guò)程能否有效地阻止攻擊者對(duì)圖像的破壞,主要從抗剪切及抗噪聲等方面進(jìn)行分析,實(shí)驗(yàn)結(jié)果如圖7—圖9所示。

1

1

從圖7可以看出加密圖像在遭到剪切攻擊后,能較好地恢復(fù)原始圖像,且信息保存完整;從圖8、圖9可以看出加密圖像加入各種噪聲后恢復(fù)出的圖像都比較清晰。以上結(jié)果說(shuō)明該加密過(guò)程具有良好的抗剪切攻擊和抗噪聲性能。

小知識(shí)之Arnold變換

Arnold變換是一種常用的圖像置亂技術(shù),Arnold變換的定義如下:
對(duì)任意N*N矩陣(所有元素都相同的矩陣除外),設(shè)i,j為矩陣元素原始下標(biāo),經(jīng)過(guò)Arnold變換后新下標(biāo)為i',j',且滿足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold變換具有周期性,即經(jīng)過(guò)若干次變換后,矩陣回到最初狀態(tài),且周期T與N的大小有關(guān)。理論基礎(chǔ)沒(méi)找到,但可以用程序來(lái)進(jìn)行計(jì)算,可以設(shè)i,j從一個(gè)點(diǎn)出發(fā),不斷使用以上變換,再次回到這個(gè)起點(diǎn)時(shí),經(jīng)歷的變換次數(shù)就是周期。