陳佳文,劉宇,楊濤
(電子科技大學電子科學與工程學院,四川成都,611731)
隨著數字時代的不斷深入,如何保證數字圖像高質量、高安全性地在互聯網上傳輸和存儲已成為一大研究熱點。由于圖像信息屬于高冗余、大數據量的二維數據結構,所以AES、3DES等加解密算法已顯得不再適用[1]。
現階段常用的圖像加密方法可大致分為兩類:圖像置亂和圖像擴散。圖像置亂本質上是將圖像中各像素點坐標位置進行打亂,其中最具代表的算法有Zigzag掃描[2]、Arnold算法[3]等;但是單用這類方法往往會使加密完的圖像很難抵御如選擇明文攻擊、窮舉攻擊等現代密碼分析技術。圖像擴散本質上是依據算法改變圖像中各個像素點的值,其中最常用的方法是利用混沌序列映射成的種子密圖與待處理圖像進行異或處理,典型的算法有Logistic混沌序列算法[4]、Lorenz混沌序列算法[5]等;這種方法涉及到的混沌序列產生算法往往具備很好的初值敏感性,符合密碼設計中所需的混淆和擴散規則。
本設計將Arnold算法和經改進后的Logistic混沌序列算法進行組合,實現了一種可完成圖像加密和解密功能的硬件系統,該設計具有消耗資源少、運算速度快、密鑰空間大等特點,并且與外界交互端口簡單,方便了設計的復用。
Arnold算法完成了加密過程中的圖像置亂過程,具體公式如下:

其中(x,y)為原像素坐標,(x′,y')為置亂后的像素坐標,N為圖像尺寸,也表示的是x、y以及x′、y′的取值范圍。
Arnold迭代具有周期性,且僅能處理方形圖像。輸入圖像尺寸決定了對應的Arnold迭代周期,表1列舉了不同尺寸圖像對應的Arnold迭代周期。

表1 輸入圖像尺寸N與對應Arnold迭代周期T的關系
當人為設置的迭代次數T′剛好等于待處理圖像對應的Arnold迭代周期T時,經Arnold算法處理得到的輸出圖像將與輸入圖像完全一致,所以每個T′均對應一個有效迭代次數Treal,對應關系如圖1所示。

圖1 人為設置的迭代周期次數T'與對應的有效迭代次
數Treal的關系示意圖
Arnold算法是可逆的,對應公式如下:

現階段常用的Arnold解密方法可分為兩類:第一類方法是結合T'和T求出剩余迭代次數TlastkT?T′= ,后利用公式(1)對密文進行Tlast次迭代處理,以完成解密,但是這種方法可能引發因T′過小而導致解密延時過長的問題;第二類方法主要依據公式(2),僅需保證解密迭代次數與加密迭代次數一致即可正確解密。
加密時,本設計采用了提取有效迭代次數Treal的方法,避免了執行過程中的無效迭代;解密時,本設計依據第二類解密方法,保證了解密延時穩定性。Arnold算法涉及到的密鑰如表2所示。

表2 Arnold算法對應密鑰
Logistic算法本質上是產生圖像擴散必須的種子密圖。本設計采用的是密鑰空間更大、初值敏感性更好的分段Logistic混沌映射算法,如公式(3)所示:

方 程 內 控 制 參 數μ∈ ( 0.344,0.736 ) ∪ ( 0.848,1.752)∪(1 .792,2),初值x0∈( ?1 ,1),當前迭代次數n= 0,1,2…。
為了避免數字混沌序列內部存在的短周期問題、提高混沌序列的隨機性,本設計在混沌序列產生過程中引入了M序列擾動,原理如圖2所示,其中Titer為擾動間隔,iter_cnt為迭代次數計數器。

圖2 M序列擾動原理示意圖
當迭代次數等于擾動間隔時,iter_cnt清零,Logistic算法當前迭代結果xn+1將與線性反饋移位寄存器(LFSR)當前迭代結果mn進行基于一定位寬的位異或,位寬數值由擾動幅度aD確定。擾動結果將作為Logistic算法下次迭代的輸入以及當前迭代得到的混沌序列元素。
本設計M序列產生依據的本原方程式如公式(4)所示[6]:

本設計將利用Logistic算法得到種子密圖與待處理圖像進行像素點間的異或處理。由于異或存在可逆性,所以加密和解密時的Logistic算法執行過程完全一致,僅需保證解密密鑰與加密密鑰一致,即可正確解密。Logistic算法涉及到的密鑰如表3所示。

表3 Logistic算法對應密鑰
因Arnold算法僅可處理方圖,為了使本設計的應用場景一般化,項目中增加了對待處理圖像的補零和拆解處理,用于非方圖與方圖之間的轉換,其中拆解是補零的逆操作,具體原理如圖3所示。

圖3 待處理圖像補零過程示意圖
本設計采用了Arnold算法和Logistic混沌算法相結合的圖像加解密方法。加密時,輸入圖像數據將依次經過補零處理、Arnold算法處理以及Logistic算法處理,Logistic算法處理結果作為加密最終結果。解密時,基于各算法處理特點,解密過程為加密的逆過程:待處理圖像將依次經過Logistic算法處理、Arnold算法處理以及拆解處理,拆解處理的結果即為解密最終結果。
為驗證算法的可行性,本設計采用Matlab對圖像加密和解密過程分別進行了仿真驗證,其中以143×181分辨率的輸入圖像為例,仿真結果如圖4和圖5所示。

圖4 143×181輸入圖像加密

圖5 143×181輸入圖像解密
本設計架構圖如圖6所示,各模塊之間以及模塊與外界之間的交互均采用vaild-ready握手方式。整個設計包括5個模塊,分別是頂層控制模塊Ctrl_top、補零拆解模塊Pad_Slic、緩存模塊PIPO_RAM、圖像置亂模塊Arnold和圖像擴散模塊Logistic。

圖6 硬件系統架構圖
頂層控制模塊主要包含3個功能:
(1)接收外界模塊傳來的加/解密開始信號、配置參數包等信號,加密時需額外接收外界模塊提供的輸入圖像數據;
(2)對外界模塊傳來的配置參數包進行拆包,得到各算法模塊所需密鑰和配置參數,后將這些參數傳送給各個算法模塊;
(3)將緩存模塊發出的加/解密完成信號、加/解密結果圖像數據以數據流的形式輸出給外界模塊。
補零拆解模塊主要完成加密時的補零處理和解密時的拆解處理。當補零拆解模塊與緩存模塊達成握手時,補零拆解模塊將按地址順序依次讀出待處理輸入圖像像素,并以流水線的形式對各像素進行處理和寫回。
緩存模塊主要包含3個功能:
(1)負責待處理輸入圖像的緩存;
(2)負責加密或解密過程中所有中間處理圖像結果的緩存;
(3)負責處理完成結果圖像的緩存。
為追求資源消耗和系統性能的平衡,緩存模塊的實現依據乒乓緩存原理,這樣可以保證讀寫訪問的相互獨立、防止數據覆蓋。因本設計應用場景涉及的圖像尺寸不大,所以采用2個RAM作為乒乓緩存單元,RAM的位寬取決于像素位寬、深度取決于輸入圖像像素總數。
緩存模塊與各模塊的握手交互由內部狀態機控制,對應的狀態跳轉圖如圖7所示。wr_data_last信號為緩存模塊輸入,由各處理模塊提供,表示當前寫入緩存模塊的像素是圖像的最后一個像素;iter_last信號表示當前迭代是最后一次迭代;iter_pass表示跳過迭代提前結束。當處于空閑狀態(IDLE)時,緩存模塊僅對頂層控制模塊開放讀ready握手信號,保證頂層控制模塊可以從緩存模塊中讀取處理結果圖像;當處于配置狀態(CONFIG)時,緩存模塊僅對頂層控制模塊開放寫ready握手信號,保證頂層控制模塊可以向緩存模塊中寫入待處理圖像像素的同時,也提醒了外界模塊算法處理完成。其余各狀態,緩存模塊僅對對應處理模塊開放讀寫握手信號。

圖7 緩存模塊內狀態機跳轉圖
圖像置亂模塊主要依據Arnold算法原理,以流水線的形式完成加密和解密過程中的圖像置亂處理。
圖像擴散模塊主要包含3個功能:
(1)依據Logistic算法產生混沌序列;
(2)將混沌序列中各元素數值通過線性變換成0到255內的整數,以得到種子密圖;
(3)當緩存模塊向圖像擴散模塊開放讀寫握手信號時,圖像擴散模塊將依據現有的種子密圖像素,向緩存模塊讀取待處理圖像像素,并作異或擴散處理,后將得到的結果寫回緩存模塊。
為提高系統性能,Logistic算法產生種子密圖的過程與補零/拆解以及Arnold處理過程相互獨立,Arnold處理延時僅會影響到異或擴散過程。Logistic算法模塊架構圖如圖8所示。

圖8 Logistic算法模塊架構圖
本設計以143×181分辨率的圖像為例,選用Xilinx Artix-7 FPGA開發板進行上板演示,演示結果如圖9所示。圖中的LCD屏分別呈現了原圖以及經系統處理后的加密結果、正確解密結果和非正確解密結果,對比軟件仿真可知一致,證明設計成功。

圖9 上板演示結果
本設計選用圖像加密中常用的Arnold算法和經過改進后的Logistic混沌序列算法,實現了一種可完成圖像加密和解密功能的硬件系統。該設計采用乒乓緩存機制,在保證消耗資源少的同時提高了系統整體性能,另外設計還采用了提取有效迭代次數、多算法并行執行、結果預取等優化處理。外界模塊僅需依據握手交互原則,在加密和解密前向設計提供開始信號、密鑰以及待處理圖像數據,系統便會自動進行密鑰分配以及算法處理,當算法處理完畢時,系統便會開放對外界模塊的握手供外界模塊訪問。