Zynq芯片的三维视频混沌保密通信系统设计

2018-06-15 08:00,,
单片机与嵌入式系统应用 2018年6期
关键词:接收端字节内存

,,

(广东工业大学 自动化学院,广州 510006)

引 言

在如今视频通信和视频会议等服务不断扩展的同时,人们对传输安全和保密通信的需求也在与日俱增。基于混沌理论的加密技术是近年来新兴的密码技术,由于混沌系统对初始条件具有高度敏感性、有界性和类随机性,使得通过混沌系统加密的信息具有良好的安全效果[1]。视频信息具有数据量大、相关性大、实时性高等特点,传统的文本加密算法难以用于实时视频流的加密,因此人们设计出了多种新型多媒体混沌加密算法和方法[2],本文通过混沌系统迭代产生的伪随机序列来进行视频加密便是其中一种。

由于混沌系统本身的复杂特性,其硬件实现难度较大,关于混沌保密通信技术较多停留在算法设计和数值仿真阶段。不过近年来,国内外已有将混沌算法在ARM、FPGA等硬件平台实现的相关研究[3-4]。相较于以往基于相互独立的硬件平台, Xilinx公司推出的Zynq系列芯片采用全可编程片上系统(System-on-a-Chip,SoC)架构,将ARM双核处理器与28 nm高性能、低功耗的FPGA集成在一起[5],可以根据需要选择相应的内核并设计出IP核(Intellectual Property Core),从而完成整个系统硬件结构的搭建。若单纯使用FPGA资源来实现混沌加密算法和网络数据传输等相关功能,大量的数学运算和繁琐的网络协议处理势必会加大开发难度、消耗大量资源。因此使用简洁紧凑、灵活方便的C语言,得益于ARM处理器的快速浮点运算能力和完整的网络协议栈,将会大大降低软件开发难度、缩短开发周期。而数据采集和协议转换等工作可以由FPGA完成,发挥其并行高速处理能力来减轻ARM负担。基于Zynq的视频混沌加密系统将会充分结合ARM易开发和FPGA高性能、低功耗的优势,满足视频保密通信的需求。

1 视频混沌加密原理

1.1 无简并离散时间混沌系统设计

混沌系统的随机统计特性与其正李亚普诺夫指数的个数相关,如果系统的正李氏指数越多、数值越大,意味着混沌系统的随机统计特性越好[6]。在离散时间混沌系统设计中,使用一致有界的控制器来对渐进稳定标称系统实施混沌反控制来构造无简并系统,通过调节控制器参数使正李氏指数数量最大、数值足够大,从而使系统达到无简并状态。基于反控制的构造方法,得到一个有界离散时间系统:

x(k+1)=Ax(k)+Bf(σx(k),ε)

(1)

令式(1)中的反控制矩阵:

(2)

同时取控制器

f(σx(k),ε)=εsin[σx(k)]

(3)

构造出一个三维离散时间混沌系统:

(4)

取上式中的状态变量x1(k)用于视频数据的加密,非奇异矩阵A=aij(i,j=1,2,3)作为密钥参数为:

(5)

在式(4)中,通过改变混沌系统控制器ε和σ的值对系统进行极点配置,使其正李氏指数数量达到最大,即达到无简并状态。当ε=3×108,σ=2×105时,经计算式(4)的三个李氏指数均为较大正数,分别为LE1=14.9,LE1=14.8,LE1=0.19。其中x1(k)与x2(k)的混沌吸引子相图如图1所示。

图1 三维无简并混沌系统x1-x2相图

1.2 流密码加解密原理

由于离散时间混沌系统每次迭代会产生新的状态变量且具有伪随机特性,因此利用伪随机的序列作为密钥和像素值进行异或运算便能达到良好的加密效果,解密时采用相同的混沌系统产生的伪随机序列和密文进行异或完成像素的还原。内存中的像素数据以32位的ARGB(Alpha,Red,Green,Blue)格式存储,4个分量各为8位,其中作为透明度信号的A分量常用作图像处理,视频显示时并没有使用,因此只针对三色分量RGB分别进行加密,以此减少加密和网络传输的数据量。令式(4)中的三个状态变量分别为X(k)、Y(k)、Z(k),则加密字节为:

O(k)=Mod(X(k),28)⊕I(k)

(6)

其中双精度浮点数的状态变量X(k)为密钥,将其取整后再对28取模,结果与R(n)、G(n)、B(n)中的一个字节I(k)进行异或运算得到O(k),即分别对应加密后的R*(n)、G*(n)、B*(n)。将O(k)取代控制器、F2(g)和F3(g)中的X(k),与Y(k)、Z(k)反馈至三个方程中参与下一次迭代运算,实现基于数据流的一次一密钥加密。在加密一个像素的4次循环中,ARGB字节从内存倒序取出,加密方程循环迭代三次,依次对B(n)、G(n)、R(n)加密,最后一次循环跳过A(n),加密原理如图2所示。

图2 混沌加密实现原理图

混沌解密是加密的逆过程,在接收端采用密钥参数相同的混沌解密方程,将加密的R*(n)、G*(n)、B*(n)字节依次解密后再补充A(n)字节存入内存,以确保视频的正确显示。

2 系统设计与实现

2.1 系统方案设计

系统使用两套Xilinx公司的ZC702开发平台分别作为发送端和接收端,该平台搭载了一颗可全编程SoC芯片Zynq-7020,它由集成了ARM Cortex-A9双核处理器等资源的处理系统(Processing System,PS)和包含85 KB逻辑单元的FPGA可编程逻辑(Programmable Logic,PL)组成[5]。其中由PL端的视频采集模块处理摄像头的视频数据,高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)控制器输出视频,由PS端的ARM处理器产生混沌序列加解密视频数据,完成网络收发。Zynq的PS和PL之间通过DDR内存中的三个帧缓存进行视频数据的缓存与共享, PL端的视频直接内存访问控制器(Video Direct Memory Access,VDMA)和PS端的ARM处理器分别交替读写不同的帧缓存,以免发生读写冲突同时减少视频数据读写的等待时间,总体方案原理如图3所示。

图3 总体方案原理图

2.2 FPGA硬件实现

视频采集和显示使用Verilog HDL,硬件描述语言开发由 FPGA逻辑资源实现。同时使用基于IP核的设计方法,视频的显示使用ADI公司提供的HDMI控制器软IP核驱动开发平台上的HDMI显示芯片显示图像。在FPGA开发中使用第三方IP核将会有效降低开发难度,本文设计实现的视频采集模块也会封装成为软IP核,以供不同平台间移植使用,发挥模块的可重用性。

2.2.1 视频采集IP核的实现

摄像头的COMS图像传感器为OV7725模块,最高可以输出640×480分辨率下帧率为60 fps的视频,像素数据为8位的RGB565格式以首字节和次字节依次输出。视频数据和控制信号经过视频采集IP核转换为AXI4-Stream总线协议的视频流数据,该总线协议是由ARM提出的单向的、基于握手信号的传输总线[7],由于其没有地址项,更适合高速视频流数据的突发传输。

如图4所示,摄像头配置模块由状态机产生SIOC和SIOD信号配置摄像头寄存器,在系统复位后由FPGA完成像素时钟频率、输出分辨率、输出数据格式等初始化设置,从而简化软件设计。视频捕获模块负责将两个8位的RGB565拼接为R分量为5位,G分量为6位,B分量为5位共16位的rgb_data[16],再由AXI4-Stream转换模块补齐为32位 ARGB格式的tdata[32],由于摄像头的数据并不包含透明度A字节,且A字节的值不会影响显示效果,因此将其以0填充。

图4 视频采集IP核功能框图

对于视频采集IP核的三个输入时钟来说,系统时钟sys_clk与总线时钟axis_clk均为Zynq产生的时钟,而摄像头接口的像素时钟PCLK与axis_clk并不在同一个时钟域。为了防止产生亚稳态,AXI4-Stream转换模块内使用了一个异步FIFO负责跨时钟域的数据转换和缓冲。

2.2.2 VDMA的配置

VDMA是视频采集核及HDMI控制器与DDR内存之间的桥梁。它是专门用于视频流传输的软IP核,可由其中的读写通道直接操作DDR内存数据,无需ARM处理器参与,有利于提升系统运行速度。在Zynq中共有AXI4-Lite、AXI4-Stream和AXI4三种总线协议,其中ARM使用AXI4-Lite总线配置VDMA的寄存器,各IP核之间视频流数据通过AXI4-Stream总线传输,VDMA和DDR内存控制器的高速数据交换通过AXI4总线,因此VDMA也起到总线协议转换的作用。

系统的发送端PL部分使用了一个VDMA,并开启了读内存通道和写内存通道,原理图如图5所示。

图5 发送端的DVMA原理图

接收端只开启了读通道负责视频显示,功能和原理与发送端的读通道相同。

对于写通道,将视频采集的AXI4-Stream总线中tuser信号配置为写通道的帧同步信号。tuser上升沿触发VDMA写通道写入新一帧视频,完成写入后等待下一个tuser上升沿的到来,依次循环写入3个帧缓存中。对于读通道来说,将fsync信号配置为读通道的帧同步信号,该信号受HDMI控制器控制。当HDMI控制器向外部显示器完成一帧视频的显示后,通过fsync信号上升沿触发VDMA,依次循环从3个帧缓存中读取视频。

由于系统采用了VDMA与ARM操作DDR内存的3个帧缓存实现数据交换,且两者的读写速率不同,为了避免自由操作帧缓存造成接收端视频闪烁、图像撕裂等现象,视频帧缓存的读写顺序和读写通道之间的协调处理显得极为重要。VDMA的每个通道都可以选择动态同步锁相主/从(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会一直操作当前的帧缓存。

2.3 ARM软件实现

ARM端的无操作系统方案(Standalone)提供了基本的处理器功能,可以更方便完成硬件初始化、软件加解密和网络数据包的收发等任务。VDMA和HDMI控制器在DDR内存中均有分配基地址,ARM对这些基地址和对应的偏移地址直接操作就可以完成寄存器配置,这样直接对底层硬件的操作会使代码效率更高。

ARM启动时,先进行外部HDMI显示芯片的初始化,接着对PL端的HDMI控制器和VDMA初始化,配置HDMI控制器的显示分辨率和像素时钟,然后向VDMA寄存器写入划分好的3个帧缓存的地址、有效列数和行数,同时启动读写通道。连接到VDMA的帧输入frame in信号由GPIO输出实现,在初始化GPIO过程中,将frame in信号由1~3依次输出一次,发送端的VDMA便将视频采集的数据通过写通道写满3个帧缓存,实现本地视频实时显示。随后进行TCP/IP网络的初始化,TCP/IP网络的实现基于轻量型IP(Light Weight IP,LwIP)协议栈,有无操作系统都可以运行,保留了TCP协议主要功能的同时减少了对系统的占用。

发送端作为服务器与客户端建立好连接之后,发送指针便从首个帧缓存的首地址开始,以指针偏移形式每次对一个数据包进行RGB字节的混沌加密和发送,当循环完成发送一帧的视频数据后,由GPIO输出当前帧的序号让VDMA刷新帧缓存,随后发送指针便指向下一个帧缓存的首地址。以此类推,发送指针和帧输出信号依次在三个帧缓存之间循环顺序切换,流程如图6所示。

图6 发送端软件流程图

接收端初始化视频显示的部分与发送端基本相同,完成网络初始化与服务端建立连接后,接收指针便指向首个帧缓存的首地址。当收到加密的数据包后进行混沌解密、插入A字节存放到接收指针的地址,随后接收指针偏移一个数据包的长度。循环完成一帧视频的接收后,GPIO将输出当前帧的序号,使VDMA读取刚接收的一帧完整视频数据由HDMI控制器输出显示。最后接收指针指向下一个帧缓存地址准备存放下一帧数据,依次完成三帧缓存的循环写入和VDMA循环读出,软件流程如图7所示。

图7 接收端软件流程图

3 实验结果及分析

Zynq的PS端ARM时钟频率为667 MHz,PL端系统时钟频率100 MHz。摄像头采集分辨率配置为320×240,帧率为60 fps,液晶显示器分辨率为640×480,刷新率为60 Hz。在DDR内存中每帧图像帧缓存大小为320×240×4 = 307 200字节,经加密后的每帧图像数据大小为320×240×3 = 230 400字节。由于LwIP协议栈中每个网络数据包的有效数据最大为1 446字节,因此在软件配置中将每次发送的数据包设为960字节,经过240次就可以完成一帧320×240分辨率加密后的图像发送。采用1 000 Mbps带宽的路由器搭建局域网通信环境,两个ZC702开发板通过RJ45网线与路由器连接。

实验结果表明,发送端原始视频显示清晰,图像稳定,画面流畅。接收端与发送端密钥失配时,视频解密失败,其中的每个像素均被加密,原视频不可见,达到了良好的加密效果,如图8(a)所示。当接收端解密方程密钥与发送端匹配时,视频解密成功,接收端显示效果与发送端相同,图像略有延迟,视频帧率低于发送端,如图8(b)所示。

图8 320×240分辨率的视频效果

同时也测试了摄像头640×480分辨率下的实验效果,图像的视野更广,画质更好,但视频帧率显著降低出现卡顿,数据对比见表1。

表1 不同摄像头分辨率下的数据比较

当视频分辨率更高时,随之而来的视频数据量也会增加,对于ARM处理器的运算能力来说,执行加密和解密处理一帧视频数据所消耗的时间过长导致视频卡顿。今后可以在此基础上优化算法压缩数据或者采用FPGA实现混沌加解密模块,这将大大增加视频的实时性和更高分辨率下的流畅度。

结 语

[1] 李力.基于混沌理论的密码算法研究和实现[D].长沙:中南大学,2005.

[2] 禹思敏,吕金虎,李澄清.混沌密码及其在多媒体保密通信中应用的进展[J].电子与信息学报,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实现[J].电子技术应用,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] 陈关荣.Lorenz系统族的动力学分析、控制与同步[M].北京:科学出版社,2003.

[7] 贺理,赵鹤鸣,邵雷.AXI4-Stream总线的FPGA视频系统的开发研究[J].单片机与嵌入式系统应用,2015,15(12):42-45.

猜你喜欢
接收端字节内存
基于扰动观察法的光通信接收端优化策略
No.8 字节跳动将推出独立出口电商APP
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
顶管接收端脱壳及混凝土浇筑关键技术
一种设置在密闭结构中的无线电能传输系统
基于多接收线圈的无线电能传输系统优化研究
“春夏秋冬”的内存
No.10 “字节跳动手机”要来了?
简谈MC7字节码
基于内存的地理信息访问技术