,,
(廣東工業(yè)大學(xué) 自動化學(xué)院,廣州 510006)
在如今視頻通信和視頻會議等服務(wù)不斷擴展的同時,人們對傳輸安全和保密通信的需求也在與日俱增?;诨煦缋碚摰募用芗夹g(shù)是近年來新興的密碼技術(shù),由于混沌系統(tǒng)對初始條件具有高度敏感性、有界性和類隨機性,使得通過混沌系統(tǒng)加密的信息具有良好的安全效果[1]。視頻信息具有數(shù)據(jù)量大、相關(guān)性大、實時性高等特點,傳統(tǒng)的文本加密算法難以用于實時視頻流的加密,因此人們設(shè)計出了多種新型多媒體混沌加密算法和方法[2],本文通過混沌系統(tǒng)迭代產(chǎn)生的偽隨機序列來進行視頻加密便是其中一種。
由于混沌系統(tǒng)本身的復(fù)雜特性,其硬件實現(xiàn)難度較大,關(guān)于混沌保密通信技術(shù)較多停留在算法設(shè)計和數(shù)值仿真階段。不過近年來,國內(nèi)外已有將混沌算法在ARM、FPGA等硬件平臺實現(xiàn)的相關(guān)研究[3-4]。相較于以往基于相互獨立的硬件平臺, Xilinx公司推出的Zynq系列芯片采用全可編程片上系統(tǒng)(System-on-a-Chip,SoC)架構(gòu),將ARM雙核處理器與28 nm高性能、低功耗的FPGA集成在一起[5],可以根據(jù)需要選擇相應(yīng)的內(nèi)核并設(shè)計出IP核(Intellectual Property Core),從而完成整個系統(tǒng)硬件結(jié)構(gòu)的搭建。若單純使用FPGA資源來實現(xiàn)混沌加密算法和網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)认嚓P(guān)功能,大量的數(shù)學(xué)運算和繁瑣的網(wǎng)絡(luò)協(xié)議處理勢必會加大開發(fā)難度、消耗大量資源。因此使用簡潔緊湊、靈活方便的C語言,得益于ARM處理器的快速浮點運算能力和完整的網(wǎng)絡(luò)協(xié)議棧,將會大大降低軟件開發(fā)難度、縮短開發(fā)周期。而數(shù)據(jù)采集和協(xié)議轉(zhuǎn)換等工作可以由FPGA完成,發(fā)揮其并行高速處理能力來減輕ARM負(fù)擔(dān)。基于Zynq的視頻混沌加密系統(tǒng)將會充分結(jié)合ARM易開發(fā)和FPGA高性能、低功耗的優(yōu)勢,滿足視頻保密通信的需求。
混沌系統(tǒng)的隨機統(tǒng)計特性與其正李亞普諾夫指數(shù)的個數(shù)相關(guān),如果系統(tǒng)的正李氏指數(shù)越多、數(shù)值越大,意味著混沌系統(tǒng)的隨機統(tǒng)計特性越好[6]。在離散時間混沌系統(tǒng)設(shè)計中,使用一致有界的控制器來對漸進穩(wěn)定標(biāo)稱系統(tǒng)實施混沌反控制來構(gòu)造無簡并系統(tǒng),通過調(diào)節(jié)控制器參數(shù)使正李氏指數(shù)數(shù)量最大、數(shù)值足夠大,從而使系統(tǒng)達到無簡并狀態(tài)?;诜纯刂频臉?gòu)造方法,得到一個有界離散時間系統(tǒng):
x(k+1)=Ax(k)+Bf(σx(k),ε)
(1)
令式(1)中的反控制矩陣:
(2)
同時取控制器
f(σx(k),ε)=εsin[σx(k)]
(3)
構(gòu)造出一個三維離散時間混沌系統(tǒng):
(4)
取上式中的狀態(tài)變量x1(k)用于視頻數(shù)據(jù)的加密,非奇異矩陣A=aij(i,j=1,2,3)作為密鑰參數(shù)為:
(5)
在式(4)中,通過改變混沌系統(tǒng)控制器ε和σ的值對系統(tǒng)進行極點配置,使其正李氏指數(shù)數(shù)量達到最大,即達到無簡并狀態(tài)。當(dāng)ε=3×108,σ=2×105時,經(jīng)計算式(4)的三個李氏指數(shù)均為較大正數(shù),分別為LE1=14.9,LE1=14.8,LE1=0.19。其中x1(k)與x2(k)的混沌吸引子相圖如圖1所示。
圖1 三維無簡并混沌系統(tǒng)x1-x2相圖
由于離散時間混沌系統(tǒng)每次迭代會產(chǎn)生新的狀態(tài)變量且具有偽隨機特性,因此利用偽隨機的序列作為密鑰和像素值進行異或運算便能達到良好的加密效果,解密時采用相同的混沌系統(tǒng)產(chǎn)生的偽隨機序列和密文進行異或完成像素的還原。內(nèi)存中的像素數(shù)據(jù)以32位的ARGB(Alpha,Red,Green,Blue)格式存儲,4個分量各為8位,其中作為透明度信號的A分量常用作圖像處理,視頻顯示時并沒有使用,因此只針對三色分量RGB分別進行加密,以此減少加密和網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。令式(4)中的三個狀態(tài)變量分別為X(k)、Y(k)、Z(k),則加密字節(jié)為:
O(k)=Mod(X(k),28)⊕I(k)
(6)
其中雙精度浮點數(shù)的狀態(tài)變量X(k)為密鑰,將其取整后再對28取模,結(jié)果與R(n)、G(n)、B(n)中的一個字節(jié)I(k)進行異或運算得到O(k),即分別對應(yīng)加密后的R*(n)、G*(n)、B*(n)。將O(k)取代控制器、F2(g)和F3(g)中的X(k),與Y(k)、Z(k)反饋至三個方程中參與下一次迭代運算,實現(xiàn)基于數(shù)據(jù)流的一次一密鑰加密。在加密一個像素的4次循環(huán)中,ARGB字節(jié)從內(nèi)存倒序取出,加密方程循環(huán)迭代三次,依次對B(n)、G(n)、R(n)加密,最后一次循環(huán)跳過A(n),加密原理如圖2所示。
圖2 混沌加密實現(xiàn)原理圖
混沌解密是加密的逆過程,在接收端采用密鑰參數(shù)相同的混沌解密方程,將加密的R*(n)、G*(n)、B*(n)字節(jié)依次解密后再補充A(n)字節(jié)存入內(nèi)存,以確保視頻的正確顯示。
系統(tǒng)使用兩套Xilinx公司的ZC702開發(fā)平臺分別作為發(fā)送端和接收端,該平臺搭載了一顆可全編程SoC芯片Zynq-7020,它由集成了ARM Cortex-A9雙核處理器等資源的處理系統(tǒng)(Processing System,PS)和包含85 KB邏輯單元的FPGA可編程邏輯(Programmable Logic,PL)組成[5]。其中由PL端的視頻采集模塊處理攝像頭的視頻數(shù)據(jù),高清晰度多媒體接口(High Definition Multimedia Interface,HDMI)控制器輸出視頻,由PS端的ARM處理器產(chǎn)生混沌序列加解密視頻數(shù)據(jù),完成網(wǎng)絡(luò)收發(fā)。Zynq的PS和PL之間通過DDR內(nèi)存中的三個幀緩存進行視頻數(shù)據(jù)的緩存與共享, PL端的視頻直接內(nèi)存訪問控制器(Video Direct Memory Access,VDMA)和PS端的ARM處理器分別交替讀寫不同的幀緩存,以免發(fā)生讀寫沖突同時減少視頻數(shù)據(jù)讀寫的等待時間,總體方案原理如圖3所示。
圖3 總體方案原理圖
視頻采集和顯示使用Verilog HDL,硬件描述語言開發(fā)由 FPGA邏輯資源實現(xiàn)。同時使用基于IP核的設(shè)計方法,視頻的顯示使用ADI公司提供的HDMI控制器軟IP核驅(qū)動開發(fā)平臺上的HDMI顯示芯片顯示圖像。在FPGA開發(fā)中使用第三方IP核將會有效降低開發(fā)難度,本文設(shè)計實現(xiàn)的視頻采集模塊也會封裝成為軟IP核,以供不同平臺間移植使用,發(fā)揮模塊的可重用性。
2.2.1 視頻采集IP核的實現(xiàn)
攝像頭的COMS圖像傳感器為OV7725模塊,最高可以輸出640×480分辨率下幀率為60 fps的視頻,像素數(shù)據(jù)為8位的RGB565格式以首字節(jié)和次字節(jié)依次輸出。視頻數(shù)據(jù)和控制信號經(jīng)過視頻采集IP核轉(zhuǎn)換為AXI4-Stream總線協(xié)議的視頻流數(shù)據(jù),該總線協(xié)議是由ARM提出的單向的、基于握手信號的傳輸總線[7],由于其沒有地址項,更適合高速視頻流數(shù)據(jù)的突發(fā)傳輸。
如圖4所示,攝像頭配置模塊由狀態(tài)機產(chǎn)生SIOC和SIOD信號配置攝像頭寄存器,在系統(tǒng)復(fù)位后由FPGA完成像素時鐘頻率、輸出分辨率、輸出數(shù)據(jù)格式等初始化設(shè)置,從而簡化軟件設(shè)計。視頻捕獲模塊負(fù)責(zé)將兩個8位的RGB565拼接為R分量為5位,G分量為6位,B分量為5位共16位的rgb_data[16],再由AXI4-Stream轉(zhuǎn)換模塊補齊為32位 ARGB格式的tdata[32],由于攝像頭的數(shù)據(jù)并不包含透明度A字節(jié),且A字節(jié)的值不會影響顯示效果,因此將其以0填充。
圖4 視頻采集IP核功能框圖
對于視頻采集IP核的三個輸入時鐘來說,系統(tǒng)時鐘sys_clk與總線時鐘axis_clk均為Zynq產(chǎn)生的時鐘,而攝像頭接口的像素時鐘PCLK與axis_clk并不在同一個時鐘域。為了防止產(chǎn)生亞穩(wěn)態(tài),AXI4-Stream轉(zhuǎn)換模塊內(nèi)使用了一個異步FIFO負(fù)責(zé)跨時鐘域的數(shù)據(jù)轉(zhuǎn)換和緩沖。
2.2.2 VDMA的配置
VDMA是視頻采集核及HDMI控制器與DDR內(nèi)存之間的橋梁。它是專門用于視頻流傳輸?shù)能汭P核,可由其中的讀寫通道直接操作DDR內(nèi)存數(shù)據(jù),無需ARM處理器參與,有利于提升系統(tǒng)運行速度。在Zynq中共有AXI4-Lite、AXI4-Stream和AXI4三種總線協(xié)議,其中ARM使用AXI4-Lite總線配置VDMA的寄存器,各IP核之間視頻流數(shù)據(jù)通過AXI4-Stream總線傳輸,VDMA和DDR內(nèi)存控制器的高速數(shù)據(jù)交換通過AXI4總線,因此VDMA也起到總線協(xié)議轉(zhuǎn)換的作用。
系統(tǒng)的發(fā)送端PL部分使用了一個VDMA,并開啟了讀內(nèi)存通道和寫內(nèi)存通道,原理圖如圖5所示。
圖5 發(fā)送端的DVMA原理圖
接收端只開啟了讀通道負(fù)責(zé)視頻顯示,功能和原理與發(fā)送端的讀通道相同。
對于寫通道,將視頻采集的AXI4-Stream總線中tuser信號配置為寫通道的幀同步信號。tuser上升沿觸發(fā)VDMA寫通道寫入新一幀視頻,完成寫入后等待下一個tuser上升沿的到來,依次循環(huán)寫入3個幀緩存中。對于讀通道來說,將fsync信號配置為讀通道的幀同步信號,該信號受HDMI控制器控制。當(dāng)HDMI控制器向外部顯示器完成一幀視頻的顯示后,通過fsync信號上升沿觸發(fā)VDMA,依次循環(huán)從3個幀緩存中讀取視頻。
由于系統(tǒng)采用了VDMA與ARM操作DDR內(nèi)存的3個幀緩存實現(xiàn)數(shù)據(jù)交換,且兩者的讀寫速率不同,為了避免自由操作幀緩存造成接收端視頻閃爍、圖像撕裂等現(xiàn)象,視頻幀緩存的讀寫順序和讀寫通道之間的協(xié)調(diào)處理顯得極為重要。VDMA的每個通道都可以選擇動態(tài)同步鎖相主/從(Dynamic Genlock Master/Slave)等模式,同步鎖相機制可以禁止主從接口同時訪問同一幀緩存,從接口總是操作主接口上一幀的緩存地址,從而使視頻的輸入和輸出順序保持一致。因此,配置VDMA讀寫通道均為Dynamic Genlock Slave模式,由ARM將操作完成的幀緩存序號通過GPIO輸出到VDMA的frame_ptr_in,使其讀寫新的幀緩存。讀寫通道之間由外部frame_ptr_in和frame_ptr_out進行同步,實際上由于VDMA讀寫速度大于ARM的速度,在幀輸入frame in信號刷新之前,VDMA會一直操作當(dāng)前的幀緩存。
ARM端的無操作系統(tǒng)方案(Standalone)提供了基本的處理器功能,可以更方便完成硬件初始化、軟件加解密和網(wǎng)絡(luò)數(shù)據(jù)包的收發(fā)等任務(wù)。VDMA和HDMI控制器在DDR內(nèi)存中均有分配基地址,ARM對這些基地址和對應(yīng)的偏移地址直接操作就可以完成寄存器配置,這樣直接對底層硬件的操作會使代碼效率更高。
ARM啟動時,先進行外部HDMI顯示芯片的初始化,接著對PL端的HDMI控制器和VDMA初始化,配置HDMI控制器的顯示分辨率和像素時鐘,然后向VDMA寄存器寫入劃分好的3個幀緩存的地址、有效列數(shù)和行數(shù),同時啟動讀寫通道。連接到VDMA的幀輸入frame in信號由GPIO輸出實現(xiàn),在初始化GPIO過程中,將frame in信號由1~3依次輸出一次,發(fā)送端的VDMA便將視頻采集的數(shù)據(jù)通過寫通道寫滿3個幀緩存,實現(xiàn)本地視頻實時顯示。隨后進行TCP/IP網(wǎng)絡(luò)的初始化,TCP/IP網(wǎng)絡(luò)的實現(xiàn)基于輕量型IP(Light Weight IP,LwIP)協(xié)議棧,有無操作系統(tǒng)都可以運行,保留了TCP協(xié)議主要功能的同時減少了對系統(tǒng)的占用。
發(fā)送端作為服務(wù)器與客戶端建立好連接之后,發(fā)送指針便從首個幀緩存的首地址開始,以指針偏移形式每次對一個數(shù)據(jù)包進行RGB字節(jié)的混沌加密和發(fā)送,當(dāng)循環(huán)完成發(fā)送一幀的視頻數(shù)據(jù)后,由GPIO輸出當(dāng)前幀的序號讓VDMA刷新幀緩存,隨后發(fā)送指針便指向下一個幀緩存的首地址。以此類推,發(fā)送指針和幀輸出信號依次在三個幀緩存之間循環(huán)順序切換,流程如圖6所示。
圖6 發(fā)送端軟件流程圖
接收端初始化視頻顯示的部分與發(fā)送端基本相同,完成網(wǎng)絡(luò)初始化與服務(wù)端建立連接后,接收指針便指向首個幀緩存的首地址。當(dāng)收到加密的數(shù)據(jù)包后進行混沌解密、插入A字節(jié)存放到接收指針的地址,隨后接收指針偏移一個數(shù)據(jù)包的長度。循環(huán)完成一幀視頻的接收后,GPIO將輸出當(dāng)前幀的序號,使VDMA讀取剛接收的一幀完整視頻數(shù)據(jù)由HDMI控制器輸出顯示。最后接收指針指向下一個幀緩存地址準(zhǔn)備存放下一幀數(shù)據(jù),依次完成三幀緩存的循環(huán)寫入和VDMA循環(huán)讀出,軟件流程如圖7所示。
圖7 接收端軟件流程圖
Zynq的PS端ARM時鐘頻率為667 MHz,PL端系統(tǒng)時鐘頻率100 MHz。攝像頭采集分辨率配置為320×240,幀率為60 fps,液晶顯示器分辨率為640×480,刷新率為60 Hz。在DDR內(nèi)存中每幀圖像幀緩存大小為320×240×4 = 307 200字節(jié),經(jīng)加密后的每幀圖像數(shù)據(jù)大小為320×240×3 = 230 400字節(jié)。由于LwIP協(xié)議棧中每個網(wǎng)絡(luò)數(shù)據(jù)包的有效數(shù)據(jù)最大為1 446字節(jié),因此在軟件配置中將每次發(fā)送的數(shù)據(jù)包設(shè)為960字節(jié),經(jīng)過240次就可以完成一幀320×240分辨率加密后的圖像發(fā)送。采用1 000 Mbps帶寬的路由器搭建局域網(wǎng)通信環(huán)境,兩個ZC702開發(fā)板通過RJ45網(wǎng)線與路由器連接。
實驗結(jié)果表明,發(fā)送端原始視頻顯示清晰,圖像穩(wěn)定,畫面流暢。接收端與發(fā)送端密鑰失配時,視頻解密失敗,其中的每個像素均被加密,原視頻不可見,達到了良好的加密效果,如圖8(a)所示。當(dāng)接收端解密方程密鑰與發(fā)送端匹配時,視頻解密成功,接收端顯示效果與發(fā)送端相同,圖像略有延遲,視頻幀率低于發(fā)送端,如圖8(b)所示。
圖8 320×240分辨率的視頻效果
同時也測試了攝像頭640×480分辨率下的實驗效果,圖像的視野更廣,畫質(zhì)更好,但視頻幀率顯著降低出現(xiàn)卡頓,數(shù)據(jù)對比見表1。
表1 不同攝像頭分辨率下的數(shù)據(jù)比較
當(dāng)視頻分辨率更高時,隨之而來的視頻數(shù)據(jù)量也會增加,對于ARM處理器的運算能力來說,執(zhí)行加密和解密處理一幀視頻數(shù)據(jù)所消耗的時間過長導(dǎo)致視頻卡頓。今后可以在此基礎(chǔ)上優(yōu)化算法壓縮數(shù)據(jù)或者采用FPGA實現(xiàn)混沌加解密模塊,這將大大增加視頻的實時性和更高分辨率下的流暢度。
[1] 李力.基于混沌理論的密碼算法研究和實現(xiàn)[D].長沙:中南大學(xué),2005.
[2] 禹思敏,呂金虎,李澄清.混沌密碼及其在多媒體保密通信中應(yīng)用的進展[J].電子與信息學(xué)報,2016(3):735-752.
[3] Chen P,Yu S,Zhang X,et al.ARM-embedded implementation of a video chaotic secure communication via WAN remote transmission with desirable security and frame rate[J].Nonlinear Dynamics,2016,86(2):725-740.
[4] 陳仕坤,禹思敏.視頻混沌加密及其FPGA實現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(1):111-114.
[5] Xilinx Inc.ZC702 Evaluation Board for the Zynq-7000 XC7Z020 All Programmable SoC[EB/OL].[2018-03].https://www.xilinx.com/support/documentation/boards_and_kits/zc702_zvik/ug850-zc702-eval-bd.pdf.
[6] 陳關(guān)榮.Lorenz系統(tǒng)族的動力學(xué)分析、控制與同步[M].北京:科學(xué)出版社,2003.
[7] 賀理,趙鶴鳴,邵雷.AXI4-Stream總線的FPGA視頻系統(tǒng)的開發(fā)研究[J].單片機與嵌入式系統(tǒng)應(yīng)用,2015,15(12):42-45.